Пошаговое руководство. Использование ресурсов для локализации совместно с ASP.NET

Обновлен: Ноябрь 2007

Эффективный способ создания локализованных веб-страниц заключается в использовании для текста и элементов управления страницы ресурсов на основе языка и региональных параметров пользователя. Используя свойства, размещенные в объектах ресурсов, система ASP.NET выбирает во время выполнения правильное свойство, соответствующее языку и региональным параметрам пользователя. Этот процесс достаточно прост.

  • В файле ресурсов (расширение RESX) хранятся значения.

  • На странице программист указывает, что для установки свойств элементов управления будут использоваться ресурсы.

  • Во время выполнения значения свойств элементов управления берутся из файла ресурсов.

    fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

    На практике значения можно хранить в пользовательских объектах ресурсов, например в базе данных. Однако в данном пошаговом руководстве для хранения значений будет использоваться RESX-файл.

В средстве Visual Web Developer можно создавать ресурсы для элементов управления, свойств элементов управления и HTML-кода для элементов управления без необходимости писать код вручную.

В этом пошаговом руководстве, в частности, рассматриваются следующие задачи:

  • Локализация страниц ASP.NET.

  • Создание файла ресурсов и неявная привязка его значений к элементам управления в приложении.

  • Создание файлов ресурсов локализации и явные ссылки на них на страницах с помощью декларативных выражений.

Обязательные компоненты

Для выполнения этого пошагового руководства потребуется:

  • Visual Web Developer (Visual Studio).

  • Платформа .NET Framework.

Создание веб-узла

Если веб-узел уже создан в Visual Web Developer (см. раздел Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer), можно перейти к следующему подразделу, "Неявная локализация с помощью ASP.NET". В противном случае, создайте новый веб-узел и страницу, выполнив действия из приведенной ниже процедуры.

Создание веб-узла на базе файловой системы

  1. Откройте Visual Web Developer.

  2. В меню Файл выберите Создать, Веб-узел.

    Откроется диалоговое окно Создать веб-узел.

  3. В разделе Установленные шаблоны Visual Studio выберите Веб-узел ASP.NET.

  4. В поле Расположение введите имя папки, где следует хранить страницы веб-узла.

    Например, введите имя папки C:\WebSites.

  5. В списке Язык выберите предпочтительный язык программирования.

  6. Нажмите кнопку ОК.

    Visual Web Developer создаст папку и новую страницу с именем Default.aspx.

Неявная локализация с помощью ASP.NET

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

В данном примере неявной локализации для создания файла ресурсов по умолчанию, отправной точки для локализации на два языка, используется конструктор и редактор ресурсов. Visual Web Developer создает файл ресурсов только на основе имеющихся на странице элементов управления. По этой причине рекомендуется создавать файл ресурсов после размещения на странице всех элементов управления, включая простые элементы управления, например кнопки, метки и текстовые поля.

Размещение на странице элементов управления

  1. В обозревателе решений щелкните правой кнопкой мыши файл Default.aspx, выберите в контекстном меню команду Переименовать и введите Sample.aspx.

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

  2. Откройте файл Sample.aspx и переключитесь в представление конструирования.

  3. Перетащите на страницу из раздела Стандартные панели элементов элементы управления Button, Label и TextBox.

  4. Для каждого элемента управления присвойте свойству Text значения Английская кнопка, Английская метка и Английское текстовое поле соответственно.

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

Автоматическое создание файла ресурсов

  1. Щелкните рабочую область конструктора или элемент управления.

  2. В меню Сервис выберите пункт Создать локальный ресурс.

    Visual Web Developer создаст новую папку с именем App_LocalResources, а в папке App_LocalResources — новый файл с именем Sample.aspx.resx. Если странице было присвоено имя, отличное от Sample.aspx, имя RESX-файла будет отражать выбранное имя страницы. При использовании неявной локализации имена файлов ресурсов задаются в соответствии с именами отдельных страниц.

  3. Чтобы просмотреть изменения, внесенные в объявления элементов управления, переключитесь в представление исходного кода.

    Средство Visual Web Developer добавило в элементы управления атрибут, предназначенный для извлечения значений из вновь созданного файла ресурсов. Например, в разметке элемента управления Button появился новый атрибут meta:resourcekey.

    <asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="English Button" />
    

При отправке обозревателем запроса на веб-сервер в этот запрос можно включить сведения о текущем языке и региональных параметрах. Например, обозреватель может отправить строку "en-us", указывающую на использование английского языка (США); другой обозреватель может отправить строку "en-gb", указывающую на использование английского языка (Великобритания).

fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

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

Файл ресурсов используется в качестве файла ресурсов по умолчанию для всех запросов. (Это файл ресурсов для резервного языка и региональных параметров). Если обозревателем не указан язык и региональные параметры, либо в запросе обозревателя указан неподдерживаемый язык или региональные параметры, значения ресурсов берутся из этого файла по умолчанию.

После создания файла ресурсов в него можно внести локализованный текст с помощью редактора ресурсов.

