信息
您所需的主题如下所示。但此主题未包含在此库中。
1(共 2)对本文的评价是有帮助 - 评价此主题

如何构建 Windows Phone 全球化应用程序

2012/2/9

您可以使用 CultureInfo 类来帮助全球化您创建的应用程序。本主题中的指南和代码示例都基于一个叫做 Globalization Sample 的首尾相连的代码示例,您可以从 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 对象进行实例化。然后将当前线程中的 CurrentCultureCurrentUICulture 属性设置为新的 CultureInfo 对象。


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

以下代码示例分别为变量 cccuic 分配了新的 CurrentCultureCurrentUICulture 对象。

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

以下代码示例将 regionalFrmt 文本框的文本字段设置为选定的区域设置语言。当前区域性名称将以与当前区域性关联的语言显示。

regionalFrmt.Text = cc.NativeName;

以下代码示例将 displayLang 文本框的文本字段设置为当前区域性名称的本地化版本。例如,假如本地化语言是法语,那么当前区域性名称将以法语显示。

displayLang.Text = cuic.DisplayName;

以下代码示例可以获取当前日期和时间。之后,它将 longDateshortDate 文本框的文本字段设置为包含日期模式和当前日期的字符串。

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 属性定义如何比较和排序特定区域性的字符串。您可以使用重载的 Array.Sort 方法对您应用程序中的值进行排序,此方法引用了 CultureInfo.CurrentCulture 属性。

以下代码示例根据当前区域性对字符串列表进行排序。

// 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 枚举

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft. 版权所有。