Локализация шаблона скорости

Я работаю над задачей, которая использует 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, оно будет заменено, как я и ожидал.

Другие вопросы по тегам