VB 6 - Internacionalizando sua aplicação - Utilizando os arq. de Recursos(RES)


Que tal fazer aquela sua aplicação falar outros idiomas ?

Além do toque profissional você estará apto a conquistar novos mercados. Se você deseja colocar o seu produto em um país de língua inglesa ou espanhola vai ter que 'traduzir' a linguagem usada no seu sistema para o idioma local. Como exemplo patente desta estratégia temos a Microsoft que traduz os seus aplicativos para diversos idiomas (só esta faltando o VB em português...).

Os arquivos de recursos , presentes no Visual Basic a partir da versão 5.0 , é a ferramenta ideal para realizar tal tarefa e iremos mostrar a você como usá-la.

Os arquivos de recursos são arquivos binários com a extensão RES que compõem o seu projeto Visual Basic e que é incorporado ao arquivo executável de sua aplicação ; sendo carregados somente quando necessários. Eles contém os seguintes objetos : Ícones, BitMaps , Cursores, Tabelas de Strings (Strings Tables) e estruturas definidas pelo usuário. Para editar e visualizar os recursos de um arquivo de recurso (RES) usamos um programa chamado Editor de Recursos.

O VB na versão 5.0 não vem com um editor de recursos , mas você pode fazer o download no site da Microsoft em http://www.microsoft.com/vbasic (se for um usuário registrado); depois de instalado ele irá fazer parte do Ambiente do Visual Basic. A versão 6.0 do VB já vem com um editor de recursos. Em ambos os casos você poderá identificar a presença do Editor de recursos na barra de ferramentas do Visual Basic pelo ícone exibido como na figura abaixo:

Se o ícone não estiver presente (mesmo depois de você instalar o Editor) basta selecionar no menu Add-Ins a opção Add-In Manager e na lista de Add-Ins disponíveis ativar o VB 6 Resource Editor como na figura a seguir:

Usando o Editor de Recursos

Através de um projeto em VB iremos mostrar como usar os recursos no VB. Nosso projeto será um formulário que dependendo do idioma selecionado : português, inglês ou espanhol exibirá mensagens neste idioma. O projeto usará os seguintes recursos: Icones, Tabelas de Strings e Bitmaps. Vamos lá...

Inicie um novo projeto no Visual Basic e clique no ícone do editor de recursos da barra de ferramentas. A tela inicial do Editor de recursos surgirá como na figura abaixo:

O significado de cada ícone do VB Resource Editor é dado a seguir:

Botão Descrição
Cria um novo arquivo de Recursos
Exibe e abre um arquivo de Recursos
Salva/Atualiza o arquivo de recurso atual usado no projeto.
Edita as propriedades do arquivo de recursos
Duplica o recurso selecionado e atribui ao mesmo o próximo ID identificador.
Desfaz a última operação realizada.
Exclui o recurso selecionado.
Abre/Edita a tabela de strings
Inclui um novo cursor
Inclui um novo arquivo de icones
Inclui um novo arquivo de bitmaps
Inclui um recurso definido pelo usuário
Exibe o arquivo de Ajuda do Editor de recursos

Usando os Recursos

Vamos iniciar a inclusão de recursos em nosso projeto , para posteriormente podemos usá-los para o fim desejado. Cada recurso - Icones, Cursores , Bitmaps , Tabelas de Strings - tem um número identificador que deve ser único para o mesmo tipo de recurso. Assim ao inserirmos um recurso do tipo Icone ele deverá ter um identificador que deve ser diferente para os demais Icones que forem incluídos no projeto.

Vamos inserir um recurso Icone ; para isto clique no icone da barra de ferramentas. Deveremos ter a seguinte tela:

Aqui voce deve selecionar um icone que deverá ser usado na sua aplicação. Nosso exemplo usará os ícones das bandeiras do Brasil, USA e Espanha para identificar a seleção feita. Acima temos a figura da seleção do icone da bandeira do brasil.

