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

製品の利用可能性を1つの言語のみに制限すると、お客様の潜在顧客ベースを世界の65億人口の一部に限定できます。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. アプリケーションを世界中のユーザーに提供する場合、製品のコスト効率に優れたローカライズ方法の1つは、より多くの顧客にリーチするための最良で経済的な方法の1つです。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でローカライズする場合は、System.Windows.Markup.Localizer 名前空間の Api を使用します。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:

  • XAMLXAMLUIUI を作成します。コードに UIUI を作成しないようにします。Write your UIUI in XAMLXAML; avoid creating UIUI in code. XAMLXAMLを使用して UIUI を作成する場合は、組み込みのローカライズ 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.

    • UIUIs をレイアウトするために Canvas を使用しないでください。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.

  • クリッピングを回避するには、TextBlockTextWrapping を有効にします。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. XAML での xml: lang の処理の設定の詳細については、「 WPF のグローバリゼーション」を参照してください。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 フォントを使用します。By default, WPFWPF uses the GlobalUserInterface.composite font in your Windows\Fonts directory.

  • テキストを右から左に記述するカルチャでローカライズできるナビゲーションアプリケーションを作成する場合は、ページが NavigationWindowから FlowDirection を継承しないように、すべてのページの FlowDirection を明示的に設定します。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 を使用して、XAMLXAMLUid プロパティを追加および確認します。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).

    • AssemblyInfo. * の UltimateResourceFallback の場所を設定して、フォールバックに適した言語を指定します (たとえば、[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. たとえば、アプリケーション内のローカライズ可能なリソースを XML ファイルにバインドしたり、ローカライズ可能なテキストを resx テーブルに格納したり、ローカライザーに Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) ファイルを使用させることができます。For example, you can bind the localizable resources in your application to an XML 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 形式のローカライズを使用して、新しいバージョンの XAML 形式に更新できます。You can update to a newer version of the BAML form of XAML with 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 アプリケーションを作成し、globalizes します。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. このアセンブリには、ローカライズ可能なすべてのリソースを含むサテライトファイルがあります。This assembly has a satellite .resources.dll file that contains all the localizable resources. 必要に応じて、ローカライズ Api がメインアセンブリからの抽出をサポートしているため、ソース言語をメインアセンブリに保持できます。Optionally, you can keep the source language in the main assembly because our localization APIs 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

ローカライズプロセスは、unlocalized MyDialog.resources.dll ファイルがビルドされた後に開始されます。The localization process begins after the unlocalized MyDialog.resources.dll file is built. 元の XAMLXAMLUIUI の要素とプロパティは、System.Windows.Markup.Localizerの Api を使用して、XAML の BAML 形式からキーと値のペアに抽出されます。The UIUI elements and properties in your original XAMLXAML are extracted from the BAML form of XAML into key-value pairs by using the APIs 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.

キーと値のペアのキーは、開発者によって元の XAMLXAMLに配置された x:Uid 値です。The keys of the key-value pairs are x:Uid values that are placed by the developer in the original XAMLXAML. これらの x:Uid 値を使用すると、ローカリゼーション時に開発者とローカライザーの間で発生した変更を API で追跡およびマージできます。These x:Uid values enable the API 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 アプリケーションを作成して globalizes します。The developer creates and globalizes the WPF application. プロジェクトファイルでは、開発者が <UICulture>en-US</UICulture> を設定して、ビルド時に、ローカライズ可能なすべてのリソースを含むサテライトと共に、言語に依存しないメインアセンブリが生成されるようにします。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 は、英語のお客様に送付されます。The culturally neutral MyDialog.exe.resources.dll get shipped to the English speaking customer.

ローカライズワークフローを示す図。

Unlocalized ワークフローを示す図。

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:

英語版の [実行] ダイアログボックスを示すスクリーンショット。

ドイツ語:German:

ドイツ語版の [実行] ダイアログボックスを示すスクリーンショット。

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

この例では、WPFWPFXAMLXAMLを使用して、 [実行] ダイアログボックスを作成します。This example produces a Run dialog box by using WPFWPF and XAMLXAML. このダイアログボックスは、Microsoft Windows の スタート メニューから使用できる 実行 ダイアログボックスに相当します。This dialog box is equivalent to the Run dialog box that is available from the Microsoft 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">

WPFWPF ローカライズ Api が正常に機能するためには Uid プロパティが必要です。Uid properties are needed in order for WPFWPF localization APIs to work correctly.

これらは、ユーザー インターフェイス (UI)user interface (UI)の開発とローカライズの間の変更を追跡するために WPFWPF ローカリゼーション Api によって使用されます。They are used by WPFWPF localization APIs to track changes between the development and localization of the ユーザー インターフェイス (UI)user interface (UI). Uid プロパティを使用すると、新しいバージョンの UIUIUIUIの古いローカライズにマージできます。Uid properties enable you to merge a newer version of the UIUI with an older localization of the UIUI. コマンドシェルで msbuild -t:updateuid RunDialog.csproj を実行して、Uid プロパティを追加します。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. msbuild -t:checkuid RunDialog.csprojを実行して Uid プロパティが正しく設定されていることを確認できます。You can check that Uid properties are correctly set by running msbuild -t:checkuid RunDialog.csproj.

UIUIGrid コントロールを使用して構成されています。これは、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. 行と列の定義のいずれかが固定サイズではありません。そのため、各セルに配置されている 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" />

Open: label および ComboBox が配置されている最初の2つの列は、UIUI 合計幅の10% を使用します。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. これにより、プロパティの名前と同じように、列が同じサイズを共有できるようになります。As one would expect from the name of the property, this allows the columns to share the same size. "Browse..."長い文字列 "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"

XAML での xml: lang の処理が、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. これが en-us などの有効な CultureInfo 値に設定されている場合、プロジェクトをビルドすると、ローカライズ可能なすべてのリソースを含むサテライトアセンブリが生成されます。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. Localizablefalse に設定されるため、サテライトアセンブリではなく、言語に依存しないメインアセンブリに保持されます。Localizable is set to false so that it remains in the language neutral main assembly instead of the satellite assembly. コンパイルされていないすべてのリソースの既定値は、trueに設定 Localizable ます。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/Parse RunDialog. .resources/out: "rundialog. .resources. .RESOURCES. .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. ローカライズカテゴリが "なし" のすべてのエントリを除外します。Filter out all entries with a localization category of "None". 次のエントリが表示されます。You should see the following entries:

リソースキーResource Key ローカライズのカテゴリLocalization Category ValueValue
Button_1:.... $ContentButton_1:System.Windows.Controls.Button.$Content ButtonButton OKOK
Button_2:.... $ContentButton_2:System.Windows.Controls.Button.$Content ButtonButton [キャンセル]Cancel
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content ButtonButton 参照...Browse...
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1: system.string. $Content のようになります。TextBlock_1:System.Windows.Controls.TextBlock.$Content テキストText 実行するプログラム名、または開くフォルダーやドキュメント名、インターネット リソース名を入力してください。Type the name of a program, folder, document, or Internet resource, and Windows will open it for you.
TextBlock_2: system.string. $Content のようになります。TextBlock_2:System.Windows.Controls.TextBlock.$Content テキストText オープン:Open:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title [タイトル]Title を実行します。Run

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

リソースキーResource Key ローカライズのカテゴリLocalization Category ValueValue
Button_1:.... $ContentButton_1:System.Windows.Controls.Button.$Content ButtonButton OKOK
Button_2:.... $ContentButton_2:System.Windows.Controls.Button.$Content ButtonButton AbbrechenAbbrechen
Button_3:System.Windows.Controls.Button.$ContentButton_3:System.Windows.Controls.Button.$Content ButtonButton Durchsuchen...Durchsuchen…
ComboBox_1:System.Windows.Controls.ComboBox.$ContentComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBoxComboBox
TextBlock_1: system.string. $Content のようになります。TextBlock_1:System.Windows.Controls.TextBlock.$Content テキストText Geben Sie den namen eines programms、Ordners、Dokuments 順番 einer internetresource an。Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2: system.string. $Content のようになります。TextBlock_2:System.Windows.Controls.TextBlock.$Content テキストText Öffnen:Öffnen:
Window_1:System.Windows.Window.TitleWindow_1:System.Windows.Window.Title [タイトル]Title を実行します。Run

GenerateGenerate

ローカリゼーションの最後の手順では、新たにローカライズされたサテライトアセンブリを作成します。The last step of localization involves creating the newly localized satellite assembly. これは、次の LocBaml コマンドを使用して実現できます。This can be accomplished with the following LocBaml command:

LocBaml/generate RunDialog. .resources. .resources:... .resources. .resources. .CSV:./cul: デデュープLocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DE

ドイツ語のウィンドウでは、このリソース .dll がメインアセンブリの横にある de 以外のフォルダーに配置されている場合、このリソースは en-us フォルダーにあるものではなく、自動的に読み込まれます。On German Windows, 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. これをテストするためにドイツ語版の Windows がインストールされていない場合は、使用している Windows の任意のカルチャ (en-USなど) にカルチャを設定し、元のリソース DLL を置き換えます。If you do not have a German version of Windows to test this, set the culture to whatever culture of Windows 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. これは、既定では、Windows OS のカルチャになります。This defaults to the culture of your Windows OS. そのため、ドイツ語版の Windows を使用している場合は、de-DE\MyDialog.resources.dll が読み込まれます。英語版の Windows を使用している場合は、en-US\MyDialog.resources.dll が読み込まれます。So if you are using German Windows, the de-DE\MyDialog.resources.dll loads, if you are using English Windows, 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 はドイツ語のウィンドウで使用されます。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:

英語のホームページを示すスクリーンショット。

アラビア語:Arabic:

アラビアのホームページを示すスクリーンショット。

グローバルな Microsoft ホームページを設計するDesigning a Global Microsoft home page

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:

<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">

PageFlowDirection プロパティに注目してください。Notice the FlowDirection property on Page. このプロパティを RightToLeft に変更すると、Page とその子要素の FlowDirection が変更されるため、アラビア語のユーザーが期待するように、この 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. 任意の要素に対して明示的な 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"

グラデーションフローを左から右に示すスクリーンショット。

FlowDirection="RightToLeft"FlowDirection="RightToLeft"

右から左へのグラデーションフローを示すスクリーンショット。

パネルとコントロールに固定ディメンションを使用しないAvoid Using Fixed Dimensions for Panels and Controls

ホームページを参照してください。一番上の DockPanelUIUI 全体に対して指定された固定幅と高さ以外には、その他の固定ディメンションはありません。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. たとえば、次のようなローカライズは、文字 '|' の使用法を明確にします。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>

このコメントは TextBlock_1 のコンテンツに関連付けられ、LocBaml ツール (「アプリケーションのローカライズ」を参照) の場合は、出力 .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 ValueValue
TextBlock_1: system.string. $Content のようになります。TextBlock_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. すべてのコントロールにこれらの属性の既定値がありますが、ではこれらの属性をオーバーライドできます。 WPFWPFWPFWPF 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>

読みやすさと変更可能性属性に加えて、WPFWPF には共通の UI カテゴリ (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、compositefont は、Windows\Fonts ディレクトリにあるグローバルユーザーインターフェイスを使用しているものに自動的にフォールバックします。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.