Javascript nội địa hóa Magento2


16

Một câu hỏi tương tự đã được đặt ra ở đây: Magento 2 bản dịch văn bản javascript , nhưng Magento đã cập nhật kỹ thuật dịch này trong phiên bản beta.

Làm cách nào tôi có thể thêm hoặc cập nhật các bản dịch được sử dụng bởi Javascript?

Tôi đã tìm ra rằng Magento tạo ra một tệp có tên 'js-translate.json' trong thư mục tĩnh. Nếu tôi chỉnh sửa tệp này trực tiếp, tôi thấy rằng bản dịch của tôi được cập nhật. Nhưng tệp này được tạo ở đâu và làm cách nào tôi có thể thêm bản dịch để Magento sẽ tự động thêm tệp này vào js-dịch.json khi nó được tạo?

Cập nhật

Câu trả lời chính xác cho câu hỏi này vẫn chưa được đưa ra, Mage2.PRO chỉ cho tôi đi đúng hướng, đó không phải là câu trả lời đầy đủ. Js-translate.json của tôi vẫn trống khi được tạo.

Ví dụ, tôi thích dịch nút Thêm vào giỏ hàng. Nút này có ba trạng thái, Thêm vào giỏ hàng, thêm ... và thêm ... Làm cách nào tôi có thể dịch những từ này? Một ví dụ khác, 'Bạn không có sản phẩm nào trong giỏ hàng của bạn.' văn bản trong minicart. Tôi nghĩ rằng tất cả các cụm từ này nên được dịch từ js-dịch.json, nhưng thêm chúng vào đâu để những tập tin này chứa đầy những bản dịch này?


Tôi không chắc chắn 100% về điều này nhưng tôi nghĩ câu trả lời được cung cấp bởi mage2.pro là câu trả lời đúng. Nếu bạn có ví dụ này trong một trong các tệp js, $.mage.__('Add To Cart')nó sẽ tự động được chọn bởi setup:static-content:deploylệnh. Điều hấp dẫn duy nhất là bạn phải có trong các tệp bản địa một bản dịch khác cho văn bản. Các văn bản có bản dịch cùng một văn bản không được thêm vào tệp json để không tăng kích thước mà không có lý do.
Marius

Câu trả lời:


10

Không chắc bạn đã tìm ra chưa, nhưng tôi nghĩ dù sao tôi cũng sẽ trả lời ..

Tôi đoán các câu trả lời khác đang đi đúng hướng.

Giả sử bạn đã cài đặt bản dịch, nếu không vui lòng:

bin/magento i18n:pack -m replace -d source_nl_NL.csv . nl_NL

Vì vậy, trước hết, vui lòng xóa bộ nhớ cache (như những người khác đã đề xuất):

rm -rf var/cache var/generation var/page_cache var/view_preprocessed

Thứ hai, vui lòng xóa thư mục pub / static của bạn:

rm -rf pub/static/*/

Sau đó, chúng tôi tạo lại nội dung tĩnh: (Tôi đã bỏ lỡ langcode trong các câu trả lời khác ..)

bin/magento setup:static-content:deploy nl_NL - Đảm bảo bạn thêm langcode

Bây giờ hãy kiểm tra xem có js-dịch.json nào được tạo không:

find pub/static/ -name "js-translation.json"

Nhiều khả năng bạn sẽ nhận được một danh sách các js-translation.jsontập tin. Vui lòng kiểm tra các tệp này và xóa chúng nếu chúng trống hoặc chứa thứ gì đó như [].


1
Cảm ơn Timon, đây thực sự là con đường để đi! Tôi đã tìm ra điều này một mình trước đây, nhưng chưa đăng câu trả lời ở đây. Đây là một bổ sung tuyệt vời cho câu hỏi.
Silvan

@Silvan Trong cài đặt của tôi, tệp js-dịch.json đã có một số cụm từ được dịch trong ngôn ngữ của tôi nhưng vẫn có những cụm từ không được dịch, tôi có nên thêm chúng vào tệp này theo cách thủ công không?
Luis Garcia

Tôi không khuyến nghị điều này, vì tệp js-dịch sẽ bị ghi đè vào lần tới khi bạn triển khai tệp tĩnh. Trong trường hợp đó, bạn nên thêm các cụm từ thủ công mỗi lần bạn triển khai. Là những cụm từ hiện diện trong gói ngôn ngữ?
Silvan

1

Hãy thử thêm bản dịch vào các tệp .csv, sau đó hãy chắc chắn rằng các bước tiếp theo được thực thi:

  1. Lưu trữ bộ nhớ cache phải được xóa (về cơ bản các thư mục var / cache và var / view_pre cần được xóa)
  2. Các tệp tĩnh phải được triển khai lại (xóa tất cả các thư mục bên trong pub / static và chạy thiết lập bin / magento: static-content: triển khai)

0

Xóa tất cả bộ nhớ cache và delele pub / nội dung thư mục tĩnh.

Chuyển đến thư mục gốc của bạn và chạy bên dưới lệnh: -

Thiết lập php bin / magento: static-content: triển khai

Hy vọng vấn đề của bạn sẽ được giải quyết.


ArkadiyCh cũng nói với tôi để xóa bộ nhớ cache và triển khai lại các tệp tĩnh, tiếc là điều này không khắc phục được vấn đề của tôi.
Silvan

0

Tôi gặp vấn đề tương tự như "Không thể dịch các cụm từ trong $ .mage .__ ('XXX')" khi cụm từ trong phtml hoạt động hoàn hảo. Vì vậy, giải pháp rất đơn giản.

$ t (...) và $ .mage chỉ phân tích các tệp * .js

Do đó, nó không rơi vào từ điển dịch thuật js.

Vì vậy, khi hiển thị tập lệnh phần trong tệp phtml, bạn nên chèn trực tiếp các cụm từ đã được dịch bằng trình bao bọc __('Translated phrase').

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.