ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11g リリース2(11.1.2.4.0)
B66719-05
  目次へ移動
目次

前
 
次
 

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

この章では、ユーザーのブラウザの適切な言語でテキストが表示されるように、JSFページまたはアプリケーションを構成する方法を説明します。

この章では、次の項目について説明します。

29.1 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>を追加した場合、コンポーネント内に含まれるテキストはすべて自動的にイタリア語で表示されます。詳細は、29.3.3項「アプリケーションへのロケールおよびリソース・バンドルの登録方法」を参照してください。

text属性を設定してaf:commandButtonコンポーネントのラベルを定義する場合など、コンポーネントに追加するテキストには、実際のテキストが含まれているリソース・バンドルを指定して、各ロケール版のリソース・バンドルを作成し、<locale-config>要素を追加して、アプリケーションのfaces-config.xmlファイルにデフォルトおよびサポートされるロケールを定義する必要があります。また、アプリケーションのすべてのページでリソース・バンドルを使用できるようにするには、アプリケーションのfaces-config.xmlファイルに<resource-bundle>要素を追加する必要があります。リソース・バンドルを構成および登録すると、式言語(EL)エディタによりバンドルのキーが表示され、アプリケーション・ページでのバンドルの参照が簡単になります。

ADFコンポーネントに追加するテキストのテキスト・リソースを作成するプロセスを簡略化するために、JDeveloperでは、ビジュアル・エディタの変換可能な文字列に関する、リソース・バンドルの自動同期がサポートされています。ビジュアル・エディタまたはプロパティ・インスペクタで直接コンポーネントを編集すると、ベース・リソース・バンドルにテキスト・リソースが自動的に作成されます。詳細は、29.2項「JDeveloperにおける自動リソース・バンドル統合の使用方法」を参照してください。


注意:

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


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

たとえば、「My Purchase Requests」というタイトルのページがあるとします。My Purchase Requestsという文字列をaf:panelBoxコンポーネントのtext属性の値として設定するのではなく、text属性の値をUIResourcesリソース・バンドル内のキーにバインドします。例29-1に示すように、UIResourcesリソース・バンドルは、アプリケーションのfaces-config.xmlファイルに登録されます。

例29-1 JSF構成ファイルのリソース・バンドル要素

<resource-bundle>
  <var>res</var>
  <base-name>resources.UIResources</base-name>
</resource-bundle>

リソース・バンドルには、EL式に使用可能な変数名(この場合はres)が提供されます。例29-2に示すように、ページでは、af:panelBoxコンポーネントのtitle属性が、そのリソース・バンドル内のmyDemo.pageTitleキーにバインドされます。

例29-2 リソース・バンドルを参照するコンポーネント・テキスト

<af:panelBox text="#{res['myDemo.pageTitle']} 

UIResourcesリソース・バンドル内には、アプリケーションの各ページに表示されるすべての静的テキスト、メッセージのテキスト、グローバル・テキスト(汎用ラベルなど)に対する英語のエントリがあります。例29-3に、myDemoページのキーを示します。

例29-3 英語で表示されるmyDemoページのリソース・バンドル・キー

#myDemo Screen
myDemo.pageTitle=My Purchase Requests
myDemo.menubar.openLink=Open Requests
myDemo.menubar.pendingLink=Requests Awaiting customer
myDemo.menubar.closedLink=Closed Requests
myDemo.menubar.allRequests=All Requests
myDemo.menubar.newLink=Create New Purchase Request
myDemo.selectAnd=Select and 
myDemo.buttonbar.view=View
myDemo.buttonbar.edit=Edit

バナー・イメージのテキストおよびデータベースから取得されたデータは変換されないことに注意してください。

例29-4に、イタリア語ロケール・バージョンのリソース・バンドル(UIResources_it)を示します。選択ファセットのタイトルに対するエントリがないのに、「Select」が自動的に「Seleziona」に変換されていることに注意してください。これは、このテキストがADF Faces表コンポーネントの選択ファセットの一部になっているためです。

例29-4 イタリア語で表示されるmyDemoページのリソース・バンドル・キー

#myDemo Screen
myDemo.pageTitle=Miei Ticket
myDemo.menubar.openLink=Ticket Aperti
myDemo.menubar.pendingLink=Ticket in Attesa del Cliente
myDemo.menubar.closedLink=Ticket Risolti
myDemo.menubar.allRequests=Tutti i Ticket
myDemo.menubar.newLink=Creare Nuovo Ticket
myDemo.selectAnd=Seleziona e  
myDemo.buttonbar.view=Vedere Dettagli
myDemo.buttonbar.edit=Aggiorna

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

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

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

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

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

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

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

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

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

次のいずれかの方法で変換可能なテキスト文字列を編集できます。

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

プロジェクトを作成したら、「プロジェクト・プロパティ」ダイアログにリソース・バンドル・オプションを設定できます。

