このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

方法: Windows Phone のグローバライズしたアプリケーションを構築する

2012/02/09

CultureInfo クラスを使用すると、作成するアプリケーションをグローバライズする上で役立ちます。このトピックのガイダンスとコード例は、グローバリゼーション サンプルというエンド ツー エンドのコード サンプルに基づいています。これは、「Windows Phone のコード サンプル」でダウンロードできます。

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










        }
    }
}

カルチャの正しい形式をハードコーディングしないようにしてください。代わりに、現在のスレッドの CurrentCulture プロパティに新しい CultureInfo オブジェクトを代入する必要があります。次のコード例では、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 プロパティを使用して、ユーザーに直接表示されないデータを並べ替えることもできます。このプロパティを使用すると、カルチャに依存しない形式でデータが並べ替えられることが保証されます。InvariantCulture の詳細については、「InvariantCulture プロパティの使用」を参照してください。並べ替えオプションの詳細については、「CompareOptions 列挙値」を参照してください。

表示:
© 2015 Microsoft