Общие сведения о локализации ASP.NET AJAX

Скотт Кейт

Локализация — это процесс разработки и интеграции поддержки определенного языка и языка в приложение или компонент приложения. Платформа Microsoft ASP.NET обеспечивает расширенную поддержку локализации стандартных приложений ASP.NET путем интеграции стандартной модели локализации .NET; Microsoft AJAX Framework использует интегрированную модель для поддержки различных сценариев, в которых может выполняться локализация.

Введение

Технология microsoft ASP.NET предоставляет объектно-ориентированную и управляемую событиями модель программирования и объединяет ее с преимуществами скомпилированного кода. Однако ее модель обработки на стороне сервера имеет ряд недостатков, присущих этой технологии, многие из которых можно устранить с помощью новых функций, включенных в пространство имен System.Web.Extensions, которое инкапсулирует службы Microsoft AJAX в платформа .NET Framework 3.5. Эти расширения обеспечивают множество функциональных возможностей клиента, которые ранее были доступны в составе расширений AJAX ASP.NET 2.0, но теперь входят в библиотеку базовых классов платформы. Элементы управления и функции в этом пространстве имен включают частичную отрисовку страниц без полного обновления страницы, возможность доступа к веб-службам через клиентский скрипт (включая API профилирования ASP.NET) и обширный клиентский API, предназначенный для зеркало многих схем управления, которые можно увидеть в ASP.NET наборе элементов управления на стороне сервера.

В этом техническом документе рассматриваются функции локализации, присутствующие в Microsoft AJAX Framework и библиотеке сценариев Microsoft AJAX, в контексте бизнес-потребности в поддержке локализации и обзор уже интегрированной поддержки локализации в веб-приложениях, предоставляемых платформа .NET Framework. Библиотека сценариев Microsoft AJAX использует формат RESX-файлов, уже используемый приложениями .NET, который обеспечивает встроенную поддержку интегрированной среды разработки и тип ресурса, доступного для общего доступа.

Этот технический документ основан на бета-версии 2 выпуска Microsoft Visual Studio 2008. В этом техническом документе также предполагается, что вы будете работать с Visual Studio 2008, а не Visual Web Developer Express, и будут предоставлены пошаговые руководства в соответствии с пользовательским интерфейсом Visual Studio. В некоторых примерах кода используются шаблоны проектов, которые могут быть недоступны в Visual Web Developer Express.

Необходимость локализации

В частности, для разработчиков корпоративных приложений и разработчиков компонентов становится все более необходимой возможность создавать средства, которые могут учитывать различия между языками и региональными параметрами. Проектирование компонентов с возможностью адаптации к языковому стандарту клиента повышает производительность разработчиков и сокращает объем работы, необходимый для адаптации компонента для глобальной работы.

Локализация — это процесс разработки и интеграции поддержки определенного языка и языка в приложение или компонент приложения. Платформа Microsoft ASP.NET обеспечивает расширенную поддержку локализации стандартных приложений ASP.NET путем интеграции стандартной модели локализации .NET; Microsoft AJAX Framework использует интегрированную модель для поддержки различных сценариев, в которых может выполняться локализация. С помощью Microsoft AJAX Framework скрипты можно локализовать путем развертывания во вспомогательных сборках или использования статической структуры файловой системы.

Внедрение скриптов со вспомогательными сборками

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

Скрипты внедряются в сборки путем их включения в управляемые RESX-файлы (или скомпилированные RESOURCES), которые включаются в сборку во время компиляции. Затем их ресурсы становятся доступными для приложения скрипта с помощью кода, созданного средой выполнения AJAX, с помощью атрибутов уровня сборки.

Соглашения об именовании для внедренных файлов скриптов

Управление скриптами Microsoft AJAX Framework поддерживает различные варианты использования при развертывании и тестировании скриптов, а также рекомендации по их использованию.

Чтобы упростить отладку, выполните приведенные далее действия.

Скрипты выпуска (рабочей среды) не должны включать .debug квалификатор в имя файла. Скрипты, предназначенные для отладки, должны включать .debug в имя файла.

Чтобы упростить локализацию, выполните приведенные далее действия.

