Поделиться через


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

Дата последнего изменения: 9 марта 2015 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Терминология многоязыкового интерфейса пользователя
Включение поддержки альтернативных языков
Смена языка интерфейса
Локализация отображаемого текста
Добавление переводов к пользовательским ресурсам

Поддержка многоязыкового пользовательского интерфейса в Microsoft SharePoint Foundation 2010 позволяет пользователям менять язык пользовательского интерфейса веб-сайта.

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

Чтобы воплотить эту возможность в жизнь, необходимо обеспечить доступ к языкам через языковые пакеты, устанавливаемые на серверы, на которых выполняется SharePoint Foundation 2010, причем владелец сайта SharePoint Foundation должен включить языки в качестве альтернативных для сайта.

Языковые пакеты обеспечивают перевод текста пользовательского интерфейса, включенного вместе с SharePoint Foundation 2010. Текст, добавляемый пользователями на веб-сайт после его создания, также можно локализовать. SharePoint Foundation 2010 не поддерживает локализацию содержимого элементов списков, но поддерживает локализацию хрома списков, в том числе их названий и описаний, заголовков столбцов, имен и описаний настраиваемых типов контента, используемых в списках, и отображаемого текста, используемого в расширениях меню списков. При настройке пользовательского интерфейса самого веб-сайта (например, путем добавления узлов в верхнюю панель навигации или панель быстрого запуска, или добавления расширений на ленту) можно также добавить переводы отображаемого текста для этих новых элементов на все языки, поддерживаемые сайтом. Допускающий настройку текст интерфейса может также поддерживаться языковыми ресурсами, создаваемыми пользователями.

Терминология многоязыкового интерфейса пользователя

В следующих разделах объясняются стандартные термины, относящиеся к многоязыковому интерфейсу пользователя SharePoint Foundation.

Язык сборки

Язык, установленный вместе с системой SharePoint Foundation, называется языком сборки (SKU). Этот язык используется приложением центра администрирования и применяется по умолчанию к создаваемым веб-сайтам и семействам веб-сайтов в ферме.

Язык сборки можно определить, используя объектную модель SharePoint Foundation. Статическое свойство GlobalServerLanguage класса SPRegionalSettings возвращает объект SPLanguage со сведениями об отображаемом имени языка сборки и его коде (LCID). Список кодов LCID см. в описании свойства SPLocale.LCID.

Установленные языки

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

ПримечаниеПримечание

Список доступных языковых пакетов приведен на странице, посвященной языковым пакетам для SharePoint Foundation 2010.

Статическое свойство GlobalInstalledLanguages класса SPRegionalSettings возвращает объект SPLanguageCollection, перечисление которого позволяет получить список установленных языковых пакетов. Каждый объект SPLanguage в этой коллекции содержит сведения об отображаемом имени установленного языка и его коде LCID.

Язык по умолчанию

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

Свойство UICulture класса SPWeb возвращает объект CultureInfo со сведениями о языке по умолчанию.

Альтернативные языки

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

Свойство SupportedUICultures класса SPWeb возвращает перечислимую коллекцию объектов CultureInfo с данными о языках, поддерживаемых в пользовательском интерфейсе веб-сайта. Эта коллекция включает в себя объект для языка по умолчанию, а также объекты для альтернативных языков.

ПримечаниеПримечание

Если для веб-сайта не включена поддержка многоязыкового пользовательского интерфейса, коллекция, возвращенная свойством SupportedUICultures, будет состоять только из одного объекта CultureInfo, представляющего собой язык по умолчанию. Чтобы определить, включен ли многоязыковый пользовательский интерфейс, достаточно получить значение свойства IsMultilingual.

Пользовательские ресурсы

Любой текст пользовательского интерфейса, допускающий настройку в SharePoint Foundation, сопровождается коллекцией строк (по одной на язык, поддерживаемый веб-сайтом). Коллекция строк, создаваемых пользователем и допускающих локализацию, называется пользовательским ресурсом.

В объектной модели SharePoint Foundation пользовательский ресурс представлен экземпляром класса SPUserResource. Например, отображаемый текст для названия списка возвращается свойством Title объекта SPList, представляющего собой список. Свойство Title, в свою очередь, получает это значение из объекта SPUserResource, возвращаемого свойством TitleResource конкретного списка.

Когда новый текст пользовательского интерфейса добавляется в уже созданный веб-сайт, объект SPUserResource, сопровождающий текст, возвращает одно и то же значение (начальное значение) для всех языков, пока кто-нибудь не добавит переводы.

ПримечаниеПримечание

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

Включение поддержки альтернативных языков

