2014-07-01 1 views
0

스프링 MVC을 컨트롤러 프레임 워크로 사용하여 앱 국제화를 구현하기 위해 언어 변경을 감지하기 위해 org.springframework.web.servlet.i18n.LocaleChangeInterceptor을 사용하고 특정 언어가 설정되지 않은 경우 시스템의 기본 언어가 사용자 클라이언트의 로케일로 설정되기를 바랍니다. 이제 기본 로케일 설정 중 낯선 문제가 발생했습니다. 저는 중국 출신이었습니다. 로캘은 기본적으로 zh_CN입니다. 우리 시스템이 Windows 서버에 배포 될 때 정확한 로케일 (zh_CN)을 HttpServletResponse에서 얻을 수 있지만 시스템이 배치되었을 때 우분투 리눅스 서버, 나는 항상 en_US 로케일을 HttpServletResponse에서 얻습니다. 나는 그저 혼란 스럽다. HttpServletResponse's 로케일은 웹 브라우저와 같은 클라이언트에서 나오고, 2 개의 요청은 같은 로케일에서 왔지만 HttpServletResponse에는 2 개의 다른 로케일로 나타난다.HttpServletResponse의 내 로케일이 항상 en_US 인 이유는 무엇입니까?

감사합니다. 혹시이 문제가 발생하여 결국이 문제를 해결 한 사람이 있는지 궁금합니다.

+0

1. 시도는'이 ko 페이지의 경우, 시스템 구성을 확인 당신이 원하는대로로 변경하여 우분투 서버에 locale', 여기에 참조로 연결되는 링크는 다음과 같습니다 http://askubuntu.com/questions/ 89976/변경 방법 - 기본 로케일 - 우분투 - 10-10 - 서버 – Jaiwo99

+0

감사합니다 !!! @ Jaiwo99 특정 언어로 설정하고 싶지 않다. HttpServletResponse의 기본 로케일이 클라이언트에서 제공되고 Linux 구성에서 가져 오지 않기를 바란다. 너는 어떤 생각을 가지고 있니? –

+0

그런 다음 @taringamberini가 말했듯이,'CookieLocaleResolver'를 사용하십시오. – Jaiwo99

답변

0

CookieLocaleResolver도 사용하셨습니까?

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="locale" /> 
</bean> 
<mvc:interceptors>  
    <ref bean="localeChangeInterceptor"/> 
</mvc:interceptors> 
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
    <property name="defaultLocale"> 
     <bean class="java.util.Locale"> 
      <constructor-arg value="zh" /> 
      <constructor-arg value="CN" /> 
     </bean> 
    </property> 
</bean> 

UPDATE

이 페이지는 선언합니까?

<meta http-equiv="Content-language" content="zh-CN" /> 
+0

감사합니다. 귀하의 구성과 동일한 구성이었습니다. –

+0

다시 한번 감사드립니다 !! @ taringamberini 난 그냥 HttpServletResponse의 기본 로케일은 클라이언트에서 제공하고, 다른 어떤 구성에서는 나오지 않기를 바란다. 지금은 JavaScript로 명시 적으로 언어를 설정하려고 시도하고 있습니다. –

+0

@BradyChu [CookieLocaleResolver.java 소스 코드] (http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-webmvc/1.2.3/org/springframework/web /servlet/i18n/CookieLocaleResolver.java) 요청에서 로케일이 감지되었음을 알 수 있습니다. 따라서 브라우저에서 시작하여 웹 응용 프로그램 서버에서 끝낼 올바른 로케일을 적용해야합니다. – taringamberini

관련 문제