Udostępnij za pośrednictwem


Porady: Ustawianie kultury i kultury UI dla globalizacji strony sieci Web ASP.NET

 

Na stronie sieci Web programu ASP.NET, można ustawić dwie wartości kultury, Culture i UICulture Właściwości.Culture Wartość określa wyniki funkcje zależne od kultury, takie jak data, liczba i formatowanie waluty i tak dalej.UICulture Wartość określa zasoby, które są ładowane dla danej strony.

Uwaga

Culture i UICulture Właściwości są ustawiane przy użyciu ciągów standard internetowy, identyfikują języka (na przykład en dla języka angielskiego, es dla hiszpańskim, i de dla języka niemieckiego) i kultury (na przykład US dla Stanów Zjednoczonych GB dla Wielkiej Brytanii MX dla Meksyku, i DE Niemcy). Oto niektóre przykłady en-US Angielski/United States en-GB dla języka angielskiego/Wielkiej Brytanii i es-MX Hiszpański/Meksyku. Aby uzyskać więcej informacji, zobacz CultureInfo.

Ustawienia kultury dwóch nie muszą mieć taką samą wartość. W zależności od aplikacji może być ważne, aby ustawić je oddzielnie. Przykładem jest witryną sieci Web.UICulture Właściwość mogą ulec zmianie w każdej przeglądarce sieci Web, natomiast Culture pozostaje stała. Ceny są zatem zawsze wyświetlane w walucie i formatowania.

Culture Do określonych kultur można ustawić wartości, takich jak en-US lub en-GB. Zapobiega to wymaganie do identyfikowania symbol waluty poprawne na potrzeby en, gdzie en-US i en-GB mają różne symbole waluty.

Kultura interfejsu Użytkownika i kultury można skonfigurować w przeglądarkach. Na przykład w programie Microsoft Internet Explorer na narzędzia menu, użytkownicy będą mogli kliknąć Opcje internetowe, na Ogólne kliknij pozycję języka, a następnie ustaw swoje preferencje językowe. Jeśli enableClientBasedCulture atrybutu globalizacji element w pliku Web.config jest ustawiony na wartość true, ASP.NET można ustawić kultury interfejsu Użytkownika i kultury dla strony sieci Web automatycznie na podstawie wartości, które są wysyłane przez przeglądarkę.

Nie jest najlepszym rozwiązaniem polegać wyłącznie na ustawienia przeglądarki, aby określić kultury interfejsu Użytkownika dla strony. Użytkownicy są często używane w przeglądarkach, które nie są ustawione na swoje Preferencje (na przykład w kawiarni internetowych). Musisz podać metodę dla użytkowników, aby jawnie wybrać język lub języka i kultury (CultureInfo name) dla danej strony.

Aby ustawić sposób deklaratywny kultury i kultury interfejsu Użytkownika dla strony sieci Web ASP.NET

  • Aby ustawić kultury interfejsu Użytkownika i kultury dla wszystkich stron, Dodaj globalization sekcji w pliku Web.config, a następnie ustaw uiculture i culture atrybutów, jak pokazano w poniższym przykładzie:

    <globalization uiCulture="es" culture="es-MX" />
    
  • Kultura interfejsu Użytkownika i kultury dla pojedynczej strony ustawia się Culture i UICulture atrybuty @ strony dyrektywy, jak pokazano w poniższym przykładzie:

    <%@ Page UICulture="es" Culture="es-MX" %>
    
  • Aby ustawić kultury interfejsu Użytkownika i kultury pierwszy język, który jest określony w bieżących ustawieniach przeglądarki programu ASP.NET, należy ustawić UICulture i Culture do auto. Można też ustawić tę wartość na **auto:**culture_info_name, gdzie culture_info_name jest nazwa kultury. Aby uzyskać listę nazw kultur, zobacz CultureInfo. Umożliwia to ustawienie albo @ strony dyrektywy lub plik Web.config.

Aby programowo ustawić kultury i kultury interfejsu Użytkownika dla strony sieci Web ASP.NET

  1. Zastąpienie InitializeCulture metody dla danej strony.

  2. W przeciążonej określić, które języka i kultury, aby ustawić strony.

    Uwaga

    InitializeCulture Metoda jest wywoływana bardzo wcześnie w cyklu życia strony, zanim formanty są tworzone lub właściwości są ustawione dla danej strony. W związku z tym, aby odczytać wartości, które są przekazywane do strony z formantów, należy uzyskać je bezpośrednio z żądania przy użyciu Form kolekcji.

  3. Ustawianie kultury i kultury interfejsu Użytkownika w jednym z następujących sposobów:

    Poniższy przykład kodu pokazuje stronę sieci Web ASP.NET, która pozwala użytkowników, wybierz preferowany język z listy rozwijanej. Strona importuje dwóch nazw ma ona być wygodniejszy do pracy z wątków i globalizacja klasy.

    Visual Studio sieci Web projektu lokacji przy użyciu kodu źródłowego jest dostępna do towarzyszenia w tym temacie: pobrać.

    <%@ 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 runat="server">
        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" runat="server">
        <div>
            <asp:ListBox ID="ListBox1" runat="server">
                <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" runat="server" 
                Text="Set Language" 
                meta:resourcekey="Button1" />
            <br />
            <asp:Label ID="Label1" runat="server" 
                Text="" 
                meta:resourcekey="Label1" />
            </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" uiculture="auto" %>
    <%@ Import Namespace="System.Threading" %>
    <%@ Import Namespace="System.Globalization" %>
    <script runat="server">
    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" runat="server">
        <div>
            <asp:ListBox ID="ListBox1" runat="server">
                <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" runat="server" 
                Text="Set Language" 
                meta:resourcekey="Button1" />
            <br />
            <asp:Label ID="Label1" runat="server" 
                Text="" 
                meta:resourcekey="Label1" />
            </div>
        </form>
    </body>
    </html>
    

Zobacz też

ASP.NET Globalization and Localization