2013-11-15 1 views
0

현지화 된 메시지를 처리 ​​할 때 ReloadableResourceBundleMessageSource을 사용합니다. 영어 버전 (기본값)은 sci-xxx.properties이고 독일어 버전은 sci-xxx_de.properties입니다.ReloadableResourceBundleMessageSource : 메시지 파일 순서가 중요합니까?

메시지가 영어 버전으로 해석되었는지 확인하는 junit 테스트가 있습니다. 로컬에서는 항상 잘 작동합니다. 독일어 버전이로드, 비록

resourceBundleMessageSource.getMessage(code, params, resolveLocale()); 

전화

에 통화 중 resolveLocale()로 돌아갑니다 "EN"- 트릭은 CI (젠킨스)에 실패합니다.

차이점은 resourceBundleMessageSource.toString() 출력입니다. 로컬에서는 알파 정렬 된 파일 목록을 보여줍니다. CI에 혼합하고, 내 테스트 메시지를 포함하는 commons_de 파일은 기본 파일 전에 제공 :

basenames=[messages/sci-commons_de,messages/sci-commons,messages/sci-user,messages/sci-user_de] 

그래서 내가 user_de하는 commons_de에서 내 독일어 메시지를 이동, 그는 말에로드됩니다. 추측 - 이제 테스트는 녹색입니다.

그리고 정말 혼란 스럽습니다. 파일 순서가 정말 중요한가요? 올바른 주문을하려면 어떻게해야합니까? 아니면 내가 sth을 놓치고 있습니까?

나는 CI 서버가 독일어 로켈을 가지고 있지만, 내 resolveLocale()으로 덮어 써야합니다. 맞습니까?

답변

0

_de에서 _de_DE로 파일의 이름을 바꾸고 resolveLocale()의 Locale enums de_DE 및 en_US를 사용했을 때 문제가 사라졌습니다.