次の方法で共有


ローカライズされたアプリケーションのテスト

ここまで完了したら、ローカライズされたアプリケーションをテストできます。ローカリゼーションのテストにおける最も一般的な方法は、ローカライズされたバージョンのオペレーティング システムが動作するコンピュータを用意することです。言うまでもなく、この方法では、アプリケーションの配布の範囲によって多数のコンピュータが必要になる可能性があります。別の方法として、多言語ユーザー インターフェイス (MUI) バージョンの Windows 2000 をインストールする方法もあります。このバージョンの Windows 2000 には複数言語のサポートが組み込まれており、新しいオペレーティング システムをインストールせずにコンピュータを再構成できます。開発シナリオによってはこのアプローチを使用できますが、Windows 2000 の MUI バージョンはあまり普及していません。

ほんどの開発者は、現在実行中のスレッドの CurrentThread.CurrentUICulture プロパティを変更することによって、異なるカルチャをシミュレートすることになります。このチュートリアルの前の部分では、読み込むリソースがコマンド ライン引数によって決まる例をいくつか示しました。これを行うコードは単純です。まず、必要なカルチャ タグを渡す必要があります。WorldCalc.cs ファイルから、カルチャ タグを渡す Visual C# コードの例を次に引用します。

public static void Main(string[] args) {
   string strCulture = "";
   if (args.Length == 1) {
         strCulture = args[0];
   }
   Application.Run(new VersioningDemo(strCulture));
} 

次に、クラス コンストラクタがカルチャ タグを使用して CultureInfo を作成し、現在実行中のスレッドに割り当てます。このコードを次に示します。

public VersioningDemo(string culture) {
  if (culture != "") 
      try {
          Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
      }
      catch (ArgumentException e){
          MessageBox.Show(this, e.Message, "Bad command-line argument");
      }
  InitializeComponent();
}

WorldCalc.vb から、Visual Basic で同じ処理を行うコードを次に示します。C# の場合とは少し異なります。Visual Basic では、Main にパラメータを渡すことができないため、代わりに GetCommandLineArgs メソッドを使用する必要があります。このコードを次に示します。

<System.STAThreadAttribute()> _
Public Shared Sub Main()
   Dim args() As String = System.Environment.GetCommandLineArgs()
   Dim strCulture As String = ""
   If args.Length = 2 Then
      strCulture = args(1)
   End If
   Application.Run(New VersioningDemo(strCulture))
End Sub 'Main

対応する Visual Basic のクラス コンストラクタ New は、Visual C# のコンストラクタによく似ています。このコードを次に示します。

Public Sub New(culture As String)
   If culture <> "" Then
      try 
         Thread.CurrentThread.CurrentUICulture = New CultureInfo(culture)
      catch e as ArgumentException
         MessageBox.Show(Me, e.Message, "Bad command-line argument")
      end try
   End If 
   InitializeComponent()
End Sub 'New

このアプローチでは、複数のコンピュータをセットアップする手間をかけずに、ほとんどのリソースについてローカリゼーションのテストを行うことができます。