Владелец веб-сайта может включить поддержку многоязыкового пользовательского интерфейса, перейдя на страницу Параметры языка (/_layouts/muisetng.aspx) в пользовательском интерфейсе (последовательно щелкните Действия сайта и Параметры сайта; в разделе Администрирование сайта щелкните Параметры языка). Список установленных языков приводится в группе Альтернативные языки. Альтернативные языки, поддерживаемые веб-сайтом на данный момент, помечены флажками рядом со своими именами. Для включения или отключения поддержки того или иного языка достаточно установить или снять соответствующий ему флажок.

То же самое можно сделать и с помощью объектной модели SharePoint Foundation, получив ссылку на объект SPWeb, присвоив его свойству IsMultilingual значение true и вызвав метод AddSupportedUICulture для добавления поддержки одного или нескольких альтернативных языков, или метод RemoveSupportedUICulture для отмены поддержки. Процедура добавления поддержки альтернативных языков иллюстрируется следующим консольным приложением:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {

                    // A website can be created from a template that does not support MUI.
                    SPWebTemplateCollection templates = site.GetWebTemplates(web.Language);
                    SPWebTemplate template = templates[web.WebTemplate];
                    if (template.SupportsMultilingualUI)
                    {

                        // Enable MUI.
                        web.IsMultilingual = true;

                        // Add support for any installed language currently not supported.
                        SPLanguageCollection installed = SPRegionalSettings.GlobalInstalledLanguages;
                        IEnumerable<CultureInfo> supported = web.SupportedUICultures;

                        foreach (SPLanguage language in installed)
                        {
                            CultureInfo culture = new CultureInfo(language.LCID);

                            if (!supported.Contains(culture))
                            {
                                Console.WriteLine("Adding {0}", culture.Name);
                                web.AddSupportedUICulture(culture);
                            }
                        }
                        web.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                ' A website can be created from a template that does not support MUI.
                Dim templates As SPWebTemplateCollection = site.GetWebTemplates(web.Language)
                Dim template As SPWebTemplate = templates(web.WebTemplate)

                If template.SupportsMultilingualUI Then

                    ' Enable MUI.
                    web.IsMultilingual = True

                    ' Add support for any installed language currently not supported.
                    Dim installed As SPLanguageCollection = SPRegionalSettings.GlobalInstalledLanguages
                    Dim supported As IEnumerable(Of CultureInfo) = web.SupportedUICultures

                    For Each language As SPLanguage In installed
                        Dim culture As New CultureInfo(language.LCID)

                        If Not supported.Contains(culture) Then
                            Console.WriteLine("Adding {0}", culture.Name)
                            web.AddSupportedUICulture(culture)
                        End If
                    Next
                    web.Update()
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Обратите внимание, что консольное приложение проверяет, создан ли веб-сайт на основе веб-шаблона, поддерживающего многоязыковый пользовательский интерфейс. Можно создать и веб-шаблон, не поддерживающий альтернативные языки. Дополнительные сведения об этом см. в описании атрибута SupportsMultilingualUI в статье Элемент Configuration (Site) и в описании свойства SupportsMultilingualUI класса SPWebTemplate.

Для простоты в примере консольного приложения код, присваивающий свойству IsMultilingual значение не заключен в блок try-catch; этот блок, однако, обязателен. Попытка присвоить свойству IsMultilingual значение true вызовет исключение SPException, если веб-сайт содержит настроенные каскадные таблицы стилей (CSS). На сайте, использующем настроенные файлы CSS, включение поддержки альтернативных языков невозможно.

Другой типичной задачей, очень похожей на продемонстрированную в предыдущем примере, является репликация набора альтернативных языков веб-сайта в дочерний сайт. Это необходимо делать потому, что каждый новый веб-сайт создается с языком по умолчанию, но без альтернативных языков. Чтобы реплицировать поддержку альтернативных языков из веб-сайта в дочерний сайт, достаточно выполнить перечисление коллекции, возвращаемой свойством SupportedUICultures родительского веб-сайта, и добавить поддержку каждого языка в дочерний веб-сайт, вызвав метод AddSupportedUICulture дочернего сайта.

Смена языка интерфейса

Когда в SharePoint Foundation 2010 кто-либо переходит на многоязычный веб-сайт, язык пользовательского интерфейса определяется на этом сайте с помощью заголовка Accept-Language, отправляемого браузером клиента вместе с HTTP-запросом. Если веб-сайт не поддерживает ни один из языков, указанных браузером, в качестве языка интерфейса используется язык по умолчанию.

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

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

<script type ="text/javascript"> 
// <![CDATA[
function OnSelectionChange(value)
{
    var today = new Date();
    var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
    var url = window.location.href;
    document.cookie = "lcid=" + value + ";path=/;expires=" + oneYear.toGMTString();
    window.location.href = url;
}
// ]]>
</script>

Определив язык интерфейса, SharePoint Foundation запускает поток обработки запроса и присваивает свойству Thread.CurrentUICulture этого потока значение, соответствующее выбранному языку. При написании кода для выполнения на сервере (например, в веб-части) узнать язык интерфейса для текущего контекста HTTP можно с помощью статического свойства CultureInfo.CurrentUICulture.

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

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    if (web.IsMultilingual)
                    {
                        IEnumerable<CultureInfo> cultures = web.SupportedUICultures;
                        foreach (CultureInfo culture in cultures)
                        {
                            // Change the UI culture of the thread.
                            Thread.CurrentThread.CurrentUICulture = culture;
 
                            // Print the name of the current language and the web title in the current language.
                            Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title); 
                        }
                    }
                }
            }
            Console.WriteLine("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                If web.IsMultilingual Then
                    Dim cultures As IEnumerable(Of CultureInfo) = web.SupportedUICultures
                    For Each culture As CultureInfo In cultures

                        ' Change the UI culture of the thread.
                        Thread.CurrentThread.CurrentUICulture = culture

                        ' Print the name of the current language and the web title in the current language.
                        Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title)
                    Next
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Локализация отображаемого текста

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

