弹簧本地敏感数据

时间:2010-11-25 23:24:50

标签: spring internationalization spring-mvc resourcebundle

我在使用适合远程用户浏览器语言设置的网络应用时遇到了一些问题。 我使用了ResourceBundleMessageSource。它看起来像这样:

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

我有两个.properties文件:

  • messages.properties

  • messages_ru.properties

它们位于src / resources / messages中。

我想以这样的方式配置我的应用程序,当远程用户浏览器语言设置包含俄语时,我的应用程序应使用俄语消息(messages_ru),否则(如果语言未配置或不是俄语),它应该使用meessages。属性(包含英文消息)。

当我在浏览器中设置俄语时,它运行正常。当我擦除所有设置时,它也显示俄语(我认为这取决于系统区域设置)。当我设置另一种语言时,它也会显示俄语消息。

让我的应用程序显示英文消息的唯一方法是将messages.properties重命名为messages_en.properties并在浏览器中设置英语lang。但是我希望我的应用程序适用于所有语言设置(当它使用俄语时,如果需要,并且英语用于任何其他设置和任何其他国家)。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您需要设置

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

在这种情况下,Spring将使用messages.properties作为后备,因此它应该包含应用程序的“默认”语言环境中的消息。