WPF のグローバリゼーションおよびローカリゼーションの概要WPF Globalization and Localization Overview

1 つだけの言語、製品の可用性を制限する場合は、潜在的な顧客ベースでの世界 6.5 10億人の母集団の割合を制限します。When you limit your product's availability to only one language, you limit your potential customer base to a fraction of our world’s 6.5 billion population. 世界中のユーザーに到達するようにアプリケーションを実行する場合に、製品のコスト効率に優れたローカリゼーションより多くのお客様に最高で最も経済的な方法のいずれか。If you want your applications to reach a global audience, cost-effective localization of your product is one of the best and most economical ways to reach more customers.

この概要紹介のグローバリゼーションおよびローカリゼーションWindows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)します。This overview introduces globalization and localization in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF). グローバリゼーションとは、設計と複数の場所で実行するアプリケーションの開発です。Globalization is the design and development of applications that perform in multiple locations. たとえば、グローバリゼーション ローカライズされたユーザー インターフェイスとサポート リージョンのデータの異なるカルチャ内のユーザーの。For example, globalization supports localized user interfaces and regional data for users in different cultures. WPFWPF グローバル化されたデザイン機能、自動レイアウト、サテライト アセンブリ、およびローカライズされた属性を含む、コメントを提供します。 provides globalized design features, including automatic layout, satellite assemblies, and localized attributes and commenting.

ローカリゼーションとは、アプリケーションがサポートする特定のカルチャのローカライズ バージョンへのアプリケーション リソースを変換します。Localization is the translation of application resources into localized versions for the specific cultures that the application supports. ローカライズするときにWPFWPFで Api を使用する、System.Windows.Markup.Localizer名前空間。When you localize in WPFWPF, you use the APIs in the System.Windows.Markup.Localizer namespace. これらの Api の電源、 LocBaml ツール サンプルコマンド ライン ツール。These APIs power the LocBaml Tool Sample command-line tool. ビルドして、LocBaml を使用する方法については、次を参照してください。アプリケーションをローカライズするします。For information about how to build and use LocBaml, see Localize an Application.

WPF のグローバリゼーションおよびローカリゼーションのためのベスト プラクティスBest Practices for Globalization and Localization in WPF

組み込まれているグローバリゼーションおよびローカリゼーションの機能を最大限に活用できるWPFWPFに従って、UI の設計とこのセクションではローカライズに関するヒント。You can make the most of the globalization and localization functionality that is built into WPFWPF by following the UI design and localization-related tips that this section provides.

WPF の UI デザインのベスト プラクティスBest Practices for WPF UI Design

デザインするとき、 WPFWPF– ベースUIUI、これらのベスト プラクティスの実装を検討します。When you design a WPFWPF–based UIUI, consider implementing these best practices:

  • 書き込み、UIUIXAMLXAML; を作成しないようにUIUIコード。Write your UIUI in XAMLXAML; avoid creating UIUI in code. 作成するときに、UIUIを使用してXAMLXAML、組み込まれているローカリゼーション Api を介して公開します。When you create your UIUI by using XAMLXAML, you expose it through built-in localization APIs.

  • コンテンツのレイアウト時に絶対位置および固定サイズを使用しないでください。代わりに、相対パスまたは自動サイズ設定を使用します。Avoid using absolute positions and fixed sizes to lay out content; instead, use relative or automatic sizing.

    • 使用SizeToContent幅と高さの設定を保持およびAutoします。Use SizeToContent and keep widths and heights set to Auto.

    • 使用しないでくださいCanvasをレイアウトするUIUI秒。Avoid using Canvas to lay out UIUIs.

    • 使用Gridとそのサイズの共有機能。Use Grid and its size-sharing feature.

  • ローカライズされたテキストは多くの場合より多くの領域を必要とするために、余白に余分なスペースを提供します。Provide extra space in margins because localized text often requires more space. 突出の文字には、余分なスペースができます。Extra space allows for possible overhanging characters.

  • 有効にするTextWrappingTextBlockクリッピングを回避するためにします。Enable TextWrapping on TextBlock to avoid clipping.

  • 設定、xml:lang属性。Set the xml:lang attribute. この属性には、特定の要素とその子要素のカルチャがについて説明します。This attribute describes the culture of a specific element and its child elements. このプロパティの値がいくつかの機能の動作を変更WPFWPFします。The value of this property changes the behavior of several features in WPFWPF. たとえば、ハイフネーション、スペル チェック、数値の置換、複雑なスクリプトの整形、およびフォント フォールバックの動作を変更します。For example, it changes the behavior of hyphenation, spell checking, number substitution, complex script shaping, and font fallback. 参照してくださいWPF のグローバリゼーション詳細設定については、 xml:lang XAML 処理します。See Globalization for WPF for more information about setting the xml:lang Handling in XAML.

  • さまざまな言語に使用されるフォントをより適切に制御を取得する場合は、カスタマイズされた複合フォントを作成します。Create a customized composite font to obtain better control of fonts that are used for different languages. 既定では、 WPFWPF Windows\Fonts ディレクトリに GlobalUserInterface.composite フォントを使用します。By default, WPFWPF uses the GlobalUserInterface.composite font in your Windows\Fonts directory.

  • ローカライズがナビゲーション アプリケーションを作成するときに右から左の形式でテキストを表示するカルチャで、明示的に設定、FlowDirectionページが継承しないことを確認するには、各ページのFlowDirectionから、NavigationWindowします。When you create navigation applications that may be localized in a culture that presents text in a right-to-left format, explicitly set the FlowDirection of every page to ensure the page does not inherit FlowDirection from the NavigationWindow.

  • ブラウザー外でホストされているスタンドアロン ナビゲーション アプリケーションを作成するときに設定、StartupUri初期アプリケーションに、NavigationWindowの代わりにページに (たとえば、 <Application StartupUri="NavigationWindow.xaml">)。When you create stand-alone navigation applications that are hosted outside a browser, set the StartupUri for your initial application to a NavigationWindow instead of to a page (for example, <Application StartupUri="NavigationWindow.xaml">). この設計では、変更することができます、FlowDirectionウィンドウとナビゲーション バー。This design enables you to change the FlowDirection of the Window and the navigation bar. 詳細と例では、次を参照してください。グローバリゼーション ホームページ サンプルします。For more information and an example, see Globalization Homepage Sample.

