如何在 Ionic3、Cordova 和 Angular4 应用程序中获取 android 设备的语言?
Posted
技术标签:
【中文标题】如何在 Ionic3、Cordova 和 Angular4 应用程序中获取 android 设备的语言?【英文标题】:How can I get language of the android device in Ionic3, Cordova and Angular4 application? 【发布时间】:2018-04-04 10:15:35 【问题描述】:我想从使用 Ionic3、Cordova 和 Angular4 开发的应用程序中获取 android 设备语言。
我怎样才能得到它?
【问题讨论】:
【参考方案1】:window.navigator.language
在没有插件的情况下为我工作。我没有检查结果与全球化插件的比较,但我得到的结果如下:Android:“en-us”、“es-us”和 ios:“en-US”和“es-XL”
另请参阅https://***.com/a/4079798/431296 -window.navigator.userLanguage
没有在 Android 或 iOS 上定义,所以我没有包含它
【讨论】:
对于那些想知道的人,“window.navigator.language”是 ECMA 国际化 API 的一部分,Ionic 团队建议使用它来代替全球化插件。有关详细信息,请参阅 Filip Floryan 对此问题的回答:***.com/a/53831546/3513260【参考方案2】:您可以使用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));
【讨论】:
全球化已被弃用 github.com/apache/…【参考方案3】:跟进 David 的回答,Globalization API 已弃用。
ECMA Internationalization API 现在支持 iOS、Android 和 Windows 设备,因此不再需要此插件。 * 从这个插件迁移到ECMA Internationalization API 在这个Cordova blog post 中解释。
【讨论】:
为了节省一些人的挖掘时间:这个回复中提到的博客文章建议使用“window.navigator.language”(尽管他们使用它没有前导“window”)。这就是 Stan Kurdziel 在回答这个问题时所指的:***.com/a/50457743/3513260【参考方案4】:如果您使用的是 ngx-translate,
import TranslateService from '@ngx-translate/core';
constructor(private translate: TranslateService)
console.log(this.translate.getBrowserLang());
在设备和浏览器中运行良好。它返回“en”或“de”。
【讨论】:
【参考方案5】:对于带有电容器的离子 5:
npm install @capacitor/device
npx cap sync
在代码中:
import Device from '@capacitor/device';
console.log((await Device.getLanguageCode()).value); // en-US
https://capacitorjs.com/docs/apis/device
【讨论】:
【参考方案6】:离子 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));
【讨论】:
以上是关于如何在 Ionic3、Cordova 和 Angular4 应用程序中获取 android 设备的语言?的主要内容,如果未能解决你的问题,请参考以下文章
使用 nodejs 8、angularjs、ionic3、cordova8 更新 cordova-android 6 到 9、cordova-ios 5 到 6
所有原生 cordova 插件都停止在 Ionic3 上工作
如何将 Ionic Cordova 3 迁移到 Ionic Cordova 5?
ionic3 npm install cordova error syscall rename