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

WPF 本地化入门

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (64投票s)

2011年12月13日

CPOL

3分钟阅读

viewsIcon

214506

downloadIcon

4430

解释如何轻松地本地化 WPF 应用程序。

引言

我一直在寻找一种本地化 WPF 应用程序的方法,在 CodeProject 上找到了一些解决方案,以及其他地方的一些。 我花了很多时间阅读所有这些内容,但最终的结果是困惑 - 我无法确定该走哪条路。 从 C++ 背景来看,资源文件似乎是合乎逻辑的选择,所以我开始只关注资源文件的本地化。 我花了一些时间才弄清楚,我意识到它实际上非常简单。 问题是,像往常一样,是文档。
所以我决定写一篇初学者文章,让本地化变得简单,因此得名“简易指南”。 目标是逐步解释如何本地化 WPF 应用程序。

步骤 1

创建一个 WPF 项目。 我称之为“WPFLocalizationForDummies”。 请注意,Properties 文件夹有一个名为 Resources.resx 的空资源数据文件。 将访问修饰符更改为 Public,否则我们将无法在 XAML 中使用它。

Resource file

如下所示添加一个字符串资源。 我们将使用此字符串作为主窗口标题。

Resource file

编译并运行项目。 它应该可以顺利运行。

第二步

创建一个本地化的资源文件。 在 Visual Studio 解决方案窗口中选择 Resources.resx 文件,然后按 Ctrl+C 键。 现在按 Ctrl+V 键。 将创建 Resources.resx 文件的副本。

Copy of the resources file

重命名 "Copy of Resources.resx" 文件。 新名称应为 Resources.XX.resx,其中 "XX" 是区域性名称。 区域性是特定语言和国家/地区名称的组合,可以在 国家语言支持 (NLS) API 参考页面上找到。

如果您计划支持英语,我建议您使用英语本地化资源文件,尽管默认的 Resources.resx 文件也可能包含英语字符串。 稍后切换到英语和切换回来会容易得多。 因此,我们的第一个本地化资源文件应命名为 Resources.en.resx

English resources file

步骤 3

让我们创建一个更多的本地化资源文件作为示例,例如俄语。 重复步骤 2,唯一的区别是新文件应命名为 Resources.ru-RU.resx

Russian resources file

将字符串 "Title" 的值更改为一些俄语文本。

Russian Resource file

步骤 4

编译应用程序。 编译器和链接器将为每个区域性创建一个单独的附属程序集。 附属程序集将放置在保存主程序集的目录下的子目录中。 子目录将按区域性命名,允许 .NET 运行时找到适合应用程序运行的区域性的资源。 主(默认)资源文件将嵌入到主程序集中。

在我的例子中,由于我有 2 个资源文件,因此创建了 2 个子文件夹,每个子文件夹都包含资源附属 DLL - 英语和俄语。

Compile output

步骤 5

在应用程序中设置区域性。 可以像以下代码示例中所示显式地完成。

// Set the current user interface culture to the specific culture Russian
System.Threading.Thread.CurrentThread.CurrentUICulture = 
			new System.Globalization.CultureInfo("ru-RU");

步骤 6

现在我们有了资源 DLL,让我们在应用程序中使用它们。 本地化的资源可以在 XAML 和 C# 代码中使用。

  • 在 XAML 文件中

    将命名空间声明添加到每个您想要使用本地化资源的 XAML 文件中(就像 C# 中的 using 语句一样)。

    xmlns:p="clr-namespace:WPFLocalizationForDummies.Properties"

    MainWindow.xaml 中,替换...

    Title="Main" Height="350" Width="525">

    ...为

    Title="{x:Static p:Resources.Title}" Height="350" Width="525">
  • 在 C# 代码中,可以如下所示检索资源 DLL 中的 string
    Title = WPFLocalizationForDummies.Properties.Resources.Title;

结论

如您所见,通过遵循上面解释的几个步骤,可以非常轻松地实现 WPF 应用程序中的本地化。

系统要求

  1. Windows 7
  2. Visual Studio 2010
  3. .NET 4.0

历史

  • 初始版本 - 2011/12/12
© . All rights reserved.