Após escolher o Ícone o sistema atribui o identificador (ID) 101 ao Icone inserido. Clique com o botão direito do mouse sobre o recurso inserido e selecione a opção Properties do menu suspenso. A Seguinte tela irá surgir:

Faremos duas alterações nas propriedades deste ícone: Alteraremos o seu identificador ID para 1000 e definiremos a propriedade Language como Neutral.

Vamos inserir o segundo icone que irá ser identificado pela bandeira dos USA. Aqui usarmos o identificador ID igual a 2000 e a propriedade Language definida como Neutral.

O terceiro ícone usará a bandeira da Espanha e terá como identificador ID igual a 3000 e a propriedade Language definida também como Neutral.

Se até agora você estiver boiando , tenha paciência pois as coisas irão clarear mais adiante.

Vamos agora inserir uma tabela de strings. Clique no ícone para obter a seguinte tela:

A tabela de strings será o repositório das mensagens nos três idiomas que escolhemos para usar em nosso projeto. Vamos atribuir o identificador com ID igual a 1000 para o português , como fizemos quando inserimos o recurso Icone e definir a linguagem como Neutral.

A seguir iremos incluir o texto de cada mensagem que desejamos que seja exibida no formulário no idioma Português. Assim faremos para o idioma Ingles onde definimos o ID inicial será igual a 2000 e para o Espanhol onde o ID será igual a 3000.

Observe que os textos das mensagens estão sincronizados ; assim em 1004 temos &Limpa Texto , em 2004 temos o equivalente em Inglês - &Clear Text e em 3004 o equivalente em Espanhol - &Borrar Texto ( Gente meu espanhol e sofrível...).

Percebeu que para irmos de 1004 para 2004 basta somarmos 1000 , o mesmo valendo para ir de 2004 para 3004. Fizemos tudo isto de propósito para facilitar a troca de mensagens em nosso código. Você verá isto mais adiante...

Após incluirmos todas a mensagens que desejamos devemos ter uma tabela parecida com a da figura a seguir:

Somente para ilustrar , vamos incluir o recurso BitMap.

Clique no ícone da barra de ferramentas. A tela da figura abaixo irá surgir:

Escolha um imagem bitmap para cada idioma , não esquecendo de manter a numeração adotada: 1000 para português , 2000 para Inglês e 3000 para Espanhol.

Ao final do trabalho devemos a ter a seguinte tela no editor de recursos.

Agora Salve o seu trabalho . Vamos salvar o nosso arquivo de recursos com o nome de primeiro.res. O seu projeto deverá ter a seguinte visualização:

Observe que o arquivo de recursos aparece no seu projeto em Related Documents.

Usando o arquivo de recursos no seu projeto

Bem, como já montamos o nosso arquivo de recursos, falta mostrar como usá-lo em nosso projeto. Vamos lá...

Vamos criar um formulário em nosso projeto como o exibido a seguir:

-Nosso formulário possui um menu que você pode criar facilmente usando o Menu Editor. Veja figura abaixo:

Você percebeu que os controles que exibem os textos de identificação ao usuário possuem números atribuídos a propriedade Caption destes controles. ?

Por que não atribuímos os textos que desejamos exibir e sim números ?

Os números foram atribuídos para que pudéssemos associar o texto de cada idioma ao ID definido no arquivo de recursos. Assim para exibir o texto em português "Utilizando recursos no Visual Basic 6" iremos carregar o texto associado ao identificador definido com o ID igual a 1000 ; o mesmo texto em inglês usará o identificador 2000 do arquivo de recursos; o texto em espanhol usará o identificador 3000.

Para carregar os recursos definidos devemos usar as seguintes funções do Visual Basic:

1-) LoadResString(ID) - Carrega uma string de um arquivo de recurso (.res). Onde ID representa o identificador do recurso definido.

2-) LoadResPicture(ID, Formato ) - Carrega um bitmap , icone ou cursor de um arquivo de recurso identificado pelo identificador ID ; Formato , define o tipo de imagem, os quais podem ser:

Constante Valor Descriçao do Recurso
vbResBitmap 0 Bitmap
vbResIcon 1 Icon
vbResCursor 2 Cursor

3- LoadResData(ID, Formato) - Carrega dados de diversos tipos e retorna um vetor(array) . ID identifica o recurso a carregar e Formato define o tipo de recurso. Os tipos possíveis são descritos abaixo:

Valor Descrição do Recurso
1 Cursor
2 Bitmap
3 Icon
4 Menu
5 Dialog box
6 String
7 Font directory
8 Font
9 Accelerator table
10 Definido pelo usuário
12 Group cursor
14 Group icon

Exibindo o Código do Projeto

Agora vamos mostrar como usar as funções descritas para carregar e exibir os recursos em nossa aplicação. Perceba que na definição dos textos para os três idiomas na tabela de strings existe um relacionamento entre os números atribuídos ao identificador, de forma que fazendo um deslocamento de 1000 passamos de um texto de um idioma para o respectivo texto no outro idioma. Assim temos:

1000 Utilizando arquivos de recursos no Visual Basic 2000 Using Resources Files in Visual Basic 3000 Empleando ...
1001 Pais 2001 Country 3001 Pais
1002 Capital 2002 Capital 3002 Capital
1003 &Carrega Texto 2003 &Load Text 3003 &Carga el Texto
... ... ... ... ... ...

Seguindo esta lógica mostramos o código do projeto:

-General Declaration

Const portugues = 0
Const ingles = 1000
Const espanhol = 2000
Public lingua_atual As Integer

Definimos aqui as constantes usadas para cada idioma.

- Evento Form_Load

Private Sub Form_Load()
    Call lingua(portugues)
End Sub

Português é a linguagem padrão , e, chamamos a função lingua passando como parâmetro a constante definida anteriormente.

- Código da Função Lingua

Private Sub lingua(idioma)
    Form1.Icon = LoadResPicture(1000 + idioma, vbResIcon)
    App.Title = LoadResString(1000 + idioma)
    Form1.Caption = LoadResString(1000 + idioma)
    Label1.Caption = LoadResString(1001 + idioma)
    Label2.Caption = LoadResString(1002 + idioma)
    Label3.Caption = LoadResString(1006 + idioma)
    Command1(0).Caption = LoadResString(1003 + idioma)
    Command1(1).Caption = LoadResString(1004 + idioma)
    Command1(2).Caption = LoadResString(1005 + idioma)
    Image1.Picture = LoadResPicture(1000 + idioma, vbResBitmap)
    
End Sub

A função recebe o parâmetro correspondente ao idioma e usando as funções carrega o recurso definido no arquivo de recursos. Assim:

Para o português , o parâmetro idioma tem o valor definido como 0 :

-Form1.Icon = LoadResPicture(1000 + idioma, vbResIcon) - Irá exibir o ícone definido com o ID igual 1000 (1000+0)

Para o inglês, o parâmetro idioma tem o valor definido como 1000

-Form1.Icon = LoadResPicture(1000 + idioma, vbResIcon) - Irá exibir o ícone definido com o ID igual a 2000 (1000+1000)

Para o espanhol , o parâmetro idioma tem o valor definido como 2000

-Form1.Icon = LoadResPicture(1000 + idioma, vbResIcon) - Irá exibir o ícone definido com o ID igual a 2000 (1000+2000)

Percebeu ?

- Código de Cada opção do Menu

Private Sub mnuespanhol_Click()
   lingua_atual = 2000
   Command1_Click (1)
   Call lingua(espanhol)
End Sub

Private Sub mnuingles_Click()
   lingua_atual = 1000
   Command1_Click (1)
   Call lingua(ingles)
End Sub

Private Sub mnuportugues_Click()
   lingua_atual = 0
   Command1_Click (1)
   Call lingua(portugues)
End Sub

O projeto em tempo de execução segundo o idioma selecionado :

A aplicação exibindo os textos nos três idiomas

Este é um exemplo simples , mas já da para você antever as possibilidades que sua criatividade e capacidade podem criar.

Vá em frente...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti