エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のローカライズしたアプリの構築方法

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

このトピックでは、言語固有のリソース ファイルを使用することによって、ローカライズ可能なリソースをコードから分離する方法について説明します。Visual Studio では、これらのリソース ファイルを使用して、アプリで多数の言語をサポートできるアセンブリを作成します。この手順の詳細については、「リソースのパッケージ化と配置」を参照してください。

下記のすべてのコード例を含む実行可能なコード サンプル全体を参照するには、「グローバリゼーション サンプル」をダウンロードします。

ヒントヒント:

Visual Studio Professional 2012 および Visual Studio Express 2012 for Windows Phone と統合される 多言語アプリ ツールキットは、Windows Phone アプリおよび Windows ストア アプリを作成するための翻訳サポート、翻訳ファイルの管理、およびローカライズのツールを提供します。このツールキットを使用して Microsoft Translator に接続し、翻訳候補をすばやく調べることができます。詳細については、「多言語アプリ ツールキットの使用方法」を参照してください。

アプリをローカライズ可能にする方法の詳細については、「Windows Phone 8 のローカリゼーションのベスト プラクティス」を参照してください。

このトピックは、次のセクションで構成されています。

Windows Phone 8 のローカリゼーションのベスト プラクティス」で説明されているように、ローカライズ可能リソースからコードを分離することが重要です。アプリの UI テキスト文字列をローカライズするには、リソース ファイルの文字列テーブルの行に各文字列をコピーするのが一般的です。これで、元の各文字列がバインド ステートメント (XAML) またはリソース参照 (分離コード) に置き換えられ、そのテーブル内の対応するリソースが指定されます。

ローカライズ対象の UI 文字列を取り込むために使用する初期リソース ファイルは、AppResources.resx という名前であり、既定では、プロジェクトの作成時にアプリの Resources フォルダーに作成されます。AppResources.resx は、ニュートラル言語リソースとも呼ばれます。これは、テンプレートの UI テキスト XAML 要素のプレースホルダー文字列のリソースと値、さらに該当する場合はアプリ バーをローカライズするためのサンプル コードを使用して初期化されます。

アプリでサポートされるカルチャごとに独自のリソース ファイルがあります。このファイルには、AppResources.resx 内のものと一致するが、ローカライズされた値を持つ文字列リソースが含まれています。これらのファイルは、[サポートされるカルチャ] の追加時に、AppResources.en-US.resx など、カルチャのロケール コードを使用した名前で作成されます。

ローカライズされたアプリは、起動すると、ユーザーの電話表示言語選択に最も一致するカルチャのリソースを暗黙的に読み込んで表示します。適切な候補が存在しない場合、アプリはニュートラル言語リソースを使用します。アプリ コードでは、要素ごと、またはグローバルに、カルチャの暗黙的選択を明示的にオーバーライドできます。

ハードコーディングされた文字列をリソース ファイル内の文字列に置き換える

  1. Windows Phone アプリケーション プロジェクトを作成します。

  2. MainPage.xaml というファイルを開いて表示します。

  3. TitlePanel という名前の StackPanel 要素を検索します。

  4. 最初の TextBlockText属性のハードコーディングされた値 “MY APPLICATION” を、リソース “ApplicationTitle” の次のバインド句に置き換えます

    "{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" 
    

    既定では、“ApplicationTitle” リソースは AppResources.resx ファイル内に存在します。

  5. AppResources.resx ファイル内の "ApplicationTitle" の値をアプリの名前に置き換えます。

    TextBlock 要素は、現時点では、次のようになります。

    <TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" 
        Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
    
  6. AppResources.resx ファイルで、アプリに該当する値を使用して “PageTitle” という名前の新規文字列リソースを作成します。

  7. MainPage.xaml で、2 番目の TextBlockText 属性のハードコーディングされた値 "ページ名" を、リソース "PageTitle" のバインド句に置き換えます。

    TextBlock 要素は、現時点では、次のようになります。

    <TextBlock Text="{Binding Path=LocalizedResources.PageTitle, Source={StaticResource LocalizedStrings}}" 
        Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
    
  8. アプリの ApplicationBar をローカライズするには、MainPage.xaml.cs ファイルで、アプリの をローカライズするには、MainPage.xaml.cs ファイルで、BuildLocalizedApplicationBar メソッド呼び出しおよび関数のコメントを解除します。

  9. AppResources.resx ファイル内の AppBarMenuItemText および AppBarButtonText リソースの値を置き換えます。

  10. アプリで使用するボタン、メニュー項目、および関連リソースを追加します。

言語を追加するには

  1. ニュートラル言語を使用してアプリを作成してテストした後に、サポートされる言語を追加できます。

    プロジェクトの [プロパティ] ページの [サポートされるカルチャ] ボックスで、アプリでサポートする言語を選択します。

  2. プロジェクトを保存します。

    メモメモ:

    Visual Studio により、ニュートラル リソース ファイル (AppResources.resx) のコピーである、サポートされる各言語の新規リソース ファイルが作成され、新規リソース ファイルのカルチャを反映するロケール コードが含まれるように名前が変更されました。

  3. サポートされる各言語リソース ファイル内のニュートラル言語の値を、翻訳された値に置き換えます。

    注意注意:

    Windows Phone ストア でアプリ用にローカライズされた言語の正しい説明がユーザーに表示されるようにするために、次の規則に従います。追加したサポートされるカルチャを ([プロジェクトのプロパティ] の一覧で選択項目をクリアすることで) 削除する必要が生じた場合は、必ず、WMAppManifest.xml 内の関連したサポートされる言語を ([マニフェスト デザイナー] > [サポートされる言語] > [パッケージング] の一覧を使用して) 削除してください。また、WMAppManifest.xml でサポートされる言語の一覧または既定の言語を変更する前に、その影響について必ず理解しておいてください。

アプリのページにアプリ バーを追加するには、ページの XAML で追加するか、またはページの分離コードで C# を使用します。ただし、XAML アプリ バーでは、ApplicationBarIconButton のテキスト ラベルまたは ApplicationBarMenuItem のテキストの動的データ バインディングはサポートされません。このため、各関連 [新しいプロジェクト] テンプレート内のコメント付きサンプルとして、次のコードが、MainPage コンストラクターでのその呼び出しとプレースホルダー リソースと共に再生成されます。アプリ バーの作成の詳細については、「Windows Phone のアプリ バー」を参照してください。

注意注意:

次のコード例は各関連テンプレートに含まれていますが、「グローバリゼーション サンプル」で再生成されます。


// Build a localized ApplicationBar
private void BuildLocalizedApplicationBar()
{
    // Set the page's ApplicationBar to a new instance of ApplicationBar.
    ApplicationBar = new ApplicationBar();

    // Create a new button and set the text value to the localized string from AppResources.
    ApplicationBarIconButton appBarButton = 
        new ApplicationBarIconButton(new   
        Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
        appBarButton.Text = AppResources.AppBarButtonText;
    ApplicationBar.Buttons.Add(appBarButton);

    // Create a new menu item with the localized string from AppResources.
    ApplicationBarMenuItem appBarMenuItem = 
        new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
    ApplicationBar.MenuItems.Add(appBarMenuItem);
}

ローカライズした文字列をテストする場合は、「Windows Phone のローカライズされたアプリをテストする方法」を参照してください。

表示:
© 2014 Microsoft