Я не знаю, есть ли простой способ конвертировать трехбуквенные версии в двухбуквенные, но в худшем случае вы можете создать карту из них, например, так:
String[] languages = Locale.getISOLanguages();
Map<String, Locale> localeMap = new HashMap<String, Locale>(languages.length);
for (String language : languages) {
Locale locale = new Locale(language);
localeMap.put(locale.getISO3Language(), locale);
}
Теперь вы можете искать локали, используя такие вещи, как localeMap.get("eng")
;
Редактировать: Изменен способ создания карты. Теперь должен быть один объект на язык.
Редактировать 2: Прошло некоторое время, но код был изменен, чтобы использовать фактическую длину массива языков при инициализации карты.