2012-03-02 28 views
7

私はCSS3とjQueryでHTML5アプリケーションを開発しています。多言語HTML5アプリケーション

ユーザーの言語で表示したいテキストがあります。私はそれをどのようにすることができるか知っていますか?

このアプリケーションは、Blackberryプレイブックなどのモバイルデバイスで動作します。

どれでも手がかりを私は、ユーザーのOSの言語を取得する方法がわからない、またはどこで私のローカライズ文字列を入れなければならない、など?

答えて

4

私はJSファイル(サポートされている各言語の1)で、私のローカライズされた文字列を格納します。 Ex。 :

文字列en.js:

MyApp.STR = {"Hi":"Hi","By":"By", etc.}; 

文字列fr.js:

MyApp.STR = {"Hi":"Salut","By":"Par", etc.}; 

、起動時に、私は、ナビゲーターの言語に関する権利のファイルを読み込みます

loadLocalizedString: function(langParam/*optional*/) { 
    var language = window.navigator.language, lang; 
    console.log('loadLocalizedString with Navigator Language: ' + language); 
    if (!langParam) { 
     //Try to guess the best suited language 
     if(language) { 
      lang = language.substring(0,2); 
     } else { 
      lang = 'en'; 
     } 
     if($.inArray(lang, this.SUPPORTED_LANGUAGE) <= -1) { 
      lang = 'en';//If the language is not available : english by default 
     } 
    } else { 
     lang = langParam; 
    } 

    console.log('language: ' + lang); 

    this.loadString('lib/string-'+lang+'.js'); 
}, 
    SUPPORTED_LANGUAGE : ["en", "fr", "es", "it"], 
loadString:function(fileName) { 
    try { 
     $.ajaxSetup({async: false}); 
     $.getScript(fileName);//We don't use the async callback, because we need the translation in the next method 
     $.ajaxSetup({async: true}); 

    } catch (e) { 
     console.error('Error while loading : ' + fileName); 
    } 

} 

アプリ内でローカライズされた文字列を使用する:

html = MyApp.STR.Hi+' '+userName+' !';