Я использую библиотеку ember-i18n для перевода статических строк, используемых в моем приложении. Поскольку языковые файлы довольно большие, я не хочу загружать в приложение все возможные языковые словари. Поэтому я хочу динамически загружать словарь, когда пользователь хочет изменить язык. Я сделал первую реализацию, которая работает довольно хорошо.
См. http://jsfiddle.net/cyclomarc/RYbNG/7/
При запуске приложения он отображается на английском языке. Теперь вы можете выбрать один из видов (О программе или Инфо), и они также отображаются на английском языке. Когда вы нажимаете "Голландский", словарь голландского языка загружается и приложение перенаправляется на индексный маршрут на правильном языке.
Кажется, что новые языковые строки используются только при переходе на фиктивный маршрут, а затем обратно на нужный маршрут (в моем примере это всегда "индекс" ).
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');
}
});
Мои вопросы:
-
Это лучший способ перезагрузить view.template(переход на фиктивный маршрут, а затем активировать переход к индексу)?
-
Есть ли способ перехода на маршрут, где вы запросили изменение языка (нужно было бы что-то использовать с get (path) или так)?
-
Я также хотел бы перевести строки "снаружи" в красный div (выход приложения). Я возвращаюсь к индексу, но в этом случае шаблон приложения не перерисовывается... В чем причина?
-
Ожидается ли, что когда вы удаляетесь от шаблона и затем повторно вводите шаблон, сам шаблон перестраивается со всеми языковыми строками или это происходит только тогда, когда в то же время язык изменяется? Как можно перерисовать шаблон с новыми строками в журнале консоли?
Любые другие идеи, чтобы сделать это надежным решением для коммутации?