Каждому элементу интерфейса, настраиваемому пользователями, соответствует пользовательский ресурс — объект SPUserResource, в котором можно хранить определяемые пользователями переводы на все языки, поддерживаемые веб-сайтом. Например, свойство Title объекта SPField содержит отображаемое имя столбца из списка. Это свойство тесно связано с доступным только для чтения свойством TitleResource, возвращающим объект SPUserResource. При получении свойства Title возвращается TitleResource.Value. При установке свойства Title значение присваивается TitleResource.Value. Иными словами, получение и установка свойства Title объекта SPField равнозначны получению и установке свойства Value объекта SPUserResource.

Между тем свойство SPUserResource.Value представляет немалый интерес. Исходный код этого свойства выглядит примерно так:

public string Value 
{
    get
    {
        return GetValueForUICulture(Thread.CurrentThread.CurrentUICulture);
    }
    set
    {
        SetValueForUICulture(Thread.CurrentThread.CurrentUICulture, value);
    }
}

При получении и установке свойства Value инициируется один из двух общих методов класса SPUserResource — GetValueForUICulture или SetValueForUICulture, причем в обоих случаях передается объект CultureInfo, представляющий собой язык текущего потока.

Класс SPUserResource обеспечивает ведение словаря, в котором набор ключей (языков) сопоставляется с набором значений (переводов). Методы GetValueForUICulture и SetValueForUICulture выполняют поиск в словарных записях по заданному языку и затем первый из них получает, а второй устанавливает строковое значение, соответствующее этому языку.

Начальные значения для пользовательских ресурсов

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

Например, когда пользователь создает новый список, строка с названием списка должна быть передана в качестве аргумента в конструктор класса SPList. При инициализации свойства TitleResource объекта SPList та же самая строка названия передается в качестве аргумента в конструктор объекта SPUserResource. Код конструктора SPUserResource создает первоначальную запись в словаре значений объекта, используя язык по умолчанию для веб-сайта как ключ этой записи и строку названия как первоначальное значение.

Это начальное значение становится особенно важным, когда оказывается единственным для пользовательского ресурса. Метод GetValueForUICulture возвращает значение языка по умолчанию всякий раз, когда при вызове метода указывается язык, отсутствующий в словаре ресурса. В результате значение языка по умолчанию используется для любого непереведенного текста.

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

Элементы пользовательского интерфейса, использующие пользовательские ресурсы

Объектная модель SharePoint Foundation содержит шесть классов, которые имеют свойства, возвращающие объект SPUserResource:

В следующей таблице приводится список свойств, возвращающих объекты SPUserResource, и указывается, где используются эти ресурсы.

Свойство

Описание

SPContentType.DescriptionResource

Источник строки, возвращаемой свойством SPContentType.Description и содержащей текст с описанием типа контента.

SPContentType.NameResource

Источник строки, возвращаемой свойством SPContentType.Name и содержащей отображаемое имя типа контента.

SPField.DescriptionResource

Источник строки, возвращаемой свойством SPField.Description и содержащей текст с описанием столбца.

SPField.TitleResource

Источник строки, возвращаемой свойством SPField.Title и содержащей отображаемое имя столбца.

SPList.DescriptionResource

Источник строки, возвращаемой свойством SPList.Description и содержащей текст с описанием списка.

SPList.TitleResource

Источник строки, возвращаемой свойством SPList.Title и содержащей отображаемое имя списка.

SPNavigationNode.TitleResource

Источник строки, возвращаемой свойством SPNavigationNode.Title и содержащей отображаемое имя навигационного узла.

SPUserCustomAction.CommandUIExtensionResource

Источник строки, возвращаемой свойством SPUserCustomAction.CommandUIExtension и содержащей XML-представление настраиваемого действия для ленты.

SPUserCustomAction.DescriptionResource

