JSF 2国際化の例
JSFアプリケーションでは、次のようにプログラムでアプリケーションのロケールを変更できます。
//this example change locale to france
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale('fr');
JSFは、国際化または複数言語を簡単にサポートします。
完全なJSF国際化の例
このチュートリアルでは、ウェルカムページを表示し、プロパティファイルからウェルカムメッセージを取得し、選択した言語に基づいてウェルカムメッセージを動的に変更するJSF 2.0 Webアプリケーションを紹介します。
1. プロジェクトフォルダ
この例のディレクトリ構造。

2. プロパティファイル
以下に、英語と中国語のメッセージを保存する2つのプロパティファイルを示します。
welcome.properties
welcome.jsf = Happy learning JSF 2.0
welcome_zh_CN.properties
welcome.jsf = \u5feb\u4e50\u5b66\u4e60 JSF 2.0
Note
UTF-8または英語以外の文字(中国語など)の場合は、native2asciiツールを使用してエンコードする必要があります。
3. faces-config.xml
上記のプロパティファイルをJSFアプリケーションに含め、デフォルトのアプリケーションロケールとして「en」を宣言します。
faces-config.xml
en com.example.welcome msg
4. マネージドBean
言語選択リストを提供するマネージドBeanと、プログラムでロケールを変更する値変更イベントリスナー。
LanguageBean .java
package com.example;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
@ManagedBean(name="language")
@SessionScoped
public class LanguageBean implements Serializable{
private static final long serialVersionUID = 1L;
private String localeCode;
private static Map countries;
static{
countries = new LinkedHashMap();
countries.put("English", Locale.ENGLISH); //label, value
countries.put("Chinese", Locale.SIMPLIFIED_CHINESE);
}
public Map getCountriesInMap() {
return countries;
}
public String getLocaleCode() {
return localeCode;
}
public void setLocaleCode(String localeCode) {
this.localeCode = localeCode;
}
//value change event listener
public void countryLocaleCodeChanged(ValueChangeEvent e){
String newLocaleValue = e.getNewValue().toString();
//loop country map to compare the locale code
for (Map.Entry entry : countries.entrySet()) {
if(entry.getValue().toString().equals(newLocaleValue)){
FacesContext.getCurrentInstance()
.getViewRoot().setLocale((Locale)entry.getValue());
}
}
}
}
5. JSFページ
プロパティファイルからウェルカムメッセージを表示し、ドロップダウンボックスに値変更イベントリスナーをアタッチするJSFページ。
JSF 2 internationalization example
Language :
6. Demo
デフォルトでは、ロケールは英語です。

ユーザーがドロップダウンボックスの言語を変更すると、値変更イベントリスナーが起動され、それに応じてアプリケーションロケールが変更されます。

ソースコードをダウンロード
ダウンロード–JSF-2-Internationalization-Example.zip(11KB)