我有一个应用程序,我试图转换为使用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格式有任何问题。我甚至尝试删除“菜单”并将所有值放在顶层。
任何帮助/指示都将不胜感激。
答案 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只会查找rb
和yml
个扩展名文件。
对于这种情况,可以简单地重命名其文件,或在其应用程序配置中添加I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml,yaml}')]
。