[Android] アプリを各国対応にローカライズする

アンドロイドアプリは日本だけでなく全世界に簡単に配信できます。ただ全世界の言語には対応するのはまた別の話として、ここではせめて英語と日本語の区別ができるようにしてみたいと思います。英語以外の言語も同様にできます。

locale_6
locale_7

Android Studio 2.1.1
Android 6.0

 

sponsored link

Locale

 
例としてデフォルトで英語表示、日本では日本語を表示させる設定を考えてみます。
 

Locale ID

 
Locale IDを使って日本語とそれ以外の環境分けができます

 
この Locale.JAPAN は ja_JP を指しています。
デフォルトで英語表示、日本では日本語を表示させるにはこれを使います。
英語で分ける場合は Local.ENGLISH となります。
 
ただしマイナーな言語についてはLocalで切り分けます。
それぞれの言語のLocaleを調べるにはEmulatorの設定にあるCustom Localeから見つけられます。尚、古いAPIではサポートされていない場合があります。

あるいは、SettingsからLanguage & input で言語の設定を行います。

customlocale_2
Custom Locale
locale3
localization_3

 
実際にテストするには、「ADD NEW」「SELECT」をうまく使います。(バグっている気がします)あるいは普通に「言語と入力」から設定
これを使ってこのように切り分けします。
 

 

実際の使用例として
ボタンを押すと、日本語環境では日本語、それ以外では英語のテキスト表示をさせるアプリを作ってみます
 
MainActivity.java

 
activity_main.xml

 
言語を日本語と英語にそれぞれEmulatorを設定してボタンタップ

locale_2
locale_1

それぞれに対応した言語が表示されています。
 

strings.xml の設定

 
言語により設定しなくてもstrings.xmlを使って言語設定を取り込む方法があります。

アプリのタイトルやレイアウトファイルの文字設定をローカライズするのに役立ちます。
 
[res] フォルダ以下にある [values] を言語分けにします。
新たに values-ja フォルダと strings.xml ファイルを新たに作ります
[values]:英語(デフォルト)
[values-ja]:日本語
(Packagesにしないと見えないかもしれません)
 
スクリーンショット 2016-03-23 19.30.35
 
それぞれにある strings.xml をそれぞれ場合分けします
values/strings.xml

values-ja/string.xml

app_name をそれぞれ
「TestLocalization」と
「テストローカライズ」に
 
button を
「button」と
「ボタン」
に分けました
 
これを先ほどのコードに追加します。
呼び出し側のレイアウトファイルは
/res/layout/activity_main.xml

 
それぞれの言語設定の実機で実行させるとこうなりました。
 

locale_4b
locale_5

 
 
言語環境に応じてタイトルやレイアウトの文字表記が変わった事が分かります
 
 
 

 

Developer Console の設定

 
最終的にリリースでの設定が必要です
Google Play の Developer Console に入り
https://play.google.com/apps/publish
価格と販売/配布地域を「すべての国を選択」に設定します
 
ストアの掲載情報
英語を最初に設定し
翻訳の追加で日本語を設定します
「デフォルトの言語を変更」により
入れ替えもできます
 
localize_7
 
英語のタブで、アプリの説明を英語で記述
また、英語でのスクリーンショットを入れます
日本語では同様に日本語での説明
スクリーンショットは日本語のUIでの画像を追加
 
これで、全世界にアプリを公開できます
日本は日本語でそれ以外はデフォルトの英語での説明となります