Ionic 3、Cordova、Angular 4を使用して開発されたアプリからAndroidデバイス言語を取得したい。
どうすれば入手できますか?
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));
}
window.navigator.language
はプラグインなしで動作しました。結果がグローバリゼーションプラグインとどのように比較されるか確認しませんでしたが、Android: "en-us"、 "es-us"、iOS: "en-US"、 "es-XL"などの結果が得られました
https://stackoverflow.com/a/4079798/431296 -window.navigator.userLanguage
もAndroidまたはiOSで定義されていないため、含まない
Davidの回答に続き、Globalization APIは非推奨になりました。
ECMA Internationalization API がiOSでサポートされるようになりましたAndroidおよびWindowsデバイスでは、このプラグインは不要になりました。*このプラグインから ECMA国際化API は、この Cordovaブログ投稿 で説明されています。
Ionic 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));
Ngx-translateを使用している場合は、
import { TranslateService } from '@ngx-translate/core';
constructor(private translate: TranslateService) {
console.log(this.translate.getBrowserLang());
}
デバイスとブラウザで正常に動作します。 「en」または「de」を返します。