本地化 SharePoint 解决方案

准备应用程序以使其能够在全球范围内使用的过程称为本地化。 本地化是将资源翻译为特定的区域性。 有关更多信息,请参见对应用程序进行全球化和本地化。 本主题概述如何本地化 SharePoint 解决方案。

若要本地化解决方案,您将从代码中移除硬编码的字符串,并将它们提取到资源文件中。 资源文件是一种基于 XML 的文件,扩展名为 .resx。 资源文件包含解决方案中使用的字符串的翻译版本。 有关更多信息,请参见 Resources in Applications(应用程序中的资源)。

提示

仅向 SharePoint 解决方案资源文件中添加字符串资源。 尽管利用资源编辑器可以添加非字符串资源,但非字符串资源不会部署到 SharePoint。

资源文件

共有三种资源文件:默认资源文件、非特定语言的资源文件以及特定语言的资源文件。

资源文件类型

说明

默认值

也称为回退资源,默认资源文件包含针对默认区域性(例如英语)本地化的字符串。 如果找不到指定语言的本地化资源文件,则会使用它们。 默认资源没有单独的文件,它们存储在主应用程序程序集中。

非特定语言

一种资源文件,其中包含针对某种语言(但不是特定区域性)本地化的字符串。 例如,“fr”表示法语。

特定语言

一种资源文件,其中包含针对某种语言和区域性本地化的字符串。 例如,“fr-CA”表示加拿大法语。

有关更多信息,请参见用于本地化的资源的分层组织

若要在 Visual Studio SharePoint 项目中指定默认资源文件,请在添加资源文件时,在**“添加资源”对话框的区域性列表中选择“固定语言(固定国家/地区)”**。 

本地化 Visual Studio SharePoint 解决方案

在本地化解决方案时,您应考虑解决方案向用户显示的所有文本信息。 必须翻译信息性消息、错误消息和 UI 字符串,并将这些翻译放在资源文件中。

资源文件中的每个字符串都有唯一的标识符。 请为每个资源文件中的翻译字符串使用同一标识符。 例如,如果“String1”是默认资源文件中第一个字符串的标识符,请为特定语言的资源文件中的第一个字符串使用同一标识符。

在 Visual Studio SharePoint 应用程序中,您通常本地化以下三个区域:功能、ASPX 页面标记和代码。 为便于阐释,以下各节假定您有一个要本地化为德语和日语的 SharePoint 解决方案。 默认语言为英语。

本地化功能

若要本地化功能,您必须将功能硬编码的标题和说明替换为一个表达式,该表达式引用本地化的资源文件中的已翻译标题和字符串。 在 Visual Studio 的**“功能设计器”**中进行此更改。 有关更多信息,请参见如何:本地化功能

为了将英语功能本地化为德语和日语,您将向项目中添加三个资源文件项目项:分别用于英语、德语和日语。 无法使用功能资源文件来本地化 ASPX 标记或代码;这两者需要单独的资源文件。

创建功能资源文件后,请向其中添加翻译的字符串。 使用以下格式的表达式访问本地化的字符串:

$Resources:String ID

Visual Studio 中的功能资源始终命名为 Resources。 如果选择某种不是固定语言的语言,则会向资源文件名中添加区域性 ID。例如,如果添加固定语言(默认)功能资源文件,则该文件名为 Resources.resx。 如果通过选择日语的区域性(日本)来添加特定语言的功能资源,则文件名为 Resources.ja-JP.resx。 功能资源文件名是自动指派的,无法进行更改。

功能资源的范围仅限于向其中添加这些资源的功能。 若要创建可由解决方案中的任何功能或元素文件使用的资源,请添加**“全局资源文件”**项目项,而不是功能资源文件。 **“全局资源文件”项目项位于“添加新项”对话框的“SharePoint”下的“2010”**文件夹中。 全局资源文件部署到 SharePoint 根文件夹的 \Resources 文件夹。

有关更多信息,请参见演练:本地化 Visual Studio SharePoint 应用程序

本地化 ASPX 页面标记

为了本地化 ASP.NET 页面,将向项目中添加三个资源文件项目项,分别用于英语、德语和日语。如果您不必本地化除标记之外的代码,则可以改为添加全局资源文件。

为默认语言资源文件提供一个名称。 为本地化的资源文件指定附加有特定语言的区域性 ID 的相同名称。 例如,用于德语的 MyAppResources.de-DE.resx 和用于日语的 MyAppResources.ja-JP.resx。

