Rails I18n在控制台中工作,但在视图中不工作

时间:2014-09-11 17:23:16

标签: ruby-on-rails ruby internationalization

我尝试在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函数中设置为正确的值 出了什么问题,我该怎么办? 感谢

0 个答案:

没有答案