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?
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));
}
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
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 .
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));
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".