がある:
/**
* ...
* @deprecated Do not set or read this directly. Use {@link #getLocales()} and
* {@link #setLocales(LocaleList)}. If only the primary locale is needed,
* <code>getLocales().get(0)</code> is now the preferred accessor.
*/
@Deprecated public Locale locale;
...
configOut.mLocaleList = LocaleList.forLanguageTags(localesStr);
configOut.locale = configOut.mLocaleList.get(0);
だから、基本的にlocale
を使用することは基本的にプライマリロケールユーザセットを返します。受諾応答は、直接locale
と同じです。
ただし、このロケールは必ずしもリソースを取得するときに使用されるものではありません。プライマリロケールが使用できない場合は、ユーザーのセカンダリロケールである可能性があります。これが唯一のシステム設定で指定されたロケールを返します
Resources resources = context.getResources();
Locale locale = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
? resources.getConfiguration().getLocales()
.getFirstMatch(resources.getAssets().getLocales())
: resources.getConfiguration().locale;
:
はここで、より正しいバージョンです。多くのアプリは独自の言語セレクタ機能を備えています。そうであれば、@Egorからの回答が優先されます。 –
ロケールを手動で選択した場合は、Locale.setDefault()を呼び出す必要があります。 –
これは非常に重要です。そうしないと、Javaライブラリが正しいロケールを正しく取得できなくなるからです。 –