Локализация решений SharePoint

Процесс подготовки приложений, чтобы их можно было использовать во всем мире, называется локализацией. Локализация — это преобразование ресурсов для приведения их в соответствие с конкретным языком и региональными параметрами. Дополнительные сведения см. в разделе Глобализация и локализация приложений. В этом разделе содержится обзор локализации решения SharePoint.

Чтобы локализовать решение, необходимо удалить из кода жестко заданные строки и выделить их в файлы ресурсов. Файл ресурсов — это файл на основе XML с расширением RESX. Файл ресурсов содержит переведенные версии строк, используемых в вашем решении. Дополнительные сведения см. в разделе Ресурсы в приложениях.

Примечание

Добавляйте в файлы ресурсов решения SharePoint только строковые ресурсы. Хотя редактор ресурсов позволяет добавлять ресурсы, не являющиеся строками, такие ресурсы не развертываются в SharePoint.

Файлы ресурсов

Существует три типа файлов ресурсов: по умолчанию, не зависящие от языка и зависящие от языка.

Тип файла ресурсов Описание
По умолчанию Файлы ресурсов по умолчанию, также называемые резервными ресурсами, содержат строки, локализованные для языка и региональных параметров по умолчанию, например для английского языка. Они используются, если не удается найти локализованные файлы ресурсов для указанного языка. Ресурсы по умолчанию не имеют отдельных файлов, они хранятся в основной сборке приложения.
Не зависящий от языка Файл ресурсов, который содержит строки, локализованные для языка, но не для конкретных региональных параметров. Например, "fr" для французского языка.
Языковые настройки Файл ресурсов, который содержит строки, локализованные для языка и региональных параметров. Например, "fr-CA" для канадского варианта французского языка.

Дополнительные сведения см. в разделе Иерархическая организация ресурсов для локализации.

Чтобы указать файлы ресурсов по умолчанию в проектах SharePoint, разрабатываемых в Visual Studio, выберите Инвариантный язык (инвариантная страна) в списке языков и региональных параметров диалогового окна Добавление ресурса при добавлении файла ресурсов.

Локализация решений SharePoint в Visual Studio

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

Каждая строка в файле ресурсов имеет уникальный идентификатор. Используйте один и тот же идентификатор для переведенной строки в каждом файле ресурсов. Например, если "String1" — это идентификатор первой строки в файле ресурсов по умолчанию, используйте тот же идентификатор для первой строки в файлах ресурсов, относящихся к разным языкам.

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

Локализация компонентов

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

Чтобы локализовать англоязычный компонент на немецком и японском языках, добавьте в ваш проект три элемента проекта Resource File — по одному для английского, немецкого и японского языков. Файлы ресурсов компонентов нельзя использовать для локализации кода или разметки ASPX; для них требуются отдельные файлы ресурсов.

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

$Resources:String ID

Ресурсы компонента в Visual Studio всегда называются Resources. При выборе языка, отличного от инвариантного, в имя файла ресурсов добавляется ID языка и региональных параметров. Например, если добавить файл ресурсов компонента для инвариантного языка (по умолчанию), он будет называться Resources.resx. Если добавить ресурс компонента для конкретного языка, выбрав язык и региональные параметры Japanese (Japan), файл будет называться Resources.ja-JP.resx. Имена файлов ресурсов компонентов назначаются автоматически, и их нельзя изменить.

Область ресурсов компонента является локальной для компонента, к которому они добавляются. Чтобы создать ресурсы, которые могут использоваться любым файлом компонента или элемента в решении, добавьте элемент проекта Global Resources File (Глобальный файл ресурсов) вместо файла ресурсов компонента. Элемент проекта Global Resources File находится в папке 2010 в разделе SharePoint в диалоговом окне Добавление нового элемента. Файлы глобальных ресурсов развертываются во вложенную папку \Resources корневой папки SharePoint.

Локализация разметки страницы ASPX

Чтобы локализовать страницы ASP.NET, добавьте в ваш проект три элемента проекта Resources File — по одному для английского, немецкого и японского языков. Если вам не нужно в дополнение к разметке локализовать и код, можно добавить глобальные файлы ресурсов.

Задайте имя файла ресурсов для языка по умолчанию. Назначьте локализованным файлам ресурсов то же имя с добавлением ID языка и региональных параметров. Например, MyAppResources.de-DE.resx для немецкого и MyAppResources.ja-JP.resx для японского.

Задайте для свойства Тип развертывания каждого файла ресурсов значение AppGlobalResource. Тогда файлы ресурсов будут развернуты в папке App_GlobalResources, где они доступны для всех элементов управления и страниц ASPX в решении. Папка App_GlobalResources находится в папке C:\inetpub\wwwroot\wss\VirtualDirectories\<номер_порта>\App_GlobalResources.

Примечание

Если ваши файлы ресурсов не глобальные, переместите их в папку элемента проекта, чтобы можно было использовать свойство "Тип развертывания" и другие свойства SharePoint.

Файлы ресурсов разметки ASPX можно также использовать для локализации кода. Если вы используете ресурсы для локализации не только разметки ASPX, но и кода, оставьте значение Embedded Resource (Внедренный ресурс) свойства Build Action (Действие при сборке) для каждого файла, чтобы ресурс можно было компилировать во вспомогательную сборку. Однако если вы используете файлы ресурсов только для локализации разметки, при желании можно изменить значение свойства Build Action (Действие при сборке) на Content (Содержимое), чтобы файл не компилировался в основную сборку приложения.

Замените все жестко заданные строки свойств в страницах ASPX и разметке элементов управления на выражения в следующем формате:

<asp:<class> runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />

Пример:

<asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="<%$Resources:Resource1,String7%>"></asp:Button>

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

<asp:literal ID="<ID>" runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />

Пример:

<asp:literal ID="Literal1" runat="server" Text="<%$Resources:Resource1, String9%>" />

Дополнительные сведения см. в разделе Практическое руководство. Локализация разметки ASPX.

Локализация кода

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

Visual Studio использует стандартную звездообразную модель .NET Framework. Центр звезды или основная сборка программы содержит ресурсы языка по умолчанию. Лучи или вспомогательные сборки содержат ресурсы для конкретного языка. Дополнительные сведения см. в статье Упаковка и развертывание ресурсов. Вспомогательные сборки компилируются из файлов ресурсов (с расширением RESX). Когда вы добавляете в проект и пакет решения файлы ресурсов для конкретного языка, Visual Studio компилирует эти файлы ресурсов во вспомогательные сборки с именами {Имя проекта}.Resources.dll.

Как и в случае с разметкой ASPX, локализация кода приложения SharePoint выполняется путем добавления в проект отдельных элементов проекта Resources File — один для языка по умолчанию и по одному для каждого локализованного языка. Однако, как упоминалось ранее, если у вас уже есть файлы ресурсов для локализации разметки ASPX, их можно повторно использовать для локализации кода. Если необходимо создать файлы ресурсов, задайте для файла ресурсов языка по умолчанию любое имя с расширением RESX. Назначьте локализованным файлам ресурсов то же имя с добавлением ID языка и региональных параметров. Задайте для свойства Build Action (Действие при сборке) каждого файла ресурсов значение Embedded Resource (Внедренный ресурс), чтобы создавались вспомогательные сборки ресурсов.

Чтобы создать вспомогательные сборки, выполните сборку проекта, а затем добавьте файлы в качестве дополнительных сборок на вкладке Advanced (Дополнительно) конструктора пакетов. Добавляя сборки, добавьте в начало пути к расположению папку ID, например de-DE\{Имя элемента проекта}.Resources.dll. Таким образом можно включать в проект файлы с одинаковыми именами.

В коде замените жестко заданные строки на вызовы метода GetGlobalResourceObject, используя следующий синтаксис:

HttpContext.GetGlobalResourceObject("<Resource File Name>", "<String ID>")

Дополнительные сведения см. в разделе Практическое руководство. Локализация кода.

Локализация кода веб-части

В веб-частях имеется компонент редактора пользовательских свойств, который включает атрибуты кода, использующие жестко заданные строки, такие как WebDisplayName, Category и WebDescription. Чтобы заменить строковые значения для этих атрибутов, создайте отдельный класс, производный от класса атрибута. В этих классах задайте свойство атрибута. Свойство атрибута зависит от базового класса. Например, DisplayNameValue является свойством атрибута WebDisplayName, а DescriptionValue — свойством атрибута WebDescription.

В производном классе сошлитесь на идентификатор строки из файла ресурсов и объект ResourceManager, чтобы получить локализованное значение для идентификатора строки. Верните это значение в атрибут редактора свойств.

См. также раздел