【问题标题】:Specifying custom resource file for an ASP.NET page/usercontrol为 ASP.NET 页面/用户控件指定自定义资源文件
【发布时间】:2011-04-07 15:23:46
【问题描述】:

如果我有一个名为 Default.aspx 的页面,ASP.NET 会自动使用 App_LocalResources 中名为 Default.aspx.resx 的资源文件来本地化页面中的服务器控件。

但由于某种原因,我需要选择另一个文件,比如说 Default-Custom.aspx.resx。为了提供一些背景知识,我已经有了 Default.aspx.resx,但有些用户需要向他们显示不同的内容,我将把它们放在 Default-Custom.aspx.resx 中。

是否可以在 ASP.NET 中选择用于 TemplateControl 的资源文件(缺少编写自定义 ResourceProvider)??

【问题讨论】:

  • 嗯...我已经编写了一个自定义的 ResourceProvider/ResourceManager 和其他支持基础设施来实现我所需要的...

标签: asp.net localization resourcemanager resource-file


【解决方案1】:

看这里:

ResourceManager.GetResourceFileName Method

此方法使用 CultureInfo 的名称 属性作为文件名的一部分 除不变量外的所有文化 文化。此方法不查看 一个程序集的清单或触摸 磁盘,并且仅用于构造 什么是资源文件名(适合 用于传递给 ResourceReader 构造函数)或清单资源 blob 名称应该是。

派生类可以覆盖这个 寻找不同的方法 扩展名,例如“.ResX”,或 完全不同的命名方案 文件。

你可以试试这样的:

public class ResxResourceManager : ResourceManager
{  
    protected override string GetResourceFileName(
         System.Globalization.CultureInfo culture)
    {
        return base.GetResourceFileName(culture);       
    }

    public string GetResxFileName(System.Globalization.CultureInfo culture)
    {
        return GetResourceFileName(culture).Replace(".resources", ".resx");
    }
}

更多信息:

Creating a custom Resource Provider

Under the Hood of BuildManager and Resource Handling

【讨论】:

  • 感谢您回复莱尼尔。正如我在对原始帖子的评论中提到的那样,我已经为自己编写了一个自定义 ResourceProvider,它可以根据我的需要解析出非常深和复杂的层次结构中的资源。此外,它可以处理 .resx 文件(在 WSP 环境中)以及 .resources(在完全预编译或 WAP 环境中)。非常感谢您的评论。
  • @r_honey:我没看到评论是你的... :)
  • 我已接受这篇文章作为答案,因为它正确地为所提出的问题提供了解决方案(尽管我应该更好地构建它,因为我的需求不同:))
  • 感谢 Leniel 回答了这个问题,提供了一些额外的阅读材料,感谢 r_honey 留下了这个问题。这有助于其他人后来遇到同样的问题,比如我:)。
猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2023-04-06
  • 2011-04-27
相关资源
最近更新 更多