Exemplarische Vorgehensweise: Verwenden von Ressourcen zur Lokalisierung mit ASP.NET
Aktualisiert: November 2007
Ein effektives Verfahren zur Erstellung lokalisierter Webseiten besteht darin, für den Text und die Steuerelemente der Seite Ressourcen zu verwenden, die auf die Sprache und Kultur der Benutzer abgestimmt sind. Mithilfe von in Ressourcenobjekten platzierten Eigenschaften kann ASP.NET zur Laufzeit je nach Sprache und Kultur des Benutzers die richtige Eigenschaft auswählen. Dies ist ein ganz einfacher Vorgang:
In einer Ressourcendatei (RESX-Datei) werden Werte gespeichert.
Auf der Seite geben Sie an, dass Steuerelemente Ressourcen für Eigenschaftenwerte verwenden müssen.
Zur Laufzeit werden die Eigenschaftenwerte der Steuerelemente aus der Ressourcendatei abgeleitet.
Hinweis: In der Praxis können Sie Werte in benutzerdefinierten Ressourcenobjekten wie einer Datenbank speichern. In dieser exemplarischen Vorgehensweise speichern Sie die Werte jedoch in einer RESX-Datei.
Mithilfe von Visual Web Developer können Sie Ressourcen für Steuerelemente, Steuerelementeigenschaften und HTML für Steuerelemente generieren, ohne Code zu schreiben.
Zu den Aufgaben in dieser exemplarischen Vorgehensweise gehören:
Aktivieren der Lokalisierung von ASP.NET-Seiten.
Generieren einer Ressourcendatei und implizites Zuordnen ihrer Werte zu den Steuerelementen in der Anwendung.
Erstellen von Lokalisierungsressourcendateien und explizites Verweisen auf diese Dateien auf Seiten mithilfe von deklarativen Ausdrücken.
Vorbereitungsmaßnahmen
Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Visual Web Developer (Visual Studio).
.NET Framework.
Erstellen einer Website
Wenn Sie bereits eine Website in Visual Web Developer erstellt haben (siehe Exemplarische Vorgehensweise: Erstellen einer einfachen Webseite in Visual Web Developer), können Sie diese Website verwenden und zum nächsten Abschnitt, "Implizite Lokalisierung mit ASP.NET", übergehen. Erstellen Sie andernfalls mit den im Folgenden beschriebenen Schritten eine neue Website und eine neue Seite.
So erstellen Sie eine Dateisystem-Website
Öffnen Sie Visual Web Developer.
Klicken Sie im Menü Datei nacheinander auf Neu und auf Website.
Das Dialogfeld Neue Website wird angezeigt.
Klicken Sie unter Von Visual Studio installierte Vorlagen auf ASP.NET-Website.
Geben Sie im Feld Speicherort den Namen des Ordners ein, in dem Sie die Seiten der Website aufbewahren möchten.
Geben Sie zum Beispiel den Ordnernamen C:\WebSites ein.
Klicken Sie in der Liste Sprache auf die Programmiersprache, in der Sie arbeiten möchten.
Klicken Sie auf OK.
Visual Web Developer erstellt den Ordner und eine neue Seite mit dem Namen Default.aspx.
Implizite Lokalisierung mit ASP.NET
In diesem Abschnitt arbeiten Sie mit impliziter Lokalisierung. Bei der impliziten Lokalisierung geben Sie an, dass Steuerelementeigenschaften automatisch aus einer Ressourcendatei gelesen werden. Die zu lokalisierenden Eigenschaften müssen jedoch nicht explizit angegeben werden. Dann erstellen Sie eine Ressourcendatei mit lokalisierten Werten für bestimmte Eigenschaften. Zur Laufzeit untersucht ASP.NET die Steuerelemente auf der Seite. Wenn das Steuerelement zur Verwendung der impliziten Lokalisierung markiert ist, durchsucht ASP.NET die Ressourcendatei für die Seite. Falls Eigenschafteneinstellungen für das markierte Steuerelement gefunden werden, ersetzt ASP.NET die Werte im Steuerelement durch diejenigen in der Ressourcendatei.
In diesem Beispiel für die implizite Lokalisierung werden Designer und Ressourcen-Editor verwendet, um eine als Ausgangspunkt für die Lokalisierung in zwei Sprachen zu verwendende Standardressourcendatei zu generieren. Visual Web Developer generiert eine nur auf den Steuerelementen auf der Seite basierende Ressourcendatei. Aus diesem Grund wird empfohlen, die Ressourcendatei erst zu generieren, wenn das Steuerelementlayout der Seite einschließlich einfacher Steuerelemente wie Schaltflächen, Bezeichnungen und Textfelder fertig ist.
So platzieren Sie Steuerelemente auf einer Seite
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Default.aspx, klicken Sie auf Umbenennen, und geben Sie dann Sample.aspx ein.
Auf diese Weise vermeiden Sie im weiteren Verlauf der exemplarischen Vorgehensweise Verwechslungen in Bezug auf Standardressourcendateien, da für die Namen von impliziten Ressourcendateien die Seitennamen verwendet werden.
Öffnen Sie Sample.aspx, und wechseln Sie in die Entwurfsansicht.
Ziehen Sie in der Toolbox aus dem Abschnitt Standard ein Button-Steuerelement, ein Label-Steuerelement und ein TextBox-Steuerelement auf die Seite.
Legen Sie Text für die Steuerelemente jeweils auf English Button, English Label bzw. English TextBox fest.
Nachdem Sie die Seite erstellt und die Steuerelemente hinzugefügt haben, können Sie mithilfe eines Visual Web Developer-Befehls eine lokale Ressourcendatei für diese Seite generieren. Die lokale Ressourcendatei enthält die Ressourcenzeichenfolgen für die Steuerelemente auf der Seite. Visual Web Developer generiert eine Ressourcenzeichenfolge für jede Eigenschaft, die im Steuerelement intern als lokalisierbar festgelegt ist. Für jedes Steuerelement können andere Eigenschaften als lokalisierbar festgelegt werden. Die meisten textbasierten Eigenschaften sind jedoch auf diese Weise markiert.
So generieren Sie eine Ressourcendatei automatisch
Klicken Sie auf die Designeroberfläche oder auf ein Steuerelement.
Klicken Sie im Menü Extras auf Lokale Ressource generieren.
Visual Web Developer erstellt einen neuen Ordner mit dem Namen App_LocalResources sowie im Ordner App_LocalResources eine neue Datei mit dem Namen Sample.aspx.resx. Wenn der Seite ein anderer Name als Sample.aspx zugewiesen wurde, enthält der Name der RESX-Datei den ausgewählten Namen. Bei Verwendung der impliziten Lokalisierung basieren die Namen von Ressourcendateien auf den Namen einzelner Seiten.
Wechseln Sie in die Quellansicht, um die Änderungen an den Steuerelementdeklarationen anzuzeigen.
Den Steuerelementen wurde von Visual Web Developer ein Attribut hinzugefügt, um die Werte aus der neu erstellten Ressourcendatei abzurufen. Das Markup des Button-Steuerelements enthält beispielsweise ein neues meta:resourcekey-Attribut.
<asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="English Button" />
Wenn ein Browser eine Anforderung an den Webserver sendet, kann die Anforderung Informationen zur aktuellen Sprache und Kultur enthalten. Ein Browser kann beispielsweise die Zeichenfolge "en-us" senden, um anzugeben, dass er zur Verwendung von Englisch/USA eingestellt wurde. Ein andere Browser sendet möglicherweise die Zeichenfolge "en-gb", um anzuzeigen, dass er zur Verwendung von Britischem Englisch konfiguriert wurde.
Hinweis: |
---|
Die Sprach- und Kultureinstellungen in einer Browseranforderung sind keine absolut zuverlässige Methode, um die bevorzugte Sprache des Benutzers festzustellen. Die Einstellungen zeigen lediglich an, welcher Wert im Browser konfiguriert bzw. vom zugrunde liegenden Betriebssystem geerbt wurde. Im Rahmen dieser exemplarischen Vorgehensweise verlassen Sie sich auf die Sprach- und Kultureinstellungen, in einer Produktionsanwendung sollten Sie Benutzern jedoch auch die manuelle Auswahl einer Sprache und Kultur ermöglichen. |
Die Ressourcendatei wird als Standardressourcendatei für alle Anforderungen verwendet. (Es handelt sich um die Ressourcendatei für die Fallbackkultur.) Wenn vom Browser keine Kultur angegeben ist oder wenn die Browseranforderung eine nicht unterstützte Sprache oder Kultur enthält, werden die Ressourcenwerte dieser Standarddatei entnommen.
Nach der Erstellung der Ressourcendatei können Sie mit dem Ressourcen-Editor in diese Datei lokalisierten Text eingeben.
So bearbeiten Sie die Ressourcendatei mit dem Ressourcen-Editor
Öffnen Sie im Projektmappen-Explorer Sample.aspx.resx.
Im Ressourcen-Editor sind unter Wert die Text-Eigenschaften für die einzelnen auf der Seite platzierten Steuerelemente angeordnet. Indem Sie den Wert hier ändern, ändern Sie ihn für die Standardkultur.
Legen Sie ButtonResource1.Text auf Edited English Text fest.
Speichern Sie die Datei.
Nun können Sie die Seite testen.
So testen Sie die Seite
Drücken Sie STRG+F5, um die Seite auszuführen.
Der im Ressourcen-Editor eingegebene Text wird als Bezeichnung für Button1 angezeigt. Bei Verwendung der impliziten Lokalisierung überschreiben Syntaxeigenschaften in Ressourcendateien die auf der Seite selbst angegebenen Eigenschaften.
Hinzufügen von weiteren Kulturen
Für jede Kombination aus Sprache und Kultur wird eine eindeutige Ressourcendatei benötigt. Um weitere Kulturen hinzuzufügen, können Sie die Standarddatei als Ausgangspunkt verwenden. Sie können für verschiedene Kulturen und Gebietsschemas Ressourcendateien erstellen, deren Namen den jeweiligen ISO-Sprachcode enthalten (z. B. en-us, fr-ca und en-gb). Der ISO-Code wird zwischen dem Seitennamen und der Dateinamenerweiterung .resx eingefügt, wie in Sample.aspx.en-us.resx. Um eine kulturneutrale Sprache anzugeben, entfernen Sie die Landeskennzahl, sodass z. B. Sample.aspx.fr.resx für Französisch festgelegt wird.
Hinweis: |
---|
Bei Verwendung der impliziten Lokalisierungssyntax müssen Sie für jede Seite einen separaten Satz von Ressourcendateien erstellen. |
So erstellen Sie eine kulturell neutrale französische Sprachdatei
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei Sample.aspx.resx, und klicken Sie dann auf Kopieren.
Klicken Sie mit der rechten Maustaste auf den Ordner App_LocalResources, und klicken Sie dann Einfügen.
Visual Web Developer erstellt eine Datei mit dem Namen Kopie von Sample.aspx.resx.
Klicken Sie mit der rechten Maustaste auf die Datei Kopie von Sample.aspx.resx, klicken Sie auf Umbenennen, und geben Sie dann Sample.aspx.fr.resx ein.
Sample.aspx.fr.resx gibt eine Datei für kulturell neutralen Text in französischer Sprache an.
Öffnen Sie Sample.aspx.fr.resx.
Geben Sie für die Steuerelemente Button, Label und TextBox für Text jeweils French Button, French Label bzw. French TextBox ein.
Speichern Sie die Datei.
Testen mit einer alternativen Spracheinstellung
Bevor Sie prüfen können, ob diese neue Ressourcendatei von ASP.NET verwendet wird, müssen Sie die Browsereinstellungen so ändern, dass die gewünschte Kultur angefordert wird.
So ändern Sie die Spracheinstellungen des Browsers
Klicken Sie in Internet Explorer im Menü Extras auf Internetoptionen.
Klicken Sie auf Sprachen.
Klicken Sie im Dialogfeld Spracheinstellung auf Hinzufügen.
Klicken Sie im Dialogfeld Sprache hinzufügen unter Sprachen auf Französisch (Frankreich) [fr], und klicken Sie dann auf OK.
Klicken Sie auf Hinzufügen, und fügen Sie der Sprachenliste Spanisch (Mexiko) [es-mx] hinzu.
Klicken Sie auf Hinzufügen, und fügen Sie der Sprachenliste Arabisch (Ägypten) [ar-eg] hinzu.
Spanisch und Arabisch benötigen Sie im weiteren Verlauf dieser exemplarischen Vorgehensweise zum Testen.
Klicken Sie im Dialogfeld Spracheinstellung unter Sprache auf Französisch (Frankreich) [fr], und klicken Sie dann auf Nach oben und auf OK.
Internet Explorer ist nun so konfiguriert, dass fr als Spracheinstellung für alle Anforderungen übergeben wird. Mit der Einstellung auto für die Kultur auf der Seite Sample.aspx sucht ASP.NET nach einer Ressourcendatei und ihren entsprechenden Werten, um die Seite gemäß den bevorzugten Sprach- und Kultureinstellungen zu assemblieren.
So testen Sie die Seite
Drücken Sie in Visual Web Developer STRG+F5, um die Seite auszuführen.
Die Seite wird mit Werten aus der lokalisierten französischen Sprachdatei anstatt aus der englischen Version aktualisiert.
Hinweis: Sie können die Spracheinstellungen in Internet Explorer zurücksetzen, indem Sie in das Dialogfeld Spracheinstellung zurückkehren und Ihre bevorzugte Sprache in der Liste wieder an die oberste Stelle setzen.
Explizite Lokalisierung mit ASP.NET
Im ersten Teil dieser exemplarischen Vorgehensweise haben Sie die implizite Lokalisierung von ASP.NET verwendet, um lokalisierten Text für Steuerelemente anzuzeigen. Sie haben eine Ressourcendatei mit Eigenschaftenwerten generiert, und dabei haben Sie jedem Steuerelement ein Attribut hinzugefügt, mit dem dieses angewiesen wurde, seine Eigenschaftenwerte mit Werten (falls vorhanden) aus der Ressourcendatei zu füllen. Die implizite Lokalisierung funktioniert automatisch, da Sie nicht für jede Eigenschaft einzeln festlegen müssen, wie Informationen aus einer Ressourcendatei gelesen werden.
Bisweilen benötigen Sie jedoch eine direktere Kontrolle über die Festlegung von Eigenschaften. In diesem Fall können Sie anstatt der impliziten Lokalisierung die explizite Lokalisierung verwenden. Mit der expliziten Lokalisierung legen Sie den Wert einer Eigenschaft mit einem Ausdruck fest, der auf eine Ressourcendatei zeigt. Bei der Ausführung der Seite wird der Ausdruck ausgewertet, der Wert wird aus der angegebenen Ressourcendatei gelesen, und dann wird die Eigenschaft auf den Wert festgelegt.
Die explizite Lokalisierung ist nützlich, wenn Sie neben Steuerelementen und Bezeichnungen auch große Textnachrichten oder benutzerdefinierte Meldungen lokalisieren möchten. Sie können beispielsweise eine Reihe von lokalisierten Willkommens- und Dankesnachrichten für eine E-Commerce-Site entwickeln und diese Texte mithilfe von expliziten deklarativen Ausdrücken auf den Seiten einfügen. Darüber hinaus müssen Sie mit der expliziten Lokalisierung nicht für jede Seite einen separaten Satz von lokalisierten Ressourcendateien pflegen, sondern können einen einzelnen Satz verwalten.
In diesem Abschnitt erstellen Sie Ressourcendateien manuell und verweisen mithilfe der deklarativen Ausdruckssyntax von ASP.NET auf sie. Sie erstellen eine Ressourcendatei für eine einfache Dankesnachricht. Anders als bei der Verwendung des Designers werden keine separaten Ressourcendateien für jede ASP.NET-Seite benötigt.
Der Basisname der Ressourcendatei lautet LocalizedText. Für jede zu lokalisierende Sprache erstellen Sie eine andere Datei mit dem entsprechenden Sprachcode (und optional Kulturcode) als Teil des Dateinamens. Für Englisch (USA) erstellen Sie z. B. eine Datei mit dem Namen LocalizedText.resx. Für Französisch (Kanada) erstellen Sie eine Datei mit dem Namen LocalizedText.fr-ca.resx. Beide Dateien werden im Verzeichnis Resources der Webanwendung abgelegt. Im Unterschied zum impliziten Beispiel weiter oben ist es nicht erforderlich, eine Ressourcendatei für jede ASPX-Seite zu pflegen. Stattdessen können Sie für jede unterstützte Sprache oder Kultur einen einzelnen Satz von Dateien verwalten.
So erstellen Sie eine Ressourcendatei
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Stamm der Website, und klicken Sie dann auf ASP.NET-Ordner hinzufügen und auf App_GlobalResources.
Klicken Sie mit der rechten Maustaste auf den Ordner App_GlobalResources, und klicken Sie dann auf Neues Element hinzufügen.
Klicken Sie unter Von Visual Studio installierte Vorlagen auf Ressourcendatei.
Geben Sie LocalizedText.resx in das Feld Name ein, und klicken Sie dann auf Hinzufügen.
Die Datei LocalizedText.resx fungiert als Ressource für die Fallbackkultur.
Erstellen Sie eine zweite RESX-Datei, und benennen Sie sie LocalizedText.fr.resx.
Die Zeichenfolge "fr" kennzeichnet die Datei als die Ressource, die zu verwenden ist, wenn die Sprache des Browsers (unabhängig von der Kultur) auf Französisch festgelegt ist.
Erstellen Sie eine dritte RESX-Datei, und benennen Sie sie LocalizedText.es-mx.resx.
Die Zeichenfolge "es-mx" kennzeichnet die Datei als die Ressource, die zu verwenden ist, wenn die Sprache des Browsers auf Spanisch (Mexiko) festgelegt ist.
Öffnen Sie die Datei LocalizedText.resx.
Geben Sie unter der Spalte Name in der ersten Zeile Msg1 ein.
Geben Sie unter der Spalte Wert in der ersten Zeile Hello ein.
Speichern und schließen Sie die Datei.
Öffnen Sie die Datei LocalizedText.fr.resx, erstellen Sie eine Ressourcenzeichenfolge mit dem Namen Msg1, und weisen Sie ihr den Wert Bon jour zu. Speichern Sie anschließend die Datei, und schließen Sie sie.
Öffnen Sie die Datei LocalizedText.es-mx.resx, erstellen Sie eine Ressourcenzeichenfolge mit dem Namen Msg1, und weisen Sie ihr den Wert Buenos días zu. Speichern Sie anschließend die Datei, und schließen Sie sie.
Hinweis: Um den Buchstaben mit Akut (í) einzufügen, geben Sie bei aktivierter NUM-Taste auf der Zehnertastatur ALT+0237 ein.
Sie haben drei Werte für die Ressource mit dem Namen Msg1 erstellt. ASP.NET liest den Wert je nach im Browser festgelegter Sprache aus der entsprechenden Ressourcendatei.
Nach der Erstellung der Ressourcendatei können Sie zur Seite zurückkehren und Steuerelemente hinzufügen, die auf die Ressource verweisen.
So fügen Sie der Seite ein Label-Steuerelement hinzu
Wechseln Sie zu Sample.aspx, und wechseln Sie dann in die Entwurfsansicht.
Ziehen Sie ein weiteres Label-Steuerelement auf die Seite.
Klicken Sie mit der rechten Maustaste auf das Label-Steuerelement, klicken Sie auf Eigenschaften, und klicken Sie dann im Feld Ausdrücke auf die Schaltfläche mit dem Auslassungszeichen (…).
Daraufhin wird das Dialogfeld Ausdrücke angezeigt.
Klicken Sie in der Liste Bindbare Eigenschaften auf Text.
Wählen Sie aus der Liste Ausdruckstyp die Option Ressourcen aus.
Legen Sie unter Ausdruckseigenschaften dann LocalizedText für ClassKey und Msg1 für ResourceKey fest.
Klicken Sie auf OK.
Wechseln Sie in die Quellansicht.
Das Textattribut des Label-Steuerelements besitzt nun einen expliziten Ausdruck, der die Basisdatei angibt, aus der die auszuwählende Ressource und der auszuwählende Schlüssel abgerufen werden.
<asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>">
Hinweis: Das LocalizedText-Attribut verfügt nicht über einen Sprachindikator, einen Kulturindikator oder eine RESX-Erweiterung, da es sich nicht um den tatsächlichen Dateinamen handelt. Stattdessen stellt LocalizedText die Basisressourcenklasse dar. Je nach vom Browser gesendeter Kultur wählt ASP.NET die Ressource aus der Datei mit dem entsprechenden Sprach- oder Kulturcode im Dateinamen aus, z. B. LocalizedText.fr.resx, LocalizedText.es-mx.resx oder, wenn keine übereinstimmende Sprache gefunden wird, LocalizedText.resx.
Nachdem die Ressourcendatei vollständig ist und der deklarative Ausdruck hinzugefügt wurde, können Sie die Seite testen. Nach dem letzten Test wurde der Browser so konfiguriert, dass Französisch als bevorzugte Sprache gesendet wird. Während des Tests ändern Sie mehrmals die Sprache des Browsers.
So testen Sie die Seite
Drücken Sie STRG+F5, um die Seite auszuführen.
Die im Ressourcen-Editor bereitgestellte französische Version des Texts wird als Text für das Label-Steuerelement angezeigt.
Klicken Sie in Internet Explorer im Menü Extras auf Internetoptionen.
Klicken Sie auf Sprachen.
Schieben Sie im Dialogfeld Spracheinstellung die Sprache Spanisch (Mexiko) [es-mx] an die Spitze der Sprachenliste. Klicken Sie anschließend auf OK, und schließen Sie das Dialogfeld Internetoptionen.
Drücken Sie F5, um den Browser zu aktualisieren.
Die spanische Version des Texts wird angezeigt.
Ändern Sie die Sprache in Arabisch, und drücken Sie dann F5, um die Seite erneut zu aktualisieren.
Dieses Mal wird der Text in der Sprache der Fallbackressourcendatei angezeigt. Da keine Datei LocalizedText.ar-eg.resx erstellt wurde, findet ASP.NET keinen der vom Browser gesendeten Sprache und Kultur entsprechenden Text und verwendet daher die Fallbackressourcendatei.
Wenn Sie mit dem Testen der Seite fertig sind, setzen Sie der Sprache auf die von Ihnen bevorzugte Sprache zurück.
Nächste Schritte
Die Lokalisierung kann ein komplexes Unterfangen sein. In dieser exemplarischen Vorgehensweise wurden einige der Features in Visual Web Developer dargestellt, die Ihnen die Arbeit erleichtern können. Wenn Sie mehr über die Lokalisierung und ASP.NET erfahren möchten, können Sie beispielsweise folgende Schritte ausführen:
Rufen Sie weitere Informationen zum Verwenden von Ressourcen in Anwendungen ab. Einzelheiten finden Sie unter Ressourcen in Anwendungen.
Verwenden Sie Klassen, die kulturbezogene Informationen wie Sprache, Land/Region, die verwendeten Kalender, Formatierungsmuster für Datumsangaben, Währungen und Zahlen sowie die Sortierreihenfolge für Zeichenfolgen definieren. Einzelheiten finden Sie unter System.Globalization.
Rufen Sie weitere Informationen zu empfohlenen Vorgehensweisen bei der Codierung für globale Benutzer ab. Einzelheiten finden Sie unter Empfehlungen für die Entwicklung weltweit einsatzfähiger Anwendungen.
Siehe auch
Konzepte
Verwenden der CultureInfo-Klasse
Weitere Ressourcen
Namespaces für Globalisierung und Lokalisierung in Visual Studio