Velocity Tools ' ResourceTool class - инструмент для доступа к ResourceBundles и форматирования сообщений в нем Ответ на предыдущий вопрос описывает , как настроить Velocity Tools
В файле конфигурации инструментов добавьте следующую строку, чтобы включить ResourceTool. Вы можете указать локаль по умолчанию, но обычно используется локаль от HttpServletRequest.getLocale()
.
Toolbox configuration example:
<tools>
<toolbox scope="request">
<tool class="org.apache.velocity.tools.generic.ResourceTool"
bundles="myresources"
locale="en_US"/>
</toolbox>
</tools>
Если ваш пакет ресурсов содержит
bar=The args are {0} and {1}.
вы можете использовать следующее в вашем шаблоне
$text.bar -> The args are {0} and {1}.
$text.bar.insert(4) -> The args are 4 and {1}.
$text.bar.insert(4,true) -> The args are 4 and true.
Возможно, это лучше всего показать, используя полностью программную конфигурацию; таким образом, вы можете вручную установить локаль каждый раз.
EasyFactoryConfiguration config = new EasyFactoryConfiguration();
config.toolbox("request").tool(ResourceTool.class)
.property("bundles", "myresources")
.property("locale", "en_US");
ToolManager manager = new ToolManager(false, false);
manager.configure(config);
Context context = manager.createContext();
context.put("name", "Jarl");
Template template = Velocity.getTemplate("mytemplate.vm");
StringWriter writer = new StringWriter();
template.merge(context, writer);
System.out.println(writer.toString());
mytemplate.vm:
$text.greeting $name
myresources_en_US.properties:
greeting=Hello
выход
Hello Jarl