As per official documentation ConfigurationCompat is deprecated in support libraries
You can consider using
LocaleListCompat.getDefault()[0].toLanguageTag()
0th position will be user preferred locale
To get Default locale at 0th position would be
LocaleListCompat.getAdjustedDefault()
From getDefault
's documentation:
Returns the user's preferred locale. This may have been overridden for this process with setDefault(Locale).
Also from the Locale
docs:
The default locale is appropriate for tasks that involve presenting data to the user.
Seems like you should just use it.
Android N (Api level 24) update (no warnings):
Locale getCurrentLocale(Context context){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
return context.getResources().getConfiguration().getLocales().get(0);
} else{
//noinspection deprecation
return context.getResources().getConfiguration().locale;
}
}
All answers above - do not work. So I will put here a function that works on 4 and 9 android
private String getCurrentLanguage(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
return LocaleList.getDefault().get(0).getLanguage();
} else{
return Locale.getDefault().getLanguage();
}
}
I´ve used this:
String currentLanguage = Locale.getDefault().getDisplayLanguage();
if (currentLanguage.toLowerCase().contains("en")) {
//do something
}
If you are using the Android Support Library you can use ConfigurationCompat
instead of @Makalele's method to get rid of deprecation warnings:
Locale current = ConfigurationCompat.getLocales(getResources().getConfiguration()).get(0);
or in Kotlin:
val currentLocale = ConfigurationCompat.getLocales(resources.configuration)[0]
Source: Stackoverflow.com