私はjQueryプラグインを開発しています。このプラグインは、ユーザーのブラウザ言語に応じて、ページ上の要素を自動的に解釈しているようです。翻訳は.jsonファイルに保存されます。いくつかの関数の結果で解決する約束を返すには?
あなたがプラグインを呼び出すと、あなたはパッケージ名(またはそれらの配列)を渡すと、それは次のように言語ファイルをロードしようとします:ブラウザの言語が単純な場合
- 、例えば
'en'
であり、パッケージを指定しただけの場合は、以下をロードしようとします:packageName-en.json
- ブラウザの言語が、例えば 'en-US'のように構成されている場合、以前と同じようにロードしようとしますが:
packageName-en.json
およびpackageName-en-US.json
- 複数のパッケージが表示されている場合、各パッケージの前の2つのパスのうちの1つに従うことを試みます。だから、
、プラグインで、私はこの持っている:
:この関数を呼び出しますloadLanguages : function(){
$.each(self.options.packages,function(i, pkg){
});
}
:だから
$.fn.Translator = function(pkg, options){
Translator.initialize(pkg, options).done(function(){
return this.each(Translator.translate);
});
};
を、どこかで私の初期化関数では、私はこれを持っています
getLanguage : function(pkg, language){
var self = this, url;
if (self.options.path)
url = self.options.path + '/';
url += [pkg, language].join('-');
return $.ajax ({
url : url,
dataType : "json",
cache : self.options.cache
});
}
問題は、その関数はprobabl y複数回、私はどのようにinitialize
は、すべての関数が呼び出されて解決される約束を返すようにするか分からない。
私は答えを受けましたが、あなたの方が良いと思います。それは私が探していた解決策の一種であり、他の方法はちょっとハッキリしているようでした。ありがとうジュリアン:) –