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 に答える