2013-02-10 1 views
1

나는 내 응용 프로그램 (require.js에서) 국제화 (i18n) 플러그인을로드 내가 예를 들어, 여러 개의 파일이있는 디렉토리 nls을 만들어마리오네트 +의 국제화는

내 응용 프로그램에서 몇 가지 기본적인 국제화를 수행 할 project.js

나는

config : { 
    i18n : { 
     locale : 'de-de' 
    } 
} 

지금 내보기/템플릿에있는 파일을 사용하려면 같은 main.js 파일의 기본 위치를 설정합니다. 누군가 어떻게 이것이 이루어 졌는지 설명 할 수 있습니까? 템플릿은 하나 template.js에 설치 파일입니다

내보기 :

define(['marionette', 'templates', 'i18n!nls/project'], function (marionette, templates, msg) { 

    return marionette.CompositeView.extend({ 
     template : templates.project 
    }); 

}); 

내 템플릿 :

<div class="container"> 
    <div class="well"> 
     <h2>Projects</h2> 
    </div> 
</div> 

누군가가 나에게 설명 할 수

어떻게 내보기/템플릿 파일을 사용할 수 있나요? 미리 감사드립니다!

는 편집 :

나는 & 오류를 시도 일부에 의해 솔루션을 알아 냈어. require.js tpl을 통해 템플릿을로드하는 중! 플러그인 내가 그들을 require('tpl!templates/dashboard.tmpl')에 의해 호출하는 경우 컴파일 할 필요가 없습니다. 나는 단순히 'i18n!nls/dashboard'에 의해로드 된 i18n 파일을 전달할 수 있습니다. 마리오네트에서 뷰가 기본적으로 렌더링, 그래서 내가이 짓됩니다

define(['marionette', 'templates', 'i18n!nls/dashboard'], function (Marionette, templates, msg) { 

    return Marionette.CompositeView.extend({ 

     template : function() { 
      return templates.dashboard(msg); 
     }, 

     initialize : function() { 

     } 
    }); 

}); 

국제화 (i18n) 플러그인의 파일이 아니라 여기에 설명되어 있습니다 http://requirejs.org/docs/api.html#i18n

I 단계로이 단계를해야했다을 먼저 내가 놓친 근본적으로 왜 내 독일어 로켈이로드되지 않았는지 궁금해했지만 루트 파일에 de-de : true을 설정하는 것을 잊어 버렸습니다. 이제 모든 것이 매력처럼 작동합니다.

답변

5

먼저 require.js를 통해 i18 파일을보기로로드합니다. 이 예제에서는 핸들 막대 템플릿을 사용합니다.

define([ 
    'marionette', 
    'handlebars', 
    'text!modules/tableModule/templates/myTmpl.html', 
    'i18n!nls/dashboard', 
], 
function(Marionette, Handlebars, tmpl, locals) { ... 

그런 다음 템플릿을 컴파일하고 i18 개체로로드하십시오.

var template = Handlebars.compile(tmpl); 
this.template = template(locals.myVar); 
당신이 갈뿐만 아니라 복잡한 조합을 할 수

var template = Handlebars.compile(tmpl); 
    var data =_.extend(options, {lang:locals}); 
    this.template = template(data); 

당신의 NLS 파일이

define({ 

    "root": { 
     "myVar" : "some text in", 
     "canBeAnObjectTo": { 
         "title" : "my title ", 
         "contact" : "Contact", 
      } 

모양을하고보기는 다음과 같이 될 것입니다 :

<div class="cssClass"> 
<div class="table-caption pull-left">{{this.myVar}}</div> 
    </div> 

도움이되는 희망

+0

대단히 감사합니다. 제게 많은 도움이되는 비트를 약간 다르게해야했습니다. 원래 게시물에 내 결과를 게시합니다. – pfried

관련 문제