Compartilhar via


Como: definir a cultura e cultura da IU para globalização de página da Web do ASP.NET

 

Em uma página da Web do ASP.NET, você pode definir como dois valores de cultura, a Culture e UICulture Propriedades. O Culture valor determina os resultados das funções dependentes de cultura, como a data, número e formato de moeda e assim por diante. O UICulture valor determina quais recursos são carregados para a página.

Observação

O Culture e UICulture propriedades são definidas usando cadeias de caracteres padrão da Internet que identificam o idioma (por exemplo, en para inglês, es para espanhol, e de para alemão) e a cultura (por exemplo, US para os Estados Unidos, GB para Grã-Bretanha, MX para México e DE da Alemanha). Alguns exemplos são en-US para Inglês/Estados Unidos, en-GB para inglês/Grã-Bretanha, e es-MX para espanhol, México. Para obter mais informações, consulte CultureInfo.

As duas configurações de cultura não precisam ter o mesmo valor. Dependendo do seu aplicativo, talvez seja importante defini-las separadamente. Um exemplo é um site de leilão. O UICulture propriedade pode mudar para cada navegador da Web, enquanto o Culture permanece constante. Portanto, os preços são sempre exibidos na mesma moeda e formatação.

O Culture valor pode ser definido para culturas específicas apenas, como en-US ou en-GB. Isso impede que o requisito para identificar o símbolo correto da moeda a ser usado para en, onde en-US e en-GB têm símbolos de moeda diferente.

Os usuários podem definir a cultura de interface do Usuário e a cultura em seus navegadores. Por exemplo, no Microsoft Internet Explorer, no ferramentas menu, os usuários podem clicar Opções da Internet, no geral clique em idioma, e, em seguida, definir sua preferência de idioma. Se o enableClientBasedCulture atributo o globalização elemento no arquivo Web. config está definido como true, ASP.NET pode definir a cultura de interface do Usuário e a cultura para uma página da Web automaticamente, com base nos valores que são enviados por um navegador.

Não é uma prática recomendada confiar exclusivamente nas configurações do navegador para determinar a cultura da interface do Usuário para uma página. Os usuários frequentemente usam navegadores que não estão definidos para suas preferências (por exemplo, em um cybercafé). Você deve fornecer um método para os usuários escolherem explicitamente um idioma ou idioma e cultura (CultureInfo nome) para a página.

Para definir a cultura e cultura da interface do Usuário para uma página da Web ASP.NET declarativamente

  • Para definir a cultura de interface do Usuário e a cultura para todas as páginas, adicione um globalization seção ao arquivo Web. config e defina o uiculture e culture atributos, como mostrado no exemplo a seguir:

    <globalization uiCulture="es" culture="es-MX" />
    
  • Para definir a cultura de interface do Usuário e a cultura para uma página individual, defina a Culture e UICulture atributos do @ Page diretiva, conforme mostrado no exemplo a seguir:

    <%@ Page UICulture="es" Culture="es-MX" %>
    
  • Para o ASP.NET definir a cultura de interface do Usuário e a cultura para o primeiro idioma que é especificado nas configurações do navegador atual, defina UICulture e Culture para auto. Como alternativa, você pode definir esse valor auto: culture_info_name, onde culture_info_name é um nome de cultura. Para obter uma lista de nomes de cultura, consulte CultureInfo. Você pode fazer essa configuração tanto @ Page diretiva ou arquivo Web. config.

Para definir a cultura e cultura da interface do Usuário para uma página da Web do ASP.NET programaticamente

  1. Substituir o InitializeCulture método para a página.

  2. No método substituído, determine qual o idioma e cultura para definir a página.

    Observação

    O InitializeCulture método é denominado muito cedo no ciclo de vida da página, antes que os controles sejam criados ou propriedades são definidas para a página. Portanto, para ler valores que são passados para a página de controles, você deve obtê-los diretamente da solicitação usando o Form coleção.

  3. Defina a cultura e cultura da interface do Usuário em uma das seguintes maneiras:

    • Definir o Culture e UICulture Propriedades da página para a cadeia de caracteres de idioma e cultura (por exemplo, en-US). Essas propriedades são internas à página e só podem ser usadas em uma página.

    • Definir o CurrentUICulture e CurrentCulture Propriedades do thread atual para a interface do Usuário cultura e cultura, respectivamente. O CurrentUICulture propriedade usa uma cadeia de informações de idioma e cultura. Para definir o CurrentCulture propriedade, você cria uma instância da CultureInfo classe e chamar seu CreateSpecificCulture método.

    O exemplo de código a seguir mostra uma página da Web do ASP.NET que permite aos usuários selecionar seu idioma preferencial de uma lista suspensa. A página importa dois namespaces para torná-lo mais conveniente trabalhar com classes de segmentação e globalização.

    Um projeto de site da Web do Visual Studio com código-fonte está disponível para acompanhar este tópico: baixar.

    <%@ 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>
    

Confira Também

ASP.NET Globalization and Localization