Androidでプログラム的にアプリの言語を変更する 質問する

Androidでプログラム的にアプリの言語を変更する 質問する

Android リソースを使用しながら、プログラムでアプリの言語を変更することは可能ですか?

そうでない場合、特定の言語でリソースをリクエストすることは可能ですか?

ユーザーがアプリからアプリの言語を変更できるようにしたいと思います。

ベストアンサー1

可能です。ロケールを設定できます。ただし、お勧めしません。初期段階で試してみましたが、基本的にはシステムと戦うことになります。

言語を変更するという同じ要件がありますが、UI は電話の UI と同じであるべきだという結論に落ち着きました。ロケールの設定で動作していましたが、バグが多すぎました。また、私の経験では、アクティビティ (各アクティビティ) に入るたびに設定する必要があります。これがまだ必要な場合のコードです (繰り返しますが、お勧めしません)

Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(language_code.toLowerCase())); // API 17+ only.
// Use conf.locale = new Locale(...) if targeting lower versions
res.updateConfiguration(conf, dm);

言語固有のコンテンツがある場合は、設定に基づいて変更できます。


2020年3月26日更新

    public static void setLocale(Activity activity, String languageCode) {
        Locale locale = new Locale(languageCode);
        Locale.setDefault(locale);
        Resources resources = activity.getResources();
        Configuration config = resources.getConfiguration();
        config.setLocale(locale);
        resources.updateConfiguration(config, resources.getDisplayMetrics());
    }
  • 注意: 言語コードには「-」は使用できません。小文字 2 文字のみでなければなりません。

おすすめ記事