9

ユーザーの選択に基づいてアプリケーションのロケールを変更しています。デバイスのロケールに依存しません。

使用して

public void setDefaultLocale(Context context, String locale) {
        Locale appLoc = new Locale(locale);
        Locale.setDefault(appLoc);
        Configuration appConfig = new Configuration();
        appConfig.locale = appLoc;
        context.getResources().updateConfiguration(appConfig,
                context.getResources().getDisplayMetrics());
    }

しかし、デバイスのロケールも知りたいです。

これを取得しようとすると、アプリケーションに設定したロケールを常に取得します。

例: アプリケーションは英語で、デバイスは中国語です。私はいつも英語を学んでいます。

使用してロケールを取得するために、

オプション1。

String locale = context.getResources().getConfiguration().locale.getCountry();

オプション 2。

String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry();

どんな助けでも大歓迎です!!!

4

4 に答える 4

7

似たようなことを尋ねたところ、この回答が見つかりました。遅れて申し訳ありません:

システム ロケールを見つけるには、次を使用します。

defaultLocale = Resources.getSystem().getConfiguration().locale;

アプリ/アクティビティに設定されているデフォルトのロケールに関係なく、システム ロケールを取得します。

于 2013-10-14T21:00:25.193 に答える
6

これがさまざまなデバイスにどのように移植できるかはまったくわかりません。

try {
    Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"});
    String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine();
    exec.destroy();
    Log.e("", "Device locale: "+locale);
} catch (IOException e) {
    e.printStackTrace();
}

そして、国の部分が必要な場合: persist.sys.country

于 2013-01-18T11:23:50.637 に答える