W Configuration.java
istnieje:
/**
* ...
* @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);
Więc w zasadzie za pomocą locale
zasadzie powraca Locale podstawowym zestawów użytkowników. Odpowiedź akceptacji działa dokładnie tak samo, jak bezpośrednio po przeczytaniu locale
.
Jednak to ustawienie regionalne niekoniecznie jest używane podczas pobierania zasobów. Może to być lokalny język użytkownika, jeśli podstawowe ustawienia regionalne nie są dostępne.
Oto bardziej poprawna wersja:
Resources resources = context.getResources();
Locale locale = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
? resources.getConfiguration().getLocales()
.getFirstMatch(resources.getAssets().getLocales())
: resources.getConfiguration().locale;
ta zwróci jedynie locale określone w ustawieniach systemowych. Wiele aplikacji ma własną funkcję selektora języka. W takim przypadku preferowana jest odpowiedź z @Egor. –
Jeśli ręcznie wybierzesz ustawienia regionalne, powinieneś zadzwonić do Locale.setDefault() –
Jest to bardzo ważne, ponieważ w przeciwnym razie biblioteki Java nie będą poprawnie pobierać poprawnych ustawień regionalnych. –