Использование пустых ключей в локалях Rails I18n - PullRequest
0 голосов
/ 11 октября 2019

Я использую гем rails-i18n (5.1.3) и мне интересно, как получить значение из ключа 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.~"

Есть идеи? Заранее спасибо.

1 Ответ

1 голос
/ 11 октября 2019

Есть ли веская причина, по которой вы используете null для ключа здесь? Не могли бы вы использовать что-то еще, например, other или default?

Я никогда не видел этого в файле перевода раньше - и после небольшого исследования кажется, что явно отключен от библиотеки. Фактически, по умолчанию I18n back-end явно обрабатывает nil ключи, возвращая nil.

Если вы считаете, что это допустимый вариант использования, вы можете попробовать написать свойсобственный бэкэнд, который обрабатывает nil по желанию (возможно, с I18n.t('block.~') или I18n.t('block.null')) - и, если он успешен, откройте PR для библиотеки.

Или как быстрый обходной путь, вы могли быиспользуйте: I18n.t('block').fetch(nil).

... Или, как я уже говорил, вы можете просто использовать другой ключ;как other.

...