我使用了我的整个应用程序中使用的静态字符串翻译余烬,国际化库。由于语言文件相当大,我不想在应用程序启动时加载所有可能的语言字典。因此,我想在用户选择更改语言时动态加载字典。我做了第一个实施,效果很好。烬:动态切换到所选择的语言(使用国际化库)
见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(路径的东西)左右)?
我还想翻译字符串“外面”红格(应用插座)。我转换回索引,但在这种情况下,应用程序模板不会重新绘制...可能是什么原因?
预期的行为是,当您离开模板然后重新输入模板时,模板本身是使用所有语言字符串重建的,还是仅在此期间语言被更改时才这样做?在控制台日志中如何重新编译带有新字符串的模板?
任何其他的想法,使这一强大的开关解决方案?
好的建议。我将分析将语言定义为顶级路线的影响。不太确定,这不会在别处造成一些摩擦...... – cyclomarc