Wie übersetze ich JS-Fehlermeldungen oder Text in Magento 2?

12

Ich habe zwei Ansichten Englisch und Arabisch Standard js Validierungsfehlermeldung muss auf Arabisch übersetzt werden, also wie geht das? Und ich habe auch ein paar benutzerdefinierte Texte dazu.

Ich habe ein i18n für Arabisch erstellt, das funktioniert einwandfrei, wenn ich in PHTML- oder PHP-Dateien echo, genauso wie ich es auch in Magento 2 in js brigg

jemand hilft mir aus

Pradeep Kumar
quelle

Antworten:

28

Sie können js Fehlermeldung wie folgt übersetzen

require([
'jquery', // jquery Library
'jquery/ui', // Jquery UI Library
'mage/translate' // Magento text translate (Validation message translte as per language)
], function($){ 
    $(window).load(function() {
        alert($.mage.__('Enter Your message here'));
    });
});

Magento2 mage/translate.jszur Übersetzung verwenden

Keyur Shah
quelle
ar_KW.csv in meinem Modul i18n Ordner in diesem übersetzten "Geben Sie Ihre Nachricht hier ein" in meinem ji erstellt hat es nicht funktioniert, aber in phtml, wenn ich meinen übersetzten Text wiedergebe, den ich anzeige
Pradeep Kumar
Haben Sie Ihren Cache geleert und statische Inhalte bereitgestellt? @ PradeepKumar
Keyur Shah
Genau die Antwort, nach der ich gesucht habe! 1
thdoan
Beachten Sie, dass dies nicht funktioniert, wenn Sie es direkt in HTML-Dateien verwenden. Magento analysiert und übersetzt nur aus JS- und HTML-Dateien.
eInyzant
Dies wird funktionieren, ist aber nicht so sauber von einem Code; Sie benötigen Magier / Übersetzen, verwenden es aber nicht. .
Oliver de Cramer
9

Zusätzlicher Hinweis: Wenn Sie eine Variable zur Übersetzung hinzufügen müssen (in js), können Sie Folgendes verwenden :

$.mage.__('Hello %1').replace('%1', yourVariable);
Roman Snitko
quelle
7

Das hat bei mir funktioniert:

define(
    [
        'mage/translate'
    ],
    function (
        $tr
    ) {

        $tr('<your text>'),
    }
);
Sarfaraz Bheda
quelle
Referenz: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
Sarfaraz
1
Alles klar, aber der Variablenname für das mage/translatemuss sein $t, nicht das $tr magento.stackexchange.com/questions/293771/…
Siarhey Uchukhlebau
5

Nachdem ich tief gegraben habe, lerne ich das Konzept der Lokalisierung in magento2 kennen

Unten sehen Sie, was Sie befolgen müssen. Auf meiner Website haben wir zwei Ansichten en und ar_kw Arabic

  1. Erstellen Sie das Sprachpaket http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. Um alle Phrasen zu erhalten, müssen Sie den Befehl ex ausführen

    php D:\xampp\htdocs\magento2\bin\magento i18n:collect-phrases -o "D:\xampp\htdocs\magento2\app\code\Sugarcode\Test\i18n\ar_KW.csv" D:\xampp\htdocs\magento2\app\code\Sugarcode\Test

    Es wird mein Testmodul nicht gelesen und ein CSV-Sugarcode \ Test \ i18n \ ar_KW.csv erstellt

es wird alles __('Some Text') and $.mage.__('Some Text')in js bekommen und eine csv vorbereiten

  1. Übersetzen Sie nun die neu generierte Datei ins Arabische, die Sie im Namen des Gebietsschemacodes ar_KW.csv behalten können (möglicherweise in Ihrem Modul oder in Ihrem Sprachmodul).
  2. Entfernen Sie den Ordner var und führen Sie ihn aus bin\magento setup:static-content:deploy en_US ar_KW

  3. Es werden alle JS zusammen mit der Datei js-translation.json in jedem Thema / ex luma / ar_KW erstellt. In js-translation.json werden alle js-seitig übersetzten Daten im JSON-Format angezeigt, wenn die Fehlermeldung angezeigt wird, die in dieser Datei angezeigt wird nur

Pradeep Kumar
quelle
Hallo, ich habe alle Schritte gemäß Ihrer Antwort ausgeführt, den Code, den ich zum Beispiel hinzugefügt habe: alert ($. Magier .__ ('js test')); kommt korrekt in die Sprachdatei, aber wenn ich die Übersetzung ändere, kommt die js-Nachricht immer noch gleich. Vermisse ich etwas
Sunil Verma
2

Wenn Sie __ verwenden, wird ein Fehler ausgegeben. Befolgen Sie daher den folgenden Code

  require([
    'jquery', // jquery Library
    'mage/translate'
   ], function($,$t){ 
        $(window).load(function() {
            alert($t('Enter Your message here'));
        });
    });
Pradeep Kumar
quelle
0

Ich hatte das gleiche Problem mit js-Übersetzungen, also habe ich ein neues Sprachpaket im app/i18n/...Ordner erstellt und den Cache aktualisiert .

Siehe Übersetzungsproblem in JS-Vorlagen .

g5wx
quelle
0

Fügen Sie in einer Vorlage .phtml Ihre Fehlermeldung hinzu wie:
<?php echo __('This is a required field.'); ?>
- aktiv online
übersetzen - übersetzen

erledigt

Thibault LHOTELLIER
quelle
Könnten Sie weitere Details für die Antwort hinzufügen, wie und warum es funktioniert?
tjons