java - language - locale iso code




ISO 639-2(3 글자) 언어 코드를 Java 로케일로 변환하는 우아한 방법이 있습니까? (2)

3 글자를 2 글자 버전으로 변환하는 쉬운 방법이 있는지 모르겠지만 더 나쁜 경우에는 다음과 같이지도를 만들 수 있습니다.

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 : 그것은 오래되었지만 맵을 초기화 할 때 언어 배열의 실제 길이를 사용하도록 코드를 변경했습니다.

예 : eng, spa, ita, ger

모든 로케일을 반복하고 코드를 비교할 수는 있지만,이를 달성하는 데보다 우아하고 효과적인 방법이 있는지 궁금합니다.

모든 힌트를 주셔서 감사합니다 :)


language가 2 문자 ISO-639-1 코드 인 생성자 Locale(String language) 사용할 수 있습니다. ISO-639-2를 ISO-639-1로 변환하는 가장 쉬운 방법은 HashMap<String,String> 상수를 만드는 것입니다.





locale