WPF のローカリゼーションのためのベスト プラクティスBest Practices for WPF Localization

ローカライズするWPFWPF– ベースのアプリケーションは、これらのベスト プラクティスの実装を検討してください。When you localize WPFWPF–based applications, consider implementing these best practices:

  • ローカリゼーション コメントを使用して、ローカライザーに余分なコンテキストを提供します。Use localization comments to provide extra context for localizers.

  • ローカリゼーション属性を使用して、選択的に省略することではなくローカライズを制御するUid要素のプロパティ。Use localization attributes to control localization instead of selectively omitting Uid properties on elements. 参照してくださいローカリゼーション属性とコメント詳細についてはします。See Localization Attributes and Comments for more information.

  • 使用msbuild -t:updateuid-t:checkuidを追加して確認Uidプロパティで、XAMLXAMLします。Use msbuild -t:updateuid and -t:checkuid to add and check Uid properties in your XAMLXAML. 使用Uid開発およびローカリゼーションの間の変更を追跡するプロパティ。Use Uid properties to track changes between development and localization. Uid プロパティを使用して、新しい開発上の変更をローカライズするのに役立ちます。Uid properties help you localize new development changes. 手動で追加する場合UidプロパティをUIUIタスクが通常面倒で正確性が低下します。If you manually add Uid properties to a UIUI, the task is typically tedious and less accurate.

    • 編集または変更しないでUidローカライズを開始した後のプロパティ。Do not edit or change Uid properties after you begin localization.

    • 重複データを使用しないでくださいUidプロパティ (コピーと貼り付けコマンドを使用する場合は、このヒントを思い出してください)。Do not use duplicate Uid properties (remember this tip when you use the copy-and-paste command).

    • 設定、UltimateResourceFallbackを適切なフォールバック言語を指定する AssemblyInfo.* 内の場所 (たとえば、 [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)])。Set the UltimateResourceFallback location in AssemblyInfo.* to specify the appropriate language for fallback (for example, [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]).

      省略すると、メイン アセンブリに、ソース言語を含める場合、<UICulture>プロジェクト ファイルにタグを付ける、設定、UltimateResourceFallbackサテライトではなくメイン アセンブリと場所 (たとえば、 [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)])。If you decide to include your source language in the main assembly by omitting the <UICulture> tag in your project file, set the UltimateResourceFallback location as the main assembly instead of the satellite (for example, [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]).

WPF アプリケーションをローカライズします。Localize a WPF Application

ローカライズするときに、WPFWPFアプリケーションでは、いくつかのオプションがあります。When you localize a WPFWPF application, you have several options. アプリケーションのローカライズ可能なリソースをバインドするなど、XMLXMLファイル、resx テーブルでローカライズ可能なテキストを格納または使用して、ローカライザーExtensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)ファイル。For example, you can bind the localizable resources in your application to an XMLXML file, store localizable text in resx tables, or have your localizer use Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) files. このセクションでは、いくつかの利点を提供する、XAML の BAML 形式を使用するローカリゼーション ワークフローについて説明します。This section describes a localization workflow that uses the BAML form of XAML, which provides several benefits:

  • ビルドした後はローカライズできます。You can localize after you build .

  • 同時に開発するローカライズできるようにの XAML の BAML 形式は、以前のバージョンから、XAMLwith ローカライズの BAML 形式は、の新しいバージョンに更新できます。You can update to a newer version of the BAML form of XAMLwith localizations from an older version of the BAML form of XAML so that you can localize at the same time that you develop.

  • 検証する元のソース要素とセマンティクス コンパイル時に XAML の BAML 形式は、コンパイル済みの形式のため、XAMLXAMLします。You can validate original source elements and semantics at compile time because the BAML form of XAML is the compiled form of XAMLXAML.

ローカリゼーションのビルド プロセスLocalization Build Process

開発する際に、WPFWPFアプリケーション、ローカライズのビルド プロセスは次のようにします。When you develop a WPFWPF application, the build process for localization is as follows:

  • 開発者を作成し、グローバル化、WPFWPFアプリケーション。The developer creates and globalizes the WPFWPF application. プロジェクト ファイル開発者セット<UICulture>en-US</UICulture>言語中立のメイン アセンブリを生成できるように、アプリケーションがコンパイルされたとき。In the project file the developer sets <UICulture>en-US</UICulture> so that when the application is compiled, a language-neutral main assembly is generated. このアセンブリのサテライト。 ローカライズ可能なすべてのリソースを含む.resources.dll ファイル。This assembly has a satellite .resources.dll file that contains all the localizable resources. 必要に応じて、ソース言語に保存、メイン アセンブリのためローカリゼーションAPIAPIsメイン アセンブリからの抽出をサポートします。Optionally, you can keep the source language in the main assembly because our localization APIAPIs support extraction from the main assembly.

  • ファイルは、ビルドにコンパイルされるときに、 XAMLXAML XAML の BAML 形式に変換されます。When the file is compiled into the build, the XAMLXAML is converted to the BAML form of XAML. カルチャ的にニュートラルMyDialog.exeとカルチャに依存 (英語)MyDialog.resources.dllファイルは、英語圏の顧客にリリースします。The culturally neutral MyDialog.exe and the culturally dependent (English) MyDialog.resources.dll files are released to the English-speaking customer.

ローカリゼーション ワークフローLocalization Workflow

ローカライズ プロセスを開始した後、ローカライズされていないMyDialog.resources.dllファイルをビルドします。The localization process begins after the unlocalized MyDialog.resources.dll file is built. UIUI要素と、元のプロパティXAMLXAMLを使用して、キーと値のペアに XAML の BAML 形式から抽出された、 APIAPIs System.Windows.Markup.Localizerします。The UIUI elements and properties in your original XAMLXAML are extracted from the BAML form of XAML into key-value pairs by using the APIAPIs under System.Windows.Markup.Localizer. ローカライザーは、キー/値ペアを使用して、アプリケーションをローカライズします。Localizers use the key-value pairs to localize the application. 新しいを生成することができます。 ローカライズが完了したら、新しい値から resource.dll します。You can generate a new .resource.dll from the new values after localization is complete.

キー/値ペアのキーは、x:Uid開発者が、元に配置されている値XAMLXAMLします。The keys of the key-value pairs are x:Uid values that are placed by the developer in the original XAMLXAML. これらx:Uid値が有効にする、APIAPIを追跡し、ローカライズ中に、開発者と、ローカライザー間に行われる変更をマージします。These x:Uid values enable the APIAPI to track and merge changes that happen between the developer and the localizer during localization. たとえば、開発者が変更された場合、UIUIローカライザーは、ローカライズを開始した後の最小限の翻訳作業が失われたようにローカライズを既に完了した作業と開発の変更をマージできます。For example, if the developer changes the UIUI after the localizer begins localizing, you can merge the development change with the already completed localization work so that minimal translation work is lost.

次の図は、XAML の BAML 形式に基づいているローカリゼーションの一般的なワークフローを示します。The following graphic shows a typical localization workflow that is based on the BAML form of XAML. この図では、開発者は、英語でアプリケーションを記述を前提としています。This diagram assumes the developer writes the application in English. 開発者は、作成し、WPF アプリケーションのグローバライズします。The developer creates and globalizes the WPF application. プロジェクトの開発者のセットをファイル<UICulture>en-US</UICulture>ビルド時に、言語に中立的なメイン アセンブリはサテライトで生成されるようにします。 ローカライズ可能なすべてのリソースを含む resources.dll。In the project file the developer sets <UICulture>en-US</UICulture> so that on build, a language neutral main assembly gets generated with a satellite .resources.dll containing all localizable resources. 代わりに、WPF のローカリゼーション Api は、メイン アセンブリからの抽出をサポートするため、メイン アセンブリにソース言語に残すいずれかでした。Alternately, one could keep the source language in the main assembly because WPF localization APIs support extraction from the main assembly. ビルド プロセスの後、XAML BAML にコンパイルされます。After the build process, the XAML get compiled into BAML. カルチャ的にニュートラル MyDialog.exe.resources.dll 英語圏の顧客に送付されます。The culturally neutral MyDialog.exe.resources.dll get shipped to the English speaking customer.

