Rails国际化:使用嵌套语言环境目录进行i18n查找

7
我正在尝试使用嵌套文件结构来组织本地化文件,以便更容易查找。
我已经遵循了以下链接: Rails应用程序中的区域设置文件组织 如何在Rails中构建i18n yaml文件结构? 但是我得到了一个翻译缺失的错误:en.view.fruits.apple。我认为Rails只会在locales/en.yml文件中查找翻译,而不是子目录,尽管我已经包含了它们。

config/application.rb:

 config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"]

我的本地化目录:

|locales   
|-en.yml
|-views
|--en.yml

locales/views/en.yml:

en:
  fruits:
    apple: "apple"

views/fruit.html.haml:

= I18n.t('views.fruits.apple')

你需要在文件中限定键的范围! - phoet
您可以在自定义范围中使用延迟查找:https://github.com/abitdodgy/i18n_lazy_scope - Mohamad
1个回答

12

问题已解决

在我的视图/fruit.html.haml中

而不是

= I18n.t('views.fruits.apple')

应该是这样的

= I18n.t('fruits.apple')

由于所有子文件夹都从config/application.rb预加载

 config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"]

不要忘记需要重新启动您的服务器!!


1
另一种选择是将所有内容嵌套在yml文件的“views”下面,基本上是这样的:{zh: views: fruits: apple: "apple"}。Rails不会根据文件位置/名称解释作用域,而只会根据yml文件的内容进行解释。 - Maxime Lapointe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接