enterprise 템플릿 사용시 다국어 기능 적용
- 작성자 :
- 박*우
- 작성일 :
- 2016-03-02 13:46:53
- 조회수 :
- 1,464
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
전자정부 표준 프레임워크의 가이드를 따라 작성을 하고 있습니다.
현재 템플릿 소스에서 변경한 내용은 다음과 같습니다.
context-common.xml
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:/egovframework/message/com/message-common</value>
<value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value>
<value>classpath:/egovframework/rte/fdl/property/messages/properties</value>
</list>
</property>
<property name="cacheSeconds">
<value>60</value>
</property>
</bean>
egov-com-servlet.xml
<!-- 세션을 이용한 Locale 이용시-->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language"/>
</bean>
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
해당 설정 적용후 properies
message-common_ko.properties
message-common_en.properties 에 내용 작성
.jsp 페이지에서
<spring:message code="view.writer" /> 로 화면에 표현
현재 작성된 내용이나 ko로 설정된 내용이 default로 뿌려지고 parameter의 language=en 으로 변경하더라도
영문은 표시되지 않고 그대로 ko의 내용이 보입니다.
혹시 다른 작업이 필요한지요?
현재 템플릿 소스에서 변경한 내용은 다음과 같습니다.
context-common.xml
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:/egovframework/message/com/message-common</value>
<value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value>
<value>classpath:/egovframework/rte/fdl/property/messages/properties</value>
</list>
</property>
<property name="cacheSeconds">
<value>60</value>
</property>
</bean>
egov-com-servlet.xml
<!-- 세션을 이용한 Locale 이용시-->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language"/>
</bean>
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
해당 설정 적용후 properies
message-common_ko.properties
message-common_en.properties 에 내용 작성
.jsp 페이지에서
<spring:message code="view.writer" /> 로 화면에 표현
현재 작성된 내용이나 ko로 설정된 내용이 default로 뿌려지고 parameter의 language=en 으로 변경하더라도
영문은 표시되지 않고 그대로 ko의 내용이 보입니다.
혹시 다른 작업이 필요한지요?
A
박종우님, 안녕하세요.
엔터프라이즈 템플릿의 egov-com-servlet.xml의 하단에 mvc:annotation driven이 설정되어 있습니다.
해당 설정을 주석처리 하시고, egov-com-servlet.xml에 다음 설정을 추가해 주시기 바랍니다.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.com.cmm.web.EgovBindingInitializer"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
DefaultAnnotationHandlerMapping클래스는 스프링 3.0까지 사용 가능하며, 이후에는 Deprecated처리 되어있습니다. 이 클래스는 RequestMappingHandlerMapping 클래스로 대체되었습니다. 아래 부분은 삭제해 주시기 바랍니다.
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
mvc:annotation driven을 사용하실 경우는 mvc:interceptor 엘리먼트를 이용하여 명시적으로 인터셉터를 선언해 주시면 됩니다.
아래에 관련 위키를 첨부해드리니, 참고하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:handlermapping
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:spring_mvc_tag_configuration
감사합니다.
엔터프라이즈 템플릿의 egov-com-servlet.xml의 하단에 mvc:annotation driven이 설정되어 있습니다.
해당 설정을 주석처리 하시고, egov-com-servlet.xml에 다음 설정을 추가해 주시기 바랍니다.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.com.cmm.web.EgovBindingInitializer"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
DefaultAnnotationHandlerMapping클래스는 스프링 3.0까지 사용 가능하며, 이후에는 Deprecated처리 되어있습니다. 이 클래스는 RequestMappingHandlerMapping 클래스로 대체되었습니다. 아래 부분은 삭제해 주시기 바랍니다.
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
mvc:annotation driven을 사용하실 경우는 mvc:interceptor 엘리먼트를 이용하여 명시적으로 인터셉터를 선언해 주시면 됩니다.
아래에 관련 위키를 첨부해드리니, 참고하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:handlermapping
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:spring_mvc_tag_configuration
감사합니다.