2014-06-10 2 views
5

로케일로 철자를 바꿈으로써 숫자를 지역화하고 ICU4J를 사용하여 끝내고 싶습니다. 많은 로케일에서 성공했지만 그루지야 어, 터키어 또는 아랍어와 같이 몇 군데는 성공하지 못했습니다.icu4j로 서식 번호 (맞춤법 검사)

ULocale locale = new ULocale("Tr"); //Turkish 
Double d = Double.parseDouble(input); 
NumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT); 
String result = formatter.format(d); 

formatter 오브젝트로 내부의 룰 세트를 디버깅 할 때 오브젝트가 비어있는 것처럼 보이고 영어로 출력됩니다 (기본적으로 추측 하듯이).

ICU 웹 사이트에서 쓰여진 내용은 다음과 같습니다. ICU는 여러 로케일에 대해 숫자 철자 규칙을 제공하지만 ICU가 지원하는 모든 로캘과 사전 정의 된 규칙 유형 모두에 대해서는 제공하지 않습니다. 또한 2.6 릴리스부터 제공된 규칙 중 일부는 불완전한 것으로 알려져 있습니다.

그러나 그 나는 또한 내 .m2에서 .RES에게 icu5j-53.1.jar 파일을 찾을 수 있습니다도 (http://demo.icu-project.org/icu4jweb/numero.jsp)

로케일에 대한 ICU의 자신의 데모 페이지를 할 수있는 것 폴더 (\ ICU4J - 53.1 \ COM \ IBM \ ICU \ IMPL \ 데이터 \ icudt53b \ rbnf)

는 데모 페이지에 그것을 할 관리 할 수있는 방법에 대한 도움을 주셔서 감사하고 왜 난 못해?

+0

로컬로 코드와 icu4j의 동일한 버전을 사용해 보았습니다. 올바른 터키어 출력을 얻었습니다. –

+0

또한 3.4.4 버전을 사용해 보았습니다. 그런 다음 출력물은 영어로되어 있습니다. 귀하의 (전이성) 의존성을 확인하고 어떻게 든 이전 버전을 사용하지 않는 것을 확인할 수 있습니까? –

+0

답변 해 주셔서 감사합니다. 당신 말이 맞았습니다. 의존성 트리를 확인했고 다른 라이브러리는 이전 버전 (4.0)에 의존합니다. 그것을 고쳐서, 나는 터키어 출력을 받기 시작했다. –

답변

3

코드를 53.1로 테스트했으며 올바른 터키어 출력을 얻었습니다. 그런 다음 3.4.4 버전으로 다시 테스트하고 질문에 설명 된대로 영어로 출력됩니다.

대체로 전이적인 maven 종속성을 통해 이전 버전을 사용하고있는 것 같습니다.

+1

버전 56.1은 "Tr", Maven 의존성을 포함하여 대부분의 로케일을 지원합니다. ' com.ibm.icu ICU4J 56.1 ' – realPK