ClickOnce アプリケーションのローカライズ
ローカライズは、アプリケーションを特定のカルチャに適したものにするためのプロセスです。 このプロセスには、ユーザー インターフェイス (UI) のテキストを地域固有の言語に翻訳する作業、正しい日付と通貨の書式の適用、フォーム上にあるコントロールのサイズの調整、およびコントロールを右から左へとミラー化する作業 (必要な場合) が含まれます。
アプリケーションをローカライズすると、1 つ以上のサテライト アセンブリが作成されます。 各アセンブリには、特定のカルチャに固有の UI 文字列、画像、およびその他のリソースが含まれます (アプリケーションのメインの実行可能ファイルには、アプリケーションの既定のカルチャに対応する文字列が含まれています)。
ここでは、ClickOnce アプリケーションを他のカルチャ向けに配置する 3 つの方法について説明します。
すべてのサテライト アセンブリを 1 つの配置に含める。
カルチャごとに 1 つの配置を生成し、それぞれに 1 つのサテライト アセンブリを含める。
必要に応じてサテライト アセンブリをダウンロードする。
すべてのサテライト アセンブリを 1 つの配置に含める
複数の ClickOnce 配置を発行するのではなく、すべてのサテライト アセンブリを含む 1 つの ClickOnce 配置を発行します。
これは、Visual Studio での既定の方法です。 Visual Studio でこの方法を使用する場合、追加の作業を実行する必要はありません。
MageUI.exe でこの方法を使用するには、MageUI.exe でアプリケーションのカルチャを neutral に設定する必要があります。 次に、すべてのサテライト アセンブリを手動で配置に含める必要があります。 MageUI.exe では、アプリケーション マニフェストの [ファイル] タブで [作成] ボタンを使用してサテライト アセンブリを追加できます。
この方法の利点は、単一の配置が作成されるので、配置のローカライズが簡素化されることです。 実行時に、ユーザーが使用する Windows オペレーティング システムの既定のカルチャに応じて、適切なサテライト アセンブリが使用されます。 この方法の欠点は、クライアント コンピューターでアプリケーションをインストールまたは更新するたびに、すべてのサテライト アセンブリがダウンロードされることです。 このため、アプリケーションに大量の文字列が含まれている場合や顧客が使用するネットワーク接続の速度が遅い場合は、このプロセスがアプリケーション更新時のパフォーマンスに影響を与える可能性があります。
Note
この方法では、それぞれのカルチャで異なるテキスト文字列のサイズに対応するために、コントロールの高さ、幅、および位置をアプリケーションが自動的に調整することを前提としています。 Windows フォームには、容易にローカライズできるフォームをデザインするためのさまざまなコントロールとテクノロジが用意されています。これには、FlowLayoutPanel コントロールと TableLayoutPanel コントロール、および AutoSize プロパティが含まれます。 「方法: AutoSize と TableLayoutPanel コントロールを使用して Windows フォームのローカリゼーションをサポートする」も参照してください。
カルチャごとに 1 つの配置を生成する
この配置ストラテジでは、複数の配置を生成します。 各配置には特定のカルチャに必要なサテライト アセンブリのみを含め、その配置をそのカルチャ固有としてマークします。
Visual Studio でこのメソッドを使用するには、[発行] タブの [発行の言語] プロパティを目的の地域に設定します。 Visual Studio は、選択した地域に必要なサテライト アセンブリを自動的に組み込み、それ以外のすべてのサテライト アセンブリを配置から除外します。
Note
.NET Core 3.1 および .NET 5 以降の ClickOnce では、発行ウィザードやプロジェクト デザイナーの [発行] ページではなく、発行ツールを使用して配置プロパティを設定します。 詳細については、ClickOnce を使用した .NET Windows アプリケーションの配置と .NET 用 ClickOnce に関するページを参照してください。
この作業は、Microsoft Windows Software Development Kit (SDK) の MageUI.exe ツールを使用して実行することもできます。 MageUI.exe で、アプリケーション マニフェストの [ファイル] タブで [作成] ボタンを使用してその他すべてのサテライト アセンブリをアプリケーション ディレクトリから除外し、さらに配置マニフェストの [名前] タブで [カルチャ] フィールドを設定します。 この手順によって、正しいサテライト アセンブリが組み込まれるだけでなく、配置マニフェストに含まれる assemblyIdentity
要素の language
属性が、対応するカルチャに設定されます。
アプリケーションを発行した後、アプリケーションがサポートする追加のカルチャごとにこの手順を繰り返す必要があります。 毎回、異なる Web サーバー ディレクトリまたはファイル共有ディレクトリに発行するようにする必要があります。これは、各アプリケーション マニフェストで異なるサテライト アセンブリを参照し、各配置マニフェストで language
属性に異なる値を使用するためです。
必要に応じてサテライト アセンブリをダウンロードする
すべてのサテライト アセンブリを 1 つの配置に含める場合は、オンデマンド ダウンロードを使用し、サテライト アセンブリをオプションとしてマークすることにより、パフォーマンスを高めることができます。 マークしたアセンブリは、アプリケーションがインストールまたは更新されるときにはダウンロードされません。 これらのアセンブリは、必要になったときに ApplicationDeployment クラスの DownloadFileGroup メソッドを呼び出すことでインストールできます。
Note
NET Core および .NET 5 以降のバージョンでは、System.Deployment.Application 名前空間内の ApplicationDeployment クラスと API はサポートされていません。 .NET 7 では、アプリケーションの配置プロパティにアクセスするための新しいメソッドがサポートされています。 詳細については、.NET の ClickOnce 配置プロパティへのアクセスに関するページを参照してください。 .NET 7 では、ApplicationDeployment メソッドと同等のメソッドはサポートされていません。
サテライト アセンブリを必要に応じてダウンロードする処理は、その他の種類のアセンブリを必要に応じてダウンロードする処理と若干異なります。 ClickOnce 用 Windows SDK ツールを使用してこのシナリオを実現する方法の詳細とコード例については、ClickOnce 配置 API を使用して必要に応じてサテライト アセンブリをダウンロードする方法のチュートリアルを参照してください。
このシナリオは、Visual Studio で有効にすることもできます。 詳細については、「チュートリアル : デザイナーを使用し、ClickOnce 配置 API で必要に応じてアセンブリをダウンロードする」を参照してください。
ローカライズされた ClickOnce アプリケーションを配置前にテストする
サテライト アセンブリが Windows フォーム アプリケーションに使用されるのは、アプリケーションのメイン スレッドの CurrentUICulture プロパティがそのサテライト アセンブリのカルチャに設定されている場合に限られます。 各地域の顧客は Windows のローカライズ版を既に実行していると考えられるため、カルチャも該当する既定値に設定されているはずです。
アプリケーションを顧客が使用できるようにする前に、ローカライズされた配置をテストするには、次の 3 つのオプションがあります。
ClickOnce アプリケーションを、Windows の該当するローカライズ版で実行する。
アプリケーション内で、CurrentUICulture プロパティをプログラムにより設定する (このプロパティは、Run メソッドを呼び出す前に設定する必要があります)。