0

我有两个项目:A 和 B。A 使用 B 功能,因此 B 作为 maven 依赖项添加到 A。在 BI 中有下一个 locale.xml 文件:

> <?xml version="1.0" encoding="UTF-8"?> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>        xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
>        http://www.springframework.org/schema/beans/spring-beans.xsd ">
> 
>     <!-- ******************** -->
>     <!-- Internationalization -->
>     <!-- ******************** -->
>     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
>         <property name="basenames">
>             <list>
>                 <value>/META-INF/i18n/messages</value>
>             </list>
>         </property>
>         <property name="defaultEncoding" value="UTF-8"/>
>         <property name="cacheSeconds" value="1"/>
>     </bean> </beans>

在 AI 中有文件夹 /META-INF/i18n/ 和我的道具文件,我使用这些文件,但我还需要使用项目 B 中的道具文件。主要问题:如何在项目 A 中使用来自 A 和 B 的道具文件最小的变化?

4

2 回答 2

1

在项目 A 的源列表中添加项目 B 的 /META-INF/

于 2014-08-04T08:15:45.890 回答
0

我看到两种可能的方法来解决您的问题。

我假设这两个项目都在你的控制之下。

选项 1. 在构建期间将属性文件从 B 的位置复制到 A 的位置。我相信使用 Maven 是可能的,当然使用 Gradle 非常容易......
我不太喜欢这个想法,但它应该可以工作。

选项 2. 创建项目 C 作为 A 和 B 之间的共享依赖项,它将为您的项目提供所需的 MessageSource Bean。这是比选项 1 更优雅的解决方案,但需要额外的依赖。

选项 3。您提到的问题表明您的设计有问题。实际上,您永远不需要读取依赖项的资源。依赖项应该为您提供适当翻译的消息(通常需要以这种或另一种方式传递语言环境)。如果您碰巧有许多公共消息,那么将它们移动到共享资源文件中并在构建时将它们复制到适当的位置是有意义的。但请确保这些消息真的很常见,即您没有在不同的上下文中使用相同的消息(例如,按钮和窗口标题中的相同文本将在多种语言中以不同的方式翻译)。
所以这个选项是,尝试分析设计是否正确并修复潜在问题。

于 2013-11-09T13:39:17.443 回答