【Android Kotlin】strings.xmlを用いて、Androidアプリを多言語化してみる

# はじめに
こんにちは、どぎーです。
皆さんはstrings.xmlを活用していますか？
今回は、strings.xmlを用いて簡単にアプリを多言語対応させるTipsを紹介します。

# 開発環境
- AndroidStudio 4.0.1

# 手順
今回は、お手元のアプリを日本語と英語に対応させてゆきます。

##日本語用のstrings.xmlを用意する。
まずはProjectツールウィンドウの表示を、AndroidビューからProjectビューに変更しましょう。
その後、resフォルダに`values-jaフォルダ`を追加しましょう。
このフォルダで、日本語表記で使用するデータを管理します。
![スクリーンショット 2020-12-23 0.41.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/c2a7ff0f-599f-72ea-26f3-b1239d666797.png)
![スクリーンショット 2020-12-23 0.41.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/221c51de-bd47-7601-0999-34fb8f919004.png)

続いて、values-jaフォルダに`strings.xml`を追加しましょう。
![スクリーンショット 2020-12-23 0.42.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/1f542735-7a09-3450-8fdf-aa3af1fc2d38.png)
![スクリーンショット 2020-12-23 0.42.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/ddb13f22-8628-b8f7-8bb6-e85c396ef76f.png)

strings.xmlが作成できたら、それをダブルクリックして編集できるようにしておきましょう。

ここでProjectツールウィンドウの表示をProjectビューからAndroidビューに変更してみましょう。
すると以下に示すように、各strings.xmlはstringsフォルダ内に表示されます。
先ほどvalues-jaフォルダに追加したstrings.xmlの右側には`(ja)`と表示されています。
![スクリーンショット 2020-12-23 0.53.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/3f4ab680-0f3a-f8a3-2666-c896692f477a.png)


## アプリで表示する文字列を各strings.xmlに記述する。
それでは早速、アプリで表示する文字列を用意してゆきましょう。
まずは英語の文字列を用意してゆきます。

```xml:res/values/strings.xml
<resources>
    <string name="app_name">My Application</string>
    <string name="text">Merry Christmas!</string>
</resources>
```

次に日本語の文字列を用意してゆきます。
このとき、`name`の値は英語版のstrings.xmlと同じにしましょう。

```xml:res/values-ja/strings.xml
<resources>
    <string name="app_name">strings.xmlで多言語化</string>
    <string name="text">メリクリ三年柿八年</string>
</resources>
```

これにて文字列の準備は完了です。

## 記述した文字列を使用する。
今回は以下のように、TextViewのtext`を@string/text`に設定します。
![スクリーンショット 2020-12-23 1.15.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/b52b56b0-7ca1-6ca2-4aba-4464c73b83e7.png)
これにて文字列の設定は完了です。


## アプリを起動して確認してみる。
最後に、アプリがちゃんと多言語対応しているか確認してゆきましょう。

まずは、AVD（エミュレーター）の言語を日本語に設定しましょう。
お使いのAVDのSettingsアプリを起動して、`System > Languages & input > Languages`を開き、以下に示すように、`日本語（日本）`を一番上に設定します。
これでAVDが日本語表記になりました。
![スクリーンショット 2020-12-23 1.24.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/fabf399e-0539-04b0-7eb9-ae1aa77b6fd2.png)

それではアプリを起動してみましょう。
以下の画像のように日本語表記の文字列が表示されましたか？
![スクリーンショット 2020-12-23 1.27.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/271af55f-a7a8-563b-8d5d-7f8090b47f55.png)

今度は`English（United States）`を一番上に設定します。
これでAVDが英語表記となります。
![スクリーンショット 2020-12-23 1.26.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/a1e838d5-641c-649f-0e18-49c4f6a56721.png)

それではアプリを起動してみましょう。
以下の画像のように英語表記の文字列が表示されましたか？
![スクリーンショット 2020-12-23 1.26.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/b07bcdc9-b923-d3a6-3229-881ff8cafd30.png)
これでアプリの多言語化は完了です！
お疲れ様でした。

# 仕組み
Android OSには、使用したい言語で記述したstrings.xmlを所定のフォルダに入れることで、OSの言語設定に従って自動的に言語を切り替える仕組みが用意されています。
その所定のフォルダは、日本語では`values-ja`となっています。
また一般的には、`values-言語コード`です。
使用したい言語の言語コードを調べて、ぜひ他にも実装してみてください。

最後に一言、メリクリ三年柿八年。そして良いお年を！

# 参考文献
- [各種の言語および文化をサポートする](https://developer.android.com/training/basics/supporting-devices/languages?hl=ja#kotlin)
- [Androidアプリを多言語化する](https://qiita.com/takeauk/items/ce0e34257cdc6af03f5b)