1. ホーム
  2. android

[解決済み] Androidでプログラムによるアプリの言語変更

2022-03-18 12:47:11

質問

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

そうでない場合、特定の言語でのリソースを要求することは可能でしょうか?

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

どのように解決しますか?

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

言語を変更する要件は同じですが、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());
    }

  • 注意事項 言語コードに'-'や'amp'は使用できません、小文字2文字のみです。