Локализация сценариев

Самый простой способ локализации состоит в том, чтобы написать специализированный сценарий, который будет решать поставленную задачу. Например, этот сценарий мог бы определять региональные настройки и затем загружать ту или иную библиотеку. Половину этой задачи можно решить средствами ASP.NET, а вторую половину – средствами ASP.NET AJAX.

Ниже приводится пример короткого сценария JavaScript, который выводит текущую дату в локализованном формате. В файле JavaScript Dayname.js определяются две переменные:
dateformat
Строка с форматом представления даты, где используются следующие заполнители: ss (день недели), dd (число месяца), mm (месяц) и yyyy (год)
daynames
Массив с локализованными названиями всех семи дней недели В примере 9.1 приводится содержимое файла Dayname.js.
Пример 9.1. Информация о дате, локализованная для английского языка
Dayname.js
var dateformat = "ss, yyyy?mm?dd";
var daynames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"];

Перевести содержимое этого файла на другой язык не представляет труда. В примере 9.2 приводится тот же самый файл, но на этот раз вся информация переведена на немецкий язык.


В обоих этих языках используются различные форматы представления дат и названия дней недели.
Пример 9.2. Информация о дате, локализованная для немецкого языка Dayname.de?DE.js
var dateformat = "ss, dd.mm.yyyy";
var daynames = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag",
"Freitag", "Samstag"];

Для локализованных версий сценариев очень важную роль играют имена их файлов. Непосредственно перед расширением файла (.js) вставляется информация о языке и, возможно, о регионе, в формате язык-регион, где язык обозначается двухсимвольным кодом языка, а регион обозначается двухсимвольным кодом региона. Код языка, само собой разумеется, определяет язык, на котором написан текст. Код региона определяет форматы представления тех или иных данных (в различных регионах или странах могут говорить на одном и том же языке, но использовать разные соглашения по форматированию – как в случае Соединенных Штатов и Великобритании). Например, американский английский обозначается как en?US, британский английский – en?UK, немецкий (Германия) – de?DE, немецкий (Австрия) – de?AT и так далее.

Коды определяются международной организацией по стандартизации ISO, и, в соответствии с соглашениями, код языка записывается строчными символами, а код региона – прописными.


В примере 9.2 файл сценария имеет имя Dayname.de?DE.js, указывая на немецкий язык и Германию.

Теперь создадим новую страницу .aspx, которая будет использовать эти локализованные файлы. В начале страницы расположим элемент , который будет использоваться для динамического вывода локализованной даты. Обратите внимание на символ неразрывного пробела ( ) внутри элемента – он очень важен для программного кода JavaScript. Обычный пробел не даст желаемого эффекта из-за особенностей поведения Internet Explorer.
 

Теперь можно добавить программный код JavaScript, который будет использовать переменные dateformat и daynames, определения которых находятся во внешних файлах JavaScript для вывода даты в локализованном формате:



Пока что нет ничего необычного.


Но дальше ASP.NET и ASP.NET AJAX начинают свои магические манипуляции. Первое: платформа ASP.NET AJAX должна загрузить внешний файл JavaScript и она (это просто чудо) отыскивает файл, соответствующий текущим языку и региону, основываясь на имени файла. Для загрузки файла Dayname.js внутри элемента управления ScriptManager используется элемент . Основную функцию на этом этапе выполняют два атрибута:
ResourceUICultures (атрибут элемента )

Содержит перечень всех поддерживаемых культур (разделенных запятыми), для которых существует перевод.
EnableScriptLocalization (атрибут элемента )
Если этот атрибут установить в значение true, для текущей страницы будет активирована поддержка механизма локализации ASP.NET
AJAX:
(asp:ScriptManager ID="ScriptManager1" runat="server"
EnableScriptLocalization="true")

(asp:ScriptReference Path="Dayname.js"
ResourceUICultures="de?DE,fr?FR" /)

(/asp:ScriptManager)

По умолчанию используется файл Dayname.js, однако если будет использована одна из культур, перечисленных в атрибуте ResourceUICultures (то есть если броузер запросит одну из культур, основываясь на своих настройках), то будет загружен соответствующий локализованный файл.

До сих пор страница еще не установила свою культуру в соответствии с региональными настройками броузера клиента.


В этом месте на сцене появляется ASP.NET. Следующая ниже директива Page автоматически установит значение культуры в соответствии с настройками броузера:
<%@ Page Language="C#" UICulture="auto" %>

Броузер, настроенный на предпочтительное использование французского языка, загрузит файл Dayname.fr?FR.js, с другой стороны, броузер, настроенный на предпочтительное использование итальянского языка, загрузит файл Dayname.js, так как для итальянского языка нет локализованного сценария. То есть файл Dayname.js используется по умолчанию в случае отсутствия локализации для данного языка.

В примере 9.3 приводится полный программный код страницы, которая использует механизм локализации ASP.NET AJAX, который мы только что рассмотрели. Для опробования примера вам необходимо переписать файл Dayname.js в корневой каталог вашего веб-сайта.
Пример 9.3. Локализация сценария
Localization?Inline.aspx
<%@ Page Language="C#" UICulture="auto" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1?transitional.dtd">
ASP.NET AJAX


(body)
(asp:ScriptManager ID="ScriptManager1" runat="server"
EnableScriptLocalization="true")

(asp:ScriptReference Path="Dayname.js"
ResourceUICultures="de?DE,fr?FR" /)

(/asp:ScriptManager)

 


(/body)
.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Глобализация и интернационализация
Использование Control Toolkit
Использование пакета Control Toolkit
Использование сопутствующих ресурсов из ASP.NET AJAX
Локализация