Desenvolvimento - Visual Basic .NET

Trabalhando com Resource Files

O risco país caiu, o dolar está se estabilizando, este ano promete. É hora de exportar software. Sim, sim, mas para isso temos que internacionalizar a nossa aplicação. Neste artigo irei mostrar como trabalhar com os Resource Files.

por Cristian Arrano Townsend



O risco país caiu, o dolar está se estabilizando, este ano promete. É hora de exportar software. Sim, sim, mas para isso temos que internacionalizar a nossa aplicação.

Neste artigo irei mostrar como trabalhar com os Resource Files. Pra que serve? Vamos supor que você tenha uma aplicação em 3 idiomas (será o nosso exemplo). Cada idioma tem os seus textos diferentes de Labels. Sem dúvida a melhor maneira de gerenciar tais textos é com Resource Files. Irei utilizar o Visual Studio .NET e como exemplo farei um formulário de contatos.

Vale lembrar que internacionalizar a aplicação não basta mudar os textos para o idioma escolhido. Temos que nos preocupar com formato de datas, direção do texto (em alguns paises o texto eles leem da direita pra esquerda), moeda, dias da semana, etc.

O primeiro passo é criar uma aplicação Web. Irei chama-la de AppResourceSample.

Insira um novo Web Form chamado formContatos.aspx.

Monte o formulário semelhante a figura 1. As propriedades dos controles são mostradas na tabela abaixo.

Figura 1
Controle ID
Label lblTituloWebForm
Label lblNome
Label lblEmail
Label lblMensagem
Textbox txtNome
Textbox txtEmail
Textbox txtMensagem
Button btnEnvia
Label lblStatusEnvio
O controle txtMensagem será do tipo Multiline e o label lblStatusEnvio estará invisivel (Visible=False).

Agora que temos o Web Form, vamos inserir os Resource Files para a aplicação. Para inserir um Resource, escolha File -> Add New Item. (Figura 2)

Figura 2

Crie 3 arquivos .resx chamados:

  • res.en-Us.resx
  • res.pt-BR.resx
  • res.es-ES.resx

Nas tabelas a continuação estão os dados dos respectivos arquivos.

res.en-US.resx
Nome Valor
resNome Name
resEmail E-Mail
resMensagem Message
resBotaoEnvia Send
resStatus The message was send.
resTituloForm Contact Form
res.es-ES.resx
Nome Valor
resNome Nombre
resEmail E-Mail
resMensagem Mensaje
resBotaoEnvia Enviar
resStatus El mensaje fue enviado.
resTituloForm Formulário de contacto
res.pt-BR.resx
Nome Valor
resNome Nombre
resEmail E-Mail
resMensagem Mensagem
resBotaoEnvia Enviar
resStatus A mensagem foi enviada.
resTituloForm Formulário de contato

Agora vamos pro código do Web Form. Primeiro, precisamos importar os Namespaces necessários para trabalhar com a classe CurrentCulture.

No topo da classe (formContatos.aspx.vb), vamos inserir:

Imports System.Globalization
Imports
System.Resources
Imports
System.Threading

No Page_Load, insira o seguinte código:

If Not Page.IsPostBack Then
Dim objRm As New ResourceManager("AppResourceSample.res", GetType(formContatos).Assembly)
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
Me.lblNome.Text = objRm.GetString("resNome")
Me.lblEmail.Text = objRm.GetString("resEmail")
Me.lblMensagem.Text = objRm.GetString("resMensagem")
Me.btnEnviar.Text = objRm.GetString("resBotaoEnvia")
Me.lblStatusEnvio.Text = objRm.GetString("resStatus")
Me.lblTituloWebForm.Text = objRm.GetString("resTituloForm")
End If

Insira o seguinte método para testar a mensagem de envio:

Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click
Me.lblStatusEnvio.Visible = True
End
Sub

O resultado do Web Form é mostrado abaixo, na figura 3.

Figura 3

A classe ResourceManager serve para acessar os recursos de uma cultura especifica em tempo de execução. Como parâmetro é enviado o nome da aplicação seguido do nome base dos arquivos Resources. No nosso caso, todos os arquivos resources tem o nome base “res”.

Na linha seguinte, é configurado a cultura a ser utilizada. Para ter acesso a lista das demais culturas, faça um click aqui. (Site MSDN)

Nas seguintes linhas, configuramos os valores para los labels do Web Form. Para utilizar outro idioma, crie o Resource File, coloque os valores e mude o valor no CultureInfo. Assim de simples.

Para fazer o download dos arquivos, faça um clique aqui.

Resumo

Mais uma vez saimos ganhando com os poderosos recursos do .NET e do XML. Através dos Resource Files, podemos configurar a nossa aplicação para qualquer idioma com poucas linhas de código.

Cristian Arrano Townsend

Cristian Arrano Townsend - Trabalha há 12 anos com desenvolvimento de software. Atualmente trabalha como consultor da FCAMARA em Curitiba, trabalhando com .NET, Metodologias Ágeis e Sharepoint. Possui algumas certificações Microsoft .NET e é Certified Scrum Master