Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.2.0 E69896-01 |
|
![]() 前 |
![]() 次 |
この章の内容は次のとおりです。
ローカライズは、アプリケーションを1つ以上のロケールで使用可能にするプロセスです。モバイル・アプリケーションの場合、これは一般にユーザーが使用しているモバイル・デバイスと同じ言語でMAFアプリケーションを使用することを意味します。たとえば、ユーザーのデバイスでデバイス言語としてフランス語が設定されている場合、ローカライズされたMAFアプリケーションのテキスト・リソースはフランス語で表示されます。
MAFは、1つ以上のリソース・バンドルのユーザー・インタフェースに表示されるテキスト・リソースを定義できるようにする設計時メニューを提供することで、ローカライズ・プロセスを促進します。MAFアプリケーションのテキスト・リソースはベース・リソース・バンドルで定義します。アプリケーションにデバイスのロケールに固有のリソース・バンドルが含まれない場合、これらのテキスト・リソースは、ユーザーのデバイス上のアプリケーションのユーザー・インタフェースでレンダリングされます。その後、サポートするロケールごとにロケール固有のリソース・バンドルを作成します。これらのロケール固有リソース・バンドルでは、ベース・リソース・バンドルで定義したテキスト・リソースの翻訳を提供します。
図6-1に、アプリケーションでcommandButton
およびoutputText
コンポーネントをレンダリングする例を示します。コンポーネントに表示されるテキストおよびイメージ・リソースは、モバイル・デバイスの言語設定によって異なります。左側では、リソース・バンドルに英語の値を持つテキスト・リソースが含まれ、アプリケーションが実行されるデバイスでは英語(またはフランス語以外の言語)が使用されるため、コンポーネントはテキスト・リソースを英語でレンダリングします。右側では、ベース・リソース・バンドルに値の翻訳を含むロケール固有のリソース・バンドル(_fr
)がMAFアプリケーションに含まれ、モバイル・デバイスの言語設定はフランス語であるため、同じコンポーネントがテキスト・リソースをフランス語でレンダリングします。
図6-1 ローカライズされたテキスト・リソース
MAFアプリケーションをローカライズする場合は、次のワークフローの使用を検討してください。
「MAFアプリケーションのリソース・バンドル・オプションの設定」の説明に従って、MAFアプリケーションのリソース・バンドル数を決定します。
ロケール固有のリソース・バンドルを提供しないロケールでMAFアプリケーションを実行する場合にレンダリングされるベース・リソース・バンドルのテキスト・リソースを定義します。
詳細は、「ベース・リソース・バンドルでのテキスト・リソースの定義」を参照してください。
ベース・リソース・バンドルで定義したテキスト・リソースの翻訳を提供するロケール固有リソース・バンドルを作成します。
詳細は、「ロケール固有のリソース・バンドルの作成」を参照してください。
MAFアプリケーションのローカライズを完了するために必要なイメージ・ファイルとその他のリソースのロケール固有バージョンを作成します。
詳細は、「MAFアプリケーションのイメージ・ファイルのローカライズ」を参照してください。
MAFアプリケーションのリソース・バンドルでは、XMLローカリゼーション・ファイル形式(XLIFF)を使用する必要があります。JDeveloperでは、ローカライズされた値をサポートするプロパティごとに起動できる「テキスト・リソースの選択」ダイアログに表示値を初めて入力したときに.xlf
ファイル・リソース・バンドルが作成されます。
MAFアプリケーションのデフォルトの動作では、2つのリソース・バンドルがあります。プロジェクトレベルのリソース・バンドル(デフォルト名はViewControllerController.xlf
)が1つと、アプリケーションレベルのリソース・バンドルが1つです。アプリケーションレベルのリソース・バンドルのネーミング規則では、アプリケーション名と追加のBundle.xlf
が使用されます。つまり、MyLocalizedMAFapp
という名前のMAFアプリケーションは、MyLocalizedMAFappBundle.xlf
という名前のアプリケーションレベルのリソース・バンドルを持ちます。アプリケーションレベルのリソース・バンドルには、アプリケーションレベルのテキスト・リソースが含まれます。たとえば、アプリケーション名を別の言語に翻訳する場合は、このリソース・バンドルでアプリケーション名をテキスト・リソースとして指定します。プロジェクト・レベルのリソース・バンドルには、プロジェクトのMAF AMXページにレンダリングされるテキスト・リソース、またはアプリケーション機能のプロパティのテキスト・リソースが含まれます。これらのプロパティの詳細は、「ローカライズ可能なMAFプロパティ」を参照してください。
プロジェクトのリソース・バンドル・オプションを設定することで、1つのプロジェクトレベル・リソース・バンドルを持つMAFアプリケーションのデフォルトの動作を変更できます。MAFアプリケーションは、アプリケーションレベルのリソース・バンドルを1つのみ持つことができます。
「プロジェクト・プロパティ」ダイアログの「リソース・バンドル」ページを使用して、ビュー・コントローラ・プロジェクトおよびアプリケーション・コントローラ・プロジェクトのリソース・バンドル・オプションを設定します。設定できるオプションには、JDeveloperで作成されるプロジェクトレベル・リソース・バンドルの数が含まれます。
プロジェクトのリソース・バンドル・オプションを設定するには:
「アプリケーション」ウィンドウで、プロジェクトをダブルクリックします。
図6-2に示すように、「プロジェクト・プロパティ」ダイアログで、「リソース・バンドル」を選択して「リソース・バンドル」ページを表示します。
図6-2「プロジェクト・プロパティ」の「リソース・バンドル」ページ
ダイアログにテキスト・リソースの説明を入力する前に「テキスト・リソースの選択」ダイアログが閉じないようにする場合は、「常に説明の入力を要求」を選択します。
次に示すいずれかのリソース・バンドル・ファイル・オプションを選択します。
1プロジェクト当たり1バンドル: JDeveloperは、<ProjectName>.xlf
という名前のファイルに1つのリソース・バンドルを作成します。
1ファイル当たり1バンドル: ファイル(maf-feature.xml
、maf-application.xml
または.amx
ファイル)のテキスト・リソースを定義するたびにリソース・バンドルを作成します。このオプションによりリソース・バンドルの数が各ファイル1つに制限されるため、このオプションを選択した場合、JDeveloperでは2つ目のバンドルを作成できません。
「OK」をクリックします。
JDeveloperでは、エンド・ユーザーに表示されるMAFアプリケーション、アプリケーション機能およびMAF AMX UIコンポーネントのテキスト・リソースの値をリソース・バンドルに定義できる「テキスト・リソースの選択」ダイアログが提供されます。「テキスト・リソースの選択」ダイアログにアクセスするには、リソース・バンドルで定義されたテキスト・リソースを参照できる、JDeveloperがプロパティに対して公開するメニュー・オプションを使用します。通常、これらはユーザーが参照できるテキストを表示するプロパティです。たとえば、ボタン、リンク、入力テキストなどのMAF AMX UIコンポーネントにより表示されるラベル、テキストおよびhintTextプロパティに加えて、MAFアプリケーションおよびアプリケーション機能の名前プロパティがあります。これらのプロパティの詳細は、「ローカライズ可能なMAFプロパティ」を参照してください。
図6-3にMAFアプリケーションの名前、アプリケーション機能の名前およびinputTextコンポーネントの「ラベル」プロパティの「テキスト・リソースの選択」コンテキスト・メニューを表示する方法を示します。
図6-3 「テキスト・リソースの選択」ダイアログを表示するコンテキスト・メニュー
リソース・バンドルにテキスト・リソースを定義するには、EL式を使用してリソース・バンドルに定義されたテキスト・リソースを参照するプロパティについて起動できる「テキスト・リソースの選択」ダイアログを使用します。
リソース・バンドルにテキスト・リソースを定義するには:
テキスト・リソースを定義するプロパティを持つアーティファクトを選択します。これは、MAFアプリケーション自体、アプリケーション機能またはMAF AMX UIコンポーネントが可能です。
「プロパティ」ウィンドウで、テキスト・リソースを定義するプロパティの横のアイコンをクリックし、表示されるコンテキスト・メニューで「テキスト・リソースの選択」を選択します。
「テキスト・リソースの選択」ダイアログで、表示名とキーを入力し、「保存して選択」をクリックしてテキスト・リソースを定義します。
入力した表示値とキーはJDeveloperによってリソース・バンドルに書き込まれます。今回初めてMAFアプリケーションまたはプロジェクトのテキスト・リソースを定義する場合、JDeveloperではリソース・バンドルが作成されます。定義するテキスト・リソースがアプリケーションレベルのプロパティ(MAFアプリケーションの名前プロパティなど)に対するものである場合、JDeveloperは、「アプリケーション・リソース」パネルに表示できるアプリケーションレベルのリソース・バンドル(ApplicationName
Bundle.xlf
)を作成します(図6-4を参照)。定義するテキスト・リソースがプロジェクトレベルのプロパティ(アプリケーション機能の名前プロパティなど)の場合、JDeveloperは、「プロジェクト」パネルに表示できるプロジェクトレベルのリソース・バンドル(ViewControllerBundle.xlf
)を作成します(図6-4を参照)。
図6-4 新規に作成したリソース・バンドル
JDeveloperでは、MAFアプリケーション当たり1つのアプリケーション・レベルのリソース・バンドルが作成されますが、「MAFアプリケーションのリソース・バンドル・オプションの設定」で説明されているように、設定するオプションに応じて追加のプロジェクト・レベルのリソース・バンドルを作成できます。
次の例に示すように、リソース・バンドルがアプリケーションレベルとプロジェクトレベルのどちらのリソース・バンドルかにかかわらず、JDeveloperがキーおよび表示値のリソース・バンドルに書き込む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> ...
リソース・バンドルで定義するテキスト・リソースを参照するためのプロパティを構成するファイルに対して、JDeveloperは例6-1に示す変更を加えます。
属性を最初にローカライズすると、JDeveloperによって<adfmf:loadbundle>
要素が追加されます。この要素のbasename
属性が、新しく作成したリソース・バンドルを参照します。
JDeveloperは、ローカライズされた属性文字列を、リソース・バンドル内で定義されたテキスト・リソースのキーを参照するEL式に変更します。
アプリケーション・レベルにはリソース・バンドル・ファイルが1つしか存在しないので、JDeveloperは、ローカライズされた各文字列を同じリソース・バンドル・ファイルに追加します。プロジェクト・レベルでの動作は、「MAFアプリケーションのリソース・バンドル・オプションの設定」で選択したリソース・バンドル設定によって異なります。
例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-5に、アラビア語とフランス語のロケールをサポートするためにロケール固有バージョンのアプリケーションレベル(MyLocalizedMAFappBundle.xlf
)リソース・バンドルとプロジェクトレベル(ViewControllerBundle.xlf
)リソース・バンドルが作成されたMAFアプリケーションを示します。次の形式を使用するファイル名でベース・リソース・バンドルと同じディレクトリにロケール固有リソース・バンドルを作成する必要があります。
<BASE_RESOURCE_BUNDLE_NAME>_<LANGUAGE_TOKEN>.xlf
説明:
<BASE_RESOURCE_BUNDLE_NAME>
はベース・リソース・バンドル名です
<LANGUAGE_TOKEN>
は<ISO-639-lowercase-language-code>
の形式です
注意:
MAFは、国または地域をサポートしていません。
図6-5 ベース・リソース・バンドルとロケール固有のリソース・バンドル
JDeveloperは、「新規ギャラリ」の「一般」→「XML」カテゴリで新規XMLローカリゼーション・ファイル(XLIFF)を作成するオプションを提供することで、プロジェクトレベルのリソース・バンドルの作成を容易にします。
または、ロケール固有のリソース・バンドルを作成するベース・バンドルを開き、ファイル名に適切な言語コードを指定してファイルのコピーを保存します。後者のオプションには次のメリットがあります。
ベース・リソース・バンドルと同じディレクトリにロケール固有のリソース・バンドルを作成します。これは必須です。
ベース・リソース・バンドル内のすべてのテキスト・リソースのコピーが、翻訳された値を提供できるロケール固有のリソース・ベース・バンドルに表示されます。
ロケール固有のリソース・バンドルを作成するには:
ロケール固有バージョンを作成するベース・リソース・バンドルを開きます。
アプリケーションレベルのベース・リソース・バンドル: 「アプリケーション・リソース」パネルの「ディスクリプタ」→「ADF META-INF」ノードで、.xlf
ファイルをダブルクリックします。
プロジェクトレベルのベース・リソース・バンドル: 「プロジェクト」パネルの「ViewController」→「アプリケーション・ソース」ノードで、.xlf
ファイルをダブルクリックします。
JDeveloperで、「ファイル」→「別名保存」をクリックし、サポートするロケールの言語コードを追加します。
たとえば、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">
リソース・バンドルを編集して、ターゲット・ロケールに表示する各テキスト・リソースの翻訳を提供します。
リソース・バンドルの編集の詳細は、「リソース・バンドルのリソースの編集」を参照してください。
JDeveloperには、MAFアプリケーションに含まれるリソース・バンドル内のリソースを追加、削除または編集できる「リソース・バンドルの編集」ダイアログが用意されています。
リソース・バンドルのテキスト・リソースを編集するには:
ロケールに応じて、MAFアプリケーションに異なるイメージ・ファイルをレンダリングすることが必要な場合があります。たとえば、図6-7に示すように、イメージにはテキストまたは国旗の図を含めることができます。
図6-7 ロケールに基づいて異なるイメージのレンダリング
イメージを参照するコンポーネント属性のEL式をリソース・バンドルのエントリに書き込みます。リソース・バンドル・エントリにはイメージへのパスが含まれます。たとえば、図6-7に示す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/>
「リソース・バンドルのリソースの編集」の説明に従って、イメージへのパスを定義するエントリをリソース・バンドルに手動で書き込むか、「リソース・バンドルの編集」ダイアログを使用します。
ソース・バンドルにイメージのパスを定義した後で、図6-8に示すように式ビルダーを使用して、リソース・バンドルのエントリを参照するEL式を作成します。
図6-8 リソース・バンドルのイメージを参照しているEL式
maf-application.xml
およびmaf-feature.xml
ファイルは、どちらもリソース・バンドルのテキスト・リソースを参照できるプロパティを公開します。表6-1と表6-2に、これらのプロパティをリストします。これらの構成ファイルはアプリケーション・ライフサイクルの初期に読み取られるので、これらの文字列は実行時にはEL文として評価されません。そのかわり、これらの文字列は、ネイティブ・デバイス変換インフラストラクチャにおいて変換された文字列の完全なキーとして取得されます。
表6-3に、テキスト・リソースを参照できるMAF AMX UIコンポーネントの属性をリストします。
アプリケーション・レベルでは、アプリケーション名やプリファレンス・ページのラベルなどの属性の文字列をローカライズできます。表6-1にこれらを示します。
表6-1 MAFアプリケーションのローカライズ可能な属性
要素 | 属性 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プロジェクト(ビュー・コントローラ)レベルでは、表6-2に示すような、アプリケーション機能関連の属性をローカライズできます。
表6-2 アプリケーション機能のローカライズ可能な属性
要素 | 属性 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ボタン・コンポーネント(<amx:commandButton>
)のtext
属性のようなMAF AMX UIコンポーネントの属性には、リソース・バンドルを作成できます。表6-3に、これらのMAF AMX UIコンポーネントを示します。
表6-3 MAF AMX UIコンポーネントのローカライズ可能な属性
コンポーネント | 属性 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|