Со следующим кодом Java изменил язык моего приложения:
public class Utils {
private static Locale defaultLocale;
public static void setLocale(Context myContext, String languageToLoad) {
if (defaultLocale == null) defaultLocale = Locale.getDefault(); //backup default locale
if (languageToLoad.equals("default")) languageToLoad = defaultLocale.getLanguage();
Log.d("UsefulFunctions", "setLocale():" + languageToLoad);
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
myContext.getResources().updateConfiguration(config,
myContext.getResources().getDisplayMetrics());
}
}
Я хочу добавить функцию getDisplayLanguage
для того, чтобы он возвращает мне установленный язык, не Вашего идентификатора (es
, en
) а именно, если я определяю язык как: es
что возвратил под меня español
Чтобы получать доступные языки, которые есть в Android
Locale locales[] = Locale.getAvailableLocales();
Видеть таблицу how-do-i-display-all-available-locales.html (в)
Чтобы получать имя языка списка
locale[i].getDisplayLanguage()
Только мне нужно, как искать внутри array типа Locale
специфический язык, перемещая параметр тип Language
а именно es
Пример Результата:
Utils.setLoclae('es');
Utils.getDisplayLanguage('es') //devuelve Español
Попытайся как первая opciГіn:
Locale.getDefault().getDisplayLanguage();
tambiГ©n
Locale.getDefault().getDisplayName();
Он используется getDisplayLanguage()
:
Locale.getDefault().getDisplayLanguage();
getDisplayLanguage()
Возврати имя локального языка.
—————
Проверяя использование getDisplayName (), возможно считать как другой выбор, хотя он возвращает более специфические данные как это имя, имя страны, и вариант, как возможно видеть в примерах документации:
new Locale("en").getDisplayName(Locale.US)
он получает: English
new Locale("en", "US").getDisplayName(Locale.US)
он получает: English (United States)
new Locale("en", "US", "POSIX").getDisplayName(Locale.US)
он получает: English (United States,Computer)
Locale.fromLanguageTag("zh-Hant-CN").getDisplayName(Locale.US)
он получает: Chinese (Traditional Han,China)
new Locale("en").getDisplayName(Locale.FRANCE)
он получает: anglais
new Locale("en", "US").getDisplayName(Locale.FRANCE)
он получает: anglais (États-Unis)
new Locale("en", "US", "POSIX").getDisplayName(Locale.FRANCE)
он получает: anglais (États-Unis,informatique)
.
В этой статье, которую он имеет @Webserveis, мы можем видеть стоимость, полученную начиная с Locale с getDisplayLanguage()
и с getDisplayName()
: