Windows Phone용 전역화된 앱 빌드

2013-12-05

적용 대상: Windows Phone 8 | 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");


        }
    }
}

문화권 값의 올바른 형식을 하드 코딩하면 안 됩니다. 대신 현재 스레드의 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 속성은 특정 문화권의 문자열을 비교하여 정렬하는 방법을 정의합니다. 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를 참조하세요.

표시:
© 2014 Microsoft