Androidアプリを作成する際に言語のローカライズ対応をしているのでしょうか?

strings.xmlを使って言語のローカライズ対応をしておけば1つのコードで英語と日本語(もちろん設定をすればその他の言語も)に対応する事ができます。

市場のターゲットを日本だけでいいやと思っていても、ローカライズの対応をしておけば意外と知らないところで海外でダウンロードされる可能性もあるので、やっておいて損はない対応だと思います。

また、言語の切り替えはAndroidの言語設定に依存して自動で切り替わるため一度対応してしまえば後は何もする必要がありません。

ではその方法について書いて行きます。

1.ローカライズ用にstrings.xmlを用意する

1.1.英語用と日本語用のstrings.xmlファイルを用意する

AndroidStudioでプロジェクトを新規作成した場合には、res/valuesにstrings.xmlが存在しています。
日本語のローカライズ対応をする場合には、res/values-jpというフォルダを作成してstrings.xmlをコピーしてください。
ファインダーorエクスプローラで見ると以下です。
すると、AndroidStudioのプロジェクトエクスプローラで以下のように表示されるようになります。

1.2.strings.xmlの中身を編集する

英語用と日本語用のstrings.xmlのnameタグは同じものを用意して内容を英語と日本語で記載します。
・strings.xml

<resources>
    <string name="app_name">PasswordMemo</string>
    <string name="login">login</string>
    <string name="biometrics">biometrics</string>
    <string name="input_password">Enter password</string>
    <string name="new_password">Create a new password</string>
</resources>

・strings.xml(ja)

<resources>
    <string name="app_name">パスワードメモ</string>
    <string name="login">ログイン</string>
    <string name="biometrics">生体認証</string>
    <string name="input_password">パスワードを入力して下さい</string>
</resources>

2.layoutファイルでstrings.xmlを利用する

画面レイアウトを定義するlayoutフォルダ配下のxml配下でstrings.xmlを利用する場合には、
android:textのタグに
android:text="@string/タグ名称"
で記載します。具体的には以下のようです。

<Button
	android:id="@+id/loginButton"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_centerVertical="true"
	android:layout_centerHorizontal="true"
	android:layout_marginTop="16dp"
	android:background="@layout/original_button"
	android:textColor="@color/blue"
	android:text="@string/login" />

3.ソースコード上でstrings.xmlを利用する

操作によって表示する内容を変化させたい場合などに、ソースコード上に画面に表示する内容を実装する事があると思いますが、その場合には、以下のようにR.stringを指定して取得します。

    protected void onStart() {
        super.onStart();
        loginDataManager.updateSetting();
        checkBiometricSetting();
        if (loginDataManager.isMasterPasswordCreated()) {
            naviText.setText(R.string.input_password);
        } else {
            naviText.setText(R.string.new_password);
        }
    }

実装は以上で終わりです。Androidの言語設定を英語⇔日本語を切り替えると以下のように表示が切り替わります。
言語設定:英語
言語設定:日本語
 
最後に、言語のローカライズに対応した以下2つのアプリを紹介します。

IDとパスワード管理アプリ「パスワードメモ」

パスコードロック画面付きでデータベースも暗号化されて安全にアカウント情報を管理できます。

シンプル操作でやることの管理ができる「記録が残るToDoリスト」

Todoを登録したり、完了した日時を自動で記録して履歴として表示することができる便利な機能が特徴です。