始める前に:

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

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

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

  1. アプリケーション・ナビゲータで、プロジェクトをダブルクリックします。

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

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

    「プロジェクト・プロパティ」の「リソース・バンドル」。
  3. JDeveloperにより自動的にデフォルトのリソース・ファイルが生成されるようにする場合は、「バンドルの自動同期化」を選択します。

  4. 次に示すいずれかのリソース・バンドル・ファイル・オプションを選択します。

    • 1プロジェクト当たり1バンドル - <ProjectName>.propertiesという名前のファイルに構成されます。

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

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

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

    • リスト・リソース・バンドル

    • プロパティ・バンドル

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

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

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

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

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

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

29.2.3 JDeveloper生成リソース・バンドルでのエントリの作成方法

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

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

始める前に:

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

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

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

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

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

  2. プロパティ・インスペクタで、プロパティのドロップダウン・リストを使用して「テキスト・リソースの選択」を選択し、リソース・バンドルに新規のエントリを作成します。

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

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

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

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


    注意:

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


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

29.2.4 JDeveloper生成リソース・バンドルでエントリを生成する場合の処理

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

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

#{viewcontrollerBundle.NAME}

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

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

リソース・バンドルには多数の名前の付いたリソースが含まれており、名前付きリソースのデータ型は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エラーがスローされます。接尾辞のないベース・クラスが、デフォルトとして常に存在している必要があります。存在しない場合は一致が検出されず、例外がスローされます。


29.3.1 ベース・リソース・バンドルの定義方法

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

