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
| Old | New | Line | |
|---|---|---|---|
| 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).* |
