Есть ли способ ссылаться на константу в yaml с рельсами?

Есть ли способ, чтобы мой файл en.yml содержал константу?

# en.yml
foo:
  bar:
    I love BAZ so much!

# initializers/constants.rb
BAZ = "stackru.com"

I18n.t("foo.bar")
->  "I love stackru.com so much!"

?

Если нет, есть ли способ самостоятельно ссылаться на файл yaml?

foo:
  bar:
    I love *baz* so much!
baz:
  stackru.com

I18n.t("foo.bar")
->  "I love stackru.com so much!"

1 ответ

Строковые инструменты I18N поддерживают интерполяцию:

I18n.t('foo.bar', :baz => 'stackru.com')

А потом в en.yml:

foo:
  bar:
    I love %{baz} so much!

Только не пытайтесь использовать %{default} или же %{scope} в качестве переменных в ваших строках, I18n.translate использует их для других целей:

Если перевод использует :default или же :scope в качестве переменной интерполяции, I18n::ReservedInterpolationKey исключение повышено.

Это не относится к YAML в целом, но ваш вопрос, похоже, касается файлов перевода.

Другие вопросы по тегам