21

似乎没有本地化 WPF 应用程序的好方法。MSDN 似乎认为用x:Uid's 乱扔我的 XAML,生成 CSV 文件,然后生成新的程序集(使用他们的示例代码!)就是答案。更糟糕的是,此过程没有解决如何本地化图像、二进制 blob(例如 PDF 文件)或嵌入代码中的字符串。

那么,您如何本地化一个应用程序:

  1. 包含几个程序集
  2. 包含需要本地化的图像和其他二进制 blob(例如:PDF 文档)
  3. 具有不在 XAML 中的字符串数据(例如MessageBox.Show("Hello World");:)
4

4 回答 4

11

您应该在此处查看文章和代码。它描述了本地化 WPF 应用程序的不同方法,使用 LocBaml、自定义标记扩展或附加属性。恕我直言,最好的解决方案是使用标记扩展和 Resx 资源。该代码包含一个用于执行此操作的本地化框架。

于 2009-07-02T18:57:30.420 回答
8

这里不是专家,但是用 x:Uids “乱扔”你的 xaml 并不比用你必须为本地化它们做的所有字符串表废话“乱扔”你的 Windows 窗体代码更糟糕。

据我了解,WPF 应用程序仍然支持“所有框架 CLR 资源,包括字符串表、图像等”。这意味着您可以拥有本地化的资源。

当然,如果您创建一个标记扩展来为您处理大部分此类废话,那会简单得多。 您可以在此处找到某人执行此操作的示例。 还有另一个类似的解决方案http://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.html,但该链接不再有效。

于 2008-09-17T20:44:39.240 回答
0

您可以使用支持您提到的所有场景的旧“ResX”文件。此处解释了如何在 WPF 应用程序中完成此操作:

WPF 应用程序框架 (WAF) => 查看本地化示例

于 2009-07-02T18:45:17.200 回答
0

尝试 Gnu GetText 实用程序和支持应用程序。它确实基于 ResourceManager 和 ResourceSets生成 C#类,当然您可以将翻译重用于应用程序的其他部分 - 例如网页、本机代码或 iphone 等。

于 2011-02-02T14:09:37.030 回答