android-如何使用PhoneGap Build获取设备的语言环境或语言?

我正在使用Phonegap Build开发适用于iOS和Android的应用程序.

我想确定设备的语言环境(例如,“ en-US”),尽管我会适应当前的语言设置,甚至会安装我的应用程序所使用的应用程序商店(已经漫长了一天).

按照针对全球化插件的here的说明,我认为我没事,但似乎在我用于测试的iPhone 6或Samsung Galaxy Nexus上均无效.

我的config.xml的相关部分如下所示:

<gap:plugin name="org.apache.cordova.globalization" />

我从插件获取语言环境的功能如下:

var getPhoneGapLocaleName = function() {
    var loc = 'unknown';

    if (navigator.globalization !== undefined) {
        navigator.globalization.getLocaleName(
            function (locale) {
                if (locale !== undefined) {
                        loc = locale.value;
                }
            },
            function () {
                // nothing
            }
        );
    }

    return loc;
};

注意:两台设备上均存在navigator.globalization.getLocaleName并显示正确,评估得出的功能类似于基于文档的预期.

解决方法:

这里的问题是,变量“ loc”在成功或失败回调的范围之外声明,这当然会在短时间后发生.

我通过更改功能来解决此问题:

var refreshPhoneGapLocaleName = function() {
    if (navigator.globalization !== undefined) {
        navigator.globalization.getLocaleName(
            function (locale) {
                if (locale !== undefined) {
                    localStorage['pg.locale'] = locale.value;
                }
            },
            function () {
                // nothing
            }
        );
    }
};

现在在onDeviceReady中调用它,以便在应用启动时刷新值.

稍后(不是立即),可以使用以下函数来检索语言环境值:

var getLocale = function() {
    return localStorage['pg.locale']();
};

*的最大优点是它多久可以帮助您解决一个自己的愚蠢错误.

上一篇:PANIC:缺少“ x86” CPU的仿真器引擎程序. [离子Cordova运行android]


下一篇:android-device.platform给“设备未定义” phonegap