我们希望外化我们的JSP,目前包含以下内容:
<c:when test="${productObject.was}"><span>Was ${price} - now ${salePrice}</span><br /></c:when>
我们已经有了一个可以用于此目的的Java函数(lm.getString) - 它接受英文字符串(包括参数标签),替换变量的散列图和语言,例如
wasPriceString = "Was <price> - now <salePrice>";
lang = "ESP";
HashMap hm = new HashMap();
hm.put("salePrice", price);
hm.put("price", regPrice);
wasPriceString = lm.getString(wasPriceString, hm, lang);
并返回已翻译的字符串,并插入参数,例如“17.99美元 - 现在11.50美元”(英文)或“时代17.99美元 - ahora 11.50美元”(西班牙文)。
我们在Java代码中使用它,但现在我也想改变JSP。我的问题是,这可以在JSP本身(传递参数)中轻松完成吗?如果没有,最好的选择是什么?我宁愿不简单地翻译输出文本,因为那只是hacky,并导致这种邪恶:
<c:when test="${productObject.was}"><span><fmt:message key="textWas_ui"/> ${price} - <fmt:message key="textNow_lc"/> ${salePrice}</span><br /></c:when>
我错过了一些明显的东西吗?
答案 0 :(得分:2)
是的,您错过了<fmt:message>
接受参数并在幕后使用标准MessageFormat类的事实。所以你只需要
<fmt:message key="wasVsNow">
<fmt:param value="${price}"/>
<fmt:param value="${salePrice}"/>
</fmt:message>
在JSP中,以及包含国际化消息的属性文件中:
wasVsNow=Was {0} - now {1}