Perguntas frequentes

Configuração

Como criar um fluxo de trabalho automatizado?

Weblate pode tratar de todas as coisas de tradução semiautomaticamente para si. Se você der acesso de push ao seu repositório, as traduções podem acontecer sem interação, a menos que algum conflito de mesclagem ocorra.

  1. Configure seu repositório Git para informar Weblate quando houver alguma alteração, veja Ganchos de notificação para informações sobre como fazer isso.

  2. Defina uma URL de push na sua Configuração de componente no Weblate, isto permite que o Weblate faça o push das alterações para o seu repositório.

  3. Ative o Enviar ao fazer commit na sua Configuração de componente no Weblate, isto fará com que o Weblate faça push das alterações no seu repositório sempre que elas acontecerem no Weblate.

Como acessar os repositórios por SSH?

Por favor, veja Acessando repositórios para informações sobre a configuração das chaves SSH.

Como resolver conflitos de mesclagem nas traduções?

Os conflitos de mesclagem acontecem de tempos em tempos quando o arquivo de tradução é alterado tanto na Weblate como no repositório upstream ao mesmo tempo. Você geralmente pode evitar isso mesclando traduções Weblate antes de fazer alterações nos arquivos de tradução (por exemplo, antes de executar o msgmerge). Apenas diga ao Weblate para fazer o commit de todas as traduções pendentes (você pode fazer isso em Manutenção do repositório no menu Gerenciar) e mesclar o repositório (se o push automático não estiver ligado).

Se você já encontrou um conflito de mesclagem, a maneira mais fácil de resolver todos os conflitos localmente em sua máquina é adicionar o Weblate como um repositório remoto, mesclá-lo com upstream e corrigir quaisquer conflitos. Uma vez que você fizer push das mudanças de volta, Weblate será capaz de usar a versão unida sem nenhuma outra ação especial.

Nota

Dependendo da sua configuração, o acesso ao repositório Weblate pode requerer autenticação. Ao utilizar o Exportador git embutido no Weblate, você se autentica com seu nome de usuário e a chave da API.

# Open an existing checkout of the upstream repository or perform a fresh one:
git clone UPSTREAM_REPOSITORY_URL
cd REPO
# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/

# Update weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts:
edit …
git add …
…
git commit

# Rebase changes (if Weblate is configured to do rebases)
git rebase origin/main

# Push changes to upstream repository, Weblate will fetch merge from there:
git push

# Open Weblate for translation:
wlc unlock

Se você estiver usando vários ramos no Weblate, você pode fazer o mesmo com todos eles:

# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second

# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit

# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit

# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push

No caso de arquivos PO gettext, há uma forma de mesclar conflitos de uma forma semiautomática:

Obtenha e mantenha um clone local do repositório Weblate Git. Obtenha também um segundo clone local novo do repositório upstream Git (ou seja, você precisa de duas cópias do repositório upstream Git: Uma cópia intacta e uma cópia de trabalho):

# Add remote:
git remote add weblate /path/to/weblate/snapshot/

# Update Weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
    msgcat --use-first /path/to/weblate/snapshot/$PO\
               /path/to/upstream/snapshot/$PO -o $PO.merge
    msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
    rm $PO.merge
    git add $PO
done
git commit

# Push changes to the upstream repository, Weblate will fetch merge from there:
git push

Como faço para traduzir vários ramos ao mesmo tempo?

Weblate tem suporte a fazer push de alterações de tradução dentro de uma Configuração de projeto. Para cada Configuração de componente que o tem ligado (o comportamento padrão), a alteração feita é automaticamente propagada para outros. Desta forma as traduções são mantidas sincronizadas mesmo que os próprios ramos já tenham divergido bastante, e não é possível simplesmente fundir as mudanças de tradução entre eles.

Uma vez mescladas as mudanças do Weblate, você pode ter que mesclar esses ramos (dependendo do seu fluxo de trabalho de desenvolvimento) descartando as diferenças:

git merge -s ours origin/maintenance

Como traduzir projetos multiplataforma?

Weblate tem suporte a uma grande variedade de formatos de arquivo (veja Formatos de arquivos suportados) e a abordagem mais fácil é utilizar o formato nativo para cada plataforma.

