我必须将Spring MessageSources包外部化为类路径外的i18n支持(属性文件),以便更容易地修改属性。我怎么能这样做?
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="test-messages"/>
谢谢!
答案 0 :(得分:2)
我们构建了一个消息源实现,用于在数据库中查找消息。你要做的是创建一个继承自spring的AbstractMessageSource的MessageSource实现(为了获得所有功能,请参阅javadoc)。
你必须在最小的情况下实现抽象方法'resolveCode(String,Locale)'(但实现'resolveCodeWithoutArguments(String,Locale)'将增加你的表现),它委托给指向那个简单表的DAO,这样的定义:
table translation (
translation_id number pk
code varchar(20)
locale varchar(5)
translation varchar(100)
)
代码和语言环境形成唯一索引。
你已经完成了。当然,您将添加一些缓存功能,并提供“区域设置降级”行为(即,如果找不到“en_US”,请尝试“en”),无论是在dao-或MessageSource级别。
这完美无缺。
答案 1 :(得分:1)
检查此thread以获取有关此问题的信息,但我认为将文件置于tomcat上下文之外并不是一个好习惯,因为您永远不知道它将在何处部署您的应用程序。
但是如果你需要,你会在那里找到一些非常好的解决方案。