在没有LocBAML的情况下,本地化WPF应用程序的最佳方法是什么?

时间:2020-03-05 18:59:54  来源:igfitidea点击:

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

因此,如何本地化一个应用程序:

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

解决方案

回答

这里不是专家,但是用x:Uids"乱丢"xaml并不比"乱丢"Windows Forms代码以及所有对它们进行本地化时所需要做的所有字符串表更糟。

据我了解,WPF应用程序仍支持"所有Framework CLR资源,包括字符串表,图像等"。这意味着我们可以拥有本地化的资源。

当然,如果我们创建了一个标记扩展程序,它可以为我们处理很多废话,那将简单得多。我们可以在此处找到有人这样做的示例。这是另一个类似的解决方案。

回答

我们可以使用支持所有上述方案的旧" ResX"文件。这里说明了如何在WPF应用程序中完成此操作:

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

回答

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