博客 RSS 订阅

迁移自 Globalization 插件
作者:Vishal Mishra
2017年11月20日

迁移自 Cordova Globalization 插件

Cordova Globalization 插件的创建是为了在大多数移动平台无法区分这些设置时,获取信息并根据用户的区域设置、语言和时区执行操作。 随着浏览器中新 API 的出现,我们现在可以使用 ECMA 国际化 API 在 iOS、Android、Windows 设备和桌面浏览器上实现此目标。 因此,不再需要此 Cordova 插件,并且很快将会被淘汰。

从插件迁移到国际化 API

Cordova Globalization 插件定义了一个全局 `navigator.globalization` 对象,该对象提供了各种方法来访问用户的区域设置、语言和时区。 要从浏览器获取首选语言,可以使用 `navigator.globalization.getPreferredLanguage` 方法,如下所示:

navigator.globalization.getPreferredLanguage(function (language) {          
    console.log('language: ' + language.value + '\n');
}, function () { 
    console.log('Error getting language\n'); 
});

可以使用以下方法查找当前区域设置:

navigator.globalization.getLocaleName(function (locale) {          
    console.log('locale: ' + locale.value + '\n');
}, function () {
    console.log('Error getting locale\n'); 
});

ECMA 国际化 API 提供了 `Intl` 对象,该对象提供了语言敏感的字符串比较、数字格式化以及日期和时间格式化。 首先,我们应该检查浏览器是否支持该 API:

if (window.Intl && typeof window.Intl === 'object') {
    console.log('API available');
}

可以使用 `navigator` 对象从浏览器中查找首选语言标签:

console.log(navigator.language);

可以使用 `Intl.getCanonicalLocales(locales)` 方法查找区域设置名称。 `locales` 是一个字符串值或字符串值数组,其中包含语言标签。 然后可以按如下方式获取区域设置名称:

Intl.getCanonicalLocales('EN-US'); // ["en-US"]
Intl.getCanonicalLocales(['EN-US', 'Fr']); // ["en-US", "fr"]

从 Cordova Globalization 插件迁移的另一个实例可以在此示例中看到:`navigator.globalization.dateToString` 方法。 此方法在 Cordova 插件中使用,如下所示:

navigator.globalization.dateToString(
    new Date(),
    function (date) { 
        alert('date: ' + date.value + '\n'); 
    },
    function () { 
        alert('Error getting dateString\n'); 
    },
    { formatLength: 'short', selector: 'date' }
);

可以使用国际化 API 通过以下代码获得类似的结果:

var date = new Date();
console.log(new Intl.DateTimeFormat().format(date));

这里是一个很好的资源,可以了解有关 ECMA 国际化 API 中各种方法的更多信息。

非常欢迎并感谢您的反馈!