如何在Ionic3、Cordova和Angular4应用程序中获取Android设备的语言?

13

我想要从使用Ionic3、Cordova和Angular4开发的应用程序中获取Android设备的语言。

我该如何获取它?

6个回答

14

window.navigator.language在没有插件的情况下可以使用。我没有查看与全球化插件相比较的结果,但我得到了以下结果:在Android上:"en-us","es-us",在iOS上:"en-US"和"es-XL"

此外,请参见https://dev59.com/j3NA5IYBdhLWcg3wPLL-#4079798 - 在Android或iOS上都未定义window.navigator.userLanguage,因此我没有包含它。


1
对于那些想知道的人,“window.navigator.language”是ECMA国际化API的一部分,这也是Ionic团队推荐使用而不是全球化插件的原因。有关更多详细信息,请参见Filip Floryan在此问题中的答案:https://dev59.com/alYN5IYBdhLWcg3wzKzf#53831546 - Fearnbuster

12
你可以使用cordova-plugin-globalization,它还提供了一个ionic-native的包装器。它提供了许多有用的方法,但你可能正在寻找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));
}

2
全球化已被弃用 https://github.com/apache/cordova-plugin-globalization#deprecation-notice - Luigi Cerone

6

1
为了帮助一些人节省一点时间:在这个回复中提到的博客文章建议使用 "window.navigator.language"(尽管他们在使用时没有前缀 "window")。这就是 Stan Kurdziel 在他对这个问题的回答中所指的内容:https://dev59.com/alYN5IYBdhLWcg3wzKzf#50457743 - Fearnbuster

3
如果你正在使用 ngx-translate,
import { TranslateService } from '@ngx-translate/core';

constructor(private translate: TranslateService) {
  console.log(this.translate.getBrowserLang());
}

该设备和浏览器上正常工作。它返回“en”或“de”。


1
对于使用 Capacitor 的 Ionic 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


0

Ionic 4

在Ionic中,我们称其为全球化,执行针对用户区域设置、语言和时区的特定操作。

安装:终端

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接