2010-11-25 5 views
3

원격 웹 브라우저 설정 언어 설정에 맞게 웹 응용 프로그램을 만들 때 몇 가지 문제가 있습니다. ResourceBundleMessageSource를 사용했습니다.스프링 로컬 감지 데이터

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

그리고 두 .properties의 파일이 있습니다 : 그것은 다음과 같습니다 그들은 SRC에있는

  • messages.properties

  • messages_ru.properties

을/resources/messages.

원격 사용자 브라우저 언어 설정에 러시아어가 포함되어 있으면 내 앱에서 러시아어 메시지 (messages_ru)를 사용해야하며 그렇지 않으면 언어가 구성되지 않았거나 러시아어가 아닌 경우 meessages를 사용해야합니다. .properties (영어 메시지 포함).

브라우저에서 러시아어를 설치하면 올바르게 작동합니다. 모든 설정을 지울 때 러시아어도 표시됩니다 (시스템 로캘 설정에 따라 다름). 그리고 다른 언어를 설정하면 러시아어 메시지도 표시됩니다.

내 앱에서 영어 메시지를 표시하도록하는 유일한 방법은 messages.properties의 이름을 messages_en.properties로 바꾸고 브라우저에서 설정하는 것입니다. 그러나 나는 모든 언어 설정 (러시아어를 사용할 때, 필요하다면 영어를 사용하고, 다른 모든 설정과 다른 나라에서는 영어로 사용)을 위해 앱을 채택하고자합니다.

아이디어가 있으십니까?

답변

5

당신은 대체로 messages.properties를 사용합니다이 경우 봄에

<bean id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="resources/messages" /> 
    <property name="fallbackToSystemLocale" value="false" /> 
</bean> 

을 설정해야합니다, 그래서 응용 프로그램의 "기본"로케일로 메시지를 포함해야합니다.

+0

ResourceBundleMessageSource에는 fallbackToSystemLocale 속성이 없습니다. 또한이 속성을 포함하는 ReloadableResourceBundleMessageSource를 사용하려고했습니다. 그러나 사양은 다음과 같이 말합니다 : "시스템 Locale은 java.util.ResourceBundle의 기본 동작이지만 시스템 Locale이 응용 프로그램과 전혀 관련이없는 응용 프로그램 서버 환경에서는 바람직하지 않습니다. 그런 시나리오에서 "거짓"으로 플래그하십시오. ". – Ilnur

+0

그리고 내 시도도 결과를 얻지 못한다. 이제 브라우저를 러시아어로 구성하면 러시아어 메시지가 표시되고, 그렇지 않으면 오류 메시지가 표시됩니다 (즉, 언어 이름) (예 : messages_de) 파일이 존재하지 않습니다. – Ilnur

+0

@llnur : 업데이트되었습니다. – axtavt

관련 문제