Скрипты с нейтральным языком и региональными параметрами не должны включать идентификатор языка и региональных параметров в имя файла. Для скриптов, содержащих локализованные ресурсы, код языка ISO должен быть указан в имени файла. Например, es-CO расшифровывается как испанский, Колумбия.

В следующей таблице приведены соглашения об именовании файлов с примерами:

имя_файла Значение
Script.js Скрипт, не зависящий от языка и региональных параметров выпуска.
Script.debug.js Скрипт, не зависящий от языка и региональных параметров для отладки.
Script.en-US.js Версия выпуска на английском языке, США скрипт.
Script.debug.es-CO.js Отладочная версия: испанский, колумбийский скрипт.

Пошаговое руководство. Создание локализованного внедренного скрипта

Обратите внимание: в этом пошаговом руководстве требуется использовать Visual Studio 2008, так как Visual Web Developer Express не включает шаблон проекта для проектов библиотеки классов.

  1. Создайте проект веб-сайта с интегрированными ASP.NET расширениями AJAX. Создайте другой проект, проект библиотеки классов, в решении с именем LocalizingResources.
  2. Добавьте файл Jscript с именем VerifyDeletion.js в проект LocalizingResources, а также RESX-файлы ресурсов с именем DeletionResources.resx и DeletionResources.es.resx. Первый будет содержать ресурсы, не зависящие от языка и региональных параметров; последний будет содержать испаноязычные ресурсы.
  3. Добавьте следующий код в VerifyDeletion.js:
function VerifyDeletion(fileName)
{
 if (confirm(Message.VerifyDelete.replace(/FILENAME/, fileName)))
 {
 Delete(fileName);
 return true;
 }
 return false;
}
function Delete(fileName)
{
 alert (Message.Deleted.replace(/FILENAME/, fileName));
}

Для тех, кто не знаком с синтаксисом регулярных выражений JavaScript, текст в одной косой черте (в предыдущем примере / FILENAME/ является примером) обозначает объект RegExp. Библиотека MSDN содержит обширный справочник по JavaScript, а ресурсы по собственным объектам JavaScript можно найти в Интернете.

  1. Добавьте следующие строки ресурсов в файл DeletionResources.resx:

    VerifyDelete: вы действительно хотите удалить FILENAME?

    Удалено: имя_файла удалено.

  2. Добавьте следующие строки ресурсов в DeletionResources.es.resx:

    VerifyDelete: Est seguro que desee quitar FILENAME?

    Удалено: FILENAME se ha quitado.

  3. Добавьте следующие строки кода в файл AssemblyInfo:

[assembly: System.Web.UI.WebResource("LocalizingResources.VerifyDeletion.js",
 "text/javascript")]
[assembly: System.Web.UI.ScriptResource("LocalizingResources.VerifyDeletion.js",
 "LocalizingResources.DeletionResources", "Message")]
  1. Добавьте ссылки на System.Web и System.Web.Extensions в проект LocalizingResources.
  2. Добавьте ссылку на проект LocalizingResources из проекта веб-сайта.
  3. В файле default.aspx в проекте веб-сайта обновите элемент управления ScriptManager, используя следующую дополнительную разметку:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization="true">
 <Scripts>
 <asp:ScriptReference Assembly="LocalizingResources" Name="LocalizingResources.VerifyDeletion.js"/>
 </Scripts>
</asp:ScriptManager>
  1. В файле default.aspx в любом месте страницы добавьте следующую разметку:
<asp:Button ID="btnDelete" runat="Server" OnClientClick="VerifyDeletion('a.txt');" Text="Delete" />
  1. Нажмите клавишу F5. При появлении запроса включите отладку. После загрузки страницы нажмите кнопку Удалить. Обратите внимание, что вам будет предложено на английском языке (если компьютер не настроен на использование испанских ресурсов по умолчанию) для подтверждения.
  2. Закройте окно браузера и вернитесь к default.aspx. В директиве заголовка @Page замените auto для culture и UICulture на es-ES. Нажмите клавишу F5 еще раз, чтобы снова запустить веб-приложение в браузере. На этот раз обратите внимание, что вам будет предложено удалить файл на испанском языке:

