演练:本地化混合应用程序
更新:2007 年 11 月
本演练演示如何在基于 Windows 窗体的混合应用程序中本地化 WPF 元素。
本演练涉及以下任务:
创建 Windows 窗体宿主项目。
添加可本地化的内容。
启用本地化。
分配资源标识符。
使用 LocBaml 工具生成附属程序集。
有关本演练中所阐释任务的完整代码清单,请参见本地化混合应用程序示例。
在完成本演练后,您将具有一个本地化的混合应用程序。
注意 显示的对话框和菜单命令可能与“帮助”中所述的有所不同,具体取决于当前的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。
先决条件
您需要以下组件来完成本演练:
- Visual Studio 2008.
创建 Windows 窗体宿主项目
第一步是创建 Windows 窗体应用程序项目并添加一个包含要本地化的内容的 WPF 元素。
创建宿主项目
创建一个名为 LocalizingWpfInWf 的 WPF 应用程序项目。有关更多信息,请参见如何:创建 Windows 应用程序项目。
向该项目添加一个名为 SimpleControl 的 WPFUserControl 元素。
使用 ElementHost 控件在窗体上放置一个 SimpleControl 元素。有关更多信息,请参见演练:在 Windows 窗体中承载 Windows Presentation Foundation 复合控件。
添加可本地化的内容
下一步,您将添加一个 Windows 窗体标签控件,并将 WPF 元素的内容设置为可本地化的字符串。
添加可本地化的内容
在解决方案资源管理器中双击“SimpleControl.xaml”,以便在 WPF 设计器中将其打开。
使用以下代码示设置 Button 控件的内容。
在解决方案资源管理器中,双击“Form1”在 Windows 窗体设计器中打开它。
打开工具箱,并双击“标签”向窗体中添加一个标签控件。将其 Text 属性的值设置为 "Hello"。
按 F5 生成并运行该应用程序。
SimpleControl 元素和该标签控件都会显示文本 "Hello"。
启用本地化
Windows 窗体设计器提供了用于在附属程序集中启用本地化的设置。
启用本地化
在解决方案资源管理器中,双击“Form1.cs”在 Windows 窗体设计器中打开它。
在“属性”窗口中,将该窗体的“Localizable”属性值设置为 true。
在“属性”窗口中,将“Language”属性的值设置为“Spanish (Spain)”[西班牙语(西班牙)]。
在 Windows 窗体设计器中,选择该标签控件。
在“属性”窗口中,将 Text 属性的值设置为 "Hola"。
此时,名为“Form1.es-ES.resx”的新资源会添加到该项目中。
在解决方案资源管理器中,右击“Form1.cs”,然后单击“查看代码”在代码编辑器中打开它。
将下面的代码复制到 Form1 构造函数,然后调用 InitializeComponent。
在解决方案资源管理器中,右击“LocalizingWpfInWf”,然后单击“卸载项目”。
此时,该项目名称会被标记为“(不可用)”。
右击“LocalizingWpfInWf”,然后单击“编辑 LocalizingWpfInWf.csproj”。
此时,该项目文件会在代码编辑器中打开。
将下面一行复制到该项目文件中的第一个 PropertyGroup。
<UICulture>en-US</UICulture>
保存该项目文件,然后将其关闭。
在解决方案资源管理器中,右击“LocalizingWpfInWf”,然后单击“重新加载项目”。
分配资源标识符
您可以使用资源标识符将可本地化的内容映射到资源程序集。当指定 updateuid 选项时,MsBuild.exe 应用程序会自动分配资源标识符。
分配资源标识符
从“开始”菜单中打开 Visual Studio 命令提示窗口。
使用以下命令将资源标识符分配给可本地化的内容。
msbuild /t:updateuid LocalizingWpfInWf.csproj
在解决方案资源管理器中,双击“SimpleControl.xaml”在代码编辑器中打开它。此时,您会看到 msbuild 命令已将 Uid 属性添加到所有元素中。这通过分配资源标识符,简化了本地化操作。
按 F6 键生成解决方案。
使用 LocBaml 工具生成附属程序集
本地化内容存储在一个纯资源附属程序集中。使用命令行工具 LocBaml.exe 为 WPF 内容生成本地化程序集。
生成附属程序集
将 LocBaml.exe 复制到您项目的 obj\Debug 文件夹中。有关更多信息,请参见如何:对应用程序进行本地化。
在命令提示窗口中,使用以下命令将资源字符串提取到一个临时文件中。
LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
使用 Visual Studio 或其他文本编辑器打开 temp.csv 文件。将字符串 "Hello" 替换为其西班牙语的翻译 "Hola"。
保存 temp.csv 文件。
使用以下命令生成本地化资源文件。
LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
在 obj\Debug 文件夹中创建 LocalizingWpfInWf.g.es-ES.resources 文件。
使用以下命令生成本地化附属程序集。
Al.exe /out:LocalizingWpfInWf.resources.dll /culture:es-ES /embed:LocalizingWpfInWf.Form1.es-ES.resources /embed:LocalizingWpfInWf.g.es-ES.resources
在 obj\Debug 文件夹中创建 LocalizingWpfInWf.resources.dll 文件。
将 LocalizingWpfInWf.resources.dll 文件复制到该项目的 bin\Debug\es-ES 文件夹中。替换现有文件。
运行 LocalizingWpfInWf.exe,该文件位于该项目的 bin\Debug 文件夹中。不要重新生成将被覆盖的应用程序或附属程序集。
此时,应用程序会显示本地化字符串,而不是英语字符串。