3

Dojo カスタム・ウィジェットは、ここおよびここ で_templated概説されている手順に従って mixinを介して国際化できます。次に、次のようなウィジェット テンプレート内のプレースホルダー が適切な言語翻訳に自動的に置き換えられます。${i18n.username}

ウィジェットの外で同様の nls 言語置換を行う最も簡単な方法は何ですか? 理想的には、タグに属性を追加して、ネストされたタグを含むすべてのプレースホルダーを置換したいと考えています。すでにこれを行っているコンテナウィジェットのタイプはありますか?

それとも、Dojo の開発では、すべてが (カスタム) ウィジェットにあると想定していますか? ウィジェットを使用しない既存のコードをローカライズする必要があります。

これまでに見つけた最良の解決策は次のとおりです。

4

1 に答える 1

2

${i18n.username}外部htmlの表記はであると仮定しましたclass="i18nReplace"。これについてはテストしていませんが、出発点として使用できることを願っています。

dojo.require("dojo.i18n");
dojo.require("dojo.query");
dojo.requireLocalization("myI18n", "myI18N"); // This will need to be modified to get your i18n files

dojo.addOnLoad(function() {
  var i18n = dojo.i18n.getLocalization("myI18n", "myI18N");
  dojo.query(".i18nReplace").forEach(function(node, index, arr){

      node.innerHTML = dojo.replace(node.innerHTML, { i18n: i18n } );

      // blindly doing this, does not support nested tags.
      // you could add conditional logic to check for children 
      // and if they exist separately process them, otherwise 
      // replace the html.
  });
});
于 2012-04-10T03:14:53.897 に答える