Я пытаюсь локализовать (перевести на другие языки) пользовательский интерфейс своего приложения, написанного нокаутом. В настоящее время я изучаю возможные решения и проблемы, которые они могут создать.
Поэтому я построил свою первую попытку со следующим кодом (проверьте fiddle для реального кода):
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. этот вопрос совершенно другой, несмотря на его название.
self.translation(translation[lang]);
jsfiddle.net/5PJ4N, и ваше самообслуживание также содержит ошибки... вы отсутствуетvar
вself = this;
, поэтому должно бытьvar self = this
- person nemesv   schedule 28.03.2014