言語設定を取得

Posted by muchag | Android |
初回投稿:2011-04-14 (木) 2:39:43 | 最終更新:2011-06-03 (金) 12:56:45

Android 端末では
言語設定を行うことができる。
日本語表記

更に、Android アプリケーションでは多言語対応も可能。
アプリの多言語対応

ということは、端末の言語設定を取得する必要も出てくる。

手法が2つあるようだ。
 

手法1

Locale クラスの getDefault メソッドを利用する手法。

Locale.CANADA en_CA
Locale.CANADA_FRENCH fr_CA
Locale.CHINA zh_CN
Locale.CHINESE zh
Locale.ENGLISH en
Locale.FRANCE fr_FR
Locale.FRENCH fr
Locale.GERMAN de
Locale.GERMANY de_DE
Locale.ITALIAN it
Locale.ITALY it_IT
Locale.JAPAN ja_JP
Locale.JAPANESE ja
Locale.KOREA ko_KR
Locale.KOREAN ko
Locale.PRC zh_CN
Locale.ROOT the root locale
Locale.SIMPLIFIED_CHINESE zh_CN
Locale.TAIWAN zh_TW
Locale.TRADITIONAL_CHINESE zh_TW
Locale.UK en_GB
Locale.US en_US

以下のように toString メソッドを用いて文字列として取得できる。
[android]String myLocale = Locale.getDefault().toString();

if (myLocale == “ja_JP”) {
// ゴニョゴニョ
}[/android] ところが! この if 文はスルーされる・・・なぜ? 🙄
いつの日か解決する日を夢見て・・・zzz

※2011-06-03 いただいたコメントにより解決。詳細は次の項にて。
 
参考サイトで紹介されていた以下の手法はちゃんと機能した。
[android]if ( Locale.JAPAN.equals(Locale.getDefault() ) {
// 日本語の処理
} else {
// 日本語以外の処理
}[/android]  

手法2

getResources().getConfiguration().locale.getLanguage() を利用する手法。
[android]String myLocale = getResources().getConfiguration().locale.getLanguage();

if (myLocale == “ja”) {
// ゴニョゴニョ
}[/android] これは toString なしでも文字列変数に代入できるし
デバッグの変数内容を見ると ja になっているのに
やっぱり上記 if 文が機能しない。 🙄

な~ぜ~だろ~なぜだろ~。

2011-06-03 いただいたコメントにより解決。

Java では、比較演算子 ==

  • プリミティブ型 – 値を比較してくれる
  • オブジェクト型 – 型を比較する(同じ型か否か)

ので、オブジェクト型で値を比較したいときは equals を利用すべし。
 
 
参考サイト:日本アンドロイドの会 設定言語の取得について

Posted by muchag | Android |
初回投稿:2011-04-14 (木) 2:39:43 | 最終更新:2011-06-03 (金) 12:56:45

2 Comments »

  1. コメント by ひかりんパパ。 — 2011/6/2 木曜日 @ 18:19:57

    if (myLocale.equals(“ja”))
    {
    :
    :
    }
    だからでは?
    Stringの == 演算子は同一オブジェクト化か否かだから、同一オブジェクトとはみなされてないだけでは?

  2. コメント by muchag — 2011/6/3 金曜日 @ 12:51:35

    ひかりんパパ。さん、はじめまして。
    コメントをありがとうございます。

    いただいたコメントを元にグーグル先生に質問したところ
    理解できました。

    このような基本的な事項に、
    わざわざコメントしていただき
    感謝します。

    お蔭様にて、また一歩前進しました。

RSS feed for comments on this post. TrackBack URI

Leave a comment