繁体   English   中英

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

[英]C# creating multilingual application with plugin support (MEF)

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

我想为该应用程序提供本地化支持。 问题是,即使我本地化了主机应用程序,也必须对本地化的第三方插件(基本上是DLL文件)进行安装。

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

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

我不确定是否有一种最佳实践可以应用,但是在看到这些选项时,我可以与您讨论这些选项。 如果使用所有内容的不同翻译来开发中央数据库,则所有工具都可以从翻译中受益。 但是,不利的一面是,现在您的所有插件都还需要(以某种方式)了解数据库。 这增加了更直接的耦合,在使用第三方插件时,我更希望避免这种耦合。

如果使用资源文件,则会获得更大的灵活性,但会失去重用同一文本的能力(这就像您违反了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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM