私は、ユーザーの現在のロケールだけを返すプラットフォームごとにカスタムPhoneGapプラグインを作成することで、同じ種類の問題を解決しました。
var message = Locale.getDefault().getLanguage();
をして、Javascriptの側で、あなたが戻って、その言語名を持っているとき、例えば:
例えば、Android上で、プラグインはのみチェックします。 en
の場合は、その言語の名前を付けたJSONオブジェクトを使用します。 JSONオブジェクトの例は次のようになります。
MyApp.Language = en: {
'Player' : 'Player',
'Players' : 'Players',
'Not Set' : 'Not Set'
},
fi: {
'Player' : 'Pelaaja',
'Players' : 'Pelaajat',
'Not Set' : 'Ei määritetty'
}
Android用プラグインは、このように簡単です:
JSファイル
window.localizeMe = {
getDefaultLocale: function(callback) {
cordova.exec(
callback,
function(err) {
callback('Error: ' + err.code);
},
"LocalizeMe",
"getDefaultLocale",
[]);
}
}
Javaファイル
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.");
}
}
}
そして最後に、あなたのメインのJSファイルで、アプリの言語設定:
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;
}
}
});
Phonegapを使用している場合は、[globalization.getLocaleName()](http://docs.phonegap.com/en/2.2)でカルチャを読んでいることを確認してください。 .0/cordova_globalization_globalization.md.html#globalization.getLocaleName)または 'globalization.getPreferredLanguage()'とブラウザのナビゲータオブジェクトを__not__すると、これは私の経験に合わせてアンドロイド上で常に "en"に設定されます。また、ハイフン/アンダースコア一致の落とし穴に関する私の投稿を参照してください – Philzen
ここで見て:https://github.com/EffEPi/localize – Fabrizio