Tôi muốn dịch ứng dụng ExtJS của mình bằng các ngôn ngữ khác nhau. Vấn đề của tôi là tôi đang sử dụng khuôn khổ ExtJS MVC, và hầu hết các tệp JS của tôi được tải xuống tự động bởi chính khuôn khổ đó.ExtJS MVC, tải động và i18n
Giải pháp lý tưởng (mà tôi nghĩ đến) sẽ là có thêm tùy chọn trong Ext.Loader (hoặc trong Ext.app.Application) sẽ xác định ngôn ngữ để sử dụng và tùy thuộc vào điều này để tự động tải xuống tệp như "a.MyClass.fr.js" sau khi tải "a.MyClass.js" của tôi (có chứa Ext.apply, ghi đè tài nguyên chuỗi của tôi). Điều đó có lẽ không có sẵn trong khung công tác ExtJS vào lúc này.
Giải pháp thay thế tôi có thể thấy, là thực hiện một mẹo ở phía máy chủ. Đầu tiên, một cookie sẽ được tạo trên máy khách, để thiết lập ngôn ngữ. Về phía máy chủ, tôi có thể nắm bắt tất cả các yêu cầu đối với các tệp JS, sau đó nếu cookie được đặt (ví dụ: 'fr'), tôi sẽ kết hợp tệp JS được yêu cầu (MyClass.js) với người bạn i18n của nó (MyClass .fr.js) động trên máy chủ và trả lại kết quả. Điều đó sẽ hiệu quả, nhưng nó thực sự phức tạp vì nó ngụ ý những thứ khác (caching ...).
Có lẽ cách tốt nhất là để thực hiện các hành vi đầu tiên tôi đã mô tả trong khuôn khổ ExtJS bản thân mình ...
Bạn nghĩ gì? Tôi đang tìm một cách thực sự sạch sẽ và gọn gàng để làm điều đó! Cảm ơn :)
Thanx JaySee, cách tiếp cận tốt đẹp mà nguyên mẫu, làm cho mã một niềm vui để đọc và vẫn cung cấp một phương pháp dịch thuật đơn giản! – Paul
Cảm ơn giải pháp thanh lịch. Nếu sử dụng [Ext.ux.Cache] (https://market.sencha.com/extensions/ext-ux-cache) mà Cons có thể thay đổi thành Ưu điểm – Pencroff