【问题标题】:Rails I18n not working properly on HerokuRails I18n 在 Heroku 上无法正常工作
【发布时间】:2013-02-12 00:56:01
【问题描述】:

I18n 在本地可以正常工作,但在 heroku 上却不行。即使浏览器设置为 pt-BR,它也始终显示英文。我们在前置过滤器中设置语言环境:

class ApplicationController < ActionController::Base
  before_filter :set_locale

    private

  def set_locale
    I18n.set_preferred_locale(env.http_accept_language)
  end
end

module I18n
  class << self
    def set_preferred_locale(http_accept_language)
      locale = http_accept_language.preferred_language_from(I18n.available_locales)

      if locale.present?
        I18n.locale = locale
        I18n.default_locale = locale  #added based on some stackflow answer about heroku and I18n
      end
    end
  end
end

我已通过记录器确认 I18n.locale 在视图中具有正确的值 (pt-BR),但翻译仍以英文提供。

我也尝试过直接设置为“pt-BR”作为测试,仍然得到相同的结果:

class ApplicationController < ActionController::Base
   before_filter :set_locale

   private

   def set_locale
      I18n.locale = 'pt-BR'
   end
end

【问题讨论】:

  • 我在 Heroku 上成功使用了 i18n,但我没有根据用户浏览器设置设置区域设置,就像我得到你可能想要的感觉一样。你能编辑你的问题来分享你用来设置语言环境的代码吗?
  • 您是否在初始化程序或其他任何地方设置了I18n.available_locales = [:en, :"pt-BR"]

标签: ruby-on-rails heroku rails-i18n


【解决方案1】:

原来我设置得很好。问题是我的 pt-BR.yml 中有一个字节顺序标记。显然 heroku 无法使用它们加载语言文件 - heroku not loading language file

我使用 vim 删除标记:

:set nobomb
:w

【讨论】:

  • 不错的一个。如果合适,您能否使用错误或heroku logs 的输出来编辑您的问题或答案,以便将它们归因于 BOM 问题?
  • 怕没有错误信息。这就是让这个很难拿下的原因。我发现文件没有通过反复试验加载。
  • 反复试验是一个艰难的过程 :-) 如果现在一切都好,您能否将其标记为已接受的答案,以使每个人都受益。
  • 之前试过。看来我需要等到明天才能让我这样做。
  • 有人知道如何用 django 和编译的 gettext .mo 文件解决这个问题吗?我尝试了 vim :set nobomb,但它没有帮助。 heroku 日志中没有条目,我的西班牙语翻译工作正常。绝对是文件和heroku的编码。
【解决方案2】:

为我工作,我打开了任何文件并用 nobomb 保存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多