Javascript de localización de Magento2

16

Ya se hizo una pregunta similar aquí: traducciones de texto JavaScript de Magento 2 , pero Magento actualizó esta técnica de traducción en la versión beta.

¿Cómo puedo agregar o actualizar las traducciones utilizadas por Javascript?

Descubrí que Magento crea un archivo llamado 'js-translation.json' en la carpeta estática. Si edito este archivo directamente, veo que mis traducciones se actualizan. Pero, ¿dónde se crea este archivo y cómo puedo agregar traducciones para que Magento lo agregue automáticamente a js-translation.json cuando se genere?

Actualizar

Todavía no se da la respuesta correcta a esta pregunta, aunque Mage2.PRO me indicó la dirección correcta, no es la respuesta completa. Mi js-translation.json todavía está vacío cuando se genera.

Por ejemplo, me gusta traducir el botón Agregar al carrito. Este botón tiene tres estados: Agregar al carrito, Agregar ... y Agregar ... ¿Cómo puedo traducir estas palabras? Otro ejemplo, el 'No tiene artículos en su carrito de compras'. texto en el minicart. Creo que todas estas frases deberían traducirse de js-translation.json, pero ¿dónde agregarlas para que este archivo esté lleno de estas traducciones?

Selvático
fuente
No estoy 100% seguro de esto, pero creo que la respuesta proporcionada por mage2.pro es la correcta. Si tiene, por ejemplo, esto en uno de los archivos js, $.mage.__('Add To Cart')el setup:static-content:deploycomando lo recogerá automáticamente . El único inconveniente es que debe tener en los archivos de configuración regional una traducción diferente para el texto. Los textos que tienen como traducción el mismo texto no se agregan al archivo json para no aumentar el tamaño sin una razón.
Marius

Respuestas:

10

No estoy seguro si ya lo descubriste, pero pensé en responder de todos modos ...

Supongo que las otras respuestas van en la dirección correcta.

Suponiendo que ya tiene las traducciones instaladas, si no, por favor:

bin/magento i18n:pack -m replace -d source_nl_NL.csv . nl_NL

Entonces, antes que nada, borre el caché (como otros también sugirieron):

rm -rf var/cache var/generation var/page_cache var/view_preprocessed

En segundo lugar, borre su carpeta pub / static:

rm -rf pub/static/*/

Luego regeneramos el contenido estático: (me perdí el langcode en las otras respuestas ...)

bin/magento setup:static-content:deploy nl_NL - Asegúrate de agregar el langcode

Ahora verifique si se creó js-translation.json:

find pub/static/ -name "js-translation.json"

Lo más probable es que obtenga una lista de js-translation.jsonarchivos. Verifique estos archivos y elimínelos si están vacíos o contienen algo parecido [].

Timon de Groot
fuente
1
Gracias Timón, ¡este es el camino a seguir! Lo descubrí yo mismo hace un tiempo, pero aún no publiqué la respuesta aquí. Esta es una gran adición a la pregunta.
Silvan
@Silvan En mi instalación, el archivo js-translation.json ya tiene algunas frases traducidas en mi idioma pero todavía hay frases que no se están traduciendo, ¿debo agregarlas manualmente a este archivo?
Luis García
No recomendaría esto, porque el archivo js-translation se sobrescribirá la próxima vez que implemente archivos estáticos. En ese caso, debe agregar las frases manualmente cada vez que realiza una implementación. ¿Estas frases están presentes en el paquete de idioma?
Silvan
1

Intente agregar traducciones a archivos .csv, luego asegúrese de ejecutar los siguientes pasos:

  1. El almacenamiento en caché debe vaciarse (básicamente, las carpetas var / cache y var / view_preprocessed deben borrarse)
  2. Los archivos estáticos se deben volver a implementar (elimine todas las carpetas dentro de pub / static y ejecute la configuración bin / magento: static-content: deploy)
Arkadii Chyzhov
fuente
0

Elimine todo el caché y elimine el contenido de la carpeta pub / static.

Vaya a su directorio raíz y ejecute el siguiente comando: -

php bin / magento setup: static-content: deploy

Esperemos que su problema se resuelva.

Rakesh Verma
fuente
ArkadiyCh también me dijo que eliminara el caché y volviera a desplegar archivos estáticos, desafortunadamente esto no soluciona mi problema.
Silvan
0

Tuve el mismo problema como "No puedo traducir frases en $ .mage .__ ('XXX')" cuando la frase en phtml funcionó perfectamente. Entonces, la solución fue ingeniosamente simple.

$ t (...) y $ .mage analizan solo archivos * .js

En consecuencia, no entra en el diccionario de traducción js.

Entonces, al representar un script de sección en archivos phtml, debe insertar directamente las frases ya traducidas con contenedores __('Translated phrase').

Galina
fuente