Windows 窗体资源编辑器 (Winres.exe)
Windows 窗体资源编辑器 Winres.exe 是一种可视布局工具,可以帮助本地化专家对窗体使用的 Windows 窗体用户界面 (UI) 资源进行本地化。使用可视设计环境(如 Microsoft Visual Studio),可以创建用作 Winres.exe 输入的 .resx 或 .resources 文件。有关在 .NET Framework 应用程序中部署资源的信息,请参见应用程序中的资源。
winres resourceFile
winres /?
备注
参数 | 说明 |
---|---|
resourceFile |
要本地化的资源文件。此文件必须是由 Visual Studio 设计器生成的 Windows 窗体的窗体文件(.resx 或 .resources)。Winres.exe 无法打开一般的 .resx 或 .resources 文件。 |
选项 | 说明 |
---|---|
/? |
显示该工具的命令语法和选项。 |
在 Windows 窗体项目的某个窗体中,UI 元素的状态通常存储在资源文件内。这些资源文件是扩展名为 .resx 的基于 XML 的文件,或者是扩展名为 .resources 的已编译的相应二进制版本文件。Winres.exe 是一种工具,可用于在 Visual Studio 设计环境之外对上述任何一种类型的文件进行有限编辑。具体地说,使用这种工具可以执行下面几种编辑操作:
可以编辑非特定或特定区域性资源文件,从而更改窗体或其控件的 UI 属性,如文本、大小或位置。
可以从默认的资源文件生成非特定或特定区域性资源文件。
区域性资源文件可以另存为其他区域性资源文件。例如,英语(美国)资源文件可以另存为波兰语资源文件。通常,可以稍后对新文件进行编辑,以使其与新区域性兼容。
用于本地化的资源的分层组织
用于本地化的资源的分层组织
用于本地化的资源的分层组织
用于本地化的资源的分层组织
Winres.exe 不能将 .resx 文件转换成相应的 .resources 文件。请改用 Resgen.exe 工具。有关 Resgen.exe 的更多信息,请参见资源文件生成器 (Resgen.exe)。
Winres.exe 是一种图形应用程序。借助该应用程序,只需使用资源文件即可重新创建 Windows 窗体的窗体设计时版本,而不必访问源代码。Winres.exe 承载 Visual Studio 的 Windows 窗体的“窗体设计器”窗口和“属性”窗口。使用这些功能,可以对包含 Windows 窗体的窗体 .resources 或 .resx 文件进行可视编辑。通常,本地化人员使用 Winres.exe 编辑控件标签并调整控件的位置和大小,以适应目标区域性的标签。
如果 Winres.exe 无法解析控件的类型,它会在本地化后的 .resx 或 .resources 文件中创建占位符 (PlaceHolder) 控件。占位符 (PlaceHolder) 控件作为阴影窗口显示在“Windows 窗体”窗体上。阴影窗口的大小和位置与实际控件的大小和位置一致。占位符 (PlaceHolder) 控件的所有可用的可本地化属性都显示在“属性”窗口中。对占位符控件所做的任何更改均保存在实际控件中。
Winres.exe 与 Visual Studio
一般而言,开始对应用程序的 Windows 窗体的窗体进行本地化之前,应该先确定是使用 Visual Studio 还是使用 Winres.exe 作为本地化工具。稍后介绍的版本兼容性可以防止从一个工具切换到另外一个工具。
Visual Studio 的优点在于,对应用程序进行开发和本地化时都可以使用它作为工具。若要对某个窗体进行本地化,完成开发之后,可以将该窗体的 LocalizableAttribute(属性编辑器中的“可本地化”属性)设置为 true,并将其“语言”属性改为所需目标区域性。然后,编辑字符串并调整控件的位置和大小,以适应目标区域性的字符串。保存本地化后的 .resx 文件时,Visual Studio 只将可本地化的属性(已在目标区域性中更改的属性)写入该文件。Visual Studio 在正确的目录位置为本地化后的 .resx 文件自动创建附属程序集。 演练:本地化 Windows 窗体
演练:本地化 Windows 窗体
演练:本地化 Windows 窗体
演练:本地化 Windows 窗体
演练:本地化 Windows 窗体
虽然 Visual Studio 提供了一个集成的开发和本地化环境,但是,如果本地化工作将由第三方本地化人员完成,建议使用 Winres.exe 作为工具。因为 Winres.exe 只是本地化工具,所以使用它可以将应用程序的代码与要本地化的窗体更加彻底地分离开来,这对于管理大型项目比较实用。
使用 Winres.exe
若要使用 Winres.exe 进行本地化,必须首先使用 Visual Studio 窗体设计器这样的可视化设计器开发应用程序。开发完成后,将窗体的 LocalizableAttribute(属性编辑器中的“可本地化”属性)设置为 true,然后将默认区域性的 .resx 文件交给第三方本地化人员。此 .resx 文件包含 Winres.exe 用于重新创建原有窗体的设计时版本的其他信息。
警告
Winres.exe 不能用于编辑默认的资源文件。Winres.exe 将更改后的所有属性都阐释为本地化属性,并将其保存到目标区域性资源文件中。
最后,可以使用这些区域性资源文件的最终版本创建应用程序的本地化版本。有关更多信息,请参见应用程序中的资源。
Winres.exe 的 2.0 版具有下列特性和功能:
Winres 可以在单文件模式 (SFM) 或 Visual Studio 文件模式 (VSFM) 下操作。SFM 是一种传统模式。在这种模式下,有关窗体及其内容的完整信息存储在资源文件中。在 VSFM 模式下,在资源文件中只存储区域性更改。
停靠在主窗口左下方的错误报告窗口已经添加到界面中。
可以检查热键是否重复,方法是在“格式”菜单上单击“检查热键”命令。
版本兼容性
因为与 Visual Studio .NET 2002 相比,Visual Studio 2005 的资源文件格式已经有了更改,所以 Winres.exe 也会发生相应的更改,以保证兼容性。因此,通常应该使用随用于创建应用程序的 .NET Framework 一起发布的 Winres.exe 版本。下表列出了可兼容的版本。
Visual Studio | .NET Framework | Winres.exe |
---|---|---|
Visual Studio .NET 2002 |
1.0 |
1.0 |
Visual Studio .NET 2003 |
1.1 |
1.1 |
Visual Studio 2005 |
2.0 |
2.0 |
如果尝试使用 2.0 版的 Winres.exe 打开旧版本的资源文件,系统将会提示您升级该文件的格式,以使其与 2.0 版的 .NET Framework 兼容。
在 .NET Framework 2.0 版之前的版本中,Winres.exe 和 Visual Studio 的窗体设计器已经创建了不兼容的非特定区域性和特定区域性资源文件。因此,一旦开始执行本地化过程,就只能继续使用同一个工具。但是,对于 2.0 版的 Winres.exe,已经添加了 Visual Studio 文件模式 (VSFM)。顾名思义,保存在此兼容模式下的资源文件可以使用任何一种工具进行编辑。
备注
虽然 VSFM 的优点在于兼容 Visual Studio,但是,因为在这种模式下只能在资源文件中存储更改后的值,所以,Winres.exe 要求当前资源文件的父文件位于同一个目录中。例如,在编辑德语(德国)资源文件 TestApp.de-DE.resources
时,需要有默认的资源文件 TestApp.resx
,以及可能的非特定区域性资源文件 TestApp.de.resources
。
示例
将与窗体相关的 .resx 或 .resources 文件本地化
在命令提示符下键入
winres
以运行 Winres.exe。若要打开要本地化的窗体的默认资源,请单击“文件”菜单中的“打开”命令,然后定位到该文件打开它。
- 或 -
指定启动 Winres.exe 时在命令行提示符下要打开的文件。
下面的命令启动 Winres.exe 并在“窗体设计器”中加载与
TestApp.resx
关联的窗体。winres TestApp.resx
下面的命令启动 Winres.exe 并在“窗体设计器”中加载与
TestApp.resources
关联的窗体。winres TestApp.resources
备注
如果正在对其资源进行编辑的窗体是一个被继承的窗体,则无论程序集是包含被继承的窗体还是包含继承(派生)窗体的窗体,都必须在全局程序集缓存 (GAC) 中进行注册,或者必须与 WinRes.exe 位于同一个目录中。有关将 .NET Framework 组件安装到 GAC 中的更多信息,请参见全局程序集缓存。
选择该窗体中的控件,然后更改其 Text 和其他属性,以便反映本地化的区域性及其语言。根据需要移动控件,或调整其大小,以适应本地化后的文本。
若要保存 .resx 或 .resources 文件的本地化版本,请单击“保存”图标或“文件”菜单中的相同命令。该工具会显示“选择区域性”窗口。
选择相应的区域性和文件模式,然后单击“确定”。该工具会使用运行库需要用于本地化资源文件的命名约定来保存文件。例如,如果将
TestApp.resources
本地化为德语(德国),则该工具将此文件保存为TestApp.de-DE.resources
。如果将TestApp.resx
本地化为德语(德国),则该工具将此文件保存为TestApp.de-DE.resx
。有关资源命名约定的更多信息,请参见打包和部署资源。有关运行库使用的预定义区域性名称的列表,请参见 CultureInfo Class。
请参见
参考
.NET Framework 工具
LocalizableAttribute
CultureInfo
ResourceManager
ResourceReader
ResourceWriter