Gewusst wie: Festlegen der Kultur und der Kultur der Benutzeroberfläche für die Globalisierung von ASP.NET-Webseiten

Aktualisiert: November 2007

Auf einer ASP.NET-Webseite können zwei Werte für die Kultur festgelegt werden, die Culture-Eigenschaft und die UICulture-Eigenschaft. Der Culture-Wert bestimmt die Ergebnisse kulturabhängiger Funktionen, z. B. die Datums-, Zahl- und Währungsformatierung usw. Der UICulture-Wert bestimmt, welche Ressourcen für die Seite geladen werden.

Hinweis:

Die Culture-Eigenschaft und die UICulture-Eigenschaft werden mithilfe von Internet-Standardzeichenfolgen festgelegt, mit denen die Sprache (z. B. en für Englisch, es für Spanisch und de für Deutsch) und die Kultur (z. B. US für USA, GB für Großbritannien, MX für Mexiko und DE für Deutschland) identifiziert werden. Einige Beispiele sind en-US für Englisch/USA, en-GB für Englisch/Großbritannien und es-MX für Spanisch/Mexiko. Weitere Informationen finden Sie unter CultureInfo.

Die beiden Kultureinstellungen müssen nicht denselben Wert aufweisen. Je nach Anwendung kann es wichtig sein, diese einzeln festzulegen. Ein Beispiel hierfür ist eine Webauktionssite. Die UICulture-Eigenschaft kann sich möglicherweise für jeden Webbrowser ändern, Culture bleibt hingegen konstant. Deshalb werden Preise immer in derselben Währung und mit derselben Formatierung angezeigt.

Der Culture-Wert kann nur auf spezifische Kulturen festgelegt werden, z. B. en-US oder en-GB. Daher ist es nicht erforderlich, das richtige Währungssymbol für en zu bestimmen, wenn en-US und en-GB unterschiedliche Währungssymbole aufweisen.

Benutzer können die Kultur der Benutzeroberfläche und die Kultur im Browser festlegen. Benutzer können beispielsweise in Microsoft Internet Explorer im Menü Extras auf Internetoptionen klicken, auf der Registerkarte Allgemein auf Sprache klicken und dann die Spracheinstellung festlegen. Wenn das enableClientBasedCulture-Attribut des globalization-Elements in der Datei Web.config auf true festgelegt ist, kann ASP.NET die Kultur der Benutzeroberfläche und die Kultur für eine Webseite basierend auf den von einem Browser gesendeten Werten automatisch festlegen.

Es empfiehlt sich nicht, sich bei der Bestimmung der Kultur der Benutzeroberflächen für eine Seite ausschließlich auf Browsereinstellungen zu verlassen. Benutzer verwenden häufig Browser, die nicht auf ihre Einstellungen festgelegt sind (z. B. in einem Internetcafé). Daher sollten Sie eine Methode für Benutzer bereitstellen, sodass diese explizit eine Sprache bzw. eine Sprache und eine Kultur (CultureInfo-Name) für die Seite auswählen können.

So legen Sie die Kultur und die Kultur der Benutzeroberfläche für eine ASP.NET-Webseite deklarativ fest

  • Zum Festlegen der Kultur der Benutzeroberfläche und der Kultur für alle Seiten fügen Sie der Datei Web.config einen globalization-Abschnitt hinzu, und legen Sie dann das uiculture-Attribut und das culture-Attribut wie im folgenden Beispiel fest:

    <globalization uiCulture="es" culture="es-MX" />
    
  • Zum Festlegen der Kultur der Benutzeroberflächen und der Kultur für eine einzelne Seite legen Sie das Culture-Attribut und das UICulture-Attribut der @ Page-Direktive wie im folgenden Beispiel fest:

    <%@ Page UICulture="es" Culture="es-MX" %>
    
  • Damit ASP.NET die Kultur der Benutzeroberflächen und die Kultur auf die in den aktuellen Browsereinstellungen als erste Sprache angegebene Sprache festlegt, legen Sie UICulture und Culture auf auto fest. Alternativ können Sie diesen Wert auf auto:kultur_info_name festlegen, wobei kultur_info_name der Name einer Kultur ist. Eine Liste von Namen für Kulturen finden Sie unter CultureInfo. Diese Einstellung kann entweder in der @ Page-Direktive oder der Datei Web.config vorgenommen werden.

