我正在尝试本地化(翻译成其他语言)我的应用程序的 UI,用淘汰赛编写。目前我正在调查可能的解决方案以及它们可能引入的问题。
因此,我使用以下代码构建了我的第一次尝试(检查小提琴以获取真实代码):
var translation = {
'En' : {
name: 'Type your name',
surname: 'Type your surname'
},
...
};
function AppViewModel() {
self = this;
this.translation = ko.observable(translation['En']);
this.change = function(lang){
self.translation = ko.observable(translation[lang]);
console.log(self.translation());
}
}
ko.applyBindings(new AppViewModel());
所以我希望当单击“En”、“Fr”、“Ch”按钮时,将更改 2 个文本行。显然这不会发生(否则我不会在这里写)。但是,如果您打开控制台,您会看到情况this.translation
正在发生变化。
我认为问题是因为我将它初始化为可观察的(但这是一个对象)。但是不存在可观察的对象。
所以我的问题是:我怎样才能完成这项工作,但更重要的是,是否有一种可接受的方式来本地化您的应用程序,用淘汰赛编写?PS。这个问题完全不同,尽管它的名字。