Rails 5:如何从另一个 yaml 配置文件引用 I18n 翻译?
Rails 5: How do I reference I18n translations from another yaml config file?
我有一个配置文件:
# config/meta.yml
base_meta:
title: 'Top 10 Cats'
它有一个对应的初始化器:
# config/initializers/meta.rb
META = YAML.load_file("#{Rails.root.to_s}/config/meta.yml")
我可以这样访问标题:
META['base_meta']['title'] #=> "Top 10 Cats"
但是,我想国际化我的元数据。我相信这应该由现有的 locales/
yaml 文件处理。
如何引用现有翻译?
# config/locales/en.yml
en:
title: 'Top 10 Cats'
我尝试过使用 erb,但它不起作用:
# config/meta.yml
base_meta:
title: t(:title)
将文件重命名为 config/meta.yml.erb
也没有效果。
有没有办法从我的配置文件中引用 I18n 密钥?
尝试将 application.rb config.i18n.load_path 参数的默认值替换为:
config.i18n.load_path += Dir[Rails.root.join('config/locales/**/*.yml').to_s]
对我有用。
您可以为 YAML 文件中的现有翻译添加 key 而不是它的值:
# config/locales/en.yml
en:
cats:
title: 'Top 10 Cats'
# config/locales/de.yml
de:
cats:
title: 'Top 10 Katzen'
# config/meta.yml
base_meta:
title: 'cats.title'
所以它只是 returns 那个键:
META['base_meta']['title'] #=> "cats.title"
然后可以传递给 I18n.t
:
I18n.locale = :en
t(META['base_meta']['title']) #=> "Top 10 Cats"
I18n.locale = :de
t(META['base_meta']['title']) #=> "Top 10 Katzen"
我有一个配置文件:
# config/meta.yml
base_meta:
title: 'Top 10 Cats'
它有一个对应的初始化器:
# config/initializers/meta.rb
META = YAML.load_file("#{Rails.root.to_s}/config/meta.yml")
我可以这样访问标题:
META['base_meta']['title'] #=> "Top 10 Cats"
但是,我想国际化我的元数据。我相信这应该由现有的 locales/
yaml 文件处理。
如何引用现有翻译?
# config/locales/en.yml
en:
title: 'Top 10 Cats'
我尝试过使用 erb,但它不起作用:
# config/meta.yml
base_meta:
title: t(:title)
将文件重命名为 config/meta.yml.erb
也没有效果。
有没有办法从我的配置文件中引用 I18n 密钥?
尝试将 application.rb config.i18n.load_path 参数的默认值替换为:
config.i18n.load_path += Dir[Rails.root.join('config/locales/**/*.yml').to_s]
对我有用。
您可以为 YAML 文件中的现有翻译添加 key 而不是它的值:
# config/locales/en.yml
en:
cats:
title: 'Top 10 Cats'
# config/locales/de.yml
de:
cats:
title: 'Top 10 Katzen'
# config/meta.yml
base_meta:
title: 'cats.title'
所以它只是 returns 那个键:
META['base_meta']['title'] #=> "cats.title"
然后可以传递给 I18n.t
:
I18n.locale = :en
t(META['base_meta']['title']) #=> "Top 10 Cats"
I18n.locale = :de
t(META['base_meta']['title']) #=> "Top 10 Katzen"