Есть ли способ ссылаться на константу в 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 в целом, но ваш вопрос, похоже, касается файлов перевода.