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 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 Hooks 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 submeter 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 ficheiro de tradução é alterado tanto na Weblate como no repositório upstream ao mesmo tempo. Geralmente pode evitar-lo a mesclar traduções Weblate antes de fazer alterações nos ficheiros de tradução (por exemplo, antes de executar o msgmerge). Apenas diga ao Weblate para fazer o commit de todas as traduções pendentes (pode fazê-lo em Manutenção do repositório no menu Gerir) e mesclar o repositório (se o push automático não estiver ligado).

Se já encontrou um conflito de mesclagem, a maneira mais fácil de resolver todos os conflitos localmente no seu sistema é adicionar o Weblate como um repositório remoto, mesclá-lo com upstream e corrigir quaisquer conflitos. Uma vez que 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 utilizador e a chave da API.

# 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

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

# Open Weblate for translation:
wlc unlock

Se estiver a usar vários ramos na Weblate, 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 ficheiros 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, 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, pode ter que mesclar esses ramos (a depender do seu fluxo de trabalho de desenvolvimento) a descartar as diferenças:

git merge -s ours origin/maintenance

Como traduzir projetos multiplataforma?

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

Dado que tenha adicionado todos os ficheiros de tradução da plataforma como componentes num projeto (veja Adicionando projetos e componentes de tradução), 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 cadeias para todas as plataformas ao mesmo tempo.

Como exportar o repositório Git que a 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 tem acesso SSH a esta máquina, pode usar o repositório diretamente.

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

Alternativamente, 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?).

  • 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, a eliminar compromissos de mesclagem), mescla alterações e diz ao Weblate para redefinir o conteúdo no repositório upstream.

Claro que é 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?

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 os seus ficheiros 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. Pode atualizar o repositório principal com traduções do Weblate a executar:

    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 a minha Weblate está configurada corretamente?

Weblate inclui um conjunto de verificações de configuração que pode ver na interface administrativa, basta seguir a ligação 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 é registado corretamente como o utilizador 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 utilizador anônimo (veja ANONYMOUS_USER_NAME). Pode alterar o nome e o e-mail na interface de gestão.

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

Para manter o histórico, comentários ou capturas de ecrã vinculados às cadeias após alterar a localização dos ficheiros, precisa garantir que essas cadeias nunca sejam apagadas do Weblate. Essas remoções podem acontecer caso o repositório Weblate seja atualizado, mas a configuração dos componentes ainda aponta aos ficheiros antigos. Isso faz o Weblate assumir que ele deve apagar todas as traduções.

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

  1. Bloquear o componente afetado na Weblate.

  2. Fazer commit de todas as alterações pendentes e mesclá-las no repositório upstream.

  3. Desativar o recebimento de webhooks o :ref:”project”; isto impede que o Weblate veja imediatamente alterações no repositório.

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

  5. Altere o :ref:`component” para corresponder à nova configuração; ao alterar a configuração, Weblate irá buscar o repositório atualizado e notará as localizações alteradas enquanto mantém as cadeias existentes.

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

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.

  • 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 pode optar por navegar pelas traduções feitas por outros desde uma data determinada.

Como posso fornecer feedback sobre uma cadeia fonte?

Nas abas de contexto abaixo da tradução, pode utilizar a guia Comentários para fornecer feedback sobre uma cadeia 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.

  • Pode importar ficheiros de memória de tradução existentes 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 a usar um compêndio ou uma base de dados de tradução similar.

  • You can set up tmserver with all databases you have and let Weblate use it. This is good when you want to use it several times during translation.

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

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

Weblate tenta limitar ao mínimo as alterações nos ficheiros de tradução. Para alguns formatos de ficheiro, infelizmente, isso pode levar a reformatar o ficheiro. Se quiser manter o ficheiro 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.

É livre para definir os seus próprios idiomas na interface administrativa, só precisa fornecer informações sobre isso.

Veja também

Definições de idioma

Weblate pode destacar alterações numa cadeia aproximada?

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

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

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

Para traduções monolingues, a Weblate pode encontrar a cadeia anterior por ID, por isso mostra as diferenças automaticamente.

Por que é que o Weblate ainda mostra as cadeias de tradução antigas quando atualizei o modelo?

Weblate não tenta manipular os ficheiros de tradução de nenhuma outra forma que não seja permitir que os tradutores traduzam. Por isso, também não atualiza os ficheiros traduzíveis quando o modelo ou código-fonte tiverem sido alterados. 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 ficheiros de tradução, pois de outra forma geralmente acabará com alguns conflitos para mesclar.

Por exemplo, com os ficheiros PO gettext, pode atualizar os ficheiros de tradução a utilizar a ferramenta msgmerge:

msgmerge -U locale/cs/LC_MESSAGES/django.mo locale/django.pot

Caso queira fazer a atualização automaticamente, pode instalar a extensão Atualizar ficheiros PO para coincidir com POT (msgmerge).

Soluções de problemas

As solicitações às vezes falham com o erro «demais ficheiros abertos»

Isto acontece às vezes quando o seu repositório Git cresce demais e 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

Veja 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 quer acessar no seu Weblate. Por exemplo:

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

O que significa «Existem mais ficheiros para o idioma único (en)»?

Isso normalmente acontece quando tem um ficheiro de tradução para o idioma fonte. Weblate mantém o controlo de cadeias fonte e reserva o idioma fonte para isso. O ficheiro adicional para o mesmo idioma não é processado.

  • Se a tradução para o idioma de origem for desejada, por favor altere o Idioma fonte nas configurações dos componentes.

  • Caso o ficheiro de tradução para o idioma de origem não seja necessário, por favor, remova-o do repositório.

  • Caso o ficheiro de tradução para o idioma de origem seja necessário, mas deveria ser ignorado pelo Weblate, por favor, ajuste o filtro do idioma para excluí-lo.

Dica

Também pode receber mensagens de erro semelhantes para outros idiomas. Nesse caso, o motivo mais provável é que vários ficheiros 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 languagage-parsing-codes 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, vcs-gerrit” e :ref:`vcs-git-svn) e Mercurial, mas é possível escrever backends para outros VCSs.

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 Ficheiros 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 é posta em commit no VCS sob o nome dos tradutores. Desta forma, cada alteração tem a devida autoria e pode rastreá-la a usar as ferramentas VCS padrão que usa para código.

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

Por que o Weblate força mostrar todos os ficheiros PO numa única árvore?

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

Alterado na versão 4.2: Tradutores podem traduzir todos os componentes de um projeto num 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.