2016-11-03 3 views
0

Я пытаюсь преобразовать теги локали (см. Рисунок) для отображения имен. Например, вместо en-us я хотел бы показать английский (США). До сих пор мне удалось получить смесь отображаемых имен и меток языка, как на картинке:java locale tags to locale displayname

device system languages screen picture

Я пробовал многие вещи, такие как использование forLanguageTag, getDisplayLanguage + getDisplayCountry, но ничего не работает.

Это мой фрагмент кода:

public void getAvailableLocales() { 
    systemLanguages = Resources.getSystem().getAssets().getLocales(); 
    Arrays.sort(systemLanguages); 
    for (int i = 0; i < systemLanguages.length; i++) { 
     String sL = systemLanguages[i]; 
     Locale loc = new Locale(sL); 
     String locDisplayResults = loc.getDisplayLanguage(); 
     languagesList.add(new Languages(locDisplayResults)); 
     recyclerAdapter.notifyDataSetChanged(); 
    } 
} 

Идея заключается в том, чтобы отобразить все доступные языки на данном устройстве. Любая помощь будет с благодарностью получена.

Редактировать: Тестирование показывает, что Resources.getSystem(). GetAssets(). GetLocales() делает действительно дает языки для каждого данного устройства. Однако getDisplayLanguage работает только для двух буквенных тегов, а не для двух букв-тире-двух букв (например, ar-eg). Есть еще идеи?

+0

Таким образом, ответ был: [. Вместо того, чтобы использовать новый Locale (СЛО), используйте Locale.forLanguageTag (СЛО)] (http://stackoverflow.com/questions/40427876/convert- da-dk-to-danish-denmark-etc). Он работал отлично. –

ответ

0

Попробуйте

Locale[] availableLocales = Locale.getAvailableLocales(); 

for(Locale locale : availableLocales){ 
    Log.d("Locale", locale.getDisplayName()); 
} 
+0

Спасибо, но это дает мне все поддерживаемые локали Java 8, а не мои системные локали. –

+0

Я думаю, что проблема с вашим вызовом getLocales() - его уровень API, который равен 24. Поэтому, возможно, ваше устройство имеет более низкий API. –

+0

В этом случае существует ли другой способ получения языков, доступных на моем устройстве? Потому что я хотел бы, чтобы мое приложение было доступно для большего количества пользователей, чем просто Nougat ... –

 Смежные вопросы

  • Нет связанных вопросов^_^