Ich habe gerade die gleiche Art von Problem gelöst, indem ich eine benutzerdefinierte PhoneGap-Plugins für jede Plattformen erstellt, die nur das aktuelle Gebietsschema des Benutzers zurückgibt.
zum Beispiel auf Android, das Plugin nur überprüft:
var message = Locale.getDefault().getLanguage();
und dann in Javascript Seite, wenn Sie diese Sprache Namen zurück haben, zB. en
, würden Sie das JSON-Objekt verwenden, das nach dieser Sprache benannt wurde. Das Beispiel von JSON-Objekt würde wie folgt aussehen:
MyApp.Language = en: {
'Player' : 'Player',
'Players' : 'Players',
'Not Set' : 'Not Set'
},
fi: {
'Player' : 'Pelaaja',
'Players' : 'Pelaajat',
'Not Set' : 'Ei määritetty'
}
Das Plugin für Android ist einfach:
JS-Datei
window.localizeMe = {
getDefaultLocale: function(callback) {
cordova.exec(
callback,
function(err) {
callback('Error: ' + err.code);
},
"LocalizeMe",
"getDefaultLocale",
[]);
}
}
Java-Datei
public class LocalizeMe extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("getDefaultLocale")) {
String message = Locale.getDefault().getLanguage();
this.getDefaultLocale(message, callbackContext);
return true;
}
return false;
}
private void getDefaultLocale(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
Und schließlich in der Haupt JS-Datei, setzen Sie Ihre Sprache App:
window.localizeMe.getDefaultLocale(function(result) {
if (result != null && result.length > 0) {
if (result.toLowerCase().indexOf('fi') !== -1) {
MyApp.Lang = MyApp.Language.fi;
} else {
MyApp.Lang = MyApp.Language.en;
}
}
});
Wenn Sie Phonegap verwenden, lesen Sie die Kultur über [globalisation.getLocaleName()] (http://docs.phonegap.com/de/2.2 .0/cordova_globalization_globalization.md.html # globalisation.getLocaleName) oder 'globalisation.getPreferredLanguage()' und __nicht__ das navigator Objekt des Browsers, dies ist immer auf "and" für meine Erfahrung auf "en" eingestellt. Siehe auch meinen Post unter Bindestrich/Unterstrich passender Fallstrick – Philzen
Werfen Sie einen Blick hier: https://github.com/EffEPi/localize – Fabrizio