2012-04-13 2 views
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> 

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

+0

サーバー上で何かできますか、またはJavaScriptを使用していますか? –

答えて

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言語のブラウザ独自の考え方であり、ユーザーの嗜好とまったく同じである必要はないことに注意してください。通常は、ユーザがどのブラウザ(およびそのバージョン)を使用するかを決定できることを除いて、ユーザによって制御可能でもない。

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それは英語のコンテンツを表示し、言語はヒンディー語である場合には、ヒンディー語のコンテンツを表示します。

ここではシンプルなスイッチケースを使用しましたが、使い勝手によっては目的に合わせて変更してください。

関連する問題