15_C#_локализация.pptx
- Количество слайдов: 8
Глобализация и локализация ü Локализация – адаптация приложения к национальным особенностям страны (региональные настройки). ü Глобализация - адаптация приложения к работе с разными языками и региональными настройками. ü Региональные настройки (culture) ( другой термин – региональные стандарты ) определяют • язык • символ валюты • формат даты • формат вывода чисел (точка/запятая) ü В. Net Framework для этих целей предусмотрены • механизм сателлитных сборок (satellite assemblies) • классы из пространств имен System. Globalization System. Resources
Региональные настройки (culture) ü Региональные настройки (culture) идентифицируются строкой, содержащей главный (primary) и вспомогательный (secondary) тэги, или Int 32 кодом (LCID - local culture identifier). ü Коды определены в стандарте Internet RFC 1766. ü Имена “язык” – “страна/регион” определены в стандартах ISO (International Standards Organization) ü Региональные настройки делятся на три группы: Invariant – Neutral – Specific – не зависят от языка и страны, имя “ ” ( код !=0); определяют только язык, имя “ru”, “en” ( два символа в нижнем регистре); определяют язык и страну/регион, имя “en-CA”, “en-GB”, “ru-RU”, “tt-RU”;
Класс System. Globalization. Culture. Info ü Текущие региональные настройки определяются значениями двух свойств выполняемого потока: Thread. Current. Culture – формат даты/чисел/валюты Thread. Current. UICulture – загружаемые ресурсы ü Свойства имеют тип Culture. Info. [Serializable] public class Culture. Info : ICloneable, IFormat. Provider ü Ссылка на объекты класса Culture. Info передается как параметр методам, использующим информацию о региональных настройках (culture). ü Конструкторы класса System. Globalization. Culture. Info (4) public Culture. Info( int culture ); string name ); int culture, bool use. User. Override ); string name, bool use. User. Override );
Свойства класса System. Globalization. Culture. Info ü С каждым региональным стандартом (culture) по умолчанию связаны конкретные форматы даты/числа/валюты. Пользователь может изменить эти установки в Control. Panel (Date, Time, Language, and Regional Options). ü Конструкторы с одним параметром инициализируют Culture. Info пользовательскими значениями форматов даты/числа/валюты. ü Конструкторы с двумя параметрами могут инициализировать Culture. Info как пользовательскими значениями форматов даты/числа/валюты (true), так и значениями по умолчанию (false). ü В классе Culture. Info определены свойства (более 20), связанные с региональными настройками и форматами даты/числа/валюты, например, public virtual Date. Time. Format. Info Date. Time. Format {get; set; } virtual Number. Format. Info Number. Format {get; set; } virtual Text. Info {get; } bool User. Override {get; }
Региональные настройки в методе To. String() ü В некоторых классах ( например, Int 32, Double) метод To. String() перегружен и использует значения свойства класса Culture. Info с информацией о текущих значениях региональных настроек (culture): public virtual string To. String( IFormat. Provider provider ); public virtual string To. String( string format, IFormat. Provider provider ); ü Интерфейс IFormat. Provider. public interface IFormat. Provider {object Get. Format( Type format. Type ); } реализуют классы Culture. Info, Date. Time. Format. Info, Number. Format. Info, в которых есть информация о региональных стандартах(culture).
Региональные настройки в методе To. String(). Пример int i = 100; // Culture. Info для английского языка в USA Console. Write. Line(i. To. String("c", new Culture. Info("en-US"))); // Culture. Info для России, форматы по умолчанию Console. Write. Line(i. To. String("c", new Culture. Info("ru-RU", false))); // Culture. Info для России, форматы из установок пользователя Console. Write. Line(i. To. String("c", new Culture. Info("ru-RU", true))); /* Output : настройка в Control. Panel для Currency. Symbol: рб $100. 00 100, 00 рб */
Свойства класса System. Threading. Thread ü Региональные настройки (culture) – это свойство потока. ü По умолчанию региональные настройки потока определяются значениями, заданными в профиле пользователя. Чтобы программно изменить региональные настройки, необходимо присвоить значение свойству потока. ü Свойства класса System. Threading. Thread с информацией о текущих значениях региональных настроек (culture): public static Culture. Info Current. Culture {get; } public static Culture. Info Current. UICulture {get; } // установки Current. Thread // установки, // которые использует Resource. Manager
Региональные настройки. Пример static void Main(string[] args) { double d = 123. 456; Date. Time date = Date. Time. Now; Console. Write. Line("Current culture : " + Thread. Current. Culture); Console. Write. Line("Current culture Number. Decimal. Separator: " + Thread. Current. Culture. Number. Format. Number. Decimal. Separator); Console. Write. Line("{0} {1} n", d, date); Thread. Current. Culture = new Culture. Info("en-US"); Console. Write. Line("n. After set Current. Culture en-US : n {0} {1} n", d, date); } Thread. Current. Culture. Number. Format. Number. Decimal. Separator = "_"; Console. Write. Line("n. After set Number. Decimal. Separator -: n {0}n", d); Вывод: Current culture : ru-RU Current culture Number. Decimal. Separator: 1, 23456 06. 12. 2011 15: 48: 08 After set Current. Culture en-US : 1. 23456 12/6/2011 3: 48: 08 PM After set Number. Decimal. Separator -: 1_23456 ,
15_C#_локализация.pptx