2012-06-07 2 views
4

최근에 나는 개인적인 사용과 경험을 위해 도장을 배우기 시작했습니다. 지금까지 필자는 다양한 dojo 관련 자료 (웹 사이트 및 웹에서)에 대한 자습서를 작성했으며 더 복잡한 응용 프로그램 (또는 우수 사례)에 대한 구체적인 인프라를 구현하는 데 "어려움을 겪고 있습니다. 흥미로운 프로젝트 (https://github.com/csnover/dojo-boilerplate)와 기사 (http://www.sitepen.com/blog/2011/05/04/what-is-the-best-way-to-start-a-dojo-project/)를 찾았습니다. 그것으로, 나는 나의 첫 번째 문제가 해결되었다고 생각한다. 틀 렸으면 고쳐줘.간단한 Dojo i18n 구현

i18n의 튜토리얼에서 구체적인 구현이 누락되었습니다. 예를 들어, 상용구 프로젝트의 대화 상자에 i18n을 추가하고 싶습니다.

다음
define([ 'dojo/_base/declare', 'dijit/Dialog' ], function (declare, Dialog) { 
    return declare(Dialog, { 
     title: 'Hello World', 
     content: 'Loaded successfully!' 
    }); 
}); 

, 내 프로젝트 계층 구조는 다음과 같습니다 당신이 볼 수 있듯이

enter image description here

, 내 "문자열"다른 (LANG 로케일)에 대한 내 응용 프로그램 및 저장에 대한 내 자신의 NLS 폴더를 생성 . 이제 위의 대화 코드에 대한 제목 또는 콘텐츠의 로캘 콘텐츠를 어떻게 지정합니까? 나는 최근에 루비 레일 (MVC의 개념)에 i18n을했고 내보기에 따라이 특정 뷰를 위해 현지화 파일 (.yml)을 만들어야했습니다. RoR과 Dojo는 실제로 똑같지는 않지만 위젯 (내보기와 비교할 수 있음)을 사용하므로 각 위젯마다 자체 현지화가 필요합니다 ... 나는 전체 자습서 2 개 (firstsecond)를 사용했습니다. 어쩌면, 나는 그것을 완전히 잘못 읽고있다.

나는 지금 이와 비슷한 것을 가지고 있지만 작동하지 않습니다. 무엇이 빠졌습니까?

dojo.requireLocalization("app", "dialog"); 

define([ 'dojo/_base/declare', 'dijit/i18n' 'dijit/Dialog' ], function (declare, Dialog) { 
    i18n: dojo.i18n.getLocalization("app", "dialog"), 
    return declare(Dialog, { 
     title: i18n.title, 
     content: i18n.content 
    }); 
}); 

감사합니다.

편집 :

define([ 'dojo/_base/declare', 'dojo/i18n!app/nls/labels', 'dijit/Dialog' ], function (declare, labels, Dialog) { 
    return declare(Dialog, { 
     title: labels.title, 
     content: labels.content 
    }); 
}); 

지금은 오류가없는,하지만 내 labels.title가 비어 ...?

EDIT (1) : 기본 nls 폴더에 루트를 추가하는 것을 잊었습니다.

답변

4

다음은 현지화를 통해 일부 대화 상자를 작성한 예입니다.

디렉토리 구조

myApp\ 
    dialog\ 
    myDialog.js 
    nls\ 
     dialog.js 
     fr-ca\ 
     dialog.js 

myDialog.js

보다 상세한 예 에서 볼 수
define("myApp/dialog/myDialog", [ 
    "dojo", "dijit/Dialog", "dojo/i18n", 
    "dojo/i18n!./nls/dialog" // this is a relative path to the 
          // dialog.js from myDialog.js 
], function(dojo, Dialog) { 

    var i18n = dojo.i18n.getLocalization(
    "myApp.dialog", // this is the directory path to the nls folder 
    "dialog"   // this is the file 
);  

    return declare(Dialog, { 
    title: i18n.title, 
    content: i18n.content 
    }); 
}); 
+0

https://github.com/cswing/evinceframework/blob/master/web-js /src/dojo/evf/dialog/util.js –

+0

제 편집을보세요 ... i18n.title이 비어 있습니까? – fneron

+0

ahh는 기본 nls에 "root :"를 추가하는 것을 잊었습니다. 고맙습니다. – fneron