Magento2 übersetzt Javascript (KO) -Vorlagentext

24

Ich versuche, eine Übersetzung für den Text <!-- ko i18n: 'Store credit available' --><!-- /ko -->in hinzuzufügen vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.html, aber wenn ich versuche, den Text in meinem zu ändern i18n/en_US.csv, funktioniert das immer noch nicht.

Ich habe den Cache geleert und statische Inhalte bereitgestellt.

Gibt es eine andere Möglichkeit, Übersetzungen für KO-Vorlagen hinzuzufügen?

Atish Goswami
quelle

Antworten:

39

So konnte ich endlich das Problem herausfinden.

Es scheint, dass die JS-Vorlagenübersetzung gelesen wird, aus js-translation.jsonder während der setup:static-content:deployAusfü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.csvhinzuzufügen, müssen wir sie in das Sprachpaket einfügen.

Um ein neues erstellen Sprachpaket zunächst aus project document rootmü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.xmlDatei 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.phpfolgender 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 rootmüssen wir die folgenden Befehle ausführen:

find pub/static -name js-translation.json -exec rm -rf {} \;

Wir müssen js-translation.jsondas 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.jsonim 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:

  1. Magento DevDocs
  2. Verwandte Github-Ausgabe
Atish Goswami
quelle
In meinem Projekt werden js-translation.jsonDateien korrekt aus statischen Inhalten erstellt, auch wenn CSV-Dateien eingefügt werden app/design/frontend/vendor/theme-name/i18n/xx_XX.csv. Die einzige Sorge ist, alle zu löschen, js-translation.jsonbevor statische Inhalte bereitgestellt werden.
LucScu
Auf welcher Version von Magento bist du?
Atish Goswami
Vender / Theme also von diesem was sollte <Projektname> laut obigem Code sein ??
Kaushal Suthar
1
Ist das wirklich der einzige Weg, dies zu tun? Ich meine, sogar in der Dokumentation ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) heißt es, dass wir in der Lage sein sollten, Übersetzungsdateien zu speichern design/<vender>/<theme>/i18n/xx_XX.csv.
Giel Berkers
1
Magento 2 weist eine Reihe von Fehlern auf. Für uns bestand die beste Möglichkeit darin, manuell ein Skript zu erstellen, mit dem die js-translation.jsonDatei erstellt wird, und eine Webserverkonfiguration vorzunehmen, mit der die richtigen Anforderungen
erfüllt werden
1

Wie 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:

php bin/magento setup:static-content:deploy en_US de_DE it_IT fr_FR es_ES

verwenden

php bin/magento setup:static-content:deploy en_US
php bin/magento setup:static-content:deploy de_DE
php bin/magento setup:static-content:deploy it_IT
php bin/magento setup:static-content:deploy fr_FR
php bin/magento setup:static-content:deploy es_ES

Dies liegt wahrscheinlich daran, dass die static-content:deployDateien nur einmal kompiliert und anschließend in andere Sprachen kopiert werden.

FaHu
quelle