2012-04-13 3 views
0

Wie wähle ich die Datei abhängig von der Browsersprache in Sencha Touch 2 aus? Ich habe 3 Dateien app_de.js, app_en-US.js und app_es.js unter meinem Projekt. Ich finde die Browser-Sprache und laden Sie die Datei wie folgt aus:Wie wähle ich die Datei in Abhängigkeit von der Browsersprache aus?

<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> 

Die Dateien werden einzeln funktionieren, wenn ich es auf diese Art und Weise sind:

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

Bitte lassen Sie mich wissen, wie die Datei zu laden, je in der Sprache des Browsers?

+0

Können Sie irgendetwas auf dem Server tun, oder stecken Sie fest mit JavaScript? –

Antwort

0

Sie benötigen eine Browser-übergreifendere Methode zum Erkennen der Browsersprache. Es gibt keinen Standard dafür, aber die folgende ist ein guter Versuch:

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

Sie auch eine bessere Möglichkeit der Zuordnung Sprachcodes zu denen müssen Sie unterstützen. Zum Beispiel sollte nicht de-AT als de erkannt und behandelt werden? Was ist mit en-GB? Der einfachste Ansatz besteht darin, den Sprachcode zu analysieren, so dass Sie split('-') tun und nur den ersten Teil übernehmen. Wenn Ihre Datei en-US.js sein muss, müssten Sie en-US zuordnen.

Ich weiß nicht, Ext.fly(), aber nur ein script Element hinzufügen ist ziemlich einfach, auch ohne eine Bibliothek. Finden Sie einfach einen Platz dafür in dem Dokument, machen Sie document.createElement('script'), weisen Sie ihm die Eigenschaft src zu und legen Sie ihn in den Dokumentbaum.

Beachten Sie, dass die Browsersprache die eigene Idee des Browsers einer eigenen Benutzeroberflächensprache ist und nicht unbedingt mit den Benutzereinstellungen übereinstimmen muss. Es ist normalerweise nicht einmal von dem Benutzer kontrollierbar, außer dass er in der Lage sein kann zu entscheiden, welchen Browser (und welche Version davon) er benutzt.

1

Um die Datei abhängig von der Sprache des Browsers in Sencha Touch 2 zu laden, laden Sie am besten eine gemeinsame Datei und laden je nach Browsersprache den Inhalt.

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

Und im locale.js, abhängig von der Sprache des Browsers, um den Inhalt zu laden.

Beispiel mit einem Login-Formular:

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; 

    ........ 

} 

Von diesem, wenn die Browser-Sprache ist en-US es zeigt den englischen Inhalt, und wenn die Sprache Hindi ist es zeigt den Hindi Inhalt.

Hier habe ich einen einfachen Schalterkasten verwendet, aber je nach Ihrer Benutzerfreundlichkeit, ändern Sie ihn, um Ihr Ziel zu erreichen.

Verwandte Themen