2014-05-13 2 views
0

나는 다국어를 사용하는 작은 응용 프로그램을 가지고있다. 응용 프로그램의 텍스트가 서버에서옵니다. 텍스트는 다른 언어로 표시 될 수 있습니다. 지금은 스웨덴어와 영어를 사용합니다. 사용자는 언어 간을 전환 할 수 있습니다. 내가하려고하는 것은 앱이 두 언어의 텍스트를 가져 와서 Ember의 모델에 저장하는 것입니다.Ember에 핸들을 쓰는 것

그런 다음 언어간에 전환 할 수있는 Handlebars 도우미를 작성하려고합니다. 예를 들어 내가 얻는 서버의 데이터는이 형식입니다.

langData: { 
sv_SE: { 
    start_page: "..." 
}, 
en_US: { 
    start_page: "..." 
} 

이에 대한 나의 모델은 내 핸들 바에서이

App.Language = DS.Model.extend({ 
    language: DS.attr('string'), 
    start_page: DS.attr('string'), 
}); 

처럼되는 language.js 나는이

Ember.Handlebars.helper('__', function(key, lang, options) { 
    // get the text specified for the language. A function which will check the language model and 
    // fetch data for the particular key from it 
}); 

내가 핸들을 호출하고 그런 짓을하려고한다 이와 같은 바

{{__ start_page en_US}} 

나는 이것이 영어로 시작 페이지 텍스트를 돌려 줄 것이라고 생각하고 있습니다.

올바른 방법인가요? 만약에 올바른 방법이 아니라면? 또한, 다른 hbs 파일에서 사용될 다른 텍스트 문자열을 갖습니다.

+1

왜 언어 모델을 컨트롤러로 설정하지 않습니까? 언어 모델을 전환하면 템플릿이 자동으로 업데이트됩니다. – blessenm

+0

네,하지만 다른 템플릿이 있고 모든 템플릿마다 다른 텍스트가 있습니다. 그래서 이런 식으로 모든 템플릿에 대해 서로 다른 모델을 설정해야합니다. 모든 템플릿에 액세스 할 수있는 모델을 작성하려고합니다. – mohsinali1317

+1

당신의 필요를 해결할 수 있습니까? 여기베이스 컨트롤러에서 확장됩니다. http://emberjs.jsbin.com/xucix/1/edit – blessenm

답변

0

프로젝트에 Ember-I18n을 성공적으로 사용했습니다. 그것은 당신에게 당신의 번역을 모델 밖에 놓을 장소를 제공합니다. 그런 다음 사용자 모델의 쿠키 또는 설정을 기반으로 현재 언어를로드합니다. 다른 언어로 전환하려면 나를 위해 전체 페이지를 다시로드해야하지만 그렇지 않으면 작동하지 않을 수도 있습니다.