当文本不在.properties文件中但在jsp页面本身时,如何处理I18n

时间:2016-01-19 14:21:26

标签: spring-mvc internationalization

我正在使用Spring MVC构建一个多语言应用程序。

到目前为止,我使用Spring类ReloadableResourceBundleMessageSource和.properties文件处理了多语言系统。由于文本很短,所以很容易。

现在,我必须翻译页面的主体,我不能依赖.properties文件。

我有一个意大利语版本的页面和英文版的页面。我怀疑的是:我应该怎么处理它?<​​/ p>

我认为在@Controller返回页面名称后,例如“index”,我应该有一个检查应用程序Locale的过滤器,然后将页面名称添加到后缀中。因此,过滤器必须将“index”转换为“it / index”“en / index”

这是解决问题的好方法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个有一个缺点的建议:我没有用.jsp测试它,但是.vm。这个想法可能仍然有效。

为了不打破i18n机制,在每个language.property文件中添加一个消息密钥,说parseContent。现在,为每个区域设置创建一个视图并为其命名,例如parse_en_US.vmparse_de_DE.vm等等。这些文件只能包含您不希望在language.property文件中使用的内容。

messages_en_US.porperties中的条目示例可能是parseContent = parse_en_US.vm

现在使用#springMessage('parseContent')来获取正确的视图名称,具体取决于当前的区域设置。您将此视图解析为子视图并解决了问题。

对于.vm,它看起来像这样:

#set($view = "#springMessage('parseContent')")
#parse($view)

相同数量的.vm文件,但不需要发明新的。