web-dev-qa-db-ja.com

Ionic3、Cordova、Angular4アプリケーションでAndroidデバイスの言語を取得するにはどうすればよいですか?

Ionic 3、Cordova、Angular 4を使用して開発されたアプリからAndroidデバイス言語を取得したい。

どうすれば入手できますか?

11
Prince

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));
}
12
David

window.navigator.languageはプラグインなしで動作しました。結果がグローバリゼーションプラグインとどのように比較されるか確認しませんでしたが、Android: "en-us"、 "es-us"、iOS: "en-US"、 "es-XL"などの結果が得られました

https://stackoverflow.com/a/4079798/431296 -window.navigator.userLanguageもAndroidまたはiOSで定義されていないため、含まない

10
Stan Kurdziel

Davidの回答に続き、Globalization APIは非推奨になりました。

ECMA Internationalization API がiOSでサポートされるようになりましたAndroidおよびWindowsデバイスでは、このプラグインは不要になりました。*このプラグインから ECMA国際化API は、この Cordovaブログ投稿 で説明されています。

2
Filip Floryan

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」を返します。

0
moritz.vieli