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 文字のみでなければなりません。