速度模板本地化
Velocity template localization
我正在处理一项使用 Velocity 从模板生成电子邮件的任务。我的要求之一是根据用户提交的 Locale
对电子邮件进行本地化。我大部分时间都在使用 Velocity 的 ResourceTool
来引入 MessageBundle
。另一个要求是我只能有一个模板 - 我不希望每种语言或区域设置一个模板,因为如果需要更改,这很难维护。
作为 MessageBundle
的一部分,我可以拥有所谓的 "compound messages",这些消息具有在计算消息时替换的变量。例如:
dear.name=Dear {0}:
我的问题是:如何让 Velocity 将 {0}
值替换为我传入的名称?
不能简单地修改我的 Velocity 模板,以便我在模板级别简单地替换名称 - 在某些语言中,问候语 "Dear" 出现在名称之后,因此这会产生不正确的输出.
找到答案:在我的速度模板中,我可以使用 Velocity 指令:
#evaluate(${msg.dear.name})
在我的消息包中,我的消息如下所示:
dear.name=Dear $name
如果我在 Velocity 上下文中设置名称,它会按预期被替换。
我正在处理一项使用 Velocity 从模板生成电子邮件的任务。我的要求之一是根据用户提交的 Locale
对电子邮件进行本地化。我大部分时间都在使用 Velocity 的 ResourceTool
来引入 MessageBundle
。另一个要求是我只能有一个模板 - 我不希望每种语言或区域设置一个模板,因为如果需要更改,这很难维护。
作为 MessageBundle
的一部分,我可以拥有所谓的 "compound messages",这些消息具有在计算消息时替换的变量。例如:
dear.name=Dear {0}:
我的问题是:如何让 Velocity 将 {0}
值替换为我传入的名称?
不能简单地修改我的 Velocity 模板,以便我在模板级别简单地替换名称 - 在某些语言中,问候语 "Dear" 出现在名称之后,因此这会产生不正确的输出.
找到答案:在我的速度模板中,我可以使用 Velocity 指令:
#evaluate(${msg.dear.name})
在我的消息包中,我的消息如下所示:
dear.name=Dear $name
如果我在 Velocity 上下文中设置名称,它会按预期被替换。