384 MGraphics.ru - ASP.NET - Локализация ASP.NET приложений
Уроки photoshopa


ASP.NET

Локализация ASP.NET приложений

Условия перепечатки материалов

Рейтинг статьи: 44444
Проголосовало 3 человека.
Оцените статью:

Локализация ASP.NET приложений.

Введение.

Локализация приложений это тема, которой зачастую не находится места в книгах, посвященных программированию. В принципе это понятно: там, где обсуждаются языковые конструкции и синтаксис это вроде и не к чему, да и далеко не каждый программист сталкивается с необходимостью локализации созданных им приложений. Однако в ASP.NET методы локализации настолько просты, что даже начинающий разработчик может их изучить и использовать.

Локализация в ASP.NET.

Здесь можно выделить два направления: поддержку различных кодировок и различных 'культур'. Культура -  термин ASP.NET, обозначающий в совокупности характеристики, присущие конкретным государствам. Культурой определяется, например, формат вывода даты и времени. Помимо календаря культура еще определяет язык и систему написания. Под системой написания я имею в виду, что культурой определяется работа со строками, например их сортировка и сравнение. Еще один важный момент: Культура определяется  клиентом  при установке свойства locales во время инсталляции системы. 

Чтобы определить, какая культура используется в данный момент, нужно проделать следующее:

Сначала добавить директиву

<%@Import Namespace="System.Globalization"%>

Теперь можно обращаться к подключенному пространству имен и использовать его классы. Ниже показано, как можно получить требумое свойство:

<%=CultureInfo.CurrentCulture.NativeName%>

Мы можем также устанавливать новую культуру по своему желанию. Для этого нам понадобится создать новый объект класса CultureInfo.

MyCulture = new CultureInfo(CultureName);

При этом передаваемый параметр должен представлять из себя предопределенную строковую константу. Теперь осталось присвоить полученное значение необходимому свойству CultutureInfo:
Thread.CurrentThread.CurrentCulture = MyCulture;
Итак, мы можем узнать, какая культура в данный момент используется или установить используемую культуру по собственному желанию. Это позволит программно выбирать, что и как будет выводиться на экран. Такой метод выигрывает по сравнению с простым переводом и хранением нескольких версий страницы, каждая из которых локализована под отдельную культуру, так как позволяет сохранить динамичность в обновлении сайта. Действительно, вся программная логика хранится в одном экземпляре, и, значит, при необходимости потребуется коррекция только одного документа.

Теперь обратимся к формату даты и времени, о котором я уже упоминал. Устранить существующие проблемы, связанные с представлением дат поможет использование

DateTime.Now.Format("f", null);

Этот метод принимает два параметра: строку, определяющую, в каком виде возвращается дата, и второй  параметр, определяющий формат, специфичный для конкретной культуры. В случае передачи null берется текущая культура потока. Если же хочется задать определенную культуру, то следует вызвать что-то типа

DateTime.Now.Format("f", new System.Globalization.CultureInfo("ru"))%

Для России это будет ru или ru-RU. Теперь мы спокойны за даты и уделим немного времени кодировке. В принципе, здесь стоит упомянуть только одну директиву, которая позволяет установить кодировку выходного файла.

<%@Page Language="C#" ResponseEncoding="UTF-8"%>

Еще одна интересная возможность, включенная в ASP.NET - работа с региональными установками (Regional Settings). Она полностью аналогична работе с культурой и классом CultureInfo, за исключением имени - теперь это RegionInfo. В свойствах RegionInfo хранится полное, английское, национальное  имена региона, знак валюты, признак использования метрической системы и другие характеристики. Ниже приведен пример, показывающий как извлечь текущие установки.

<%@Page Language="C#" ResponseEncoding="utf-8" %>
<%@Import Namespace="System.Threading"%>
<%@Import Namespace="System.Globalization"%>
<%
    RegionInfo region = null;
    region = RegionInfo.CurrentRegion;
%>
<html>
<body>
<p>Мы живем в стране <%=region.DisplayName%>, а валюта у нас 
 <%= region.CurrencySymbol %> - вот так.
</p>
</body>
</html>

На машине, где тестировался код, с установленным всем английским за исключением региона и locales мы получили результат:
Мы живем в стране Russia, а валюта у нас р. - вот так. 
Самое важное отличие RegionInfo от CultureInfo заключается в том, что свойства RegionInfo определяются сервером , а потому не зависят от настроек пользователя. 

Обсудив RegionInfo и CultureInfo перейдем к заключительной части и поговорим о настройках в конфигурационных файлах Config.web. Отдел <globalization> служит основным средством управления локализацией через конфигурационные файлы и содержит следующие атрибуты:

 requestencoding - ожидаемая кодировка входищих запросов

responseencoding - кодировка по умолчанию для исходящих запросов

fleeencoding - кодировка по умолчанию для программных файлов ASP.NET

culture - культура по умолчанию для обработки входящих запросов

uiculture - культура по умолчанию для поиска ресурсов

Copyright by © 2000-2004 dotSITE
Автор:
Автор:

Разместил: Vulko
Опубликовано: 03.07.2004
Статья "ASP.NET - Локализация ASP.NET приложений" прочтена 14750 раз.





Последние новости