在没有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资源。该代码包含用于执行此操作的本地化框架。