Olá pessoal, com esse artigo termino de falar e mostrar como desenvolver utilizando internacionalização junto com o Visual Studio.NET 2005. Espero que possa valer para vocês como valeu para mim.

 

Os passos anteriores estão no site www.aspneti.com.

Continuando, mostro de outra forma como utilizar em seu sistema ou site.

 

 

Outra forma de Internacionalização

 

Mudarei o dispositivo de escolha da linguagem dentro do sistema. O próximo passo foi desenvolver com o mesmo sistema de mudança de cultura apenas clicando nos link’s logo no início da página.

 

Criei uma página chamada Exemplo.aspx com code behing Exemplo.aspx.cs. Adicionei apenas dois objetos do Visual Studio.NET 2005 à página. (3.3)

 

 

 

Objeto MENU - <asp:menu id=”menu” .... />

Objeto Label - <asp:label id=”lblDescricao” ... />

 

Referência: 3.3

 

 

Para melhor entendimento, a referência 3.4 mostra o código html da página exemplo.aspx total.

 

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Exemplo.aspx.cs" Inherits="Exemplo" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Internacionalização - Parte III</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:Menu ID="menu" runat="server" Orientation="Horizontal">

            <Items>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=1" Text="Português | "></asp:MenuItem>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=2" Text="English | "></asp:MenuItem>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=3" Text="German"></asp:MenuItem>

            </Items>

        </asp:Menu>

        <br /><br />

        <asp:Label ID="lblDescricao" runat="server"></asp:Label>

    </div>

    </form>

</body>

</html>

 

Referência: 3.4

 

 

Dentro do objeto menu da ferramenta, pode ser adicionado a propriedade items e em seguida menuitem. A propriedade NavigateUrl é a página ou link que será clicado. A propriedade Text é mostrada ao usuário.

 

Note que os links são adicionados para a mesma página apenas mudando os valores do parâmetro lang. Esses valores irão indicar qual a linguagem dentro do código C#.NET. (3.5)

 

 

<asp:Menu ID="menu" runat="server" Orientation="Horizontal">

            <Items>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=1" Text="Português | "></asp:MenuItem>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=2" Text="English | "></asp:MenuItem>

                <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=3" Text="German"></asp:MenuItem>

            </Items>

        </asp:Menu>

 

Referência: 3.5

 

 

 

 

 

 

 O objeto label é simples e fácil de criar. Nenhum segredo. (3.6)

 

 

 

<asp:Label ID="lblDescricao" runat="server"></asp:Label>

 

Referência: 3.6

 

 

Passando para o código .cs, usei o mesmo método mostrado anteriormente, porém feito para a página exemplo.aspx com algumas alterações.

 

 

 

//ímportes

using System.Globalization;

using System.Threading;

 

Referência: 3.7

 

A referência 3.7 mostra os importes feitos para uso de métodos específicos.

Dentro do método InitializeCulture(), usei uma função para verificar o tipo de parâmetro enviado onde define a cultura que deve ser criada e em seguida mostrar ao usuário final. (3.8)

 

 

  protected override void InitializeCulture()

    {

        if (Request.Params["lang"] != null)

        {

            String selectedLanguage = string.Empty;

            switch (Request.Params["lang"])

            {

                case "1":

                    selectedLanguage = "pt-BR";

                    break;

                case "2":

                    selectedLanguage = "en-US";

                    break;

                case "3":

                    selectedLanguage = "de-CH";

                    break;

            }

            UICulture = selectedLanguage;

            Culture = selectedLanguage;

 

            Thread.CurrentThread.CurrentCulture =

                CultureInfo.CreateSpecificCulture(selectedLanguage);

            Thread.CurrentThread.CurrentUICulture = new

                CultureInfo(selectedLanguage);

 

        }

        base.InitializeCulture();

    }

 

Referência: 3.8

 

 

Explicação:

 

Logo no início do método, verifico se existe algum valor para o parâmetro “lang” enviado pela página via querystring. Se estiver diferente de nulo faço uma verificação usando switch case onde é verificado o valor atribuindo a variável global selectedLanguage declarada anteriormente.

Usei as mesmas culturas. (3.9)

 

 

 

 

Português:

pt-BR

 

Inglês:

en-US

 

Alemão:

de-CH

 

Referência: 3.9

 

Se o valor for igual a 1, atribuo a variável o valor português, sendo 2 atribuo o valor inglês e por final sendo 3 atribuo o valor alemão.

O restante do código foi explicado nos itens anteriores.

 

 

No método Page_Load apenas atribuo ao label da tela o valor do recurso. (4.0)

 

 

    protected void Page_Load(object sender, EventArgs e)

    {

        lblDescricao.Text = Resources.ResourceKey.Label;

    }

 

Referência: 4.0

 

 

 

Segue o código da página Exemplo.aspx total. (4.1)

 

 

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

//ímportes

using System.Globalization;

using System.Threading;

 

 

public partial class Exemplo : System.Web.UI.Page

{

    protected override void InitializeCulture()

    {

        if (Request.Params["lang"] != null)

        {

            String selectedLanguage = string.Empty;

            switch (Request.Params["lang"])

            {

                case "1":

                    selectedLanguage = "pt-BR";

                    break;

                case "2":

                    selectedLanguage = "en-US";

                    break;

                case "3":

                    selectedLanguage = "de-CH";

                    break;

            }

            UICulture = selectedLanguage;

            Culture = selectedLanguage;

 

            Thread.CurrentThread.CurrentCulture =

                CultureInfo.CreateSpecificCulture(selectedLanguage);

            Thread.CurrentThread.CurrentUICulture = new

                CultureInfo(selectedLanguage);

 

        }

        base.InitializeCulture();

    }

 

    protected void Page_Load(object sender, EventArgs e)

    {

        lblDescricao.Text = Resources.ResourceKey.Label;

    }

}

 

Referência: 4.1

 

 

Referência: 4.2

 

No início da página, o recurso já traz a língua default do cliente, ou seja, português. Cliquei no menu English passando o parâmetro 2. Veja o resultado. (4.3)

 

 

Referência: 4.3

 

 

E para finalizar, cliquei na opção do menu German onde todo valor da página foi alterado para alemão. (4.4)

 

 

 

 

 

Referência: 4.4

 

 

Bom, fico por aqui.

Espero ter ajudado a todos.

Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@aspneti.com.

 

 

Livros publicados:

 

 

 

 

Mauricio Junior

www.aspneti.com

www.mauriciojunior.org

www.ascompras.com