yml with tutorial rails i18n example default_locale ruby-on-rails internationalization interpolation rails-i18n

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 :(