プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発
12c (12.2.1.2.0)
E82917-02
目次へ移動
目次

前
次

36 ページの国際化およびローカライズ

この章では、ADFアプリケーションを様々なロケールおよび国際的なユーザー環境で使用できるように構成する方法について説明します。JDeveloperで自動的にリソース・バンドルを作成する機能、リソース・バンドルおよびロケールを手動で定義する方法およびアプリケーションのADF Facesのローカリゼーション・プロパティの構成方法などの主要な機能についても説明します。

この章の内容は次のとおりです。

36.1 ADF Facesページの国際化およびローカライズについて

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における自動リソース・バンドル統合の使用方法」を参照してください。

注意:

データベースから取得されたテキストは変換されません。このドキュメントでは、静的テキストのローカライズ方法については説明しますが、データベース内に格納されているテキストのローカライズ方法については説明しません。

36.1.1 ページの国際化およびローカライズのユースケースおよび例

たとえば、「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

36.1.2 ページの国際化およびローカライズの追加機能

アプリケーションを国際化またはローカライズする前に、その他のADF Faces機能を理解しておくと役に立ちます。また、いったんアプリケーションを国際化またはローカライズすると、アクセシビリティなどの機能を追加したり、ADF Facesコンポーネントを右から左にレンダリングしたりする必要があることに気付く場合があります。使用できるその他の機能へのリンクは、次のとおりです。

  • テキストでのパラメータの使用: コンポーネントに表示されるテキストに、実行時に解決されるパラメータを含める場合は、ADF Faces EL書式タグを使用できます。詳細は、「EL書式タグの使用方法」を参照してください。

  • 擬似クラス: ADFスキンでは、特定の地域でのアプリケーションのレンダリングを変更するために使用できる多数の擬似クラスをサポートしています。たとえば、:rtl擬似クラスでは、ADF Facesコンポーネントを右から左へレンダリングします。これは、アプリケーションをアラビア語やヘブライ語など、右から左へ読む言語にローカライズする場合に便利です。詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。

  • アクセシビリティ: アプリケーション内のページをアクセス可能にできます。詳細は、「アクセス可能なADF Facesページの開発」を参照してください。

  • グローバル・リソース文字列: デフォルトのリソース・バンドルには、ADF Facesコンポーネントでサポートされるグローバル・リソース文字列と、個々のコンポーネントに固有のリソース文字列が格納されています。これらのリソース文字列の詳細は、Oracle ADF Facesスキン・セレクタ・タグ・リファレンスを参照してください。

  • タッチ装置: ADF Facesコンポーネントはタッチ装置によって異なる動作および表示を行うことがあります。詳細は、「ADF Facesを使用したタッチ装置のWebアプリケーションの作成」を参照してください

  • ドラッグ・アンド・ドロップ: ユーザーがコンポーネントをページの別の領域にドラッグ・アンド・ドロップできるように、コンポーネントを構成できます。詳細は、「ドラッグ・アンド・ドロップ機能の追加」を参照してください

36.2 JDeveloperにおける自動リソース・バンドル統合の使用

JDeveloperでは、変換可能な文字列とベース・リソース・バンドルをテキスト・ソース・エディタで同期して、ADF Facesコンポーネントに追加するテキスト・リソースの作成プロセスを簡略化できます。

ビジュアル・エディタでADF Facesコンポーネントを編集する際、JDeveloperでは、デフォルトのリソース・バンドルへのテキスト・リソースの自動作成がサポートされています。ユーザー定義の文字列を静的な値として処理するには、「リソース・バンドル・オプションの設定方法」で説明されているように、「プロジェクト・プロパティ」ダイアログで「バンドルの自動同期化」チェック・ボックスを選択解除します。

自動リソース・バンドル統合は、ページまたはプロジェクトごとに1つのリソース・バンドルをサポートするように構成できます。

図36-1に示される「テキスト・リソースの選択」ダイアログを使用して変換可能なテキスト文字列を編集できます。このダイアログは、「プロパティ」ウィンドウで、変換可能なプロパティのプロパティ・フィールドにポインタを置くと表示されるアイコンをクリックして、ポップアップ・メニューから「テキスト・リソースの選択」を選択するとアクセスできます。このダイアログの使用方法の詳細は、「JDeveloper生成リソース・バンドルでのエントリの作成方法」を参照してください。

