ローカライズされたアプリケーションのテスト
ここまで完了したら、ローカライズされたアプリケーションをテストできます。ローカリゼーションのテストにおける最も一般的な方法は、ローカライズされたバージョンのオペレーティング システムが動作するコンピュータを用意することです。言うまでもなく、この方法では、アプリケーションの配布の範囲によって多数のコンピュータが必要になる可能性があります。別の方法として、多言語ユーザー インターフェイス (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
このアプローチでは、複数のコンピュータをセットアップする手間をかけずに、ほとんどのリソースについてローカリゼーションのテストを行うことができます。