1

속성을보다 쉽게 ​​수정하기 위해 classpath 외부의 i18n 지원을위한 Spring MessageSources 번들 (특성 파일)을 외부화해야한다. 어떻게해야합니까?WAR 외부에서 Spring MessageSources 번들을 외부화하는 방법

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basename" value="test-messages"/> 

고마워요!

+0

당신은 classpath 바깥이나 전쟁 바깥에 있니? –

+0

예 (WAR 제외). Thx –

답변

1

우리는 DB에서 메시지를 조회하는 메시지 소스 구현을 구축했습니다. Spring의 AbstractMessageSource로부터 상속받은 MessageSource 구현체를 작성해야한다 (모든 기능을 사용하려면 javadoc을 참조한다).

'resolveCode (String, Locale)'추상 메서드를 구현해야하지만 ('resolveCodeWithoutArguments (String, Locale)'을 구현하면 성능이 향상됩니다.) DAO는 해당 테이블을 가리키며 다음과 같은 정의 :

table translation (
    translation_id number pk 
    code varchar(20) 
    locale varchar(5) 
    translation varchar(100) 
) 

코드와 로켈은 고유 색인을 형성합니다.

이제 끝났습니다. 물론 일부 캐시 기능을 추가하고 dao 또는 MessageSource 수준에서 "로케일 저하"동작 (예 : "en_US"이 없으면 "en"시도)을 제공합니다.

완벽하게 작동합니다.

+0

예를 들어 주셔서 감사합니다. 제 문제를 해결하기위한 해결책을 찾았습니다. –

1

이 문제에 대한 정보는 thread을 확인하십시오.하지만 응용 프로그램을 배포 할 위치를 알 수 없으므로 tomcat 컨텍스트 외부에 파일을 두는 것이 좋지 않습니다.

하지만 필요한 경우에는 멋진 솔루션을 찾을 수 있습니다.