速度:#set($ var2 =“#springMessage($ var1)”)

时间:2013-10-16 00:52:38

标签: spring-mvc localization internationalization translation velocity

我想做这样的事情:

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

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

2 个答案:

答案 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");        
            }
    }