次の方法で共有


WPF のグローバリゼーション

このトピックでは、グローバル 市場向けの Windows Presentation Foundation (WPF) アプリケーションを作成する際に注意する必要がある問題について説明します。 グローバリゼーション プログラミング要素は、 System.Globalization 名前空間の .NET で定義されます。

XAML グローバリゼーション

拡張アプリケーション マークアップ言語 (XAML) は XML に基づいており、XML 仕様で定義されているグローバリゼーション のサポートを利用します。 次のセクションでは、注意する必要があるいくつかの XAML 機能について説明します。

文字参照

文字参照は、それが表す特定の Unicode 文字の UTF16 コード単位を 10 進数または 16 進数で示します。 次の例は、COPTIC CAPITAL LETTER HORI または 'Ϩ' の 10 進文字参照を示しています。

Ϩ

次の例は、16 進数の文字参照を示しています。 16 進数の前に x があることに注意してください。

Ϩ

[エンコード]

XAML でサポートされるエンコードは、ASCII、Unicode UTF-16、UTF-8 です。 エンコード ステートメントは、XAML ドキュメントの先頭にあります。 エンコード属性が存在せず、バイト順がない場合、パーサーは既定で UTF-8 になります。 UTF-8 と UTF-16 が推奨されるエンコーディングです。 UTF-7 はサポートされていません。 次の例では、XAML ファイルで UTF-8 エンコードを指定する方法を示します。

?xml encoding="UTF-8"?

言語属性

XAML では 、xml:lang を使用して要素の言語属性を表します。 CultureInfo クラスを利用するには、言語属性値が、CultureInfoによって事前に定義されたカルチャ名のいずれかである必要があります。 xml:lang は要素ツリーで継承可能であり (XML ルールによって、依存関係プロパティの継承が原因であるとは限りません)、明示的に割り当てられない場合、その既定値は空の文字列になります。

言語属性は、地域言語を指定する場合に非常に便利です。 たとえば、フランス語のスペル、ボキャブラリ、発音はフランス、ケベック、ベルギー、スイスで異なります。 また、中国語、日本語、韓国語は Unicode でコード ポイントを共有しますが、表意形式は異なり、まったく異なるフォントを使用します。

次の拡張アプリケーション マークアップ言語 (XAML) の例では、 fr-CA 言語属性を使用してカナダフランス語を指定します。

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

XAML では、サロゲートを含むすべての Unicode 機能がサポートされています。 文字セットを Unicode にマップできる限り、サポートされます。 たとえば、GB18030では、中国語、日本語、韓国語 (CFK) の拡張 A と B とサロゲートのペアにマップされる文字がいくつか導入されているため、完全にサポートされています。 WPF アプリケーションでは、 StringInfo を使用して、サロゲート ペアを持っているか、文字を組み合わせるかを理解せずに文字列を操作できます。

XAML を使用した国際ユーザー インターフェイスの設計

このセクションでは、アプリケーションを記述するときに考慮する必要があるユーザー インターフェイス (UI) 機能について説明します。

国際テキスト

WPF には、Microsoft .NET Framework でサポートされているすべての書き込みシステムの組み込み処理が含まれています。

現在、次のスクリプトがサポートされています。

  • アラビア語

  • ベンガル語

  • デーヴァナーガリー

  • キリル

  • ギリシャ語

  • グジャラート語

  • グルムキ

  • ヘブライ語

  • 表意文字体系

  • カナラ語

  • ラーオ語

  • ラテン語

  • マラヤラム語

  • モンゴル語

  • オディア

  • シリア

  • タミール語

  • テルグ語

  • Thaana

  • タイ語*

  • チベット語

*このリリースでは、タイ語のテキストの表示と編集がサポートされています。単語区切りではありません。

次のスクリプトは現在サポートされていません。

  • クメール語

  • 韓国語 古い ハングル

  • ミャンマー

  • シンハラ語

すべての書き込みシステム エンジンは、OpenType フォントをサポートしています。 OpenType フォントには、フォント作成者がより優れた国際的およびハイエンドの文字体裁フォントを設計できるようにする OpenType レイアウト テーブルを含めることができます。 OpenType フォント レイアウト テーブルには、グリフの置換、グリフの配置、位置揃え、ベースラインの配置に関する情報が含まれており、テキスト処理アプリケーションでテキスト レイアウトを改善できます。

OpenType フォントを使用すると、Unicode エンコードを使用して大きなグリフ セットを処理できます。 このようなエンコードにより、文字体裁グリフのバリアントだけでなく、幅広い国際的なサポートが可能になります。

WPF テキスト レンダリングは、解像度の独立をサポートする Microsoft ClearType サブピクセル テクノロジを利用しています。 これにより、読みやすさが大幅に向上し、すべてのスクリプトで高品質の雑誌スタイルのドキュメントをサポートする機能が提供されます。

国際レイアウト

