【问题标题】:How to deal with multiple resource files for localization?如何处理多个资源文件进行本地化?
【发布时间】:2012-09-10 23:32:13
【问题描述】:

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

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

Module A

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

类似的是模块B的结构。

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

我尝试了一些解释 here 但无法正确解决的问题。有人可以帮忙吗?

提前致谢,

【问题讨论】:

标签: c# localization resource-files satellite-assembly


【解决方案1】:

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

ResourceFileA1.resx

ResourceFileA1.Designer.cs

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

moduleA.ResourceFileA1.YourStringKey

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

【讨论】:

  • 谢谢尼克平斯基。我正在使用.Net 4。我知道它为每个资源文件创建了一个设计器类。但这是一个 1:1 的映射。我正在寻找的是一个包装类,因为我不想调用单独的类。所以我需要类似 ResourceWrapper.GetString("Module.ResourceFile.String").
  • 我的意思是您不需要单独的设计器/资源文件组合。您应该能够将本地化(de-DE)resx 文件与默认 resx 和 Designer 文件保存在同一目录中,并且它应该会自动工作
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这是下面的代码。

     [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;
            }
        }
    

    【讨论】:

      【解决方案4】:

      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
      德语的资源文件。”

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        相关资源
        最近更新 更多