4

我即将开始在 .NET 2.0 (C#) 中编写一个工具,并且该工具需要重新命名以供其他公司使用。我们将使用其他公司的资源在内部编译该工具,因此他们不会获得源代码,而只会获得生成的输出。

由于品牌重塑将使用相同的默认语言,您如何管理同一语言集的多个资源,而不做一些肮脏的事情,比如在构建时用脚本交换 resx 文件,或者更肮脏(更容易出错)的事情,比如使用客户 A 为 en-US,客户 B 为 en-CA,客户 C 为 en-GB,等等。

4

3 回答 3

3

我们在项目中发现,最简单的方法是在自己的 DLL 中添加品牌,然后通过反射动态加载。如果需要,有两种明显的方法来本地化任何品牌:

  1. 将品牌 DLL 替换为另一个已本地化的 DLL
  2. 使用 .NET 支持的卫星组装技术

在我看来,选项 1 要容易得多,但两者都是可行的。当然,还有其他本地化方法。

于 2009-10-14T15:51:13.907 回答
1

您可以尝试使用卫星程序集。

http://msdn.microsoft.com/en-us/library/21a15yht(VS.80).aspx

于 2009-10-14T15:34:50.710 回答
1

我决定走的路线是拥有一个 TextOverrides 类。这个类公开了一堆属性,例如:

public static string ProductName
{
  get
  {
    #if <companyNameA>
      return Properties.Resources.ProductName_CompanyNameA;
    #elif <companyNameB>
      return Properties.Resources.ProductName_CompanyNameB;
    #else
      return Properties.Resources.ProductName;
    #endif
  }
}

这仅在被覆盖的文本项的数量仍然很小的情况下才可行。

于 2009-11-19T13:40:58.167 回答