アンドロイドアプリは日本だけでなく全世界に簡単に配信できます。ただ全世界の言語には対応するのはまた別の話として、ここではせめて英語と日本語の区別ができるようにしてみたいと思います。英語以外の言語も同様にできます。
2021.2.1
Locale
日本国内、日本語を使っているユーザーにはアプリの説明、タイトル名を日本語にします。それ以外は、英語ですね。
フランス人、ドイツ人、中国人にそれぞれ分けられる語学能力があれば、個別に分けてください。
例としてデフォルトで英語表示、日本では日本語を表示させる設定を考えてみます。
Locale ID
Locale IDを使って日本語とそれ以外の環境分けができます
1 2 3 4 5 6 7 8 |
Locale locale = Locale.getDefault(); if (locale.equals(Locale.JAPAN)) { // 日本語環境 String text = "こんにちは"; } else { // その他の言語環境 String text = "Hello"; } |
この Locale.JAPAN は ja_JP を指しています。
デフォルトで英語表示、日本では日本語を表示させるにはこれを使います。
英語で分ける場合は Local.ENGLISH となります。
1 2 3 4 5 6 7 8 9 |
Locale locale = Locale.getDefault(); String lang = locale.getLanguage(); if (lang.equals("ja")) { // 日本語環境 String text = "こんにちは"; } else { // その他の言語環境、通常英語が選択される String text = "Hello"; } |
実際の使用例として
ボタンを押すと、日本語環境では日本語、それ以外では英語のテキスト表示をさせるアプリを作ってみます
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package your.package.name; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.Locale; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.textView); Button button = findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View v) { if(v.getId() == R.id.button){ String str = ""; Locale locale = Locale.getDefault(); if (locale.equals(Locale.JAPAN)) { str = "ボタンが押されました。"; } else { str = "Tapped the button."; } /* Locale locale = Locale.getDefault(); String lang = locale.getLanguage(); if (lang.equals("ja")) { // 日本語環境 str = "こんにちは"; } else { // その他の言語環境、通常英語が選択される str = "Hello"; } */ textView.setText(str); } } } |
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:textSize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/button" /> </LinearLayout> |
strings.xml
1 2 3 4 |
<resources> <string name="app_name">YourAppName</string> <string name="button">button</string> </resources> |
端末の言語変更:
「設定」「システム」「言語と入力」「言語」から変更します。
Englishしか選択されていない場合は「+ 言語を追加」から
リストを探すか、検索で「j」で日本語にたどり着きます。
その後、右のバーアイコンをつかんで一番上に持ってくると日本語優先になります。
日本語と英語にそれぞれEmulatorを設定してボタンタップ
それぞれに対応した言語が表示されています。
strings.xml の設定
言語によりコードで条件分けしなくてもstrings.xmlを使って言語設定を取り込む方法があります。
アプリのタイトルやレイアウトファイルの文字設定をローカライズするのに役立ちます。
[res] フォルダ以下にある [values] を言語分けにします。
新たに values-ja フォルダと strings.xml ファイルを新たに作ります
[values]:英語(デフォルト)
[values-ja]:日本語
(Project Source Files, Packagesにしないと見えないかもしれません)
それぞれにある strings.xml をそれぞれ場合分けします
values/strings.xml
1 2 3 4 5 |
<resources> <string name="app_name">TestLocalization</string> <string name="button">Button</string> <string name="text">text view</string> </resources> |
values-ja/strings.xml
1 2 3 4 5 |
<resources> <string name="app_name">テストローカライズ</string> <string name="button">ボタン</string> <string name="text">text view</string> </resources> |
app_name をそれぞれ
「TestLocalization」と
「テストローカライズ」に
button を
「button」と
「ボタン」
に分けました
これを先ほどのコードに追加します。
呼び出し側のレイアウトファイルは
/res/layout/activity_main.xml
1 2 3 4 5 6 |
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="@string/button" /> |
それぞれの言語設定の実機で実行させるとこうなりました。
言語環境に応じてタイトルやレイアウトの文字表記が変わった事が分かります
Developer Console の設定
(以下情報は古いものですが、考え方は同じです)
最終的にリリースでの設定が必要です
Google Play の Developer Console に入り
価格と販売/配布地域を「すべての国を選択」に設定します
ストアの掲載情報で
英語を最初に設定し
翻訳の追加で日本語を設定します
「デフォルトの言語を変更」により
入れ替えもできます
日本語追加:
「翻訳を管理」「独自の翻訳を追加」から言語一覧で日本語を選択します。
そうすると「言語(2)」が現れて、英語、日本語での切り替えができるようになります。
英語のタブで、アプリの説明を英語で記述
また、英語でのスクリーンショットを入れます
日本語では同様に日本語での説明
スクリーンショットは日本語のUIでの画像を追加
これで、全世界にアプリを公開できます
日本は日本語でそれ以外はデフォルトの英語での説明となります