我有一个面向多个客户的网站。有时客户会坚持要求进行微小的改动。由于我无法控制的原因,无论请求多么微小,我都必须遵守。通常这不是问题,我会创建一个客户端特定版本的用户控件或页面,并在构建时覆盖默认版本或进行配置设置来处理它。
现在我正在对网站进行本地化,我很好奇对措辞进行细微更改的最佳方式。
假设我有一个名为 Resources.resx
的资源文件,其中包含 300 个资源。它有一个名为 Continue
的资源。英文值为“Continue”,法文值为“Continuez”。
现在,无论出于何种原因,一个客户希望它说“Next”和“Après”,而其他客户则希望保持不变。满足这样的请求的最佳方式是什么? (这只是一个简单的例子)。
我能想到的只有两种方法是
- 创建另一个特定于客户端的 Resources.resx,并在构建期间替换 .dll。由于我要完全替换 dll,新资源文件必须包含所有 300 个字符串。明显的问题是我现在有 2 个资源文件,每个都有 300 个字符串需要维护。
- 创建自定义用户控件/页面并将其更改为使用自定义资源文件。例如SignIn.ascx 将在构建期间被替换,并且它将从
ClientName.resx
而不是Resources.resx
中提取资源。
还有什么我可以尝试的吗?有什么方法可以更改它,以便应用程序在实际查看指定的资源文件之前始终在 ClientResources.resx
文件中查找被覆盖的值?
最佳答案
您或许可以使用以下模板:
#if ClientName1
Continue="Next";
#elif ClientName2
Continue="Apres";
#else
Continue="Continue"
#endif
这允许您在同一文件中指定所有可能的值(以及同一区域中的同一变量),并且您可以在构建期间从命令行轻松定义符号“ClientName1”。
关于c# - 在运行时更改资源的提取位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999422/