SharePoint online Multilingual support - Development(2)
博客地址:http://blog.csdn.net/FoxDave
上一节讲了如何通过Code的方式设置Site和List级别的国际化,本节介绍一下如何设置Content type和Site column级别的国际化。废话不多说了,还是以代码的方式带大家go through这个过程。
Content type和Site column级别的国际化
跟之前一样,为了测试咱们先创建专用的Site column和Content type,需要把Site column添加到Content type,所以先创建一个Site column。
创建Site column的代码如下所示:
- private static void CreateSiteColumn(ClientContext cc, Web web)
- {
- // Add site column to the content type if it's not there...
- FieldCollection fields = web.Fields;
- cc.Load(fields);
- cc.ExecuteQuery();
- foreach (var item in fields)
- {
- if (item.InternalName == "ContosoString")
- return;
- }
- string FieldAsXML = @"<Field ID='{4F34B2ED-9CFF-4900-B091-4C0033F89944}'
- Name='ContosoString'
- DisplayName='Contoso String'
- Type='Text'
- Hidden='False'
- Group='Contoso Site Columns'
- Description='Contoso Text Field' />";
- Field fld = fields.AddFieldAsXml(FieldAsXML, true, AddFieldOptions.DefaultValue);
- cc.Load(fields);
- cc.Load(fld);
- cc.ExecuteQuery();
- }
上面的代码创建了一个名为ContosoString的Site column,并指定ID为4F34B2ED-9CFF-4900-B091-4C0033F89944。接下来咱们创建Content type,代码如下:
- private static void CreateContentTypeIfDoesNotExist(ClientContext cc, Web web)
- {
- ContentTypeCollection contentTypes = web.ContentTypes;
- cc.Load(contentTypes);
- cc.ExecuteQuery();
- foreach (var item in contentTypes)
- {
- if (item.StringId == "0x0101009189AB5D3D2647B580F011DA2F356FB2")
- return;
- }
- // Create a Content Type Information object
- ContentTypeCreationInformation newCt = new ContentTypeCreationInformation();
- // Set the name for the content type
- newCt.Name = "Contoso Document";
- //Inherit from oob document - 0x0101 and assign
- newCt.Id = "0x0101009189AB5D3D2647B580F011DA2F356FB2";
- // Set content type to be avaialble from specific group
- newCt.Group = "Contoso Content Types";
- // Create the content type
- ContentType myContentType = contentTypes.Add(newCt);
- cc.ExecuteQuery();
- }
上面的代码创建了名为Consoto Document的Content type,指定了ID为0x0101009189AB5D3D2647B580F011DA2F356FB2。接下来咱们需要将新建的Site column添加到新建的Content type中,代码如下:
- private static void AddSiteColumnToContentType(ClientContext cc, Web web)
- {
- ContentTypeCollection contentTypes = web.ContentTypes;
- cc.Load(contentTypes);
- cc.ExecuteQuery();
- ContentType myContentType = contentTypes.GetById("0x0101009189AB5D3D2647B580F011DA2F356FB2");
- cc.Load(myContentType);
- cc.ExecuteQuery();
- FieldCollection fields = web.Fields;
- Field fld = fields.GetByInternalNameOrTitle("ContosoString");
- cc.Load(fields);
- cc.Load(fld);
- cc.ExecuteQuery();
- FieldLinkCollection refFields = myContentType.FieldLinks;
- cc.Load(refFields);
- cc.ExecuteQuery();
- foreach (var item in refFields)
- {
- if (item.Name == "ContosoString")
- return;
- }
- // ref does nt
- FieldLinkCreationInformation link = new FieldLinkCreationInformation();
- link.Field = fld;
- myContentType.FieldLinks.Add(link);
- myContentType.Update(true);
- 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();
- // Title of the content type
- myContentType.NameResource.SetValueForUICulture("en-US",
- "Contoso Document");
- myContentType.NameResource.SetValueForUICulture("fi-FI",
- "Contoso Dokumentti");
- myContentType.NameResource.SetValueForUICulture("fr-FR",
- "Contoso Document (FR)");
- // Description of the content type
- myContentType.DescriptionResource.SetValueForUICulture("en-US",
- "This is the Contoso Document.");
- myContentType.DescriptionResource.SetValueForUICulture("fi-FI",
- "Tämä on geneerinen Contoso dokumentti.");
- myContentType.DescriptionResource.SetValueForUICulture("fr-FR",
- "French Contoso document.");
- myContentType.Update(true);
- cc.ExecuteQuery();
- // Do localization also for the site column
- FieldCollection fields = web.Fields;
- Field fld = fields.GetByInternalNameOrTitle("ContosoString");
- fld.TitleResource.SetValueForUICulture("en-US", "Contoso String");
- fld.TitleResource.SetValueForUICulture("fi-FI", "Contoso Teksti");
- fld.TitleResource.SetValueForUICulture("fr-FR", "Contoso French String");
- // Description entry
- fld.DescriptionResource.SetValueForUICulture("en-US",
- "Used to store Contoso specific metadata.");
- fld.DescriptionResource.SetValueForUICulture("fi-FI",
- "Tää on niiku Contoso metadatalle.");
- fld.DescriptionResource.SetValueForUICulture("fr-FR",
- "French Description Goes here");
- fld.UpdateAndPushChanges(true);
- cc.ExecuteQuery();
- }
跟Site和List级别同理,就不做过多解释了。
原文地址:https://blogs.msdn.microsoft.com/vesku/2014/03/20/office365-multilingual-content-types-site-columns-and-other-site-elements/
SharePoint online Multilingual support - Development(2)的更多相关文章
- SharePoint online Multilingual support - Development(1)
博客地址:http://blog.csdn.net/FoxDave 上一节讲了SharePoint Online网站多语言的实现原理机制,本节主要从编程的角度来谈一下如何进行相关的设置. 下面列出 ...
- SharePoint online Multilingual support - Settings
博客地址:http://blog.csdn.net/FoxDave This post will talk about how to enable sharepoint online site mul ...
- Multi-lingual Support
Multi-lingual Support One problem with dealing with non-Latin characters programmatically is that, f ...
- SharePoint Security and Permission System Overview
转:http://www.sharepointblues.com/2010/09/01/sharepoint-security-and-permission-system-overview/ Shar ...
- 10 Skills Every SharePoint Developer Needs
10 Skills Every SharePoint Developer Needs(原文) This blog post guides you through the essential skill ...
- SharePoint 2013 搜索功能,列表项目不能完全被索引
描述 最近一个站点,需要开启搜索功能,然后创建内容源,开始爬网,发现列表里只有一部分被索引,很多项目没有被索引,甚是奇怪,如下图(其实列表里有80几条项目). 首先爬网账号是系统账号.服务器管理员,所 ...
- Device Channels in SharePoint 2013
[FROM:http://blog.mastykarz.nl/device-channels-sharepoint-2013/] One of the new features of SharePoi ...
- INCOIN Importing Multilingual Items (Doc ID 278126.1)
APPLIES TO: Oracle Inventory Management - Version: 11.5.9 to 11.5.10.CU2 - Release: 11.5 to 11.5 GOA ...
- [IT学习]微软如何做网站内容治理
How Microsoft does SharePoint Governance for their internal platform english sources from:http://www ...
随机推荐
- You Don't Know JS: Scope & Closures (第2章: Lexical Scope)
2种主要的models for how scope work. 最普遍的是Lexical Scope. 另一种 Dynamic Scope.(在Appendix a中介绍.和Lexical Scope ...
- codeforces708b// Recover the String //AIM Tech Round 3 (Div. 1)
题意:有一个01组成的串,告知所有长度为2的子序列中,即00,01,10,11,的个数a,b,c,d.输出一种可能的串. 先求串中0,1的数目x,y. 首先,如果00的个数a不是0的话,设串中有x个0 ...
- 2019/01/17 基于windows使用fabric将gitlab的文件远程同步到服务器(git)
觉得django项目把本地更新push到gitlab,再执行fabric脚本从gitlab更新服务器项目挺方便的,当然从本地直接到服务器就比较灵活. 2019/01/17 基于windows使用fab ...
- php 常用设计模式demo
<?php//__get()//__set()当对象中属性不存在时调用该魔术方法//__call()当对象中方法不存在时//__callStatic()静态方法//__string()当对象不能 ...
- 欧拉函数 牛客寒假1 小a与黄金街道
题目链接 分析:这题用到了欧拉函数, 欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 详细可以看看这篇博文https://www.cnblogs.com/linyujun/p ...
- Jupyter Notebook入门教程
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- springboot项目线程使用
下面是一个demo: public class TestThread { private static int nThreads =Runtime.getRuntime().availableProc ...
- [转]2017年最具价值的十大开源项目!GitHub 年度报告~
<GitHub 2017 年度报告>GitHub 每年都会在年度盛会中推出数据报告,其中列出了一些年度的数据,包括其网站中最受欢迎的编程语言.开源项目等.那么今年哪些开源项目最具价值呢?我 ...
- <Closing connections idle longer than 60000 MILLISECONDS> <Closing expired connections>
日志信息如下: 2017-07-05 18:28:34 -18705 [idle_connection_reaper] DEBUG - Closing expired connections 20 ...
- NOIP2006能量项链
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...