Редактирование файла ресурсов с помощью редактора ресурсов

  1. Откройте в обозревателе решений файл Sample.aspx.resx.

    В редакторе ресурсов, в разделе "Значение" перечислены свойства Текст для каждого элемента управления на странице. Изменение значения здесь приводит к изменению значения для языка и региональных параметров по умолчанию.

  2. Присвойте свойству ButtonResource1.Text значение Измененный английский текст.

  3. Сохраните файл.

Теперь можно проверить страницу.

Проверка страницы

  • Чтобы запустить страницу, нажмите сочетание клавиш CTRL + F5.

    Текст, введенный в редакторе ресурсов, отображается в виде метки для элемента управления Button1. При использовании неявной локализации свойства синтаксиса в файлах ресурсов переопределяют свойства, указанные непосредственно на странице.

Добавление дополнительных языков и региональных параметров

Для каждой пары "язык — региональные параметры" требуется отдельный файл ресурсов. Для добавления дополнительных языков и региональных параметров в качестве отправной точки можно использовать файл ресурсов по умолчанию. При создании файлов ресурсов для различных языков и региональных параметров можно включить в имена файлов языковые коды ISO (например en-us, fr-ca и en-gb). Эти коды ISO помещаются между именем страницы и расширением RESX-файла, например Sample.aspx.en-us.resx. Чтобы указать язык, не зависящий от региональных параметров, удалите код страны, например, выберите для французского языка имя файла Sample.aspx.fr.resx.

fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

При использовании синтаксиса неявной локализации для каждой страницы необходимо создать отдельный набор файлов ресурсов.

Создание файла ресурсов на французском языке вне зависимости от региональных параметров

  1. В обозревателе решений щелкните правой кнопкой мыши файл Sample.aspx.resx и выберите в контекстном меню команду Копировать.

  2. Щелкните правой кнопкой мыши папку App_LocalResourcesи выберите в контекстном меню команду Вставить.

    Visual Web Developer создаст файл с именем Копия Sample.aspx.resx.

  3. Щелкните правой кнопкой мыши файл Копия Sample.aspx.resx, выберите в контекстном меню команду Переименовать и введите Sample.aspx.fr.resx.

    Имя Sample.aspx.fr.resx обозначает файл с текстом на французском языке, не зависящий от региональных параметров.

  4. Откройте файл Sample.aspx.fr.resx.

  5. Присвойте свойству Text элементов управления Button, Label и TextBox значения Французская кнопка, Французская метка и Французское текстовое поле соответственно.

  6. Сохраните файл.

Тестирование с помощью параметра изменения языка

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

Изменение языковых параметров обозревателя

  1. В Microsoft Internet Explorer в меню Сервис выберите пункт Свойства обозревателя.

  2. Нажмите кнопку Языки.

  3. В диалоговом окне Выбор языка нажмите кнопку Добавить.

  4. В диалоговом окне Добавление языка выберите в списке Язык пункт Французский (Франция) [fr] и нажмите кнопку ОК.

  5. Нажмите кнопку Добавить и добавьте в список языков Испанский (Мексика) [es-mx].

  6. Нажмите кнопку Добавить и добавьте в список языков Арабский (Египет) [ar-eg].

    Испанский и арабский языки будут использоваться для тестирования далее в данном пошаговом руководстве.

  7. В диалоговом окне Выбор языка щелкните в списке Язык пункт Французский (Франция) [fr], нажмите кнопку Выше, а затем — кнопку ОК.

Обозреватель Internet Explorer теперь настроен таким образом, чтобы передавать в запросах языковой параметр fr. Поскольку на странице Sample.aspx для региональных параметров присвоено значение auto, система ASP.NET попытается найти файл ресурсов и соответствующие значения, чтобы сформировать страницу в соответствии с языковыми и региональными параметрами.

Проверка страницы

  • Чтобы запустить страницу, нажмите в Visual Web Developer сочетание клавиш CTRL+F5.

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

    fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

    Чтобы восстановить в обозревателе Internet Explorer исходные языковые параметры, откройте диалоговое окно Выбор языка и переместите выбранный язык в начало списка.

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

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

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

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

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

Базовое имя файла ресурсов — LocalizedText. Для каждого языка локализации будет создан отдельный файл с именем, включающим соответствующий код языка (а также, при необходимости код региональных параметров). Например, для английского языка (США) будет создан файл с именем LocalizedText.resx. Для французского языка (Канада) будет создан файл с именем LocalizedText.fr-ca.resx. Оба файла будут помещены в каталог Resources веб-приложения. В отличие от приведенного выше примера неявной локализации, при явной локализации не требуется создавать файл ресурсов для каждой ASPX-страницы; вместо этого для каждого поддерживаемого языка и региональных стандартов создается единый набор файлов.

