0

IDEA :
アプリケーションの言語ごとに JSON ファイルを用意する。ユーザーが設定した設定に応じて、適切なものをロードします。

それはどのように機能しますか?アプリは起動時にすべての JSON ファイルをロードしますか、それとも表示の要求に応じて「string」ごとに「string」をロードしますか? 表示可能な文字列ごとにフィールドを持つ各言語のモデルを使用するよりも、重くなりすぎたり、遅くなったりするでしょうか?

アプリに 3 つの言語を含める予定です。

ありがとうございました

4

1 に答える 1

1

言語に 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 オブジェクトで十分です。

于 2013-05-30T07:33:21.267 に答える