使用 C# 的资源全球化 - 标签和错误消息

Resource Globalization using C# - Label and Error message

我已经使用 .NET C# 4.7.2 框架在我的 winform 项目中使用 RESX 文件实现了全球化。当前的 RESX 文件用于标签,现在我需要另一个资源文件来显示错误消息。

我不确定如何在同一项目中创建不同的资源文件“ABC.Error.Resources.cs-CZ.resx”和“ABC.Label.Resources.cs-CZ.resx”,因为仅为各自的语言标签创建资源 DLL。

我的解决方案结构是:

--Solution.sln
---Project.proj
----Resources(folder containing label resource files)
-----ABC.Label.Resources.cs-CZ.resx

感谢任何帮助

找到解决上述问题的两种方法。

  • 方法 1

使用 .NET 框架的“ResourceManager”class 中的“CreateFileBasedResourceManager

第 1 步:使用“resgen.exe”将“.RESX”文件转换为“.resources”文件。 NET 框架。

第二步:使用下面的方法从资源文件中获取数据

static string ReadResourceValue(string file, string key)

        {

            string resourceValue = string.Empty;
            try
            {

                string resourceFile = file;

                string filePath =  "ConsoleApp1.en-GB.resources";

                ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(resourceFile, filePath, null);
                // retrieve the value of the specified key
                CultureInfo ci = new CultureInfo("en-IN");
                resourceValue = resourceManager.GetString(key, ci);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                resourceValue = string.Empty;
            }
            return resourceValue;
        }
  • 方法 2

使用 .NET 框架的 System.Resources class 中的“ResXResourceSet”。

static string ReadResourceFromFile()
        {
            string resxFile = "Resources\ConsoleApp1.en-GB.resx";
            string retValue = string.Empty;
            using (ResXResourceSet resxSet = new ResXResourceSet(resxFile))
            {
                // Retrieve the string resource for the title.
                retValue = resxSet.GetString("Test1");
            }
            return retValue;
        }

希望这对以后的人有所帮助。