ruby on rails - with - Utilice otra tecla I18n en una interpolación I18n
rails i18n gem (3)
Esto podría ser I18n-ception pero digamos que tengo un archivo en.yml
como se muestra a continuación
en:
my_var: Foo
my_message: "This is a message where I''d like to interpolate I18n''s %{my_var}"
¿Hay alguna manera de indicar a I18n que %{my_var}
debería ser la clave en.yml
en en.yml
?
Sé que podría lograrlo haciendo algo como
I18n.t ''my_message'', :my_var => I18n.t(''my_var'')
pero esperaba que I18n tuviera una forma de auto referenciar claves.
Actualmente lucho por ello ... Y finalmente creo un tipo de yaml personalizado.
en la sección de inicio.
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 es.yml
en:
my_var: Foo
my_message: !!i18n "This is a message where I''d like to interpolate I18n''s %{my_var}"
!!i18n
aplique tipo personalizado incorporado.
Como usted dijo, tal vez no sea una solución tan directa llamar dos veces desde la vista a la traducción.
<%= t("my_message", my_var: t("my_var") ) %>
Pero te da la flexibilidad de llamar con una variable.
<%= t("my_message", my_var: t("my_#{$item[:slug]}") ) %>
Esta es en realidad una pregunta bastante común, pero la respuesta corta es no, desafortunadamente esto no es posible :(