Testen von lokalisierten Anwendungen
Schließlich können Sie die lokalisierte Anwendung testen. Bei der gängigsten Methode zum Testen von lokalisierten Anwendungen ist für jede zu testende Kultur ein Computer erforderlich, auf dem eine lokalisierte Version des Betriebssystems ausgeführt wird. Abhängig vom Verteilungsgebiet der Anwendung kann dafür u. U. eine Vielzahl von Computern erforderlich sein. Bei einer anderen Methode muss Windows 2000 MultiLanguage Version (MUI) installiert werden, das mehrere Sprachen unterstützt und die Neukonfiguration eines Computers ermöglicht, ohne dass ein neues Betriebssystem installiert werden muss. Diese Vorgehensweise dürfte in einigen Entwicklungsszenarien funktionieren, die MUI-Version von Windows 2000 ist allerdings nicht sehr verbreitet.
Die meisten Entwickler simulieren eine andere Kultur, indem Sie die CurrentThread.CurrentUICulture-Eigenschaft des aktuellen Threads ändern. Weiter oben in diesem Lernprogramm wurden mehrere Beispiele angeführt, bei denen die zu ladenden Ressourcen durch Befehlszeilenargumente bestimmt wurden. Der dafür benötigte Code ist einfach. Zunächst muss das erforderliche Kulturtag übergeben werden, was mit dem folgenden Visual C#-Code aus der Datei WorldCalc.cs möglich ist.
public static void Main(string[] args) {
string strCulture = "";
if (args.Length == 1) {
strCulture = args[0];
}
Application.Run(new VersioningDemo(strCulture));
}
Der Klassenkonstruktor erstellt mit Hilfe des Kulturtags anschließend eine CultureInfo und weist diese, wie im folgenden Code gezeigt, dem aktuellen Thread zu.
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();
}
Der äquivalente Visual Basic-Code aus der Datei WorldCalc.vb unterscheidet sich etwas vom obigen Code. In Visual Basic ist die Übergabe von Parametern an Main nicht möglich, so dass stattdessen die GetCommandLineArgs-Methode verwendet werden muss. Dies wird durch den folgenden Code veranschaulicht.
<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
Der folgende Code zeigt, dass der entsprechende Visual Basic-Klassenkonstruktor New dem Visual C#-Äquivalent viel näher kommt.
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
Mit dieser Vorgehensweise können Entwickler die meisten Ressourcen für eine Lokalisierung testen, ohne mehrere Computer einrichten zu müssen.