1. 「res」フォルダに「values-ja」というフォルダを作ります。(右クリック→新規→フォルダから)
2. そのフォルダの中に「res/values/strings.xml」をコピー&ペーストします。
3. 新しく作った「res/values-ja/strings.xml」をダブルクリックし、Valueを「こんにちわ!」に変更します。
変更が終わったら、上書き保存します。
この時点で「strings.xml」は2つ存在し、それぞれ以下の設定になっているはずです。
ファイルパス |
設定されている文字 |
res/values/strings.xml | Nice to meet you! |
res/values-ja/strings.xml | こんにちわ! |
4. エミュレータで実行してみましょう。(まだ変わりません。)
5. 「ホームボタン」→「メニューボタン」→「Settings」→「Language & keybord」→「Select locale」→「日本語」を順にクリックします。
「ホームボタン」でホームに戻ると、アイコンの下に表示されているアプリケーション名が日本語化していることを確認してください。
ここでは、エミュレータの言語環境を英語から日本語に変更しています。
6. アプリケーションを再度起動します。「ホームボタン」を長押し→「MainActivity」を順にクリックします。
今度は、「res/values-ja/strings.xml」で変更した「こんにちわ!」が画面に表示されているはずです。
まとめると以下のようになります。
Android端末の言語設定 |
参照される文字列リソースファイル |
デフォルト[English(United States)] | res/values/strings.xml |
日本語 | res/values-ja/strings.xml |
Android端末に設定されている言語設定に応じて参照する文字列リソースファイルを自動的に切り替えてくれるのです。
フォルダわけしてあげるだけで、英語圏のひとには英語で、中国語圏のひとには中国語で、日本語圏のひとには日本語で文字を表示させることができます。
フォルダ名のつけかたは?
日本語の場合は「values-」の後ろに「ja」という文字をつけます。英語の場合は「en」をつけます。
この後ろにつける文字は言語コードといい、「ISO 639」によって決められている2文字のアルファベットを用います。
http://ja.wikipedia.org/wiki/ISO_639
また、同じ英語の場合でも国によってニュアンスがかわるため、切り替えたい場合もあるでしょう。
その場合は、「values-en-r」の後ろに国コードを指定します。
こちらも「ISO 3166-1」で決められている2文字のアルファベットを用います。
http://ja.wikipedia.org/wiki/ISO_3166-1
ex) 「values-en-rUS」「values-ja-rJP」
国コードや言語コードが付いていない、最初からあるフォルダはデフォルトリソースと呼ばれています。
今回の場合は、「values-ja」つまり日本語だけローカライズされており、その他(英語でもフランス語でも中国語でも)の言語環境の場合は、デフォルトリソースである「values/strings.xml」を参照することになります。
最後に
今回は、「strings.xml」のローカライズについて紹介しました。
Android端末に設定されている言語環境に応じて、「strings.xml」を切り替えることができました。
勘の鋭い方は気づいたかもしれませんが、切り替えられるリソースファイルは「strings.xml」だけではありません。
- res/drawable
- res/layout
- res/anim
- res/values
- res/xml
- res/raw
これらのフォルダ以下に配置されるファイルを切り替えることができます。
また、ローカライズ対象となるのは言語・国だけではありません。
画面サイズ、画面アスペクト、画面オリエンテーション(縦向き、横向き)、画面ピクセル密度、APIレベル等を基準にして切り替えることが可能です。
今回のローカライズによって”どの端末でも”、”どの国の人でも”使用することが可能なアプリケーションを作ることが可能になります。
せっかく作ったアプリですから、たくさんの人に使ってもらいたいですよね。
参照HP:
■ローカライゼーション
http://developer.android.com/guide/topics/resources/localization.html
■リソースの提供
http://developer.android.com/guide/topics/resources/providing-resources.html