0

sencha touch 2のブラウザ言語に応じてファイルを選択するにはどうすればよいですか?プロジェクトの下にapp_de.js、app_en-US.js、app_es.jsの3つのファイルがあります。私はブラウザの言語を見つけて、次のようにファイルをロードしています:

 <script type="text/javascript" id="extlocale">

    var browserLang = window.navigator.language; // get the browsers language
    alert(browserLang);
    var locale = 'en'; // default locale

    if(browserLang == 'de' || browserLang == 'de-de')       //called when the language is german
    {
        locale = 'de';
    }
    else if(browserLang == 'en-US' || browserLang == 'en-us' || browserLang == 'en')
    {
        locale = 'en-US';                           //called when the language is english
    }
    else if(browserLang == 'es' || browserLang == 'es-es' )
    {
        locale = 'es';                              //called when the language is spanish
    }
    else
    {
        console.log("Invalid language");
        locale = 'en-US';
    }
    if(locale) {

       Ext.fly('extlocale').set({src:'app_'+locale+'.js'});

    }

</script>

このように含めると、ファイルは個別に機能します。

  <script type="text/javascript" src="app_en-US.js"></script>

ブラウザの言語に応じてファイルをロードする方法を教えてください。

4

2 に答える 2

1

Sencha Touch 2 でブラウザの言語に応じてファイルをロードするには、一般的なファイルをロードし、ブラウザの言語に応じてコンテンツをロードするのが最善の方法です。

<script type="text/javascript" src="locale.js"></script><!--locale.js was the file invoked-->

そして、locale.jsブラウザの言語に応じて、コンテンツを読み込みます。

ログインフォームの例:

var browserLang = window.navigator.language; // get the browsers language
alert(browserLang);

var Messages;

switch (browserLang) {

    case 'en-US':
    Messages = {
        username : 'EN-glish Username',
        password : 'EN-glish Password',
        login    : 'EN-glish Login' 
    };
    break;

    case 'hi':
    Messages = {
        username : 'HI-ndi Username',
        password : 'HI-ndi Password',
        login    : 'HI-ndi Login'   
    };
    break;

    ........

}

このことから、ブラウザの言語がen-US英語の場合は英語のコンテンツを表示し、言語がヒンディー語の場合はヒンディー語のコンテンツを表示します。

ここでは単純なスイッチケースを使用しましたが、使いやすさに応じて、目的に合わせて変更してください。

于 2012-08-01T05:49:01.377 に答える
0

ブラウザーの言語を検出する、よりクロスブラウザーな方法が必要です。標準はありませんが、次の方法をお試しください。

 function browserLanguage() {
   if (!navigator) { return null; }
   return navigator.language || navigator.browserLanguage ||
          navigator.systemLanguage || navigator.userLanguage || null; 
 }  

また、言語コードをサポート対象にマッピングするためのより良い方法も必要です。たとえば、de-AT は de として認識して扱うべきではないでしょうか。en-GBはどうですか?最も簡単な方法は、言語コードを解析しsplit('-')て最初の部分だけを取得することです。ファイルを en-US.js にする必要がある場合は、en を en-US にマップする必要があります。

わかりませんが、ライブラリがなくても、要素Ext.fly()を追加するだけでかなり簡単です。scriptドキュメント内でその場所を見つけて、 を実行し、プロパティをdocument.createElement('script')割り当てsrcて、ドキュメント ツリーに配置するだけです。

ブラウザの言語は、独自の UI 言語に対するブラウザ独自の考えであり、ユーザーの設定とまったく一致する必要はないことに注意してください。ユーザーが使用するブラウザー (およびそのバージョン) を決定できる場合を除いて、通常はユーザーが制御することさえできません。

于 2012-04-13T04:59:55.177 に答える