図36-1 「テキスト・リソースの選択」ダイアログ

この図は周囲のテキストで説明しています

36.2.1 リソース・バンドル・オプションの設定方法

プロジェクトのリソース・バンドル・オプションは、「プロジェクト・プロパティ」ダイアログで設定できます。

始める前に:

JDeveloperでリソース・バンドルがどのように管理されるかを理解しておくと役立ちます。詳細は、「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

プロジェクトにリソース・バンドル・オプションを設定する方法:

  1. 「アプリケーション」ウィンドウで、プロジェクトをダブルクリックします。
  2. 図36-2に示すように、「プロジェクト・プロパティ」ダイアログで、「リソース・バンドル」を選択してリソース・バンドル・オプションを表示します。

    図36-2 「プロジェクト・プロパティ」の「リソース・バンドル」ダイアログ

    この図は周囲のテキストで説明しています
  3. JDeveloperにより自動的にデフォルトのリソース・ファイルが生成されるようにする場合は、「バンドルの自動同期化」を選択します。
  4. 次に示すいずれかのリソース・バンドル・ファイル・オプションを選択します。
    • 1プロジェクト当たり1バンドル - <ProjectName>.propertiesという名前のファイルに構成されます。

    • 1ファイル当たり1バンドル - named <FileName>.propertiesという名前のファイルに構成されます。

  5. ドロップダウン・リストからリソース・バンドル・タイプを選択します。
    • リスト・リソース・バンドル

    • プロパティ・バンドル

    • XML Localization Interchange File Format (XLIFF)バンドル

  6. 「OK」をクリックします。

36.2.2 リソース・バンドル・オプションを設定する場合の処理

JDeveloperでは、図36-2に示すように、「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで行った選択に基づいて、特定のタイプの1つ以上のリソース・バンドルが生成されます。図36-1で示す「テキスト・リソースの選択」ダイアログを初めて呼び出したときに、リソース・バンドルが生成されます。

たとえば、「1プロジェクト当たり1バンドル」チェック・ボックスを選択し、「リソース・バンドル・タイプ」ドロップダウン・リストから「リスト・リソース・バンドル」値を選択するとします。初めて「テキスト・リソースの選択」ダイアログを呼び出すと、JDeveloperではそのプロジェクト用に1つのリソース・バンドルが生成されます。生成されたリソース・バンドルは、「プロジェクト・プロパティ」ダイアログのデフォルトのプロジェクト・バンドル名をとったJavaクラスです(ViewControllerBundle.javaなど)。

JDeveloperでは、「XMLローカライズ交換ファイル形式(XLIFF)バンドル」オプションを選択した場合は.xlfファイルとしてリソース・バンドルが、「プロパティ・バンドル」オプションを選択した場合は.propertiesファイルが生成されます。

デフォルトでは、JDeveloperにより、プロジェクトの「アプリケーション・ソース」ディレクトリの「view」サブディレクトリに、生成されたリソース・バンドルが作成されます。

36.2.3 JDeveloperで生成されたリソース・バンドルにエントリを作成する方法

JDeveloperでは、「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで選択した値に基づいて、1つ以上のリソース・バンドルが生成されます。「Properties」ウィンドウのコンポーネント・プロパティから「テキスト・リソースの選択」ダイアログを初めて呼び出したときに、リソース・バンドルが生成されます。

JDeveloperでは、「テキスト・リソースの選択」ダイアログで入力した値に基づいて、リソース・バンドルにキー値のペアが記述されます。また、リソース・バンドルから既存のキー値のペアを選択して、コンポーネントのランタイム表示値をレンダリングすることもできます。

始める前に:

JDeveloperでリソース・バンドルがどのように管理されるかを理解しておくと役立ちます。詳細は、「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

