次の方法で共有


ClickOnce アプリケーションをローカライズする

ローカライズは、アプリケーションを特定のカルチャに適したプロセスにします。 このプロセスでは、ユーザー インターフェイス (UI) テキストを地域固有の言語に変換し、正しい日付と通貨の書式設定を使用し、フォーム上のコントロールのサイズを調整し、必要に応じてコントロールを右から左にミラーリングします。

アプリケーションをローカライズすると、1 つ以上のサテライト アセンブリが作成されます。 各アセンブリには、特定のカルチャに固有の UI 文字列、イメージ、およびその他のリソースが含まれています。 (アプリケーションのメイン実行可能ファイルには、アプリケーションの既定のカルチャの文字列が含まれています)。

このトピックでは、他のカルチャ用に ClickOnce アプリケーションを配置する 3 つの方法について説明します。

  • すべてのサテライト アセンブリを 1 つのデプロイに含めます。

  • カルチャごとに 1 つのデプロイを生成し、それぞれに 1 つのサテライト アセンブリを含めます。

  • 必要に応じてサテライト アセンブリをダウンロードします。

すべてのサテライト アセンブリを配置に含む

複数の ClickOnce 配置を発行する代わりに、すべてのサテライト アセンブリを含む 1 つの ClickOnce 配置を発行できます。

このメソッドは、Visual Studio の既定値です。 Visual Studio でこのメソッドを使用するには、追加の作業を行う必要はありません。

MageUI.exeでこのメソッドを使用するには、アプリケーションのカルチャを MageUI.exeニュートラルに設定する必要があります。 次に、すべてのサテライト アセンブリをデプロイに手動で含める必要があります。 MageUI.exeでは、アプリケーション マニフェストの [ファイル] タブの [設定] ボタンを使用してサテライト アセンブリを追加できます。

この方法の利点は、1 つのデプロイを作成し、ローカライズされた展開ストーリーを簡略化することです。 実行時には、ユーザーの Windows オペレーティング システムの既定のカルチャに応じて、適切なサテライト アセンブリが使用されます。 この方法の欠点は、アプリケーションがクライアント コンピューターにインストールまたは更新されるたびに、すべてのサテライト アセンブリをダウンロードすることです。 アプリケーションに多数の文字列がある場合、または顧客のネットワーク接続が遅い場合、このプロセスはアプリケーションの更新中のパフォーマンスに影響を与える可能性があります。

この方法では、異なるカルチャのさまざまなテキスト文字列サイズに対応するために、アプリケーションがコントロールの高さ、幅、位置を自動的に調整することを前提としています。 Windows フォームには、 FlowLayoutPanel コントロールや TableLayoutPanel コントロール、 AutoSize プロパティなど、フォームを簡単にローカライズできるようにフォームを設計できるさまざまなコントロールとテクノロジが含まれています。 「 方法: AutoSize と TableLayoutPanel コントロールを使用して Windows フォームでローカライズをサポートする」も参照してください。

カルチャごとに 1 つのデプロイを生成する

このデプロイ戦略では、複数のデプロイを生成します。 各デプロイには、特定のカルチャに必要なサテライト アセンブリのみを含め、展開をそのカルチャに固有としてマークします。

Visual Studio でこのメソッドを使用するには、[発行] タブの [発行言語] プロパティを目的のリージョンに設定します。 Visual Studio は、選択したリージョンに必要なサテライト アセンブリを自動的に含め、他のすべてのサテライト アセンブリをデプロイから除外します。

ClickOnce for .NET Core 3.1 および .NET 5 以降では、発行ウィザードとプロジェクト デザイナーの [発行] ページではなく、発行ツールを使用して配置プロパティを設定します。 詳細については、「ClickOnce と ClickOnce for .NET を使用した .NET Windows アプリケーションの配置」を参照してください。

同じことを行うには、Microsoft Windows ソフトウェア開発キット (SDK) の MageUI.exe ツールを使用します。 アプリケーション マニフェストの [ファイル] タブの [設定] ボタンを使用して、他のすべてのサテライト アセンブリをアプリケーション ディレクトリから除外し、MageUI.exeの配置マニフェストの [名前] タブの [カルチャ] フィールドを設定します。 これらの手順には、適切なサテライト アセンブリが含まれるだけでなく、配置マニフェストのlanguage要素のassemblyIdentity属性も対応するカルチャに設定されます。

アプリケーションを発行したら、アプリケーションがサポートする追加のカルチャごとにこの手順を繰り返す必要があります。 各アプリケーション マニフェストは異なるサテライト アセンブリを参照し、各配置マニフェストは language 属性に対して異なる値を持つため、毎回異なる Web サーバー ディレクトリまたはファイル共有ディレクトリに発行する必要があります。

必要に応じてサテライト アセンブリをダウンロードする

すべてのサテライト アセンブリを 1 つのデプロイに含める場合は、オンデマンドダウンロードを使用してパフォーマンスを向上させることができます。これにより、アセンブリをオプションとしてマークできます。 マークされたアセンブリは、アプリケーションのインストールまたは更新時にはダウンロードされません。 DownloadFileGroup クラスで ApplicationDeployment メソッドを呼び出すことで、必要なときにアセンブリをインストールできます。

ApplicationDeployment名前空間のSystem.Deployment.Application クラスと API は、.NET Core および .NET 5 以降のバージョンではサポートされていません。 .NET 7 では、アプリケーション展開プロパティにアクセスするための新しい方法がサポートされています。 詳細については、「 .NET での ClickOnce 配置プロパティへのアクセス」を参照してください。 .NET 7 では、ApplicationDeployment メソッドと同等のメソッドはサポートされていません。

必要に応じてサテライト アセンブリをダウンロードすることは、必要に応じて他の種類のアセンブリをダウンロードする場合とは若干異なります。 ClickOnce 用 Windows SDK ツールを使用してこのシナリオを有効にする方法の詳細とコード例については、「 チュートリアル: ClickOnce 配置 API を使用した必要に応じてサテライト アセンブリをダウンロードする」を参照してください。

Visual Studio でこのシナリオを有効にすることもできます。 詳細については、「 チュートリアル: デザイナーを使用した ClickOnce 配置 API を使用した必要に応じてサテライト アセンブリをダウンロードする」を参照してください

配置前のローカライズされた ClickOnce アプリケーションのテスト

サテライト アセンブリは、アプリケーションのメイン スレッドの CurrentUICulture プロパティがサテライト アセンブリのカルチャに設定されている場合にのみ、Windows フォーム アプリケーションに使用されます。 ローカル市場のお客様は、カルチャが適切な既定値に設定されたローカライズされたバージョンの Windows を既に実行している可能性があります。

アプリケーションを顧客が使用できるようにする前に、ローカライズされたデプロイをテストするための 3 つのオプションがあります。

  • ClickOnce アプリケーションは、適切なローカライズされたバージョンの Windows で実行できます。

  • CurrentUICulture プロパティは、アプリケーションでプログラムで設定できます。 (このプロパティは、 Run メソッドを呼び出す前に設定する必要があります)。