web-dev-qa-db-ja.com

デバイスの言語設定(ロケール)を変更する

ロケールに応じて、res/stringを介して単一のアプリケーションで複数の言語を使用できることを知っています。これがケースです (Android)ユーザー言語を制御する

電話で言語を変更するにはどうすればよいですか?メニュー>設定>言語とキーボード>ロケールの選択>言語で行うのと同じように

これらの設定にアクセスするための実際のコードはありますか?または、言語設定へのショートカットのインテントを作成する必要があります。コードを投稿してください

編集:ロケールクラスdeveloper.Android.com/intl/fr/reference/Java/util/Locale.html

コンストラクタは少なくともLocale(String language)です。入力は言語です。デバイスで現在使用されている言語を取得するにはどうすればよいですか?

18
Raymond Chenon

アプリから直接設定するかどうかはわかりませんが、ユーザーに変更を依頼して自分で変更したい場合は、次を試してください。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.Android.settings", "com.Android.settings.LanguageSettings");            
startActivity(intent);
43
Jim Blackler

システム設定を開いて言語を変更する別の方法があります。

Intent i = new Intent( Android.provider.Settings.ACTION_LOCALE_SETTINGS );
startActivity( i );

言語のリストだけが表示され、選択すると、デバイスの言語が変更されます。

12
Sergey

私自身の質問に対する別の答えを見つけました。オープンソースコードプロジェクトがあります code.google.com/p/languagepickerwidget 言語を表示および選択するためにListActivityを再作成しています。

ジム、あなたのソリューションは非常にシンプルで、まさに私が必要としていたものです。設定へのショートカットです。あなたが公開した直後に、私は「raygional」と呼ばれるアプリを市場にアップロードしました。できれば(6ポイントしかありません)、あなたの答えを役立てます。

プロセスと意図を確認する別の方法があります。エミュレータで、[メニュー]> [開発ツール]> [開発設定]に移動し、[実行中のプロセスを表示]をクリックします

6
Raymond Chenon

私の知る限り、インテント(他のソリューションが提案するもの)を使用せずにデバイスのロケールを変更する唯一の方法は、リフレクションを介して内部クラスにアクセスすることです(これにはリスクがあります)。

このユースケースの正確な例は、次の場所にあります。 http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-Android.html

3
Edu Zamora

意図を次のように変更した場合にジムの答えをさらに詳しく説明します。

intent.setClassName("com.Android.settings", "com.Android.settings.LocalePicker"); 

言語選択リストでユーザーを直接ドロップオフし、言語が選択されるとアプリケーションに戻ります。

クリックを削除し、3つのオプション(言語、辞書、キーボード)のどれを選択するかをユーザーに考えさせず、選択後すぐにアプリに戻ります。

1
caller9