JDeveloperで生成されたリソース・バンドルでエントリを作成する手順:

  1. JSFページで、ランタイム値を記述するコンポーネントを選択します。

    たとえば、af:inputTextコンポーネントを選択します。

  2. リソース・バンドルに新しいエントリを作成するには、「プロパティ」ウィンドウで、プロパティ・フィールドにポインタを置くと表示されるアイコンをクリックしたときに表示されるポップアップ・メニューから「テキスト・リソースの選択」を選択します。

    ポップアップ・メニューの「テキスト・リソースの選択」エントリは、テキスト・リソースをサポートするプロパティに対してのみ表示されます。たとえば、af:inputTextコンポーネントの「ラベル」プロパティです。

  3. 実行時に「表示値」入力フィールドに表示する値を、図36-1に示すように記述します。

    JDeveloperにより、「キー」入力フィールドに値が生成されます。

  4. 必要に応じて、「説明」入力フィールドに説明を記述します。

    注意:

    JDeveloperでは、「表示値」入力フィールドに入力した値と一致するテキスト・リソースが存在する場合、「一致するテキスト・リソース」フィールドに一致するテキスト・リソースが表示されます。

  5. 「保存して選択」をクリックします。

36.2.4 JDeveloperで生成されたリソース・バンドルにエントリを作成した場合の処理

JDeveloperでは、「テキスト・リソースの選択」ダイアログで定義したキー値のペアをリソース・バンドルに記述します。「プロジェクト・プロパティ」ダイアログのリソース・バンドル・オプションのパートで選択するオプションにより、JDeveloperでキー値のペアが記述されるリソース・バンドルのタイプが決まります。詳細は、「リソース・バンドル・オプションを設定する場合の処理」を参照してください。

リソース・バンドル・エントリを定義したコンポーネント・プロパティでは、EL式を使用して、実行時にリソース・バンドルから値を取得します。たとえば、af:inputTextコンポーネントの「ラベル」プロパティは、次の式に似たEL式を参照します。

#{viewcontrollerBundle.Label1}

viewcontrollerBundleはリソース・バンドルを参照し、Label1はランタイム値のキーです。

36.3 リソース・バンドルおよびロケールの手動による定義

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ファイルの両方が検索されるため、コードに影響はありません。

プロパティよりもクラスの方が優先されます。このため、クラス・ファイルとプロパティ・ファイルの両方に同じ言語に対するキーが存在する場合、クラス・ファイル内の値がユーザーに表示されます。また、ロードするバンドルを決定するための検索アルゴリズムは次のとおりです。

  1. (ベース・クラス)+(特定の言語)+(特定の国)+(特定のバリアント)

  2. (ベース・クラス)+(特定の言語)+(特定の国)

  3. (ベース・クラス)+(特定の言語)

  4. (ベース・クラス)+(デフォルトの言語)+(デフォルトの国)+(デフォルトのバリアント)

  5. (ベース・クラス)+(デフォルトの言語)+(デフォルトの国)

  6. (ベース・クラス)+(デフォルトの言語)

たとえば、ユーザーのブラウザがイタリア語ロケールに設定されていて、アプリケーションのデフォルト・ロケールが米語の場合、アプリケーションでは最も近いものを検出するために、次の順序で検索が実行されます。

  1. it_IT

  2. it

  3. en_US

  4. en

  5. ベース・クラス・バンドル

ヒント:

バンドルのロードに使用されたgetBundleメソッドは、ベース・クラス・バンドルを返す前に、デフォルトのロケール・クラスを検索します。一致するものが見つからなかった場合は、MissingResourceExceptionエラーがスローされます。接尾辞のないベース・クラスが、デフォルトとして常に存在している必要があります。そうでない場合は一致が検出されず、例外がスローされます。

コンポーネント自体に含まれていないテキスト文字列がすべて含まれたベース・リソース・バンドルを作成する必要があります。このバンドルは、アプリケーションのデフォルト言語で作成する必要があります。リソース・バンドルは、プロパティ・ファイル、XLIFFファイルまたはJavaクラスとして作成できます。リソース・バンドル・ファイルを作成したら、「リソース・バンドルの編集」ダイアログを使用してファイルを編集できます。

36.3.1 リソース・バンドルをプロパティ・ファイルまたはXLIFFファイルとして作成する方法

