使用javascript和PhoneGap进行HTML5移动应用本地化

Tha*_*hka 5 javascript html5 localization cordova

我正在创建一个可在所有3个移动平台(Android,iOS a和Windows Mobile 8)上运行的HTML5移动应用程序.我正在使用javascript进行本地化(https://github.com/eligrey/l10n.js/#readme).

该应用程序在浏览器上正常工作.但是当我在移动模拟器上部署它时,本地化不起作用.

我认为问题是javascript从浏览器获取语言信息,但在移动设备中我们使用PhoneGap运行HTML5.

有什么方法可以在PhoeGap中使用javascript启用本地化.

mic*_*lli 2

我刚刚通过为每个平台创建一个自定义 PhoneGap 插件来解决同样类型的问题,该插件仅返回用户当前的区域设置。

\n\n

例如,在 Android 上,该插件仅检查:

\n\n

var message = Locale.getDefault().getLanguage();

\n\n

然后在 Javascript 方面,当你得到该语言名称时,例如。en,您将使用以该语言命名的 JSON 对象。JSON 对象的示例如下所示:

\n\n
MyApp.Language = en: {\n    \'Player\'  : \'Player\',\n    \'Players\' : \'Players\',\n    \'Not Set\' : \'Not Set\'\n},\nfi: {\n    \'Player\'  : \'Pelaaja\',\n    \'Players\' : \'Pelaajat\',\n    \'Not Set\' : \'Ei m\xc3\xa4\xc3\xa4ritetty\'\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

Android 的插件很简单:

\n\n

JS文件

\n\n
window.localizeMe = {\n    getDefaultLocale: function( callback ) {\n        cordova.exec(\n            callback,\n            function(err) {\n                callback( \'Error: \' + err.code );\n            },\n            "LocalizeMe",\n            "getDefaultLocale",\n            []);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

Java文件

\n\n
public class LocalizeMe extends CordovaPlugin {\n    @Override\n    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {\n        if (action.equals("getDefaultLocale")) {\n            String message = Locale.getDefault().getLanguage();\n            this.getDefaultLocale(message, callbackContext);\n            return true;\n        }\n        return false;\n    }\n\n    private void getDefaultLocale(String message, CallbackContext callbackContext) {\n        if (message != null && message.length() > 0) { \n            callbackContext.success(message);\n        } else {\n            callbackContext.error("Expected one non-empty string argument.");\n        }\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后,在主 JS 文件中,设置应用程序的语言:

\n\n
window.localizeMe.getDefaultLocale( function( result ) {\n    if ( result != null && result.length > 0 ) {\n        if ( result.toLowerCase().indexOf( \'fi\' ) !== -1 ) {\n            MyApp.Lang = MyApp.Language.fi;\n        } else {\n            MyApp.Lang = MyApp.Language.en;\n        }\n    }\n});\n
Run Code Online (Sandbox Code Playgroud)\n