2011-06-27 13 views
1

私はJSF2アプリケーションを持っていますが、これまではメッセージリソースバンドルを使って国際化を一般的な方法で行っています。例:完全なHTMLページのJSFで国際化を行う正しい方法は?

<f:view contentType="text/html" locale="#{loginHandler.currentLocale}"> 

<f:loadBundle basename="MessageResource" var="msg" /> 

<h:outputText value="#{msg.user_firstNameLabel}" /> 

私の問題は、2つの言語のコンテンツの段落を持つ情報ページがあることです。私は、ページ上のテキストの各行を取らずに、メッセージ・プロパティー・ファイルのキー値を作成することをお勧めします。

コンテンツが2つのhtmlファイルにある場合。 contactus_en.htmlとcontactus_fr.htmlと言うと、現在のロケールに基づいて適切な言語を表示する正しい方法は何でしょうか?

ありがとうございます! Rob

答えて

3

あなたが求めていることを行う最も簡単な方法は、HTMLファイルの内容を読み取り、必要に応じて返すコントローラを作成することです。あなたは非常に単純な宣言を使用してJSFページからそれを書くことができますこのような場合は:あなたがHTMLファイル(複数可)の内容を読み取るしようとしているので

<h:outputText escape="false" value="#{yourController.contactus}" /> 

、あなたはこのように(それらをエスケープしないJSFを指示する必要がありますエスケープ= "偽")。
もちろんコントローラは興味のあるHTMLファイルの内容を読み、Stringとして返すべき方法getContactus()を提供する必要があります。私はあなたが簡単にそれを扱うことができると信じて:)


編集 - ファイルを選択する方法についての情報を追加します。あなたのHTMLファイルが、これらはすでにバイリンガルが、英語とフランス語で異なりますので、ロケールに依存している場合

、あなたは簡単にUIViewRootから現在のビューのロケールを取得することができます。

Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale(); 
String fileName = "contactus_" + currentLocale.toString() + ".html"; 
+0

クロスリファレンスにhttp:// stackoverflowの.com/questions/6423249/java-jsf-i18n-long-texts-terms-faq – webstrap