リソース・バンドルをプロパティ・ファイルまたはXLIFFファイルとして作成できます。

始める前に:

どのタイプのリソース・バンドルを作成できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

リソース・バンドルをプロパティ・ファイルまたはXLIFFファイルとして作成する手順:

  1. 「アプリケーション」ウィンドウでリソース・バンドル・ファイルを置きたい場所を右クリックし、「新規」「ギャラリから」を選択します。

    注意:

    ベース・リソース・バンドルのローカライズ済バージョンを作成する場合は、ベース・ファイルと同じディレクトリにファイルを保存してください。

  2. 「新規ギャラリ」で、「一般」「ファイル」の順に選択し、「OK」をクリックします。
  3. 「ファイルの作成」で、プロパティ・ファイルを使用するファイルには表記規則<name><_lang>.propertiesを使用して、XLIFFファイルを使用するファイルには表記規則<name><_lang>.xlfを使用して、ファイルの名前を入力します。<_lang>接尾辞(ドイツ語では_deなど)は翻訳したファイルに付けられ、元となる言語では省略されます。

    注意:

    ベース・リソース・バンドルのローカライズ済バージョンを作成する場合は、ファイル名にISO 639の小文字の言語コードを追加する必要があります。たとえば、UIResourcesバンドルのイタリア語バージョンは、UIResources_it.propertiesになります。複数の国で1つの言語を使用する場合は、ISO 3166の大文字の国コードを追加できます(たとえば、スイスの場合はit_CH)。また、オプションの非標準バリアント(たとえば、プラットフォームや地域の情報を提供するバリアント)を追加することもできます。

    ベース・リソース・バンドルを作成する場合は、コードを追加しないでください。

  4. ファイルにコンテンツを入力します。キーと値のペアを入力することで、コンテンツを手動で入力できます。「リソース・バンドル・ファイルの編集方法」で説明されているように、「リソース・バンドルの編集」ダイアログを使用してキーと値のペアを入力できます。
    • プロパティ・ファイルを作成している場合は、このバンドルの静的テキストの文字列ごとに、キーと値を作成します。キーは、文字列の一意の識別子です。値は、バンドルの言語でのテキスト文字列です。ベース・リソース・バンドルのローカライズ済バージョンを作成する場合、このバージョン内に存在しないキーは、ベース・クラスから値を継承します。

      注意:

      非ASCII文字はすべてUnicodeエスケープにするか、コンパイル時のエンコーディングを明示的に指定する必要があります。たとえば、次のように指定します。

      javac -encoding ISO8859_5 UIResources_it.java

      たとえば、myDemoページのタイトルのキーと値は、次のようになります。

      myDemo.pageTitle=My Purchase Requests
      
    • XLIFFファイルを作成している場合は、キーと値のペアごとに適切なタグを入力します。次に例を示します。

      <?xml version="1.0" encoding="windows-1252" ?>
      <xliff version="1.1" xmlns="urn:oasis:names:tc:xliff:document:1.1">
        <file source-language="en" original="myResources" datatype="xml">
          <body>
            <trans-unit id="NAME">
              <source>Name</source>
              <target/>
              <note>Name of employee</note>
            </trans-unit>
            <trans-unit id="HOME_ADDRESS">
              <source>Home Address</source>
              <target/>
              <note>Adress of employee</note>
            </trans-unit>
            <trans-unit id="OFFICE_ADDRESS">
              <source>Office Address</source>
              <target/>
              <note>Office building </note>
            </trans-unit>
          </body>
        </file>
      </xliff>
      
  5. すべての値を入力したら、「OK」をクリックします。

36.3.2 リソース・バンドルをJavaクラスとして作成する方法

リソース・バンドルをJavaクラスとして作成できます。

始める前に:

どのタイプのリソース・バンドルを作成できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

