在 Office 365 示例加载项中使用本地化功能
Core.CreateContentTypes 示例演示如何在网站、列表、内容类型和网站栏中使用 Office 365 的本地化功能。 此代码示例使用控制台应用程序执行以下操作:
- 创建内容类型、网站栏和列表,并将网站栏与内容类型关联。
- 本地化内容类型、网站列、列表和用户提供的网站。
注意
本文介绍的本地化功能仅适用于 Office 365。 若要了解 Office 365 专用或 SharePoint Server 本地中提供的本地化功能,请参阅本地化 SharePoint 外接程序和本地化 SharePoint 解决方案。
准备工作
若要开始,请从 GitHub 上的 Office 365 开发人员模式和做法项目下载 Core.CreateContentTypes 示例外接程序。
运行此代码示例之前,请完成以下步骤。
在你的网站上配置语言设置
在你的团队网站上,选择“设置”>“网站设置”。
在“网站管理”中,选择“语言设置”。
在“语言设置”页的“备用语言”中,选择你的网站应支持的备用语言。 例如,可以选择“芬兰语”和“法语”,如下图所示。
选择“确定”。
设置用户配置文件页上的显示语言
在 Office 365 网站顶部,选择你的配置文件图片,然后选择“关于我”。
在“关于我”页上,选择“编辑你的配置文件”。
选择“...”(额外选项),然后选择“语言和地区”。
在“我的显示语言”中,选择与你使用“选择新语言”列表中设置的语言相似的新语言,然后选择“添加”。 例如,选择“芬兰语”和“法语”,如下图所示。 可以通过选择向上和向下箭头上下移动首选语言。
选择“全部保存并关闭”。
注意
网站可能需要几分钟的时间,才能以选定的一种或多种语言呈现。
运行 Core.CreateContentTypes 示例应用
运行本代码示例时,会显示控制台应用程序,如下图所示。 需要提供本地化的网站和 Office 365 管理员的凭据。
此控制台应用程序运行时,Program.cs 中的 Main 方法执行以下任务:
调用 CreateContentTypeIfDoesNotExist 方法以创建名为 Contoso Document 的内容类型。
调用 CreateSiteColumn 方法以创建名为 Contoso String 的网站栏。
调用 AddSiteColumnToContentType 方法,将 Contoso String 网站栏链接到 Contoso Document 内容类型。
调用 CreateCustomList 方法以创建名为 MyList 的新列表。
然后,Main 方法会调用 LocalizeSiteAndList 和 LocalizeContentTypeAndField 方法。
LocalizeSiteAndList 方法将演示如何执行以下操作:
使用 Web 对象的 TitleResource 和 DescriptionResource 属性上的 SetValueForUICulture 方法,为网站标题和说明设置不同的本地化值。
使用 Web 对象的 TitleResource 和 DescriptionResource 属性上的 SetValueForUICulture 方法,为网站标题和说明设置不同的本地化值。
LocalizeContentTypeAndField 方法介绍如何执行以下操作:
使用 ContentType 对象的 NameResource 和 DescriptionResource 属性上的 SetValueForUICulture 方法,为内容类型名称和说明设置不同的本地化值。
使用 Field 对象的 TitleResource 和 DescriptionResource 属性上的 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 - 法语”。