情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のグローバライズされたアプリをビルドする方法

2014/06/18

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

CultureInfo クラスは、アプリのグローバル化に役立ちます。このトピックのガイダンスとコード例は、グローバリゼーション サンプルというエンド ツー エンドのコード サンプルに基づいています。

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

using System;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
using System.Globalization;
using System.Threading;

namespace sdkGlobalizationCS

{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;

            BuildApplicationBar();

        }
        private void LocList_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
        {
            // Set the current culture according to the selected locale and display information such as
            // date, time, currency, etc in the appropriate format.

            string nl;
            string cul;

            nl = locList.SelectedIndex.ToString();


            switch (nl)
            {
                case "0":
                    cul = "zh-CN";
                    break;
                case "1":
                    cul = "zh-TW";
                    break;
                case "2":
                    cul = "cs-CZ";
                    break;
                case "3":
                    cul = "da-DK";
                    break;
                case "4":
                    cul = "nl-NL";
                    break;
                case "5":
                    cul = "en-GB";
                    break;
                case "6":
                    cul = "en-US";
                    break;
                case "7":
                    cul = "fi-FI";
                    break;
                case "8":
                    cul = "fr-FR";
                    break;
                case "9":
                    cul = "de-DE";
                    break;
                case "10":
                    cul = "el-GR";
                    break;
                case "11":
                    cul = "hu-HU";
                    break;
                case "12":
                    cul = "it-IT";
                    break;
                case "13":
                    cul = "ja-JP";
                    break;
                case "14":
                    cul = "ko-KR";
                    break;
                case "15":
                    cul = "nb-NO";
                    break;
                case "16":
                    cul = "pl-PL";
                    break;
                case "17":
                    cul = "pt-BR";
                    break;
                case "18":
                    cul = "pt-PT";
                    break;
                case "19":
                    cul = "ru-RU";
                    break;
                case "20":
                    cul = "es-ES";
                    break;
                case "21":
                    cul = "sv-SE";
                    break;
                default:
                    cul = "en-US";
                    break;
            }


            // set this thread's current culture to the culture associated with the selected locale
            CultureInfo newCulture = new CultureInfo(cul);
            Thread.CurrentThread.CurrentCulture = newCulture;

            CultureInfo cc, cuic;
            cc = Thread.CurrentThread.CurrentCulture;
            cuic = Thread.CurrentThread.CurrentUICulture;

            // display the culture name in the language of the selected locale
            regionalFrmt.Text = cc.NativeName;

            // display the culture name in the localized language
            displayLang.Text = cuic.DisplayName;

            // display the date formats (long and short form) for the  current culuture  
            DateTime curDate = DateTime.Now;
            longDate.Text = cc.DateTimeFormat.LongDatePattern.ToString() + " " + curDate.ToString("D");
            shortDate.Text = cc.DateTimeFormat.ShortDatePattern.ToString() + "   " + curDate.ToString("d");

            // display the time format (long form) for the current culture
            longTime.Text = cc.DateTimeFormat.LongTimePattern + "   " + curDate.ToString("T");

            // display the currency format and currency symbol for the current culture
            Int64 money = 123456789;
            currencyFrmt.Text = money.ToString("C");


        }
    }
}

カルチャ値の正しい形式をハードコーディングしないようにしてください。代わりに、新しい CultureInfo オブジェクトを現在のスレッドの CurrentCulture プロパティに割り当てるようにします。次のコード例では、en-US カルチャを表す新しい CultureInfo オブジェクトをインスタンス化します。その後、現在のスレッドの CurrentCulture プロパティと CurrentUICulture プロパティを新しい CultureInfo オブジェクトに設定します。


String cul; 
cul = "en-US";
CultureInfo newCulture = new CultureInfo(cul); 
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;

次のコード例では、変数 cccuic に新しい CurrentCulture オブジェクトと CurrentUICulture オブジェクトをそれぞれ割り当てします。

CultureInfo cc, cuic; 
cc = Thread.CurrentThread.CurrentCulture;
cuic = Thread.CurrentThread.CurrentUICulture;

次のコード例では、regionalFrmt テキスト ボックスのテキスト フィールドを、選択したロケールの言語に設定します。現在のカルチャ名が、現在のカルチャに関連付けられている言語で表示されます。

regionalFrmt.Text = cc.NativeName;

次のコード例では、displayLang テキスト ボックスのテキスト フィールドを、ローカライズされた現在のカルチャ名に設定します。たとえば、ローカライズされた言語がフランス語の場合、現在のカルチャ名はフランス語で表示されます。

displayLang.Text = cuic.DisplayName;

次のコード例では、現在の日付と時刻を取得します。次に、longDate テキスト ボックスと shortDate テキスト ボックスのテキスト フィールドを、日付パターンと現在の日付を含む文字列に設定します。

DateTime curDate = DateTime.Now;
longDate.Text = cc.DateTimeFormat.LongDatePattern.ToString() + " " + curDate.ToString("D");
shortDate.Text = cc.DateTimeFormat.ShortDatePattern.ToString() + "   " + curDate.ToString("d");

次のコード例では、longTime テキスト ボックスのテキスト フィールドを、LongTimePattern および現在の時刻を含む文字列に設定します。この文字列は、現在のカルチャの時刻形式に応じて書式設定されます。

longTime.Text = cc.DateTimeFormat.LongTimePattern + "   " + curDate.ToString("T");

次のコード例では、currencyFrmt テキスト ボックスのテキスト フィールドを、変数 money に関連付けられている値に設定します。この変数の ToString() メソッドは、値を現在のカルチャの通貨形式に応じて書式設定された文字列に変換します。

Int64 money = 123456789; 
currencyFrmt.Text = money.ToString("C");

グローバライズされたアプリでは、独自の並べ替え規則を作成しないでください。CultureInfo.CompareInfo プロパティによって、特定のカルチャでの文字列の比較方法と並べ替え方法が定義されます。CultureInfo.CurrentCulture プロパティを参照するオーバーロードされた Array.Sort メソッドを使用すると、アプリで値を並べ替えることができます。

次のコード例では、現在のカルチャに応じて文字列のリストを並べ替えます。

// create a list of strings and use Array.Sort to take advantage of the current culture
string[] stringArray = new string[] { "Æble", "Apple", "Znefol" };
Array.Sort(stringArray);
sortedStrings.Text = "";
foreach (string s in stringArray)
{
    sortedStrings.Text += s + "\n";
}

また、CultureInfo.InvariantCulture プロパティを使用して、ユーザーに直接表示されないデータを並べ替えることもできます。このプロパティを使用すると、カルチャに依存しない形式でデータを並べ替えられます。並べ替え方法の詳細については、CompareOptions を参照してください。

表示: