アプリの多言語化 | Multilingualize applications | Android

スポンサーリンク
スポンサーリンク

リソースによる分岐

各国対応の現在時刻の表示の記事端末の使用言語を取得の記事で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...