Вы не должны делать несколько шаблонов (по одному на язык). Это было бы контрпродуктивно.
Также вам нужно определить какую-нибудь оболочку для перевода текста. Вы не хотите использовать Locale или Locale Identifiers напрямую ("en_US"), вместо этого вам нужно установить Locale для сеанса и использовать этот объект (возможно, неявно, так что вам не нужно будет передавать его каждый раз, когда вы вызываете getMessage()
, таким образом обертка).
Имейте в виду, что если вы вызываете методы ResourceBundle
class 'напрямую, некоторые из них могут выдать MissingResourceException
(что является исключением во время выполнения, чтобы усугубить ситуацию). Вы должны обязательно проверить это.
КСТАТИ. Скорость определяет некоторый инструмент для целей локализации. Забавно то, что я никогда не видел, чтобы кто-нибудь на самом деле использовал его (но, честно говоря, мой опыт работы с Velocity весьма ограничен).