Jadi saya akhirnya bisa mengetahui masalahnya.
Tampaknya terjemahan template JS dibaca dari js-translation.json
yang dihasilkan selama setup:static-content:deploy
eksekusi. 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.csv
kita perlu menambahkannya dalam paket bahasa.
Untuk membuat Paket Bahasa baru terlebih dahulu, project document root
kita 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.xml
file 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.php
memuat 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.csv
Anda hanya dapat memindahkannya keapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Sekarang dari project document root
kita perlu menjalankan perintah ini:
find pub/static -name js-translation.json -exec rm -rf {} \;
Kita perlu menghapus js-translation.json
yang 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.json
dalam folder pub / statis.
find pub/static -name js-translation.json
Ini akan memberikan daftar semua file terjemahan yang dihasilkan untuk templat JS.
Referensi:
- Magento DevDocs
- Masalah Github Terkait
js-translation.json
file dibuat dengan benar dari penyebaran konten statis bahkan jika file .csv dimasukkanapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. Satu-satunya perawatan adalah menghapus semuajs-translation.json
sebelum menjalankan penyebaran konten statis.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
file dan membuat konfigurasi server web yang mengirimkannya pada jenis permintaan yang tepatSeperti 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:
menggunakan
Ini mungkin disebabkan oleh fakta bahwa
static-content:deploy
hanya mengkompilasi file sekali dan menyalinnya ke bahasa lain.sumber