我不是这里的Maven,但是用x:Uids“乱丢”xaml并不比用本地化它们所必须做的所有字符串表废话“乱丢”Windows窗体代码更糟糕。 据我所知,WPF应用程序仍然支持“所有的Framework资源,包括字符串表,图像等”,这意味着你可以拥有本地化的资源。 当然,如果您创建一个标记扩展来为您处理这些废话,那么事情就会简单得多。You can find an example of someone doing this here.在http://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.html上还有另一个类似的解决方案,但该链接不再起作用。
5条答案
按热度按时间92vpleto1#
你应该看一下here的文章和代码。它描述了使用LocBaml、自定义标记扩展或附加属性本地化WPF应用程序的不同方法。恕我直言,最好的解决方案是使用标记扩展和Resx资源。代码中包含了一个本地化框架。
hpcdzsge2#
我不是这里的Maven,但是用x:Uids“乱丢”xaml并不比用本地化它们所必须做的所有字符串表废话“乱丢”Windows窗体代码更糟糕。
据我所知,WPF应用程序仍然支持“所有的Framework资源,包括字符串表,图像等”,这意味着你可以拥有本地化的资源。
当然,如果您创建一个标记扩展来为您处理这些废话,那么事情就会简单得多。You can find an example of someone doing this here.在
http://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.html
上还有另一个类似的解决方案,但该链接不再起作用。o3imoua43#
您可以使用旧的“ResX”文件,它支持您提到的所有场景。如何在WPF应用程序中实现这一点在这里解释:
WPF Application Framework (WAF) =>参见本地化示例
icnyk63a4#
尝试Gnu GetText实用程序和支持应用程序。它基于ResourceManager和ResourceSets提供generate C#类,当然,您可以在应用程序的其他部分(例如网页、本机代码或iPhone等)重用这些翻译。
xxe27gdn5#
我在自己的WPF应用程序中遇到了同样的问题,于是决定编写一个轻量级的本地化库。它允许翻译xaml资源字典文件,并在运行时在支持的语言之间切换。
您可以查看Armat.Localization GitHub存储库以获取更多详细信息,并参考WPF应用程序中的“armat.localization.wpf”NuGet包。使用适当的演示应用程序克隆/构建源代码将使您给予对 Armat.Localization 库如何工作的足够理解。
主要思想如下:
Localization.Core和Localization.Wpf项目中的Markdown文件将指导您完成一般的使用模式,而Localization.Demo应用程序将作为可本地化的WPF项目的示例。