Magento2 menerjemahkan teks templat Javascript (KO)

24

Saya mencoba menambahkan terjemahan untuk teks yang <!-- ko i18n: 'Store credit available' --><!-- /ko -->ada di vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.html, tetapi jika saya mencoba mengubah teks di saya i18n/en_US.csv, masih tidak berfungsi.

Saya telah membersihkan cache dan menggunakan penyebaran konten statis.

Apakah ada cara berbeda untuk menambahkan terjemahan untuk template KO?

Atish Goswami
sumber

Jawaban:

39

Jadi saya akhirnya bisa mengetahui masalahnya.

Tampaknya terjemahan template JS dibaca dari js-translation.jsonyang dihasilkan selama setup:static-content:deployeksekusi. Untuk mengisi data dalam file ini paket bahasa baru harus dibuat untuk proyek.

Jadi alih-alih menambahkan CSV di tingkat tema seperti app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvkita perlu menambahkannya dalam paket bahasa.

Untuk membuat Paket Bahasa baru terlebih dahulu, project document rootkita perlu membuat direktori berikut:

mkdir -p app/i18n/<project-name>/<xx_xx>

Penting : GUNAKAN NAMA DIRECTORY huruf kecil HANYA nama folder camcelcased tidak akan bekerja

Kemudian ubah direktori ke folder yang baru dibuat:

cd app/i18n/<project-name>/<xx_xx>

Sekarang Anda dapat membuat file composer.json(opsional) dengan konten berikut:

{                                                     
    "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"                        
        ]                                             
    }                                                 
}                                                     

Selanjutnya buat kita perlu language.xmlfile dengan konten berikut:

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

Dibutuhkan setelah registration.phpmemuat konten berikut:

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    '<project-name>_<xx_xx>',
    __DIR__
);

Sekarang kita dapat membuat CSV terjemahan kita. Jika Anda sudah memiliki satu di dalam folder tema, sesuatu seperti app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvAnda hanya dapat memindahkannya keapp/i18n/<project-name>/<xx_xx>/xx_XX.csv

Sekarang dari project document rootkita perlu menjalankan perintah ini:

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

Kita perlu menghapus js-translation.jsonyang sudah dibuat sebelum menjalankansetup:static-content:deploy

Sekarang kami menjalankan penyebaran konten statis:

php bin/magento setup:static-content:deploy <xx_XX>

Setelah selesai, kami menghapus cache:

php bin/magento cache:clean
php bin/magento cache:flush

Kami dapat memverifikasi apakah file terjemahan untuk templat JS telah dihasilkan dengan menemukan semua di js-translation.jsondalam folder pub / statis.

find pub/static -name js-translation.json

Ini akan memberikan daftar semua file terjemahan yang dihasilkan untuk templat JS.

Referensi:

  1. Magento DevDocs
  2. Masalah Github Terkait
Atish Goswami
sumber
Dalam proyek saya js-translation.jsonfile dibuat dengan benar dari penyebaran konten statis bahkan jika file .csv dimasukkan app/design/frontend/vendor/theme-name/i18n/xx_XX.csv. Satu-satunya perawatan adalah menghapus semua js-translation.jsonsebelum menjalankan penyebaran konten statis.
LucScu
Magento versi apa yang Anda pakai?
Atish Goswami
Penjual / Tema jadi dari ini apa yang seharusnya menjadi <project-name> sesuai kode di atas Anda ??
Kaushal Suthar
1
Apakah ini satu-satunya cara untuk melakukan ini? Maksudku, bahkan dokumentasinya ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) menyatakan bahwa kita harus bisa memasukkan file terjemahan ke dalamnyadesign/<vender>/<theme>/i18n/xx_XX.csv .
Giel Berkers
1
Magento 2 memiliki banyak bug yang terkait dengan ini, bagi kami cara terbaik adalah dengan membuat skrip yang secara manual membuat js-translation.jsonfile dan membuat konfigurasi server web yang mengirimkannya pada jenis permintaan yang tepat
cjohansson
1

Seperti yang saya jelaskan dalam masalah Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) ada solusi (mudah) lain untuk masalah itu.

Anda hanya perlu memastikan untuk menggunakan setiap bahasa secara terpisah.

Jadi alih-alih menggunakan:

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

menggunakan

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

Ini mungkin disebabkan oleh fakta bahwa static-content:deployhanya mengkompilasi file sekali dan menyalinnya ke bahasa lain.

FaHu
sumber