根据网址,春天不同的i18n

时间:2010-05-17 10:37:47

标签: java spring-mvc spring

我有一个弹簧网络应用程序需要按照以下方式工作

将从两个不同的网址www.domain1.com和www.domain2.com

访问该应用程序

并且要求两个URL看起来像两个不同的应用程序,具有不同的CSS和I18n。

对于css部分已经完成但我仍然坚持使用i18n部分

如何根据域名使弹簧加载不同的i18n属性文件?

我想到的解决方案是实现一个检查请求URL的过滤器,并根据URL清除消息源bean并加载所需的i18n文件,但它对性能不太好看

顺便说一下我使用的是ReloadableResourceBundleMessageSource消息源

另一种解决方案是实现两个不同的消息源。 这个解决方案的问题是从源代码我可以管理我使用的bean但是如何告诉fmt:message标签使用哪个数据源?

提前致谢并提出最好的问候

1 个答案:

答案 0 :(得分:1)

我建议使用LocaleResolver。这是一个标准的Spring接口,可以完成这类工作。

  

基于Web的区域设置的界面   允许的解决策略   通过请求进行区域设置解析   和请求修改区域设置   和回应。

     

此界面允许   基于请求的实现,   会话,饼干等。

LocaleResolver的预定义实现并不能满足您的需求,但编写自己的实现却微不足道。您的实现将被要求确定每个请求的区域设置,然后Spring的i18n代码使用此信息,包括ReloadableResourceBundleMessageSource。您只需在上下文中声明您的LocaleResolver bean,它就会被自动拾取。

然后,您的资源包将使用标准的java语言环境机制来解析当前语言环境的正确消息。