演练:本地化混合应用程序

更新:2007 年 11 月

本演练演示如何在基于 Windows 窗体的混合应用程序中本地化 WPF 元素。

本演练涉及以下任务:

  • 创建 Windows 窗体宿主项目。

  • 添加可本地化的内容。

  • 启用本地化。

  • 分配资源标识符。

  • 使用 LocBaml 工具生成附属程序集。

有关本演练中所阐释任务的完整代码清单,请参见本地化混合应用程序示例

在完成本演练后,您将具有一个本地化的混合应用程序。

注意 显示的对话框和菜单命令可能与“帮助”中所述的有所不同,具体取决于当前的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

先决条件

您需要以下组件来完成本演练:

  • Visual Studio 2008.

创建 Windows 窗体宿主项目

第一步是创建 Windows 窗体应用程序项目并添加一个包含要本地化的内容的 WPF 元素。

创建宿主项目

  1. 创建一个名为 LocalizingWpfInWf 的 WPF 应用程序项目。有关更多信息,请参见如何:创建 Windows 应用程序项目

  2. 向该项目添加一个名为 SimpleControl 的 WPFUserControl 元素。

  3. 使用 ElementHost 控件在窗体上放置一个 SimpleControl 元素。有关更多信息,请参见演练:在 Windows 窗体中承载 Windows Presentation Foundation 复合控件

添加可本地化的内容

下一步,您将添加一个 Windows 窗体标签控件,并将 WPF 元素的内容设置为可本地化的字符串。

添加可本地化的内容

  1. 在解决方案资源管理器中双击“SimpleControl.xaml”,以便在 WPF 设计器中将其打开。

  2. 使用以下代码示设置 Button 控件的内容。

  3. 在解决方案资源管理器中,双击“Form1”在 Windows 窗体设计器中打开它。

  4. 打开工具箱,并双击“标签”向窗体中添加一个标签控件。将其 Text 属性的值设置为 "Hello"。

  5. 按 F5 生成并运行该应用程序。

    SimpleControl 元素和该标签控件都会显示文本 "Hello"。

启用本地化

Windows 窗体设计器提供了用于在附属程序集中启用本地化的设置。

启用本地化

  1. 在解决方案资源管理器中,双击“Form1.cs”在 Windows 窗体设计器中打开它。

  2. 在“属性”窗口中,将该窗体的“Localizable”属性值设置为 true。

  3. 在“属性”窗口中,将“Language”属性的值设置为“Spanish (Spain)”[西班牙语(西班牙)]。

  4. 在 Windows 窗体设计器中,选择该标签控件。

  5. 在“属性”窗口中,将 Text 属性的值设置为 "Hola"。

    此时,名为“Form1.es-ES.resx”的新资源会添加到该项目中。

  6. 在解决方案资源管理器中,右击“Form1.cs”,然后单击“查看代码”在代码编辑器中打开它。

  7. 将下面的代码复制到 Form1 构造函数,然后调用 InitializeComponent。

  8. 在解决方案资源管理器中,右击“LocalizingWpfInWf”,然后单击“卸载项目”。

    此时,该项目名称会被标记为“(不可用)”。

  9. 右击“LocalizingWpfInWf”,然后单击“编辑 LocalizingWpfInWf.csproj”。

    此时,该项目文件会在代码编辑器中打开。

  10. 将下面一行复制到该项目文件中的第一个 PropertyGroup。

    <UICulture>en-US</UICulture> 
    
  11. 保存该项目文件,然后将其关闭。

  12. 在解决方案资源管理器中,右击“LocalizingWpfInWf”,然后单击“重新加载项目”。

分配资源标识符

您可以使用资源标识符将可本地化的内容映射到资源程序集。当指定 updateuid 选项时,MsBuild.exe 应用程序会自动分配资源标识符。

分配资源标识符

  1. 从“开始”菜单中打开 Visual Studio 命令提示窗口。

  2. 使用以下命令将资源标识符分配给可本地化的内容。

    msbuild /t:updateuid LocalizingWpfInWf.csproj
    
  3. 在解决方案资源管理器中,双击“SimpleControl.xaml”在代码编辑器中打开它。此时,您会看到 msbuild 命令已将 Uid 属性添加到所有元素中。这通过分配资源标识符,简化了本地化操作。

  4. 按 F6 键生成解决方案。

使用 LocBaml 工具生成附属程序集

本地化内容存储在一个纯资源附属程序集中。使用命令行工具 LocBaml.exe 为 WPF 内容生成本地化程序集。

生成附属程序集

  1. 将 LocBaml.exe 复制到您项目的 obj\Debug 文件夹中。有关更多信息,请参见如何:对应用程序进行本地化

  2. 在命令提示窗口中,使用以下命令将资源字符串提取到一个临时文件中。

    LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
    
  3. 使用 Visual Studio 或其他文本编辑器打开 temp.csv 文件。将字符串 "Hello" 替换为其西班牙语的翻译 "Hola"。

  4. 保存 temp.csv 文件。

  5. 使用以下命令生成本地化资源文件。

    LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
    

    在 obj\Debug 文件夹中创建 LocalizingWpfInWf.g.es-ES.resources 文件。

  6. 使用以下命令生成本地化附属程序集。

    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 文件。

  7. 将 LocalizingWpfInWf.resources.dll 文件复制到该项目的 bin\Debug\es-ES 文件夹中。替换现有文件。

  8. 运行 LocalizingWpfInWf.exe,该文件位于该项目的 bin\Debug 文件夹中。不要重新生成将被覆盖的应用程序或附属程序集。

    此时,应用程序会显示本地化字符串,而不是英语字符串。

请参见

任务

演练:本地化 Windows 窗体

概念

如何:对应用程序进行本地化

参考

ElementHost

WindowsFormsHost

其他资源

WPF 设计器

迁移和互操作性帮助主题