Velocity ToolsのResourceToolクラスは、ResourceBundleにアクセスしてメッセージをフォーマットするためのツールです。前の質問に対する答えはhow to set up 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>
あなたのリソースバンドルを使用すると、多分これが最善の完全にプログラム的な構成を使用して示されている
$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.
テンプレートに次のように使用することができます
bar=The args are {0} and {1}.
が含まれている場合は、毎回手動でロケールを設定することができます。
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:私たちは、私の場合のように、Webアプリケーションの外にマクロを使用することはできません
greeting=Hello
出力
Hello Jarl
それはいくつかの人で動作しますが、私にとってはいつも例外が発生しています。 ???任意のアイデア –
解決: model.put( "myKey"、 "my.key"); $ {messageSource.getMessage($ myKey、$ noArgs、$ locale)} –
ロケールをfrに変更すると、message_frというプロパティファイルが表示されるという別の問題があります。 ????、 どうしてか分かりません ? –