【发布时间】:2018-04-04 10:15:35
【问题描述】:
我想从使用 Ionic3、Cordova 和 Angular4 开发的应用程序中获取 android 设备语言。
我怎样才能得到它?
【问题讨论】:
标签: android cordova ionic-framework ionic2 ionic3
我想从使用 Ionic3、Cordova 和 Angular4 开发的应用程序中获取 android 设备语言。
我怎样才能得到它?
【问题讨论】:
标签: android cordova ionic-framework ionic2 ionic3
window.navigator.language 在没有插件的情况下为我工作。我没有检查结果与全球化插件的比较,但我得到的结果如下:Android:“en-us”、“es-us”和 iOS:“en-US”和“es-XL”
另请参阅https://stackoverflow.com/a/4079798/431296 -window.navigator.userLanguage 没有在 Android 或 iOS 上定义,所以我没有包含它
【讨论】:
您可以使用cordova-plugin-globalization,它还提供ionic-native wrapper。它提供了很多有用的方法,但您可能正在寻找getPreferredLanguage() 或getLocaleName()。
安装:
ionic cordova plugin add cordova-plugin-globalization
npm install --save @ionic-native/globalization
示例:
import { Globalization } from '@ionic-native/globalization';
constructor(private globalization: Globalization) {
this.globalization.getPreferredLanguage()
.then(res => console.log(res))
.catch(e => console.log(e));
}
【讨论】:
跟进 David 的回答,Globalization API 已弃用。
ECMA Internationalization API 现在支持 iOS、Android 和 Windows 设备,因此不再需要此插件。 * 从这个插件迁移到ECMA Internationalization API 在这个Cordova blog post 中解释。
【讨论】:
如果您使用的是 ngx-translate,
import { TranslateService } from '@ngx-translate/core';
constructor(private translate: TranslateService) {
console.log(this.translate.getBrowserLang());
}
在设备和浏览器中运行良好。它返回“en”或“de”。
【讨论】:
对于带有电容器的离子 5:
npm install @capacitor/device
npx cap sync
在代码中:
import { Device } from '@capacitor/device';
console.log((await Device.getLanguageCode()).value); // en-US
【讨论】:
离子 4
在 Ionic 中,我们称之为 Globalization 执行特定于用户区域、语言和时区的操作。
安装:终端
ionic cordova plugin add cordova-plugin-globalization
npm install @ionic-native/globalization
用法:任何组件或服务文件。
import { Globalization } from '@ionic-native/globalization/ngx';
constructor(private global: Globalization) { }
...
this.global.getPreferredLanguage()
.then(res => console.log(res))
.catch(e => console.log(e));
【讨论】: