本地化 WPF 应用程序的最佳方法是啥,没有 LocBAML?
Posted
技术标签:
【中文标题】本地化 WPF 应用程序的最佳方法是啥,没有 LocBAML?【英文标题】:What is the best way to localize a WPF application, sans LocBAML?本地化 WPF 应用程序的最佳方法是什么,没有 LocBAML? 【发布时间】:2010-09-10 08:57:26 【问题描述】:似乎没有本地化 WPF 应用程序的好方法。 MSDN 似乎认为用x:Uid
's 乱扔我的XAML,生成CSV 文件,然后生成新的程序集(使用他们的示例代码!)就是答案。更糟糕的是,此过程并未解决如何本地化图像、二进制 blob(例如 PDF 文件)或嵌入代码中的字符串。
那么,您如何本地化一个应用程序:
-
包含多个程序集
包含需要本地化的图像和其他二进制 blob(例如:PDF 文档)
具有不在 XAML 中的字符串数据(例如:
MessageBox.Show("Hello World");
)
【问题讨论】:
您接受的答案有几个答案。你能指出你选择了什么吗? 这么久了,我忘了!哇! 【参考方案1】:您应该查看可用的文章和代码here。它描述了本地化 WPF 应用程序的不同方法,使用 LocBaml、自定义标记扩展或附加属性。恕我直言,最好的解决方案是使用标记扩展和 Resx 资源。该代码包含用于执行此操作的本地化框架。
【讨论】:
【参考方案2】:这里不是专家,但是用 x:Uids“乱扔”你的 xaml 并不比用你必须为本地化它们做的所有字符串表废话“乱扔”你的 Windows 窗体代码更糟糕。
据我了解,WPF 应用程序仍然支持“所有框架 CLR 资源,包括字符串表、图像等”。这意味着您可以拥有本地化的资源。
当然,如果您创建一个标记扩展来为您处理大部分此类废话,那会简单得多。 You can find an example of someone doing this here. http://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.html
还有另一个类似的解决方案,但该链接不再有效。
【讨论】:
嘿,伙计们,在这篇评论中,这个答案差不多八岁了。请查找有关本地化 WPF 应用程序的更多最新信息。无需支持答案,只需支持此评论/留下有关您发现的详细信息!【参考方案3】:您可以使用支持您提到的所有场景的旧“ResX”文件。这里解释了如何在 WPF 应用程序中实现这一点:
WPF Application Framework (WAF) => 查看本地化示例
【讨论】:
【参考方案4】:尝试 Gnu GetText 实用程序和支持应用程序。它提供基于 ResourceManager 和 ResourceSets 的 generate C# 类,当然您可以将翻译重用于应用程序的其他部分 - 例如网页、本机代码或 iphone 等。
【讨论】:
以上是关于本地化 WPF 应用程序的最佳方法是啥,没有 LocBAML?的主要内容,如果未能解决你的问题,请参考以下文章
遵循 MVVM 模式在 WPF 应用程序中处理导航的最佳方法是啥?
在 WPF PRISM/MVVM 应用程序中避免内存泄漏的最佳方法是啥