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





5.00/5 (3投票s)
用于轻松本地化 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");