Resourceに深く入り込み、多言語サポートの応用詳細を実現する。


まず、アプリケーションがあると仮定して、リソースファイルResource 1.rextを右ボタンで追加します。
Resource 1.ressの中は以下の通りです。
image
Main関数は以下の通りです。static void Main(){    Resource Manager resource Manager=new Resource Manager(        "CAStudy.Resource 1"        Asembly.GetExecutingAsssemble()
    Consolie.Writeline(「String 1:」+resource Manager.Get String(「String 1」);    Consolie.Writeline(「String 1:」+Resource 1.String 1)    Consone.Readline();
使用したResource Managerの構造関数は以下の通りです。
[Security SafeCritical]public Resource Manager(string baseName、Asssembly);
アプリケーションがコンパイルされると、Resource 1.rexsはResource 1のクラスにコンパイルされます。だからbaseNameが何なのか分からないなら、こうしてもいいです。
Resource Manager resource Manager=new Resource Manager(                Resource 1.Resource Manager.BaseName、                Asembly.GetExecutingAsssemble()
または、ILコードを確認したら、次のようになります。
clip_image002 
運転結果は以下の通りです。
clip_image002[5] 
もし私たちが英語-米国(en-US)の人をサポートして訪問すると:
clip_image002[7]
Resource 1.rexsをコピーして、Resource 1.en-US.rexsを生成します。
注意中間にEN-USが多く出ている以外は、他は同じです。
もちろん、中国語-台湾をサポートする必要があれば、Resource 1.zh-TW.rexsを生成することができます。
Resource 1.en-US.rextの内容は以下の通りです。
clip_image004 
今はハローです。
使う時は修正だけ必要です。
Thread.C urrent Thread.Culture=new Culture Info(「en-US」)
なぜCurrenentUCultureを修正すればいいですか?
//   :
//                                   。
public CultureInfo CurrentUICulture { get; set; }
完全なMain関数は以下の通りです。
static void Main()
{
  ResourceManager resourceManager = new ResourceManager(
    Resource1.ResourceManager.BaseName,
    Assembly.GetExecutingAssembly());

  Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
  Console.WriteLine("String1 :" + Resource1.String1);

  Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
  Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
  Console.WriteLine("String1 :" + Resource1.String1);

  Console.ReadLine();
}
運転結果は以下の通りです。
clip_image002[9]