我剛剛通過爲每個僅返回用戶當前語言環境的平臺創建自定義PhoneGap插件來解決同類問題。
例如,在Android上,插件只檢查:
var message = Locale.getDefault().getLanguage();
,然後在JavaScript端,當你有這種語言的名字後面,例如。 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.phoneLauncherName.com/)閱讀文化.0/cordova_globalization_globalization.md.html#globalization.getLocaleName)或'globalization.getPreferredLanguage()'和__not__瀏覽器的導航器對象,在我的經驗中,它總是設置爲「en」。另請參閱我的帖子,關於連字符/下劃線匹配陷阱 – Philzen 2013-05-10 16:49:43
看看這裏:https://github.com/EffEPi/localize – Fabrizio 2014-09-12 01:00:11