Así que finalmente pude resolver el problema.
Parece que la traducción de la plantilla JS se lee a partir de la js-translation.json
cual se genera durante la setup:static-content:deploy
ejecución. Para llenar datos en este archivo , se debe crear un nuevo paquete de idioma para el proyecto.
Entonces, en lugar de agregar el CSV en el nivel de tema como app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
necesitamos agregarlo en el paquete de idioma.
Para crear un nuevo paquete de idioma primero project document root
, necesitaremos crear los siguientes directorios:
mkdir -p app/i18n/<project-name>/<xx_xx>
Importante : UTILICE NOMBRES DE DIRECTORIO en minúsculas SOLO los nombres de carpetas camcelcasados no funcionarán
Luego cambie el directorio a las carpetas recién creadas:
cd app/i18n/<project-name>/<xx_xx>
Ahora puede crear un composer.json
archivo (opcional) con el siguiente contenido:
{
"name": "<project-name>/<xx_xx>",
"description": "<sample description>", //Ex:English (United States) language
"version": "<version-number>", //100.0.1
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/framework": "100.0.*"
},
"type": "magento2-language",
"autoload": {
"files": [
"registration.php"
]
}
}
A continuación, creemos que necesitamos un language.xml
archivo con los siguientes contenidos:
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>xx_XX</code> <!-- example: <code>en_US</code> -->
<vendor><project-name></vendor>
<package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>
Después de que registration.php
contiene el siguiente contenido es necesario:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Ahora podemos crear nuestro CSV de traducción. Si ya tiene uno dentro de la carpeta de temas app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
, puede moverlo aapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Ahora desde el project document root
tenemos que ejecutar estos comandos:
find pub/static -name js-translation.json -exec rm -rf {} \;
Necesitamos eliminar el js-translation.json
que ya se ha creado antes de ejecutar elsetup:static-content:deploy
Ahora ejecutamos implementación de contenido estático:
php bin/magento setup:static-content:deploy <xx_XX>
Una vez hecho esto, borramos el caché:
php bin/magento cache:clean
php bin/magento cache:flush
Podemos verificar si los archivos de traducción para la plantilla JS se han generado al encontrar todo el js-translation.json
interior de la carpeta pub / static.
find pub/static -name js-translation.json
Esto proporcionará la lista de todos los archivos de traducción generados para las plantillas JS.
Referencia:
- Magento DevDocs
- Problema relacionado de Github
js-translation.json
archivos se crean correctamente a partir de la implementación de contenido estático, incluso si se insertan archivos .csvapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. El único cuidado es eliminar todojs-translation.json
antes de ejecutar la implementación de contenido estático.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
archivo y realizar la configuración del servidor web que lo entrega en el tipo correcto de solicitudesComo describí en el problema de Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) hay otra solución (más fácil) para ese problema.
Solo necesita asegurarse de implementar cada idioma por separado.
Entonces, en lugar de usar:
utilizar
Esto probablemente se deba al hecho de que
static-content:deploy
solo compila los archivos una vez y luego los copia a otros idiomas.fuente