4

私は最近、個人的な使用と経験のために道場を学び始めました。これまで、私はさまざまな道場に関するチュートリアルを(彼らのウェブサイトやウェブ上で)行っており、より複雑なアプリケーション(またはグッドプラクティス)のための具体的なインフラストラクチャの実装に「苦労」しています。興味深いプロジェクト(https://github.com/csnover/dojo-boilerplate)と記事(http://www.sitepen.com/blog/2011/05/04/what-is-the-best- )を1つ見つけました。 way-to-start-a-dojo-project /)。これで、私の最初の問題は解決したと思います。私が間違っているなら、私を訂正してください。

i18nのチュートリアルには具体的な実装が欠けているように感じます。たとえば、ボイラープレートプロジェクトのダイアログボックスにi18nを追加したいと思います。

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

ここで、私のプロジェクト階層は次のとおりです。

ここに画像の説明を入力してください

ご覧のとおり、アプリケーション用に独自のnlsフォルダーを作成し、さまざまな(lang-locale)「文字列」を保存します。次に、上記のダイアログコードのタイトルまたはコンテンツにロケールコンテンツを指定するにはどうすればよいですか。私は最近、Ruby on Rails(MVCの概念を使用)でi18nを実行しました。ビューに応じて、この特定のビュー用にローカリゼーション用のファイル(.yml)を作成する必要がありました。RoRとDojoは実際には同じものではありませんが、ウィジェットを実行するため(私のビューと比較できます)、各ウィジェットに独自のローカリゼーションが必要です...最初2番目の2つのチュートリアルに出くわしました。たぶん、私はそれをすべて間違って読んでいます。

私は今このようなものを持っていますが、それは機能しません..私は何が欠けていますか?

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

1 に答える 1

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
  });
});
于 2012-06-07T18:50:53.417 に答える