---
description: 'Como trabalhar com tradução de arquivos PO no Projeto de Documentação do FreeBSD'
next: books/fdp-primer/weblate
params:
  path: "/books/fdp-primer/po-translations/"
prev: books/fdp-primer/translations
showBookMenu: 'true'
tags: ["po", "translations", "tutorial", "quick start"]
title: 'Capítulo 9. Traduções PO'
weight: 9
---

[[po-translations]]
= Traduções PO
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumoffset: 9
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/fdp-primer/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[po-translations-introduction]]
== Introdução

O http://www.gnu.org/software/gettext/[GNU gettext] oferece aos tradutores uma maneira fácil de criar e manter traduções de documentos. Sequências traduzíveis são extraídas do documento original em um arquivo PO (Portable Object). Versões traduzidas das strings são inseridas com um editor separado. As strings podem ser usadas diretamente ou incorporadas em uma versão traduzida completa do documento original.

[[po-translations-quick-start]]
== Introdução

Supõe-se que o procedimento mostrado no crossref:overview[overview-quick-start,Quick Start] já tenha sido executado. A opção `TRANSLATOR` é necessária e já está ativada por padrão no port package:textproc/docproj[].

Este exemplo mostra a criação de uma tradução em Espanhol do pequeno artigo extref:{leap-seconds}[Leap Seconds].

[[po-translations-quick-start-install-po-editor]]

[.procedure]
====
.Procedimento. Instale um Editor PO
. É necessário um editor PO para editar os arquivos de tradução. Este exemplo utiliza o package:editors/poedit[].
+
[source, shell]
....
# pkg install poedit
....
====

[[po-translations-quick-start-initial-setup]]
[.procedure]
====
.Procedimento. Configuração Inicial

Quando uma nova tradução é criada pela primeira vez, a estrutura do diretório e o Makefile devem ser criados ou copiados do original em Inglês:

. Crie um diretório para a nova tradução. O código fonte do artigo em Inglês está em [.filename]#~/doc/documentation/content/en/articles/leap-seconds/#. A tradução em Espanhol estará em [.filename]#~/doc/documentation/content/es/articles/leap-seconds/#. O caminho é o mesmo, exceto pelo nome do diretório de idiomas.
+
[source, shell]
....
% mkdir ~/doc/documentation/content/es/articles/leap-seconds
....

. Copie o [.filename]#_index.po# do documento original para o diretório de tradução:
+
[source, shell]
....
% cp ~/doc/documentation/content/en/articles/leap-seconds/_index.po \
  ~/doc/documentation/content/es/articles/leap-seconds/
....

Supondo que o documento ou idioma também esteja sendo traduzido via Weblate. Nesse caso, é bom pegar o arquivo `.po` de lá e carregar o documento de tradução de volta na plataforma, centralizando os esforços de tradução via Weblate para evitar retrabalho.

Veja como baixar os arquivos `.po` no capítulo crossref:weblate[weblate-translating-offline,Traduzindo Offline no Weblate].
====

[[po-translations-quick-start-translation]]
[.procedure]
====
.Procedimento. Tradução

Use um editor PO para inserir as traduções no arquivo PO. Existem vários editores diferentes disponíveis. O [.filename]#poedit# do package:editors/poedit[] é mostrado aqui.

[source, shell]
....
% poedit documentation/content/es/articles/leap-seconds/_index.po
....
====

[[po-translations-quick-generating-a-translated-document]]
[.procedure]
====
.Procedimento. Gerando um Documento Traduzido
. Gere o documento traduzido:
+
[source, shell]
....
% cd ~/doc
% ./tools/translate.sh documentation es articles/leap-seconds
....
+
O nome do documento gerado corresponde ao nome do original em Inglês, geralmente [.filename]#_index.adoc#.
+
. Verifique o arquivo gerado renderizando-o para HTML e exibindo-o com um navegador web:
+
[source, shell]
....
% cd ~/doc/documentation
% make
....
====

[[po-translations-creating]]
== Criando Novas Traduções

O primeiro passo para criar um novo documento traduzido é localizar ou criar um diretório para mantê-lo. O FreeBSD coloca documentos traduzidos em um subdiretório nomeado para seu idioma e região no formato [.filename]#lang# . _lang_ é um código minúsculo de dois caracteres.

[[po-translations-language-names]]
.Nomes de Idioma
[cols="1,1,1", frame="none", options="header"]
|===
| Idioma
| Região
| Nome do Diretório da Tradução

|English
|United States
|[.filename]#en#

|Bengali
|Bangladesh
|[.filename]#bn-bd#

|Danish
|Denmark
|[.filename]#da#

|German
|Germany
|[.filename]#de#

|Greek
|Greece
|[.filename]#el#

|Spanish
|Spain
|[.filename]#es#

|French
|France
|[.filename]#fr#

|Hungarian
|Hungary
|[.filename]#hu#

|Italian
|Italy
|[.filename]#it#

|Japanese
|Japan
|[.filename]#ja#

|Korean
|Korea
|[.filename]#ko#

|Mongolian
|Mongolia
|[.filename]#mn#

|Dutch
|Netherlands
|[.filename]#nl#

|Polish
|Poland
|[.filename]#pl#

|Portuguese
|Brazil
|[.filename]#pt-br#

|Russian
|Russia
|[.filename]#ru#

|Turkish
|Turkey
|[.filename]#tr#

|Chinese
|China
|[.filename]#zh-cn#

|Chinese
|Taiwan
|[.filename]#zh-tw#
|===

As traduções estão em subdiretórios do diretório principal da documentação, aqui assumido como [.filename]#~/doc/documentation/# como apresentado na crossref:overview[overview-quick-start, Introdução]. Por exemplo, as traduções em Alemão estão localizadas em [.filename]#~/doc/documentation/content/de/# e as traduções em Francês estão em [.filename]#~/doc/documentation/content/fr/#.

