Exemplarische Vorgehensweise: Lokalisieren von Windows Forms
Aktualisiert: November 2007
Das Visual Studio-Projektsystem bietet umfangreiche Unterstützung bei der Lokalisierung von Windows Forms-Anwendungen. Es gibt zwei Möglichkeiten, Ressourcendateien mit der Visual Studio-Entwicklungsumgebung zu generieren:
Die Ressourcendateien für lokalisierbare Benutzeroberflächenelemente wie Text oder Bilder auf dem Formular können durch das Projektsystem generiert werden. und anschließend in Satellitenassemblys integriert werden. Diese Ressourcen werden als formularbasierte Ressourcen bezeichnet.
Fügen Sie eine Ressourcendateivorlage hinzu, und bearbeiten Sie dann die Vorlage mit dem XML-Designer. Die zweite Methode wird unter anderem dann verwendet, wenn lokalisierbare Zeichenfolgen erstellt werden sollen, die in Dialogfeldern und Fehlermeldungen angezeigt werden. Um auf diese Ressourcen zugreifen zu können, müssen Sie Code schreiben. Diese Ressourcen werden als Projektressourcen bezeichnet.
Im Allgemeinen sollten Sie für alle Ressourcen, die sich auf ein Formular in einer Windows Forms-Anwendung beziehen, formularbasierte Ressourcen verwenden. Projektressourcen sollten Sie für alle nicht formularbasierten Zeichenfolgen und Bilder auf Benutzeroberflächen verwenden, wie z. B. Fehlermeldungen.
Hinweis: |
---|
Für die gleiche Eigenschaft sollten aus Gründen der Einheitlichkeit entweder formularbasierte Ressourcen oder Projektressourcen verwendet werden. Viele Bildeigenschaften, wie z.B. die Image-Eigenschaft von PictureBox, unterstützen sowohl die Auswahl eines Bildes aus den Projektressourcen als auch den Import eines neuen Bildes als formularbasierte Ressource. Wenn zur Festlegung des Standardbilds eine Projektressource verwendet wird, sprachspezifische Versionen dieses Bilds jedoch formularbasierte Ressourcen nutzen, kann das Standardbild nicht angezeigt werden. |
In diesem Thema der exemplarischen Vorgehensweise werden beide Verfahren an einem Windows-Anwendungsprojekt demonstriert.
Sie können Textdateien auch in Ressourcendateien konvertieren. Weitere Informationen finden Sie unter Ressourcen im Textdateiformat und Resource File Generator (Resgen.exe).
So werden Ressourcendateien mit Visual Studio generiert
Erstellen Sie eine neue Windows-Anwendung mit der Bezeichnung "WindowsApplication1". Ausführliche Informationen finden Sie unter Gewusst wie: Erstellen eines Windows-Anwendungsprojekts.
Legen Sie im Eigenschaftenfenster die Localizable-Eigenschaft des Formulars auf true fest.
Die Language-Eigenschaft ist bereits auf (Standard) eingestellt.
Ziehen Sie ein Button-Steuerelement von der Registerkarte Windows Forms der Toolbox in das Formular, und legen Sie die Text-Eigenschaft auf Hello World fest.
Legen Sie die Language-Eigenschaft des Formulars auf Deutsch (Deutschland) fest.
Legen Sie die Text-Eigenschaft der Schaltfläche auf Hallo Welt fest.
Legen Sie die Language-Eigenschaft des Formulars auf Französisch (Frankreich) fest.
Legen Sie die Text-Eigenschaft der Schaltfläche auf Bonjour le Monde fest. Um diese etwas längere Zeichenfolge richtig anzuzeigen, können Sie die Größe der Schaltfläche ändern.
Speichern und erstellen Sie die Projektmappe.
Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen.
Die Ressourcendateien werden unter Form1.vb, Form1.cs oder Form1.jsl angezeigt. Bei Form1.resx handelt es sich um die Ressourcendatei für die Standardkultur, die in die Hauptassembly integriert wird. Bei Form1.de-DE.resx handelt es sich um die Ressourcendatei für das in Deutschland gesprochene Deutsch. Bei Form1.fr-FR.resx handelt es sich um die Ressourcendatei für das in Frankreich gesprochene Französisch.
Außerdem werden die Dateien Form1.de.resx und Form1.fr.resx angezeigt. Visual Studio erstellt diese Dateien automatisch, um die Beschränkungen in Visual SourceSafe bezüglich des Hinzufügens neuer Dateien zu einem Projekt während einer Speicheroperation zu umgehen. Die RESX-Dateien sind leer und enthalten keine Ressourcen.
Drücken Sie F5, oder wählen Sie im Menü Debuggen die Option Starten.
In Abhängigkeit von der Sprache der Benutzeroberfläche Ihres Betriebssystems wird nun ein Dialogfeld mit einer Begrüßung in Englisch, Französisch oder Deutsch angezeigt.
Hinweis: Die in Windows verwendete Benutzeroberflächensprache ist eine Funktion der CurrentUICulture-Einstellung. Wenn in der Windows-Version eine mehrsprachige Benutzeroberfläche (MUI, Multilanguage User Interface) installiert ist, können Sie die Sprache der Benutzeroberfläche in der Systemsteuerung ändern. Weitere Informationen finden Sie unter Windows Server 2003, Windows XP & Windows 2000 MUI. Wenn keine mehrsprachige Benutzeroberfläche installiert ist, können Sie die aktuelle Benutzeroberflächensprache wie im Folgenden erläutert programmgesteuert ändern.
In der folgenden Anleitung wird demonstriert, wie die benutzeroberflächenspezifische Kultureinstellung eingerichtet werden muss, damit die Anwendung die französischen Ressourcen anzeigt. In einer echten Anwendung wäre die benutzeroberflächenspezifische Kultureinstellung niemals fest kodiert, sondern würde von einer Benutzer- oder Anwendungseinstellung abhängig sein.
So richten Sie die benutzeroberflächenspezifische Kultureinstellung zum Anzeigen bestimmter Ressourcen ein
Fügen Sie im Code-Editor am Anfang des Moduls vor der Form1-Deklaration den folgenden Code ein:
' Visual Basic Imports System.Globalization Imports System.Threading // C# using System.Globalization; using System.Threading; // Visual J# import System.Globalization.*; import System.Threading.*;
Fügen Sie den folgenden Code hinzu. In Visual Basic sollte er in die New-Funktion eingefügt werden, bevor die InitializeComponent-Funktion aufgerufen wird. In Visual C# und Visual J# sollte er in Form1 eingefügt werden. Auch hier geschieht dies vor Aufrufen der InitializeComponent-Funktion.
' Visual Basic ' Sets the UI culture to French (France). Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR") // C# // Sets the UI culture to French (France). Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); // Visual J# // Sets the UI culture to French (France). System.Threading.Thread.get_CurrentThread().set_CurrentUICulture( new CultureInfo("fr-FR"));
Speichern und erstellen Sie die Projektmappe.
Drücken Sie F5, oder wählen Sie im Menü Debuggen die Option Starten.
Das Formular wird nun immer in französischer Sprache angezeigt. Wenn Sie die Größe der Schaltfläche zuvor geändert haben, damit die etwas längere französische Zeichenfolge vollständig angezeigt wird, können Sie nun feststellen, dass die Größe der Schaltfläche auch in der französischen Ressourcendatei beibehalten wurde.
So fügen Sie dem Projekt manuell Ressourcendateien hinzu und bearbeiten diese
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Wählen Sie im Feld Vorlagen die Vorlage Assembly-Ressourcendatei aus. Geben Sie in das Feld Name den Dateinamen "WinFormStrings.resx" ein. Die Datei WinFormStrings.resx enthält Reserveressourcen in englisch. Auf diese Ressourcen wird zugegriffen, wenn die Anwendung keine geeigneteren Ressourcen für die oberflächenspezifische Kultur finden kann.
Die Datei wird Ihrem Projekt im Projektmappen-Explorer hinzugefügt und im XML-Designer automatisch in der Datenansicht geöffnet.
Aktivieren Sie im Bereich Datentabellen den Eintrag data.
Klicken Sie im Bereich Daten auf eine leere Zeile, und geben Sie die Bezeichnung strMessage in die Spalte name und Hello World in die Spalte value ein.
type oder mimetype einer Zeichenfolge müssen nicht angegeben werden; sie werden für Objekte verwendet. Der Typbezeichner enthält den Datentyp des gespeicherten Objekts. Der MIME-Typspezifizierer enthält den Basistyp (base64) der gespeicherten binären Daten, sofern das Objekt aus binären Daten besteht.
Klicken Sie im Menü Datei auf WinFormStrings.resx speichern.
Führen Sie die Schritte 1-5 noch zweimal aus, um zwei oder mehr Ressourcendateien mit den Namen WinFormStrings.de-DE.resx und WinFormStrings.fr-FR.resx zu erstellen. Die Zeichenfolgenressourcen sind in der folgenden Tabelle aufgeführt. Die Datei WinFormStrings.de-DE.resx enthält Ressourcen speziell für das in Deutschland gesprochene Deutsch. Die Datei WinFormStrings.fr-FR.resx enthält Ressourcen speziell für das in Frankreich gesprochene Französisch.
Ressourcendateiname
Name
Wert
WinFormStrings.de-DE.resx
strMessage
Hallo Welt
WinFormStrings.fr-FR.resx
strMessage
Bonjour le Monde
So greifen Sie auf die manuell hinzugefügten Ressourcen zu
Importieren Sie im Code-Editor den System.Resources -Namespace am Anfang des Codemoduls.
' Visual Basic Imports System.Resources // C# using System.Resources; // Visual J# import System.Resources.*;
Doppelklicken Sie in der Entwurfsansicht auf die Schaltfläche, um den Code für den Click-Ereignishandler anzuzeigen und den folgenden Code hinzuzufügen: Der ResourceManager-Konstruktor benötigt zwei Argumente. Das erste Argument ist der Stammname der Ressourcen, d. h. der Name der Ressourcendatei ohne die Kultur- und RESX-Suffixe. Das zweite Argument ist die Hauptassembly.
In dieser exemplarischen Vorgehensweise werden keine Namespaces deklariert, sodass das erste Argument des ResourceManager-Konstruktors das Format ProjectName.ResourceFileRootName annehmen kann. Allerdings wird in einer realen Anwendung die DefaultNamespace-Eigenschaft festgelegt. In diesem Fall müssen Sie den Ressourcenmanager mit dem vollständigen Namen der Ressourcendatei einschließlich des Namespaces deklarieren. Wenn der Standardnamespace beispielsweise MyCompany.MyApplication.MyComponent lautet, kann das erste Argument des ResourceManager-Konstruktors MyCompany.MyApplication.MyComponent.WinFormStrings sein.
' Visual Basic ' Declare a Resource Manager instance. Dim LocRM As New ResourceManager("WindowsApplication1.WinFormStrings", GetType(Form1).Assembly) ' Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage")) // C# // Declare a Resource Manager instance. ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",typeof(Form1).Assembly); // Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage")); // Visual J# // Declare a Resource Manager instance. ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings", System.Type. GetType("WindowsApplication1.Form1").get_Assembly()); // Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage"));
Hinweis: Standardmäßig wird beim ResourceManager-Objekt die Groß-/Kleinschreibung beachtet. Wenn Sie bei der Suche die Groß- und Kleinschreibung nicht beachten möchten, sodass "TXTWELCOME" dieselbe Ressource wie "txtWelcome" abruft, legen Sie die IgnoreCase-Eigenschaft des Ressourcen-Managers auf true fest. Aus Leistungsgründen ist es jedoch immer am sinnvollsten, die korrekte Groß-/Kleinschreibung für die Ressourcennamen anzugeben. Wenn Sie die Groß-/Kleinschreibung bei der Suche nicht berücksichtigen, können Probleme mit der Leistung auftreten.
Erstellen Sie das Formular, und führen Sie es aus. Klicken Sie auf die Schaltfläche.
Das Meldungsfeld zeigt eine Zeichenfolge an, die sich auf die benutzeroberflächenspezifische Kultureinstellung bezieht. Wenn keine Ressource für die benutzerspezifische Kultur gefunden wird, wird eine Zeichenfolge aus den Reserveressourcen angezeigt.
Siehe auch
Aufgaben
Gewusst wie: Festlegen der Kultur und Benutzeroberflächenkultur für die Windows Forms-Lokalisierung