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