ในที่สุดฉันก็สามารถเข้าใจปัญหาได้
ดูเหมือนว่าการแปลเทมเพลต JS นั้นjs-translation.json
ถูกสร้างขึ้นระหว่างsetup:static-content:deploy
การดำเนินการ ในการเติมข้อมูลในไฟล์นี้จะต้องสร้างแพ็คเกจภาษาใหม่สำหรับโครงการ
ดังนั้นแทนที่จะเพิ่ม CSV ในระดับธีมเช่นapp/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
เราต้องเพิ่มลงในแพ็คเกจภาษา
ในการสร้างชุดภาษาใหม่ก่อนจากproject document root
เราจะต้องสร้างไดเรกทอรีต่อไปนี้:
mkdir -p app/i18n/<project-name>/<xx_xx>
สำคัญ : ใช้ชื่อตัวพิมพ์เล็กเท่านั้นชื่อโฟลเดอร์ camcelcased เท่านั้นจะไม่ทำงาน
จากนั้นเปลี่ยนไดเรกทอรีเป็นโฟลเดอร์ที่สร้างขึ้นใหม่:
cd app/i18n/<project-name>/<xx_xx>
ตอนนี้คุณสามารถสร้างcomposer.json
ไฟล์ ( เป็นทางเลือก) ด้วยเนื้อหาต่อไปนี้:
{
"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"
]
}
}
สร้างครั้งต่อไปเราต้องการlanguage.xml
ไฟล์ที่มีเนื้อหาดังต่อไปนี้:
<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>
หลังจากกว่าregistration.php
ประกอบด้วยเนื้อหาต่อไปนี้เป็นสิ่งจำเป็น:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
ตอนนี้เราสามารถสร้าง CSV แปลของเรา หากคุณมีหนึ่งในโฟลเดอร์ชุดรูปแบบสิ่งที่app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
คุณสามารถย้ายไปapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
ตอนนี้project document root
เราจำเป็นต้องรันคำสั่งเหล่านี้:
find pub/static -name js-translation.json -exec rm -rf {} \;
เราจำเป็นต้องลบสิ่งjs-translation.json
ที่สร้างขึ้นก่อนที่จะรันsetup:static-content:deploy
ตอนนี้เราเรียกใช้การปรับใช้เนื้อหาแบบคงที่:
php bin/magento setup:static-content:deploy <xx_XX>
เมื่อเสร็จแล้วเราจะล้างแคช:
php bin/magento cache:clean
php bin/magento cache:flush
เราสามารถตรวจสอบว่าไฟล์การแปลสำหรับเทมเพลต JS ถูกสร้างขึ้นโดยการค้นหาทั้งหมดjs-translation.json
ภายในโฟลเดอร์ pub / static
find pub/static -name js-translation.json
นี่จะให้รายการของไฟล์แปลทั้งหมดที่สร้างขึ้นสำหรับเทมเพลต JS
อ้างอิง:
- Magento DevDocs
- ปัญหา Github ที่เกี่ยวข้อง
js-translation.json
ไฟล์โครงการของฉันถูกสร้างอย่างถูกต้องจากการปรับใช้เนื้อหาแบบสแตติกแม้ว่าจะแทรกไฟล์. csv ไว้app/design/frontend/vendor/theme-name/i18n/xx_XX.csv
ก็ตาม การดูแลเพียงอย่างเดียวคือการลบทั้งหมดjs-translation.json
ก่อนที่จะทำการปรับใช้เนื้อหาแบบสแตติก