Spring i18n本地化来自多个属性文件

时间:2013-11-05 13:34:56

标签: java spring maven internationalization

我有两个项目:A和B.使用B功能,因此B作为maven依赖项添加到A.在B中我有下一个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 /我的prop文件,我使用这个文件但我也需要使用项目B中的prop文件。主要问题:我如何使用来自A的两个道具文件项目A中的B和B的变化最小?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我认为这两个项目都在你的掌控之中。

选项1.在构建期间将属性文件从B的位置复制到A的位置。我相信Maven是可能的,Gradle肯定是超级容易的。
我不太喜欢这个想法,但它应该有用。

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

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

相关问题