【问题标题】:I18n - multiple templates per locale or multiple locale filesI18n - 每个区域设置多个模板或多个区域设置文件
【发布时间】:2011-10-05 06:17:28
【问题描述】:
我正在重新设计一个面向消费者的大型零售网站。想想 gap.com 之类的东西
技术栈是 Apache tile、Apache velocity、Spring MVC。
问题:要正确实施 I18N,我应该为每个语言环境创建多个速度模板还是将字符串外部化到属性文件中?
使用后一种方法,排序的速度模板中会有很多混乱 - resourcebundle.getMessage("website.title", "en_US") 而在前面的情况下,我可能会在多个模板中重复逻辑.
【问题讨论】:
标签:
spring-mvc
internationalization
velocity
tiles2
【解决方案1】:
您不应该使用多个模板(每种语言一个)。那会适得其反。
此外,您需要定义某种包装器来翻译文本。您不想直接使用 Locale 或 Locale Identifiers(“en_US”),而是需要为会话设置 Locale 并使用此对象(可能是隐式的,因此您无需在每次调用 @987654322 时都传递它@,因此是包装器)。
请注意,如果您直接调用 ResourceBundle 类的方法,其中一些可能会抛出 MissingResourceException(这是运行时异常,使事情变得更糟)。你一定要检查一下。
顺便说一句。 Velocity 为本地化目的定义了some tool。有趣的是,我从未见过有人真正使用它(但老实说,我对 Velocity 的体验非常有限)。