65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 Visual Studio 模板轻松本地化 WPF 应用程序

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2011 年 5 月 1 日

CPOL

2分钟阅读

viewsIcon

17206

用于轻松本地化 WPF 应用程序的本地化 WPF 应用程序模板。

背景

本地化 WPF 应用程序并非易事。几乎所有关于 WPF 本地化的文章都充满了细节和手动实现本地化应用程序的步骤。

现有解决方案

使用 Microsoft 描述的 LocBaml 实用程序进行本地化具有很多优点,但难以维护。André van heerwaarde 在他的文章中提出通过使用配置的构建步骤来简化此方案。他编写了一个实用程序来合并翻译后的文本片段。然而,在他的文章中,仍然有很多手动步骤。

Visual Studio 项目模板

我建议使用我创建的本地化 WPF 应用程序模板来开始开发多语言 WPF 应用程序。使用此模板创建的项目已经包含所有必要的本地化工具,并自动执行本地化过程。

在应用程序开发过程中,您可以添加新的 XAML 文件,而无需担心本地化。完成更改后,只需构建项目即可。

  • 自定义构建步骤将调用 msbuild / t: updateuid [项目名称].csproj。此步骤将自动在包含文本元素的每个元素上添加 x:Uid
  • 然后,构建过程将自动启动 LocBaml,它会找到 XAML 文件中的所有文本元素,并生成包含文本元素的 CSV 文件。
  • 下一步将运行 André van heerwaarde 的 MergeLocBamlCsv 中的实用程序。结果是,先前翻译的片段将与新片段合并。
  • 实用程序 StripLocBamlCsv 会从 CSV 文件中删除未使用的项目。

您唯一需要手动执行的操作是添加新语言和实际的翻译。

添加新语言

要在草案中添加新语言,您必须

copy Translation\Translate.csv Translation\Translate.ru-RU.csv
<LocBamlCsv Include="Translation\Translate.de-DE.csv">
  <Culture>de-DE</Culture>
</LocBamlCsv>

添加新语言,例如

<LocBamlCsv Include="Translation\Translate.ru-RU.csv">
  <Culture>ru-RU</Culture>
</LocBamlCsv>
  • 复制中性语言在新的 CSV 文件中的位置
  • 在文本编辑器中打开项目文件,并在这些行之后

然后您需要在 Visual Studio 中重新打开项目。如果项目已经打开,IDE 将询问您是否希望重新打开项目以反映更改,请回答“是”。

如果您没有犯任何错误,那么新打开的项目文件夹 Translation 将包含一个新文件 Translate.ru-RU.csv

启动程序集以更新翻译文件,然后您可以打开新文件并开始翻译。

本地化代码隐藏文件中的文本

StringResources.xaml 是翻译后的 string 的资源字典示例

<ResourceDictionary 
  x:Uid="ResourceDictionary_1" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:system="clr-namespace:System;assembly=mscorlib">
  
  <!-- String resource that can be localized -->
  <system:String x:Uid="system:String_1" 
  x:Key="TestString1">Test</system:String>
  <system:String x:Uid="system:String_2" 
  x:Key="MainWindow">Main Window</system:String>
</ResourceDictionary>

用法很简单,如下所示

this.Title = (string)FindResource("MainWindow");

链接和鸣谢

© . All rights reserved.