【Android Studio】アプリを翻訳・ローカライズする方法

この記事では「Android Studio でアプリを翻訳・ローカライズする方法」を紹介しています。
Android Studioには Translations Editor が用意されているので、strings.xml に定義した文字列を複数の言語に簡単に翻訳(ローカライズ)することができます。
ここではテキストを「英語・日本語・スペイン語」の3言語に翻訳してみます。
解説
1. strings.xml の用意
まずは、翻訳するテキストを strings.xml ファイルに定義します。
Android Studio 画面左側のプロジェクト構造から app → res → values フォルダ内にある strings.xml を開きます。

3行目のように <string name=”名前”>テキスト</string> を定義します。
<resources>
<string name="app_name">translate</string>
<string name="hello">Hello</string>
</resources>
TextView がある xml ファイル(activity_main.xml など)を開いて、4行目のように strings.xml からテキストを取得・表示します。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textSize="26sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
2. 翻訳ファイルの作成・追加
Android Studio 画面左側のプロジェクト構造で、先ほど開いた strings.xml の上で右クリックして「Open Translations Editor」を選択します。

日本語の追加
次に翻訳する言語を追加します。ここでは日本語とスペイン語の翻訳を追加してみます。
地球儀のようなマークを押して、日本語「Japanese (ja)」選択します。

プロジェクト構造を見ると、strings フォルダの中に strings.xml (ja) というファイルが作成されていると思います。

strings.xml (ja) に直接書くこともできますが、Translations Editor で書いた方が簡単なのでオススメです。
Hello の翻訳を Japanese(ja) の部分に入力します。

スペイン語の追加
スペイン語も同じ手順で追加していきます。
地球儀のようなマークを押して、スペイン語「Spanish (es)」選択します。

翻訳を入力します。

以上で翻訳の用意は完了です。
キーの追加
新しく string 要素を追加したい場合は Translations Editor から追加することができます。
+ボタンを押します。

Key(キー)と Default Value(デフォルト値)を入力して「OK」を押します。
<string name=”Key”>Default Value</string>

先程と同じように翻訳を追加してください。

テキストの翻訳が必要ない場合は「Untranslatable」にチェックを入れます。

キーの削除
削除する場合は–ボタンを押します。

Safe delete(安全に削除する)にチェックを入れて「OK」を押します。
コメントと文字列の中に削除するキーが含まれているかを検索する場合は「Search in comments and strings」にもチェックを入れてください。

3. 動作確認
翻訳したテキストがどのように表示されるかは、デザインエディタか Android Emulator で確認することができます。
方法① デザインエディタで確認する
activity_main.xml など、確認したい画面の xml ファイルを開きます。
画面の表示形式を「Split」または「Design」にします。

Default (en-us) を押すと、言語を切り替えることができます。

方法② Android Emulator で確認する
Android Emulator を起動して言語を追加します。
Settings(設定)を開いて Language を検索します。

Languages & input にある Languages を選択します。

「+ Add a language」から言語を追加します。

追加した言語の順番を入れ替えることで、アプリ内の言語も変更できます。
