0

我想做这样的事情:

<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).

实现嵌套翻译目标的另一种方法是什么?

4

2 回答 2

0

我最终需要编写一个自定义助手。真麻烦。我期待有一天完全放弃 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");        
            }
    }
于 2013-10-25T21:08:47.407 回答
0

你所需要的只是 #evaluate

于 2013-10-16T14:12:54.433 回答