web-dev-qa-db-fra.com

Comment puis-je obtenir la langue de l'appareil Android dans les applications Ionic3, Cordova et Angular4?

Je veux obtenir la langue de l'appareil Android Android à partir de l'application développée en utilisant Ionic3, Cordova et Angular4.

Comment puis-je l'avoir?

11
Prince

Vous pouvez utiliser cordova-plugin-mondialisation qui offre également un wrapper ionique natif . Il propose de nombreuses méthodes utiles, mais vous recherchez probablement getPreferredLanguage() ou getLocaleName().

Installation:

ionic cordova plugin add cordova-plugin-globalization
npm install --save @ionic-native/globalization

Exemple:

import { Globalization } from '@ionic-native/globalization';
constructor(private globalization: Globalization) { 
  this.globalization.getPreferredLanguage()
    .then(res => console.log(res))
    .catch(e => console.log(e));
}
12
David

window.navigator.language a fonctionné pour moi sans plugin. Je n'ai pas vérifié pour voir comment les résultats se comparent au plugin Globalization, mais j'ai obtenu des résultats comme: Android: "en-us", "es-us" et sur iOS: "en-US" et "es-XL"

voir aussi https://stackoverflow.com/a/4079798/431296 -window.navigator.userLanguage n'était pas défini sur Android ou iOS, donc je ne l'ai pas inclus

10
Stan Kurdziel

Suite à la réponse de David, l'API de mondialisation est obsolète.

Avec ECMA Internationalization API désormais pris en charge sur iOS, Android et appareils Windows, ce plugin n'est plus requis. * Migration de ce plugin vers le API d'internationalisation ECMA est expliqué dans ce article de blog Cordova .

2
Filip Floryan

Ionique 4

Dans Ionic nous l'appelons Globalisation effectue des opérations spécifiques aux paramètres régionaux, à la langue et au fuseau horaire de l'utilisateur.

Installation : Terminal

ionic cordova plugin add cordova-plugin-globalization
npm install @ionic-native/globalization

Usages: Tout composant ou fichier de service.

import { Globalization } from '@ionic-native/globalization/ngx';
constructor(private global: Globalization) { }
...


this.global.getPreferredLanguage()
  .then(res => console.log(res))
  .catch(e => console.log(e));
0

Si vous utilisez ngx-translate,

import { TranslateService } from '@ngx-translate/core';

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

fonctionne bien sur les appareils et dans le navigateur. Il revient pour moi "en" ou "de".

0
moritz.vieli