Velocity模板本地化

时间:2015-05-21 18:29:32

标签: java localization velocity

我正在处理一项使用Velocity从模板生成电子邮件的任务。我的一个要求是根据用户提交的Locale对电子邮件进行本地化。我大部分时间都在工作,使用Velocity的ResourceTool来引入MessageBundle。另一个要求是我只能有一个模板 - 我不希望每个语言或区域设置一个模板,因为如果需要更改,这很难维护。

作为MessageBundle的一部分,我可以拥有所谓的“复合消息”,这些消息包含在评估消息时被替换的变量。例如:

dear.name=Dear {0}:

我的问题是:如何让Velocity用我传入的名字替换{0}值?

简单地修改我的Velocity模板是不可接受的,这样我只需在模板级别替换名称 - 在某些语言中,问号词“Dear”会出现在名称后面,因此会产生错误的输出。

1 个答案:

答案 0 :(得分:0)

找到答案:在我的力度模板中,我可以使用Velocity指令:

#evaluate(${msg.dear.name})

在我的消息包中,我的消息如下:

dear.name=Dear $name

如果我在Velocity上下文中设置名称,它会像我期望的那样被替换。