【问题标题】:Internationalization sitemesh国际化网站
【发布时间】:2010-09-10 23:06:30
【问题描述】:

我正在使用 freemarker、SiteMesh 和 Spring 框架。 对于页面,我使用 ${requestContext.getMessage()} 从 message.properties 获取消息。但是对于装饰者来说,这是行不通的。我应该怎么做才能让 sitemesh 的国际化工作?

【问题讨论】:

  • 你说它“不起作用”是什么意思?您是否收到特定的错误消息?它是否返回来自大英百科全书的随机页面而不是您想要的消息?它会退出吗?会挂吗?它会召唤尤格·索托斯吗?

标签: spring internationalization freemarker sitemesh


【解决方案1】:

您必须使用 fmt 标签库。

首先,在装饰器的第一行添加 sitemesh 和 fmt 的 taglib。

<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator"%>
<%@ taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>
<fmt:setBundle basename="messages" />

在我的示例中,i18n 文件是 messages.properties。然后你需要使用 fmt 标签来使用消息。

<fmt:message key="key_of_message" />

【讨论】:

    【解决方案2】:

    如果您更喜欢模板和 freemarker servlet,您可以在模板中输入以下内容:

    <#assign fmt=JspTaglibs["http://java.sun.com/jstl/fmt"]>
    <@fmt.message key="webapp.name" />
    

    在你的web.xml:

    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>messages</param-value>
    </context-param>
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 1970-01-01
      • 2019-06-08
      • 2015-09-07
      • 1970-01-01
      • 2021-12-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多