リソース・バンドルをJavaクラスとして作成する手順:

  1. 「アプリケーション」ウィンドウでファイルを置きたい場所を右クリックし、「新規」「ギャラリから」を選択します。

    注意:

    ベース・リソース・バンドルのローカライズ済バージョンを作成する場合、これをベース・ファイルと同じディレクトリに保存する必要があります。

  2. 「新規ギャラリ」で、「一般」「Javaクラス」の順に選択し、「OK」をクリックします。
  3. 「Javaクラスの作成」ダイアログで、クラスの名前とパッケージを入力します。クラスはjava.util.ListResourceBundleを拡張している必要があります。

    注意:

    ベース・リソース・バンドルのローカライズ済バージョンを作成する場合は、クラス名にISO 639の小文字の言語コードを追加する必要があります。たとえば、UIResourcesバンドルのイタリア語バージョンは、UIResources_it.javaになります。複数の国で1つの言語を使用する場合は、ISO 3166の大文字の国コードを追加できます(たとえば、スイスの場合はit_CH)。また、オプションの非標準バリアント(たとえば、プラットフォームや地域の情報を提供するバリアント)を追加することもできます。

    ベース・リソース・バンドルを作成する場合は、コードを追加しないでください。

  4. キーと値のペアの配列を返すgetContents()メソッドを実装します。適切な値を使用して、バンドルのキーの配列を作成します。または、「リソース・バンドル・ファイルの編集方法」で説明されているように、「リソース・バンドルの編集」ダイアログを使用して自動的にコードを生成します。例36-3に、ベース・リソース・バンドルのJavaクラスを示します。

    注意:

    キーはStringオブジェクトであることが必要です。ベース・リソース・バンドルのローカライズ済バージョンを作成する場合、このバージョン内に存在しないキーは、ベース・クラスから値を継承します。

例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"}
      };
}

36.3.3 リソース・バンドル・ファイルの編集方法

リソース・バンドル・プロパティ・ファイル、XLIFFファイルまたはJavaクラス・ファイルを作成したら、ソース・エディタを使用して編集できます。

始める前に:

どのタイプのリソース・バンドルを定義し編集できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

リソース・バンドルの作成後に編集する手順:

  1. メイン・メニューから「アプリケーション」→「リソース・バンドルの編集」を選択します。
  2. 「リソース・バンドルの編集」ダイアログで、図36-3に示されているように、「リソース・バンドル」ドロップダウン・リストから編集するリソース・バンドル・ファイルを選択するか、編集するリソース・バンドル・ファイルが「リソース・バンドル」ドロップダウン・リストに表示されない場合は、「検索」アイコンをクリックして、「リソース・バンドルの選択」ダイアログを起動します。

    図36-3 「リソース・バンドルの編集」ダイアログ

    この図は周囲のテキストで説明しています
  3. 「リソース・バンドルの選択」ダイアログで、「ファイル・タイプ」ドロップダウン・リストからファイル・タイプを選択します。図36-4に示すように、編集するリソース・バンドルに移動します。「OK」をクリックします。

    図36-4 「リソース・バンドルの選択」ダイアログ

    この図は周囲のテキストで説明しています
  4. 「リソース・バンドルの編集」ダイアログで、図36-5に示すように、「追加」アイコンをクリックしてキーと値のペアを追加します。完了したら「OK」をクリックします。

    図36-5 リソース・バンドルへの値の追加

    この図は周囲のテキストで説明しています

36.3.4 アプリケーションへのロケールの登録方法

アプリケーションでサポートするロケールを、アプリケーションのfaces-config.xmlファイルに登録する必要があります。

始める前に:

リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

アプリケーションのロケールを登録する手順:

  1. 「アプリケーション」ウィンドウで、WEB-INFノードを展開し、faces-config.xmlをダブルクリックします。
  2. エディタ・ウィンドウで、「概要」タブをクリックします。
  3. 概要エディタで、「アプリケーション」ナビゲーション・タブをクリックします。
  4. 図36-6に示されているとおり、「アプリケーション」ページの「ロケール構成」セクションで「追加」をクリックしてロケールのコードを追加します。

    図36-6 faces-config.xmlへのロケールの追加

    この図は周囲のテキストで説明しています

    ロケールを追加したら、faces-config.xmlファイルのコードは次のようになります。

    <locale-config>
          <default-locale>en</default-locale>
          <supported-locale>ar</supported-locale>
          <supported-locale>ca</supported-locale>
          <supported-locale>cs</supported-locale>
          <supported-locale>da</supported-locale>
          <supported-locale>de</supported-locale>
          <supported-locale>zh_CN</supported-locale>
     </locale-config>

