Resource e Internacionalização – Parte V Usando Visual Studio.NET 2005


por Mauricio Junior em 1/1/2011 0

 

 

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

 

 

 

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Documento padrão de desenvolvimento
Vídeos SQL Server 2005 Express Gratuitamente
Pegando dados do computador facilmente via software
Innovation Days
Windows Phone 7.1 Mango
Comunicação .NET e VB 6.0 – Parte I
MSDN Code Gallery
Inserindo no Sql Server
WebServices - Desenvolvimento Parte 2
Retirar Tag HTML dos campos utilizando expressão
Fotos do HTC Mozart
ASP.NET 2.0 - FileUpload
Windows 7 funciona até no Mac
XAML Power Toys
MSDN Media Center - download de vídeos
CES 2008: Keynote do Bill Gates
Promoções de livros móveis .NET
Visual Studio 11 – Melhorias e inovações parte 5
Dispositivos inteligentes a caminho da sua casa
Conecte - novidades tecnológicas revolucionam a medicina
Vídeo: Imagem Efeito
Membership
Criptografando URL
Como utilizar CSS no VS 2003
Generics na prática
Como criptografar a string de conexão no Web.Config.
Trabalhando com GridView e DataKeyNames com Várias Chaves
SQL Server 2005 SP2 já está disponível :)
Usando CalendarExtender para Mês e Ano
Treinamento VSTS
ASPNETi.COM chega aos 43 mil pageviews
Visual SourceSafe
Permissão de Página Utilizando Web.Config
Mudar de MasterPage em Tempo de Execução