我有一个需要支持多种文化类型的c#应用程序。我有一个为每种语言编写的resx文件,更改文化类型会更改我正在使用的resx文件。效果很好。 现在我的客户端不喜欢我用过的标签。他们属于美国文化,我想保持en-US的resx不变,以及它对大多数客户的态度,但对于这个特定的客户,有没有办法改变他的资源文件虽然仍然是en-US的一部分? 例如,我可以制作一个“en-US2”resx文件或类似的东西,并指出这一点?或者有更好的方法可以为同一种语言提供多个不同的resx文件吗?
答案 0 :(得分:0)
我曾用同样的想法问过一个类似的问题(here.)基本上C#意味着与一个Resources.resx一起使用,你可以将它培养出来。根据我从所有狩猎中收集到的内容,您有两种选择:将其全部放在一个文件中(如workersWelcomeText和employeeWelcomeText)或创建多个resx文件并构建模型来处理它们并返回所需的资源文件:
模型(没有必要,但是很好的做法):
namespace Bot.Models
{
public class Dialog
{
internal static string Name { get; set; }
internal static string Culture { get; set; }
//Returns the rsource file name.culture.resx
internal static string ResourceFile { get { return $"{System.AppDomain.CurrentDomain.BaseDirectory}Properties\\{Name}.
{Culture}.resx"; } }
}
}
构造一个从文件中检索资源的方法:
// You can do this in-line, just remember to reset your resex if you change the file
internal static string GetStrRes(string resourceStr)
{
//Gets your resource file
System.Resources.ResXResourceSet resxSet = new System.Resources.ResXResourceSet(Models.Dialog.ResourceFile);
string response = resxSet.GetString(resourceStr);
return response;
}
设置模型参数:
Models.Dialog.Name = "Worker";
Models.Dialog.Culture = "en-US";
使用模型:
// Returns content of string resource key, same as Resources.workerText
await context.PostAsync(BotUtils.GetStrRes("RES_KEY"));