Rails本地化 - 翻译缺失

时间:2014-07-24 19:37:53

标签: ruby-on-rails ruby-on-rails-3 localization

我有一个应用程序,我试图转换为使用I18n进行翻译。我知道I18n部分正常工作,因为我在切换语言环境时看到了语言:

翻译缺失:FR,agreement_search
翻译缺失:EN,agreement_search

我在application.rb中包含了相应的行:

I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
I18n.default_locale = :en

我在我的代码中称这样的国际化:

<%= t('menu.agreement_search') %>

我已经定义了我的.YML文件:

./config/locales/en.yml
en:
  menu:
    agreement_search:   'Agreement Search EN'
    agreement_views:    'Agreement Views EN'
    all_users:          'All Users EN'

./config/locales/fr.yml
fr:
  menu:
    agreement_search:   'Agreement Search FR'
    agreement_views:    'Agreement Views FR'
    all_users:          'All Users FR'

我不确定我做错了什么。我在另一个答案中读到问题可能与.YML的格式有关,但我没有看到我的.YML格式有任何问题。我甚至尝试删除“菜单”并将所有值放在顶层。

任何帮助/指示都将不胜感激。

3 个答案:

答案 0 :(得分:0)

您的默认语言区域设置为en(位于application.rb),但在.YML文件中只有fr。可能这就是问题所在。

答案 1 :(得分:0)

通过将本地传递给translate函数,它可以工作。它必须是我正在使用的Rails版本中的错误。

<% my_local = current_user.locale %>
<%= t('menu.agreement_search', :locale => my_locale) %>

答案 2 :(得分:0)

嗯,我遇到了同样的问题,在我的情况下,错误是由于使用了.yaml扩展名文件,而不是.yml。默认情况下,rails只会查找rbyml个扩展名文件。

对于这种情况,可以简单地重命名其文件,或在其应用程序配置中添加I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml,yaml}')]