本地化 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 应用程序中避免内存泄漏的最佳方法是啥

从 WPF 打印/报告的最佳方法是啥? [关闭]

在 PasswordBox 中捕获返回键的最佳方法是啥? (WPF/XAML)

在 WPF 控件上显示“加载”指示器的最佳方法是啥

WPF 触发器绑定:将枚举值绑定到可见性的最佳方法是啥?