130 likes | 307 Views
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета. Технологии разработки Internet -приложений. ASP.NET приложения – локализация ресурсов приложения.
E N D
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета Технологии разработки Internet-приложений ASP.NET приложения – локализация ресурсов приложения проф. В.К.Толстых, www.tolstykh.com
Что такое локализация культуры? Локализация — это процесс настройки приложения на работу в заданной региональной или языковой среде. Основной частью локализации является перевод пользовательского интерфейса на другой язык. Один способ сделать это состоит в том, чтобы создать несколько вариантов страницы на разных языках. Однако если исходная страница периодически меняется, то этот способ может оказаться весьма трудоемким, с высокой вероятностью ошибок и сложным в поддержке. 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. Например, дляглобальныхресурсов: <asp:Literalrunat="server"Text="<%$ Resources:MasterPage,Authors%>"> </asp:Literal> ЗдесьтекслокализацииразмещаетсявфайлахMasterPage.resx, MasterPage.uk.resx, MasterPage.en.resxкаталогаApp_GlobalResourcesввиде Илидля локальных ресурсов (не указываем имя файла): <asp:Labelrunat="server"Text="<%$ Resources: Authors %>"> </asp:label> Или – специальный элемент VisualStudio для локализации текста: <asp:Localizerunat="server"meta:resourcekey="locText"Text="Текст…"> </asp:Localize> Здесьтекстфайла ресурсов локализации – Для визуализации в дизайнере
Локализация свойств элементов, включая текст Для локализации текста в CSS-свойствеHTML-элемента, в случае локальных ресурсов, лучше всего использовать конструкцию типа: <h1runat="server"id="h1"meta:resourcekey="h1"class="myh1">h1</h1> Здесь текст для h1 размещается в виде InnerTextтегасid="h1": Для локализации нескольких свойств Web-элементов лучше всего использовать конструкции следующего типа, например, для свойств Text и NavigateUrlссылкиHyperLink: <asp:HyperLinkid="hlMyRef"runat="server"meta:resourcekey="hlMyRef"> hlMyRef</asp:HyperLink> где Для визуализации в дизайнере Для визуализации в дизайнере
Пример локализации заголовка страницы – свойства TitleэлементаPage: • <%@Pagemeta:resourcekey="Page" ...%> • Или для глобальных ресурсов из файлов global– • <%@PageTitle="<%$ Resources: global, Page %>"... • Локализация на уровне кодов C# • Например, для .cs-файлов папки App_Codeпри глобальной локализации ресурсов из файлов global: • user = (String)HttpContext.GetGlobalResourceObject("global","notAuthorized"); • Можно также использовать следующие конструкции для глобальных ресурсов: • И для локальных: