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

时间:2012-05-04 07:35:40

标签: c# plugins mef multilingual

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

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

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

为此案例提供多语言界面的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我不确定是否有适用的最佳做法,但我可以通过我看到的选项与您联系。如果您使用不同的翻译来开发中央数据库,那么您的所有工具都可以从翻译中受益。但是,缺点是现在所有的插件都需要知道数据库(以某种方式)。这增加了一个更直接的耦合,我更喜欢在使用第三方插件时避免使用。

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

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

以下是一些可能对您有帮助的链接:

Is there a best-practice approach for internationalization of an application?

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