3

我有一个使用大量资源字符串的项目。因此,我根据模块将它们组织为文件夹结构。

就像如果模块 A 是一个文件夹,那么在模块 A 下我有以下文件。

Module A

       ResourceFileA1.resx 
       ResourceFileA2.resx
       ResourceFileA1.de-DE.resx
       ResourceFileA2.de-DE.resx

类似的是模块 B 的结构。

但我只想拥有一个类文件或如果不可能的话单个包装类(对于与每个资源文件有关的多个类)来获取资源字符串。我正在尝试类似 GetString(moduleA.ResourceFileA1.String)

我已经尝试过这里解释的东西但无法正确处理。有人可以帮忙吗?

提前致谢,

4

4 回答 4

2

您没有提及您受限于哪个版本的 .NET 框架,但假设您至少使用 .NET 2.0,您真的不必担心手动管理资源文件。通过 Visual Studio 添加一个新的资源文件,你应该会看到一个自动生成的

ResourceFileA1.resx

ResourceFileA1.Designer.cs

设计器文件应自动为您创建对您放入文件中的任何资源项的编译时引用,例如:

moduleA.ResourceFileA1.YourStringKey

当您添加新的语言环境(.de-DE.resx 等)时,moduleA.ResourceFileA1.YourStringKey 应该自动引用基于 Thread.CurrentCulture 的正确资源文件,但是如果您愿意,可以通过调用 GetString 显式传递它

于 2012-09-10T23:50:32.017 回答
0

您显示的文件都是本地资源,旨在仅由您的应用程序的某些部分访问。但您也可以创建可供所有应用程序代码使用的全局资源。假设您的应用程序是 ASP.NET 应用程序,这些资源位于App_GlobalResources. 请参阅此 MSDN页面,尤其是“全局资源文件”和“本地资源文件”小节。

于 2012-09-11T11:08:01.437 回答
0

这是下面的代码。

 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    public static global::System.Resources.ResourceManager ResourceManager
    {

        get
        {
            resourceMan = new global::System.Resources.ResourceManager("Ral." + Ral.ResourceFolderPath.GetClientKey + ".Asset.Resource", typeof(Resource).Assembly);
            return resourceMan;
        }
    }
于 2015-10-08T06:01:05.943 回答
0

MSDN 链接对我有用,因为我没有遵循 resx 文件的命名约定。 http://msdn.microsoft.com/en-us/library/ms227427%28v=vs.100%29.aspx

它说“当你创建资源文件时,你首先创建一个基本的 .resx 文件。对于你想要支持的每种语言,创建一个具有相同文件名的新文件。但在名称中,包括语言或语言和文化(文化名称)。有关文化名称的列表,请参阅 CultureInfo 类。例如,您可以创建以下文件:

WebResources.resx
基本资源文件。这是默认(备用)资源文件
。WebResources.es .resx
西班牙语的资源文件
。WebResources.es-mx.resx
西班牙语(墨西哥)的资源文件
。WebResources.de.resx
德语的资源文件。”

于 2016-12-27T10:49:23.443 回答