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