Androidアプリケーションのローカライズ(多言語対応)

2020年7月16日

東京周辺マップのオリンピックエディションを公開しましたが、ver 0.10の初期バージョンは日本語のみの表示です。でも、せっかくなので外国の方でも利用できるプリケーションにしたいです。

さて、地図の元になる国土地理院の「国土基本情報20万」地図ですが、残念ながら英語名称がありません。そのため、地名などの英語化は断念せざるを得ません。

しかし、駅名や空港名などのウェイポイントに関しては、独自のデータを使用するため英語化が可能です。今回の東京オリンピックの競技場に関しても同様です。それでは、東京周辺マップを例に、ローカライズ(多言語対応)の手順を紹介します。

1.プログラム内のコードによる処理

プログラム内で、言語ごとに処理を振り分ける方法です。今回は日本語と英語にだけ対応します。

// 宣言部
private boolean isJapanese = true ;

// コンストラクタなどで定義

Locale locale = Locale.getDefault();
if (locale.equals(Locale.JAPAN)) {
    // 日本語環境
    isJapanese = true ;
} else {
   // その他の言語環境
   isJapanese = false ;
}

Androidの「設定」メニューで選ばれている言語を取得します。例では、日本語かどうかの2択です。isJapanese変数を判断して、日本語で表示するか英語で表示するかを決めます。

isJapanese変数を利用した東京周辺マップの競技場表示は以下のようになります。

日本語

英語

2.リソースで定義する

プログラムで言語ごとに処理を書きこむと、ソースがごちゃごちゃして美しくありません。そこでAndroidでは、リソースを言語ごとに用意できる仕組みがあります。

リソースのフォルダに「values」フォルダがあり、その中に「string.xml」がありますが、これはデフォルトの定義です。そこで、「values-ja」フォルダを新たに作り、そこに日本語用の「string.xml」を用意します。

「values」フォルダの「string.xml」は、英語用の定義となります。これにより、プログラム内で言語を意識せずに処理できます。

東京周辺マップの「設定」画面の表示は以下のようになります。

日本語

英語

3.日本以外も対象にすれば、数十倍の利用者が見込めます

世界の人口を考えれば、日本だけを対象にしたアプリケーションは、使用してもらえる機会を大きく損失しています。それぞれの言語に合わせる必要もありますが、英語対応するだけでも何倍、何十倍のユーザーを獲得できるのではないでしょうか。

ぜひローカライズに挑戦してみましょう。