3

JSTL を使用して i18n アプリを作成しようとすると、次のようになります。

<li><a href="admin/insertEmployee.jsp"><fmt:message key="new"/></a></li>

しかし、ブラウザでは対応するキー「new」を変換せず???new???、プロパティ ファイルで定義された値の代わりに HTML アンカーとして表示します (pt_PT では「Novo」である必要があります)。

パッケージの下に次のファイルがあります。

  • メッセージのプロパティ
  • messages_en_US.properties
  • messages_pt_Pt.properties。

web.xml (pt_PT) 内でデフォルトのロケールを定義しようとしましたが、まだ機能していません...

を定義する必要があります<fmt:setLocale />か?
これは正しい URI ですか:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

web.xmlで:

<context-param>
    <param-name>
        javax.servlet.jsp.jstl.fmt.localizationContext
    </param-name>
    <param-value>com.arthurportas-i18n.messages</param-value>
</context-param>
<context-param>
    <param-name>
        javax.servlet.jsp.jstl.fmt.fallbackLocale
    </param-name>
    <param-value>pt_PT</param-value>
</context-param>
<context-param>
    <param-name>
        javax.servlet.jsp.jstl.fmt.locale
    </param-name>
    <param-value>pt_PT</param-value>
</context-param>
4

2 に答える 2

3

@arthur-portas: 奇妙な動作は、リンクをクリックして英語の翻訳を選択すると、ダブルクリックが必要になることだけです!! 1 回のクリックが無視される...これはブラウザのキャッシュ動作ですか?

これは、setBundle の後にロケールを設定したためです。正しい順序は次のとおりです。

<c:if test="${param['lang'] !=null}">
    <fmt:setLocale value="${param['lang']}" scope="session" />
</c:if>
<fmt:setBundle basename="com.arthurportas.i18n.Messages"/>
于 2013-07-30T12:49:08.033 に答える