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

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

  1. 包含多个组件
  2. 包含图像和其他二进制 blob(例如:需要本地化的 PDF 文档)
  3. 具有 XAML 中不存在的字符串数据(例如: MessageBox.Show("Hello World");)
有帮助吗?

解决方案

虽然不是专家,但在 xaml 中使用 x:Uids 并不比在 Windows 窗体代码中使用本地化所需的所有字符串表废话更糟糕。

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

当然,如果您创建一个标记扩展来为您处理大部分这些废话,事情就会简单得多。 您可以在此处找到某人执行此操作的示例。这是另一个类似的解决方案。

其他提示

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

您可以使用旧的“ResX”文件,它支持您提到的所有场景。这里解释了如何在 WPF 应用程序中实现这一点:

WPF 应用程序框架 (WAF) => 请参阅本地化示例

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top