Sign in Join
Wiki copytemporary

Translations / i18n / localizations for programs/pt: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Translations / i18n / localizations for programs/pt

OldNewLine
1+## Visão Geral
2+
3+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.
4+
5+## Resourcestrings
6+
7+Por exemplo
8+
9+` resourcestring`\
10+`   Caption1 = 'Algum Texto';`\
11+`   HelloWorld1 = 'Olá Mundo';`
12+
13+Essas são como constantes normais de string, isso significa que você pode associa-lás para qualquer string. Por exemplo
14+
15+` Label1.Caption := HelloWorld1;`
16+
17+Quando fpc compila elas, ele cria para cada unit um arquivo **nomedaunit.rst**, contendo os dados da resourcestring (nome + conteúdo).
18+
19+## Arquivos .po
20+
21+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.
22+
23+Exemplo de como usar rstconv diretamente:
24+
25+` rstconv -i unit1.rst -o unit1.po`
26+
27+## Traduzindo
28+
29+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.
30+
31+**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'.
32+
33+## Opções do IDE para atualização automática de arquivo .po
34+
35+- A unit que contém as resourcestrings deverão ser adicionadas para o pacote ou projeto.
36+- 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.
37+
38+## Traduzindo no inicio do programa
39+
40+Para todo arquivo .po, você deve chamar TranslateUnitResourceStrings da unit translations da LCL. Por exemplo:
41+
42+``` pascal
43+ {Primeiro de tudo: adicione as units "gettext" e "translations" na cláusula uses}
44+ procedure TForm1.FormCreate(Sender: TObject);
45+ var
46+ PODirectory, Lang, FallbackLang: String;
47+ begin
48+ PODirectory := '/caminho/para/lazarus/lcl/languages/';
49+ GetLanguageIDs(Lang, FallbackLang); // in unit gettext
50+ TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
51+ MessageDlg('Título', 'Texto', mtInformation, [mbOk, mbCancel, mbYes], 0);
52+ end;
53+```
54+
55+---
56+*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](/wiki-contact).*

Back to history