Ответ 1
Это на самом деле довольно распространенный вопрос, но короткий ответ - нет, это невозможно, к сожалению: (
Это может быть I18n-ception, но позволяет сказать, что у меня есть файл en.yml
, как показано ниже
en:
my_var: Foo
my_message: "This is a message where I'd like to interpolate I18n %{my_var}"
Есть ли способ указать I18n, что %{my_var}
должен быть ключом my_var
в en.yml
?
Я знаю, что смогу выполнить это, сделав что-то вроде
I18n.t 'my_message', :my_var => I18n.t('my_var')
но я надеялся, что у I18n есть способ для самостоятельных ссылок.
Это на самом деле довольно распространенный вопрос, но короткий ответ - нет, это невозможно, к сожалению: (
В настоящее время я борюсь за это... И, наконец, я создаю пользовательский тип ямля.
в разделе инициализации.
Psych.add_builtin_type('i18n') { |_type, value|
->(_key, _options) do
value.gsub(/%\{([\w.]+)\}/) do |match|
key = $1.to_sym
if I18n.exists?(key)
I18n.t(key)
else
match
end
end
end
}
I18n.reload!
в en.yml
en:
my_var: Foo
my_message: !!i18n "This is a message where I'd like to interpolate I18n %{my_var}"
!!i18n
применить пользовательский встроенный тип.