Magento 2 Javascript Textübersetzungen


7

[EDIT]
Dies ist veraltet. Die Übersetzung erfolgt nicht mehr wie unten beschrieben.
[/ EDIT]
In Magento 1 wurden die in Javascript benötigten übersetzbaren Texte in die jstranslate.xmlDatei im etcOrdner eines Moduls eingefügt und automatisch dem Objekt des Übersetzers hinzugefügt.
Wie kann ich übersetzbare Texte hinzufügen, die in Javascript in Magento 2 verwendet werden sollen?
Ich habe herausgefunden, wie man Textübersetzungen in Magento 2 verwendet, aber ich weiß nicht, wie man neue hinzufügt.

Hier ist ein Beispiel für deren Verwendung:

alert($.mage.__('Text to translate here'));

Ich habe das gleiche Problem. Ich fand heraus, dass seit der Beta-Version das Übersetzungsskript geändert wurde. Es bezieht sich jetzt auf eine Datei mit dem Namen 'js-translation.json'. Diese Datei befindet sich im statischen Verzeichnis meines Themas. Haben Sie bereits herausgefunden, wie Sie dieser Datei Daten hinzufügen können? Woher kommen die Übersetzungssätze in dieser Datei?
Silvan

Antworten:


4

OK. Ich habe eine Lösung gefunden, aber sie scheint mir hässlich zu sein.
Im Layout-Handle der Seite, die ich brauche, füge ich Folgendes hinzu:

<referenceContainer name="after.body.start">
    <block class="Magento\Framework\View\Element\Template" name="some-name-here" template="[Namespace]_[Module]::translate.phtml"/>
</referenceContainer>

dann erstellen Sie die Vorlage translate.phtmlin [Namespace]/[Module]/view/[frontend|adminhtml]/templatesmit diesem Inhalt:

<?php
$_data = array(
    'Text one to translate' => __('Text one to translate'),
    'Text two to translate' => __('Text two to translate'),
);
?>
<script type="text/javascript">
    require(["jquery","mage/translate"], function($){
        $.mage.translate.add(<?php echo Zend_Json::encode($_data) ?>)
    });
</script>

Ich hoffe wirklich, dass es einen anderen Weg gibt, dies zu tun.


1

Der Standard-Quellcode für die Übersetzungen im Frontend scheint /app/code/Magento/Translation/view/base/templates/translate.phtml zu sein

Verweisen auf diesen Block /app/code/Magento/Translation/Block/Js.php

Dies hat dies als Datenprovider /app/code/Magento/Translation/Model/Js/DataProvider.php

Sie können also die Abhängigkeit zu einem eigenen Datenprovider ändern oder diesen abfangen, um eigene Übersetzungen hinzuzufügen, oder einen eigenen Block dieses Typs mit einem eigenen Datenprovider hinzufügen.


Das ist genau die Datei, die mich zu dem führt, was ich in meiner eigenen Antwort gepostet habe. Das Problem ist, dass translate.phtmlda nichts damit zu tun hat getTranslatedJson. Es ist nur eine 'verwaiste' HTML-Datei. Es könnte leicht mit einer \Magento\Framework\View\Element\TemplateBlockklasse in Verbindung gebracht werden. Der Effekt wäre der gleiche.
Marius

Ich hoffe wirklich, dass dies noch nicht abgeschlossen ist und behoben wird. Vielen Dank.
Marius

Einen Monat später und zwei Tage für uns in Magento 2 und es gibt immer noch das gleiche Problem und das gesamte Projekt sieht aus wie "unvollendete Geschäfte". Dokumentationslücken, schlampige Eingabefilterung in vielen Klassen und solche Dinge, die wie offensichtliche Fehler aussehen. Man muss sich fragen, was in all den Jahren bis zum Stall gemacht wurde ... Wie auch immer, danke für den Tipp mit $.mage.translate.add. Wir haben eine hässliche Problemumgehung geschrieben, die unsere Übersetzungs-CSV eines ganzen Sprachpakets dieser Funktion zuführt.
Jey DWork
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.