"
Etiqueta > i18n
Apoiado por

O SAP ajuda-te a traduzir para qualquer lingua

Volta não volta encontro mais uma virtude escondida do SAP. Então não é que fiquei a saber que existe uma transacção em que podemos introduzir uma determinada palavra numa determinada lingua e o SAP ajuda-nos a traduzi-la para outra lingua qualquer mostrando-nos noutras traduções que já existam para essa mesma palavra.

Não é fixe? Ok, não é o Google Translate, mas é uma bela ajuda.

Ah, já me esquecia, a transacção chama-se STERM.

Obrigado Sérgio Fraga pela dica.

O Abapinho saúda-vos.

Abapinho Dev Tools: Translator

O Nuno Morais desenvolveu uma ferramenta muito útil que auxilia na tradução em massa da maioria dos objectos SAP.

A ferramenta não faz tradução automática entre línguas. Antes, permite:

  • Exportar um ficheiro Excel com textos
  • Importar um ficheiro Excel com textos
  • Copiar textos de uma língua para uma ou mais línguas de destino
  • Criar uma ordem de transporte com as alterações
  • Encontrar dependências de objectos a que faltem traduções
  • Práctico interface de navegação para tradução manual

O Abapinho passa a ser o seu repositório oficial.

Código no GitHub.

Em breve, instruções. Até lá vai experimentando, é intuitivo. E se gostares ou tiveres sugestões deixa aqui um comentário.

Obrigado Nuno por teres desenvolvido isto e por o partilhares com o mundo no Abapinho.

Obrigado AJ Cann pela foto.

O Abapinho saúda-vos.

Boas prácticas
Usarás literais prontos a traduzir nos programas

Em programas, em vez de WRITE TEXT-001, usa WRITE ‘bla bla bla’(001). Assim, terás sempre um texto por defeito e além disso o programa será mais legível.
https://abapinho.com/en/2011/11/programas-poliglotas/

Boas prácticas
Não substituirás simplesmente ‘.’ por ‘,’

Se precisas de adaptar o conteúdo de um ficheiro com valores (CURR) tem sempre em consideração a parametrização do utilizador (USR01-DSCFM).
Se precisares de converter um alfa-numérico num número, usa o FM MOVE_CHAR_TO_NUM.
Se precisares de converter um número num alfa-numérico, usa WRITE curr TO str [CURRENCY waers].

Lê os textos de um programa

Aqui está uma forma simples de programaticamente ter acesso aos textos de um programa qualquer.


DATA: t_textos TYPE TABLE OF textpool.
READ TEXTPOOL sy-repid INTO t_textos 
  LANGUAGE sy-langu STATE 'A’.

Agora tens os textos todos disponíveis na tabela interna T_TEXTOS.

Como se isto não bastasse, podes também alterar os textos programaticamente. Com os seguintes comandos:


INSERT TEXTPOOL sy-repid FROM t_textos LANGUAGE sy-langu.
DELETE TEXTPOOL PROGRAM LANGUAGE 'E’.

A SAP diz que estes dois últimos comandos são só para uso interno. Se os quiseres usar, fá-lo por tua conta e risco. Não tenho nada a ver com isso. Eu, a não ser que me obriguem, fico-me pelo READ.

Obrigado Miguel Durão pela dica.

O Abapinho saúda-vos.

Decimais para alfa-numéricos sem depender do utilizador

Ao ler um ficheiro com valores numéricos para uma tabela interna ou vice-versa, o sucesso da conversão destes depende de o utilizador tem definido o ponto ou a vírgula como separador decimal. É costume ir então ler a configuração do utilizador e depois, adaptar os valores vindos do ficheiro com ponto ou vírgula conforme.

Mas isto é lamentável e pouco elegante. Devia haver uma forma de não fazer a coisa depender do utilizador.

E há.

Ler o resto do artigo! »

Mete variáveis dentro de textos standard

Textos standard toda a gente usa. Mas sabias que os textos standard podem ter campos dinâmicos lá pelo meio? A SAP chama-lhes “símbolos de texto”. A forma de o conseguir é igual à dos velhos formulários da nefasta SE71, ou seja, envolvendo-os com o símbolo &. Assim: &KNA1-NAME1&. Dá um jeitão. Vou mostrar-te como se faz.

Ler o resto do artigo! »

Automatizar catálogo de campos de ALV

Às vezes pergunto-me qual será, no mundo, a percentagem de código ABAP desnecessário. Um exemplo paradigmático de como se pode desperdiçar tempo a escrever código que não serve para nada e só prejudica é a tão frequente definição das descrições dos campos de uma ALV directamente em ABAP.

Ler o resto do artigo! »

Programas poliglotas que sabem o que dizem

O SAP é um grande poliglota. Mas o ABAP nem sempre. O ABAP até tem muita facilidade em aprender e falar várias línguas, mas às vezes os programadores não o deixam.

Muitos programadores cinzelam os textos literais directamente no programa, deixando-o irremediavelmente incapaz de comunicar em vários idiomas. Imagino duas razões para se agrilhoar um programa a uma única língua:

  • A preguiça, que é a principal razão para se fazerem as coisas mal feitas;
  • A legibilidade. Realmente a forma de tornar um programa ABAP localizável é pejá-lo com referências a textos, tipo TEXT-001, o que pode torná-lo bastante ilegível.

Então aqui fica uma dica para ter o melhor dos dois mundos: um programa localizável que não perca a legibilidade:

Em vez de seres preguiçoso e fazeres:


WRITE: 'Eu quero ver auroras boreais'.

E em vez de seres obscuro e fazeres:


WRITE: TEXT-001.

Sê esperto e faz:


WRITE: 'Eu quero ver auroras boreais'(001).

E já está.

Se o text TEXT-001 estiver definido na língua em que o programa estiver a correr este TEXT-001 será usado. Caso contrário, o texto literal escrito directamente no programa será usado. Assim mantém-se a legibilidade do código, pode traduzir-se os textos à vontade e ainda por cima temos a certeza de que, mesmo quando faltar traduzir algum texto, mesmo assim aparecerá o texto que está no programa.

Obrigado Sérgio Lopes pela dica.

(E obrigado doug88888 pela foto)

O Abapinho saúda-vos.

Transacção I18N = Internacionalização

Os americanos são tão bons como os tibetanos a arranjar mnemónicas e abreviaturas para tornar as coisas fáceis de decorar.

Internationalization é uma palavra inglesa com 20 letras. Então, a abreviatura adoptada foi I18N, constituida pela primeira e última letras entremeadas por um 18 que representa as 18 letras do meio. Meio maluco mas giro e a verdade é que pegou.

Pegou tanto que o SAP tem uma transacção chamada I18N. E é lá que se pode encontrar tudo relacionado com internacionalização, codepages, línguas, tradução, etc.

Aproveitando o assunto da dica dou a conhecer a classe CL_I18N_LANGUAGES que tem uma série de métodos para conversão entre os vários códigos de língua. Entre o código SAP e o código ISO 639-1 por exemplo.

O Abapinho saúda-vos.


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).