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 arquivo traduzível (por exemplo, GNU gettext PO (Objeto Portátil) ou Recurso de textos do Android). Os projetos estão lá para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de um aplicativo).

Além disso, componentes dentro de projetos podem ser estruturados usando categorias. Componentes podem pertencer a uma categoria, e categorias podem ser aninhadas.

Internamente, cada projeto tem traduções para textos comuns propagados em outros componentes dentro dele por padrão. Isso alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desabilitada por Configuração de componente usando Permitir propagação de tradução caso as traduções devam divergir.

Integração com repositório

O Weblate foi criado para integrar-se ao repositório de controle de versão upstream, Tradução contínua descreve os blocos de construção e como as alterações fluem entre eles.

Ver também

Visão geral da arquitetura descreve como o Weblate funciona internamente.

Atribuição ao usuário

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

Esse recurso também traz o risco de uso indevido de e-mail publicado nos commits de controle de versão. Além disso, uma vez que tal commit é publicado em hospedagem pública (como GitHub), não há efetivamente nenhuma maneira de redigi-lo. O Weblate permite escolher um e-mail de commit privado em Conta para evitar isso.

Portanto, os administradores devem considerar isso ao configurar o Weblate:

  • Esse uso de e-mail deve ser claramente descrito nos termos de serviço, caso tal documento seja necessário. Legal module pode ajudar com isso.

  • PRIVATE_COMMIT_EMAIL_OPT_IN pode tornar os e-mails privados por padrão.

Importando um projeto de localização para o Weblate

O Weblate foi desenvolvido com a integração VCS em mente como 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 de suas traduções em componentes do Weblate.

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

Obtendo traduções atualizadas do Weblate

O Weblate armazena textos atualizados em um banco de dados e as envia para um repositório de controle de versão local. Você pode adicionar um repositório Weblate (quando Exportador git estiver ativado) como um repositório remoto adicional e buscar atualizações de tradução dele.

Antes disso, você pode querer fazer commit de quaisquer alterações locais pendentes feitas no Weblate (consulte Commits adiados). Isso pode ser feito a partir da interface do usuário (em Manutenção do repositório) ou na linha de comando usando o Weblate Client.

Pushing changes can be automated if you grant Weblate push access to your repository and configure URL de envio do repositório in the Configuração de componente, see Fazendo push das alterações do Weblate.

Alternativamente, use API REST do Weblate para atualizar as traduções de forma que elas correspondam às versões mais recentes a partir do upstream em seu repositório VCS remoto.

Buscando alterações remotas para o Weblate

Para buscar quaisquer textos recém-atualizados em seu repositório VCS remoto para o Weblate, permita ao Weblate fazer pull do repositório upstream. Isso pode ser feito na interface do usuário (em Manutenção do repositório) ou na linha de comando usando o Weblate Client.

Isso pode ser automatizado configurando um webhook em seu repositório para acionar o Weblate sempre que houver um novo commit. Consulte Atualizando repositórios para mais detalhes.

Se você não estiver usando integração VCS, você pode usar a UI ou API REST do Weblate para atualizar as traduções de forma que elas correspondam à sua base de código.

Adicionando novos textos

Se seus arquivos de tradução serem armazenados em um VCS remoto junto com o código, você provavelmente tem um fluxo de trabalho existente para os desenvolvedores introduzirem novos textos. Qualquer forma de adicionar textos será escolhida, mas considere usar Rota de qualidade para os textos fonte para evitar a introdução de erros.

Quando arquivos de tradução são separados do código, as seguintes formas podem introduzir novos textos no Weblate.

  • Manually, using Add new translation string from Operations menu in the source language. You can choose between the radio buttons Singular and Plural inside the form. Select the appropriate form of the new translation string to be added.

  • Programaticamente, usando a API POST /api/translations/(string:project)/(string:component)/(string:language)/units/.

  • Ao enviar o arquivo fonte como Substituir arquivo tradução existente (isso sobrescreve os textos existentes, portanto, certifique-se de que o arquivo inclua os textos antigos e novos) ou Adicionar novos textos. Consulte Métodos de importação.

Nota

A capacidade de adicionar textos no Weblate requer Gerenciar textos.

Atualizando arquivos de idioma de destino

Para arquivos monolíngues (consulte Formatos de arquivo de localização), o Weblate pode adicionar novos textos de tradução presentes no Arquivo de idioma da base monolíngue, e não nas traduções reais. No entanto, ele não executa nenhuma limpeza automática de textos obsoletos, pois isso pode ter resultados inesperados. Se você ainda quiser fazer isso, instale o complemento Limpar arquivos de tradução, que lida com a limpeza de acordo com seus requisitos.

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

Dica

Ferramentas de extração de textos fonte, como xgettext ou lupdate, precisam ser executadas fora do Weblate.

Introduzindo novos textos

Você pode adicionar novos textos no Weblate com Gerenciar textos ativado, mas geralmente é melhor introduzir novos textos junto com as alterações de código que as introduziram.

Formatos monolíngues precisam ser configurados para que novos textos sejam adicionados a Arquivo de idioma da base monolíngue. Isso é feito tipicamente por desenvolvedores, enquanto eles escrevem o código. Você pode querer usar um processo de revisão desses textos usando Rota de qualidade para os textos fonte.

Formatos bilíngues normalmente extraem textos 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 os textos forem extraídos, pode haver uma etapa adicional necessária para atualizar as traduções existentes, consulte Atualizando arquivos de idioma de destino.

Dica

A automação da extração de textos 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 você queira integrar isso aos seus pipelines de integração contínua para fazer com que novos textos apareçam automaticamente para tradução. Esse pipeline também deve cobrir Evitando conflitos de mesclagem.

Gerenciando o repositório VCS local

Weblate stores all translations in its underlying version control repository. It is suggested to be connected to a remote one, but internal-only setup is also possible. The Repository maintenance allows controlling this repository. For a detailed description of the available actions, see Manutenção do repositório.

Dica

Com Tradução contínua, 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.

../_images/component-repository.webp