gpt4 book ai didi

java - spring中根据url不同的i18n

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:28 27 4
gpt4 key购买 nike

我有一个 Spring Web 应用程序,需要按以下方式工作

将从两个不同的 URL www.domain1.com 和 www.domain2.com 访问该应用程序

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

CSS 部分已完成,但我仍坚持 i18n 部分

如何让spring根据域名加载不同的i18n属性文件?

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

顺便说一句,我正在使用 ReloadableResourceBundleMessageSource 消息源

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

提前致谢并致以最诚挚的问候

最佳答案

我建议使用LocaleResolver。这是一个标准的 Spring 接口(interface),专门用于执行此类操作。

Interface for web-based locale resolution strategies that allows for both locale resolution via the request and locale modification via request and response.

This interface allows for implementations based on request, session, cookies, etc.

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

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

关于java - spring中根据url不同的i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com