【问题标题】:Struts 1.2.9 - Questions around custom internationalizationStruts 1.2.9 - 关于自定义国际化的问题
【发布时间】:2016-01-16 22:59:23
【问题描述】:

我们有一个使用 Struts 1.2.9 的旧应用程序。该应用程序目前以标准方式国际化 - 所有 UI 标签、错误、消息等的 .properties 文件; <message-resouces> 使用默认 FactoryMessageResources 定义为 struts-config.xml 中的每个 .properties 文件定义; <bean:message> 在所有 JSP 中的使用。到目前为止,这一直很有效,但事实上,应用程序本身是一个框架,供数百个(是的,100 个!)内部其他应用程序使用的服务。

我们需要扩展 i18n 的功能如下:

  1. .properties 文件定义一个自定义目录——这样就超出了类路径的范围;基本上不在.war 包内。这个想法是只支持消息字符串更改,而无需重新部署整个应用程序。
  2. 此自定义目录还将包含每个受支持的应用程序消息 - 这可能只是现有的子集或专门为该应用程序定制的整个资源集。
  3. 支持每个请求的自定义方式 Locale 设置 - 排除所有其他考虑因素(默认堆栈、类路径/包查找等),这类似于 I18nInterceptor 在带有 requestOnlyParameterName 属性集的 Struts2 中的工作方式到true

是的,我知道同时加载 100 个捆绑包会占用大量内存,但在我们的情况下这是可以接受的。

感谢任何帮助 - 无论是方向、示例代码等。

注意:我完全同意迁移到更新的 UI 平台可能是最好的解决方案。但我们不能。

TIA。

【问题讨论】:

  • 看起来实现自己的 MessageResources 和 MessageResourcesFactory 是要走的路。想法?

标签: java internationalization customization struts-1


【解决方案1】:

我在一个 spring 项目中也有类似的需求,不仅针对 i18n,还针对 Web 服务端点和其他类型的属性。

我们通过将放置属性文件的目录添加到服务器启动配置文件的类路径中来满足该要求。

在 weblogic 11g(预生产和生产)和 tomcat 服务器(开发环境)中测试和工作。

希望有帮助

【讨论】:

  • 感谢您的建议弗朗西斯科。如果我没记错的话,当您定义 时,您定义了包名称以从中选择属性文件。如果我有一个包含许多子目录的根目录,每个子目录都可能包含多个捆绑包,我认为仅此类路径设置不会起作用。您需要一种机制,对于每个请求,应该从根目录下该应用程序的相应目录中选择区域设置和正确的属性包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多