ローカリゼーション ワークフローLocalization workflow

ローカライズされていない作業フローUnlocalized work flow

WPF のローカリゼーションの例Examples of WPF Localization

このセクションには、ローカライズされたアプリケーションをビルドおよびローカライズする方法を理解するための例が含まれています。WPFWPFアプリケーション。This section contains examples of localized applications to help you understand how to build and localize WPFWPF applications.

ダイアログ ボックスの例を実行します。Run Dialog Box Example

次の図の出力を表示する、実行ダイアログ ボックスのサンプルです。The following graphics show the output of the Run dialog box sample.

英語:English:

実行 ダイアログ ボックスRun dialog box

ドイツ語:German:

ドイツ語の実行 ダイアログ ボックスGerman Run dialog box

グローバルの実行 ダイアログ ボックスのデザインDesigning a Global Run Dialog Box

この例で生成する実行 ダイアログ ボックスを使用してWPFWPFXAMLXAMLします。This example produces a Run dialog box by using WPFWPF and XAMLXAML. このダイアログ ボックスは、実行 ダイアログ ボックスから使用できる、 Microsoft WindowsMicrosoft Windows [スタート] メニュー。This dialog box is equivalent to the Run dialog box that is available from the Microsoft WindowsMicrosoft Windows Start menu.

グローバルなダイアログ ボックスを行うためのいくつかの要点は次のとおりです。Some highlights for making global dialog boxes are:

自動レイアウトAutomatic Layout

で Window1.xaml:In Window1.xaml:

<Window SizeToContent="WidthAndHeight">

前のウィンドウのプロパティには、コンテンツのサイズに従ってウィンドウが自動的にサイズ変更します。The previous Window property automatically resizes the window according to the size of the content. このプロパティは、ローカリゼーション後にサイズが大きくなるコンテンツ、ウィンドウを防止します。コンテンツ ローカライズ後のサイズが減少したら、不要なスペースも削除されます。This property prevents the window from cutting off content that increases in size after localization; it also removes unneeded space when content decreases in size after localization.

<Grid x:Uid="Grid_1">

Uid プロパティは、のために必要なWPFWPFローカリゼーションAPIAPIs正常に動作します。Uid properties are needed in order for WPFWPF localization APIAPIs to work correctly.

使用されているWPFWPFローカリゼーションAPIAPIs開発およびローカリゼーションの間の変更を追跡するために、ユーザー インターフェイス (UI)user interface (UI)します。They are used by WPFWPF localization APIAPIs to track changes between the development and localization of the ユーザー インターフェイス (UI)user interface (UI). Uid プロパティを使用すると、新しいバージョンのマージ、UIUIのローカライズを古い、UIUIします。Uid properties enable you to merge a newer version of the UIUI with an older localization of the UIUI. 追加する、Uidプロパティを使用してmsbuild -t:updateuid RunDialog.csprojコマンド シェルでします。You add a Uid property by running msbuild -t:updateuid RunDialog.csproj in a command shell. これは、追加の推奨される方法Uidプロパティそれらを手動で追加するには通常は時間がかかると正確さに欠けるためです。This is the recommended method of adding Uid properties because manually adding them is typically time-consuming and less accurate. 確認できますUidプロパティを実行して正しく設定msbuild -t:checkuid RunDialog.csprojします。You can check that Uid properties are correctly set by running msbuild -t:checkuid RunDialog.csproj.

UIUIを使用して構造化、Grid自動レイアウトの活用の便利なコントロールであるコントロールでWPFWPFします。The UIUI is structured by using the Grid control, which is a useful control for taking advantage of the automatic layout in WPFWPF. ダイアログ ボックスは次の 3 つの行と 5 つの列に分割されていることに注意してください。Note that the dialog box is split into three rows and five columns. 行と列の定義のない 1 つが、固定サイズです。そのため、UIUI各セルに配置された要素が増加に合わせて調整でき、ローカライズ中にサイズが減少します。Not one of the row and column definitions has a fixed size; hence, the UIUI elements that are positioned in each cell can adapt to increases and decreases in size during localization.

<Grid.ColumnDefinitions>
  <ColumnDefinition x:Uid="ColumnDefinition_1" />
  <ColumnDefinition x:Uid="ColumnDefinition_2" />

最初の 2 つの列で、オープン: ラベルとComboBoxに配置されますの 10% を使用して、UIUI幅の合計します。The first two columns where the Open: label and ComboBox are placed use 10 percent of the UIUI total width.

  <ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>