Cada diretório de idiomas contém subdiretórios separados para os tipos de documentos, geralmente [.filename]#articles/# e [.filename]#books/#.

A combinação desses nomes de diretórios fornece o caminho completo para um artigo ou livro. Por exemplo, a tradução Francesa do artigo NanoBSD está em [.filename]#~/doc/documentation/content/fr/articles/nanobsd/#, e a tradução em Mongol do manual está em [.filename]#~/doc/documentation/content/mn/books/handbook/#.

Um novo diretório de idioma deve ser criado ao traduzir um documento para um novo idioma. Se o diretório de idiomas já existir, somente um subdiretório no diretório [.filename]#articles/# ou [.filename]#books/# será necessário.

[[po-translations-creating-example]]
.Criando uma Tradução em Espanhol do Porter's Handbook
[example]
====
Crie uma nova tradução em Espanhol do extref:{porters-handbook}[Porter's Handbook]. O original é um livro em [.filename]#~/doc/documentation/content/en/books/porters-handbook/#.

[.procedure]
======

. O diretório de livros em Espanhol [.filename]#~/doc/documentation/content/es/books/# já existe, portanto, apenas um novo subdiretório para o Porter's Handbook é necessário:
+
[source, shell]
....
% cd ~/doc/documentation/content/es/books
% mkdir porters-handbook
....

. Copie o conteúdo do livro original:
+
[source, shell]
....
% cd porters-handbook
% cp -R ~/doc/documentation/content/en/books/porters-handbook/* .
....
+
Agora a estrutura do documento está pronta para o tradutor começar a tradução com o `poedit`.
======
====

[[po-translations-translating]]
== Traduzindo

O sistema gettext reduz bastante o número de itens que devem ser rastreados por um tradutor. As strings a serem traduzidas são extraídas do documento original em um arquivo PO. Em seguida, um editor PO é usado para inserir as traduções de cada string.

O sistema de tradução PO do FreeBSD não sobrescreve os arquivos PO, portanto a etapa de extração pode ser executada a qualquer momento para atualizar o arquivo PO.

Um editor PO é usado para editar o arquivo. package:editors/poedit[] é usado nestes exemplos porque é simples e tem requisitos mínimos. Outros editores PO oferecem recursos para facilitar o trabalho de tradução. A Coleção de Ports oferece vários desses editores, incluindo o package:devel/gtranslator[].

É importante preservar o arquivo PO. Ele contém todo o trabalho que os tradutores fizeram.

[IMPORTANT]
====
Traduzir documentos online tende a ser o método mais fácil para tradução de documentos no FreeBSD, pois permite que vários usuários colaborem no mesmo arquivo, distribuindo a carga de trabalho de forma eficaz. Para obter mais detalhes, consulte o próximo capítulo, crossref:weblate[weblate-introduction,Traduções Weblate].
====

[[po-translations-tips]]
== Dicas para Tradutores

[[po-translations-tips-xmltags]]
=== Preservando macros AsciiDoc

Preserve as macros AsciiDoc que são mostradas no original em Inglês.

.Preservando macros AsciiDoc
[example]
====
Inglês original:

[.programlisting]
....
msgid ""
"This example shows the creation of a Spanish translation of the short "
"extref:{leap-seconds}[Leap Seconds] article."
....

Tradução para o Espanhol:

[.programlisting]
....
msgid ""
"Este ejemplo muestra la creación de un artículo con poco contenido como el artículo "
"extref:{leap-seconds}[Leap Seconds]."
....

====

[[po-translations-tips-spaces]]
=== Preservando Espaços

Preserve os espaços existentes no início e no final das strings a serem traduzidas. A versão traduzida também deve ter esses espaços.

[[po-translations-tips-verbatim]]
=== Tags

O conteúdo de algumas tags devem ser copiadas igualmente, sem realizar tradução:

* `man:man[1]`
* `package:package[]`
* `link`
* `image`
* `include`
* `Admonitions`
* `id's`
* `Heading tags`
* `source`

[[po-translations-building]]
== Compilando um Documento Traduzido

Uma versão traduzida do documento original pode ser criada a qualquer momento. Quaisquer porções não traduzidas do original serão incluídas em Inglês no documento resultante. A maioria dos editores PO tem um indicador que mostra quanto da tradução foi realizada. Isso torna mais fácil para o tradutor ver quantas strings foram traduzidas para tornar a compilação do documento final utilizável.

O capítulo Weblate fornece um exemplo completo sobre crossref:weblate[weblate-building,Compilando o Documento Traduzido].

[[po-translations-submitting]]
== Submetendo a Nova Tradução

Prepare os novos arquivos de tradução para envio. Isso inclui adicionar os arquivos ao sistema de controle de versão, definir propriedades adicionais e criar um diff para a submissão.

Os arquivos diff criados por esses exemplos podem ser anexados a um https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Documentation[relatório de bug de documentação] ou https://reviews.freebsd.org/[revisão de código].

[[po-translations-submitting-spanish]]
.Tradução Espanhola do Artigo NanoBSD
[example]
====
[.procedure]
======

. Crie um diff dos novos arquivos a partir do diretório base [.filename]#~/doc/# para que o caminho completo seja mostrado com os nomes dos arquivos. Isso ajuda os committers a identificar o diretório do idioma de destino.
+
[source, shell]
....
% cd ~/doc
% git diff documentation/content/es/articles/nanobsd/ > /tmp/es_nanobsd.diff
....
======

O capítulo Weblate fornece um exemplo completo sobre crossref:weblate[weblate-submit-translations,Enviando Traduções].

====
