問題発生
状態:解決済
閲覧数:5,018
投稿日:2013-12-22
更新日:2013-12-22
▼/values-ja/strings.xmlに記載した内容が反映されない
・エミュレータのロケールが日本語指定されていない
・エミュレータのロケールを日本語指定すれば良い
原因
・エミュレータのロケールが日本語指定されていない
解決方法
・エミュレータのロケールを日本語指定すれば良い
「Androidアプリケーションにおける言語表示」に関する基本的な考え方
2種類しかない
・A.日本語のみ対応
・B.多言語化対応
A.日本語のみ対応
▼/values/strings.xmlを直接書き換える方式
処理の流れ
1.▼main.xml
・main.xmlにはTextViewが1つ含まれ、表示する内容をandroid:text属性で指定。「@string/hello」
※これ自身が文字列ではなく、文字列リソースを参照すると言う意味
2.▼/values/strings.xml
・文字列リソース
B.多言語化対応
▼/values/strings.xmlを直接書き換えない方式(言語毎新たに「/values-★★/strings.xml」を作成していく)
・「Androidを搭載したスマートフォン(エミュレータ)やタブレット」における言語切り替えは、設定画面で指定した使用言語に基づき、自動選択される
・具体的には「/values-★★/strings.xml」があれば内容を反映。なければ「/values/strings.xml」内容を反映
※日本語の場合は「values-ja」と予め決まっている
処理の流れ
1.▼main.xml
2.▼/values-ja/strings.xml
・文字列リソース
3.▼/values/strings.xml
・上記で指定されていない場合は、文字列リソースをこのファイルより参照
・ちなみに、「アプリケーション/res/valuesフォルダー」へ配置する文字列リソースファイルの名前は何でも良い。※普通はstrings.xml
勘違いしたこと。疑問に思ったこと
ロケール指定
・エミュレータでロケール指定してるはず。絶対日本語指定したはず
→今現在動作させているエミュレータではなかった。必ずしも、Eclipseみたいに一つのソフトウエアを使い続けるわけではないので、多言語化確認する場合は、エミュレータ毎にロケール指定は必要
ソースコード変更の必要性は?
・新しく「/values-★★/strings.xml」作成する以外、ソースコード変更する必要性ある?
→ない
→言語毎のロケールリソースファイルを用意したら、後はAndroid側が設定に基づき自動切換えする
多言語化? 国際化?
・名称が分からないので調査
・「多言語化」「国際化」「国際対応」…
・サイト毎に記述はバラバラ
・特に決まっていないみたい