I18n - 每个语言环境的多个模板或多个语言环境文件

时间:2011-10-05 06:17:29

标签: spring-mvc internationalization velocity tiles2

我正在重新设计面向零售网站的大型消费者。想想像gap.com这样的东西

技术堆栈是Apache tiles,Apache velocity,Spring MVC。

问题:要正确实现I18N,我应该为每个语言环境创建多个速度模板还是将字符串外部化为属性文件? 使用后一种方法,在sort-resourcebundle.getMessage(" website.title"," en_US")的速度模板中会有很多混乱,而在早期的情况下,我可能在多个模板中都有重复的逻辑。

1 个答案:

答案 0 :(得分:1)

你不应该做多个模板(每种语言一个)。这会适得其反。

此外,您需要定义某种用于翻译文本的包装器。您不希望直接使用区域设置或区域设置标识符(“en_US”),而是需要为会话设置区域设置并使用此对象(可能是隐式的,因此每次调用时都不需要传递它{{ 1}},因此包装)。

请注意,如果直接调用getMessage() class'方法,可能会抛出ResourceBundle(这是运行时异常使事情变得更糟)。你必须确保检查它。

顺便说一句。 Velocity定义some tool用于本地化目的。有趣的是,我从未见过任何人实际使用它(但说实话,我对Velocity的体验非常有限)。