[解決済み] 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文字のみです。
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
repo: コマンドが見つかりません
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] TextViewのリンクをクリック可能にする方法
-
[解決済み] APKファイルのリバースエンジニアリングを回避する方法
-
[解決済み] Android: リソースから名前を使って文字列を取得するには?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
Androidで発生した問題、解決策とヒント
-
ActivityはOnFragmentInteractionListenerを実装しなければならないに関する質問
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
android exception - aapt.exe has stopped working.
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
Android ProgressBarの色を変更する
-
アプリの実行エラー。ターゲットデバイスが見つからない問題
-
android studioが新しいプロジェクトを作成しますが、プロジェクトの同期に成功するまでデザインエディタが使用できません。