* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Форматирование, зависимое от культуры
8 февраля 2009
Для адаптации приложения к нуждам заказчика разработчику достаточно модифи- цировать некоторые члены класса Culturelnfo. Предположим, что необходимо на- писать приложение для клиента, сотрудничающего с партнерами из Японии, одна- ко денежные суммы в этом приложении должны исчисляться в американских дол- ларах. Стало быть, приложение будет использовать для большинства элементов форматирование, принятое в японской культуре, но денежные суммы в нем всегда отображаются со знаком доллара.
Три члена класса Culturelnfo определяют форматирование, применяемое при гло- бализации приложений (таблица 8-3). Модифицируя эти члены, можно создавать различные комбинации форматов, отсутствующие в стандартных культурах. Таблица 8-3. Члены класса Culturelnfo, определяющие форматирование Член Описание DateTimeFormat Содержит сведения о формате даты и времени, в том числе сокращенные названия дней недели, а также данные, определяющее отображение названий месяцев и времени в 12-часовом формате. Определяет форматы календаря, дней недели, дат и времени, применяемые при форматировании NumberFormat Содержит сведения о форматах чисел и денежных единиц, включая описания разделителей десятичных дробей и разрядов тысяч, применяемых для форматирования этих значений. Определяет символ, применяемый для отображения денежных единиц, и форматирование процентных значений Textlnfo Содержит сведения о форматировании текста, включая кодовую страницу и символ, используемый в качестве разделителя элементов списков Свойства этих членов разрешается модифицировать для создания пользователь- ских наборов форматов, отсутствующих в стандартных культурах. Вернемся к при- веденному выше примеру: чтобы получить нестандартную культуру, состоящую в основном из параметров форматирования, принятых в Японии (за исключением денежных единиц, которые должны отображаться со знаком доллара), следует со- здать новый объект Culturelnfo и соответствующим образом модифицировать его. Следующий пример демонстрирует создание нового класса Culturelnfo на основе параметров японской культуры и замену символа японской валюты знаком доллара: Visual Basic .NET Этот пример предполагает наличие операторов Imports System.Globalization и Imports System.Threading Dim modJPCulture As New CultureInfo{"jp-JN") modJPCulture.NumberFormat.CurrencySymbol = "$" Thread.CurrentThread.CurrentCulture = modJPCulture Visual C# // Этот пример предполагает наличие операторов using System.Globalization // и using System.Threading Culturelnfo modJPCulture = new CultureInfof"jp-JNTT); modJPCulture.NumberFormat.CurrencySyrnbol - "$"; Thread.CurrentThread.CurrentCulture = modJPCulture; Отображение текста справа налево В некоторых языках пишут и читают справа налево, а не наоборот, как принято в большинстве языков, использующих латинский алфавит. Стандартные элементы управления Windows Forms поддерживают свойство KightToLeft, которое позволяет реализовать отображение текста пользовательского интерфейса приложения спра- ва налево. Свойство RightToLeft принимает одно из следующих трех значений — Yes, No и Inherit. По умолчанию свойство RightToLeft установлено в Inherit, при этом его ре- альное значение наследуется от родительского элемента управления. Если установить свойство RightToLeft в Yes, вид элемента управления изменит- ся, причем количество изменений зависит от типа элемента управления. Во-пер- вых, по-другому выравнивается текст: обычно он выравнивается по левому краю, теперь — по правому. Во-вторых, заголовок элемента управления также выравни- вается по правому краю. Вертикальная полоса прокрутки отображается слева, а при инициализации горизонтальных полос прокрутки ползунок позиционируется спра- ва. Значение свойства CheckAlign для флажков изменится на противоположное, яр- лычки вкладок располагаются другой стороны окна, выравнивание элементов с пис- ков также изменится. Короче говоря с точки зрения форматирования все элементы управления станут зеркальными отражениями самих себя. Однако, несмотря на все эти изменения, содержимое элементов управления по- прежнему отображается слева направо. Хотя выравнивание текста, отображаемого в поле, изменилось, сам текст по-пре- жнему отображается так же, как читается, — слева направо. Поэтому при локализа- ции ресурсов для культур, в которых принято читать справа налево, придется от- форматировать строки вручную. Если установить свойство RightToLefl формы в Yes, то все размешенные на ней элементы управления, у которых RightToLeft = Inherit, будут выровнены по правому краю. Возможно, вам придется еще потрудиться и создать форму с зеркальным рас- положением элементов управления для культур, в которых принято читать и писать справа налево. Для этого надо создать локализованную форму и вручную расположить на ней элементы управления — для каждого из них значения свойств, определяющие по- ложение элемента управления на форме, будут записаны в файл ресурсов локали- зованной формы.