36.3.5 アプリケーションへのリソース・バンドルの登録方法

アプリケーションで使用するリソース・バンドルを、アプリケーションのfaces-config.xmlファイルに登録する必要があります。

始める前に:

リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

リソース・バンドルを登録するには:

  1. 「アプリケーション」ウィンドウで、WEB-INFノードを展開し、faces-config.xmlをダブルクリックします。
  2. エディタ・ウィンドウで、「概要」タブをクリックします。
  3. 概要エディタで、「アプリケーション」ナビゲーション・タブをクリックします。
  4. 「アプリケーション」ページの「リソース・バンドル」セクションで、「追加」をクリックして、図36-7に示すように、アプリケーションにより使用されるメッセージが含まれたベース・バンドルの完全修飾名およびEL式でバンドルの参照に使用できる変数名を入力します。

    図36-7 faces-config.xmlへのリソース・バンドルの追加

    この図は周囲のテキストで説明しています

    リソース・バンドルを追加したら、faces-config.xmlファイルのコードは次のようになります。

    <resource-bundle>
       <base-name>oracle.summit.SummitADF</base-name>
       <var>res</var>
    </resource-bundle>
    

36.3.6 アプリケーションでのリソース・バンドルの使用方法

ページ・エンコーディングとレスポンス・エンコーディングを、サポートされているすべての言語に設定し、リソース・バンドルにバインドします。

始める前に:

リソース・バンドルを手動でどのように管理できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

ページ上でベース・リソース・バンドルを使用する手順:

  1. ページがJSPドキュメントの場合は、ページ・エンコーディングとレスポンス・エンコーディングを、サポートされているすべての言語のスーパーセットに設定します。エンコーディングが設定されていない場合、ページ・エンコーディングはデフォルトで、ページ・ディレクティブのcontentType属性を使用して設定されたレスポンス・エンコーディングの値に設定されます。次の例に、サンプル・ページのエンコーディングを示します。
    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
        <jsp:directive.page contentType="text/html;charset=UTF-8"/>
        <f:view>
    
  2. <resource-bundle>要素用にfaces-config.xmlファイルに定義されている変数を使用して、ページ上に表示される静的テキストの文字列を表すすべての属性を、リソース・バンドル内の適切なキーにバインドします。次の例に、myDemoページの「View」ボタンのコードを示します。
    <af:button text="#{res['myDemo.buttonbar.view']}"
                      . . . />
    

    ヒント:

    次の構文をソース・エディタに入力すると、JDeveloperでは、リソース・バンドル内の文字列に解決されるキーのドロップダウン・リストが表示されます。

    <af:button text="#{res

    ドロップダウン・リストからキーを選択すると、JDeveloperによりEL式が完成されます。

  3. adfBundleキーワードを使用して、特定のリソース・バンドルのリソース文字列をJSFページのEL式として解決することもできます。

    使用書式は#{adfBundle[ bundleID ] [ resource_Key ]}で、bundleIDは完全修飾バンドルID (project.EmpMsgBundleなど)、resource_Keyはバンドル内のリソース・キー(Deptno_LABELなど)です。例36-4では、特定のリソース・バンドルのリソース文字列をボタンのテキストの指定に使用するために、adfBundleがどのように使用されるかを示しています。

例36-4 adfBundleを使用したバインド

<af:button text="#{adfBundle['project.EmpMsgBundle'] ['Deptno_LABEL']}"

36.3.7 ADFスキンおよびコントロールのヒントに関する必知事項

ADFスキンを使用する場合で、そのスキンのカスタム・リソース・バンドルを作成した場合は、そのリソース・バンドルのローカライズ・バージョンも作成する必要があります。同様に、コントロール・ヒントを使用してテキストを設定するアプリケーションの場合は、そのテキストに対して生成されたリソース・バンドルのローカライズ済バージョンを作成する必要があります。

36.3.8 カスタマイズ可能アプリケーションでのリソース・バンドルのオーバーライドに関する必知事項

