卫星程序集的自动生成和维护过程






2.20/5 (3投票s)
2006 年 7 月 19 日
8分钟阅读

28071

342
本文讨论了如何在数据库中生成和维护本地化资源,

摘要
本文旨在帮助任何希望在软件产品发布不同语言版本时,能够维护和自动化生成卫星程序集的人。
引言
基于产品开发的公司在进行软件营销时,要求开发的应用程序支持多种语言才能获得良好的市场。在开发具有竞争力的应用程序时,设计方面必须实现国际化支持。每次应用程序发布新语言版本时,都会创建卫星程序集来支持新语言,以便应用程序能在用户界面上正确显示支持语言的文本字符串。卫星程序集包含本地化所需的所有资源。 .NET Framework 中提供了相关工具。本文档将讨论如何维护本地化字符串,以及如何按需自动生成卫星程序集。Resgen.exe 是一个资源文件生成器,是 .NET 中提供的命令行工具,用于生成卫星程序集。资源文件生成器会将 .txt 文件和 .resx(基于 XML 的资源格式)文件转换为通用的语言运行时二进制 .resources 文件,这些文件可以嵌入到运行时二进制可执行文件中,或编译成卫星程序集。
Resgen.exe 执行以下转换: 
将 .txt 文件转换为 .resources 或 .resx 文件
将 .resources 文件转换为文本或 .resx 文件
将 .resx 文件转换为文本或 .resources 文件
为了使 Resgen.exe 能够解析您的输入,您的 .txt 和 .resx 文件必须遵循正确的格式。您必须在单独的行上指定每个名称/值对,如下所示:
name = value
如果您使用 Resgen.exe 将包含对象的 .resources 文件转换为 .txt 文件,则所有字符串资源都会被正确转换,但非字符串对象的类型也会作为字符串写入文件。您将在转换中丢失嵌入的对象,并且 Resgen.exe 会报告检索资源时发生错误。
为什么“AutoLocalize”很有用
如果卫星程序集包含字符串资源和图像,那么生成卫星程序集的过程将非常繁琐。AutoLocalize 帮助您自动化生成卫星程序集的过程。当您的应用程序需要支持新语言时,您只需要 4 个步骤:
1. 在 Windows 中设置语言(如下所述)
2. 加载工具(Autolocalize.exe)
3. 输入特定语言的字符串
4. 生成卫星程序集。
就这样!您可以使用卫星程序集来支持您的应用程序的新语言。
在 Windows 中设置语言 
在输入本地化字符串之前,需要先在 Windows 中设置语言。请按照以下步骤设置语言。
1. 在 Windows 桌面任务栏的“开始”菜单中,选择“设置”,然后选择“控制面板”。

2. 选择“区域和语言选项”。
3. 在“区域和语言选项”对话框中,选择“语言”选项卡。
4. 单击“详细信息...”按钮。
5. 在“文本服务和输入语言”对话框中,单击“设置”选项卡下的“添加...”按钮。
6. 在“添加输入语言”对话框中,选择您的应用程序将支持的语言。
在我们的示例中,我们选择了德语(德国)。德语的缩写“DE”会显示在“文本服务和输入语言”中。设置完成后,请查看桌面右下角。将显示语言缩写的指示符。在本例中,显示的是“DE”。

