JSTL リファレンス

<fmt:setLocale>
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

SYNOPSIS

<fmt:setLocale
value*="ロケール名|Localeオブジェクト"
variant="バリアント名"
scope="page|request|session|application"
/>

説 明

JSTL で国際化機能/フォーマット処理を行う時に使用するロケールを設定します。 通常はページの先頭で以下のように記述して、リクエストを行っているブラウザの 言語設定で選択されているロケールを設定します。

JSP
<fmt:setLocale value="${pageContext.request.locale}" />

このロケールは scope 属性の設定変数 javax.servlet.jsp.jstl.fmt.locale 変数に格納され、後続の <fmt:formatDate> などがフォーマットを行う時に 使用されます。

参照: Locale 

属 性

value="ロケール名|Localeオブジェクト"
required

設定するロケールを文字列または LocaleJava™ API リファレンス インスタンスを指定します。

文字列で指定する場合、ISO-639 で定義されている小文字 2 文字の言語コードと、 もし必要なら ISO-3166 で定義されている大文字 2 文字の国コードを ハイフン '-' またはアンダースコア '_' で連結します (例: "en", "ja-JP", "mn_MN")。

この属性は必須ですが、値に null または長さ 0 の文字列が指定された場合は 実行環境デフォルトのロケールが使用されます。

variant="バリアント名"
optional

Java VM ベンダーやブラウザ固有のバリアントを指定します。 バリアントは言語、国をさらに詳述する情報です。 たとえば Java SE 6 からは ja_JPJP バリアントを 指定することで和暦を表示することができます。

scope="page|request|session|application"
optional

このタグで設定したロケールをどのスコープの設定変数として格納するかを指定します。 値は page, request, session, application のいずれかを使用することができます。

使用例

和暦と英語表記で現在時刻を出力します。
JSP
<jsp:useBean id="today" class="java.util.Date" />

<fmt:setLocale value="ja-JP" variant="JP" />
<fmt:formatDate value="${today}" dateStyle="full" /><br>

<fmt:setLocale value="en" />
<fmt:formatDate value="${today}" dateStyle="full" /><br>
実行結果
平成20年1月2日
Wednesday, January 2, 2008

ブラウザの「言語設定」で選択されているロケールを使用するには以下のように記述します。

JSP
<fmt:setLocale value="${pageContext.request.locale}" />
<fmt:formatDate value="${today}" dateStyle="full" /><br>
ブラウザの言語設定 (IE6 の場合 [ツール]-[インターネットオプション]-[言語]) で日本語 [ja] を優先した場合の出力は以下のように表示されます。
実行結果
2008年1月2日
また英語 [en] を優先した設定でアクセスすると以下のように表示されます。
実行結果
Wednesday, January 2, 2008
CVS 2008/03/09