2017-07-21 26 views
1

Androidの電話言語設定では、言語を英語(United Kingdowm)に設定しました。Androidで現在の言語を取得する方法は?

そして、私は言語を取得するには、次のコードを使用します。以下のような

Log.d(TAG,"getDisplayLanguage = " + Locale.getDefault().getDisplayLanguage()); 
Log.d(TAG,"getLanguage = " + Locale.getDefault().getLanguage()); 
Log.d(TAG,"Resources.getLanguage = " + Resources.getSystem().getConfiguration().locale.getLanguage()); 
Log.d(TAG,"getResources.getLanguage = " + getResources().getConfiguration().locale); 

とログショー:

getDisplayLanguage = English 
getLanguage = en 
Resources.getLanguage = en 
getResources.getLanguage = en_GB 

それはLocal.UKを示しませんでした。

私に何か不足しましたか?

答えて

1

Is en_UK an illegal locale?

での回答によると、正しい国コードが表すen_GBです。ロケールは、国コードとしてISO 3166-1を使用します。ウィキペディアWRITEUPを含む:

コードが国名および国の間 ビジュアル関連付けを可能にするために国名の 有意な、ユニークな成分を反映するために」ISO 3166/MAによると、選択されコード "[7]この の理由で、 "Republic"、 "Kingdom"、 "United"、 "Federal"、または "Democratic"のような国名の共通コンポーネントは通常、コード要素 の派生に使用されません。結果として、例えば、英国 は、正式に英国ではなくアルファ2コードGBが割り当てられており、その正式名称は「英国と英国の アイルランド」(英国の英国です。 United Kingdom )。

私の答えではない、それはリンク先からの回答です。ちょっとした場合、リンクされた回答はしばらくは利用できません。

1

あなたがコードでLocale.UKをチェックすると、それはそれはあなたのログのマッサージで取得しようと試みるものをそのように戻らないでしょう表すen_GB

http://www.localeplanet.com/icu/en-GB/

1

です。 ログ・マッサージは文字列値のみを出力します。しかし、ロケールはクラスであり、UKはクラス内の変数(public static final Locale UK = null;)です。これは同じ文字列値u rをLog massageに戻します。

関連する問題