メモの共有のサイズ変更機能を使用する例では、Gridします。Note that of the example uses the shared-sizing feature of Grid. 最後の 3 つの列が同じ自体を配置することでこの方法の利点を実行SharedSizeGroupします。The last three columns take advantage of this by placing themselves in the same SharedSizeGroup. プロパティの名前の 1 つと同様に、これにより、同じサイズを共有する列。As one would expect from the name of the property, this allows the columns to share the same size. これより長い文字列「Durchsuchen…」に「参照…」ローカライズされたとき、すべてのボタンは、小さい"OK"ボタンと過度に大規模な「Durchsuchen...」ボタンではなく幅拡張します。So when the "Browse…" gets localized to the longer string "Durchsuchen…", all buttons grow in width instead of having a small "OK" button and a disproportionately large "Durchsuchen…" button.

Xml:langXml:lang

Xml:lang="en-US"

通知、 xml:lang XAML 処理のルート要素に配置、UIUIします。Notice the xml:lang Handling in XAML placed at the root element of the UIUI. このプロパティには、指定された要素とその子のカルチャがについて説明します。This property describes the culture of a given element and its children. この値は、いくつかの機能によって使用されますWPFWPFローカライズ中に適切に変更する必要があります。This value is used by several features in WPFWPF and should be changed appropriately during localization. この値は、どのような言語の辞書が使用して単語を区切るし、スペル チェックを変更します。This value changes what language dictionary is use to hyphenate and spell check words. また、数字、およびフォント フォールバック システムが使用するフォントを選択する方法の表示も影響します。It also affects the display of digits and how the font fallback system selects which font to use. 最後に、方法の数字を表示するプロパティの影響と複雑なスクリプトで記述された、方法テキストを整形します。Finally, the property affects the way numbers are displayed and the way texts written in complex scripts are shaped. 既定値は、"EN-US"です。The default value is "en-US".

サテライト リソース アセンブリの構築Building a Satellite Resource Assembly

で .csproj:In .csproj:

編集、.csprojファイルを開き、次のタグを追加するには無条件に<PropertyGroup>:Edit the .csproj file and add the following tag to an unconditional <PropertyGroup>:

<UICulture>en-US</UICulture>

追加に注意してください、UICulture値。Notice the addition of a UICulture value. 設定を有効なCultureInfoEN-US、プロジェクトのビルドなどの値がローカライズ可能なすべてのリソースのサテライト アセンブリを生成します。When this is set to a valid CultureInfo value such as en-US, building the project will generate a satellite assembly with all localizable resources in it.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

RunIcon.JPGのすべてのカルチャで同じで表示されるため、ローカライズする必要はありません。The RunIcon.JPG does not need to be localized because it should appear the same for all cultures. Localizable 設定されているfalseサテライト アセンブリではなく言語中立的なメイン アセンブリに残るようにします。Localizable is set to false so that it remains in the language neutral main assembly instead of the satellite assembly. Noncompilable のすべてのリソースの既定値はLocalizable設定trueします。The default value of all noncompilable resources is Localizable set to true.

ローカライズの実行 ダイアログLocalizing the Run Dialog

ParseParse

これをローカライズする最初の手順のアプリケーションをビルドした後はサテライト アセンブリからのローカライズ可能なリソースが解析しています。After building the application, the first step in localizing it is parsing the localizable resources out of the satellite assembly. このトピックの目的にあるサンプル LocBaml ツールを使用して、 LocBaml ツール サンプルします。For the purposes of this topic, use the sample LocBaml tool which can be found at LocBaml Tool Sample. LocBaml は、ローカライズ プロセスに合ったローカライズ ツールの構築を開始するため、サンプル ツールだけであることに注意してください。Note that LocBaml is only a sample tool meant to help you get started in building a localization tool that fits into your localization process. 解析するには、次を実行して、LocBaml を使用して: LocBaml/RunDialog.resources.dll を解析/アウト: "RunDialog.resources.dll.CSV"ファイルを生成します。Using LocBaml, run the following to parse: LocBaml /parse RunDialog.resources.dll /out: to generate a "RunDialog.resources.dll.CSV" file.

ローカライズします。Localize

このファイルを編集する Unicode をサポートする任意の CSV エディターを使用します。Use your favorite CSV editor that supports Unicode to edit this file. ローカライズのカテゴリが"None"のすべてのエントリを除外します。Filter out all entries with a localization category of "None". 次のエントリが表示されます。You should see the following entries:

リソース キーResource Key ローカライズのカテゴリLocalization Category [値]Value
Button_1:System.Windows.Controls.Button.$ContentButton_1:System.Windows.Controls.Button.$Content ボタンButton OKOK
Button_2:System.Windows.Controls.Button.$ContentButton_2:System.Windows.Controls.Button.$Content ボタンButton キャンセルCancel
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content ボタンButton 参照...Browse...
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content テキストText プログラム、フォルダー、ドキュメント、またはインターネット リソースの名前を入力して、Windows がそれを開きます。Type the name of a program, folder, document, or Internet resource, and Windows will open it for you.
TextBlock_2:System.Windows.Controls.TextBlock.$ContentTextBlock_2:System.Windows.Controls.TextBlock.$Content テキストText 開いています。Open:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title TitleTitle 実行Run

