ASP.NET - Globalizando sua aplicação II


Em meu artigo ASP.NET -Globalizando sua aplicação eu mostrei como você pode usar os recursos que ASP.NET lhe oferece para globalizar suas aplicações na web.

No artigo citado eu usei o Web Matrix como editor de código e como você já deve saber o Web Matrix não usa code-behind ; por isto eu volto a falar sobre o mesmo assunto criando uma aplicação Web que irá exibir os dados conforme a cultura selecionada mas desta vez usando o Visual Studio.

Inicie então um novo projeto no Visual Studio .NET e selecione em Templates : ASP.NET Web Application e em Project Types : Visual Basic. O nome que informei na caixa Location para o exemplo do artigo foi Localiza

O VS.NET irá criar o formulário Web WebForm1.aspx , vou usar este nome mas para aplicações reais você deve usar um nome pertinente.

Usando os recursos do VS.NET insira os controles: Label , Hyperlink, radiobutton e Image no formulário conforme figura abaixo:

O usuário irá poder selecionar no formulário um país , clicando em um dos radiobuttons , e , automaticamente os dados da página serão exibidos na cultura do país selecionado ( moeda , número , data , etc...)

Existem muitas formas de armazenar a informação sobre a cultura do cliente: cookies , sessão , banco de dados , etc. Qualquer que seja a forma a informação tem que estar disponível ao cliente enquanto ele navega nas páginas do site.

O namespace System.Globalization contém classes que definem a informação sobre uma cultura relacionada. Neste namespace a classe cultureinfo representa a informação sobre uma cultura específica e é usada para formatadas números , datas e outras informações.

Os imports necessários para a aplicação são:

Imports System
Imports
System.Threading
Imports
System.Globalization

a seguir devemos definir as variáveis usadas no projeto:

Private CULTURAPADRAO As [String] = "pt-BR"
Private ci As CultureInfo

O código do evento Load da página irá verificar qual opção o usuário selecionou e definir a cultura respectiva. A cultura padrão é
pt-BR.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then
            ci = New CultureInfo(CULTURAPADRAO)
        Else
            If enUsRadioButton.Checked Then
                ci = New CultureInfo("en-US")
            Else
                If jaJpRadioButton.Checked Then
                    ci = New CultureInfo("ja-JP")
                Else
                    If frFrRadioButton.Checked Then
                        ci = New CultureInfo("fr-FR")
                    Else
                        If ptBrRadioButton.Checked Then
                            ci = New CultureInfo("pt-BR")
                        End If
                    End If
                End If
            End If
        End If
        atulizaDados()
    End Sub

 

A rotina atualizaDados() irá exibir os valores da página no idioma pertinente a cultura selecionada.

Private Sub atulizaDados() '

        If Not (ci Is Nothing) Then
            Thread.CurrentThread.CurrentCulture = ci

            cultureNameLabel.Text = CultureInfo.CurrentCulture.Name & " (" & Thread.CurrentThread.CurrentCulture.Name & ")"
            cultureEnglishNameLabel.Text = CultureInfo.CurrentCulture.EnglishName
            cultureNativeNameLabel.Text = CultureInfo.CurrentCulture.NativeName
        End If

        dateLabel.Text = DateTime.Now.ToString("D")
        shortDateLabel.Text = DateTime.Now.ToString("d")

        Dim d As [Double] = 12345.678
        numberLabel.Text = d.ToString()

        currencyLabel.Text = d.ToString("c")
    End Sub 

 

Finalmente devemos criar a página nova página default.aspx que será chamada quando o usuário clicar no link Menu Principal. Para criar a página selecione a opção Project e a seguir Add Web Form.

Abaixo o layout da página :

A página exibe um controle hyperlink que remete a página WebForm1.aspx quando clicado. O código do hyperlink é

<asp:HyperLink id="HyperLink" runat="server" NavigateUrl="WebForm1.aspx" Font-Names="Trebuchet MS">Artigo - Localizando dados do Cliente</asp:HyperLink><BR>

Com isto chegamos ao final desta pequena revisão.

Eu sei , é apenas ASP.NET , mas eu gosto ...


José Carlos Macoratti