在Rails I18n语言环境中使用NULL键

时间:2019-10-11 08:11:46

标签: ruby-on-rails ruby internationalization rails-i18n

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

---
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.~"

有什么想法吗?预先感谢。

1 个答案:

答案 0 :(得分:1)

您在这里使用null作为密钥有充分的理由吗?您可以使用其他诸如otherdefault之类的东西吗?

之前,我从未在翻译文件中看到过-经过一些研究,图书馆似乎explicitly disabled。实际上,默认的I18n后端explicitly handles nil keys by returning nil

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

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

...或者,就像我最初说的那样,您可以使用其他密钥;像other