Sencha Touchは国際化を行う公式な方法がないため、私自身の小さなユーティリティセットを作成しています。私は既存のi18nプラグインを使用するためにjQueryのような別のlibを埋め込むことはしません。現時点では、私は困っている最善の方法を考え出しています。 現在、私はクラスをシングルトンとして実装しています。コンストラクタでは、言語を決定し、対応する言語ファイルをロードします。 現時点で私はSenchaメソッドを使用しており、モデルを定義し、データ(json)をストアにロードしています。私はそれが便利だと思う。ここで私は、データをロードし、コンストラクタからの抜粋:Sencha Touch 2 MVC - アプリケーションの初期化前のAjaxリクエスト
Ext.define('Translation', {
extend: 'Ext.data.Model',
idProperty: 'key',
fields: [
{name: 'key', type: 'string'},
{name: 'translation', type: 'string'}
],
proxy: {
type: 'ajax',
url: 'res/translation-'+lang+'.json',
//appendId: false,
reader: {
type: 'json',
}
}
});
_store = Ext.create('Ext.data.Store', {
model : 'Translation',
autoLoad: true
});
ここでの問題負荷が非同期アプリケーションが前にロードし始める可能性があることを意味(?!煎茶との同期呼び出しを行う手立てが)ではないということですこのことは終わった。私はビューがそれに頼っているので、データが必要です。私がこれまでに見つけた
Ext.Loader.setConfig({enabled:true});
Ext.application({
name: 'MyApp',
controllers: ['Ctr1', 'Ctr2'],
models: ['Model1', 'Model2],
init: function() {
},
launch: function() {
}
});
唯一の解決策は、
- はコールバックを使用し、内部のアプリの初期化を包むだろう。
- Senchaを使用せず、ajaxリクエストを手動で実行しないでください。
- Ajaxはまったく使用しないでください。すべての言語の翻訳をjavascriptファイルに置き、index.htmlに組み込み、ユーティリティクラスがそのオブジェクトにアクセスできることを確認します。