我刚刚通过为每个平台创建一个自定义PhoneGap插件来解决了同样的问题,该插件只返回用户的当前语言环境。
例如,在Android上,该插件仅检查:
var message=区域设置.getDefault().getLanguage();
然后在Javascript端,当您恢复了该语言名称时,例如。英语
,您将使用以该语言命名的JSON对象。JSON对象的示例如下所示:
我的应用程序。语言=英语:{'Player':'Player',“玩家”:“玩家”,“Not Set”:“Not Set”},图1:{“玩家”:“佩拉亚”,“玩家”:“Pelaajat”,“未设置”:“Ei määritetty”}
Android插件很简单:
JS文件
window.localizeMe={getDefaultLocale:function(回调){cordova.exec软件(回调,函数(err){回调(“错误:”+错误代码);},“本地化Me”,“getDefaultLocale”,[]);}}
Java文件
公共类LocalizeMe扩展了CordovaPlugin{@覆盖公共布尔执行(字符串操作、JSONArray参数、CallbackContext回调上下文)抛出JSONException{if(action.equals(“getDefaultLocale”)){字符串消息=Locale.getDefault().getLanguage();this.getDefaultLocale(消息,callbackContext);返回true;}返回false;}private void getDefaultLocale(字符串消息,CallbackContext回调上下文){if(message!=空&&message.length()>0){callbackContext.success(message);}其他{callbackContext.error(“需要一个非空字符串参数。”);}}}
最后,在主JS文件中,设置应用程序的语言:
window.localizeMe.getDefaultLocale(函数(结果){if(结果!=空&&result.length>0){if(result.toLowerCase().indexOf('fi')!==-1 ) {我的应用程序。Lang=我的应用程序。语言.fi;}其他{我的应用程序。Lang=我的应用程序。语言.en;}}});