Estoy tratando de implementar la localización JS en la aplicación Rails 7 usando la gema i18n-js . Tengo una pequeña secuencia de comandos para validar los archivos adjuntos del formulario de contacto y quiero traducir los errores de esa secuencia de comandos JS. Ya tengo la gema 'rails-i18n' y funciona bien, pero implementar i18n-js me está volviendo loco. La documentación de esta gema es confusa y todas las guías que he encontrado en línea o están desactualizadas, o tienen un enfoque diferente y todas tienen una sintaxis diferente.
¿Hay alguna guía reciente sobre cómo hacer esto y qué sintaxis debo usar en los scripts JS para la traducción? ¡Gracias!
config/i18n-js.yml
translations: - file: 'app/javascript/bundles/i18n/cs.js' prefix: "import I18n from 'i18n-js';\n" pretty_print: true only: 'cs.*' - file: 'app/javascript/bundles/i18n/ru.js' prefix: "import I18n from 'i18n-js';\n" pretty_print: true only: 'ru.*'aplicación/javascript/aplicación.js
import "@hotwired/turbo-rails" import "./controllers" import I18n from 'i18n-js' window.I18n = I18naplicación.html.haml
:javascript var language = "<%= I18n.locale %>"; I18n.translations = <%== I18n::JS.filtered_translations.to_json %>;config/locales/cs.yml
# javascript form errors javascript: too_many: Příliš mnoho souborůJavaScript:
const errors = { tooMany: I18n.t('too_many'),actualización: funciona con el siguiente código en application.html.haml:
= javascript_tag do window.I18n = #{t('javascript').to_json.html_safe}y con esta sintaxis en js:
const errors = { tooMany: I18n.too_many,pero ! cuando estoy cambiando de lugar y tratando de completar el formulario nuevamente, no muestra ningún error, debo volver a cargar la página manualmente.
La forma en que puede implementar la localización definitivamente viene con sus propias preferencias personales (o de equipo).
Aquí hay una billetera criptográfica móvil y cómo registran los diccionarios de idiomas i18n, y un enlace sobre cómo se usa. Registrar i18n y Cómo usarlo
Esta sintaxis debería parecer familiar de los documentos del paquete