Uma vez que você tenha adicionado todos os arquivos de tradução da plataforma como componentes em um projeto (veja Adicionando projetos e componentes de tradução), você pode utilizar o recurso de propagação de tradução (ligado por padrão, e pode ser desligado na Configuração de componente) para traduzir textos para todas as plataformas ao mesmo tempo.

Como exportar o repositório Git que o Weblate usa?

Não há nada de especial no repositório, ele vive sob o diretório DATA_DIR e é chamado vcs/<projeto>/<componente>/. Se você tem acesso SSH a esta máquina, você pode usar o repositório diretamente.

Para acesso anônimo, você pode querer executar um servidor Git e deixá-lo servir o repositório para o mundo exterior.

Alternativamente, você pode usar Exportador git dentro do Weblate para automatizar isto.

Quais são as opções para fazer push das alterações de volta para o upstream?

Isto depende muito da sua configuração, Weblate é bastante flexível nesta área. Aqui estão exemplos de alguns fluxos de trabalho usados com o Weblate:

  • O Weblate faz push e mescla automaticamente alterações (veja Como criar um fluxo de trabalho automatizado?).

  • Você diz manualmente ao Weblate para fazer push (ele precisa de acesso push ao repositório upstream).

  • Alguém mescla manualmente as alterações do repositório Weblate git para o repositório upstream.

  • Alguém reescreve o histórico produzido pelo Weblate (por exemplo, eliminando compromissos de mesclagem), mescla alterações e diz ao Weblate para redefinir o conteúdo no repositório upstream.

Claro que você é livre para misturar tudo isso como quiser.

Como posso limitar o acesso ao Weblate apenas às traduções, sem lhe expor o código-fonte?

Você pode utilizar o comando git submodule para separar as traduções do código-fonte enquanto ainda as tem sob controle de versão.

  1. Crie um repositório com seus arquivos de tradução.

  2. Adicione-o como um submódulo ao seu código:

    git submodule add git@example.com:project-translations.git path/to/translations
    
  3. Vincule o Weblate a este repositório, ele não precisa mais ter acesso ao repositório que contém o seu código-fonte.

  4. Você pode atualizar o repositório principal com traduções do Weblate executando:

    git submodule update --remote path/to/translations
    

Por favor, consulte a documentação do submódulo git para obter mais detalhes.

Como posso verificar se o meu Weblate está configurado corretamente?

Weblate inclui um conjunto de verificações de configuração que você pode ver na interface administrativa, basta seguir o link Relatório de desempenho na interface administrativa, ou abrir a URL /manage/performance/ diretamente.

Por que é que todos os commits são feitos por Weblate <noreply@weblate.org>?

Este é o nome padrão do committer, configurado por DEFAULT_COMMITER_EMAIL e DEFAULT_COMMITER_NAME.

O autor de cada commit (se o VCS subjacente o suportar) ainda é registrado corretamente como o usuário que fez a tradução.

Para commits onde nenhuma autoria é conhecida (por exemplo, sugestões anônimas ou resultados de tradução automática), a autoria é creditada ao usuário anônimo (veja ANONYMOUS_USER_NAME). Você pode alterar o nome e o e-mail na interface de gerenciamento.

Como mover arquivos no repositório sem perder histórico no Weblate?

Para manter o histórico, comentários ou capturas de tela vinculados aos textos após alterar a localização dos arquivos, você precisa garantir que esses textos nunca sejam excluídos do Weblate. Essas remoções podem acontecer caso o repositório Weblate seja atualizado, mas a configuração do componente ainda aponta para os arquivos antigos. Isso faz com que o Weblate presuma que deveria excluir todas as traduções.

A solução para isso é realizar a operação em sincronia com o Weblate:

  1. Bloqueie o componente afetado no Weblate.

  2. Faça commit de todas as alterações pendentes e mescle-as no repositório upstream.

  3. Desabilite o recebimento de webhooks Configuração de projeto; isso evita que o Weblate veja imediatamente as mudanças no repositório.

  4. Faça todas as alterações necessárias no repositório (por exemplo, usando git mv), faça o push delas para o repositório upstream.

  5. Altere o Configuração de componente para corresponder à nova configuração; ao alterar a configuração, o Weblate buscará o repositório atualizado e observará os locais alterados, mantendo os textos existentes.

  6. Desbloqueie o componente e reabilite os ganchos na configuração do projeto.

Dica

Backups de nível de projeto might be useful to perform prior to such disrupting changes.

Uso

Como faço para revisar as traduções dos outros?

  • Há vários fluxos de trabalho baseados em revisões disponíveis em Weblate, veja Fluxos de trabalho de tradução.

  • Você pode se inscrever para quaisquer alterações feitas em Notificações e depois verificar outras contribuições à medida que elas chegam por e-mail.

  • Há uma ferramenta de revisão disponível na parte inferior da vista de tradução, onde você pode optar por navegar pelas traduções feitas por outros desde uma data determinada.

Como posso fornecer feedback sobre um texto fonte?

Nas abas de contexto abaixo da tradução, você pode utilizar a aba Comentários para fornecer feedback sobre um texto fonte, ou discuti-lo com outros tradutores.

Como posso usar as traduções existentes enquanto traduzo?

  • Todas as traduções no Weblate podem ser usadas graças à memória de tradução compartilhada.

  • Você pode importar tradução arquivos de memória de tradução existente para o Weblate.

  • Use a funcionalidade de importação para carregar compêndios como traduções, sugestões ou traduções que necessitem de revisão. Esta é a melhor abordagem para uma tradução única usando um compêndio ou uma base de dados de tradução similar.

  • Você pode configurar tmserver com todos os bancos de dados que você tem e deixar o Weblate utilizá-lo. Isto é bom quando você quer utilizá-lo várias vezes durante a tradução.

  • Outra opção é traduzir todos os projetos relacionados em uma única instância Weblate, o que o fará pegar automaticamente as traduções de outros projetos também.

O Weblate atualiza arquivos de tradução além de traduções?

Weblate tenta limitar ao mínimo as alterações nos arquivos de tradução. Para alguns formatos de arquivo, infelizmente, isso pode levar a reformatar o arquivo. Se você quiser manter o arquivo formatado do seu jeito, use um gancho (hook) de pré-commit para isso.

De onde vêm as definições linguísticas e como posso adicionar as minhas?

O conjunto básico de definições de idiomas está incluído no Weblate e no Translate-toolkit. Isso abrange mais de 150 idiomas e inclui informações sobre formas plurais ou direção do texto.

Você é livre para definir seus próprios idiomas na interface administrativa, você só precisa fornecer informações sobre isso.

Weblate pode destacar alterações em um texto aproximado?

Weblate tem suporte a isso, porém precisa dos dados para mostrar a diferença.

Para arquivos PO Gettext, você tem que passar o parâmetro --previous para msgmerge ao atualizar arquivos PO, por exemplo:

msgmerge --previous -U po/cs.po po/phpmyadmin.pot

Para traduções monolíngues, o Weblate pode encontrar o texto anterior por ID, por isso mostra as diferenças automaticamente.

Por que é que o Weblate ainda mostra os textos de tradução antigos quando eu atualizei o modelo?

Weblate não tenta manipular os arquivos de tradução de nenhuma outra forma que não seja permitir que os tradutores traduzam. Por isso, também não atualiza os arquivos traduzíveis quando o modelo ou código-fonte tiverem sido alterados. Você simplesmente tem que fazer isso manualmente e fazer push das alterações para o repositório, o Weblate irá então pegar as alterações automaticamente.

Nota

Normalmente é uma boa ideia mesclar as alterações feitas na Weblate antes de atualizar os arquivos de tradução, pois de outra forma geralmente acabará com alguns conflitos para mesclar.

How to handle renaming translation files?

When renaming files in the repository, it can happen that Weblate sees this as removal and adding of the files. This can lead to losing strings history, comments and suggestions.

To avoid that, perform renaming in following steps:

  1. Bloqueie o componente de tradução em Managing the local VCS repository.

  2. Commit pending changes in Managing the local VCS repository.

  3. Merge Weblate changes to the upstream repository.

  4. Disable receiving updates via hooks using Habilitar ganchos.

  5. Perform the renaming of the files in the repository.

  6. Update the component configuration to match new file names.

  7. Enable update hooks and unlock the component.

Dica

Backups de nível de projeto might be useful to perform prior to such disrupting changes.

Soluções de problemas

As solicitações às vezes falham com o erro “muitos arquivos abertos”

Isto acontece às vezes quando o seu repositório Git cresce demais e você tem muitos deles. Comprimir os repositórios Git irá melhorar esta situação.

A maneira mais fácil de fazer isto é executar:

# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
    pushd $d
    git gc
    popd
done

Ver também

DATA_DIR

Ao acessar ao site recebo um erro de “Bad Request (400)”

Isto é muito provavelmente causado por uma ALLOWED_HOSTS mal configurada. Ele precisa conter todos os nomes de host que você quer acessar no seu Weblate. Por exemplo:

ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]

O que significa “Existem mais arquivos para o idioma único (en)”?

Isso normalmente acontece quando você tem arquivo de tradução para idioma fonte. Weblate mantém o controle de textos fonte e reserva o idioma fonte para isso. O arquivo adicional para o mesmo idioma não é processado.

  • Caso a tradução para o idioma fonte seja desejada, altere o Idioma fonte nas configurações do projeto. Você pode querer usar English (Developer) como idioma fonte, ou usar Rota de qualidade para os textos fonte.

  • Caso o arquivo de tradução para o idioma fonte não seja necessário, remova-o do repositório.

  • Caso o arquivo de tradução para o idioma fonte seja necessário, mas deva ser ignorado pelo Weblate, ajuste o Filtro de idioma para excluí-lo.

Dica

Você também pode receber mensagens de erro semelhantes para outros idiomas. Nesse caso, o motivo mais provável é que vários arquivos mapeiam para um único idioma no Weblate.

Isto pode ser causado pelo uso de códigos de idioma obsoletos juntamente com um novo (ja e jp para japonês) ou incluindo tanto códigos específicos do país como genéricos (fr e fr_FR). Veja Analisando códigos de idioma para mais detalhes.

Funcionalidades

O Weblate tem suporte a outros VCSs que não o Git e o Mercurial?

Weblate atualmente não tem suporte nativo para nada além de Git (com suporte estendido para Pull requests do GitHub, Gerrit e Subversion) e Mercurial, mas é possível escrever backends para outros VCSs.

Você também pode usar Auxiliares de remotos do Git no Git para acessar outros VCSs.

Weblate também tem suporte à operação sem VCS, veja Arquivos locais.

Nota

Para suporte nativo de outros VCSs, Weblate requer o uso de VCS distribuídos, e provavelmente poderia ser ajustado para trabalhar com qualquer outra coisa além de Git e Mercurial, mas alguém tem que implementar esse suporte.

Como o Weblate credita os tradutores?

Cada alteração feita no Weblate é colocada em commit no VCS sob o nome dos tradutores. Desta forma, cada alteração tem a devida autoria, e você pode rastreá-la usando as ferramentas VCS padrão que você usa para código.

Além disso, quando o formato do arquivo de tradução o suporta, os cabeçalhos do arquivo são atualizados para incluir o nome do tradutor.

Por que o Weblate força mostrar todos os arquivos PO em uma única árvore?

O Weblate foi projetado de uma forma que cada arquivo PO é representado como um único componente. Isso é benéfico para os tradutores, então eles sabem o que estão realmente traduzindo.

Alterado na versão 4.2: Tradutores podem traduzir todos os componentes de um projeto em um idioma específico como um todo.

Por que o Weblate usa códigos de idioma como sr_Latn ou zh_Hant?

Estes são códigos de idioma definidos por RFC 5646 para melhor indicar que eles são idiomas realmente diferentes, em vez de modificadores utilizados anteriormente de forma errada (para variantes @latin) ou códigos de país (para chinês).

O Weblate ainda entende códigos de linguagem legados e irá mapeá-los para o atual - por exemplo sr@latin será tratado como sr_Latn ou zh@CN como zh_Hans.

Nota

O padrão do Weblate é o código de idioma do estilo POSIX com sublinhado, veja Definições de idioma para mais detalhes.