如何在 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

ionic - ionic3.x + cordova7.0.1 环境配置

Ionic 3是否可靠生产? [关闭]