Pobierz bieżący język w urządzeniu
Jak możemy wybrać bieżący język w urządzeniu z Androidem?
20 answers
Jeśli chcesz uzyskać wybrany język urządzenia, może Ci to pomóc:
Locale.getDefault().getDisplayLanguage();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-23 17:14:59
Sprawdziłem metody Locale na moim urządzeniu z Androidem 4.1.2 i wyniki:
Locale.getDefault().getLanguage() ---> en
Locale.getDefault().getISO3Language() ---> eng
Locale.getDefault().getCountry() ---> US
Locale.getDefault().getISO3Country() ---> USA
Locale.getDefault().getDisplayCountry() ---> United States
Locale.getDefault().getDisplayName() ---> English (United States)
Locale.getDefault().toString() ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-30 09:38:38
To, co dla mnie zadziałało, to:
Resources.getSystem().getConfiguration().locale;
Zasób.getSystem () zwraca globalny obiekt współdzielonych zasobów, który zapewnia dostęp tylko do zasobów systemowych (bez zasobów aplikacji) i nie jest skonfigurowany dla bieżącego ekranu (nie może używać jednostek wymiarów, nie zmienia się w zależności od orientacji, itd.).
Ponieważ getConfiguration.locale
została już przestarzała, preferowanym sposobem uzyskania podstawowych ustawień regionalnych w Androidzie Nougat jest:
Resources.getSystem().getConfiguration().getLocales().get(0);
Aby zagwarantować kompatybilność z poprzednimi wersjami Androida możliwe rozwiązanie byłoby proste sprawdzenie:
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
locale = Resources.getSystem().getConfiguration().locale;
}
Update
Począwszy od biblioteki wsparcia 26.1.0
nie musisz sprawdzać wersji Androida, ponieważ oferuje wygodną metodę zgodną wstecz getLocales()
.
Po Prostu zadzwoń:
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 17:35:39
Możesz' wyodrębnić ' język z bieżących ustawień regionalnych. Ustawienia regionalne można wyodrębnić za pomocą standardowego interfejsu API Java lub za pomocą kontekstu systemu Android. Na przykład dwie poniższe linie są równoważne:
String locale = context.getResources().getConfiguration().locale.getDisplayName();
String locale = java.util.Locale.getDefault().getDisplayName();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 07:51:32
Aby zaoszczędzić innym czas i / lub zamieszanie chciałem podzielić się, że wypróbowałem dwie alternatywy zaproponowane przez Johana Pelgrima powyżej i na moim urządzeniu są równoważne - niezależnie od tego, czy domyślna lokalizacja zostanie zmieniona.
Więc domyślnym ustawieniem mojego urządzenia jest angielski (United Kindom) i w tym stanie zgodnie z oczekiwaniami oba ciągi w odpowiedzi Johana dają ten sam wynik. Jeśli zmienię ustawienia regionalne w ustawieniach telefonu (powiedzmy italiano (Italia)) i ponownie uruchomię wtedy oba ciągi w odpowiedzi podaj lokalizację jako italiano (Italia).
Dlatego uważam oryginalny post Johana za poprawny, a komentarz gregma za niepoprawny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-20 06:36:54
Jak opisano w locale reference najlepszym sposobem na uzyskanie języka jest:
Locale.getDefault().getLanguage()
Ta metoda zwraca ciąg znaków z identyfikatorem języka zgodnie z ISO 639-1 standart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 07:41:22
Możesz użyć tego
boolean isLang = Locale.getDefault().getLanguage().equals("xx");
Gdy " xx "jest dowolnym kodem języka, takim jak "en", "fr", "sp", "ar".... i tak dalej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-15 16:24:33
Aby dodać do odpowiedź Johana Pelgrima
context.getResources().getConfiguration().locale
Locale.getDefault()
Są równoważne, ponieważ android.text.format.DateFormat
Klasa używa obu zamiennie, np.
private static String zeroPad(int inValue, int inMinDigits) {
return String.format(Locale.getDefault(), "%0" + inMinDigits + "d", inValue);
}
I
public static boolean is24HourFormat(Context context) {
String value = Settings.System.getString(context.getContentResolver(),
Settings.System.TIME_12_24);
if (value == null) {
Locale locale = context.getResources().getConfiguration().locale;
// ... snip the rest ...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:20
Możesz spróbować pobrać ustawienia regionalne z zasobów systemowych:
PackageManager packageManager = context.getPackageManager();
Resources resources = packageManager.getResourcesForApplication("android");
String language = resources.getConfiguration().locale.getLanguage();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 11:24:45
Istnieją dwa języki.
Domyślny język systemu operacyjnego:
Locale.getDefault().getDisplayLanguage();
Aktualny język zastosowania:
getResources().getConfiguration().locale.getDisplayLanguage();//return string
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-18 17:15:38
Możesz użyć tego kodu, aby dowiedzieć się, jaki jest prąd klawiatury
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String locale = ims.getLocale();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-11 05:38:35
Odpowiedzi powyżej nie odróżniają prostego chińskiego od tradycyjnego chińskiego.
Locale.getDefault().toString()
działa, które zwraca "zh_CN", "zh_TW", "en_US" itd.
Odniesienia do: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 jest stary.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 14:32:17
Jeśli wybierzesz język nie możesz wpisać ten Grecki może być pomocny.
getDisplayLanguage().toString() = English
getLanguage().toString() = en
getISO3Language().toString() = eng
getDisplayLanguage()) = English
getLanguage() = en
getISO3Language() = eng
Teraz spróbuj z greckim
getDisplayLanguage().toString() = Ελληνικά
getLanguage().toString() = el
getISO3Language().toString() = ell
getDisplayLanguage()) = Ελληνικά
getLanguage() = el
getISO3Language() = ell
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 14:33:34
if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
// your code here
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 14:34:24
Prawidłowy sposób uzyskania języka urządzenia jest następujący:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return context.getResources().getConfiguration().getLocales().get(0);
} else {
return context.getResources().getConfiguration().locale;
}
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 16:09:50
Jeśli poziom API jest 24 lub wyższy, użyj LocaleList.getDefault().get(0).getLanguage()
else use Locale.getDefault.getLanguage()
private fun getSystemLocale(): String {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return LocaleList.getDefault()[0].language
} else {
return Locale.getDefault().language
}
}
Odniesienie: https://developer.android.com/guide/topics/resources/multilingual-support
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-25 10:48:02
Moje rozwiązanie jest takie
@SuppressWarnings("deprecation")
public String getCurrentLocale2() {
return Resources.getSystem().getConfiguration().locale.getLanguage();
}
@TargetApi(Build.VERSION_CODES.N)
public Locale getCurrentLocale() {
getResources();
return Resources.getSystem().getConfiguration().getLocales().get(0);
}
A następnie
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Log.e("Locale", getCurrentLocale().getLanguage());
} else {
Log.e("Locale", getCurrentLocale2().toString());
}
Pokazane - - - > Pl
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 05:06:55
Locale.getDefault().getDisplayLanguage()
Da ci Written
nazwę dla języka, na przykład English, Dutch, French
Locale.getDefault().getLanguage()
Da ci language code
, na przykład: en, nl, fr
Obie metody zwracają łańcuch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-10 10:18:13
Oto kod do pobrania kraju urządzenia. Kompatybilny ze wszystkimi wersjami Androida nawet oreo.
Rozwiązanie: jeśli użytkownik nie ma karty SIM niż get country, jest on używany podczas konfiguracji telefonu lub bieżącego wyboru języka.
public static String getDeviceCountry(Context context) {
String deviceCountryCode = null;
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if(tm != null) {
deviceCountryCode = tm.getNetworkCountryIso();
}
if (deviceCountryCode != null && deviceCountryCode.length() <=3) {
deviceCountryCode = deviceCountryCode.toUpperCase();
}
else {
deviceCountryCode = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0).getCountry().toUpperCase();
}
// Log.d("countryCode"," : " + deviceCountryCode );
return deviceCountryCode;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-24 10:45:26
Jeśli chcesz wykonać konkretne zadanie dla użytkowników mieszkających w Indiach, którzy mówią w Hindi, użyj poniższego warunku if
if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
//Block executed only for the users resides in India who speaks Hindi
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 07:09:24