Источник строки, возвращаемой свойством SPUserCustomAction.Description и содержащей текст с описанием настраиваемого элемента управления уровня сайта, веб-сайта или списка.

SPUserCustomAction.TitleResource

Источник строки, возвращаемой свойством SPUserCustomAction.Title и содержащей отображаемый текст с описанием настраиваемого элемента управления уровня сайта, веб-сайта или списка.

SPWeb.DescriptionResource

Источник строки, возвращаемой свойством SPWeb.Description и содержащей текст с описанием веб-сайта.

SPWeb.TitleResource

Источник строки, возвращаемой свойством SPWeb.Title и содержащей отображаемое имя веб-сайта.

Еще два свойства возвращают коллекции пользовательских ресурсов в объекте SPUserResourceCollection. Класс SPList имеет свойство UserResources, которое содержит объекты SPUserResource, представляющие локализуемые ресурсы, используемые списком, а также связанными с ним полями, типами контента и настраиваемыми действиями, созданными пользователями. Если ни для одного из этих объектов отображаемый текст не настроен, свойство UserResources возвращает пустую коллекцию. Обычно отображаемый текст не определяется для стандартных списков, таких как "Извещения" и "Общие документы", поэтому для них свойство UserResources часто возвращает пустые коллекции.

Свойство UserResources класса SPWeb выполняет аналогичные функции, возвращая коллекцию объектов SPUserResource, которые представляют локализуемые ресурсы, используемые веб-сайтом, а также связанными с ним столбцами сайта, типами контента, узлами навигации и настраиваемыми действиями, созданными пользователями. Объекты, возвращаемые в коллекции, представляют только отображаемый текст, настроенный пользователями веб-сайта (в том числе его разработчиками и администраторами).

Смешанные языки

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

Смешанные языки могут также появляться в связи с некоторыми встроенными элементами пользовательского интерфейса. Сообщения об ошибках, уведомления и некоторые диалоговые окна могут отображаться не на текущем языке интерфейса. Дело в том, что в SharePoint Foundation используется ряд вспомогательных технологий (в число которых входят Microsoft .NET Framework, Windows Workflow Foundation, Microsoft ASP.NET), часть из которых на некоторые языки не локализована. Если элемент пользовательского интерфейса, сформированный такой технологией, не локализован на язык, указанный для сайта его владельцем, он отображается на языке, вместе с которым эта технология была установлена (т. е. на ее языке сборки).

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

Добавление переводов к пользовательским ресурсам

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

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

Операцию экспорта можно инициировать из пользовательского интерфейса со страницы Экспорт переводов (_layouts/exporttranslations.aspx). Сделанные переводы можно импортировать со страницы Импорт переводов (_layouts/importtranslations.aspx). Можно также написать код, выполняющий обе операции. Этот код может вызывать метод ExportUserResources класса SPWeb и сохранять результат в файле ресурсов. Переведенные строки можно импортировать с помощью метода ImportUserResources. В документации к этим методам приводятся примеры кода.

С точки зрения разработчика было бы предпочтительнее выполнить перевод заранее, до развертывания нового компонента на многоязычном веб-сайте. Можно создать файлы ресурсов для конкретных языков, указать их в коде Collaborative Application Markup Language (CAML), упаковать их в решение SharePoint и развернуть на веб-сайте или в семействе веб-сайтов. После этого файлы ресурсов могут использоваться в SharePoint Foundation для заполнения объектов SPUserResource, создаваемых компонентом. Дополнительные сведения см. в статье, посвященной локализации решений SharePoint.

Разрешение записи изменений поверх переводов

На странице Параметры языка (_layouts/muisetng.aspx) владелец сайта может выбрать режим, в котором при внесении изменений на языке по умолчанию имеющиеся переводы будут переписываться на альтернативных языках. При установке переключателя на этой странице в положение Да или Нет свойству OverwriteTranslationsOnChange класса SPWeb присваивается значение true или false. По умолчанию устанавливается false (Нет в пользовательском интерфейсе).

Если свойству OverwriteTranslationsOnChange присвоено значение true (Да в пользовательском интерфейсе) и, например, пользователь, работающий на языке по умолчанию, изменит текст заголовка столбца списка, произойдет автоматический сброс всех значений свойства TitleResource, являющегося источником этого заголовка. Существующие переводы на альтернативные языки будут перезаписаны новым текстом на языке по умолчанию. Иными словами, у текста больше не будет переводов.

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

Поэтому на практике все сводится к выбору между более понятным текстом (вариант Нет) и более правильным (вариант Да).

См. также

Задачи

Пошаговое руководство. Локализация веб-части

Пошаговое руководство. Локализация столбцов, типов контента и списков

Ссылка

SupportsMultilingualUI

SPWeb.IsMultilingual

SPWeb.Language

Thread.CurrentUICulture