IDEA :
アプリケーションの言語ごとに JSON ファイルを用意する。ユーザーが設定した設定に応じて、適切なものをロードします。
それはどのように機能しますか?アプリは起動時にすべての JSON ファイルをロードしますか、それとも表示の要求に応じて「string」ごとに「string」をロードしますか? 表示可能な文字列ごとにフィールドを持つ各言語のモデルを使用するよりも、重くなりすぎたり、遅くなったりするでしょうか?
アプリに 3 つの言語を含める予定です。
ありがとうございました
IDEA :
アプリケーションの言語ごとに JSON ファイルを用意する。ユーザーが設定した設定に応じて、適切なものをロードします。
それはどのように機能しますか?アプリは起動時にすべての JSON ファイルをロードしますか、それとも表示の要求に応じて「string」ごとに「string」をロードしますか? 表示可能な文字列ごとにフィールドを持つ各言語のモデルを使用するよりも、重くなりすぎたり、遅くなったりするでしょうか?
アプリに 3 つの言語を含める予定です。
ありがとうございました
言語に JSON ファイルを使用している場合は、Ajax 経由で読み込み、データを変数 (「Lang」など) に割り当てて、プロパティにアクセスする必要があります。Views または Controllers 設定で Lang 値を使用している場合、これらのファイルが Ajax 呼び出しの進行中にロードされる可能性があるため、これは問題になります。次のケースのように:
Ext.define('SomeView', {
config : {
....
html : Lang.someview.displatHtml, // This will give "Lang is undefined" error
....
}
});
そのため、それらには別の JS ファイルを使用することをお勧めします。私はほとんどの場合、アプリ ディレクトリ内の lang フォルダーを使用します。これには、すべての En.js、Fr.js などが含まれます。言語オブジェクトは次のように単純に見えます。
var LANG = {
loading : 'Loading...'
}
以下のような単純な関数を使用して、この言語ファイルを動的に (アプリがファイルを読み込む前にapp.js
) 読み込むことができます。動的に変更する必要がない場合は、index.html の先頭にスクリプトを追加してください。
// Load JS file dynamically
function loadJS(url){
if(!url){ return; }
var head= document.getElementsByTagName('head')[0],
script= document.createElement('script');
script.type= 'text/javascript';
script.src= url;
head.appendChild(script);
}
そのために Sencha Model を使用しても意味がありません。モデルを使用する場合、新しい言語プロパティを追加するたびにフィールドを追加する必要があります。上記のような単純な json オブジェクトで十分です。