在 Office 365 示例加载项中使用本地化功能

Core.CreateContentTypes 示例演示如何在网站、列表、内容类型和网站栏中使用 Office 365 的本地化功能。 此代码示例使用控制台应用程序执行以下操作:

  • 创建内容类型、网站栏和列表,并将网站栏与内容类型关联。
  • 本地化内容类型、网站列、列表和用户提供的网站。

注意

本文介绍的本地化功能仅适用于 Office 365。 若要了解 Office 365 专用或 SharePoint Server 本地中提供的本地化功能,请参阅本地化 SharePoint 外接程序本地化 SharePoint 解决方案

准备工作

若要开始,请从 GitHub 上的 Office 365 开发人员模式和做法项目下载 Core.CreateContentTypes 示例外接程序。

运行此代码示例之前,请完成以下步骤。

在你的网站上配置语言设置

  1. 在你的团队网站上,选择“设置”>“网站设置”。

  2. 在“网站管理”中,选择“语言设置”。

  3. “语言设置”页的“备用语言”中,选择你的网站应支持的备用语言。 例如,可以选择“芬兰语”和“法语”,如下图所示。

    显示网站的语言设置的屏幕截图。

  4. 选择“确定”

设置用户配置文件页上的显示语言

  1. 在 Office 365 网站顶部,选择你的配置文件图片,然后选择“关于我”

    突出显示了“关于我”的用户配置文件页面屏幕截图

  2. 在“关于我”页上,选择“编辑你的配置文件”

  3. 选择“...”(额外选项),然后选择“语言和地区”。

  4. 在“我的显示语言”中,选择与你使用“选择新语言”列表中设置的语言相似的新语言,然后选择“添加”。 例如,选择“芬兰语”和“法语”,如下图所示。 可以通过选择向上和向下箭头上下移动首选语言。

    用户配置文件页面的“语言”和“区域”部分的屏幕截图

  5. 选择“全部保存并关闭”

注意

网站可能需要几分钟的时间,才能以选定的一种或多种语言呈现。

运行 Core.CreateContentTypes 示例应用

运行本代码示例时,会显示控制台应用程序,如下图所示。 需要提供本地化的网站和 Office 365 管理员的凭据。

Core.CreateContentTypes 控制台应用程序的屏幕截图

此控制台应用程序运行时,Program.cs 中的 Main 方法执行以下任务:

  • 调用 CreateContentTypeIfDoesNotExist 方法以创建名为 Contoso Document 的内容类型。

  • 调用 CreateSiteColumn 方法以创建名为 Contoso String 的网站栏。

  • 调用 AddSiteColumnToContentType 方法,将 Contoso String 网站栏链接到 Contoso Document 内容类型。

  • 调用 CreateCustomList 方法以创建名为 MyList 的新列表。

然后,Main 方法会调用 LocalizeSiteAndListLocalizeContentTypeAndField 方法。

LocalizeSiteAndList 方法将演示如何执行以下操作:

  • 使用 Web 对象的 TitleResourceDescriptionResource 属性上的 SetValueForUICulture 方法,为网站标题和说明设置不同的本地化值。

  • 使用 Web 对象的 TitleResourceDescriptionResource 属性上的 SetValueForUICulture 方法,为网站标题和说明设置不同的本地化值。

LocalizeContentTypeAndField 方法介绍如何执行以下操作:

  • 使用 ContentType 对象的 NameResourceDescriptionResource 属性上的 SetValueForUICulture 方法,为内容类型名称和说明设置不同的本地化值。

  • 使用 Field 对象的 TitleResourceDescriptionResource 属性上的 SetValueForUICulture 方法,为网站标题和说明设置不同的本地化值。

注意

本文中的代码按原样提供,不提供任何明示或暗示的担保,包括对特定用途适用性、适销性或不侵权的默示担保。

private static void LocalizeSiteAndList(ClientContext cc, Web web)
        {
            // Localize the site title.
            web.TitleResource.SetValueForUICulture("en-US", "Hello World");
            web.TitleResource.SetValueForUICulture("fi-FI", "Hello World - Finnish");
            web.TitleResource.SetValueForUICulture("fr-FR", "Hello World - French");
            // Localize the site description.
            web.DescriptionResource.SetValueForUICulture("en-US", "Hello World site sample");
            web.DescriptionResource.SetValueForUICulture("fi-FI", " Hello World site sample - Finnish");
            web.DescriptionResource.SetValueForUICulture("fr-FR", " Hello World site sample - French");
            web.Update();
            cc.ExecuteQuery();

            // Localize the custom list that was created previously.
            List list = cc.Web.Lists.GetByTitle("MyList");
            cc.Load(list);
            cc.ExecuteQuery();
            // Localize the list title.
            list.TitleResource.SetValueForUICulture("en-US", "Hello World");
            list.TitleResource.SetValueForUICulture("fi-FI", "Hello World - Finnish");
            list.TitleResource.SetValueForUICulture("fr-FR", " Hello World - French");
            // Localize the list description.
            list.DescriptionResource.SetValueForUICulture("en-US", "This example localizes a list using CSOM.");
            list.DescriptionResource.SetValueForUICulture("fi-FI", "This example localizes a list using CSOM - Finnish.");
            list.DescriptionResource.SetValueForUICulture("fr-FR", "This example localizes a list using CSOM - French.");
            list.Update();
            cc.ExecuteQuery();
        }

private static void LocalizeContentTypeAndField(ClientContext cc, Web web)
        {
            ContentTypeCollection contentTypes = web.ContentTypes;
            ContentType myContentType = contentTypes.GetById("0x0101009189AB5D3D2647B580F011DA2F356FB2");
            cc.Load(contentTypes);
            cc.Load(myContentType);
            cc.ExecuteQuery();
            // Localize content type name.
            myContentType.NameResource.SetValueForUICulture("en-US", "Contoso Document");
            myContentType.NameResource.SetValueForUICulture("fi-FI", "Contoso Document - Finnish");
            myContentType.NameResource.SetValueForUICulture("fr-FR", "Contoso Document - French");
            // Localize content type description.
            myContentType.DescriptionResource.SetValueForUICulture("en-US", "This is the Contoso Document.");
            myContentType.DescriptionResource.SetValueForUICulture("fi-FI", " This is the Contoso Document - Finnish.");
            myContentType.DescriptionResource.SetValueForUICulture("fr-FR", " This is the Contoso Document - French.");
            myContentType.Update(true);
            cc.ExecuteQuery();

            // Localize the site column.
            FieldCollection fields = web.Fields;
            Field fld = fields.GetByInternalNameOrTitle("ContosoString");
            // Localize site column title.
            fld.TitleResource.SetValueForUICulture("en-US", "Contoso String");
            fld.TitleResource.SetValueForUICulture("fi-FI", "Contoso String - Finnish");
            fld.TitleResource.SetValueForUICulture("fr-FR", "Contoso String - French");
            // Localize site column description.
            fld.DescriptionResource.SetValueForUICulture("en-US", "Used to store Contoso specific metadata.");
            fld.DescriptionResource.SetValueForUICulture("fi-FI", "Used to store Contoso specific metadata - Finnish.");
            fld.DescriptionResource.SetValueForUICulture("fr-FR", "Used to store Contoso specific metadata - French.");
            fld.UpdateAndPushChanges(true);
            cc.ExecuteQuery();
        }

如下图所示,使用 LocalizeSiteAndList 方法进行设置后,网站显示自定义法语标题“Hello World - 法语”

更新后的自定义页标题的屏幕截图

另请参阅