は、設定の3つの方法があります
アプリケーションのロケールの設定次の2つのメッセージファイルに
messages.properties
messages_de.properties
を以下しているとしましょうアプリケーションのロケールと私はあなたは最初のがここに必要と思う。
1 - ブラウザにロケールを選択させることができます。ブラウザがアプリケーションに接続するとき、それは通常のHTTPヘッダに
2 - あなたが設定することができますしたAccept-Language値を含んWEB-INF/faces-config.xml:
<faces-config>
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>de</supported-locale>
</locale-config>
</application>
</faces-config>
にデフォルトとサポートされるロケールを設定し
プログラム的にロケール。
はUIViewRootオブジェクトのあるsetLocaleメソッドを呼び出します。
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
viewRoot.setLocale(new Locale("de"));
3 - あなたはlocale属性 - 例えばでf:view
要素を使用することにより、個々のページ
のロケールを設定することができます。
を
<f:view locale="de">
ロケールを動的に設定することができます。
<f:view locale="#{user.locale}"/>
宣言メッセージが
今ロケールを使用すると、メッセージを宣言するために、次の2つの方法のいずれかを使用することができます設定されていることをバンドル
1-VIAが、直面しているコンフィグバンドル最も簡単な方法はにある faces-configという名前のファイルを提供してください。以下の内容で、アプリケーションのWEB-INFディレクトリ内のxml:
<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<resource-bundle>
<base-name>com.corejsf.messages</base-name>
<var>msgs</var>
</resource-bundle>
</application>
</faces-config>
2 - でアクセスを必要とする各JSFページ。代わりに、グローバルリソースバンドルの宣言を使用しての 、あなたはFを追加することができます:loadBundle要素をこのように、バンドルへのアクセスを必要とする各JSFページへ:いずれの場合も
<f:loadBundle basename="com.corejsf.messages" var="msgs"/>
、バンドル内のメッセージがありますmsgsという名前のマップ変数からアクセスできます。
は今デフォルトのプロパティ、すなわち英語財産
next=Next
が持っているファイルを言うことができますボタンの上に適切なラベルを表示し、ドイツはequivallentすなわち
next=Weiter
持って、あなたはロケールを設定し、MESGを宣言しましたあなたは
のようにコマンドボタンのラベルを置くためにそれにアクセスすることができますバンドル10
上記の回答は、Hortsmen Core Java Server Faces bookから抽出され、変更されています。 3.そして2ポイントで:
私が何かを追加したいと思います。 JSFページごとに行うのではなく、template.xhtmlで実行できます。 – karlihnos