2012-04-10 9 views
3

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

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

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

私がこれまでしているを発見した最適なソリューション:で、dojo.i18nの周りに「薄いラッパーであり、そのようなCDATAや属性値として文字列を、交換する能力を持っている、dojox.mobile.i18nを使用して

答えて

2

Iは、外部HTMLにおける表記は${i18n.username} .Thisはclass="i18nReplace"を有する任意のノードを検索し、ノードのinnerHTMLのに取って代わるであろうと仮定する。私はこれを試していませんでしたが、あなたが出発点として使用できることを願っています。

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. 
    }); 
});