So legen Sie die Kultur und die Kultur der Benutzeroberfläche für eine ASP.NET-Webseite programmgesteuert fest

  1. Überschreiben Sie die InitializeCulture-Methode für die Seite.

  2. Bestimmen Sie in der überschriebenen Methode, welche Sprache und Kultur für die Seite festgelegt werden sollen.

    Hinweis:

    Die InitializeCulture-Methode wird zu einem sehr frühen Zeitpunkt im Lebenszyklus der Seite aufgerufen, bevor Steuerelemente erstellt bzw. Eigenschaften für die Seite festgelegt werden. Zum Lesen der Werte, die von Steuerelementen an die Seite übergeben werden, müssen die Werte daher mithilfe der Form-Auflistung direkt aus der Anforderung abgerufen werden.

  3. Legen Sie die Kultur der Benutzeroberflächen und die Kultur auf eine der folgenden Weisen fest:

    • Legen Sie die Culture-Eigenschaft und die UICulture-Eigenschaft der Seite auf die Sprachen- und Kulturzeichenfolge fest (z. B. en-US). Diese Eigenschaften sind seitenintern und können nur auf der Seite verwendet werden.

    • Legen Sie die CurrentUICulture-Eigenschaft und CurrentCulture-Eigenschaft des aktuellen Threads auf die Kultur der Benutzeroberfläche bzw. die Kultur fest. Zu der CurrentUICulture-Eigenschaft zählt eine Informationszeichenfolge zu Sprache und Kultur. Zum Festlegen der CurrentCulture-Eigenschaft erstellen Sie eine Instanz der CultureInfo-Klasse, und rufen Sie die dazugehörige CreateSpecificCulture-Methode auf.

    Im folgenden Codebeispiel wird eine ASP.NET-Webseite veranschaulicht, auf der Benutzer die bevorzugte Sprache aus einer Dropdownliste auswählen können. Die Seite importiert zwei Namespaces, um die Verwendung von Thread- und Globalisierungsklassen zu vereinfachen.

    <%@ Page Language="VB" uiculture="auto" %>
    <%@ Import Namespace="System.Threading" %>
    <%@ Import Namespace="System.Globalization" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
      1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    
    <script >
        Protected Overrides Sub InitializeCulture()
            If Request.Form("ListBox1") IsNot Nothing Then
                Dim selectedLanguage As String = _
                    Request.Form("ListBox1")
                UICulture = Request.Form("ListBox1")
                Culture = Request.Form("ListBox1")
                Thread.CurrentThread.CurrentCulture = _
                    CultureInfo.CreateSpecificCulture(selectedLanguage)
                Thread.CurrentThread.CurrentUICulture = New _
                    CultureInfo(selectedLanguage)
            End If
            MyBase.InitializeCulture()
        End Sub
    </script>
    <html>
    <body>
        <form id="form1" >
        <div>
            <asp:ListBox ID="ListBox1" >
                <asp:ListItem Value="en-US" 
                    Selected="True">English</asp:ListItem>
                <asp:ListItem Value="es-MX">Español</asp:ListItem>
                <asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
            </asp:ListBox><br />
            <asp:Button ID="Button1"  
                Text="Set Language" 
                meta:resourcekey="Button1" />
            <br />
            <asp:Label ID="Label1"  
                Text="" 
                meta:resourcekey="Label1" />
            </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" uiculture="auto" %>
    <%@ Import Namespace="System.Threading" %>
    <%@ Import Namespace="System.Globalization" %>
    <script >
    protected override void InitializeCulture()
    {
        if (Request.Form["ListBox1"] != null)
        {
            String selectedLanguage = Request.Form["ListBox1"];
            UICulture = selectedLanguage ;
            Culture = selectedLanguage ;
    
            Thread.CurrentThread.CurrentCulture = 
                CultureInfo.CreateSpecificCulture(selectedLanguage);
            Thread.CurrentThread.CurrentUICulture = new 
                CultureInfo(selectedLanguage);
        }
        base.InitializeCulture();
    }
    </script>
    <html>
    <body>
        <form id="form1" >
        <div>
            <asp:ListBox ID="ListBox1" >
                <asp:ListItem Value="en-US" 
                    Selected="True">English</asp:ListItem>
                <asp:ListItem Value="es-MX">Español</asp:ListItem>
                <asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
            </asp:ListBox><br />
            <asp:Button ID="Button1"  
                Text="Set Language" 
                meta:resourcekey="Button1" />
            <br />
            <asp:Label ID="Label1"  
                Text="" 
                meta:resourcekey="Label1" />
            </div>
        </form>
    </body>
    </html>
    

Siehe auch

Weitere Ressourcen

ASP.NET-Globalisierung und -Lokalisierung