オーバーライド・バンドルは、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>

36.4 エンド・ユーザーが実行時にロケールを指定するためのページの構成

ADFアプリケーションを構成すると、エンド・ユーザーがロケール固有のリソース・バンドルを実行時に選択できるようになります。

エンド・ユーザーのブラウザのロケール設定によりランタイム・ロケールが決まるデフォルトの動作ではなく、エンド・ユーザーが実行時にロケールを指定できるように、アプリケーションを構成することができます。アプリケーションで、エンド・ユーザーが好みのロケールを指定し、それらの設定を保存できるようにする場合は、この機能を実装します。

36.4.1 エンド・ユーザーがロケールを指定するページの構成方法

新規のページを作成するか、既存のページを開きます。それを次のように構成します。

  • ロケール情報を格納するためにバッキングBeanを参照

  • バッキングBean内のロケール情報を更新するために、エンド・ユーザーが実行時にコントロールを呼び出すことが可能

  • f:viewタグのlocale属性によりバッキングBeanを参照

始める前に:

使用可能な構成オプションを理解しておくと役立ちます。詳細は、「エンド・ユーザーが実行時にロケールを指定するためのページの構成」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

エンド・ユーザーがロケールを指定するようにページを構成する手順:

  1. ロケール情報を格納するためのバッキングBeanでページを作成します。

    詳細は、「JSFページの作成方法」を参照してください。

  2. エンド・ユーザーがロケールの変更に使用できるコントロール(selectOneChoiceコンポーネントなど)を指定します。

    たとえば、「コンポーネント」ウィンドウで、「テキストおよび選択」パネルから、「選択」コンポーネントをドラッグし、ページにドロップします。

  3. 次の例に示すように、ロケール値が格納されているバッキング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>
    
  4. f:viewタグのlocale属性をバッキングBean内のロケール値にバインドします。

    1. JSFページの構造ウィンドウで「f:view」タグを右クリックし、「プロパティに移動」を選択します。

    2. 「プロパティ」ウィンドウで「共通」セクションを展開し、「ロケール」フィールドにポインタを置くと表示されるアイコンをクリックしたときに表示されるポップアップ・メニューから「式ビルダー」を選択します。

    3. 式ビルダーで、図36-8に示すように、バッキングBean内のロケール値にバインドします。

      図36-8 locale属性をバッキングBeanにバインドする式ビルダー

      この図は周囲のテキストで説明しています
  5. ページを保存します。

36.4.2 ロケール指定するページを構成した場合の処理

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;
    }
...
}

36.4.3 実行時の処理: エンド・ユーザーによるロケールの指定方法

実行時に、エンド・ユーザーは、アプリケーションのロケールを変更するように構成されたコマンド・コンポーネントを呼び出します。バッキングBeanには、更新されたロケール情報が格納されます。f:viewタグのlocale属性がバッキングBeanを参照するページは、エンド・ユーザーによって指定されたロケールを使用してレンダリングされます。

エンド・ユーザーによって指定されたロケールは、アプリケーションに登録される必要があります。ロケールおよび関連のリソース・バンドルの指定の詳細は、「アプリケーションへのロケールの登録方法」を参照してください。

36.5 ADF Facesのオプションのローカライゼーション・プロパティの構成

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での構成」を参照してください。

36.5.1 オプションのローカライゼーション・プロパティの構成方法

アプリケーションのtrinidad-config.xmlファイルに要素を入力することで、オプションのローカライゼーション・プロパティを構成できます。

始める前に:

どのオプション・ローカライズ・プロパティを変更できるかを理解しておくと役立ちます。詳細は、「リソース・バンドルおよびロケールの手動による定義」を参照してください。

他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ページの国際化およびローカライズの追加機能」を参照してください。

オプションのローカライゼーション・プロパティを構成する手順:

  1. 「アプリケーション」ウィンドウで、WEB-INFノードを展開し、trinidad-config.xmlをダブルクリックします。
  2. 「コンポーネント」ウィンドウの「トリニダード構成要素」ページで、構成するローカライゼーション要素を<trinidad-config>にドラッグ・アンド・ドロップします。
  3. 目的の値を入力します。

例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>