SharePoint 2010多语言UI,以及开发人员需要注意的

简介:

SharePoint 2010支持同一个网站呈现出不同语言的UI。比如,一个中文版的SharePoint 2010系统,管理员可以在服务器上安装SharePoint 2010英文语言包,然后在网站设置的“语言设置”中,选择“英语”为备用语言。

image

然后用户就可以随时使用页面右上角的用户菜单,将当前网站的显示UI,在多个语言之间进行切换。

image

如果你尝试一下这个功能,就会发现一个有趣的现象。对于SharePoint 2010的内置列表和文档库,它们的名称,以及所有字段的名称,都会根据当前的UI语言,显示成不同的语言文字。比如,这是“共享文档”在中文UI语言下所显示的样子:

image

如果这时将UI切换成英文,那么它就会变成:

image

嗯,就如你所见,无论是文档库的名称(“共享文档”->“Shared Documents”),还是字段的名称(“类型”->“Type”),它们都可以很好的适应当前的语言UI,自动显示成不同语言的文本。

那么,对于自定义的列表和文档库,它们也会具备这种能力吗?不用试就知道,除非我们进行额外的处理,SharePoint 2010不可能知道应该如何将自定义列表的名称和字段名称,显示成不同语言的文本。

假设我们有一个自定义列表,“公司客户”,它包含有一个自定义字段,“客户地址”,此列表在中文UI下显示成这样:

image

如果希望“公司客户”列表具备多语言显示能力,可以通过如下的代码实现:

image

上面代码的作用,就是将列表名称的英文版本(en-US),设置为“Company Customers”,并且将“客户地址”字段的英文版本,设置为“Customer’s Address”。下面的截图就是运行了上面的代码后,这个列表在英文UI下的显示:

image

通过代码你应该看出来了,SPList和SPField都有一个TitleResource属性,通过这个属性,我们可以获取或设置在不同语言中,列表或字段的Title值。那么如果在代码中直接获取或设置SPList和SPField的Title属性,会怎么样呢?答案就是,这时SharePoint对象模型会根据当前代码所在线程的UI Culture,来自动获取不同语言版本的Title值。下面的代码就示范了这个用法:

image

两次调用SPList.Title属性,由于分别为当前线程设置了不同的UI Culture,Title属性就会返回不同的值。

由于这个特性的存在,在某些事情,如果没有考虑周全,就会在你的自定义代码中产生一些bug。让我们想象这样的一个场景:你的SharePoint 2010是中文版,但是SharePoint服务器上的Windows Server是英文版本。你需要写一些代码,为某个列表添加一个字段:“QQ号码”。你非常清楚字段的显示名称(Title)和内部名称(InternalName)的区别,你不想SharePoint 2010自动为你的新字段生成一个稀奇古怪的内部名称,于是聪明的你决定这样来创建这个字段:

image

在你的设想中,这个新字段的显示名称将是“QQ号码”,它的内部名称将是“QQNumber”。于是,你兴高采烈的在一个Console程序中加上了如上代码,运行了它,然后惊奇的发现这个新字段的显示名称居然仍然显示为“QQNumber”:

image

发生错误的原因在于,代码运行在一个Console程序中,也就是说,它运行在SharePoint Context之外。在运行代码的线程中,UI Culture是英文(因为Windows Server是英文版),所以虽然代码通过SPField.Title属性将字段显示名称设置为“QQ号码”,但实际上它设置的是这个字段的英文版本显示名称。于是,在中文版本的SharePoint 2010网站上,这个字段的显示名称仍然保持为“QQNumber”。同时由于你的代码的作用,如果以后有人将UI切换成英文,会惊奇的发现这个字段居然在英文UI下显示成“QQ号码”。

正确的创建这个字段的代码应该是:

image

在第一行,代码将当前线程的UI Culture设置为了网站的UI Culture(SPWeb.UICulture),这样无论这个代码是在什么语言版本的Windows Server中运行,都会得到我们想要的结果。如果你的代码会运行在SharePoint Context之外,这一点非常重要。





本文转自 kaneb0y 51CTO博客,原文链接:http://blog.51cto.com/kaneboy/499161,如需转载请自行联系原作者

目录
相关文章
|
XML JSON 自然语言处理
SAP UI5 初学者教程之八 - 多语言的支持试读版
SAP UI5 初学者教程之八 - 多语言的支持试读版
110 0
SAP UI5 初学者教程之八 - 多语言的支持试读版
|
自然语言处理 Java API
SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
|
XML JSON 自然语言处理
SAP UI5 初学者教程之八 - 多语言的支持试读版
教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 的引导过程 Bootstrap SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 SAP UI5 初学者教程之四:XML 视图初探 SAP UI5 初学者教程之五:视图控制器初探 SAP UI5 初学者教程之六 - 了解 SAP UI5 的模块(Module)概念 SAP UI5 初学者教程之七 - JSON 模型初探
SAP UI5 初学者教程之八 - 多语言的支持试读版
|
自然语言处理
SAP UI5 manifest.json 和 i18n 多语言文本的解析逻辑
SAP UI5 manifest.json 和 i18n 多语言文本的解析逻辑
SAP UI5 manifest.json 和 i18n 多语言文本的解析逻辑
|
自然语言处理 Java API
SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
SAP UI5 对多语言的支持特性如下: The language codes according to the de facto standard BCP-47, which are used by most browsers for language identification. As of JDK 1.7 they are also supported by the Java locale class. 目前大多数浏览器都支持了事实上的标准,BCP-47 里定义的 language code,用来做语言识别。例子:de, en-US, zh-Hans-CN
SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
|
4月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
4月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
4月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
|
4月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版