我正在使用 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(应用程序出口)“外部”的字符串。我转换回索引,但在这种情况下,应用程序模板没有重绘......可能是什么原因?
当您离开模板然后重新输入模板时,模板本身会使用所有语言字符串重建,还是仅在同时更改语言时才会出现这种预期行为?如何在控制台日志中跟踪这种带有新字符串的模板重建?
有什么其他想法可以使它成为一个强大的交换解决方案吗?