C# 创建具有插件支持 (MEF) 的多语言应用程序

本文关键字:语言 应用程序 MEF 创建 插件 支持 | 更新日期: 2023-09-27 18:33:04

我已经阅读了很多关于SO的文章和问题,但我仍然不舒服。我计划开发一个基于MEF技术的基于插件的GUI桌面应用程序。

我想为应用程序提供本地化支持。问题是,即使我本地化了主机应用程序,基本上是DLL文件并且可以随时安装的第三方插件也需要本地化。

我认为在 dll 中拥有所有可本地化的控件对我来说不是一种选择。我可以将国际文本存储在数据库中,有一个调用者函数,该函数正在主机应用程序中从DB中检索文本,并要求插件调用此调用者函数。或者我可以要求开发人员在他们的应用程序中拥有不同的资源文件,但这样,他们就不会从已经翻译的文本中受益。

在这种情况下提供多语言界面的最佳做法是什么?

C# 创建具有插件支持 (MEF) 的多语言应用程序

我不确定是否有一种最佳实践适用,但我可以与您讨论我所看到的选项。 如果您开发一个中央数据库,其中包含所有内容的不同翻译,那么您的所有工具都可以从翻译中受益。 但是,缺点是现在您的所有插件也需要了解数据库(以某种方式(。 这增加了一个更直接的耦合,我更喜欢在使用第三方插件时避免这种耦合。

如果使用资源文件,您将获得更大的灵活性,但无法重用相同的文本(感觉就像违反了 DRY(。

就个人而言,我会沿着资源文件路线进行本地化。 它为您提供了最简单的方法,让每个人都在没有主要依赖项的情况下工作。 但是,如果您能找到一种方法让插件为其本地化文本调用中央应用程序,那么中央数据库将是一个更好的选择(再次,在我看来(。

这里有几个链接也可能对您有所帮助:

是否有应用程序的国际化的最佳实践方法?

http://www.businessandprocess.com/2010/11/why-application-localization-should-start-in-the-design-stage/

http://expatsoftware.com/articles/2010/03/why-internationalization-is-hopelessly.html