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

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

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

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

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

解决方法:

我刚刚通过为每个只返回用户当前语言环境的平台创建自定义PhoneGap插件解决了同样的问题.

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

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

然后在Javascript方面,当你有这个语言名称时,例如.你将使用它以该语言命名的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;
        }
    }
});

相关文章

公司前端界面用的是vue,我要嵌入到Android中生成App第一步:...
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cord...
我正在使用https://github.com/arnesson/cordova-plugin-fir...
一、Cordova的基础点在混合式应用中,我们通过现有的Cordova...
cordova自定义插件注意:存放自定义cordova插件目录不能有空...
一、问题VueAPP中有一个文件下载功能,用了各种方法来实现下...