0

我正在尝试本地化(翻译成其他语言)我的应用程序的 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。这个问题完全不同,尽管它的名字。

4

1 回答 1

0

尽管您有 nemseve 上面发布的答案。我认为您不应该以所描述的方式本地化应用程序。我会敦促你去看看一个本地化框架,比如 i18next,然后搜索堆栈以了解如何将它与淘汰赛一起使用,请参阅下面的链接。

除非您的应用程序很小,否则您将最终陷入痛苦的世界,以您上面的方式进行操作。

淘汰赛 il8next

于 2015-01-14T13:43:48.177 回答