Translations / i18n / localizations for programs/pt
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
português (pt) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Visão Geral
Este documento discute sobre como você pode usar diferentes strings para vários idiomas como inglês, chinês, alemão, finlandês, italiano, ... . Basicamente funciona assim: Adicione uma resourcestring para cada caption, compile e ganhará os arquivos .rst e/ou .po (o IDE pode fazer isso automaticamente), crie um arquivo .po traduzido para cada idioma (há ferramentas gráficas livres) e use as funções da unit translations da LCL para carregar corretamente no ínicio do programa.
Resourcestrings
Por exemplo
resourcestring Caption1 = 'Algum Texto'; HelloWorld1 = 'Olá Mundo';
Essas são como constantes normais de string, isso significa que você pode associa-lás para qualquer string. Por exemplo
Label1.Caption := HelloWorld1;
Quando fpc compila elas, ele cria para cada unit um arquivo nomedaunit.rst, contendo os dados da resourcestring (nome + conteúdo).
Arquivos .po
Existem muitas ferramentas livres para editar arquivos .po, que são textos simples como os arquivos .rst, mas com algumas opções, como um cabeçalho fornecendo campos para autor, códificação, idioma e data. Toda instalação do fpc fornece a ferramenta rstconv (windows: rstconv.exe). Essa ferramenta pode ser usada para converter um arquivo .rst em um arquivo .po. O IDE pode fazer isso automaticamente. Exemplos de ferramentas livres: kbabel, poedit.
Exemplo de como usar rstconv diretamente:
rstconv -i unit1.rst -o unit1.po
Traduzindo
Para todo idioma um arquivo .po deve ser copiado e traduzido. A unit translation da LCL usa a codificação comum de idioma (en=english (inglês), de=german (alemão), it=italian (italiano), ...) para procurar. Por exemplo, a tradução alemã de unit1.po deverá ser unit1.de.po. Com isso em mente, copie o arquivo unit1.po para unit1.de.po, unit1.it.po, e independente do idioma que você deseja suportar e então assim os tradutores poderão editar seu respectivo arquivo .po.
Nota para brasileiros/portugueses:: Lazarus IDE e LCL têm somente a tradução do português brasileiro e esses arquivos têm extensão 'pb.po' e não 'pt.po'.
Opções do IDE para atualização automática de arquivo .po
- A unit que contém as resourcestrings deverão ser adicionadas para o pacote ou projeto.
- Você deve fornecer um caminho .po, isso significa um diretório separado. Por exemplo: crie um sub-diretório language no diretório do pacote/projeto. Para projetos, vá para Project > Project Options. Para pacote, vá para Options > IDE Integration.
Traduzindo no inicio do programa
Para todo arquivo .po, você deve chamar TranslateUnitResourceStrings da unit translations da LCL. Por exemplo:
{Primeiro de tudo: adicione as units "gettext" e "translations" na cláusula uses}
procedure TForm1.FormCreate(Sender: TObject);
var
PODirectory, Lang, FallbackLang: String;
begin
PODirectory := '/caminho/para/lazarus/lcl/languages/';
GetLanguageIDs(Lang, FallbackLang); // in unit gettext
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
MessageDlg('Título', 'Texto', mtInformation, [mbOk, mbCancel, mbYes], 0);
end;