Снимок экрана: диалоговое окно Windows Internet Обозреватель с запросом на испанский язык для нажатия кнопки O K.

(Щелкните для просмотра полноразмерного изображения)

Снимок экрана: запрос на удаление файла на испанском языке.

(Щелкните для просмотра полноразмерного изображения)

Обратите внимание, что существует несколько вариантов для этого пошагового руководства. Например, скрипты можно зарегистрировать в элементе управления ScriptManager программным способом во время загрузки страницы.

Включение структуры файла статического скрипта

При использовании статических файлов скриптов для развертывания вы теряете некоторые преимущества использования врожденной схемы локализации .NET. В первую очередь видно, что автоматический тип, созданный при включении файлов ресурсов скрипта, теряется; в приведенном выше пошаговом руководстве, например, ресурсы были предоставлены автоматически созданным типом Message из элемента управления ScriptManager.

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

Корпорация Майкрософт рекомендует избежать проблем с управлением версиями, автоматически создавая ресурсы скрипта во время компиляции проекта. При поддержке обширной базы кода скрипта может стать все труднее убедиться, что изменения кода отражаются в каждом локализованном скрипте. В качестве альтернативы можно просто поддерживать один сценарий логики и несколько скриптов локализации, объединяя файлы во время сборки проекта.

Так как нет ресурсов для декларативного включения, на статические файлы скриптов следует ссылаться либо путем добавления <asp:ScriptElement> элементов в качестве дочерних <Scripts> элементов тега элемента управления ScriptManager, либо путем программного ScriptManager добавления ScriptReference объектов в Scripts свойство элемента управления на странице во время выполнения.

ScriptManager и его роль в локализации

ScriptManager обеспечивает несколько автоматических поведений для локализованных приложений:

  • Он автоматически находит файлы скриптов на основе параметров и соглашений об именовании; Например, он загружает сценарии с поддержкой отладки в режиме отладки и локализованные скрипты на основе выбора пользовательского интерфейса браузера.
  • Он позволяет определение языка и региональных параметров, включая пользовательские языки и региональные параметры.
  • Он включает сжатие файлов скриптов по протоколу HTTP.
  • Он кэширует скрипты для эффективного управления многими запросами.
  • Он добавляет уровень косвенного обращения к скриптам путем их отправки через зашифрованный URL-адрес.

Ссылки на скрипты можно добавлять в элемент управления ScriptManager программными средствами или декларативной разметкой. Декларативная разметка особенно полезна при работе со скриптами, внедренными в сборки, отличные от самого проекта веб-сайта, так как имя скрипта, скорее всего, не изменится при отправке исправлений.

Итоги

По мере роста веб-приложений, чтобы охватить более широкую аудиторию, потребность в охвате более широких культур и сообществ становится основой бизнес-модели; Веб-приложения электронной коммерции должны иметь возможность работать с иностранными валютами, системы управления содержимым должны иметь возможность не только представлять свой контент, но и свои навигационные подсказки и поля формы на других языках, а компании должны знать, что эта потребность доступна.

Платформа .NET Framework по своей сути поддерживает многофункциональную платформу локализации, которая использует вспомогательные сборки и ФАЙЛЫ РЕСУРСОВ XML (RESX- файлы), чтобы обеспечить единый способ поиска строк ресурсов и изображений. Расширения ASP.NET AJAX, включая Microsoft AJAX Framework и библиотеку сценариев Microsoft AJAX, обеспечивают поддержку этой модели программирования в клиентском коде, позволяя легко выполнять поиск строк ресурсов. Вспомогательные сборки поддерживают автоматическое включение ресурсов скрипта (фактических файлов .js) через ScriptResource.axd при условии, что имена файлов соответствуют заданной схеме именования. Благодаря этой поддержке расширения ASP.NET AJAX упрощают локализацию скриптов и глобализацию приложений.

Биография

Скотт Кейт работает с веб-технологиями Майкрософт с 1997 года и является президентом myKB.com (www.myKB.com), где он специализируется на написании ASP.NET приложений, ориентированных на решения базы знаний. Скотт можно связаться по электронной почте по адресу scott.cate@myKB.com или его блог на ScottCate.com