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
答案 0 :(得分:3)
原来我设置得很好。问题是我的pt-BR.yml中有一个字节顺序标记。显然,heroku无法加载语言文件 - heroku not loading language file。
我使用vim删除标记:
:set nobomb
:w
答案 1 :(得分:0)
为我工作,我打开了任何文件并用nobomb
保存