Создание файла ресурсов

  1. В обозревателе решений щелкните правой кнопкой мыши корневой каталог веб-узла, выберите в контекстном меню команду Добавить папку ASP.NET, после чего выберите пункт App_GlobalResources.

  2. Щелкните правой кнопкой мыши папку App_GlobalResources и выберите в контекстном меню команду Добавить новый элемент.

  3. Под заголовком Установленные шаблоны Visual Studio выберите Файл ресурсов.

  4. В поле Имя введите LocalizedText.resx и нажмите кнопку Добавить.

    Файл LocalizedText.resx будет играть роль файла ресурсов для резервных региональных параметров.

  5. Создайте второй RESX-файл и присвойте ему имя LocalizedText.fr.resx.

    Строка "fr" указывает, что этот файл ресурсов необходимо использовать, если в качестве языка обозревателя выбран французский (независимо от региональных стандартов).

  6. Создайте третий RESX-файл и присвойте ему имя LocalizedText.es-mx.resx.

    Строка "es-mx" указывает, что этот файл ресурсов необходимо использовать, если в качестве языка обозревателя выбран испанский (Мексика).

  7. Откройте файл LocalizedText.resx.

  8. В первой строке введите в столбце Name строку Msg1.

  9. В первой строке в столбце Value введите Hello.

  10. Сохраните файл и закройте его.

  11. Откройте файл LocalizedText.fr.resx, создайте строку ресурса с именем Msg1 и присвойте ей значение Bon jour. По завершении работы сохраните и закройте файл.

  12. Откройте файл LocalizedText.es-mx.resx, создайте строку ресурса с именем Msg1 и присвойте ей значение Buenos dias. По завершении работы сохраните и закройте файл.

    fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

    Чтобы вставить букву с акутом (н), введите на цифровой клавиатуре ALT+0237 при включенном NumLock.

    Таким образом, для ресурса Msg1 было создано три значения. ASP.NET считает значение из соответствующего файла ресурсов в зависимости от языковых параметров обозревателя.

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

Добавление на страницу элемента управления "метка"

  1. Откройте файл Sample.aspx и переключитесь в представление конструирования.

  2. Перетащите на страницу другой элемент управления Label.

  3. Щелкните правой кнопкой мыши элемент управления Label, выберите в контекстном меню пункт Свойства и нажмите в поле Выражения кнопку с многоточием (…).

    Откроется диалоговое окно Выражения.

  4. В списке Привязываемые свойства выберите пункт Текст.

  5. В списке Тип выражения выберите пункт Ресурсы.

  6. В разделе Свойства выражения присвойте параметру ClassKey значение LocalizedText, а параметру ResourceKey — значение Msg1.

  7. Нажмите кнопку ОК.

  8. Перейдите в представление исходного кода.

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

    <asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>">
    
    fw69ke6f.alert_note(ru-ru,VS.90).gifПримечание.

    Атрибут LocalizedText не имеет индикатора языка, индикатора региональных параметров и расширения RESX, поскольку этот атрибут фактически не является именем файла. Атрибут LocalizedText представляет собой базовый класс ресурса. В зависимости от установленных в обозревателе региональных стандартов ASP.NET выберет ресурс из файла, в имени которого указан соответствующий код языка или региональных стандартов, например LocalizedText.fr.resx, LocalizedText.es-mx.resx, либо, если соответствующий язык не найден, LocalizedText.resx.

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

Проверка страницы

  1. Чтобы запустить страницу, нажмите сочетание клавиш CTRL + F5.

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

  2. В Microsoft Internet Explorer выберите в меню Сервис пункт Свойства обозревателя.

  3. Нажмите кнопку Языки.

  4. В диалоговом окне Выбор языка переместите в начало списка языков Испанский (Мексика) [es-mx]. После этого нажмите кнопку ОК и закройте диалоговое окно Свойства обозревателя.

  5. Чтобы обновить страницу в обозревателе, нажмите клавишу F5.

    Отобразится версия текста для испанского языка.

  6. Измените язык на арабский и снова обновите страницу, нажав клавишу F5.

    В этот раз будет выведен текст на языке, используемом в резервном файле ресурсов. Поскольку файл LocalizedText.ar-eg.resx не был создан, ASP.NET не удается найти текст, соответствующий возвращенному обозревателем языку и региональным параметрам, поэтому будет использоваться резервный файл ресурсов.

  7. После завершения проверки страницы восстановите в обозревателе исходный язык.

Следующие действия

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

  • Использование ресурсов в приложениях. Дополнительные сведения см. в разделе Ресурсы в приложениях.

  • Использование классов, в которых определяются данные, связанные с региональными параметрами, в том числе сведения о языке, стране или области, используемых календарях, шаблонах форматирования дат, валюте, числах и порядке сортировки строк. Дополнительные сведения см. в разделе System.Globalization.

  • Рекомендации по созданию кода для интернациональной аудитории. Дополнительные сведения см. в разделе Рекомендации по разработке международных приложений.

См. также

Основные понятия

Использование класса CultureInfo

Другие ресурсы

Шифрование и локализация

Пространства имен глобализации и локализации в Visual Studio