方法: アプリケーションをローカライズするHow to: Localize an Application

このチュートリアルでは、LocBaml ツールを使用して、ローカライズされたアプリケーションを作成する方法について説明します。This tutorial explains how to create a localized application by using the LocBaml tool.

注意

LocBaml ツールは、実稼働可能なアプリケーションではありません。The LocBaml tool is not a production-ready application. それはローカリゼーション API の一部を使用するサンプルとして提供されており、ローカリゼーション ツールを記述する方法を例示します。It is presented as a sample that uses some of the localization APIs and illustrates how you might write a localization tool.

概要Overview

この説明では、アプリケーションのローカリゼーションの手順を段階を追って示します。This discussion gives you a step-by-step approach to localizing an application. 最初に、翻訳されるテキストを抽出できるようにアプリケーションを準備します。First, you will prepare your application so that the text that will be translated can be extracted. テキストの翻訳後、翻訳されたテキストを元のアプリケーションの新しいコピーにマージします。After the text is translated, you will merge the translated text into a new copy of the original application.

必要条件Requirements

この説明では、コマンドラインから実行するコンパイラである Microsoft build engine (MSBuild) を使用します。Over the course of this discussion, you will use Microsoft build engine (MSBuild), which is a compiler that runs from the command line.

また、プロジェクト ファイルを使用するよう指示されます。Also, you will be instructed to use a project file. MSBuild とプロジェクトファイルの使用方法については、「ビルドと配置」を参照してください。For instructions on how to use MSBuild and project files, see Build and Deploy.

この説明のすべての例では、カルチャとして en-US (英語-米国) を使用します。All the examples in this discussion use en-US (English-US) as the culture. 別の言語をインストールしなくても、この例の手順全体の作業を行えます。This enables you to work through the steps of the examples without installing a different language.

サンプルのアプリケーションの作成Create a Sample Application

このステップでは、ローカリゼーション用のアプリケーションを準備します。In this step, you will prepare your application for localization. Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) のサンプルでは、この説明のコード サンプルで使用される HelloApp のサンプルが提供されています。In the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) samples, a HelloApp sample is supplied that will be used for the code examples in this discussion. このサンプルを使用する場合は、 Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) LocBaml ツールサンプルからファイルをダウンロードします。If you would like to use this sample, download the Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) files from the LocBaml Tool Sample.

  1. ローカリゼーションを開始するポイントまで、アプリケーションを開発します。Develop your application to the point where you want to start localization.

  2. プロジェクトファイルで開発言語を指定して、MSBuild がニュートラル言語リソースを格納するメインアセンブリとサテライトアセンブリ (.resources 拡張子を持つファイル) を生成するようにします。Specify the development language in the project file so that MSBuild generates a main assembly and a satellite assembly (a file with the .resources.dll extension) to contain the neutral language resources. HelloApp サンプルのプロジェクト ファイルは HelloApp.csproj です。The project file in the HelloApp sample is HelloApp.csproj. このファイルに、以下のように特定される開発言語があります。In that file, you will find the development language identified as follows:

    <UICulture>en-US</UICulture>

  3. XAMLXAML ファイルに UID を追加します。Add Uids to your XAMLXAML files. UID は、ファイルへの変更を追跡して、翻訳する必要がある項目を識別するために使用されます。Uids are used to keep track of changes to files and to identify items that must be translated. ファイルに Uid を追加するには、プロジェクトファイルでupdateuidを実行します。To add Uids to your files, run updateuid on your project file:

    msbuild -t:updateuid helloapp.csprojmsbuild -t:updateuid helloapp.csproj

    不足している Uid または重複する Uid がないことを確認するには、 checkuidを実行します。To verify that you have no missing or duplicate Uids, run checkuid:

    msbuild -t:checkuid helloapp.csprojmsbuild -t:checkuid helloapp.csproj

    Updateuidを実行した後、ファイルには uid が含まれている必要があります。After running updateuid, your files should contain Uids. たとえば、HelloApp の Pane1.xaml ファイルに、以下の内容があるはずです。For example, in the Pane1.xaml file of HelloApp, you should find the following:

    <StackPanel x:Uid="StackPanel_1">

    <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>

    <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>

    </StackPanel>

ニュートラル言語リソースのサテライト アセンブリを作成するCreate the Neutral Language Resources Satellite Assembly

ニュートラル言語リソースのサテライト アセンブリを生成するようにアプリケーションを構成した後、アプリケーションをビルドします。After the application is configured to generate a neutral language resources satellite assembly, you build the application. これにより、メイン アプリケーション アセンブリだけでなく、ローカリゼーションで LocBaml が必要とするニュートラル言語リソースのサテライト アセンブリが生成されます。This generates the main application assembly, as well as the neutral language resources satellite assembly that is required by LocBaml for localization. アプリケーションをビルドするにはTo build the application:

  1. Helloapp.resources.dll をコンパイルして、ダイナミックリンクライブラリ (DLL) を作成します。Compile HelloApp to create a dynamic-link library (DLL):

    msbuild helloapp.csprojmsbuild helloapp.csproj

  2. 新規作成されたメインのアプリケーション アセンブリ HelloApp.exe は、次のフォルダーに作成されます。The newly created main application assembly, HelloApp.exe, is created in the following folder:

    C:\HelloApp\Bin\Debug\

  3. 新規作成されたニュートラル言語リソースのサテライト アセンブリ HelloApp.resources.dll は次のフォルダーに作成されます。The newly created neutral language resources satellite assembly, HelloApp.resources.dll, is created in the following folder:

    C:\HelloApp\Bin\Debug\en-US\

LocBaml ツールをビルドするBuild the LocBaml Tool

  1. LocBaml のビルドに必要なすべてのファイルは WPFWPF サンプルに配置されています。All the files necessary to build LocBaml are located in the WPFWPF samples. C# LocBaml ツールサンプルからファイルをダウンロードします。Download the C# files from the LocBaml Tool Sample.

  2. ツールをビルドするには、コマンド ラインでプロジェクト ファイル (locbaml.csproj) を実行します。From the command line, run the project file (locbaml.csproj) to build the tool:

    msbuild locbaml.csprojmsbuild locbaml.csproj

  3. 新しく作成された実行可能ファイル (locbaml.exe) を検索するには、bin \release ディレクトリに移動します。Go to the Bin\Release directory to find the newly created executable file (locbaml.exe). 例: C:\LocBaml\Bin\Release\locbaml.exeExample:C:\LocBaml\Bin\Release\locbaml.exe.

  4. LocBaml を実行するときに指定できるオプションは、次のとおりです。The options that you can specify when you run LocBaml are as follows:

    • parseまたは -p: Baml、リソース、または DLL ファイルを解析して、.csv または .txt ファイルを生成します。parse or -p: Parses Baml, resources, or DLL files to generate a .csv or .txt file.

    • または -g を生成します。 翻訳されたファイルを使用して、ローカライズされたバイナリファイルを生成します。generate or -g: Generates a localized binary file by using a translated file.

    • outまたは -o {filedirectory] : 出力ファイル名。out or -o {filedirectory] : Output file name.

    • cultureまたは -cul {culture] : 出力アセンブリのロケール。culture or -cul {culture] : Locale of output assemblies.

    • translationまたは -trans {translation .csv] : 翻訳またはローカライズされたファイル。translation or -trans {translation.csv] : Translated or localized file.

    • asmpathまたは -asmpath: {filedirectory] : コードにXAMLXAMLカスタムコントロールが含まれている場合は、カスタムコントロールアセンブリにasmpathを指定する必要があります。asmpath or -asmpath: {filedirectory] : If your XAMLXAML code contains custom controls, you must supply the asmpath to the custom control assembly.

    • nologoロゴや著作権情報は表示されません。nologo: Displays no logo or copyright information.

    • 詳細モードの情報を表示します。verbose: Displays verbose mode information.

    注意

    ツールの実行時にオプションの一覧が必要な場合は、「 LocBaml 」と入力し、enter キーを押します。If you need a list of the options when you are running the tool, type LocBaml.exe and press ENTER.

LocBaml を使用してファイルを解析するUse LocBaml to Parse a File

LocBaml ツールが作成されたので、これを使用して HelloApp.resources.dll を解析し、ローカライズするテキスト コンテンツを抽出できる状態になりました。Now that you have created the LocBaml tool, you are ready to use it to parse HelloApp.resources.dll to extract the text content that will be localized.

  1. LocBaml.exe を、メインのアプリケーション アセンブリが作成された、アプリケーションの bin \debug フォルダーにコピーします。Copy LocBaml.exe to your application's bin\debug folder, where the main application assembly was created.

  2. サテライト アセンブリ ファイルを解析して、.csv ファイルとして出力を格納するには、次のコマンドを使用します。To parse the satellite assembly file and store the output as a .csv file, use the following command:

    LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csvLocBaml.exe /parse HelloApp.resources.dll /out:Hello.csv

    注意

    入力ファイル HelloApp.resources.dll が LocBaml.exe と同じディレクトリに存在しない場合は、いずれかのファイルを移動して両方のファイルが同じディレクトリにあるようにします。If the input file, HelloApp.resources.dll, is not in the same directory as LocBaml.exe move one of the files so that both files are in the same directory.

  3. LocBaml を実行してファイルを解析する際、出力はコンマ区切り (.csv ファイル) またはタブ区切り (.txt ファイル) された 7 つのフィールドで構成されます。When you run LocBaml to parse files, the output consists of seven fields delimited by commas (.csv files) or tabs (.txt files). HelloApp.resources.dll の解析済みの .csv ファイルを次に示します。The following shows the parsed .csv file for the HelloApp.resources.dll:

    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;
    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello WorldHelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye WorldHelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    7 つのフィールドは、次のとおりです。The seven fields are:

    1. BAML 名BAML Name. ソース言語のサテライト アセンブリに関する BAML リソースの名前。The name of the BAML resource with respect to the source language satellite assembly.

    2. リソース キーResource Key. ローカライズされたリソースの識別子。The localized resource identifier.

    3. カテゴリCategory. 値の型です。The value type. ローカリゼーション属性とコメント」を参照してください。See Localization Attributes and Comments.

    4. 読みやすさReadability. ローカライザーによって値が読み取れるかどうか。Whether the value can be read by a localizer. ローカリゼーション属性とコメント」を参照してください。See Localization Attributes and Comments.

    5. 変更可能性Modifiability. ローカライザーによって値が変更できるかどうか。Whether the value can be modified by a localizer. ローカリゼーション属性とコメント」を参照してください。See Localization Attributes and Comments.

    6. コメントComments. 値をローカライズする方法を決定するための値の追加の説明。Additional description of the value to help determine how a value is localized. ローカリゼーション属性とコメント」を参照してください。See Localization Attributes and Comments.

    7. Value. 目的のカルチャに翻訳するテキストの値。The text value to translate to the desired culture.

    次の表は、.csv ファイルの区切り記号付きの値にこれらのフィールドをマップする方法を示しています。The following table shows how these fields map to the delimited values of the .csv file:

    BAML 名BAML name リソース キーResource key CategoryCategory 読みやすさReadability 変更可能性Modifiability コメントComments Value
    HelloApp.g.en-US.resources:window1.bamlHelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$ContentStack1:System.Windows.Controls.StackPanel.$Content 無視Ignore falseFALSE falseFALSE #Text1;#Text2#Text1;#Text2
    HelloApp.g.en-US.resources:window1.bamlHelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$ContentText1:System.Windows.Controls.TextBlock.$Content なしNone trueTRUE trueTRUE Hello WorldHello World
    HelloApp.g.en-US.resources:window1.bamlHelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$ContentText2:System.Windows.Controls.TextBlock.$Content なしNone trueTRUE trueTRUE Goodbye WorldGoodbye World

    [コメント] フィールドのすべての値に値が含まれていないことに注意してください。フィールドに値がない場合は、空になります。Notice that all the values for the Comments field contain no values; if a field doesn't have a value, it is empty. また、最初の行の項目は読み取りも変更もできず、カテゴリ値として "Ignore" が含まれていることにも注意してください。これらはすべて、値がローカライズ可能ではないことを示します。Also notice that the item in the first row is neither readable nor modifiable, and has "Ignore" as its Category value, all of which indicates that the value is not localizable.

  4. 解析されたファイル内のローカライズ可能な項目の検出を容易にするため (特に大規模なファイルの場合)、カテゴリ読みやすさ変更可能性で項目を並べ替えたりフィルター処理したりすることができます。To facilitate discovery of localizable items in parsed files, particularly in large files, you can sort or filter the items by Category, Readability, and Modifiability. たとえば、読み取りも変更もできない値をフィルター処理することができます。For example, you can filter out unreadable and unmodifiable values.

ローカライズ可能なコンテンツを翻訳するTranslate the Localizable Content

抽出されたコンテンツを翻訳するために使用可能な任意のツールを使用します。Use any tool that you have available to translate the extracted content. これを行う良い方法は、リソースを .csv ファイルに記述し、それらを Microsoft ExcelMicrosoft Excel に表示して、翻訳の変更内容を最後の列 (値) にすることです。A good way to do this is to write the resources to a .csv file and view them in Microsoft ExcelMicrosoft Excel, making translation changes to the last column (value).

LocBaml を使用して新しい .resources.dll ファイルを生成するUse LocBaml to Generate a New .resources.dll File

LocBaml で HelloApp.resources.dll を解析して識別されたコンテンツは翻訳済みであり、元のアプリケーションにマージする必要があります。The content that was identified by parsing HelloApp.resources.dll with LocBaml has been translated and must be merged back into the original application. 使用して、生成または -g新しいを生成するオプション。 .resources.dll ファイル。Use the generate or -g option to generate a new .resources.dll file.

  1. 新しい HelloApp.resources.dll ファイルを生成するには、次の構文を使用します。Use the following syntax to generate a new HelloApp.resources.dll file. カルチャを en-US (/cul:en-US) としてマークします。Mark the culture as en-US (/cul:en-US).

    LocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-USLocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    注意

    入力ファイル Hello.csv が実行可能ファイル LocBaml.exe と同じディレクトリに存在しない場合は、いずれかのファイルを移動して、両方のファイルが同じディレクトリにあるようにします。If the input file, Hello.csv, is not in the same directory as the executable, LocBaml.exe, move one of the files so that both files are in the same directory.

  2. C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll ディレクトリにある古い HelloApp.resources.dll ファイルを新規作成した HelloApp.resources.dll ファイルに置き換えます。Replace the old HelloApp.resources.dll file in the C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll directory with your newly created HelloApp.resources.dll file.

  3. ここで "Hello World" と "Goodbye World" をアプリケーション内で翻訳する必要があります。"Hello World" and "Goodbye World" should now be translated in your application.

  4. 別のカルチャに翻訳するには、翻訳先の言語のカルチャを使用します。To translate to a different culture, use the culture of the language that you are translating to. フランス語 (カナダ) に翻訳する方法の例を次に示します。The following example shows how to translate to French-Canadian:

    LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CALocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. メイン アプリケーション アセンブリと同じアセンブリで、新しいサテライト アセンブリを格納するために、新しいカルチャ固有のフォルダーを作成します。In the same assembly as the main application assembly, create a new culture-specific folder to house the new satellite assembly. フランス語 (カナダ) のフォルダーは "fr-CA" となります。For French-Canadian, the folder would be fr-CA.

  6. 新しいフォルダーに生成されたサテライト アセンブリをコピーします。Copy the generated satellite assembly to the new folder.

  7. 新しいサテライト アセンブリをテストするには、アプリケーションが実行するカルチャを変更する必要があります。To test the new satellite assembly, you need to change the culture under which your application will run. 2 つの方法のいずれかでこれを行うことができます。You can do this in one of two ways:

    • オペレーティング システムの地域設定を変更 (開始 | コントロール パネルの | 地域と言語のオプション)。Change your operating system's regional settings (Start | Control Panel | Regional and Language Options).

    • アプリケーションで、次のコードを App.xaml.cs に追加します。In your application, add the following code to App.xaml.cs:

    <Application
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="SDKSample.App"
        x:Uid="Application_1"
        StartupUri="Window1.xaml">
    </Application>
    
    using System.Windows;
    using System.Globalization;
    using System.Threading;
    
    namespace SDKSample
    {
        public partial class App : Application
        {
            public App()
            {
                // Change culture under which this application runs
                CultureInfo ci = new CultureInfo("fr-CA");
                Thread.CurrentThread.CurrentCulture = ci;
                Thread.CurrentThread.CurrentUICulture = ci;
            }
        }
    }
    
    
    Imports System.Windows
    Imports System.Globalization
    Imports System.Threading
    
    Namespace SDKSample
        Partial Public Class App
            Inherits Application
            Public Sub New()
                ' Change culture under which this application runs
                Dim ci As New CultureInfo("fr-CA")
                Thread.CurrentThread.CurrentCulture = ci
                Thread.CurrentThread.CurrentUICulture = ci
            End Sub
        End Class
    End Namespace
    

LocBaml を使用するためのヒントSome Tips for Using LocBaml

  • カスタム コントロールを定義するすべての依存アセンブリを LocBaml のローカル ディレクトリにコピーするか、GAC にインストールする必要があります。All dependent assemblies that define custom controls must be copied into the local directory of LocBaml or installed into the GAC. これは、ローカライズ API がバイナリ XAML (BAML) を読み取るときに、依存アセンブリにアクセスできる必要があるためです。This is necessary because the localization API must have access to the dependent assemblies when it reads the binary XAML (BAML).

  • メインのアセンブリが署名済みの場合は、生成されたリソース DLL も読み込むために署名されている必要があります。If the main assembly is signed, the generated resource DLL must also be signed in order for it to be loaded.

  • ローカライズされたリソースの DLL は、メインのアセンブリと同期する必要があります。The version of the localized resource DLL needs to be synchronized with the main assembly.

次の内容What's Next

これで、LocBaml ツールの使用方法に関する基本的な知識が得られました。You should now have a basic understanding of how to use the LocBaml tool. UID を含むファイルを作成できるようになりました。You should be able to make a file that contains Uids. LocBaml ツールを使用することで、ローカライズ可能なコンテンツを抽出するファイルを解析できます。コンテンツを翻訳すると、翻訳済みのコンテンツをマージする .resources.dll ファイルを生成できます。By using the LocBaml tool, you should be able to parse a file to extract the localizable content, and after the content is translated, you should be able to generate a .resources.dll file that merges the translated content. このトピックには、可能性のあるすべての詳細情報は含まれていませんが、LocBaml を使用してアプリケーションをローカライズするために必要な知識は得られました。This topic does not include every possible detail, but you now have the knowledge necessary to use LocBaml for localizing your applications.

関連項目See also