如何强制spring为每个用户使用相同的i18n Locale

时间:2013-05-27 17:02:25

标签: java spring-mvc internationalization

我正在开发一个将在不同国家/地区使用的Java Spring应用程序。在每个国家,它必须“说”国家的语言(而不是用户的国家)。 说话我的意思是jsp pages(),javax.validation消息等的消息。 现在,我为每个国家/地区提供了不同的属性文件。例如,ApplicationResources_ES.properties,ApplicationResources_EN.properties,ValidationMessages_ES.properties,ValidationMessages_EN.properties等。

无论用户的语言是什么,我都无法强迫spring只使用ES或EN语言。 我已尝试使用fixedLocaleResolver,但没有成功的结果:

<bean id="fixedLocaleResolver" class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
    <property name="defaultLocale" value="es" />
</bean>

任何人都可以帮助我?

更新 这是我想要解决的更具体的问题。 我为每种语言都有一个ValidationMessages.properties,以便在应用程序安装的语言中显示javax.validation的结果。问题是语言正在改变,具体取决于用户的语言环境,而不是应用程序语言环境。我怎么能让javax.validation使用ValidationMessages.properties之一,而不是根据用户的情况改变它?

3 个答案:

答案 0 :(得分:1)

您的bean必须具有名称localeResolver,以便DispatcherServlet能够加载localeResolver。因此,请更改id,如下所示:

<bean id="localeResolver" c...

答案 1 :(得分:0)

我找到了一个解决方案,但我并不喜欢它。 如果我在使用以下属性启动tomcat时更改了用户的默认国家/地区和语言:

-Duser.language=pt -Duser.country=PT

然后,javax.validation的验证消息以葡萄牙语显示。我应该为每个安装更改此属性。但是,我不认为这是一个干净的解决方案。任何人都有其他人吗?

答案 2 :(得分:-1)