Bagaimana cara menerjemahkan pesan atau teks kesalahan JS di Magento 2?

13

Saya memiliki dua tampilan pesan kesalahan validasi js standar bahasa Inggris dan Arab yang perlu diterjemahkan dalam bahasa Arab jadi bagaimana cara melakukannya? Dan juga saya punya beberapa teks khusus tentang cara melakukannya.

Saya membuat i18n untuk bahasa Arab berfungsi dengan baik jika saya melakukan gema dalam file PHTML atau PHP, cara yang sama bagaimana mengubahnya menjadi js juga di Magento 2

ada yang bantu saya

Pradeep Kumar
sumber

Jawaban:

29

Anda dapat menerjemahkan pesan kesalahan js seperti ini

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 digunakan mage/translate.jsuntuk terjemahan

Keyur Shah
sumber
dibuat ar_KW.csv di folder modul i18n saya yang diterjemahkan "Masukkan pesan Anda di sini" di ji saya mencobanya tidak berfungsi tetapi dalam phtml jika saya melakukan echo teks terjemahan saya yang saya tampilkan
Pradeep Kumar
Apakah Anda menghapus cache dan penyebaran konten statis? @PradeepKumar
Shah
Hanya jawaban yang saya cari! +1
thdoan
Ketahuilah bahwa ini tidak akan berfungsi jika Anda menggunakannya secara langsung dalam file phtml. Magento hanya akan mengurai dan menerjemahkan dari file js dan html.
eInyzant
Ini akan berhasil tetapi bukan yang bersih dari kode; Anda membutuhkan penyihir / menerjemahkan tetapi tidak menggunakannya. .
oliver de Cramer
10

Catatan tambahan: jika Anda perlu memasukkan beberapa variabel ke terjemahan (dalam js), Anda dapat menggunakan ini :

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

Ini bekerja untuk saya:

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

        $tr('<your text>'),
    }
);
Sarfaraz bheda
sumber
Referensi: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
Sarfaraz bheda
1
Baiklah kecuali nama variabel untuk mage/translateharus $t, bukan $tr magento.stackexchange.com/questions/293771/…
Siarhey Uchukhlebau
5

setelah menggali lebih dalam saya jadi tahu konsep lokalisasi di magento2

di bawah ini adalah hal yang perlu Anda ikuti, di situs web kami kami memiliki dua tampilan en dan ar_kw Arab

  1. Buat paket bahasa http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. untuk mendapatkan semua frasa Anda perlu menjalankan perintah ex

    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

    itu sakit membaca modul pengujian saya dan membuat Sugarcode csv \ Test \ i18n \ ar_KW.csv

itu akan mendapatkan semua __('Some Text') and $.mage.__('Some Text')dalam js dan menyiapkan csv

  1. sekarang terjemahkan file yang baru dibuat ke bahasa Arab yang dapat Anda simpan atas nama kode lokal ar_KW.csv (mungkin ada di dalam modul Anda atau mungkin di dalam modul bahasa Anda)
  2. hapus folder var dan jalankan bin\magento setup:static-content:deploy en_US ar_KW

  3. itu akan membuat semua js bersama dengan file js-translation.json di masing-masing tema / ex luma / ar_KW, js-translation.json akan memiliki semua data sisi yang diterjemahkan js dalam format json ketika Anda melihat pesan kesalahan yang ditunjukkan dari file ini hanya

Pradeep Kumar
sumber
Halo, saya telah melakukan semua langkah sesuai jawaban Anda, kode yang saya tambahkan untuk ex: alert ($. Mage .__ ('js test')); benar datang dalam menghasilkan file bahasa tetapi ketika saya mengubah terjemahan, pesan js masih datang sama. Apakah saya melewatkan sesuatu?
Sunil Verma
2

itu membuang kesalahan jika Anda menggunakan __ jadi ikuti kode di bawah ini

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

Saya memiliki masalah yang sama dengan terjemahan js jadi saya membuat paket bahasa baru di dalam app/i18n/...folder dan menyegarkan cache.

Lihat menerjemahkan masalah dalam template JS .

g5wx
sumber
0

Tambahkan templat .phtml pesan kesalahan Anda seperti:
<?php echo __('This is a required field.'); ?>
- terjemahan aktif online
- terjemahkan

selesai

Thibault LHOTELLIER
sumber
Bisakah Anda menambahkan lebih banyak detail untuk jawaban tentang bagaimana dan mengapa itu bekerja?
tjons