我想做这样的事情:
<head>
<title>
#set($windowTitleKey = $tiles.insertAttribute({'name':'window_title_key', 'ignore': true}))
#set($translatedPageName = "#springMessage($windowTitleKey)")
#springMessageText("SEO_page_title_default", [$translatedPageName])
</title>
</head>
第一个“set”行正常工作,springMessageText行也是如此。
此行不起作用:#set($translatedPageName = "#springMessage($windowTitleKey)")
它将$ translatedPageName设置为$springMacroRequestContext.getMessage($code)
。
实现嵌套翻译目标的另一种方法是什么?
答案 0 :(得分:0)
所有你需要的是爱 #evaluate
答案 1 :(得分:0)
我最终需要编写自定义帮助程序。多么麻烦。我期待有一天完全放弃Velocity。
在Velocity视图中:
#set($windowTitleKey = $tiles.insertAttribute({'name':'window_title_key', 'ignore': true}))
#set($translatedPageName = $TranslationsHelper.getTranslation("$windowTitleKey"))
#springMessageText("SEO_window_title_default", ["$translatedPageName"])
在TranslationsHelper.java中:
public class TranslationsHelper extends ReloadableResourceBundleMessageSource
{
public static String getTranslation(String messageKey, Object[] args)
{
MessageSource ms = getMessageSource();
Locale locale = LocaleContextHolder.getLocale();
return ms.getMessage(messageKey, args, locale);
}
public static MessageSource getMessageSource()
{
WebApplicationContext webAppContext = ContextLoader.getCurrentWebApplicationContext();
return (MessageSource) webAppContext.getBean("messageSource");
}
}