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

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

What is the best way to localize a WPF application, sans LocBAML?

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

因此,如何对以下应用程序进行本地化:

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

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


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

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

    当然,如果您创建了一个标记扩展程序来为您处理许多废话,那会简单得多。您可以在此处找到有人这样做的示例。在http://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.html处还有另一个类似的解决方案,但是该链接不再起作用。


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


    您可以使用支持所有上述情况的旧" ResX"文件。在WPF应用程序中如何完成此操作的说明如下:

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


    推荐阅读