2011-10-05 106 views
0

我正在重新设计面向大型消费者的零售网站。想想像gap.comI18n - 每个语言环境或多个语言环境文件的多个模板

技术堆栈是Apache瓦片,Apache速度,Spring MVC。

问题:为了实现I18N的权利,我应该为每个语言环境创建多个速度模板还是将字符串外部化到属性文件中? 对于后一种方法,排序的速度模板会有太多混乱 - resourcebundle.getMessage(“website.title”,“en_US”),而在前面的例子中,我可能会有重复的逻辑坐在多个模板。

回答

1

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

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

请注意,如果直接调用ResourceBundle类的方法,某些方法可能会抛出MissingResourceException(这是运行时异常,使事情变得更糟)。你一定要检查它。

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