4

1 回または 2 回クリックするだけで、「公式」言語リスト (クイック設定 >設定 > 言語と入力 > 言語。

このリストをプログラムで取得するにはどうすればよいですか? これは、Locale.getAvailableLocales() から入手できるロケール リストですか? ロケールから言語にアクセスする必要がありますか? ありがとうございました!

ここに画像の説明を入力

編集 - これは私がこれまでに行ったことです:

  private List<Model> getModel() {
    Locale[] locales = Locale.getAvailableLocales();
    List<Model> list = new ArrayList<Model>();
    for (int i=0; i<locales.length; i++) {
        list.add(get(locales[i].getDisplayLanguage()));
    }
    return list;
  }

  private Model get(String s) {
    return new Model(s);
  }

私は今それらのオプションを探しています:

Locale.getDefault().getLanguage()        ---> en     
Locale.getDefault().getISO3Language()    ---> eng
Locale.getDefault().getCountry()         ---> US
Locale.getDefault().getISO3Country()     ---> USA
Locale.getDefault().toString()           ---> en_US
Locale.getDefault().getDisplayLanguage() ---> English
Locale.getDefault().getDisplayCountry()  ---> United States
Locale.getDefault().getDisplayName()     ---> English (United States)

ここから。

編集 2 - 中国語のオプションがある言語リストの最後を示す 2 つの画像。

ここに画像の説明を入力

これはシステムからのリストです。

ここに画像の説明を入力

このリストは、次のコードで作成されました。

Locale[] locales = Locale.getAvailableLocales();
List<Model> list = new ArrayList<Model>();
for (int i=0; i<locales.length; i++) {
    list.add(get(locales[i].getDisplayLanguage()+"|"+
            locales[i].toString()+"|"+
            locales[i].getDisplayName()
            ));
}
return list;

2 番目のリストから 1 番目のリストにアクセスする方法が必要で、おそらくシステムの隠しファイルにアクセスする必要がありますか?

EDIT 3 - 次のコードを追加すると、中国語、ポルトガル語、スペイン語の特殊文字 (UTF-8) が問題なく表示されます。

list.add(get("Português (Brasil)"));
list.add(get("English (US)"));
list.add(get("中国(简体)"));
list.add(get("Español (Venezuela)"));

ここから実際にシステム言語を変更するにはどうすればよいですか (以下のようなインテント/アクティビティを開かずに?

Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(intent);
4

2 に答える 2