Кратко съдържание



страница65/73
Дата21.07.2018
Размер8.57 Mb.
1   ...   61   62   63   64   65   66   67   68   ...   73

Интернационализация


Класовете String и Char зависят от т. нар. култура, която използват. Техните методи Format(), Compare(), ToUpper() и ToLower() работят по разли­чен начин за различните езици. Културата влияе и на стан­дартните форматиращи низове, чрез които се форматират числа, валути и др.

Културите се дефинират от класа System.Globalization.CultureInfo и всяка нишка в приложението има асоциирана с нея култура (инстанция на този клас).

Културата на текущата нишка може да бъде извлечена от свойството CurrentCulture на класа System.Threading.Thread. Ако не бъде указана изрично, по подразбиране текущата култура се извлича от регионалните настройки в контролния панел на Windows.

Културите в .NET Framework


Една култура съдържа информация за календар, формат на дати и часове, формат на числа и валути, таблица за сравнение на низовете, таблица за промяна на регистъра на буквите и др.

Инстанция на класа CultureInfo може да получим чрез конструктора CultureInfo, на който се подава код на език, следван от код на държава:



CultureInfo cultureFrenchCanada = new CultureInfo("fr-CA");

CultureInfo cultureEngUnitedStates = new CultureInfo("en-US");



Друг начин за инстанциране на класа CultureInfo е с помощта на статич­ното му свойство InvariantCulture, което връща инвариантната (общата) култура:

CultureInfo cultureNeutral = CultureInfo.InvariantCulture;

Инвариантната култура не е свързана с никой език и държава и се използва, за работа в неутрална среда, примерно за записване на числа в неутрален формат, който не зависи от държавата.

Класът CultureInfo


Класът CultureInfo се използва при четене на текстови ресурси, форма­тиране, парсване, смяна на регистъра, сортиране и други операции, зави­сещи от настройките на потребителя за език и държава.

Свойства на класа CultureInfo


По-важните свойства на класа CultureInfo са Calendar, CompareInfo, DateTimeFormat, NumberFormat и TextInfo:

  • Calendar – съдържа календара на културата (григориан­ски, юлиан­ски, еврейски, японски, корейски, тайвански), включващ информа­ция за ерите, високосните години, броя месеци и броя дни за всеки месец в зависимост от годината.

  • CompareInfo –дефинира как да бъдат сравнявани низове за зададе­ната култура.

  • DateTimeFormat – съдържа формата за визуализация на дата и час за зададената култура.

  • NumberFormat – съдържа формата за запис на числата и вида на валутата.

  • TextInfo – дефинира писмеността, асоциирана с текущата култура. Писмеността определя правилата за смяна на регистъра.

За всяко от тези свойства има съответни класове, дефинирани в простран­ството от имена System.Globalization.

Класът CultureInfo – пример


Със следния пример ще демонстрираме влиянието на културата при фор­матиране на валута:

using System;

using System.Globalization;

using System.Windows.Forms;
class CulturesDemo

{

static void ShowAmmount(



double aAmmount, CultureInfo aCulture)

{

string message = String.Format(



aCulture, "Ammount: {0:C}", aAmmount);

String caption = aCulture.EnglishName;

MessageBox.Show(message, caption);

}
static void Main()

{

ShowAmmount(137.25, new CultureInfo("bg-BG"));



ShowAmmount(137.25, new CultureInfo("en-US"));

ShowAmmount(137.25, new CultureInfo("de-DE"));

}

}


В диалоговата кутия ще се визуализира сумата 137.25, като валутата ще бъде съответно в лева, долари и евро:


Списък на културите – пример


Следният код реализира визуализиране на всички вградени в .NET Framework култури:

using System;

using System.Globalization;


public class ListAllCulturesDemo

{

public static void Main()



{

CultureInfo[] allCultures = CultureInfo.

GetCultures(CultureTypes.AllCultures);

foreach (CultureInfo ci in allCultures)

{

Console.Write("{0,-11}", ci.Name);



Console.Write(" {0,-4}", ci.TwoLetterISOLanguageName);

Console.Write(" {0,-4}",

ci.ThreeLetterWindowsLanguageName);

Console.WriteLine(" {0,-30}", ci.DisplayName);

}

}

}


Извличане на списък от всички култури в .NET Framework – пример


Целта на следващия пример е да изведем списък от всички култури, поддържани от .NET Framework. Списъкът ще бъде съставен от няколко колонки - .NET идентификатор на култура, двубуквен ISO идентификатор, Windows идентификатор и текстово описание. Ето как изглежда сорс кода на примера:

using System;

using System.Globalization;


public class ListAllCulturesDemo

{

public static void Main()



{

Console.WriteLine("CULTURE ISO WIN DISPLAYNAME");

Console.WriteLine("------- --- --- -----------");

CultureInfo[] allCultures =

CultureInfo.GetCultures(CultureTypes.AllCultures);

foreach (CultureInfo ci in allCultures)

{

Console.Write("{0,-11}", ci.Name);



Console.Write(" {0,-4}", ci.TwoLetterISOLanguageName);

Console.Write(" {0,-4}",

ci.ThreeLetterWindowsLanguageName);

Console.WriteLine(" {0,-30}", ci.DisplayName);

}

}

}



Ето и извадка от получения резултат:


1   ...   61   62   63   64   65   66   67   68   ...   73


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница