Sign in Join
Wiki copytemporary

Translations / i18n / localizations for programs/pt

한국어 · Deutsch · English · Español · Français · Polski · Português · Русский · 中文(中国) · 日本語

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

Traduzindo no inicio do programa

Para todo arquivo .po, você deve chamar TranslateUnitResourceStrings da unit translations da LCL. Por exemplo:

pascal
    {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;

From the Free Pascal wiki, page "Translations / i18n / localizations for programs/pt", as it stood on 2020-03-01 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.