Desenvolvimento - ASP. NET

Utilizando Resource Manager (Criando uma Aplicação Multi Idiomas)

Este artigo irá mostrar de uma forma rápida, como transformar seu site ou aplicação em multilíngüe a fim de maximizar o alcance do seu WebSite.

por Luiz Felipe N. Neto



Meu intuito em escrever este artigo é mostrar, de uma forma rápida, como transformar seu site ou aplicação em multilíngüe a fim de maximizar o alcance do seu WebSite. Utilizarei o Resource Manager do Visual Studio 2005 dentro de um WebSite.

Primeiro iremos criar um WebSite padrão, chamei-o de ResourceManager.

Dentro da página default.aspx coloquei um Label (chamado lbl_rm) e um DropDownList (chamado dp_rm).

No DropDownList criei dois itens: Português (com o valor pt-BR) e Inglês (com o valor en-US), esses valores irão ajudar na mudança do idioma.

Agora chegou a hora de colocarmos no nosso WebSite um Resource File.

Adicione um novo Item ao WebSite e escolha Resource File, coloque o nome de RM.resx.

Automaticamente o Visual Studio irá imprimir na tela uma mensagem. Essa mensagem é para você incluir seu Resource dentro da pasta App_GlobalResource. Escolha SIM.

Após Criar o RM.resx crie um novo Resource chamado de RM.en-US.resx. Ou seja, estamos criando dois resource um para o idioma português e outro para o inglês.

Para o RM.resx coloquei um item: "ResRM" com o valor "Livro em Português". O comment pode ser ao seu critério, por se tratar somente de um comentário referente à chave do resource.

Para o RM.en-US.resx coloquei um item igual ao RM.resx. É importante ter os mesmos nomes para efetuarmos a troca de idioma. Os valores eu coloquei em inglês.

Crie uma classe chamada Idioma.cs. Essa classe nós iremos colocar alguns métodos para mudança de idioma.

Pois bem, com a classe criada iremos adicionar alguns itens importantes:

Adicione o namespace Resources (using Resources);

Crie um atributo private string chaveRm = "";

Crie uma propriedade

public string ChaveRm
{
    get { return chaveRm; }
    set { chaveRm = value; }
}

Crie dois métodos

public static string RetornaMensagem(string NomeMensagem)
{
    System.Resources.ResourceManager resx = new System.Resources.ResourceManager(typeof(RM));
    return resx.GetString(NomeMensagem, System.Threading.Thread.CurrentThread.CurrentCulture);
}

public static void MudaCultura(string cultura)
{
    if (cultura=="pt-BR")
    {
        System.Threading.Thread.CurrentThread.CurrentCulture =
            new System.Globalization.CultureInfo("pt-BR", true);            

    }
    else if(cultura=="en-US")
    {
        System.Threading.Thread.CurrentThread.CurrentCulture =
            new System.Globalization.CultureInfo("en-US", true);
      
    }
}

No arquivo Default.aspx.cs através do SelectedIndexChanged do DropDown, coloque o seguinte código.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Idioma.MudaCultura(drp_rm.SelectedValue);
    this.lbl_rm.Text = Idioma.RetornaMensagem("ResRM");
}
Pronto. Ao executar a aplicação o resultado deve ser:

Luiz Felipe N Neto

Luiz Felipe N. Neto

Luiz Felipe N. Neto - Analista de sistemas da Portais Brasil (www.portaisbrasil.com.br).