我尝试在rails项目中使用国际化,但它在视图中不会像它应该的那样工作。令人惊讶的是它在控制台中工作 这些是我的语言环境文件:
config / locales / en.yml
en:
home:
index:
bla: "Hello"
config / locales / de.yml
de:
home:
index:
bla: "Hallo"
我的application_controller看起来像这样
class ApplicationController < ActionController::Base
before_action :set_locale
...
private
...
def set_locale
I18n.locale = extract_locale_from_tld || I18n.default_locale
end
def extract_locale_from_tld
parsed_locale = request.host.split('.').last
I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil
end
end
在rails控制台中我得到了
> I18n.available_locales
=> [:en, :de]
> I18n.t 'home.index.bla'
=> "Hello"
> I18n.locale = 'de'
=> "de"
> I18n.t 'home.index.bla'
=> "Hallo"
当我在浏览器中打开myurl.com时,一切都很好,正确的翻译&#34;你好&#34;被渲染。但是当我去myurl.de时,我只能看到钥匙&#34; bla&#34;而不是&#34; Hallo&#34;。生成的html是:
<span title="translation missing: de.home.index.bla" class="translation_missing">Bla</span>
在这两种情况下,I18n.locale都在set_locale函数中设置为正确的值 出了什么问题,我该怎么办? 感谢