Così sono stato finalmente in grado di capire il problema.
Sembra che la traduzione del modello JS venga letta da js-translation.json
cui viene generata durante l' setup:static-content:deploy
esecuzione. Per popolare i dati in questo file è necessario creare un nuovo pacchetto di lingue per il progetto.
Quindi, invece di aggiungere il CSV a livello di tema come app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
se fosse necessario aggiungerlo nel pacchetto linguistico.
Per creare un nuovo pacchetto lingua prima dal project document root
avremo bisogno di creare le seguenti directory:
mkdir -p app/i18n/<project-name>/<xx_xx>
Importante : UTILIZZARE SOLO NOMI DI DIRECTORY minuscoli I nomi delle cartelle camcelati non funzioneranno
Quindi cambia la directory con le cartelle appena create:
cd app/i18n/<project-name>/<xx_xx>
Ora puoi creare un composer.json
file (facoltativo) con il seguente contenuto:
{
"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"
]
}
}
Successivamente, abbiamo bisogno di un language.xml
file con i seguenti contenuti:
<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>
Dopo che registration.php
contenere il seguente contenuto è necessario:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Ora possiamo creare un nostro CSV di traduzione. Se ne hai già uno all'interno della cartella del tema, qualcosa come app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
puoi semplicemente spostarloapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Ora dal project document root
abbiamo bisogno di eseguire questi comandi:
find pub/static -name js-translation.json -exec rm -rf {} \;
Dobbiamo eliminare ciò js-translation.json
che è già stato creato prima di eseguire ilsetup:static-content:deploy
Ora eseguiamo la distribuzione di contenuti statici:
php bin/magento setup:static-content:deploy <xx_XX>
Una volta fatto ciò cancelliamo la cache:
php bin/magento cache:clean
php bin/magento cache:flush
Possiamo verificare se i file di traduzione per il modello JS sono stati generati trovando tutto js-translation.json
all'interno della cartella pub / static.
find pub/static -name js-translation.json
Ciò fornirà l'elenco di tutti i file di traduzione generati per i modelli JS.
Riferimento:
- Magento DevDocs
- Problema relativo a Github
js-translation.json
file vengono creati correttamente da distribuire contenuti statici anche se sono inseriti file .csvapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. L'unica cura è eliminare tuttojs-translation.json
prima di eseguire la distribuzione di contenuto statico.