Tôi đang sử dụng thư viện ember-i18n để dịch các chuỗi tĩnh được sử dụng trong suốt ứng dụng của tôi. Vì các tệp ngôn ngữ khá lớn, tôi không muốn tải tại ứng dụng, bắt đầu tất cả các từ điển ngôn ngữ có thể có. Do đó, tôi muốn tải từ điển động khi người dùng chọn thay đổi ngôn ngữ. Tôi đã thực hiện triển khai đầu tiên hoạt động khá tốt.Ember: chuyển đổi động sang ngôn ngữ đã chọn (sử dụng thư viện i18n)
Xem http://jsfiddle.net/cyclomarc/RYbNG/7/
Khi bắt đầu ứng dụng, nó được hiển thị bằng tiếng Anh. Bây giờ bạn có thể chọn một trong các khung nhìn (Giới thiệu hoặc Thông tin) và chúng cũng được hiển thị bằng tiếng Anh. Khi bạn nhấp vào 'Hà Lan', từ điển ngôn ngữ tiếng Hà Lan được tải và ứng dụng được chuyển hướng đến tuyến đường chỉ mục bằng ngôn ngữ chính xác.
Dường như các chuỗi ngôn ngữ mới chỉ được sử dụng khi bạn chuyển sang tuyến giả và sau đó quay lại tuyến đường bạn muốn (trong mẫu của tôi, đây luôn là 'chỉ mục').
updateLanguage: function (lang) {
var _self = this;
//Load correct dictionary and transition to index route
$.getScript("http://libraries.azurewebsites.net/locales/dictionary_" + lang + ".js", function() {
CLDR.defaultLanguage = lang;
_self.transitionToRoute('I18redirect');
});
}
App.I18redirectRoute = Ember.Route.extend({
activate: function() {
this.transitionTo('index');
}
});
Câu hỏi của tôi:
Đây có phải là cách tốt nhất để tải lại một view.template (chuyển đổi sang tuyến đường giả và sau đó vào quá trình chuyển đổi kích hoạt để index)?
Có cách nào để chuyển đổi trở lại tuyến đường mà bạn đã yêu cầu thay đổi ngôn ngữ (cần phải sử dụng thứ gì đó có được (đường dẫn) hay không)?
Tôi cũng muốn dịch các chuỗi 'bên ngoài' div màu đỏ (ổ cắm ứng dụng). Tôi chuyển trở lại chỉ mục, nhưng trong trường hợp đó, mẫu ứng dụng không được vẽ lại ... Điều gì có thể là lý do?
Có phải hành vi mong đợi khi bạn di chuyển ra khỏi mẫu và sau đó nhập lại mẫu, bản thân mẫu sẽ được xây dựng lại với tất cả các chuỗi ngôn ngữ hay chỉ khi nào ngôn ngữ được thay đổi? Làm thế nào có thể xây dựng lại một mẫu với các chuỗi mới được truy tìm trong nhật ký console?
Bất kỳ ý tưởng nào khác để làm cho giải pháp chuyển đổi mạnh mẽ này?
Đề xuất tốt. Tôi sẽ phân tích tác động của việc xác định ngôn ngữ là tuyến đường cấp cao nhất. Không chắc chắn rằng điều này sẽ không tạo ra một số ma sát ở nơi khác ... – cyclomarc