将每个资源文件的**“部署类型”属性设置为“AppGlobalResource”**。 这样会使资源文件部署到 App_GlobalResources 文件夹,在该文件夹中,这些资源文件可用于解决方案中的所有 ASPX 页面和控件。 App_GlobalResources 文件夹位于 C:\inetpub\wwwroot\wss\VirtualDirectories\<端口号>\App_GlobalResources 中。

提示

如果使用非全局资源文件,请将这些文件移到项目项文件夹中,以启用“部署类型”属性和其他特定于 SharePoint 的属性。

ASPX 标记资源文件也可用于本地化代码。 如果要使用资源来本地化除 ASPX 标记外的代码,请将每个文件的“生成操作”属性设置保留为“嵌入的资源”,以便将资源编译为附属程序集。 不过,如果您仅使用资源文件来本地化标记,则可以选择将“生成操作”更改为“内容”以防止将文件编译为主应用程序程序集。

将 ASPX 页面和控件标记中的所有硬编码属性字符串替换为以下格式的表达式:

<asp:<class> runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />

例如:

<asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="<%$Resources:Resource1,String7%>"></asp:Button>

对于文本形式的 ASPX,请使用以下格式的表达式:

<asp:literal ID="<ID>" runat="server" Text="<%$Resources:<Resource File Name>, <String ID>%>" />

例如:

<asp:literal ID="Literal1" runat="server" Text="<%$Resources:Resource1, String9%>" />

有关更多信息,请参见如何:本地化 ASPX 标记演练:本地化 Visual Studio SharePoint 应用程序

本地化代码

除了本地化功能字符串和 ASP.NET 标记外,您还必须本地化解决方案代码中出现的消息字符串和错误字符串。 本地化的信息性消息和错误消息包含在附属程序集中。附属程序集包含用户可见的字符串,例如 UI 文本和像异常这样的输出消息。

Visual Studio 使用标准 .NET Framework 集散模型。 集线器(或主程序程序集)包含默认语言资源。 轮辐(或附属程序集)包含特定语言的资源。 有关更多信息,请参见 Packaging and Deploying Resources(打包和部署资源)。 附属程序集是从资源 (.resx) 文件编译的。 当您将特定语言的资源文件添加到项目和解决方案包时,Visual Studio 会将资源文件编译为名为“项目名称.resources.dll”的附属程序集。

与 ASPX 标记一样,通过向项目中添加单独的资源文件项目项来本地化 SharePoint 应用程序代码;一个表示默认语言,另一个表示每种本地化的语言。 不过,如上所述,如果您已经有用于本地化 ASPX 标记的资源文件,则可以重用它们来本地化代码。 如果需要创建资源文件,请为默认语言资源文件指定附加有 .resx 扩展名的所选名称。 为本地化的资源文件指定附加有特定语言的区域性 ID 的相同名称。 将每个资源文件的“生成操作”属性设置为“嵌入的资源”,以便能够创建附属资源程序集。

若要创建附属程序集,请生成项目,然后通过**“包设计器”“高级”**选项卡添加文件作为附加程序集。 在添加程序集时,请在位置路径前面添加区域性 ID 文件夹,例如 de-DE\项目名称.resources.dll。 这样将允许包包含具有相同名称的文件。

在代码中,使用以下语法将硬编码的字符串替换为对 GetGlobalResourceObject 方法的调用:

HttpContext.GetGlobalResourceObject("<Resource File Name>", "<String ID>")

有关更多信息,请参见如何:本地化代码演练:本地化 Visual Studio SharePoint 应用程序

Web 部件代码本地化

Web 部件包括自定义属性编辑器功能,其中包括使用硬编码字符串的代码特性,例如 WebDisplayName、Category 和 WebDescription。 若要替换这些特性的字符串值,请创建一个派生自特性的类的单独的类。 在这些类中,设置特性的属性。 特性属性依赖于基类。 例如,WebDisplayName 特性属性为 DisplayNameValue,WebDescription 特性属性为 DescriptionValue。

在派生的类中,引用资源文件和 ResourceManager 对象中的字符串 ID 以获取该字符串 ID 的本地化值。 将此值返回到属性编辑器特性。 有关更多信息,请参见演练:本地化 Visual Studio SharePoint 应用程序

请参见

任务

如何:添加资源文件

如何:使用资源文件指定本地化名称、属性和权限

其他资源

如何:本地化功能

如何:本地化 ASPX 标记

如何:本地化代码

演练:本地化 Visual Studio SharePoint 应用程序