So konnte ich endlich das Problem herausfinden.
Es scheint, dass die JS-Vorlagenübersetzung gelesen wird, aus js-translation.json
der während der setup:static-content:deploy
Ausführung generiert wird . Um die Daten in dieser Datei zu füllen, muss ein neues Sprachpaket für das Projekt erstellt werden.
Anstatt also die CSV auf der Theme-Ebene app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
hinzuzufügen, müssen wir sie in das Sprachpaket einfügen.
Um ein neues erstellen Sprachpaket zunächst aus project document root
müssen wir die folgenden Verzeichnisse erstellen:
mkdir -p app/i18n/<project-name>/<xx_xx>
Wichtig : VERZEICHNISNAMEN NUR in Kleinbuchstaben VERWENDEN Namen von Ordnern in Camcel-Cases funktionieren nicht
Wechseln Sie dann in die neu erstellten Ordner:
cd app/i18n/<project-name>/<xx_xx>
Jetzt können Sie eine composer.json
(optionale) Datei mit folgendem Inhalt erstellen :
{
"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"
]
}
}
Als nächstes erstellen wir eine language.xml
Datei mit folgendem Inhalt:
<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>
Danach wird registration.php
folgender Inhalt benötigt:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Jetzt können wir eine CSV für unsere Übersetzung erstellen. Wenn Sie bereits ein Thema im Ordner haben app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
, können Sie es einfach in diesen Ordner verschiebenapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Nun project document root
müssen wir die folgenden Befehle ausführen:
find pub/static -name js-translation.json -exec rm -rf {} \;
Wir müssen js-translation.json
das bereits erstellte löschen, bevor wir das ausführen könnensetup:static-content:deploy
Jetzt führen wir die Bereitstellung statischer Inhalte aus:
php bin/magento setup:static-content:deploy <xx_XX>
Sobald das erledigt ist, leeren wir den Cache:
php bin/magento cache:clean
php bin/magento cache:flush
Wir können überprüfen, ob die Übersetzungsdateien für die JS-Vorlage generiert wurden, indem wir alle Dateien js-translation.json
im pub / static-Ordner suchen .
find pub/static -name js-translation.json
Dadurch wird die Liste aller Übersetzungsdateien bereitgestellt, die für JS-Vorlagen generiert wurden.
Referenz:
- Magento DevDocs
- Verwandte Github-Ausgabe
js-translation.json
Dateien korrekt aus statischen Inhalten erstellt, auch wenn CSV-Dateien eingefügt werdenapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. Die einzige Sorge ist, alle zu löschen,js-translation.json
bevor statische Inhalte bereitgestellt werden.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
Datei erstellt wird, und eine Webserverkonfiguration vorzunehmen, mit der die richtigen AnforderungenWie ich in der Github-Ausgabe ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) beschrieben habe, gibt es eine andere (einfachere) Lösung für dieses Problem.
Sie müssen nur sicherstellen, dass jede Sprache separat bereitgestellt wird.
Anstatt also:
verwenden
Dies liegt wahrscheinlich daran, dass die
static-content:deploy
Dateien nur einmal kompiliert und anschließend in andere Sprachen kopiert werden.quelle