ローカライズ済みアプリケーションの配置
ここでは、ローカライズ済みアプリケーションを正しく配置するために必要な手順について説明します。 言語の選択方法と、ローカライズ済みリソース DLL の選択順を理解することは非常に大切です。
実行可能モジュールとリソース モジュールの配置
ローカライズ済みアプリケーションの配置作業には、単純なアプリケーションの場合よりも多くの手順が必要です。 プロジェクトで、 いくつかのローカライズ済みリソース DLL を作成していて、それらをアプリケーションの実行可能ファイルと共に配布しなければならない状況を考えます。 たとえば、実行可能ファイルが Test.exe であるアプリケーションがあるとします。 このアプリケーションを、デフォルトの言語の他に 2 つの言語、fr-FR と de-DE にローカライズしたとしましょう。 クライアント マシンでアプリケーションが適切なローカライズ版の UI を使用するようにするには、実行可能ファイルと同じディレクトリにローカライズ済みリソース DLL をバンドルする必要があります。 たとえば、インストール後のアプリケーション ディレクトリには次のファイルが含まれることになります。
C:\Program Files\Test\Test.exe C:\Program Files\Test\Test.exe.fr-FR C:\Program Files\Test\Test.exe.de-DE
考えられる方法はいくつかありますが、本体の実行可能ファイルと一緒にローカライズ済みリソース モジュールをバンドルする方法が一番簡単です。
言語リソース DLL の選択順
RAD Studio IDE で開発したアプリケーションでは、ユーザー インターフェイス用に複数の言語を定義できます。 各言語のユーザー インターフェイス リソースは個別のリソース DLL ファイルに配置されます。 アプリケーションは、初期化時に、ユーザー インターフェイスの各要素に使用する最適な言語を選択します。 この処理は、ユーザーとの対話が始まる前に自動的に行われます。 アプリケーションのユーザー インターフェイス言語は、検出された利用可能なローカライズ済みリソース DLL を基に選択されます。
ローカライズ済みリソース DLL を検索するために、アプリケーションはまず優先言語名リストを取得します。 このリストを用いて、実行可能ファイル Test.exe
のアプリケーションは、次のいずれかの拡張子を持つローカライズ済みリソース DLL を検索しようとします。
- "ロケール オーバーライド" キー。アプリケーションは、Windows のレジストリ キーを確認して、"ロケール オーバーライド" キーが定義されていないか検索します。 次の Windows のレジストリ キーが上から優先して検証されます。
- HKEY_CURRENT_USER\Software\Embarcadero\Locales
- HKEY_LOCAL_MACHINE\Software\Embarcadero\Locales
"ロケール オーバーライド" とはレジストリ キーの値のことで、(キーの値で指定された)アプリケーションに対して使用するロケール識別コードまたは言語カルチャ名を明示的に指示します。
"ロケール オーバーライド" 値には次のものが含まれます。
Name
文字列。アプリケーションの実行可能ファイルへの完全修飾パスを識別します。 (Test.exe
ファイルへの完全修飾パス)Data
文字列。使用するロケール識別コードまたは言語カルチャ名を識別します。 たとえば、"ドイツ語 - ドイツ" ロケールの場合はDEU
になります。
Data
値が検出できない場合、デフォルトのロケールが検索されます。
- 言語カルチャ名。言語カルチャ名は、
AB-CD
の形式で記述されます。AB
は言語コード、CD
は地域コードをそれぞれ表します。 アプリケーションは、ファイル名拡張子がAB-CD
のファイルを検索します。 - 言語コード。アプリケーションは、拡張子が 2 文字の言語コード
AB
に一致するファイルを検索します。 - 3 文字の言語コード。3 文字の言語コードは、ISO 639x 値
EFG
です。 アプリケーションは、ファイル名拡張子がEFG
のファイルを検索します。 - 2 文字の言語コード。2 文字の言語コードは、3 文字の言語コード ISO 639x 値の最初の 2 文字
EF
です。 アプリケーションは、ファイル名拡張子がEF
のファイルを検索します。
たとえば、UILocale がドイツ - ドイツ語に設定され、Test.exe
の"ロケール オーバーライド" キーの Data
値が XYZ
の場合を考えてみましょう。 この場合、Test.EXE
アプリケーションは起動時に、Test.EXE
が起動されたディレクトリで、次のファイルを検索します。
<code>Test.XYZ</code> <code>Test.DE-DE</code> <code>Test.DE</code> <code>Test.DEU</code> <code>Test.DE</code>
上記の手順のいずれかでローカライズ済みリソース DLL ファイルを検出すると、アプリケーションはそこで検索を終了し、検出したリソース DLL を読み込みます。
上記のどの手順でも有効なローカライズ済みリソース DLL を選択できなかった場合、アプリケーションは、設計時のデフォルトの言語(通常はアプリケーションの実行可能ファイルに直接組み込まれているリソースの言語)に戻ります。