Я пытаюсь преобразовать теги локали (см. Рисунок) для отображения имен. Например, вместо 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). Есть еще идеи?
Таким образом, ответ был: [. Вместо того, чтобы использовать новый Locale (СЛО), используйте Locale.forLanguageTag (СЛО)] (http://stackoverflow.com/questions/40427876/convert- da-dk-to-danish-denmark-etc). Он работал отлично. –