4

试图将主题和本地化结合起来......我在做什么:

本地化 A.aspx,创建:

  • App_Localresources\a.aspx.resx
  • App_Localresources\a.aspx.resx.fr ...

但是,我想添加更多选项。我希望有:

  • App_Localresources\a_theme1.aspx.resx
  • App_Localresources\a_theme1.aspx.resx.fr
  • App_Localresources\a_theme2.aspx.resx
  • App_Localresources\a_theme2.aspx.resx.fr

因此,如果我在 Theme1 中,我希望使用主题 1 组资源。

有没有一种方法可以覆盖 A.aspx 加载时将使用的 resx 文件?

即,当它尝试加载 a.aspx.resx.fr 时,我想用 a_theme1.resx.fr 替换它

非常感谢您的任何想法!:)

4

1 回答 1

1

看看这里:

ResourceManager.GetResourceFileName 方法

此方法使用 CultureInfo 的 Name 属性作为除不变区域性之外的所有区域性的文件名的一部分。此方法不查看程序集的清单或接触磁盘,仅用于构造资源文件名(适合传递给 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");
    }
}

有关此的更多信息:

创建自定义资源提供者

BuildManager 和资源处理的底层

于 2011-05-04T21:29:07.213 回答