Múltiplos Idiomas nas Aplicações Magic xpa

Veja como prover uma mesma interface de aplicação, em diferentes idiomas, com o Magic xpa.

Um recurso antigo, desde os primórdios da criação do Magic xpa, é sua a habilidade de traduzirmos automaticamente o conteúdo de interfaces das aplicações para diferentes idiomas (línguas).

Poucos o utilizam, talvez por não sentirem necessidade de prover seus sistemas fora do ambiente da sua língua nativa.

Mas é um poderoso recurso para facilitar o ingresso de sistemas em diferentes mercados (países), ou até mesmo fazer mudanças visuais simples sem a necessidade de ajuste direto no código fonte das aplicações.

Vejamos com ele funciona, e como é simples.

 

Primeiro, vamos considerar a interface abaixo:

 

Podemos observar a existência de textos estáticos (constantes), desenhados e exibidos num determinado idioma (o Português neste caso):

 

- Multi Language Example
- 1 Opção A,2 Opção B,3 Opção C
- Controle CheckBox
- Controle Botão

Vamos considerar a necessidade de apresentar esta mesma tela em uma outra língua, como o idioma Italiano (por exemplo).

E claro, sem refazer (redesenhar) a interface (tela neste caso).

 

Primeiro Passo:

Vamos criar um arquivo em formato texto, colocando cada frase a ser traduzida em uma linha exclusiva, na língua “original(em que a tela foi desenhada):

 

Segundo Passo:

Agora, na linha de baixo de cada frase, fornecemos a mesma informação já traduzida para o idioma de destino (o Italiano em nosso exemplo), com 1 linha em branco no final e salvo em formato UTF-8:

 

*Nota: O texto original fica nas linhas "ímpares", e o texto traduzido, nas "pares" (com +1 linha em branco no fim).

 

Terceiro Passo:

Na pasta de instalação do Magic xpa, existe uma ferramenta de linha de comando chamada “MLS_BLD”, que serve para criar conjuntos de idiomas a serem usados pelo runtime:

 

Vamos usá-la informado: o nome do arquivo com as nossas traduções, o nome do arquivo de idioma a ser gerado e o “code page” que usamos em nosso arquivo ( UTF-8 = 65001 ).

Isso vai produzir um arquivo (texto) muito semelhante ao nosso, porém com a última linha “repetida” e com uma série de códigos relevantes para o entendimento destas traduções pelo Magic xpa  Runtime:

 

Quarto Passo:

Com este arquivo gerado, acessamos o ambiente do Magic xpa (menu: Options > Settings > Languages) e cadastramos um idioma associado a ele:

*Nota: Esta informação ficará guardada no arquivo MAGIC.INI, na seção [MAGIC_LANGUAGE]

 

Quinto Passo:

Com o nome da linguagem que cadastrados (ex: EM_ITALIANO), acessamos o ambiente do Magic xpa (menu: Options > Settings > Enviroment > External) e indicamos na opção “Starting Language” qual o idioma que queremos que seja utilizado:

*Nota: Esta informação ficará guardada no arquivo MAGIC.INI, na seção/chave [MAGIC_ENV]StartingLanguage

 

Está quase pronto!

 

Ao abrir novamente esta mesma interface no Magic xpa, veremos os textos já traduzidos cfe. nosso arquivo de idioma, sem que tenhamos feito nenhuma alteração sequer com o Form Designer:

 

Mas tem uma exceção: o conteúdo do “Edit” ainda está em Português, sem tradução, mesmo ele constando em nosso arquivo de linguagem:

 

Isso ocorre porque este texto estático/constante não está vindo do “Form Designer” do Magic xpa, mas sim de uma expressão a see avaliada pelo runtime:

 

Último Passo:

Para estas situações, precisamos usar a função MlsTrans dentro das expressões:

 

Isso faz com a avaliação do resultado da expressão use o sistema interno de traduções também sobre este texto especificado como argumento da função:

*Nota: As traduções automáticas não se aplicam à digitação dos usuários, ou conteúdos oriundo de fontes externas (como base de dados).

 

Agora sim, está pronto!

 

Fique ligado no Blog MagicBR, para mais dicas.

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado.