【问题标题】:Internationalization in LiferayLiferay 的国际化
【发布时间】:2016-09-02 19:03:34
【问题描述】:

如何使用 jstl 进行国际化?我已经阅读了很多关于 fmt: taglib 的内容,但我仍然不知道如何使用它。例如,我们有一行

<p><a href="${StackOverFlow}" title='<liferay-ui:message key="hello-world" />'>Stack_over_flow</a></p>

还有 docroot/src/content 文件夹中的 Language.properties。如何在标题部分使用 JSTL?

我阅读了很多关于此问题的信息,但没有任何效果。 @Shivam

【问题讨论】:

  • 能否请您更清楚您究竟需要什么。国际化是否对您有用,或者您想专门使用 taglib。您遇到什么错误?
  • @ShivamAggarwal 我没有错误。我的任务是使用 JSTL 重构 title='&lt;liferay-ui:message key="hello-world" /&gt;' 这一行。我真的不知道该怎么办。我想我应该使用&lt;fmt...,但我不确定。

标签: jsp internationalization liferay liferay-6


【解决方案1】:

我想你正在寻找这个&lt;fmt:message key="hello-world"&gt;
不要忘记包含标签库&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %&gt;

【讨论】:

  • 所以我们不能在没有' ' 符号的情况下使用${} 吗?
  • 表达式语言仅用于获取某些属性,而在这种情况下它只是一个消息键,它是一个常量值,因此不需要表达式语言(所以不使用)
  • 我们是否应该添加另一个代码,例如&lt;fmt:bundles...?因为如果我们粘贴 &lt;fmt:message key="hello-world"&gt; 而不是 stack_over_flow 我们会得到 '????hello-world?????'而不是“嗨”。在 Language.properties 我有 hello-world=hi, ofc。
  • 提供资源包的完整路径,即默认属性文件
  • 所以如果我在docroot/WEB-INF/content/Language.properties 中有文件Language.properties,我应该这样写:&lt;fmt:setBundle basename="docroot/WEB-INF/content/Language.properties"/&gt; 并用&lt;fmt:message key="hello-world"&gt; 替换该行,对吗?
【解决方案2】:

像往常一样,答案太简单了:

<c:set var="message">
    <liferay-ui:message key="hello-world" />
</c:set>

<p><a href="${StackOverFlow}"title="${message}">Stack_over_flow</a></p>

这一切都是为了避免“标签中标签中的标签”构造。

【讨论】:

  • @Shivam,对你来说可能会很有趣。
猜你喜欢
  • 2014-01-14
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2015-08-31
  • 2011-12-27
相关资源
最近更新 更多