我问previous question regarding locale-setting。我试图将各种挪威语言的后备设置为挪威语Bokmal(:nb)。期望的行为是,如果浏览器传递nn或no作为区域设置请求,则I18n.locale将设置为:nn或:no,然后在没有这些区域设置的翻译的情况下,:nb将被提供给浏览器
根据我上一个问题的答案,我在我的应用程序初始化程序中有这一行:
config.i18n.default_locale = :en
config.i18n.fallbacks = {:nn => [:nb], :no => [:nb]}
在rails控制台中,这给了我以下结果:
> I18n.fallbacks
=> {:en=>[:en]}
> I18n.fallbacks[:nn]
=> [:nn, :nb, :en]
> I18n.fallbacks[:no]
=> [:no, :nb, :en]
使用只有nn&的浏览器在语言列表中没有,这不起作用 - 它会回退到以下的默认语言环境:en。这是请求标题:
Accept-Language: "nn,no;q=0.5"
如果我将:nb添加到浏览器语言堆栈,我正确地提供了挪威语内容。
这个过程中是否有我遗漏的东西?
答案 0 :(得分:0)
您需要根据浏览器设置设置I18n.locale
。
def set_locale
I18n.locale = extract_locale_from_accept_language_header
end
private
def extract_locale_from_accept_language_header
request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end
取自:http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-client-supplied-information