Androidで多言語に対応する

多言語化したい文字列はソースやレイアウトに直接書かず、res/values/strings.xmlを使う。

strings.xmlを言語毎に用意してあげると、後は勝手に端末の言語にあった文字列を表示してくれる。

 

res/values/strings.xmlの中身はこんな感じ

<resources>
    <string name="testtext">Hello World</string>
</resources>

ソースから文字列を使う場合は、ContextクラスのgetStringメソッドを使う。

メソッドに渡すIDはRクラスに定義されている。

String text = getString(R.string.testtext);

res/layout/xxxx.xmlから文字列を使う場合は「@string/id名」な感じで使う。

android:text="@string/testtext"

言語毎のstrings.xmlは、言語毎のvaluesフォルダに格納する。

日本語用の場合、res/values-ja/strings.xmlとなる。

「ja」の部分はISO 639-1で定義されるコードを使えばいいみたい。

https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7


res/values-ja/strings.xmlの中身をこんな感じにすると、端末の言語設定が

日本語では「こんにちわ世界」、それ以外だと「Hello World」になる

<resources>
    <string name="testtext">こんにちわ世界</string>
</resources>