проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – локализация ресурсов приложения Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета
Что такое локализация культуры? Локализация это процесс настройки приложения на работу в заданной региональной или языковой среде. Основной частью локализации является перевод пользовательского интерфейса на другой язык. Один способ сделать это состоит в том, чтобы создать несколько вариантов страницы на разных языках. Однако если исходная страница периодически меняется, то этот способ может оказаться весьма трудоемким, с высокой вероятностью ошибок и сложным в поддержке. ASP.NET позволяет создавать страницу, которая может получать содержимое и прочие данные, основываясь на языке, выбранном для браузера, или на явном выборе языка пользователем. К содержимому и другим данным страница обращается как к ресурсам, и такие данные могут храниться в файлах ресурсов или в других источниках. Файл ресурсов это XML-файл, содержащий строки, которые требуется перевести на другие языки. Файл ресурсов содержит пары «ключ-значение». Регистр букв в именах ключей не учитывается. Далее рассмотрим пример поддержки культуры посредством сессий.
1. Определяем класс с нашими культурами Culture.cs
2. Создаём базовый класс для всех страниц Переопределяем метод InitializeCulture базового класса
Теперь все страницы приложения должны быть производными от BasePage : В файл Global.asax в начале сессии устанавливаем начальное значение культуры :
3. Интерфейс выбора языка Для возврата дополнительного аргумента обработчику события с культурой страницы
4. При необходимости изменяем язык на странице Сохраняем в сессии новую культуру, полученную от щелчка на кнопке выбора языка
Можем форматировать вид страницы в зависимости от культуры, например: Можем кэшировать вывод страницы в зависимости от культуры ( VaryByCustom="lang" ). Для этого в файл Global.asax добавляем:кэшировать
5. Создаём ресурсы локализации –.resx Существует понятие глобальных и локальных ресурсов. Глобальные ресурсы размещаются в корневом каталоге приложения App_GlobalResources в виде групп файлов, различных для каждой культуры, например: global.resx, global.uk.resx, global.en.resx … Доступ к глобальным ресурсам можно получить из любой страницы приложения и из любого отдельного класса, размещённого в папке App_Code или Bin. Локальные ресурсы размещаются в каталогах App_LocalResources внутри каждой папки, где необходимо реализовать локализацию страниц приложения. Имя каждого файла-ресурса создаётся на основе имени той страницы, которую она локализует. Например, для двух культур (языков) страницы organization.aspx в её же каталоге должна быть папка App_LocalResources с двумя файлами: Культура по умолчанию
Пример файлов-ресурсов (русский, украинский) в редакторе Visual Studio 2012 для страницы organization.aspx
5. Web-элементы локализации Для локализации только текста в.aspx -файлах можно использовать элементы Literal, Label или Localize. Например, для глобальных ресурсов: "> Здесь текс локализации размещается в файлах MasterPage.resx, MasterPage.uk.resx, MasterPage.en.resx каталога App_GlobalResources в виде Или для локальных ресурсов (не указываем имя файла): "> Или – специальный элемент Visual Studio для локализации текста: Здесь текст файла ресурсов локализации – Authors Авторы проекта locText. Text Текст… ссылка … Для визуализации в дизайнере
Локализация свойств элементов, включая текст Для локализации текста в CSS-свойстве HTML-элемента, в случае локальных ресурсов, лучше всего использовать конструкцию типа: h1 Здесь текст для h1 размещается в виде InnerText тега с id="h1" : Для локализации нескольких свойств Web-элементов лучше всего использовать конструкции следующего типа, например, для свойств Text и NavigateUrl ссылки HyperLink : hlMyRef где Для визуализации в дизайнере h1. InnerText Текст для h1… курсив … Для визуализации в дизайнере hlMyRef. Text Текст на ссылке hlMyRef… hlMyRef. NavigateUrl MyRef.aspx
Пример локализации заголовка страницы – свойства Title элемента Page : Или для глобальных ресурсов из файлов global – "... Локализация на уровне кодов C# Например, для.cs -файлов папки App_Code при глобальной локализации ресурсов из файлов global : user = (String)HttpContext.GetGlobalResourceObject(" global ","notAuthorized"); Можно также использовать следующие конструкции для глобальных ресурсов: И для локальных: Page. Title Web-личность notAuthorized Пользователь не авторизован