1

背景

一个项目安装一些文件,其中包含定义 UserControl 的所有元素 - 一些用户源、用于设计器代码的 CodeCompileUnit 和 resx 文件。在运行时,这些文件被编译成一个程序集,并且我们的主应用程序使用这些类(程序集仅在必要时更新)。

问题

该项目必须全球化,并且作为该过程的一部分,需要提供这些文件的本地化。两个选项是允许包含用于不同语言环境的附加 resx 文件(在同一文件中或作为附加的并行文件),这些文件可以编译到主程序集的附属程序集中,或者提供每种支持的语言的每个完整文件,为支持的语言编译适当的集合。

  • 有没有人有其他可能值得考虑的选择?
  • 我提出的任何一种解决方案都可能存在哪些问题?

约束/免责声明
我知道这种情况不太理想,并且在某些领域(例如从一开始就全球化)可以做出更好的选择,但在项目的这一点上不能改变它们。感谢您提供的任何建议、解决方案或线索。谢谢。

4

2 回答 2

3

为每种区域性创建一个单独的附属程序集。这有两个好处:

  • 您可以一次构建所有程序集,并为每个版本号和文件名组合拥有一个确定的文件,而不是取决于文化。
  • 您可以在同一个安装中拥有多个程序集,并将要使用的语言基于系统语言或用户偏好等。这将使开发和测试变得更加容易,因为您不需要继续重建和复制文件为了改变语言。
  • .NET i18n 就是这样设计的。虽然我不是 .NET i18n 方面的专家(“阅读 Guy Smith-Ferrier 的书”是我最好的建议!)我通常发现框架在遵循预期模型时效果最好。

即使“构建卫星程序集”的最后一部分是在运行时完成的(你可以在安装时完成吗?)你至少仍然可以获得第二个和第三个优点。这也意味着,如果您确实采用更正常的方式来开始提供附属组件(而不是在用户的盒子上构建它们),那么您将有更少的变化。

抱歉,如果我误解了这个问题...

于 2009-02-02T14:49:22.827 回答
2

如果您不打算在部署后添加其他语言(至少在没有软件更新的情况下不会),那么我倾向于将所有其他 RESX 文件编译到您包含的附属程序集中。这样一来,一旦部署,用户就无法对其进行编辑。

于 2009-01-15T05:15:01.133 回答