ドイツ語にアプリケーションをローカライズするにを実行すると次の変換が必要です。Localizing the application to German would require the following translations:

リソース キーResource Key ローカライズのカテゴリLocalization Category [値]Value
Button_1:System.Windows.Controls.Button.$ContentButton_1:System.Windows.Controls.Button.$Content ボタンButton OKOK
Button_2:System.Windows.Controls.Button.$ContentButton_2:System.Windows.Controls.Button.$Content ボタンButton AbbrechenAbbrechen
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content ボタンButton Durchsuchen.Durchsuchen…
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content テキストText Geben Sie den Namen eines Programms Ordners、Dokuments 並べ替えた einer Internetresource、します。Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2:System.Windows.Controls.TextBlock.$ContentTextBlock_2:System.Windows.Controls.TextBlock.$Content テキストText Öffnen:Öffnen:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title TitleTitle 実行Run

生成します。Generate

ローカライズの最後の手順では、新しくローカライズされたサテライト アセンブリを作成する必要があります。The last step of localization involves creating the newly localized satellite assembly. LocBaml の次のコマンドでは、これを実行できます。This can be accomplished with the following LocBaml command:

LocBaml.exe/生成 RunDialog.resources.dll/trans:RunDialog.resources.dll.CSV/out: です。/cul:de-DELocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DE

ドイツ語でWindowsWindows、このリソースが EN-US フォルダー内ではなく自動的に負荷をこの resources.dll をメイン アセンブリの横にある DE-DE フォルダーに配置すると、場合。On German WindowsWindows, if this resources.dll is placed in a de-DE folder next to the main assembly, this resource will automatically load instead of the one in the en-US folder. ドイツ語版があるない場合WindowsWindowsこれをテストするには、どのカルチャのカルチャを設定WindowsWindowsを使用する (たとえば、 en-US)、元のリソース DLL を置き換えるとします。If you do not have a German version of WindowsWindows to test this, set the culture to whatever culture of WindowsWindows you are using (for example, en-US), and replace the original resources DLL.

サテライト リソースの読み込みSatellite Resource Loading

MyDialog.exeMyDialog.exe en-US\MyDialog.resources.dllen-US\MyDialog.resources.dll de-DE\MyDialog.resources.dllde-DE\MyDialog.resources.dll
コードCode 元の英語 BAMLOriginal English BAML ローカライズされた BAMLLocalized BAML
カルチャ ニュートラル リソースCulturally neutral resources 英語での他のリソースOther resources in English ドイツ語にローカライズされたその他のリソースOther resources localized to German

.NET framework はサテライト リソース アセンブリを読み込むアプリケーションのに基づいて自動的に選択Thread.CurrentThread.CurrentUICultureします。The .NET framework automatically chooses which satellite resources assembly to load based on the application’s Thread.CurrentThread.CurrentUICulture. 既定値は、カルチャのWindowsWindowsOS。This defaults to the culture of your WindowsWindows OS. ドイツ語を使用している場合は、そのWindowsWindows、英語を使用している場合、de-DE\MyDialog.resources.dll が読み込まれるWindowsWindows、en-US\MyDialog.resources.dll を読み込みます。So if you are using German WindowsWindows, the de-DE\MyDialog.resources.dll loads, if you are using English WindowsWindows, the en-US\MyDialog.resources.dll loads. プロジェクトの AssemblyInfo.*、NeutralResourcesLanguage を指定することで、アプリケーションの最終的なフォールバック リソースを設定できます。You can set the ultimate fallback resource for your application by specifying the NeutralResourcesLanguage in your project’s AssemblyInfo.*. 指定した場合の例。For example if you specify:

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

de-DE\MyDialog.resources.dll または de\MyDialog.resources.dll はどちらも使用できない場合に、en-US\MyDialog.resources.dll ドイツ語の Windows で使用されます。then the en-US\MyDialog.resources.dll will be used with German Windows if a de-DE\MyDialog.resources.dll or de\MyDialog.resources.dll are both unavailable.

Microsoft サウジアラビア ホーム ページMicrosoft Saudi Arabia Homepage

次の図は、英語とアラビア語のホーム ページを表示します。The following graphics show an English and Arabic Homepage. これらのグラフィックスを生成する完全なサンプルを参照してください。グローバリゼーション ホームページ サンプルします。For the complete sample that produces these graphics see Globalization Homepage Sample.

英語:English:

英語のページEnglish page

アラビア語:Arabic:

アラビア語ページArabic page

グローバル Microsoft ホーム ページのデザインDesigning a Global Microsoft Homepage

モックの Microsoft サウジアラビア web サイトは RightToLeft 言語に提供されるグローバリゼーション機能を示しています。This mock up of the Microsoft Saudi Arabia web site illustrates the globalization features provided for RightToLeft languages. ヘブライ語やアラビア語などの言語がそのため、右から左への読み取り順序をあるレイアウトのUIUIする必要がありますレイアウトする多くの場合、英語などの左から右の言語の場合よりも大きく異なります。Languages such as Hebrew and Arabic have a right-to-left reading order so the layout of UIUI must often be laid out quite differently than it would be in left-to-right languages such as English. 右から左の言語またはその逆に、左から右言語からのローカライズは非常に困難なことができます。Localizing from a left-to-right language to a right-to-left language or vice versa can be quite challenging. WPFWPF このようなローカライズを簡単に設計されています。 has been designed to make such localizations much easier.

FlowDirectionFlowDirection

Homepage.xaml:Homepage.xaml:

<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    FlowDirection="LeftToRight" 
    Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
    xml:lang="en-US">

通知、FlowDirectionプロパティPageします。Notice the FlowDirection property on Page. このプロパティを変更するRightToLeftが変更されます、FlowDirectionPageとその子要素ようにこのレイアウトUIUIアラビア語のユーザーの予想どおり右から左に反転します。Changing this property to RightToLeft will change the FlowDirection of the Page and its children elements so that the layout of this UIUI is flipped to become right-to-left as an Arabic user would expect. 明示的な指定することで継承の動作をオーバーライドできる 1 つFlowDirection任意の要素。One can override the inheritance behavior by specifying an explicit FlowDirection on any element. FlowDirectionプロパティがいずれかで利用FrameworkElementまたは関連する要素をドキュメントし、の暗黙の型の値を持つLeftToRightします。The FlowDirection property is available on any FrameworkElement or document related element and has an implicit value of LeftToRight.

背景のグラデーション ブラシでもに反転するときに正しくことを確認します。 ルートFlowDirectionが変更されました。Observe that even the background gradient brushes are flipped correctly when the root FlowDirection is changed:

FlowDirection"LeftToRight"を =FlowDirection="LeftToRight"

左から右へのフローFlow from left to right

FlowDirection="RightToLeft"FlowDirection="RightToLeft"

右から左にフローFlow from right to left

パネルとコントロールの固定サイズを使用しないでください。Avoid Using Fixed Dimensions for Panels and Controls

Homepage.xaml を通してくださいとは別に固定幅と高さが全体で指定されていることを確認UIUI上にあるDockPanel、他の固定サイズではありません。Take a look through Homepage.xaml, notice that aside from the fixed width and height specified for the entire UIUI on the top DockPanel, there are no other fixed dimensions. ソース テキストを超える可能性のあるローカライズされたテキストをクリッピングを防ぐために、固定サイズを使用しないでください。Avoid using fixed dimensions to prevent clipping localized text that may be longer than the source text. WPFWPF パネルとコントロールが自動的に含まれている内容に基づいてサイズ変更します。 panels and controls will automatically resize based on the content that they contain. ほとんどのコントロールも詳細に制御を設定できる最小値と最大の大きさである (たとえば、MinWidth =「20」)。Most controls also have minimum and maximum dimensions that you can set for more control (for example, MinWidth="20"). Gridを使用して、相対的な幅と高さを設定することも '*' (たとえば、 Width="0.25*") または共有機能のセルのサイズを使用します。With Grid, you can also set relative widths and heights by using ‘*’ (for example, Width="0.25*") or use its cell size sharing feature.

ローカリゼーション コメントLocalization Comments

コンテンツがあいまいなと変換が困難な場合、多くの場合があります。There are many cases where content may be ambiguous and difficult to translate. 開発者またはデザイナーは、ローカリゼーション コメントによりローカライザーに追加のコンテキストやコメントを提供する機能を持っています。The developer or designer has the ability to provide extra context and comments to localizers through localization comments. 文字の使用状況を明確に以下の Localization.Comments たとえば '|'。For example the Localization.Comments below clarifies the usage of the character ‘|’.

<TextBlock 
  x:Uid="TextBlock_2" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This character is used as a decorative rule.)">
  |
</TextBlock>

このコメントがの場合は、LocBaml ツール TextBlock_1 のコンテンツに関連付けられます (を参照してくださいアプリケーションをローカライズする) には、出力の .csv ファイルに TextBlock_1 行の 6 番目の列に表示されることができます。This comment becomes associated with TextBlock_1’s content and in the case of the LocBaml Tool, ( see Localize an Application), it can be seen in the 6th column of the TextBlock_1 row in the output .csv file:

リソース キーResource Key カテゴリCategory 読み取り可能ですReadable 変更可能ですModifiable コメントComment [値]Value
TextBlock_1:System.Windows.Controls.TextBlock.$ContentTextBlock_1:System.Windows.Controls.TextBlock.$Content テキストText trueTRUE trueTRUE この文字は、装飾的な規則として使用されます。This character is used as a decorative rule. ||

コメントは、コンテンツまたは、次の構文を使用して任意の要素のプロパティに配置できます。Comments can be placed on the content or property of any element using the following syntax:

<TextBlock 
  x:Uid="TextBlock_1" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This is a comment on the TextBlock's content.)
     Margin(This is a comment on the TextBlock's Margin property.)">
  |
 </TextBlock>

ローカリゼーション属性Localization Attributes

多くの場合、開発者またはローカライズ マネージャーには、どのようなローカライザーを読み取り、変更の制御が必要があります。Often the developer or localization manager needs control of what localizers can read and modify. たとえば、ローカライザーに、会社や法的な表現の名前を変換しない可能性があります。For example, you might not want the localizer to translate the name of your company or legal wording. WPFWPF 読みやすさ、変更可能性、および要素のコンテンツや、ローカリゼーション ツールは、ロック、非表示、または要素の並べ替えに使用できるプロパティのカテゴリを設定するための属性を提供します。 provides attributes that enable you to set the readability, modifiability, and category of an element’s content or property which your localization tool can use to lock, hide, or sort elements. 詳細については、「Attributes」を参照してください。For more information, see Attributes. このサンプルの目的で、LocBaml ツールはこれらの属性の値を出力するだけです。For the purposes of this sample, the LocBaml Tool just outputs the values of these attributes. WPFWPF すべてのコントロールは、これらの属性の既定値がそれらをオーバーライドするには。 controls all have default values for these attributes, but you the can override them. たとえば、次の例がの既定のローカリゼーション属性をオーバーライドTextBlock_1およびローカライザーの判読できるコンテンツが変更不可能な状態を設定します。For example, the following example overrides the default localization attributes for TextBlock_1 and sets the content to be readable but unmodifiable for localizers.

<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
  Microsoft Corporation
</TextBlock>

読みやすさと、変更できる属性に加えてWPFWPFUI の一般的なカテゴリの列挙を提供します (LocalizationCategory) を使用して、ローカライザーに詳細なコンテキストを与えることができます。In addition to the readability and modifiability attributes, WPFWPF provides an enumeration of common UI categories (LocalizationCategory) that can be used to give localizers more context. WPFWPFでプラットフォーム コントロールの既定のカテゴリをオーバーライドできるXAMLXAMLも。The WPFWPF default categories for platform controls can be overridden in XAMLXAML as well:

<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>

既定のローカリゼーション属性をWPFWPF提供カスタム コントロールの適切な既定値を正しく設定できるようにも、コードにオーバーライドできます。The default localization attributes that WPFWPF provides can also be overridden through code, so you can correctly set the right default values for custom controls. 例えば:For example:

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)] 
public class CorporateLogo : TextBlock
{
    // ...
}

インスタンスの属性で設定あたりXAMLXAMLカスタム コントロールのコードで設定された値より優先します。The per instance attributes set in XAMLXAML will take precedence over the values set in code on custom controls. 属性とコメントの詳細については、次を参照してください。ローカリゼーション属性とコメントします。For more information on attributes and comments, see Localization Attributes and Comments.

フォント フォールバックと複合フォントFont Fallback and Composite Fonts

指定されたコード ポイント範囲をサポートしていないフォントを指定する場合WPFWPFは Windows\Fonts ディレクトリ内にあるグローバル ユーザー Interface.compositefont を使用している 1 つに自動的にフォールバックします。If you specify a font that does not support a given codepoint range, WPFWPF will automatically fallback to one that does by using the Global User Interface.compositefont that is located in your Windows\Fonts directory. 複合フォントだけその他のフォントの動作し、要素の設定で明示的に使用できるFontFamily(たとえば、 FontFamily="Global User Interface")。Composite fonts work just as any other font and can be used explicitly by setting an element’s FontFamily (for instance, FontFamily="Global User Interface"). 独自の複合フォントを作成し、特定のコード ポイント範囲および言語を使用するフォントを指定して、独自のフォント フォールバック設定を指定できます。You can specify your own font fallback preference by creating your own composite font and specifying what font to use for specific codepoint ranges and languages.

複合フォントの詳細については、次を参照してください。FontFamilyします。For more information on composite fonts see FontFamily.

Microsoft のホーム ページのローカライズLocalizing the Microsoft Homepage

このアプリケーションのローカライズを実行 ダイアログ ボックスの例と同じ手順を行うことができます。You can follow the same steps as the Run Dialog example to localize this application. アラビア語のローカライズされた .csv ファイルが使用可能で、グローバリゼーション ホームページ サンプルします。The localized .csv file for Arabic is available for you in the Globalization Homepage Sample.