16.2. ロケール
各ユーザーログインのセッションは、
java.util.Locale の関連付けられたインスタンスを持ち、 アプリケーションに対しては locale という名前のコンポーネントとして使用可能です。 通常の環境では、 ロケールに特別な設定は不要です。 Seam ではアクティブなロケールの決定は次のように JSF に委譲します。
- ロケールが HTTP 要求と関連付けられ (ブラウザのロケール)、 そのロケールが
faces-config.xmlにあるサポートロケールの一覧にある場合は、 そのロケールをその後のセッションに使用します。 - これ以外で、 デフォルトロケールが
faces-config.xml中に指定されていた場合、 そのロケールをその後のセッションに使用します。 - いずれにも該当しない場合、 サーバのデフォルトロケールを使用します。
Seam 設定プロパティの
org.jboss.seam.international.localeSelector.language、 org.jboss.seam.international.localeSelector.country、 org.jboss.seam.international.localeSelector.variant により手作業でのロケール設定が 可能 ですが、以前に示した方法ではなくてこれを実行する妥当な理由は考え付きません。
アプリケーションのユーザーインターフェースを使いユーザーに手作業でロケール設定をさせると便利です。 Seam はデフォルトのアルゴリズムで決定されるロケールを無効化する組み込み機能を提供しています。 JSP または Facelet ページのフォームに以下の断片を追加して行います。
あるいは、
faces-config.xml のサポートロケールの全一覧が必要な場合は次を使います。
ユーザーがドロップダウンからアイテムを選択してコマンドボタンをクリックすると、 その後のセッションに対して Seam と JSF のロケールはオーバライドされます。
組み込みの
org.jboss.seam.international.localeConfig コンポーネントを使ってサーバーのデフォルトロケールとサポートされているロケールを設定することができます。 まず、 Seam コンポーネント記述子で Seam 国際パッケージの XML 名前空間を宣言します。 次にデフォルトのロケールとサポートされるロケールを次のように定義します。
<international:locale-config default-locale="fr_CA"
supported-locales="en fr_CA fr_FR"/>
<international:locale-config default-locale="fr_CA"
supported-locales="en fr_CA fr_FR"/>
サポートされるロケールは一致するリソースバンドルが必要であることを忘れないようにしてください。 次に言語固有のラベルを定義します。