2011-11-30 5 views
5

Java I18n 기능이 뛰어납니다. 완벽한 지원 locales 작품 :지원되지 않는 Java I18n 로캘

Locale ar = new Locale("ar","SA"); 
System.out.println(ar.getDisplayName(ar)); 

출력 :

그러나 Kazakh 언어와 같은 지원되지 로케일에 대한 العربية (السعودية)는, 언어 이름이 같은 LANG에 표시됩니다 자바 사양에 Enlish (표준) 출력, 작성하므로.

Locale locale = new Locale("kk","KZ"); 
System.out.println(kk.getDisplayLanguage(kk)); 

출력 : Kazakh (Kazakhstan)

내가이 문제를 해결하기 위해 노력하고있어가, 마지막 코드는 다음과 같은 출력이 있습니다 Қазақша (Қазақстан).

누구나 해결책을 알고 있습니까?

모든 추측 (또는 Java SE 개발자와 연락 할 수있는 방법, 또는 알고리즘을 알고있는 사람에) 내가 답변으로주의 할 것이다)

감사합니다!

답변

1

Windows에서 실행한다고 가정하면 OS 국가 별 설정에서 로캘을 변경해야합니다. this 링크를 참조하십시오. (2000 년 카자흐스탄 승리로 7 위는 목록에 나오지 않는다.). 리눅스에서는 localedef utility으로 로케일을 설정할 수 있습니다.

행운을 빌어 요!

+0

결코 늦지 않는 것이 좋습니다 ^^ – erko

2

가장 확실한 해결책은 언어와 국가 속성의 값에 따라 로캘을 외부화하고이를 ListResourceBundle 인스턴스에 집어 넣는 것입니다. 이 작업이 많은 것 같으면 ... 체크 아웃 할 가치가있는 다른 솔루션은 ICU입니다.
로케일 표시 이름을 직접 제공하지는 않지만 로캘을 기반으로하는 ULocale 객체를 만들 수 있습니다. 번역 될 수 있습니다.
ICU 트릭이 작동하지 않으면 CLDR 언어 목록을 통해 직접 번역해야합니다. BTW. 세르비아어는 정확히 같은 문제가있었습니다. JDK7 용으로 고쳐 졌는지 확실하지 않습니다 ...

관련 문제