始める前に:

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

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

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

  1. JDeveloperで、新規ファイルを作成します。

    • アプリケーション・ナビゲータで、ファイルの保存場所を右クリックし、ポップアップ・メニューから「新規」を選択して「新規ギャラリ」を開きます。


      注意:

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


    • 「カテゴリ」ツリーで「一般」を選択し、「項目」リストで「ファイル」を選択します。「OK」をクリックします。

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


      注意:

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

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


  2. ファイルにコンテンツを入力します。キーと値のペアを入力することで、コンテンツを手動で入力できます。29.3.2項「リソース・バンドル・ファイルの編集方法」で説明されているように、「リソース・バンドルの編集」ダイアログを使用してキーと値のペアを入力できます。

    • プロパティ・ファイルを作成している場合は、このバンドルの静的テキストの文字列ごとに、キーと値を作成します。キーは、文字列の一意の識別子です。値は、バンドルの言語でのテキスト文字列です。ベース・リソース・バンドルのローカライズ済バージョンを作成する場合、このバージョン内に存在しないキーは、ベース・クラスから値を継承します。


      注意:

      非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>
      
  3. すべての値を入力したら、「OK」をクリックします。

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

  1. JDeveloperで、新規Javaクラスを作成します。

    • アプリケーション・ナビゲータで、ファイルの保存場所を右クリックし、「新規」を選択して「新規ギャラリ」を開きます。


      注意:

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


    • 「カテゴリ」ツリーで「一般」を選択し、「項目」リストで「Javaクラス」を選択します。「OK」をクリックします。

    • 「Javaクラスの作成」ダイアログで、クラスの名前とパッケージを入力します。クラスはjava.util.ListResourceBundleを拡張している必要があります。


      注意:

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

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


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


    注意:

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


    例29-5 ベース・リソース・バンドルのJavaクラス

    package sample;
    
    import java.util.ListResourceBundle;
    
    public class MyResources extends ListResourceBundle {
      public Object[][] getContents() {
        return contents;
    }
    static final Object[][] contents {
      {"button_Search", Search"},
      {"button_Reset", "Reset"},
      };
    }
    

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

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

始める前に:

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

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

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

  1. JDeveloperで、メインメニューから「アプリケーション」→「リソース・バンドルの編集」を選択します。

  2. 「リソース・バンドルの編集」ダイアログで、図29-4に示されているように、「リソース・バンドル」ドロップダウン・リストから編集するリソース・バンドル・ファイルを選択するか、「検索」アイコンをクリックして、「リソース・バンドルの選択」ダイアログを起動します。

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

    「リソース・バンドルの編集」ダイアログ
  3. 「リソース・バンドルの選択」ダイアログで、「ファイル・タイプ」ドロップダウン・リストからファイル・タイプを選択します。図29-5に示すように、編集するリソース・バンドルに移動します。「OK」をクリックします。

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

    「リソース・バンドルの選択」ダイアログ
  4. 「リソース・バンドルの編集」ダイアログで、図29-6に示すように、「追加」アイコンをクリックしてキーと値のペアを追加します。完了したら「OK」をクリックします。

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

    リソース・バンドルへの値の追加

29.3.3 アプリケーションへのロケールおよびリソース・バンドルの登録方法

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

始める前に:

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

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

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

  1. faces-config.xmlファイルを開き、エディタ・ウィンドウで「概要」タブをクリックします。faces-config.xmlは、<View_Project>/WEB-INFディレクトリにあります。

  2. エディタ・ウィンドウ内で「アプリケーション」を選択します。

  3. 図29-7に示すように、「ロケール構成」領域で、「追加」をクリックしてプロパティ・インスペクタを開き、ロケール用のコードを追加します。

    図29-7 faces-config.xmlへのロケールの追加

    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_Ch</supported-locale>
     </locale-config>
    

リソース・バンドルを登録する手順:

  1. faces-config.xmlファイルを開き、エディタ・ウィンドウで「概要」タブをクリックします。faces-config.xmlは、<View_Project>/WEB-INFディレクトリにあります。

  2. エディタ・ウィンドウ内で「アプリケーション」を選択します。

  3. 「リソース・バンドル」セクションで、「追加」をクリックしてエディタ入力を有効化します。図29-8に示すように、アプリケーションにより使用されるメッセージが含まれたベース・バンドルの完全修飾名、およびEL式でバンドルの参照に使用できる変数名を入力します。

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

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

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

    <resource-bundle>
          <base-name>oracle.fodemo.storefront.StoreFrontUIBundle</base-name>
          <var>res</var>
    </resource-bundle>
    

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

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

始める前に:

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

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

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

  1. ページ・エンコーディングとレスポンス・エンコーディングを、サポートされているすべての言語のスーパーセットに設定します。エンコーディングが設定されていない場合、ページ・エンコーディングはデフォルトで、ページ・ディレクティブのcontentType属性を使用して設定されたレスポンス・エンコーディングの値に設定されます。例29-6に、サンプル・ページのエンコーディングを示します。

    例29-6 ページおよびレスポンスのエンコーディング

    <?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:h="http://java.sun.com/jsf/html"
              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ファイルに定義されている変数を使用して、ページ上に表示される静的テキストの文字列を表すすべての属性を、リソース・バンドル内の適切なキーにバインドします。例29-7に、myDemoページの「View」ボタンのコードを示します。

    例29-7 リソース・バンドルへのバインド

    <af:commandButton text="#{res['myDemo.buttonbar.view']}"
                      . . . />
    

    ヒント:

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

    <af:commandButton text="#{res.

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


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

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

    例29-8 adfBundleを使用したバインド

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

29.3.5 ADFスキンおよびコントロールのヒントについて

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

29.3.6 カスタマイズ可能アプリケーションでのリソース・バンドルのオーバーライドについて

Oracle Metadata Services (MDS)フレームワークを使用してカスタマイズ可能なアプリケーションを開発中で、ベース・リソース・バンドルのキーと値のペアをオーバーライドするリソース・バンドル(オーバーライド・バンドル)を作成する場合、ベース・リソース・バンドルのオーバーライドをサポートするように、アプリケーションのadf-config.xmlファイルを構成する必要があります。オーバーライド・バンドルは、カスタマイズ可能なアプリケーションで使用するベース・リソース・バンドルとは異なるキーと値のペアが含まれるリソース・バンドルです。たとえば、oracle.demo.CustAppUIBundleという名前のベース・バンドルがある場合、例29-9に示すように、アプリケーションのadf-config.xmlファイルのエントリを構成します。オーバーライド済としてマークされると、そのバンドルのカスタマイズはすべて、アプリケーションのオーバーライド・バンドルに格納されます。

例29-9 adf-config.xmlファイルでのオーバーライド・バンドルのエントリ

<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.xmlファイルの詳細は、A.4項「adf-config.xmlでの構成」を参照してください。MDSを使用したカスタマイズ可能なアプリケーション作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「MDSを使用したアプリケーションのカスタマイズ」の章を参照してください。

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

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

29.4.1 エンド・ユーザーがロケールを指定するようにページを構成する方法

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

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

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

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

始める前に:

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

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

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

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

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

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

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

  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. 式ビルダーを使用して、図29-9に示すように、バッキングBean内のロケール値にバインドします。

      図29-9 ロケール属性をバッキングBeanにバインドする式ビルダー

      ロケール属性をバッキングBeanにバインドする式ビルダー
  5. ページを保存します。

29.4.2 ロケールを指定するためにページを構成する場合の処理

JDeveloperでは、ロケールの変更に使用するコマンド・コンポーネントのバッキングBeanに対する参照が生成されます。例29-10に、selectOneChoiceコンポーネントを使用する例を示します。

例29-10 バッキング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>

JDeveloperでは、そのページのバッキングBeanでの必須メソッドも生成されます。例29-11に、例29-10に対応するバッキングBeanの抜粋を示します。

例29-11 ロケールを変更するためのバッキング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;
    }
...
}

29.4.3 エンド・ユーザーがロケールを指定する場合の実行時の処理

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

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

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

ADF Facesでは、テキスト変換の他に、通貨コードなど、その他のタイプの変換や、双方向レンダリングのサポート(BiDiサポート)も自動的に提供されます。アプリケーションは、ユーザーの選択したロケールに基づいて、自動的に適切に表示されます。ただし、trinidad-config.xmlファイル内でアプリケーションの次のローカライズ設定を手動で設定することもできます。

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

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

始める前に:

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

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

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

  1. trinidad-config.xmlファイルを開きます。このファイルは、<View_Project>/WEB-INFディレクトリにあります。

  2. コンポーネント・パレットから、ファイルに追加する要素を構造ウィンドウ内にドラッグします。空の要素がページに追加されます。

  3. 目的の値を入力します。

例29-12に、オプションのローカライゼーション要素すべてが設定されたtrinidad-config.xmlファイルのサンプルを示します。

例29-12 通貨コードおよび数値と小数点のセパレータの構成

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