Локализация шаблона скорости
Я работаю над задачей, которая использует Velocity для генерации электронного письма из шаблона. Одно из моих требований заключается в том, чтобы сообщение электронной почты было локализовано на основе Locale
представленный пользователем. У меня это работает по большей части, используя Velocity's ResourceTool
тянуть в MessageBundle
, Другое требование заключается в том, что у меня может быть только один шаблон - мне не нужен один шаблон для языка или локали, потому что это сложно поддерживать, если необходимы изменения.
Как часть MessageBundle
Я могу иметь то, что называется "составными сообщениями", то есть сообщениями, которые имеют переменные, которые заменяются при оценке сообщения. Например:
dear.name=Dear {0}:
Мой вопрос заключается в следующем: как я могу получить Velocity для замены {0}
значение с именем, которое я передаю?
Недопустимо просто модифицировать мой шаблон Velocity, чтобы я просто заменил имя на уровне шаблона - на некоторых языках после имени появляется приветствие "Уважаемый", так что это приведет к неверному выводу.
1 ответ
Нашел ответ: в моем шаблоне скорости я могу использовать директиву Velocity:
#evaluate(${msg.dear.name})
И в моем пакете сообщений мое сообщение выглядит так:
dear.name=Dear $name
Если я задаю имя в контексте Velocity, оно будет заменено, как я и ожидал.