现在,Windows 中的语言设置已完成。
Autolocalize 的作用是什么?
让我们探讨一下 Autolocalize 工具如果想有用,应该具备哪些优势。它使用 SQL Server 数据库来维护字符串资源。安装时,它会在 SQL Server 中创建数据库和名为“Localize”和“LanguageSupport”的表。“LanguageSupport”表用于存储软件产品支持的语言列表,以便创建卫星程序集。它为每种语言维护一个单独的表。每当输入新的语言数据时,它会创建两个不同的表来存储区域设置键和值。一个表用于存储文本资源,另一个表用于存储图像资源。但在生成卫星程序集时,文本和图像资源都会存储到一个程序集中。使用此过程的好处是,每当软件产品发布新版本时,都可以输入新的字符串和图像资源来生成卫星程序集。另一方面,使用此过程可以轻松维护卫星程序集。
如何使用 Autolocalize 生成卫星程序集?
它有文件、工具、窗口和帮助菜单。文件菜单包含语言支持、文本资源和图像资源选项。工具菜单包含生成资源选项。让我们从文件 ->语言支持选项开始。这是输入语言信息的第一个屏幕。
1. 从菜单中选择文件 ->语言支持。
2. 右键单击鼠标。
3. 将显示包含新建、编辑选项的上下文菜单。
4. 选择新建。将显示一个屏幕,如下所示。
5. 输入语言 ID。(语言的唯一标识符。最好使用文化名称作为语言标识符,正如 Microsoft 在 MSDN 中建议的那样。EN-英语,DE-德语等)
6. 输入需要为某种语言维护的样式表名称。
7. 输入资源文件名。生成卫星程序集时,此文件用于存储字符串资源。
8. 输入程序集名称。卫星程序集将以此名称创建。
9. 输入资源表名称。将在数据库中创建一个表来存储具有此名称的文本资源。
10. 输入图像表名称。将在数据库中创建一个表来存储具有此名称的图像资源。
11. 选择生成卫星程序集的位置。您可以在此处指定软件产品存储的目标路径。
12. 默认语言。软件产品开发所用的语言。必须将一种语言设置为必选项。
13. 按 TAB 键。
14. 按“保存并关闭”按钮。
在本例中,我们使用 EN 作为英语。现在,默认语言已设置。要输入该语言的字符串资源,请在主屏幕右上角显示的组合框中选择 EN。
15. 选择下拉菜单中的文件,文本资源选项。您将看到一个如下所示的屏幕。
注意:不要忘记从组合框(主屏幕右上角显示的)中选择您将要输入文本或图像的语言选项。如果选择了除默认语言以外的任何语言,则区域设置键将从默认语言中获取。您只需要输入等效的单词。 
16. 右键单击鼠标。将显示一个包含新建、编辑选项的上下文菜单。
17. 选择新建选项。您将看到一个如下所示的屏幕。

18. 在“区域设置键”列中输入将用作本地化键的文本。
19. 在其他语言的值 中 文本框中输入等效的语言文本。对于默认语言,在两个文本框中输入的文本显然是相同的。
考虑应用程序的登录页面。该屏幕需要输入登录名和密码来验证用户。如果您正在为英语开发应用程序,则“区域设置键”和“其他语言的值”列中的文本将是登录名。但如果您的应用程序需要支持德语,则在“区域设置键”列中键入登录名,在“其他语言的值”列中键入等效的德语单词。
20. 按保存并关闭以保存数据。
如何保存图像?
1. 选择下拉菜单中的文件,图像资源选项。您将看到一个如下所示的屏幕。
2. 右键单击鼠标。将显示一个包含新建、编辑选项的上下文菜单。
3. 选择新建选项。您将看到一个如下所示的屏幕。

4. 输入图像的名称,该名称是数据库中用于定位图像的键。
5. 按从文件获取图像按钮选择要存储在数据库中的图像。
6. 将显示“打开”对话框。
7. 选择要保存的图像。
8. 按保存并关闭按钮。图像保存后,将主屏幕中显示添加的信息,如下所示。

如何生成卫星程序集?
1. 选择下拉菜单中的文件、工具、生成资源选项。您将看到一个如下所示的屏幕。
2. 通过单击鼠标左键选择一个语言(行)。选定的行会在左侧用指向该行的三角形表示。
3. 右键单击鼠标。将显示一个如下所示的屏幕,其中包含语言信息,如语言 ID、资源文件名、程序集名称、存储文本资源的资源表、存储图像资源的图像表(在数据库中)。

4. 选择要存储卫星程序集的驱动器和文件夹。
5. 按生成资源按钮。
注意:请确保已设置指向 D:\WINNT\Microsoft.NET\Framework\v2.0.50727 文件夹的环境变量(路径)。因为 autolocalize 工具使用 al.exe 来生成卫星程序集。 
6. 现在检查文件夹以查找卫星程序集。(在本例中,将创建一个名为 ENGASM.DLL 的程序集)
在应用程序中使用卫星程序集
在应用程序中,使用System.Reflection命名空间来加载卫星程序集,并使用System.Resource命名空间从卫星程序集中加载字符串或图像。
// System.Reflection.Assembly oA = System.Reflection.Assembly.LoadFile("f:\\resources\\engasm.dll"); System.Resources.ResourceManager rm; // engres is a name of .resource file generated by autolocalize tool rm = new System.Resources.ResourceManager("engres",oA); // pass locale id as a parameter to GetString method of resource manager object TextBox1.Text=rm.GetString("1"); //
您无需在源代码中硬编码 .resource 文件的名称。这可以指定在 app.config/web.config 文件中,您可以编写一个配置处理程序来自动检索。您可以根据需要增强此工具。
