如何:对 Excel 解决方案进行本地化
更新:2007 年 11 月
适用于 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
本地化主要涉及翻译应用程序的用户界面。不是将字符串硬编码到应用程序中,而应将这些字符串存储在单独的文件中。可以将 Microsoft Office Excel 用户界面元素的字符串存储在项目的默认程序集资源文件中。此文件在 Visual Basic 项目中名为 MyResources.resx,而在 C# 项目中名为 Resources.resx。这样就可以将资源文件的副本翻译为多种语言。
说明: |
---|
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置。 |
在资源文件中存储文本
向资源文件添加文本
打开要本地化的 Excel 项目。
在“项目”菜单上,选择“<Projectname> 属性”。
随即打开“项目设计器”。
在“项目设计器”中单击“资源”,打开“资源”窗格。
在“类别”组合框中选择“字符串”。
对于要本地化的每个字符串,在“名称”列中添加一个唯一标识符,并将要本地化的文本添加到对应的“值”列中。例如:
名称
值
ListCreateUnscheduledOrder
create unscheduled order
说明: 可以使用“注释”列为翻译人员提供注解或说明。
从资源文件检索文本
将每个字符串都添加到资源文件后,可在运行时加载这些字符串。
使用资源文件向单元格添加值。
在 Sheet1 的 Startup 事件处理程序中,向单元格 A1 添加一个 NamedRange 控件。
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
Microsoft.Office.Tools.Excel.NamedRange namedRange1 = this.Controls.AddNamedRange(this.Range["A1", missing], "namedRange1");
从资源文件分配值。
namedRange1.Value2 = My.Resources.ListCreateUnscheduledOrder
namedRange1.Value2 = Properties.Resources.ListCreateUnscheduledOrder;
对资源文件进行本地化
对资源文件进行本地化
复制资源文件,并使用目标语言的区域性代码对其命名。例如,若要创建一个要本地化为日语的文件,请复制 Resources.resx 文件并将其命名为 Resources.ja.resx。
将此资源文件翻译为要支持的语言。例如,将 Resources.ja.resx 中的字符串翻译为日语。
将翻译后的资源文件添加到项目中,这样项目系统就能将资源文件编译进附属程序集中。
根据 Office 用户界面语言加载资源
Microsoft .NET Framework 根据 Microsoft Windows 用户界面语言加载资源。不过,通常基于 Office 的解决方案是为根据 Office 用户界面 (UI) 语言加载资源而编写的。下面的第一个示例演示如何加载与 Office UI 语言匹配的资源,而不考虑安装的是哪一版本的 Office。第二个示例演示如何同时重写 Office UI 语言和默认的 Microsoft .NET Framework 行为。
根据 Office 加载资源(多语言版 Office)
将以下代码添加到工作簿和每个工作表的 Startup 事件处理程序中。
System.Threading.Thread.CurrentThread.CurrentUICulture = _ New System.Globalization.CultureInfo( _ Application.LanguageSettings.LanguageID( _ Office.MsoAppLanguageID.msoLanguageIDUI))
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( Application.LanguageSettings.get_LanguageID( Office.MsoAppLanguageID.msoLanguageIDUI));
如果没有多语言版 Office,通过将匹配的区域性 ID 分配给 CultureInfo 对象的 CurrentCulture 属性(或当前线程的此属性),可以强制加载资源。这一点非常有用,可以用于进行调试,也可以添加到自定义代码中以允许用户选择加载哪些资源。
根据 Office 加载资源(使用区域性 ID)
将以下代码添加到工作簿和每个工作表的 Startup 事件处理程序中。此示例传递“德语(德国)”的区域性 ID。有关区域性 ID 的列表,请参见 CultureInfo。
System.Threading.Thread.CurrentThread.CurrentUICulture = _ New System.Globalization.CultureInfo("de")
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de");
对自定义控件进行本地化
可以向 Visual Studio Tools for Office 解决方案中的操作窗格添加自定义控件。可以利用对 Windows 窗体进行本地化时所用的方式实现对用户控件和操作窗格控件的本地化。有关更多信息,请参见演练:本地化 Windows 窗体。
实现自定义控件的本地化
从“视图”菜单中选择“属性窗口”。
在设计器中选择用户控件或操作窗格控件,然后将“Localizable”属性更改为 true。