我正在使用Spring MVC构建一个多语言应用程序。
到目前为止,我使用Spring类ReloadableResourceBundleMessageSource
和.properties文件处理了多语言系统。由于文本很短,所以很容易。
现在,我必须翻译页面的主体,我不能依赖.properties文件。
我有一个意大利语版本的页面和英文版的页面。我怀疑的是:我应该怎么处理它?</ p>
我认为在@Controller
返回页面名称后,例如“index”,我应该有一个检查应用程序Locale
的过滤器,然后将页面名称添加到后缀中。因此,过滤器必须将“index”转换为“it / index”或“en / index”。
这是解决问题的好方法吗?
谢谢。
答案 0 :(得分:1)
这是一个有一个缺点的建议:我没有用.jsp测试它,但是.vm。这个想法可能仍然有效。
为了不打破i18n机制,在每个language.property文件中添加一个消息密钥,说parseContent
。现在,为每个区域设置创建一个视图并为其命名,例如parse_en_US.vm
,parse_de_DE.vm
等等。这些文件只能包含您不希望在language.property文件中使用的内容。
messages_en_US.porperties
中的条目示例可能是parseContent = parse_en_US.vm
现在使用#springMessage('parseContent')
来获取正确的视图名称,具体取决于当前的区域设置。您将此视图解析为子视图并解决了问题。
对于.vm,它看起来像这样:
#set($view = "#springMessage('parseContent')")
#parse($view)
相同数量的.vm文件,但不需要发明新的。