# Integrando com Weblate

## Básico do Weblate

### Estrutura de projetos e componentes

No Weblate, as traduções são organizadas em projetos e componentes. Cada projeto pode conter vários componentes, os quais contêm traduções para idiomas individuais. O componente corresponde a um ficheiro traduzível (por exemplo, [GNU gettext PO (Objeto Portátil)](https://docs.weblate.org/pt/latest/formats/gettext.md#gettext) ou [Recursos de cadeias de carateres para Android](https://docs.weblate.org/pt/latest/formats/android.md#aresource)). Os projetos existem para ajudá-lo a organizar os componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções utilizadas dentro de uma aplicação).

Adicionalmente, os componentes dentro dos projetos podem ser estruturados utilizando as categorias. Os componentes podem pertencer a uma categoria, e as categorias podem ser integradas.

Internamente, cada projeto tem traduções para cadeias de carateres comuns propagadas noutros componentes dentro dele por predefinição. Isto alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desativada por [Configuração de componente](https://docs.weblate.org/pt/latest/admin/projects.md#component) a utilizando [Permitir propagação da tradução](https://docs.weblate.org/pt/latest/admin/projects.md#component-allow-translation-propagation) caso as traduções devam divergir.

### Integração do repositório

O Weblate foi criado para integrar-se com o repositório de controle de versão upstream, [Tradução contínua](https://docs.weblate.org/pt/latest/admin/continuous.md) descreve os blocos de criação e como as alterações fluem entre eles.

#### SEE ALSO
[Visão geral da arquitetura](https://docs.weblate.org/pt/latest/admin/install.md#architecture) descreve como o Weblate funciona internamente.

### Atribuição do utilizador

O Weblate mantém as traduções devidamente criadas pelos tradutores no repositório do controlo de versão utilizando o nome e “”e-mail””. Ter um “”e-mail”” real anexado à submissão segue os espíritos do controle de versão distribuído e permite que os serviços, como o GitHub associem as suas contribuições efetuadas no Weblate com o seu perfil do GitHub.

Este recurso também traz o risco de utilização indevida do “”e-mail”” publicado nas submissões do controlo de versão. Além disso, uma vez que tal submissão é publicada na hospedagem pública (como GitHub), não há efetivamente nenhuma maneira de redigi-la. O Weblate permite escolher um “”e-mail”” de submissão privado em [Conta](https://docs.weblate.org/pt/latest/user/profile.md#profile-account) para evitar isto.

Por isso, os administradores deverião considerar isto enqunto configuram o Weblate:

* Tal utilização do “”e-mail”” deverá ser claramente descrita nos termos do serviço no caso de tal documento ser necessário. [Módulo legal](https://docs.weblate.org/pt/latest/admin/optionals.md#legal) pode ajudar com isso.
* [`PRIVATE_COMMIT_EMAIL_OPT_IN`](https://docs.weblate.org/pt/latest/admin/config.md#std-setting-PRIVATE_COMMIT_EMAIL_OPT_IN) pode criar “”e-mails”” privados por predefinição.

See [Libraries and SDKs](https://docs.weblate.org/pt/latest/devel/libraries.md) for official tools and community-maintained integrations.
For Android translation updates without rebuilding your application, use
[Kotlin SDK for Android](https://docs.weblate.org/pt/latest/devel/kotlin-sdk.md).

## Importar um projeto de localização para o Weblate

O Weblate foi desenvolvido com a integração VCS em mente como o seu recurso principal, então a maneira mais fácil é conceder ao Weblate o acesso ao seu repositório. O processo de importação o guiará pela configuração das suas traduções em componentes do Weblate.

Como alternativa, pode deixar o Weblate configurar um repositório somente local contendo todas as traduções sem integração.

#### SEE ALSO
* [Adicionar projetos e componentes de tradução](https://docs.weblate.org/pt/latest/admin/projects.md#adding-projects)
* [Como posso limitar o acesso ao Weblate apenas às traduções, sem lhe expor o código-fonte?](https://docs.weblate.org/pt/latest/faq.md#faq-submodule)

## Obtendo traduções atualizadas do Weblate

O Weblate armazena cadeias atualizadas numa base de dados e envia-as para um repositório de controle de versão local. Pode adicionar um repositório Weblate (quando [Exportador git](https://docs.weblate.org/pt/latest/admin/optionals.md#git-exporter) estiver ativado) como um repositório remoto adicional e buscar atualizações de tradução dele.

Antes disso, pode fazer commit de quaisquer alterações locais pendentes feitas no Weblate (consulte [Commits adiados](https://docs.weblate.org/pt/latest/admin/continuous.md#lazy-commit)). Isto pode ser feito a partir da interface do utilizador (em Manutenção do repositório) ou na linha de comando usando o [Cliente Weblate](https://docs.weblate.org/pt/latest/wlc.md#wlc).

Fazer push das alterações pode ser automatizado se conceder acesso push do Weblate ao seu repositório e configurar [URL de submissão do repositório](https://docs.weblate.org/pt/latest/admin/projects.md#component-push) na [Configuração de componente](https://docs.weblate.org/pt/latest/admin/projects.md#component). Consulte [Fazendo push das alterações do Weblate](https://docs.weblate.org/pt/latest/admin/code-hosting.md#code-hosting-push-options).

Alternativamente, use [API REST do Weblate](https://docs.weblate.org/pt/latest/api.md) para atualizar as traduções de forma que elas correspondam às versões mais recentes a partir do upstream no seu repositório VCS remoto.

#### SEE ALSO
* [Tradução contínua](https://docs.weblate.org/pt/latest/admin/continuous.md#continuous-translation)
* [Fazendo push das alterações do Weblate](https://docs.weblate.org/pt/latest/admin/code-hosting.md#code-hosting-push-options)
* [Acessando repositórios](https://docs.weblate.org/pt/latest/vcs.md#vcs-repos)

## Buscando alterações remotas para o Weblate

Para buscar quaisquer cadeias recém-atualizados no seu repositório VCS remoto para o Weblate, permita ao Weblate fazer pull do repositório upstream. Isto pode ser feito na interface do utilizador (em Manutenção do repositório) ou na linha de comando usando o [Cliente Weblate](https://docs.weblate.org/pt/latest/wlc.md#wlc).

Isto pode ser automatizado configurando um webhook no seu repositório para acionar o Weblate sempre que houver um novo commit. Consulte [Atualizar repositórios](https://docs.weblate.org/pt/latest/admin/continuous.md#update-vcs) para mais pormenores.

Se não usar a integração de VCS, pode usar a UI ou [API REST do Weblate](https://docs.weblate.org/pt/latest/api.md) para atualizar as traduções de forma que elas correspondam à sua base de código.

#### SEE ALSO
* [Tradução contínua](https://docs.weblate.org/pt/latest/admin/continuous.md#continuous-translation)
* [Acessando repositórios](https://docs.weblate.org/pt/latest/vcs.md#vcs-repos)

<a id="monitoring-translation-progress"></a>

## Monitorizar progresso de tradução

Utilize o endpoints de métricas de projeto para rastrear o progresso de tradução a partir de integrações externas. Devolve estatísticas para todos os componente e idiomas visíveis em um único pedido e suporta os formatos JSON, CSV e OpenMetrics.

A representação OpenMetrics pode ser obtida por sistemas de monitorização compatíveis com Prometheus sem pedir ao endpoint de estatísticas para cada tradução.

#### SEE ALSO
* [`GET /api/projects/(string:project)/metrics/`](https://docs.weblate.org/pt/latest/api.md#get--api-projects-(string-project)-metrics-)
* [Estatísticas](https://docs.weblate.org/pt/latest/api.md#api-statistics)

<a id="adding-new-strings"></a>

## A adicionar novas cadeias

Se os seus ficheiros de tradução serem armazenados num VCS remoto junto com o código, provavelmente tem um fluxo de trabalho existente para os programadores introduzirem novas cadeias. Qualquer forma de adicionar cadeias será escolhida, mas considere usar [Portal de qualidade para cadeias fonte](https://docs.weblate.org/pt/latest/workflows.md#source-quality-gateway) para evitar a introdução de erros.

Quando ficheiros de tradução são separados do código, as seguintes formas podem introduzir novas cadeias no Weblate.

* Manualmente, usando Adicionar nova cadeia de tradução do menu Operações no idioma fonte. Pode escolher entre os botões de opção Singular e Plural no formulário. Selecione o formulário apropriado da nova cadeia de tradução a ser adicionada.
* Programaticamente, usando a API [`POST /api/translations/(string:project)/(string:component)/(string:language)/units/`](https://docs.weblate.org/pt/latest/api.md#post--api-translations-(string-project)-(string-component)-(string-language)-units-).
* Ao enviar o ficheiro fonte como Substituir ficheiro de tradução existente (isso sobrescreve as cadeias existentes, portanto, certifique-se de que o ficheiro inclua as cadeias antigas e novas) ou Adicionar novas cadeias. Veja [Métodos de importação](https://docs.weblate.org/pt/latest/user/files.md#upload-method).

#### NOTE
A capacidade de adicionar textos no Weblate requer [Gerir cadeias](https://docs.weblate.org/pt/latest/admin/projects.md#component-manage-units).

<a id="updating-target-files"></a>

## Atualizando ficheiros de idioma de destino

Para ficheiros monolíngues (consulte [Formatos de ficheiro de localização](https://docs.weblate.org/pt/latest/formats.md#formats)), o Weblate pode adicionar novos textos de tradução presentes no [Ficheiro de idioma base monolingue](https://docs.weblate.org/pt/latest/admin/projects.md#component-template), e não nas traduções reais. No entanto, ele não executa nenhuma limpeza automática de textos obsoletos, pois isto pode ter resultados inesperados. Se você ainda quiser fazer isto, instale o complemento [Limpeza de ficheiros de tradução](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-cleanup-generic), que lida com a limpeza de acordo com seus requisitos.

O Weblate também não tentará atualizar ficheiros bilíngues quando a fonte for alterada. Portanto, se você precisar que os ficheiros `po` sejam atualizados a partir do ficheiro `pot`, você tem duas opções:

* **Automaticamente com um extra** (recomendado para atualizações contínuas): Instale o extra [Atualizar ficheiros PO para coincidir com POT (msgmerge)](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-gettext-msgmerge), que automaticamente executa **msgmerge** para atualizar todos os ficheiros PO quando o ficheiro POT muda.
* **Manualmente através de envio**: Utilize o [Métodos de importação](https://docs.weblate.org/pt/latest/user/files.md#upload-method) Atualizar cadeias de carateres fonte para enviar o seu ficheiro POT, que será unido com traduções existentes.

#### HINT
Ferramentas de extração de cadeias fonte, como **xgettext** ou **lupdate**, precisam ser executadas fora do Weblate.

#### SEE ALSO
* [Processar repositório com scripts](https://docs.weblate.org/pt/latest/admin/continuous.md#processing)
* [Limpeza de ficheiros de tradução](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-cleanup-generic)
* [Remover cadeias em branco](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-cleanup-blank)
* [Atualizar ficheiros RESX](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-resx-update)
* [Atualizar ficheiros PO para coincidir com POT (msgmerge)](https://docs.weblate.org/pt/latest/admin/addons.md#addon-weblate-gettext-msgmerge)

<a id="translations-update"></a>

## Introduzindo novas cadeias de carateres

Pode adicionar novas cadeias no Weblate com [Gerir cadeias](https://docs.weblate.org/pt/latest/admin/projects.md#component-manage-units) ativado, mas geralmente é melhor introduzir novas cadeias junto com as alterações de código que as introduziram.

Formatos monolíngues precisam ser configurados para que novas cadeias sejam adicionadas a [Ficheiro de idioma base monolingue](https://docs.weblate.org/pt/latest/admin/projects.md#component-template). Isto é feito tipicamente por programadores, enquanto eles escrevem o código. Pode usar um processo de revisão desses textos usando [Portal de qualidade para cadeias fonte](https://docs.weblate.org/pt/latest/workflows.md#source-quality-gateway).

Formatos bilíngues normalmente extraem cadeias do código-fonte usando algumas ferramentas (como **xgettext** ou **intltool-update**). Siga a documentação do seu framework de localização para obter instruções sobre como fazer isso. Depois que as cadeias forem extraídas, pode haver uma etapa adicional necessária para atualizar as traduções existentes, consulte [Atualizando ficheiros de idioma de destino](#updating-target-files).

#### HINT
A automação da extração de cadeias está atualmente fora do escopo do Weblate. Ela normalmente envolve a execução de código não confiável, o que a torna mais adequada para uma integração contínua genérica do que para uma plataforma específica de localização.

Talvez queira integrar isto aos seus pipelines de integração contínua para fazer com que novas cadeias apareçam automaticamente para tradução. Esse pipeline também deve cobrir [Evitar conflitos de mesclagem](https://docs.weblate.org/pt/latest/admin/continuous.md#avoid-merge-conflicts).

#### SEE ALSO
* [Atualizando ficheiros de idioma de destino](#updating-target-files)
* [Traduzindo software a usar GNU gettext](https://docs.weblate.org/pt/latest/devel/gettext.md)
* [Traduzindo documentação a usar Sphinx](https://docs.weblate.org/pt/latest/devel/sphinx.md)

<a id="manage-vcs"></a>

## Gerir o repositório VCS local

O Weblate guarda todas as traduções no repositório do controlo de versão. É sugerido que seja ligado a um remoto, mas é possível a configuração de apenas interno. A Manutenção do repositório permite-lhe controlar este repositório. Para uma descrição detalhada das ações disponíveis, veja [Manutenção do repositório](https://docs.weblate.org/pt/latest/admin/continuous.md#repository-maintenance).

#### HINT
Com [Tradução contínua](https://docs.weblate.org/pt/latest/admin/continuous.md), quaisquer alterações têm o push feito automaticamente a partir do repositório, então geralmente não há necessidade de gerenciá-las manualmente.

![image](screenshots/component-repository.webp)

#### SEE ALSO
* [Manutenção do repositório](https://docs.weblate.org/pt/latest/admin/continuous.md#repository-maintenance)
* [Tradução contínua](https://docs.weblate.org/pt/latest/admin/continuous.md)
* [Integração de controlo de versões](https://docs.weblate.org/pt/latest/vcs.md)
