| Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.3.0 E77213-01 |
|
![]() 前 |
![]() 次 |
この章では、複数の言語を使用するデバイスでMAFアプリケーションを実行する場合にレンダリングするテキストおよびイメージ・リソースを定義できるリソース・バンドルの使用方法について説明します。この章では、リソース・バンドルを作成および編集するためにOEPEが提供するデザインタイム・サポートについても説明します。
この章の内容は次のとおりです。
ローカリゼーションとは、特定ロケールに製品を適応させるプロセスのことです。ローカリゼーションにより、MAFアプリケーションでは、デプロイされるモバイル・デバイスと同じ言語が使用されます。たとえば、デバイス言語としてフランス語が設定されている場合、ローカライズされたMAFアプリケーションのテキスト・リソースはフランス語で表示されます。
MAFは、1つ以上のリソース・バンドルのユーザー・インタフェースに表示されるテキスト・リソースの定義用のデザインタイム・メニューを提供することで、ローカライズ・プロセスを促進します。MAFアプリケーションのテキスト・リソースはベース・リソース・バンドルで定義します。デバイスのロケール用のロケール固有リソース・バンドルがアプリケーションに含まれていない場合、これらのテキスト・リソースはユーザーのデバイス上のアプリケーションのユーザー・インタフェースでレンダリングされます。サポートされている各ロケール用のロケール固有リソース・バンドルを作成します。これらのロケール固有リソース・バンドルでは、ベース・リソース・バンドルで定義したテキスト・リソースの翻訳を提供します。
図6-1に、アプリケーションでcommandButtonおよびoutputTextコンポーネントをレンダリングする例を示します。コンポーネントに表示されるテキストおよびイメージ・リソースは、モバイル・デバイスの言語設定によって異なります。左側では、ベース・リソース・バンドルに英語の値を持つテキスト・リソースが含まれ、アプリケーションが実行されるデバイスでは英語(またはフランス語以外の言語)が使用されるため、コンポーネントはテキスト・リソースを英語でレンダリングします。右側では、ベース・リソース・バンドルに値の翻訳を含むロケール固有のリソース・バンドル(_fr)がMAFアプリケーションに含まれ、モバイル・デバイスの言語設定はフランス語であるため、同じコンポーネントがテキスト・リソースをフランス語でレンダリングします。
MAFアプリケーションをローカライズするには、次のようにします。
第6.2項「MAFアプリケーションのリソース・バンドル・オプションの設定」の説明に従って、MAFアプリケーションのリソース・バンドル数を決定します。
ロケール固有のリソース・バンドルを提供しないロケールでMAFアプリケーションを実行する場合にレンダリングされるベース・リソース・バンドルのテキスト・リソースを定義します。
詳細は、第6.3項「ベース・リソース・バンドルでのテキスト・リソースの定義」を参照してください。
ベース・リソース・バンドルで定義したテキスト・リソースの翻訳を提供するロケール固有リソース・バンドルを作成します。
詳細は、第6.4項「ロケール固有のリソース・バンドルの作成」を参照してください。
MAFアプリケーションのローカライズを完了するために必要なイメージ・ファイルとその他のリソースのロケール固有バージョンを作成します。
詳細は、第6.6項「MAFアプリケーションのイメージ・ファイルのローカライズ」を参照してください。
MAFアプリケーションのリソース・バンドルでは、XMLローカリゼーション・ファイル形式(XLIFF)を使用します。「文字列の外部化」ダイアログに初めて表示値を入力する際に、OEPEにより、.xlfファイル・リソース・バンドルが作成されます。ローカライズした値をサポートする各プロパティで「テキスト・リソースの選択」を呼び出します。
デフォルトでは、MAFアプリケーションには次の2つのリソース・バンドルがあります。
プロジェクトレベルのリソース・バンドル(デフォルト名はViewControllerController.xlf)
アプリケーションレベルのリソース・バンドル(デフォルト名mafapplication.xlf)
アプリケーションレベルのリソース・バンドルには、アプリケーションレベルのテキスト・リソースが含まれます。たとえば、アプリケーション名を別の言語に翻訳する場合は、このリソース・バンドルでアプリケーション名をテキスト・リソースとして指定します。プロジェクトレベルのリソース・バンドルには、プロジェクトのMAF AMXページにレンダリングされるテキスト・リソース、またはアプリケーション機能のプロパティのテキスト・リソースが含まれます。これらのプロパティの詳細は、第6.8項「ローカライズ可能なMAFプロパティ」を参照してください。
プロジェクトのリソース・バンドル・オプションを設定することで、1つのプロジェクトレベル・リソース・バンドルを持つMAFアプリケーションのデフォルトの動作を変更できます。MAFアプリケーションは、アプリケーションレベルのリソース・バンドルを1つのみ持つことができます。
OEPEでは、エンド・ユーザーに表示されるMAFアプリケーション、アプリケーション機能およびMAF AMX UIコンポーネントのテキスト・リソースの値をリソース・バンドルに定義できる外部化文字列ダイアログが提供されます。外部化文字列ダイアログには、MAFアプリケーション・エディタまたはMAF機能エディタで、テキスト・リソースを定義するプロパティの横にあるアイコンをクリックしてアクセスします。通常、これらのプロパティはユーザーが参照できるテキストを表示するプロパティです。たとえば、ボタン、リンク、入力テキストなどのMAF AMX UIコンポーネントにより表示されるラベル、テキストおよびhintTextプロパティに加えて、MAFアプリケーションおよびアプリケーション機能の名前プロパティがあります。これらのプロパティの詳細は、第6.8項「ローカライズ可能なMAFプロパティ」を参照してください。
図6-2は、MAF機能の名前の外部化コンテキスト・メニューを表示する方法を示しています。アプリケーション機能の名前についても、同じボタンを使用します。
<amx:commandButton>のtext属性のようなMAF AMXコンポーネントの属性には、リソース・バンドルを作成できます。表6-4に、これらのMAF AMX (amx)コンポーネントを示します。
MAF AMXコンポーネントの文字列を使用するには:
図6-3のように<amx:selectOneButton>コンポーネントに定義されている値属性などの属性をAMXエディタで選択します。
右マウス・ボタンをクリックし、「ソース」→「文字列の外部化」を選択します。「文字列の外部化」ダイアログが表示されます(図6-4を参照)。
「文字列の外部化」ダイアログで、表示名、キーを入力することで文字列リソースを編集し、「終了」をクリックします。
リソース・バンドルにテキスト・リソースを定義するには、EL式を使用してリソース・バンドルに定義されたテキスト・リソースを参照するプロパティについて起動できる「文字列の外部化」ダイアログを使用します。
リソース・バンドルにテキスト・リソースを定義するには:
テキスト・リソースを定義するプロパティを持つアーティファクトを選択します。これは、MAFアプリケーション自体、アプリケーション機能またはMAF AMX UIコンポーネントが可能です。
たとえば、MAF機能エディタで属性を選択し(図6-2の「名前」など)、外部化をクリックします。これによって文字列の外部化ダイアログが開きます。
文字列の外部化ダイアログ(図6-5を参照)で、「新規プロパティの作成」をクリックして新しい文字列ソースを作成します。表示値、キー、説明を入力して、「OK」をクリックします。
初めて新規文字列リソースを作成してワークスペースを保存する際に、リソース・ファイルが作成されます。その後、「文字列の外部化」ダイアログを開くと、そのリソース・ファイルへのリンクが表示されます。
入力した表示値とキーは、OEPEによってリソース・バンドルに書き込まれます。今回初めてMAFアプリケーションまたはプロジェクトのテキスト・リソースを定義する場合、OEPEによりリソース・バンドルが作成されます。定義するテキスト・リソースがアプリケーションレベルのプロパティ(MAFアプリケーションの名前プロパティなど)用である場合、OEPEでは、アプリケーションレベルのリソース・バンドル(mafapplication.xlf)が作成されます。定義するテキスト・リソースがプロジェクトレベルのプロパティ(アプリケーション機能の名前プロパティなど)用である場合、OEPEでは、プロジェクトレベルのリソース・バンドル(ViewControllerBundle.xlf)が作成されます(図6-6 を参照)。
OEPEでは、MAFアプリケーションごとに、アプリケーションレベルのリソース・バンドルとプロジェクトレベルのリソース・バンドルがそれぞれ1つ作成されます。
次の例に示すように、リソース・バンドルがアプリケーションレベルとプロジェクトレベルのどちらのリソース・バンドルかにかかわらず、OEPEがキーおよび表示値のリソース・バンドルに書き込むXMLの構文は同じです。
...
<!-- The value of the id attribute is the value you enter in the Key input field of the
Select Text Resource Dialog -->
<trans-unit id="FEATURE_ONE">
<!-- The value of the source element is the value you enter in the Display Value input
field of the Select Text Resource Dialog -->
<source>Feature Name</source>
<target/>
</trans-unit>
<trans-unit id="HEADER_VALUE_IN_PANEL">
<source>Header Value in Panel Page</source>
<target/>
</trans-unit>
<trans-unit id="COMMAND_BUTTON">
<source>Text Display Value for a Command Button</source>
<target/>
</trans-unit>
...
リソース・バンドルで定義するテキスト・リソースを参照するためのプロパティを構成するファイルに対して、OEPEは図6-6に示す変更を加えます。
属性を最初にローカライズすると、OEPEによって<adfmf:loadbundle>要素が追加されます。この要素のbasename属性が、新しく作成したリソース・バンドルを参照します。
OEPEは、ローカライズされた属性文字列を、リソース・バンドル内で定義されたテキスト・リソースのキーを参照するEL式に変更します。
例6-1 MAF AMXページとMAF構成ファイルのリソース・バンドルの参照
<!-- maf-application.xml where a text resource has been defined for the MAF application's name -->
<adfmf:application ....name="#{mylocalizedmafappBundle.MY_LOCALIZED_MAF_APPLICATION}"
...
<adfmf:loadBundle basename="MyLocalizedMAFappBundle" var="mylocalizedmafappBundle"/>
<!-- maf-feature.xml where a text resource has been defined for the application feature's name -->
<adfmf:loadBundle basename="mobile.ViewControllerBundle" var="viewcontrollerBundle"/>
...
<adfmf:feature id="feature1" name="#{viewcontrollerBundle.FEATURE_ONE}">
<!-- MAF AMX page where a text resource has been defined for a command button's text attribute -->
<amx:loadBundle basename="mobile.ViewControllerBundle" var="viewcontrollerBundle" id="lb1"/>
...
<amx:commandButton id="cb1" text="#{viewcontrollerBundle.COMMAND_BUTTON}"/>
MAFアプリケーションで特定のロケールに異なるテキスト・リソースをレンダリングする場合は、ロケール固有のリソース・バンドルを作成します。たとえば、フランス語またはアラビア語に設定された言語を持つデバイスでMAFアプリケーションを実行する場合にベース・リソース・バンドルのテキスト・リソースの翻訳を提供する場合は、フランス語とアラビア語両方のロケール固有リソース・バンドルを作成する必要があります。
図6-7に、アラビア語とフランス語のロケールをサポートするために、ロケール固有バージョンのアプリケーションレベル(mafapplication.xlf)のリソース・バンドルとプロジェクトレベルの(ViewControllerBundle.xlf)リソース・バンドルが作成されたMAFアプリケーションを示します。次の形式を使用するファイル名でベース・リソース・バンドルと同じディレクトリにロケール固有リソース・バンドルを作成する必要があります。
<BASE_RESOURCE_BUNDLE_NAME>_<LANGUAGE_TOKEN>.xlf
ここでは、次のようになります。
<BASE_RESOURCE_BUNDLE_NAME>はベース・リソース・バンドル名です
<LANGUAGE_TOKEN>は<ISO-639-lowercase-language-code>の形式です
MAFでサポートされる言語のリストは、第6.7項「MAFでの言語のサポート」を参照してください。
ロケール固有のリソース・バンドルを作成するベース・バンドルを開き、ファイル名に適切な言語コードを指定してファイルのコピーを保存します。このページでは、次の処理を実行できます。
ベース・リソース・バンドルと同じディレクトリにロケール固有のリソース・バンドルを作成します。これは必須です。
ベース・リソース・バンドル内のすべてのテキスト・リソースのコピーが、翻訳された値を提供できるロケール固有のリソース・ベース・バンドルに表示されます。
ロケール固有のリソース・バンドルを作成するには:
ロケール固有バージョンを作成するベース・リソース・バンドルを開きます。
アプリケーションレベルのベース・リソース・バンドル: アセンブリ・プロジェクトのADF > META-INFノードで、.xlfファイルをダブルクリックします。
プロジェクトレベルのベース・リソース・バンドル: ビュー・プロジェクトのsrc > mobileノードで、.xlfファイルをダブルクリックします。
OEPEで、「ファイル」→「別名保存」をクリックして、サポートするロケールの言語コードを追加します。
たとえば、MAFアプリケーションでフランス語ロケールをサポートする場合は、_frを追加します。
適切な言語コードを含むように、新規に作成したロケール固有のリソース・バンドルを編集します。
次の例は、アプリケーションレベルおよびプロジェクトレベルのリソース・バンドルのフランス語ロケールをサポートするために必要な編集を示しています。
<!-- Application-level French locale-specific resource bundle -->
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.1" xmlns="urn:oasis:names:tc:xliff:document:1.1">
<file source-language="fr" original="this" datatype="x-oracle-adf">
<!-- Project-level French locale-specific resource bundle -->
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.1" xmlns="urn:oasis:names:tc:xliff:document:1.1">
<file source-language="fr" original="mobile.ViewControllerBundle_fr"
datatype="x-oracle-adf">
リソース・バンドルを編集して、ターゲット・ロケールに表示する各テキスト・リソースの翻訳を提供します。
リソース・バンドルの編集の詳細は、第6.5項「リソース・バンドルのリソースの編集」を参照してください。
XLIFFファイルまたはJavaクラス・ファイルを作成したら、ソース・エディタを使用して編集できます。MAFエディタのいずれかを使用する場合は、ファイル上でExternalizeコマンドを呼び出すことができます。
ロケールに応じて、MAFアプリケーションに異なるイメージ・ファイルをレンダリングすることが必要な場合があります。たとえば、図6-8に示すように、イメージにはテキストまたは国旗の図を含めることができます。
イメージを参照するコンポーネント属性のEL式をリソース・バンドルのエントリに書き込みます。リソース・バンドル・エントリにはイメージへのパスが含まれます。たとえば、図6-8に示すcommandButtonコンポーネントは、コンポーネントをレンダリングするMAF AMXページのアイコン属性に次の値を定義します。
<amx:commandButton id="cb1" text="#{viewcontrollerBundle.YES}"
icon="#{viewcontrollerBundle.IMAGE_PATH}"/>
ベース・リソース・バンドル(ViewControllerBundle.xlf)には、MAFアプリケーションがフランス語以外のロケールで実行される場合に表示するイメージのパスを持つ次のエントリが含まれます。
<trans-unit id="IMAGE_PATH"> <source>/images/uk.png</source> <target/> <note>Path to image file</note> </trans-unit>
フランス語のリソース・バンドル(ViewControllerBundle_fr.xlf)では、次の例に示すように、MAFアプリケーションがフランス語ロケールで実行されたときにレンダリングする別のイメージを指定します。
<trans-unit id="IMAGE_PATH"> <source>/images/fr.png</source> <target/>
手動で、イメージへのパスを定義するエントリをリソース・バンドルに記述します。
ソース・バンドルにイメージへのパスを定義した後、式ビルダーを使用できます。詳細は、第13.3.2項「EL式の作成方法」を参照してください。
図6-1は、MAFでサポートされる言語を示しています。ユーザーのデバイスがこれらの言語のいずれかを使用するように構成されている場合、エラー・メッセージなどのシステム・メッセージは、これらの言語で表示されます。MAFでは、国および地域用の言語トークンをサポートしています。ただし、フルサポートが提供されるのは、言語のリストに表示されている場合のみです。MAFからのエラー・メッセージでは、リストに示されている言語のうちで最も近いものが使用されます。通常、表内のいずれかの言語またはこれらのいずれかの言語のより固有のバリアントを使用するようにデバイスが構成されていないかぎり、言語は英語になります。
これらの言語で追加リソース文字列をアプリケーションでレンダリングする場合は、それらの文字列を定義する必要があります。表6-1にリストされている言語トークンを使用して、ロケール固有のリソース・バンドルを作成します。たとえば、ポルトガル語(ブラジル)のリソース文字列を定義する場合は、BASE_RESOURCE_BUNDLE_NAME_pt_BR.xlfという名前のリソース・バンドルを作成します。リストに含まれていない言語のリソース・バンドルを作成するには、BASE_RESOURCE_BUNDLE_NAME_lowercase-ISO-639-1-language-code.xlfという名前フォーマットでリソース・バンドルを作成します。命名規則の詳細は、第6.4項「ロケール固有のリソース・バンドルの作成」を参照してください。
デプロイメントでは、OEPEにより、アプリケーションがデプロイされているプラットフォームで必要な値に、言語トークンが変換されます。たとえば、iOSプラットフォームにデプロイされるMAFアプリケーションは、言語トークンpt_BRをpt (iOSプラットフォームで予期される言語ID)に変換します。
表6-1 MAFでサポートされる言語のリソース・バンドル名
| 言語 | 追加のUI文字列を指定するためのリソース・バンドル名 |
|---|---|
|
アラビア語 |
BASE_RESOURCE_BUNDLE_NAME_ar.xlf |
|
ポルトガル語(ブラジル) |
BASE_RESOURCE_BUNDLE_NAME_pt_BR.xlf |
|
カタロニア語 |
BASE_RESOURCE_BUNDLE_NAME_ca.xlf |
|
チェコ語 |
BASE_RESOURCE_BUNDLE_NAME_cs.xlf |
|
デンマーク語 |
BASE_RESOURCE_BUNDLE_NAME_da.xlf |
|
オランダ語 |
BASE_RESOURCE_BUNDLE_NAME_nl.xlf |
|
フィンランド語 |
BASE_RESOURCE_BUNDLE_NAME_fit.xlf |
|
フランス語 |
BASE_RESOURCE_BUNDLE_NAME_fr.xlf |
|
ドイツ語 |
BASE_RESOURCE_BUNDLE_NAME_de.xlf |
|
ギリシャ語(近代) |
BASE_RESOURCE_BUNDLE_NAME_el.xlf |
|
ヘブライ語 |
BASE_RESOURCE_BUNDLE_NAME_iw.xlf |
|
ハンガリー語 |
BASE_RESOURCE_BUNDLE_NAME_hu.xlf |
|
イタリア語 |
BASE_RESOURCE_BUNDLE_NAME_it.xlf |
|
日本語 |
BASE_RESOURCE_BUNDLE_NAME_ja.xlf |
|
韓国語 |
BASE_RESOURCE_BUNDLE_NAME_ko.xlf |
|
ノルウェー語 |
BASE_RESOURCE_BUNDLE_NAME_no.xlf |
|
ポーランド語 |
BASE_RESOURCE_BUNDLE_NAME_pl.xlf |
|
ポルトガル語 |
BASE_RESOURCE_BUNDLE_NAME_pt.xlf |
|
ルーマニア語 |
BASE_RESOURCE_BUNDLE_NAME_ro.xlf |
|
ロシア語 |
BASE_RESOURCE_BUNDLE_NAME_ru.xlf |
|
簡体字中国語 |
BASE_RESOURCE_BUNDLE_NAME_zh_CN.xlf |
|
スロバキア語 |
BASE_RESOURCE_BUNDLE_NAME_sk.xlf |
|
スペイン語 |
BASE_RESOURCE_BUNDLE_NAME_es.xlf |
|
スウェーデン語 |
BASE_RESOURCE_BUNDLE_NAME_sv.xlf |
|
繁体字中国語 |
BASE_RESOURCE_BUNDLE_NAME_zh_TW.xlf |
|
トルコ語 |
BASE_RESOURCE_BUNDLE_NAME_tr.xlf |
|
タイ語 |
BASE_RESOURCE_BUNDLE_NAME_th.xlf |
maf-application.xmlおよびmaf-feature.xmlファイルは、どちらもリソース・バンドルのテキスト・リソースを参照できるプロパティを公開します。表6-2と表6-3に、これらのプロパティをリストします。これらの構成ファイルはアプリケーション・ライフサイクルの初期に読み取られるので、これらの文字列は実行時にはEL文として評価されません。そのかわり、これらの文字列は、ネイティブ・デバイス変換インフラストラクチャにおいて変換された文字列の完全なキーとして取得されます。
表6-4に、テキスト・リソースを参照できるMAF AMX UIコンポーネントの属性をリストします。
アプリケーションレベルでは、アプリケーション名やプリファレンス・ページのラベルなどの属性の文字列をローカライズできます。表6-2にこれらを示します。
表6-2 MAFアプリケーションのローカライズ可能な属性
| 要素 | 属性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プロジェクト(ビュー・コントローラ)レベルでは、MAF機能エディタを使用して、表6-3に示すアプリケーション機能関連の属性をローカライズできます。
表6-3 アプリケーション機能のローカライズ可能な属性
| 要素 | 属性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ボタン・コンポーネント(<amx:commandButton>)のtext属性のようなMAF AMX UIコンポーネントの属性には、リソース・バンドルを作成できます。図6-4は、これらのMAF AMX UIコンポーネントを示しています。
表6-4 MAF AMX UIコンポーネントのローカライズ可能な属性
| コンポーネント | 属性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|