我正在处理一项使用Velocity从模板生成电子邮件的任务。我的一个要求是根据用户提交的Locale
对电子邮件进行本地化。我大部分时间都在工作,使用Velocity的ResourceTool
来引入MessageBundle
。另一个要求是我只能有一个模板 - 我不希望每个语言或区域设置一个模板,因为如果需要更改,这很难维护。
作为MessageBundle
的一部分,我可以拥有所谓的“复合消息”,这些消息包含在评估消息时被替换的变量。例如:
dear.name=Dear {0}:
我的问题是:如何让Velocity用我传入的名字替换{0}
值?
简单地修改我的Velocity模板是不可接受的,这样我只需在模板级别替换名称 - 在某些语言中,问号词“Dear”会出现在名称后面,因此会产生错误的输出。
答案 0 :(得分:0)
找到答案:在我的力度模板中,我可以使用Velocity指令:
#evaluate(${msg.dear.name})
在我的消息包中,我的消息如下:
dear.name=Dear $name
如果我在Velocity上下文中设置名称,它会像我期望的那样被替换。