2014-03-28 2 views
0

녹아웃으로 작성된 내 응용 프로그램의 UI (다른 언어로 번역)를 현지화하려고합니다. 현재 가능한 해결책과 그들이 소개 할 수있는 문제점을 조사하고 있습니다.녹아웃을 사용한 현지화

그러므로 나는 (실제 코드를 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()); 

그래서 내가 기대 버튼 '욕실', '프랑', '채널'을 클릭 할 때 2 개의 텍스트 행이 변경됩니다. 외관상으로는 이것은 일어나지 않는다 (그렇지 않으면 나는 여기에서 쓴다). 하지만 콘솔을 열면 this.translation이 바뀌고 있음을 알 수 있습니다.

내가 관찰 할 수있는 것으로 초기화하고 있기 때문에 문제가 있다고 가정합니다 (그러나 이것은 개체입니다). 그러나 관찰 가능한 대상과 같은 것은 없습니다.

내 질문은 : 어떻게이 작품을 만들 수 있습니까? 더 중요한 것은 녹아웃으로 작성된 응용 프로그램을 현지화 할 수있는 수용 가능한 방법입니까? 추신. this question은 그 이름에도 불구하고 완전히 다릅니다.

+3

당신은 ** 오버라이드 (override) **이며, 당신의 관찰을 재 할당 없습니다. 그것은'self.translation (translation [lang]);'http://jsfiddle.net/5PJ4N/ '이어야하고 이것도 자기 처리 또한 버그가있다 ...'self = this; '그래서 그것은'var self = this'이어야합니다. – nemesv

답변

0

위의 답변은 nemseve ​​님이 게시했지만. 설명 된 방식으로 애플리케이션을 현지화해야한다고 생각하지 않습니다. i18next와 같은 로컬라이제이션 프레임 워크를 살펴보고 knockout과 함께 사용하는 방법에 대한 스택을 검색해 보시기 바랍니다. 아래 링크를 참조하십시오.

응용 프로그램이 작은 경우가 아니면 위와 같은 방식으로 고통받는 세상에서 끝낼 수 있습니다.

knockout il8next