在运行时更改资源的位置?

Bra*_*don 5 c# asp.net localization resource-files .net-3.5

我有一个网站,可以发送给多个客户.有时客户会坚持做一些小改动.由于我无法控制的原因,无论请求多么微小,我都必须遵守.通常这不是问题,我只是创建用户控件或页面的客户端特定版本,并在构建时覆盖默认版本或进行配置设置来处理它.

现在我正在本地化网站,我很好奇关于做出轻微措辞变化的最佳方法.

假设我有一个名为Resources.resx300资源的资源文件.它有一个叫做的资源Continue.英语值为"Continue",法语值为"Continuez".

现在一个客户,无论出于何种原因,都希望它说"Next"和"Après",而其他客户希望保持相同.容纳这样的请求的最佳方式是什么?(这只是一个简单的例子).

我能想到的唯一两种方法是

  • 创建另一个特定于客户端的Resources.resx,并在构建期间替换.dll.由于我将完全替换dll,因此新资源文件必须包含所有300个字符串.显而易见的问题是我现在有2个资源文件,每个文件有300个字符串需要维护.
  • 创建自定义用户控件/页面并将其更改为使用自定义资源文件.例如,SignIn.ascx将在构建期间被替换,它将从而ClientName.resx不是从中获取资源Resources.resx.

还有其他我可以试试的东西吗?有没有办法改变它,以便应用程序ClientResources.resx在实际查看指定的资源文件之前总是在文件中查找被覆盖的值?

apo*_*020 1

您也许可以使用以下模板:

#if ClientName1 
Continue="Next";
#elif ClientName2
    Continue="Apres";
#else 
Continue="Continue" 
#endif
Run Code Online (Sandbox Code Playgroud)

这允许您在同一文件中指定所有可能的值(以及同一区域中的同一变量),并且您可以在构建期间从命令行轻松定义符号“ClientName1”。