リソースによる分岐
各国対応の現在時刻の表示の記事や端末の使用言語を取得の記事でJAVAを用いて端末の言語環境を取得し、if文で分岐する方法を記載しました。
今回はJAVAを用いず、strings.xmlで多言語化をする方法です。
表示する文字についてのみであればこちらで対応しましょう。
方法はとても簡単で、各言語用のXMLファイルを用意します。
ファイル名はいずれもstrings.xmlでフォルダによって切り分けます。
AndroidStudioでは次のように表示されます。
実際の構造は
となります。
valuesにデフォルトのstrings.xml
valuesに日本語用のstrings.xmlが入ります。
この場合は日本語の端末の場合のみstrings.xmlが適用されます。
実装するリソース
以下のリソースで確認しましょう。
values > strings.xml <resources> <string name="data_a">Tokyo Station</string> <string name="data_b">Yokohama Station</string> <string name="id" translatable="false">79426</string> </resources> values-ja > strings.xml <resources> <string name="data_a">東京駅</string> <string name="data_b">横浜駅</string> </resources>
data_a、data_bについては端末によって自動的に切り替わるようになりますが、idについては切り替わりません。translatable=”false”と設定することで、日本語環境では翻訳されずにデフォルトの値のままとなります。
ですから、日本語にするべき部分のみのstrings.xmlをvalues-jaフォルダに保存し、共有する部分はデフォルトにtranslatable=”false”と追記します。
他の言語の分岐
言語 | フォルダ名 |
---|---|
中国語 | values-zh |
フランス語 | values-fr |
イタリア語 | values-it |
韓国語 | values-ko |
その他の言語についてはこちらの記事で確認できます。
対応言語 - Play Console ヘルプ
また、こちらも参考にしてください。
端末の使用言語を取得 | Get used language of smartphone | Android
言語を取得 Android端末の使用言語を取得するにはLocal.getLanguageを用います。 public class MainActivity extends AppCompatActivity { Locale locale; String language; @Override protected voi...