Tomcat과 Jeus5에서 로케일(Locale) 정보의 차이
- 작성자 :
- 강*원
- 작성일 :
- 2014-10-24 15:22:31
- 조회수 :
- 1,326
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
전자정부프레임워크 2.7로 개발을 진행하고 있습니다.
Locale을 사용자에 따라 변경하기 위해, 다음과 같은 설정으로 파라미터 lang에 따라 Locale 정보가 Cookie에 들어가도록 설정하고 개발을 진행 중입니다.
<mvc:interceptors>
<!-- Locale 변경 Interceptor. 파라미터 "lang"에 의해 변경 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 변경된 Locale을 Cookie에 담는 LocaleResolver 선언 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
이 상태에서 JSP에서 현재 Locale 정보에 따라 적절한 언어용 JSP를 include하는 구조로 진행하고 있습니다.
<c:choose>
<c:when test="${pageContext.response.locale.language eq 'ko' }"><jsp:include page="/thesis/thesis-list-ko.jsp" /></c:when>
<c:otherwise><jsp:include page="/thesis/thesis-list-en.jsp" /></c:otherwise>
</c:choose>
개발시 Tomcat 6, 7에서 진행을 할 때는 pageContext.response.locale.language 로 얻어지는 값이 위 Spring에 선언된 LocaleChangeInterceptor 에 의해 변경된 값이 얻어지는데, 운영 환경인 JEUS 5 에서는 계속 "en" 값이 얻어지고 있습니다.
즉, Tomcat 에서는 최초
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: en
에서, lang 파라미터로 ko를 주어 호출하면,
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: ko
로 파라미터로 변경한 값이 나오는데,
JEUS 5 에서는
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: en
로 반영이 되지를 않습니다.
무엇이 문제일까요?
Locale을 사용자에 따라 변경하기 위해, 다음과 같은 설정으로 파라미터 lang에 따라 Locale 정보가 Cookie에 들어가도록 설정하고 개발을 진행 중입니다.
<mvc:interceptors>
<!-- Locale 변경 Interceptor. 파라미터 "lang"에 의해 변경 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 변경된 Locale을 Cookie에 담는 LocaleResolver 선언 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
이 상태에서 JSP에서 현재 Locale 정보에 따라 적절한 언어용 JSP를 include하는 구조로 진행하고 있습니다.
<c:choose>
<c:when test="${pageContext.response.locale.language eq 'ko' }"><jsp:include page="/thesis/thesis-list-ko.jsp" /></c:when>
<c:otherwise><jsp:include page="/thesis/thesis-list-en.jsp" /></c:otherwise>
</c:choose>
개발시 Tomcat 6, 7에서 진행을 할 때는 pageContext.response.locale.language 로 얻어지는 값이 위 Spring에 선언된 LocaleChangeInterceptor 에 의해 변경된 값이 얻어지는데, 운영 환경인 JEUS 5 에서는 계속 "en" 값이 얻어지고 있습니다.
즉, Tomcat 에서는 최초
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: en
에서, lang 파라미터로 ko를 주어 호출하면,
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: ko
로 파라미터로 변경한 값이 나오는데,
JEUS 5 에서는
${pageContext.request.locale.language }: ko
${pageContext.response.locale.language }: en
로 반영이 되지를 않습니다.
무엇이 문제일까요?
A
안녕하세요
일반적으로 서버 설정이나 자바가 참조하는 시스템 프라퍼티 등을 찾아서 사용하게 되나,
특정 was에서 locale정보를 추출하는 방법이 다르게 있을수도 있기 때문에 그 부분은 제우스 쪽으로 문의하시는게 좋을 것 같습니다.
수고하세요.
일반적으로 서버 설정이나 자바가 참조하는 시스템 프라퍼티 등을 찾아서 사용하게 되나,
특정 was에서 locale정보를 추출하는 방법이 다르게 있을수도 있기 때문에 그 부분은 제우스 쪽으로 문의하시는게 좋을 것 같습니다.
수고하세요.