15_C#_локализация

advertisement
Глобализация и локализация
Локализация – адаптация приложения к национальным особенностям
страны (региональные настройки).
 Глобализация - адаптация приложения к работе с разными языками
и региональными настройками.
 Региональные настройки (culture) ( другой термин – региональные
стандарты ) определяют
• язык
• символ валюты
• формат даты
• формат вывода чисел (точка/запятая)
 В .Net Framework для этих целей предусмотрены
• механизм сателлитных сборок (satellite assemblies)
• классы из пространств имен
System.Globalization
System.Resources
Региональные настройки (culture)
 Региональные настройки (culture) идентифицируются строкой,
содержащей главный (primary) и вспомогательный (secondary) тэги, или
Int32 кодом (LCID - local culture identifier).
 Коды определены в стандарте Internet RFC 1766.
 Имена “язык” – “страна/регион” определены в стандартах ISO
(International Standards Organization)
 Региональные настройки делятся на три группы:
Invariant – не зависят от языка и страны,
имя “ ” ( код !=0);
Neutral – определяют только язык,
имя “ru”, “en” ( два символа в нижнем регистре);
Specific – определяют язык и страну/регион,
имя “en-CA”, “en-GB”, “ru-RU”, “tt-RU”;
Класс System.Globalization.CultureInfo
 Текущие региональные настройки определяются значениями двух
свойств выполняемого потока:
Thread.CurrentCulture – формат даты/чисел/валюты
Thread.CurrentUICulture – загружаемые ресурсы
 Свойства имеют тип CultureInfo.
[Serializable]
public class CultureInfo : ICloneable, IFormatProvider
 Ссылка на объекты класса CultureInfo передается как параметр
методам, использующим информацию о региональных настройках
(culture).
 Конструкторы класса System.Globalization.CultureInfo (4)
public
public
public
public
CultureInfo(
CultureInfo(
CultureInfo(
CultureInfo(
int culture );
string name );
int culture, bool useUserOverride );
string name, bool useUserOverride );
Класс System.Globalization.CultureInfo -2
 С каждым региональным стандартом (culture) по умолчанию связаны
конкретные форматы даты/числа/валюты. Пользователь может
изменить эти установки в ControlPanel (Date, Time, Language, and
Regional Options).
 Конструкторы с одним параметром инициализируют CultureInfo
пользовательскими значениями форматов даты/числа/валюты.
 Конструкторы с двумя параметрами могут инициализировать
CultureInfo как пользовательскими значениями форматов
даты/числа/валюты (true), так и значениями по умолчанию (false).
 В классе CultureInfo определены свойства (более 20), связанные с
региональными настройками и форматами даты/числа/валюты,
например,
public
public
public
public
virtual DateTimeFormatInfo DateTimeFormat {get; set;}
virtual NumberFormatInfo NumberFormat {get; set;}
virtual TextInfo TextInfo {get;}
bool UseUserOverride {get;}
Региональные настройки в методе ToString()
 В некоторых классах ( например, Int32, Double) метод ToString()
перегружен и использует значения свойства класса CultureInfo с
информацией о текущих значениях региональных настроек (culture):
public virtual string ToString( IFormatProvider provider );
public virtual string ToString( string format,
IFormatProvider provider );
 Интерфейс IFormatProvider.
public interface IFormatProvider
{object GetFormat( Type formatType ); }
реализуют классы CultureInfo, DateTimeFormatInfo, NumberFormatInfo, в
которых есть информация о региональных стандартах(culture).
Региональные настройки в методе ToString().
Пример
int i = 100;
// CultureInfo для английского языка в USA
CultureInfo us = new CultureInfo("en-US");
Console.WriteLine(i.ToString("c", us));
// CultureInfo для России, форматы по умолчанию
CultureInfo ru = new CultureInfo("ru-RU", false);
Console.WriteLine(i.ToString("c", ru));
// CultureInfo для России, форматы из установок пользователя
CultureInfo ruu = new CultureInfo("ru-RU", true);
Console.WriteLine(i.ToString("c", ruu));
/* Output для настройки в ControlPanel CurrencySymbol: рб
$100.00
100,00р.
100,00рб
*/
Класс System.Globalization.CultureInfo -3
 Региональные настройки (culture) – это свойство потока.
 По умолчанию региональные настройки потока определяются
значениями, заданными в профиле пользователя. Чтобы программно
изменить региональные настройки, необходимо присвоить значение
свойству потока.
 Свойства класса CultureInfo с информацией о текущих значениях
региональных настроек (culture):
public static CultureInfo CurrentCulture {get;}// установки
//CurrentThread
public static CultureInfo CurrentUICulture {get;} // установки,
// которые использует ResourceManager
public virtual bool IsNeutralCulture {get;} // являются ли
// региональные настройки CurrentThread нейтральными
Download