首页 > 解决方案 > 在 Rails I18n 语言环境中使用 NULL 键

问题描述

我使用 rails-i18n (5.1.3) gem,我想知道如何从文件中的 NULL 键中获取值yml

---
en:
  block:
    ~: 'Block' # `~` and `null` keys work the same way
    user: 'Block user'
    admin: 'Block admin' 

我试过了:

pry(main)> I18n.t('block')
=> {nil=>"Block", :user=>"Block user", :admin=> "Block admin"}
pry(main)> I18n.t('block.')
=> {nil=>"Block", :user=>"Block user", :admin=> "Block admin"}
pry(main)> I18n.t('block.null')
=> "translation missing: en.block.null"
pry(main)> I18n.t('block.nil')
=> "translation missing: en.block.nil"
pry(main)> I18n.t('block.~')
=> "translation missing: en.block.~"

有任何想法吗?提前致谢。

标签: ruby-on-railsrubyinternationalizationrails-i18n

解决方案


null您在这里使用钥匙是否有充分的理由?你能用别的东西吗,比如otheror default

我以前从未在翻译文件中看到过这个 - 经过一些研究,它似乎被图书馆明确禁用。事实上,默认I18n后端通过返回显式处理nilnil

如果您认为这是一个有效的用例,您可以尝试编写自己的后端来nil根据需要进行处理(可能使用I18n.t('block.~')or I18n.t('block.null'))——如果成功,请打开库的 PR。

或者作为一种快速解决方法,您可以使用:I18n.t('block').fetch(nil).

...或者,正如我最初所说,您可以使用不同的密钥;喜欢other


推荐阅读