WPF は、水平方向、双方向、および垂直方向のレイアウトをサポートする非常に便利な方法を提供します。 プレゼンテーション フレームワークでは、 FlowDirection プロパティを使用してレイアウトを定義できます。 フロー方向のパターンは次のとおりです。

  • LeftToRight - ラテン、東アジアなどの水平方向のレイアウト。

  • RightToLeft - アラビア語、ヘブライ語などの双方向。

ローカライズ可能なアプリケーションの開発

グローバルに使用するアプリケーションを作成するときは、アプリケーションをローカライズ可能にする必要があることに注意してください。 次のトピックでは、考慮すべき点について説明します。

多言語ユーザー インターフェイス

多言語ユーザー インターフェイス (MUI) は、UI をある言語から別の言語に切り替えるための Microsoft サポートです。 WPF アプリケーションでは、アセンブリ モデルを使用して MUI をサポートします。 1 つのアプリケーションには、言語に依存しないアセンブリと、言語に依存するサテライト リソース アセンブリが含まれています。 エントリ ポイントは、メイン アセンブリ内のマネージド .EXEです。 WPF リソース ローダーは、フレームワークのリソース マネージャーを利用して、リソースの参照とフォールバックをサポートします。 複数の言語サテライト アセンブリは、同じメイン アセンブリで動作します。 読み込まれるリソース アセンブリは、現在のスレッドの CurrentUICulture によって異なります。

ローカライズ可能なユーザー インターフェイス

WPF アプリケーションでは、XAML を使用して UI を定義します。 XAML を使用すると、開発者は一連のプロパティとロジックを使用してオブジェクトの階層を指定できます。 XAML の主な用途は WPF アプリケーションを開発することですが、任意の共通言語ランタイム (CLR) オブジェクトの階層を指定するために使用できます。 ほとんどの開発者は、XAML を使用してアプリケーションの UI を指定し、C# などのプログラミング言語を使用してユーザーの操作に対応します。

リソースの観点からは、UI はリソース要素であるため、国際言語をサポートするには最終的な配布形式をローカライズ可能にする必要があります。 XAML ではイベントを処理できないため、多くの XAML アプリケーションにはこれを行うコード ブロックが含まれています。 詳細については、「WPFでの XAML の 」を参照してください。 XAML ファイルが XAML の BAML 形式にトークン化されると、コードは削除され、異なるバイナリにコンパイルされます。 XAML ファイル、イメージ、およびその他の種類のマネージド リソース オブジェクトの BAML 形式はサテライト リソース アセンブリに埋め込まれます。サテライト リソース アセンブリは、ローカライズが必要ない場合は他の言語またはメイン アセンブリにローカライズできます。

WPF アプリケーションは、文字列テーブル、イメージなど、すべての FrameworkCLR リソースをサポートします。

ローカライズ可能なアプリケーションのビルド

ローカライズとは、UI をさまざまなカルチャに適応させることです。 WPF アプリケーションをローカライズ可能にするには、開発者はローカライズ可能なすべてのリソースをリソース アセンブリにビルドする必要があります。 リソース アセンブリは様々な言語にローカライズされ、コードビハインドはリソース管理 API を使用して読み込みます。 WPF アプリケーションに必要なファイルの 1 つは、プロジェクト ファイル (.proj) です。 アプリケーションで使用するすべてのリソースは、プロジェクト ファイルに含める必要があります。 .csproj ファイルの次の例は、これを行う方法を示しています。

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

アプリケーションでリソースを使用するには、 ResourceManager をインスタンス化し、使用するリソースを読み込みます。 この方法を次の例に示します。

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

ローカライズされたアプリケーションでの ClickOnce の使用

ClickOnce は、Visual Studio 2005 に付属する新しい Windows フォーム配置テクノロジです。 これにより、アプリケーションのインストールと Web アプリケーションのアップグレードが可能になります。 ClickOnce で配置されたアプリケーションがローカライズされている場合は、ローカライズされたカルチャでのみ表示できます。 たとえば、展開されたアプリケーションが日本語にローカライズされている場合は、英語の Windows ではなく、日本語の Microsoft Windows でのみ表示できます。 これは、日本語ユーザーが英語バージョンの Windows を実行する一般的なシナリオであるため、問題が発生します。

この問題の解決策は、ニュートラル言語フォールバック属性を設定することです。 アプリケーション開発者は必要に応じて、メイン アセンブリからリソースを削除し、特定のカルチャに対応するサテライト アセンブリでリソースを見つけることができます。 このプロセスを制御するには、 NeutralResourcesLanguageAttributeを使用します。 NeutralResourcesLanguageAttribute クラスのコンストラクターには 2 つのシグネチャがあります。1 つは、UltimateResourceFallbackLocationがフォールバック リソースを抽出する場所を指定する ResourceManager パラメーターを受け取ります。メイン アセンブリまたはサテライト アセンブリです。 この属性を使用する方法の例を次に示します。 最終的なフォールバック場所として、コードは現在実行中のアセンブリのディレクトリの "de" サブディレクトリでリソースを検索するResourceManagerを実行します。

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

こちらも参照ください