首页 文章

1个文化的多个resx文件

提问于
浏览
1

我有一个需要支持多种文化类型的c#应用程序 . 我有一个为每种语言编写的resx文件,更改文化类型会更改我正在使用的resx文件 . 效果很好 . 现在我的客户端不喜欢我用过的标签 . 他们属于美国文化,我想保持en-US的resx不变,以及它对大多数客户的态度,但对于这个特定的客户,有没有办法改变他的资源文件虽然仍然是en-US的一部分?例如,我可以制作一个“en-US2”resx文件或类似的东西,并指出这一点?或者是否有更好的方法为同一种语言提供多个不同的resx文件?

1 回答

  • 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"));
    

相关问题