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 (Portable Object) 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).

Additionally, components within projects can be structured using categories. Components can belong to a category, and categories can be nested.

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.

Repository integration

Weblate is built to integrate with upstream version control repository, Localização contínua describes building blocks and how the changes flow between them.

Ver também

Architecture overview describes how Weblate works internally.

User attribution

Weblate keeps the translations properly authored by translators in the version control repository by using name and e-mail. Having a real e-mail attached to the commit follows the distributed version control spirits and allows services like GitHub to associate your contributions done in Weblate with your GitHub profile.

This feature also brings in risk of misusing e-mail published in the version control commits. Moreover, once such a commit is published on public hosting (such as GitHub), there is effectively no way to redact it. Weblate allows choosing a private commit e-mail in Conta to avoid this.

Therefore, admins should consider this while configuring Weblate:

  • Such a usage of e-mail should be clearly described in service terms in case such document is needed. Legal can help with that.

  • PRIVATE_COMMIT_EMAIL_OPT_IN can make e-mails private by default.

Importando 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.

Alternativamente, você pode usar o Weblate para configurar um repositório local contendo todas as traduções sem integração.

Obtendo traduções atualizadas do Weblate

Weblate stores updated strings in a database and commits them to a local version control repository. You can add Weblate repository (when Exportador git is turned on) as additional remote and fetch translations update from it.

Prior to this, you might want to commit any pending changes (see Commits adiados). You can do so in the user interface (in the Repository maintenance) or from the command-line using 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, você pode usar API REST do Weblate para atualizar as traduções para corresponder às suas versões mais recentes.

Buscando alterações remotas para o Weblate

Para buscar os textos recém-atualizados em seu repositório para o Weblate, apenas deixe-o 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. Veja Atualizando repositórios para mais detalhes.

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

Adicionando novos textos

If your translation files are stored in a remote VCS together with the code, you most likely have an existing workflow for developers to introduce new strings. Any way of adding strings will be picked up, but consider using Rota de qualidade para os textos fonte to avoid introducing errors.

When translation files are separated from the code, the following ways can introduce new strings into Weblate.

Nota

The ability to add strings in Weblate requires Gerenciar textos.

Atualizando arquivos de idioma de destino

Para arquivos monolíngues (veja Formatos de arquivos suportados), o Weblate pode adicionar novos textos de tradução nã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ê quiser fazer isso, instale a extensão Limpar arquivos de tradução que fará a limpeza de acordo com seus requisitos.

Weblate também não tentará atualizar arquivos bilíngues de nenhuma forma, então se você precisar que os arquivos po sejam atualizados de pot, você precisa fazer isso sozinho usando Métodos de importação de Atualizar textos fonte: ou usando a extensão Atualizar arquivos PO para corresponder ao POT (msgmerge).

Introducing new strings

You can add new strings in Weblate with Gerenciar textos turned on, but it is usually better to introduce new strings together with the code changes that introduced them.

Monolingual formats need addition of the new string to Arquivo de idioma da base monolíngue. This is typically done by the developers during developing the code. You might want to introduce review of those strings using Rota de qualidade para os textos fonte.

Bilingual formats typically extract strings from the source code using some tooling (like xgettext or intltool-update). Follow your localization framework documentation for instructions how to do that. Once the strings are extracted, there might be an additional step needed to update existing translations, see Atualizando arquivos de idioma de destino.

Dica

Automating string extraction is presently out of scope for Weblate. It typically involves executing untrusted code what makes it more suitable for a generic continuous integration than localization-specific platform.

You might want to integrate this into your continuous integration pipelines to make new strings automatically appear for translation. Such pipeline should also cover Evitando conflitos de mesclagem.

Gerenciando repositório de controle de versão

O Weblate armazena todas as traduções no repositório de controle de versão. Ele pode ser conectado a um upstream ou apenas interno. O Manutenção do repositório permite que você manipule com o repositório.

Dica

Com Localização contínua o repositório é automaticamente empurrado sempre que houver mudanças e normalmente não há necessidade de manipulá-lo manualmente.

../_images/component-repository.webp