文字列リソースのローカライゼーション
グローバル・マーケットをターゲットにしたアプリケーションを開発する際、問題になるのはやはりリソースの取扱いですね。
いまどきリソースシステムが上手いことできているものが多いので、
「きっとアンドロイドもうまいこと対処する方法はあるだろう」
と思われることでしょうが、実際にその通りです :-)
ここでは、システムのロケールを英語、日本語と切り替え、UI リソースとして文字列が英語、日本語と自動的に切り替わる所を確認します。
ロケールの変更とリソース切り替え
ここで作ったデモプログラムは次の通りです。
システムの言語設定を英語にしている場合、次のように表示されるプログラムがあったとします。
アプリケーションのタイトル領域と中身の文字「Hello, Demo Program!」が英語 (アルファベット) で表示されています。
そこで設定 (Settings) で言語 Language の設定を "日本語" に切り替えます。
システムの UI 自体、日本語になっていることがわかります。
この状態で、先のアプリケーションを見ると・・・
メニュー項目も日本語になっていますね (ローカライズテストというものです)。
アプリケーションの内容も確かに日本語に切り替わっています。
アンドロイドアプリケーションのローカライゼーション (L10N)
これを実現するのは実は簡単です。
文字列は res/values フォルダ以下の strings.xml に記述しますよね。実はこれがデフォルトになります。
日本語のリソースとして、res/values-ja フォルダに strings.xml を作ることで、 システムのロケールが ja のときに、それが使われるようになります。
このように代替リソース (alternative resource) を res/values-<修飾子>/strings.xml に作成することで、 文字列のローカライズを簡単に実現する事が可能です。