Vì vậy, cuối cùng tôi đã có thể tìm ra vấn đề.
Có vẻ như bản dịch mẫu JS được đọc từ js-translation.json
đó được tạo trong khi setup:static-content:deploy
thực hiện. Để điền dữ liệu vào tệp này, một gói ngôn ngữ mới phải được tạo cho dự án.
Vì vậy, thay vì thêm CSV ở cấp chủ đề như app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
chúng ta cần thêm nó vào gói ngôn ngữ.
Để tạo Gói ngôn ngữ mới trước tiên, project document root
chúng tôi sẽ cần tạo các thư mục sau:
mkdir -p app/i18n/<project-name>/<xx_xx>
Quan trọng : SỬ DỤNG chữ thường Tên chỉ mục tên thư mục camcelcasing sẽ không hoạt động
Sau đó thay đổi thư mục thành các thư mục mới được tạo:
cd app/i18n/<project-name>/<xx_xx>
Bây giờ bạn có thể tạo một composer.json
tệp (tùy chọn) với nội dung sau:
{
"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"
]
}
}
Tiếp theo tạo chúng ta cần một language.xml
tệp có nội dung sau:
<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>
Sau khi registration.php
chứa nội dung sau là cần thiết:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Bây giờ chúng tôi có thể tạo một CSV dịch của chúng tôi. Nếu bạn đã có một trong thư mục chủ đề, một cái gì đó giống như app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
bạn có thể di chuyển nó đếnapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Bây giờ từ project document root
chúng ta cần chạy các lệnh sau:
find pub/static -name js-translation.json -exec rm -rf {} \;
Chúng ta cần xóa js-translation.json
cái đã được tạo trước khi chạysetup:static-content:deploy
Bây giờ chúng tôi chạy triển khai nội dung tĩnh:
php bin/magento setup:static-content:deploy <xx_XX>
Khi đã xong, chúng tôi xóa bộ đệm:
php bin/magento cache:clean
php bin/magento cache:flush
Chúng tôi có thể xác minh nếu các tệp dịch cho mẫu JS đã được tạo bằng cách tìm tất cả js-translation.json
bên trong thư mục pub / static.
find pub/static -name js-translation.json
Điều này sẽ cung cấp danh sách tất cả các tệp dịch được tạo cho các mẫu JS.
Tài liệu tham khảo:
- Magento DevDocs
- Vấn đề Github liên quan
js-translation.json
các tệp dự án của tôi được tạo chính xác từ triển khai nội dung tĩnh ngay cả khi các tệp .csv được chèn vàoapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. Chăm sóc duy nhất là xóa tất cảjs-translation.json
trước khi chạy triển khai nội dung tĩnh.