コードで直接ローカライズ文字列を作成するかわりに、文字列を含んだリソース・バンドルを作成し、対応するキーを使用してバンドル内の文字列を参照できます。アプリケーションでサポートされているロケールは、そのロケールをアプリケーションの構成ファイルに指定することでJSFに通知できます。ローカライズ・リソースを参照するために、JSFでは、現行FacesContext
のUIViewRoot
にlocale
プロパティの値として格納されているアクティブ・ロケールが使用されます。
ローカライズされた静的メッセージおよびデータ文字列(例: フィールド・ラベルおよびボタン・テキスト)を作成および使用するために、次の処理を実行できます。
リソース・バンドルには、メッセージおよびデータ文字列に対するキーと値のペアが含まれています。リソース・バンドル(アプリケーションのクラスパスに格納)は、PropertyResourceBundle
に基づくテキスト・ファイル、またはListResourceBundle
を拡張するクラスです。このトピックの例では、プロパティ・リソース・バンドルが使用されています。
ローカライズ・リソース・バンドルは、適切なロケール文字列表現をベース名に付加することで作成されます。たとえば、ベース・ファイル名がApplicationMessages.properties
の場合、ローカライズ・バンドルはApplicationMessages_es.properties
です。リソース・バンドルおよびローカライズの詳細は、java.util.ResourceBundle
に関するJavadoc、およびInternationalization(I18N)に関するSun Developer Networkサイトを参照してください。URLは次のとおりです。
http://java.sun.com/j2se/corejava/intl/index.jsp
たとえば、次に示すキーと値のペアをApplicationMessages.properties
に指定するとします。
com.mycompany.mydivision.INVALID_USER_NAME=Your user name is incorrect. Please try again.
com.mycompany.mydivision.INVALID_LOGIN=Login failure! Please try again.
com.mycompany.mydivision.loginButtonLabel=Login
com.mycompany.mydivision.loginInputLabel=Enter name
com.mycompany.mydivision.loginPwLabel=Enter password
ヒント: 名前が競合しないように、キーの接頭辞には逆ドメイン名規則を使用してください。
さらに、次のキーと値のペアをApplicationMessages_es.properties
に指定します。
javax.faces.component.UIInput.REQUIRED=Some Spanish text.
javax.faces.component.UIInput.REQUIRED_detail=More Spanish text.
com.mycompany.mydivision.INVALID_USER_NAME=Some Spanish text.
com.mycompany.mydivision.INVALID_LOGIN=Some Spanish text.
com.mycompany.mydivision.loginButtonLabel=Conexión
com.mycompany.mydivision.loginInputLabel=Identificacion del usuario
com.mycompany.mydivision.loginPwLabel=Contraseña
注意: 変換および検証エラーに対するJSF標準メッセージは英語で提供されています。これらの標準エラー・メッセージのローカライズ・バージョンをリソース・ファイルで提供するには、キーと値のペアに標準メッセージ・キーを使用して、英語のテキストをローカライズ・テキストで置換してください。JSF標準メッセージをオーバーライドする方法の詳細は、「JSF標準メッセージに対するカスタム・メッセージ・テキストについて」を参照してください。
アプリケーションに対してサポートされているロケールを登録します。JSF構成エディタを使用して、アプリケーション構成ファイルfaces-config.xml
を開きます。<local-config>
要素および<supported-locale>
サブ要素を追加します。
次のコード・スニペットは、アプリケーションに対するデフォルト・ロケールおよびサポート・ロケールを宣言する方法を示しています。
<faces-config>
<application>
...
<locale-config>
<default-locale>en</default-locale>
<supported-locale>en-us</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>es</supported-locale>
</locale-config>
...
</application>
...
</faces-config>
JSFページで、f:loadBundle
タグを使用して、リソース・バンドルをマップにロードします。
次に例を示します。
...
<f:loadBundle basename="model.login.ApplicationMessages" var="loginBundle"/>
...
basename
はリソース・バンドルの完全修飾クラス名、var
は任意のマップ変数名です。
このタグによって、FacesContext
に格納されているロケールに従って適切なリソース・バンドルがロードされます。リソース・バンドルをマップにロードすると、次の項に示すように、JSF EL式を使用してプロパティ・ファイル内の値をキーで参照できます。
JSFページでローカライズ文字列を参照するには、#{bundle.key}
などの値バインディング式を使用します。bundle
はf:loadBundle
内のvar
属性の値、key
はリソース・バンドルに定義されているメッセージ文字列のキーです。次に例を示します。
...
<h:outputText value="#{loginBundle.loginInputLabel}"/>
...
<h:outputText value="#{loginBundle.loginPwLabel}"/>
...
<h:commandButton value="#{loginBundle.loginButtonLabel}"/>
...
<h:outputText value="#{loginBundle.INVALID_USER_NAME}"/>
...
値バインディング式を受け入れるどのコンポーネント・タグ属性からでもリソース・バンドル文字列を参照できます。
Copyright © 1997, 2006, Oracle. All rights reserved.