IDEA:
为我的应用程序提供每种语言的JSON文件。根据用户设置的设置加载正确的一个。
它会如何运作?我的应用程序会在启动时加载每个JSON文件,还是按照要求显示的“字符串”加载“字符串”?它是否会变得过于沉重,是否会让每种语言的模型都具有每个可显示字符串的字段?
我计划在我的应用程序中使用3个语言。
谢谢
答案 0 :(得分:1)
如果您正在使用语言的JSON文件,则必须通过Ajax加载它并将数据分配给变量(例如“Lang”)以访问属性。现在,如果在Views或Controllers配置中使用Lang值,则会出现问题,因为在Ajax调用仍在进行时可能会加载这些文件。如下例所示:
Ext.define('SomeView', {
config : {
....
html : Lang.someview.displatHtml, // This will give "Lang is undefined" error
....
}
});
所以,我建议你为它们使用单独的JS文件。我主要在app目录中使用lang文件夹,包括所有En.js,Fr.js等。语言对象看起来很简单:
var LANG = {
loading : 'Loading...'
}
您可以使用如下的简单函数动态加载此语言文件(在应用加载app.js
文件之前)。如果您不需要动态更改它,只需在index.html顶部添加一个脚本。
// Load JS file dynamically
function loadJS(url){
if(!url){ return; }
var head= document.getElementsByTagName('head')[0],
script= document.createElement('script');
script.type= 'text/javascript';
script.src= url;
head.appendChild(script);
}
没有必要使用Sencha模型。如果使用模型,则每次添加新语言属性时都必须添加字段。像上面这样的简单json对象就足够了。