この章の内容は次のとおりです。
JDeveloperは、任意の数のロケールに対してバージョニングできるベース・リソース・バンドルでテキストをグループ化して、ADF Facesコンポーネントによって表示される翻訳可能なテキストや、メッセージのテキストなど、ロケール固有のリソースの処理を簡単にします。
国際化は、特定地域の言語と文化に適応しやすくするための、製品の設計および開発のプロセスです。ローカライゼーションは、テキストを変換し、ロケール固有のコンポーネントを追加することで、特定地域の言語または文化に製品を適応させるプロセスです。上手くローカライズされたアプリケーションは、その地域で開発されたように見えます。JDeveloperは、抽象クラスjava.util.ResourceBundle
を使用してロケール固有のリソースを提供し、ADF Facesコンポーネントをローカライズしやすいようにサポートします。
複数の国のユーザーがアプリケーションを表示する場合、ユーザーのブラウザの言語設定に対応する適切な言語が表示されるよう、様々なロケールを使用できるようにJSFページまたはアプリケーションを構成できます。たとえば、作成したページがイタリアで表示されることがわかっている場合は、イタリア語を使用するようにユーザーのブラウザが設定されたときに、そのブラウザ・ページにテキスト文字列をイタリア語で表示するように、ページをローカライズできます。
ADF Facesコンポーネントには、コンポーネントの一部であるテキストが含まれている場合があり、たとえばaf:table
コンポーネントではリソース文字列af_table.LABEL_FETCHING
が、ブラウザで表示されるメッセージ・テキスト用に使用され、一方af:table
コンポーネントでは、データの初期ロード中またはユーザーが表をスクロール中に、データがフェッチされます。JDeveloperでは、これらのテキスト・リソースを28言語に自動的に変換します。これらのテキスト・リソースは、リソース・バンドルで参照されます。faces-config.xml
ファイルの<supported-locale>
要素を指定して、アプリケーションでサポートする言語ごとにサポートを有効にする必要があります。たとえば、イタリア語を使用するようにブラウザを設定し、faces-config.xml
ファイルに<supported-locale>it</supported-locale>
を追加した場合、コンポーネント内に含まれるテキストはすべて自動的にイタリア語で表示されます。詳細は、「アプリケーションへのロケールの登録方法」を参照してください。
text
属性を設定してaf:button
コンポーネントのラベルを定義する場合など、コンポーネントに追加するテキストには、実際のテキストが含まれているリソース・バンドルを指定して、各ロケール版のリソース・バンドルを作成し、<locale-config>
要素を追加して、アプリケーションのfaces-config.xml
ファイルにデフォルトおよびサポートされるロケールを定義する必要があります。また、アプリケーションのすべてのページでリソース・バンドルを使用できるようにするには、アプリケーションのfaces-config.xml
ファイルに<resource-bundle>
要素を追加する必要があります。一度リソース・バンドルを構成および登録すると、式ビルダーにそのバンドルのキーが表示されるため、アプリケーション・ページ内でバンドルを参照しやすくなります。
ADF Facesコンポーネントに追加するテキストのテキスト・リソースを作成するプロセスを簡略化するために、JDeveloperでは、ビジュアル・エディタの変換可能な文字列に関する、リソース・バンドルの自動同期がサポートされています。ビジュアル・エディタまたは「プロパティ」ウィンドウで直接コンポーネントを編集すると、ベース・リソース・バンドルにテキスト・リソースが自動的に作成されます。詳細は、「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。
注意:
データベースから取得されたテキストは変換されません。このドキュメントでは、静的テキストのローカライズ方法については説明しますが、データベース内に格納されているテキストのローカライズ方法については説明しません。
たとえば、「My Purchase Requests」というタイトルのパネル・ボックスがあるとします。My Purchase Requests
という文字列をaf:panelBox
コンポーネントのtext
属性の値として設定するのではなく、text
属性の値をUIResources
リソース・バンドル内のキーにバインドします。次の例に示すように、UIResources
リソース・バンドルは、アプリケーションのfaces-config.xml
ファイルに登録されます。
<resource-bundle> <base-name>resources.UIResources</base-name> <var>res</var> </resource-bundle>
リソース・バンドルには、EL式に使用可能な変数名(この場合はres
)が提供されます。次の例に示すように、ページでは、af:panelBox
コンポーネントのtext
属性が、そのリソース・バンドル内のmyDemo.pageTitle
キーにバインドされます。
<af:panelBox text="#{res['myDemo.pageTitle']}" .... id="pb1">
UIResources
リソース・バンドル内には、アプリケーションの各ページに表示されるすべての静的テキスト、メッセージのテキスト、グローバル・テキスト(汎用ラベルなど)に対する英語のエントリがあります。例36-1に、myDemoページのキーを示します。例36-2に、イタリア語ロケール・バージョンのリソース・バンドル(UIResources_it
)を示します。選択ファセットのタイトルに対するエントリがないのに、「Select」が自動的に「Seleziona」に変換されていることに注意してください。これは、このテキストがADF Facestable
コンポーネントの選択ファセットの一部になっているためです。
バナー・イメージのテキストおよびデータベースから取得されたデータは変換されないことに注意してください。
例36-1 英語で表示されるmyDemoページのリソース・バンドル・キー
#myDemo Screen
myDemo.pageTitle=My Purchase Requests
myDemo.menubar.openLink=Open Requests
myDemo.menubar.pendingLink=Requests Awaiting customer
例36-2 イタリア語で表示されるmyDemoページのリソース・バンドル・キー
#myDemo Screen myDemo.pageTitle=Miei Ticket myDemo.menubar.openLink=Ticket Aperti myDemo.menubar.pendingLink=Ticket in Attesa del Cliente
アプリケーションを国際化またはローカライズする前に、その他のADF Faces機能を理解しておくと役に立ちます。また、いったんアプリケーションを国際化またはローカライズすると、アクセシビリティなどの機能を追加したり、ADF Facesコンポーネントを右から左にレンダリングしたりする必要があることに気付く場合があります。使用できるその他の機能へのリンクは、次のとおりです。
テキストでのパラメータの使用: コンポーネントに表示されるテキストに、実行時に解決されるパラメータを含める場合は、ADF Faces EL書式タグを使用できます。詳細は、「EL書式タグの使用方法」を参照してください。
擬似クラス: ADFスキンでは、特定の地域でのアプリケーションのレンダリングを変更するために使用できる多数の擬似クラスをサポートしています。たとえば、:rtl
擬似クラスでは、ADF Facesコンポーネントを右から左へレンダリングします。これは、アプリケーションをアラビア語やヘブライ語など、右から左へ読む言語にローカライズする場合に便利です。詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
アクセシビリティ: アプリケーション内のページをアクセス可能にできます。詳細は、「アクセス可能なADF Facesページの開発」を参照してください。
グローバル・リソース文字列: デフォルトのリソース・バンドルには、ADF Facesコンポーネントでサポートされるグローバル・リソース文字列と、個々のコンポーネントに固有のリソース文字列が格納されています。これらのリソース文字列の詳細は、Oracle ADF Facesスキン・セレクタ・タグ・リファレンスを参照してください。
タッチ装置: ADF Facesコンポーネントはタッチ装置によって異なる動作および表示を行うことがあります。詳細は、「ADF Facesを使用したタッチ装置のWebアプリケーションの作成」を参照してください
ドラッグ・アンド・ドロップ: ユーザーがコンポーネントをページの別の領域にドラッグ・アンド・ドロップできるように、コンポーネントを構成できます。詳細は、「ドラッグ・アンド・ドロップ機能の追加」を参照してください
JDeveloperでは、変換可能な文字列とベース・リソース・バンドルをテキスト・ソース・エディタで同期して、ADF Facesコンポーネントに追加するテキスト・リソースの作成プロセスを簡略化できます。
ビジュアル・エディタでADF Facesコンポーネントを編集する際、JDeveloperでは、デフォルトのリソース・バンドルへのテキスト・リソースの自動作成がサポートされています。ユーザー定義の文字列を静的な値として処理するには、「リソース・バンドル・オプションの設定方法」で説明されているように、「プロジェクト・プロパティ」ダイアログで「バンドルの自動同期化」チェック・ボックスを選択解除します。
自動リソース・バンドル統合は、ページまたはプロジェクトごとに1つのリソース・バンドルをサポートするように構成できます。
図36-1に示される「テキスト・リソースの選択」ダイアログを使用して変換可能なテキスト文字列を編集できます。このダイアログは、「プロパティ」ウィンドウで、変換可能なプロパティのプロパティ・フィールドにポインタを置くと表示されるアイコンをクリックして、ポップアップ・メニューから「テキスト・リソースの選択」を選択するとアクセスできます。このダイアログの使用方法の詳細は、「JDeveloper生成リソース・バンドルでのエントリの作成方法」を参照してください。
プロジェクトのリソース・バンドル・オプションは、「プロジェクト・プロパティ」ダイアログで設定できます。
始める前に:
JDeveloperでリソース・バンドルがどのように管理されるかを理解しておくと役立ちます。詳細は、「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
プロジェクトにリソース・バンドル・オプションを設定する方法:
JDeveloperでは、図36-2に示すように、「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで行った選択に基づいて、特定のタイプの1つ以上のリソース・バンドルが生成されます。図36-1で示す「テキスト・リソースの選択」ダイアログを初めて呼び出したときに、リソース・バンドルが生成されます。
たとえば、「1プロジェクト当たり1バンドル」チェック・ボックスを選択し、「リソース・バンドル・タイプ」ドロップダウン・リストから「リスト・リソース・バンドル」
値を選択するとします。初めて「テキスト・リソースの選択」ダイアログを呼び出すと、JDeveloperではそのプロジェクト用に1つのリソース・バンドルが生成されます。生成されたリソース・バンドルは、「プロジェクト・プロパティ」ダイアログのデフォルトのプロジェクト・バンドル名をとったJavaクラスです(ViewControllerBundle.java
など)。
JDeveloperでは、「XMLローカライズ交換ファイル形式(XLIFF)バンドル」オプションを選択した場合は.xlf
ファイルとしてリソース・バンドルが、「プロパティ・バンドル」オプションを選択した場合は.properties
ファイルが生成されます。
デフォルトでは、JDeveloperにより、プロジェクトの「アプリケーション・ソース」ディレクトリの「view」サブディレクトリに、生成されたリソース・バンドルが作成されます。
JDeveloperでは、「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで選択した値に基づいて、1つ以上のリソース・バンドルが生成されます。「Properties」ウィンドウのコンポーネント・プロパティから「テキスト・リソースの選択」ダイアログを初めて呼び出したときに、リソース・バンドルが生成されます。
JDeveloperでは、「テキスト・リソースの選択」ダイアログで入力した値に基づいて、リソース・バンドルにキー値のペアが記述されます。また、リソース・バンドルから既存のキー値のペアを選択して、コンポーネントのランタイム表示値をレンダリングすることもできます。
始める前に:
JDeveloperでリソース・バンドルがどのように管理されるかを理解しておくと役立ちます。詳細は、「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
JDeveloperで生成されたリソース・バンドルでエントリを作成する手順:
JDeveloperでは、「テキスト・リソースの選択」ダイアログで定義したキー値のペアをリソース・バンドルに記述します。「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで選択するオプションにより、JDeveloperでキー値のペアが記述されるリソース・バンドルのタイプが決まります。詳細は、「リソース・バンドル・オプションを設定する場合の処理」を参照してください。
リソース・バンドル・エントリを定義したコンポーネント・プロパティでは、EL式を使用して、実行時にリソース・バンドルから値を取得します。たとえば、af:inputText
コンポーネントの「ラベル」プロパティは、次の式に似たEL式を参照します。
#{viewcontrollerBundle.Label1}
viewcontrollerBundle
はリソース・バンドルを参照し、Label1
はランタイム値のキーです。
ADFアプリケーションでは、JDeveloperエディタ外でテキスト・リソースを定義する必要があるときに、Javaグラフ、プロパティ・ファイル、またはXLIFFファイルとしてリソース・バンドルを作成できます。
リソース・バンドルには多数の名前の付いたリソースが含まれており、名前付きリソースのデータ型はString
です。バンドルに親バンドルがある場合があります。リソースがバンドル内に見つからない場合、親バンドルでリソースが検索されます。リソース・バンドルは、Javaクラス、プロパティ・ファイルまたはXLIFFファイルのいずれかです。抽象クラスjava.util.ResourceBundle
には次の2つのサブクラスがあります。
java.util.PropertyResourceBundle
java.util.ListResourceBundle
java.util.PropertyResourceBundle
はプロパティ・ファイルに格納され、これは変換可能なテキストが含まれるプレーン・テキスト・ファイルです。プロパティ・ファイルには、String
オブジェクトについてのみ値を含めることができます。他のタイプのオブジェクトを格納する必要がある場合、かわりにjava.util.ListResourceBundle
クラスを使用する必要があります。
XLIFFの使用の詳細は、http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html
を参照してください。
他のロケールのサポートを追加するには、キーの値をローカライズ済の値で置き換え、言語コード(必須)と、国コードおよび名前の識別子としてのバリアント(オプション)を付加したプロパティ・ファイル(たとえば、UIResources_it.properties
)を保存します。
java.util.ListResourceBundle
クラスでは、リソースが名前/値の配列で管理されます。各java.util.ListResourceBundle
クラスはJavaクラス・ファイル内に含まれます。ロケール固有のオブジェクトをjava.util.ListResourceBundle
クラスに格納できます。追加ロケールのサポートを加えるには、ベース・クラスからサブクラスを作成し、それをロケールまたは言語の拡張子の付いたファイルに保存して、それを変換し、クラス・ファイルにコンパイルします。
ResourceBundle
クラスはフレキシブルです。最初にロケール固有のString
オブジェクトをjava.util.PropertyResourceBundle
ファイルに挿入した場合でも、後でそれらのオブジェクトをListResourceBundle
クラスに移動できます。キーを検出するためのコールでは、java.util.ListResourceBundle
クラスおよびjava.util.PropertyResourceBundle
ファイルの両方が検索されるため、コードに影響はありません。
プロパティよりもクラスの方が優先されます。このため、クラス・ファイルとプロパティ・ファイルの両方に同じ言語に対するキーが存在する場合、クラス・ファイル内の値がユーザーに表示されます。また、ロードするバンドルを決定するための検索アルゴリズムは次のとおりです。
(ベース・クラス)+(特定の言語)+(特定の国)+(特定のバリアント)
(ベース・クラス)+(特定の言語)+(特定の国)
(ベース・クラス)+(特定の言語)
(ベース・クラス)+(デフォルトの言語)+(デフォルトの国)+(デフォルトのバリアント)
(ベース・クラス)+(デフォルトの言語)+(デフォルトの国)
(ベース・クラス)+(デフォルトの言語)
たとえば、ユーザーのブラウザがイタリア語ロケールに設定されていて、アプリケーションのデフォルト・ロケールが米語の場合、アプリケーションでは最も近いものを検出するために、次の順序で検索が実行されます。
it_IT
it
en_US
en
ベース・クラス・バンドル
ヒント
バンドルのロードに使用されたgetBundle
メソッドは、ベース・クラス・バンドルを返す前に、デフォルトのロケール・クラスを検索します。一致するものが見つからなかった場合は、MissingResourceException
エラーがスローされます。接尾辞のないベース・クラスが、デフォルトとして常に存在している必要があります。そうでない場合は一致が検出されず、例外がスローされます。
コンポーネント自体に含まれていないテキスト文字列がすべて含まれたベース・リソース・バンドルを作成する必要があります。このバンドルは、アプリケーションのデフォルト言語で作成する必要があります。リソース・バンドルは、プロパティ・ファイル、XLIFFファイルまたはJavaクラスとして作成できます。リソース・バンドル・ファイルを作成したら、「リソース・バンドルの編集」ダイアログを使用してファイルを編集できます。
リソース・バンドルをプロパティ・ファイルまたはXLIFFファイルとして作成できます。
始める前に:
どのタイプのリソース・バンドルを作成できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
リソース・バンドルをプロパティ・ファイルまたはXLIFFファイルとして作成する手順:
リソース・バンドルをJavaクラスとして作成できます。
始める前に:
どのタイプのリソース・バンドルを作成できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
リソース・バンドルをJavaクラスとして作成する手順:
例36-3 ベース・リソース・バンドルのJavaクラス
package sample; import java.util.ListResourceBundle; public class MyResources extends ListResourceBundle { @Override protected Object[][] getContents() { return contents; } static final Object[][] contents { {"button_Search", "Search"}, {"button_Reset", "Reset"} }; }
リソース・バンドル・プロパティ・ファイル、XLIFFファイルまたはJavaクラス・ファイルを作成したら、ソース・エディタを使用して編集できます。
始める前に:
どのタイプのリソース・バンドルを定義し編集できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
リソース・バンドルの作成後に編集する手順:
アプリケーションでサポートするロケールを、アプリケーションのfaces-config.xml
ファイルに登録する必要があります。
始める前に:
リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
アプリケーションのロケールを登録する手順:
アプリケーションで使用するリソース・バンドルを、アプリケーションのfaces-config.xml
ファイルに登録する必要があります。
始める前に:
リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
リソース・バンドルを登録するには:
ページ・エンコーディングとレスポンス・エンコーディングを、サポートされているすべての言語に設定し、リソース・バンドルにバインドします。
始める前に:
リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
ページ上でベース・リソース・バンドルを使用する手順:
例36-4 adfBundleを使用したバインド
<af:button text="#{adfBundle['project.EmpMsgBundle'] ['Deptno_LABEL']}"
ADFスキンを使用する場合で、そのスキンのカスタム・リソース・バンドルを作成した場合は、そのリソース・バンドルのローカライズ・バージョンも作成する必要があります。同様に、コントロール・ヒントを使用してテキストを設定するアプリケーションの場合は、そのテキストに対して生成されたリソース・バンドルのローカライズ済バージョンを作成する必要があります。
オーバーライド・バンドルは、Oracle Metadata Services (MDS)フレームワークを使用して開発するカスタマイズ可能なアプリケーションで使用するベース・リソース・バンドルとは異なるキーと値のペアを持つリソース・バンドルです。オーバーライド・バンドルを作成する場合は、ベース・リソース・バンドルのオーバーライドをサポートするように、アプリケーションのadf-config.xml
ファイルを構成する必要があります。たとえば、oracle.demo.CustAppUIBundle
という名前のベース・リソース・バンドルがある場合、例36-5に示すように、アプリケーションのadf-config.xml
ファイルのエントリを構成します。オーバーライド済としてマークされると、そのバンドルのカスタマイズはすべて、カスタマイズ可能なアプリケーションのオーバーライド・バンドルに格納されます。オーバーライド・バンドルは、JDeveloperのデフォルト・ロールおよびカスタマイズ可能なアプリケーションの両方で維持されます。このオーバーライド・バンドルを2つの場所で管理する必要性を回避するために、次のことをお薦めします。
JDeveloperのデフォルト・ロールを使用してベース・リソース・バンドルから別のリソース・バンドルを作成する
カスタマイズ可能なアプリケーションでオーバーライドするキーと値のペアを、ベース・リソース・バンドルからこの別のリソース・バンドルに追加する
カスタマイズ可能なアプリケーションで、これらのキーと値のペアを、別のリソース・バンドルから選択します。これにより、カスタマイズ可能なアプリケーションのオーバーライド・バンドルに新しいキーと値のペアが追加されないこと、カスタマイズ可能なアプリケーションのみがこのオーバーライド・バンドルを使用することが保証されます。
adf-config.xml
ファイルの詳細は、「adf-config.xmlでの構成」を参照してください。MDSを使用したカスタマイズ可能アプリケーションの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「MDSによるアプリケーションのカスタマイズ」の章を参照してください。
例36-5 adf-config.xmlファイルのオーバーライド・バンドルのエントリ
<?xml version="1.0" encoding="UTF-8" ?> <adf-config xmlns="http://xmlns.oracle.com/adf/config" xmlns:config="http://xmlns.oracle.com/bc4j/configuration" xmlns:adf="http://xmlns.oracle.com/adf/config/properties"> ... <adf-resourcebundle-config xmlns="http://xmlns.oracle.com/adf/resourcebundle/config"> <applicationBundleName>oracle/app.../xliffBundle/FusionAppsOverrideBundle</applicationBundleName> <bundleList> <bundleId override="true">oracle.demo.CustAppUIBundle</bundleId> </bundleList> </adf-resourcebundle-config> </adf-config>
ADFアプリケーションを構成すると、エンド・ユーザーがロケール固有のリソース・バンドルを実行時に選択できるようになります。
エンド・ユーザーのブラウザのロケール設定によりランタイム・ロケールが決まるデフォルトの動作ではなく、エンド・ユーザーが実行時にロケールを指定できるように、アプリケーションを構成することができます。アプリケーションで、エンド・ユーザーが好みのロケールを指定し、それらの設定を保存できるようにする場合は、この機能を実装します。
新規のページを作成するか、既存のページを開きます。それを次のように構成します。
ロケール情報を格納するためにバッキングBeanを参照
バッキングBean内のロケール情報を更新するために、エンド・ユーザーが実行時にコントロールを呼び出すことが可能
f:view
タグのlocale
属性によりバッキングBeanを参照
始める前に:
使用可能な構成オプションを理解しておくと役立ちます。詳細は、「エンド・ユーザーが実行時にロケールを指定するためのページの構成」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
エンド・ユーザーがロケールを指定するようにページを構成する手順:
ロケール情報を格納するためのバッキングBeanでページを作成します。
詳細は、「JSFページの作成方法」を参照してください。
エンド・ユーザーがロケールの変更に使用できるコントロール(selectOneChoice
コンポーネントなど)を指定します。
たとえば、「コンポーネント」ウィンドウで、「テキストおよび選択」パネルから、「選択」コンポーネントをドラッグし、ページにドロップします。
次の例に示すように、ロケール値が格納されているバッキングBeanにコントロールをバインドします。
<af:selectOneChoice label="Select Locale" binding="#{backingBeanScope.backing_changeLocale.soc1}" id="soc1"> <af:selectItem label="French" value="FR" binding="#{backingBeanScope.backing_changeLocale.si1}" id="si1"/> ... </af:selectOneChoice>
f:view
タグのlocale
属性をバッキングBean内のロケール値にバインドします。
JSFページの構造ウィンドウで「f:view」
タグを右クリックし、「プロパティに移動」を選択します。
「プロパティ」ウィンドウで「共通」セクションを展開し、「ロケール」フィールドにポインタを置くと表示されるアイコンをクリックしたときに表示されるポップアップ・メニューから「式ビルダー」を選択します。
式ビルダーで、図36-8に示すように、バッキングBean内のロケール値にバインドします。
ページを保存します。
JDeveloperでは、ロケールの変更に使用するコマンド・コンポーネントのバッキングBeanに対する参照が生成されます。例36-6に、selectOneChoice
コンポーネントを使用する例を示します。JDeveloperでは、そのページのバッキングBeanでの必須メソッドも生成されます。例36-7に、例36-6に対応するバッキングBeanの抜粋を示します。
例36-6 バッキングBeanを参照するselectOneChoiceコンポーネント
<af:selectOneChoice label="Select Locale" binding="#{backingBeanScope.backing_changeLocale.soc1}" id="soc1"> <af:selectItem label="French" value="FR" binding="#{backingBeanScope.backing_changeLocale.si1}" id="si1"/> ... </af:selectOneChoice>
例36-7 ロケールを変更するためのバッキングBeanのメソッド
package view.backing; ... import oracle.adf.view.rich.component.rich.input.RichSelectOneChoice; public class ChangeLocale { ... ... private RichSelectOneChoice soc1; ... ... ... public void setD2(RichDocument d2) { this.d2 = d2; } ... public void setSoc1(RichSelectOneChoice soc1) { this.soc1 = soc1; } public RichSelectOneChoice getSoc1() { return soc1; } public void setSi1(RichSelectItem si1) { this.si1 = si1; } ... }
実行時に、エンド・ユーザーは、アプリケーションのロケールを変更するように構成されたコマンド・コンポーネントを呼び出します。バッキングBeanには、更新されたロケール情報が格納されます。f:view
タグのlocale
属性がバッキングBeanを参照するページは、エンド・ユーザーによって指定されたロケールを使用してレンダリングされます。
エンド・ユーザーによって指定されたロケールは、アプリケーションに登録される必要があります。ロケールおよび関連のリソース・バンドルの指定の詳細は、「アプリケーションへのロケールの登録方法」を参照してください。
ADFアプリケーションには、テキスト・リソースに限らず特定のロケールへの翻訳をサポートする機能があります。
ADF Facesでは、テキスト変換の他に、通貨コードなど、その他のタイプの変換や、双方向レンダリングのサポート(BiDiサポート)も自動的に提供されます。アプリケーションは、ユーザーの選択したロケールに基づいて、自動的に適切に表示されます。ただし、trinidad-config.xml
ファイル内でアプリケーションの次のローカライズ設定を手動で設定することもできます。
<currency-code>
: コンバータで通貨コードが指定されていない通貨コードのフォーマットに、oracle.adf.view.faces.converter.NumberConverter
で使用されるデフォルトのISO 4217通貨コードを定義します。
<number-grouping-separator>
: 数値の桁区切りに使用される文字(カンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。設定した場合、この値が、解析およびフォーマット時に、oracle.adf.view.faces.converter.NumberConverter
で使用されます。
<decimal-separator>
: 小数点(ピリオド、カンマなど)に使用されるセパレータを定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。設定した場合、この値が、解析およびフォーマット時に、oracle.adf.view.faces.converter.NumberConverter
で使用されます。
<right-to-left>
: ページにテキストが表示される方向を定義します。ADF Facesでは、双方向レンダリングがサポートされ、現在のロケールからレンダリング方向が自動的に導出されますが、true
またはfalse
の値を使用して、デフォルトのページ・レンダリング方向を明示的に設定できます。
<formatting-locale>
: 選択されたロケールに適切な日付および数値の書式を定義します。デフォルトで、ADF Facesは、ローカライズされたテキストに使用されているロケールと同じロケールの日付と数値の書式を設定します。日付と数値を別のロケールで書式設定する場合、IANA形式のロケール(ja、fr-CAなど)を使用できます。この要素の内容は、IANA文字列を指すEL式またはjava.util.Locale
オブジェクトです。
日付を処理して表示するためのタイムゾーンと、2桁のみの年を解析するための年オフセットを設定するには、次の要素を使用します。
<time-zone>
: 値が設定されていない場合、ADF Facesではデフォルトで、アプリケーション・サーバーで使用されているタイムゾーンが使用されます。必要な場合は、TimeZone
と評価されるEL式を使用できます。この値は、文字列をDate
に変換する際にorg.apache.myfaces.trinidad.converter.DateTimeConverter
で使用されます。
<two-digit-year-start>
: この値は、グレゴリオ暦の年で指定します。org.apache.myfaces.trinidad.converter.DateTimeConverter
で使用されて、文字列をDate
に変換します。この要素は、値が設定されない場合、デフォルトで1950年に設定されます。必要な場合は、静的整数値またはInteger
オブジェクトと評価されるEL式を使用できます。
trinidad-config.xml
ファイルで構成できる要素の詳細は、「trinidad-config.xmlでの構成」を参照してください。
アプリケーションのtrinidad-config.xml
ファイルに要素を入力することで、オプションのローカライゼーション・プロパティを構成できます。
始める前に:
どのオプション・ローカライズ・プロパティを変更できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。
オプションのローカライゼーション・プロパティを構成する手順:
<trinidad-config>
にドラッグ・アンド・ドロップします。例36-8に、オプションのローカライゼーション要素すべてが設定されたtrinidad-config.xml
ファイルのサンプルを示します。
例36-8 通貨コードおよび数値と小数点のセパレータの構成
<!-- Set the currency code to US dollars. --> <currency-code>USD</currency-code> <!-- Set the number grouping separator to period for German --> <!-- and comma for all other languages --> <number-grouping-separator> #{view.locale.language=='de' ? '.' : ','} </number-grouping-separator> <!-- Set the decimal separator to comma for German --> <!-- and period for all other languages --> <decimal-separator> #{view.locale.language=='de' ? ',' : '.'} </decimal-separator> <!-- Render the page right-to-left for Arabic --> <!-- and left-to-right for all other languages --> <right-to-left> #{view.locale.language=='ar' ? 'true' : 'false'} </right-to-left> <formatting-locale> #{request.locale} </formatting-locale> <!-- Set the time zone to Pacific Daylight Savings Time --> <time-zone>PDT</time-zone>