
Weblate é um sistema de localização contínua baseada na web, feito de software livre e protegido por copyleft, usado por mais de 2500 projetos de software livre e empresas em mais de 165 países.
Instale-o ou use o serviço Hosted Weblate em weblate.org.
Apoio¶
Weblate é um software livre com suporte profissional opcional e ofertas de hospedagem em nuvem. Confira https://weblate.org/hosting/ para mais informações.
Documentação¶
Encontra-se no diretório docs
do código-fonte ou visualizado online em https://docs.weblate.org/
Bugs¶
Por favor, relate as solicitações de recursos e os problemas em:
Licença¶
Copyright © 2012–2021 Michal Čihař michal@cihar.com
Este programa é um software livre: pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicado pela Free Software Foundation, seja a versão 3 da Licença, ou (ao seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que ele seja útil, mas sem qualquer garantia; sem sequer a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO ESPECÍFICO. Consulte a Licença Pública Geral GNU para obter mais detalhes.
Deve ter recebido uma cópia da Licença Pública Geral GNU junto a este programa. Caso contrário, veja https://www.gnu.org/licenses/.
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 ou Recurso de cadeias de Android). Os projetos existem para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de uma aplicação).
Internamente, cada projeto tem traduções para cadeias comuns propagadas em outros componentes dentro dele por predefinição. Isso 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 a utilizar Permitir propagação da tradução caso as traduções devam divergir.
Veja também
Registo e perfil de utilizador¶
Registo¶
Todos podem procurar projetos, visualizar traduções ou sugerir traduções por predefinição. Somente utilizadores registados têm permissão para realmente gravar as alterações e são creditados para cada tradução feita.
Pode registar-se seguindo alguns passos simples:
Preencha o formulário de registo com as suas credenciais.
Ative o registo seguindo a hiperligação no e-mail que receber.
Ajuste opcionalmente o seu perfil para escolher quais idiomas conhece.
Painel¶
Ao fazer login verá uma visão geral de projetos e componentes, bem como a respetiva progressão de tradução deles.
Novo na versão 2.5.
Os componentes dos projetos que está a observar são mostrados por predefinição e cruzados com os idiomas da sua preferência.
Dica
Pode mudar para visualizações diferentes a usar as guias de navegação.

O menu tem estas opções:
Projetos > Visualizar todos os projetos no menu principal mostra o estado da tradução, para cada projeto, na instância do Weblate.
Selecionar um idioma no menu principal de Idiomas irá mostrar o estado da tradução de todos os projetos, filtrado por um dos seus idiomas primários.
Traduções observadas no Painel vai mostrar o estado da tradução apenas dos projetos que está observando, filtradas por os seus idiomas primários.
Além disso, o menu suspenso também pode mostrar qualquer quantidade de listas de componentes, conjuntos de componentes do projeto pré-configurados pelo administrador da Weblate, veja Lista de componentes.
Pode configurar a sua exibição de painel predefinido pessoal na secção Preferências das configurações do perfil do utilizador.
Nota
Quando o Weblate estiver configurado para um único projeto a usar SINGLE_PROJECT
no ficheiro settings.py
(veja Configuração), o painel não será mostrado, pois o utilizador será redirecionado para um único projeto ou componente.
Perfil do utilizador¶
O perfil do utilizador é acessível clicando no ícone do utilizador no topo direito do menu superior e depois no menu Configurações.
O perfil do utilizador contém as suas preferências. Nome e endereço de e-mail são usados em commits de VCS, por isso mantenha essas informações precisas.
Nota
Todas as seleções de idiomas só oferecem idiomas traduzidos atualmente.
Dica
Solicite ou adicione outros idiomas que deseja traduzir clicando no botão para torná-los também disponíveis.
Idiomas¶
Idioma da interface¶
Escolha o idioma que deseja exibir na UI.
Idiomas traduzidos¶
Escolha quais idiomas prefere traduzir e eles serão oferecidos na página principal de projetos assistidos, para que tenha acesso mais fácil a todas essas traduções em cada um desses idiomas.

Idiomas secundários¶
Pode definir quais idiomas secundários são lhe mostrados como um guia durante a tradução. Um exemplo pode ser visto na imagem a seguir, onde o idioma hebreu é mostrado como secundário:

Preferências¶
Visualização predefinida do painel¶
Na guia Preferências, pode escolher qual das visualizações disponíveis do painel de instrumentos deve-se apresentar por predefinição. Se escolher a lista de Lista de componentes, terá que selecionar qual lista de componentes será exibida a partir da Lista de componentes predefinida suspensa.
Veja também
Hiperligação do editor¶
Uma ligação de código-fonte é mostrado no navegador web configurado no Configuração de componente por predefinição.
Dica
Ao definir o Ligação do editor, usa o editor local para abrir o ficheiro de código-fonte VCS de cadeias traduzidas. Pode usar Marcação de modelo.
Geralmente alguma coisa como editor://open/?file={{filename}}&line={{line}}
é uma boa opção.
Veja também
Pode encontrar mais informações sobre o registo de protocolos de URL personalizados para o editor na documentação do Nette.
Notificações¶
Inscreva-se em várias notificações da guia Notificações. As notificações para eventos selecionados em projetos assistidos ou administrados serão lhe enviadas por e-mail.
Algumas das notificações são enviadas apenas para eventos nos seus idiomas (por exemplo, sobre novas cadeias para traduzir), enquanto algumas acionam no nível de componente (por exemplo, erros de fusão). Esses dois grupos de notificações são visualmente separados nas configurações.
Pode alternar notificações para projetos assistidos e projetos administrados e pode ser mais ajustado (ou silenciado) por projeto e componente. Visite a página de visão geral de componentes e selecione a escolha apropriada no menu Observando.
No caso de Observar automaticamente projetos em contribuição estar ativado, começará automaticamente a ver os projetos ao traduzir uma cadeia. O valor padrão depende de DEFAULT_AUTO_WATCH
.
Nota
Não receberá notificações para as suas próprias ações.

Conta¶
A guia Conta permite configurar detalhes básicos da conta, conectar vários serviços que pode usar para entrar no Weblate, remover a sua conta completamente ou descarregar os seus dados de utilizador (veja Exportação de dados de utilizadores do Weblate).
Nota
A lista de serviços depende da configuração do Weblate, mas pode ser feita para incluir sites populares como GitLab, GitHub, Google, Facebook ou Bitbucket ou outros provedores de OAuth 2.0.

Perfil¶
Todos os campos desta página são opcionais e podem ser apagados a qualquer momento, e ao preenchê-los, dá-nos o seu consentimento para compartilhar esses dados onde quer que o seu perfil de utilizador apareça.
Um avatar pode ser mostrado para cada utilizador (dependendo de ENABLE_AVATARS
). Estas imagens são obtidas utilizando https://gravatar.com/.
Licenças¶
Acesso API¶
Pode obter ou redefinir o seu token API de acesso aqui.
Registo de auditoria¶
O registo de auditoria rastreia as ações realizadas com a sua conta. Ele regista o endereço IP e o navegador para cada ação importante com a sua conta. As ações críticas também desencadeiam uma notificação a um endereço de e-mail principal.
Veja também
Traduzir a usar o Weblate¶
Obrigado pelo interesse em traduzir a usar o Weblate. Os projetos podem ser configurados para tradução direta ou por meio de sugestões feitas por utilizadores sem contas.
No geral, há dois modos de tradução:
O projeto aceita traduções diretas
O projeto aceita apenas sugestões, que são validadas automaticamente uma vez que uma quantidade definida de votos é alcançado
Por favor, veja Fluxos de trabalho de tradução para obter mais informações sobre fluxo de trabalho de tradução.
Opções para a visibilidade do projeto de tradução:
Publicamente visível e todos podem contribuir
Visível apenas para um certo grupo de tradutores
Veja também
Projetos de tradução¶
Os projetos de tradução possuem componentes; recursos para o mesmo software, livro ou projeto.

Ligações de tradução¶
Depois de navegar para um componente, um conjunto de ligações leva a sua tradução real. A tradução é ainda dividida em verificações individuais, como Cadeias não traduzidas ou Cadeias que necessitam edição. Se todo o projeto for traduzido, sem erro, Todas as cadeias ainda estão disponíveis. Alternativamente, pode usar o campo de pesquisa para encontrar uma cadeia ou termo específico.

Sugestões¶
Nota
As permissões podem variar de acordo com a configuração da sua instância do Weblate.
Utilizadores anônimos só podem (por padrão) encaminhar sugestões. Isso ainda está disponível para os utilizadores autenticados, nos casos em que surge a incerteza sobre a tradução, a levar outros tradutores a revisá-la.
As sugestões são verificadas diariamente para remover as duplicatas e sugestões a corresponder à tradução atual.
Comentários¶
Três tipos de comentários podem ser publicados: para traduções, cadeias fonte ou para relatar erros de cadeias fonte quando esta funcionalidade é ativada a utilizar Ativar revisões de fontes. Escolha o adequado para o tópico que deseja discutir. Os comentários de cadeia fonte são, em qualquer caso, bons para fornecer feedback sobre a cadeia original, por exemplo, que ele deve ser reformulado ou para fazer perguntas sobre ele.
Pode usar a sintaxe do Markdown em todos os comentários e mencionar outros utilizadores a usar @menção
.
Variantes¶
As variantes são usadas para agrupar variantes de diferentes comprimentos da cadeia. O frontend do seu projeto pode, então, usar cadeias diferentes a depender do ecrã ou do tamanho da janela.
Veja também
Etiquetas¶
As etiquetas são usadas para categorizar cadeias dentro de um projeto para personalizar ainda mais o fluxo de trabalho de localização (por exemplo, para definir categorias de cadeias).
Veja também
Traduzir¶
Na página de tradução, a cadeia fonte e uma área de edição para tradução dela são mostrados. Caso a tradução seja plural, são mostradas múltiplas cadeia fonte e áreas de edição, cada um descrito e rotulado em na quantidade de formas de plural que o idioma traduzido tem.
Todos os caracteres especiais de espaço em branco são sublinhados em vermelho e indicados com símbolos cinzentos. Mais de um espaço subsequente também é sublinhado em vermelho para alertar o tradutor para um possível problema de formatação.
Vários pedaços de informações extras podem ser mostrados nesta página, a maioria proveniente do código-fonte do projeto (como contexto, comentários ou onde a mensagem está a ser usada). Campos de tradução para quaisquer idiomas secundários, que os tradutores venham a selecionar nas preferências, serão mostrados (veja Idiomas secundários) acima da cadeia fonte.
Below the translation, translators will find suggestion made by others, to be accepted (✓), accepted with changes (✏️), or deleted (🗑).
Plurais¶
Palavras a mudar a forma para levar em conta sua designação numérica são chamadas de plurais. Cada idioma tem uma própria definição de plurais. O inglês, por exemplo, tem suporte a uma. Na definição singular de, por exemplo, «car» (carro), implicitamente um carro é referenciado, enquanto na definição plural, «carros» significa dois ou mais carros (ou o conceito de carros como substantivo). Idiomas como, por exemplo, tcheco ou árabe têm mais plurais e também as regras dele para os plurais são diferentes.
O Weblate tem total suporte a cada uma dessas formas, em cada respectivo idioma (a traduzir cada plural separadamente). A quantidade de campos e como ele é usado na aplicação ou projeto traduzido depende da forma de plural configurada. Weblate mostra as informações básicas e Language Plural Rules do Unicode Consortium tem informações mais detalhadas.
Veja também

Atalhos de teclado¶
Alterado na versão 2.18: Os atalhos do teclado foram renovados em 2.18 para reduzir a possibilidade de colidir com o atalhos predefinidos de navegadores ou sistemas.
Os seguintes atalhos de teclado podem ser utilizados durante a tradução:
Atalho de teclado |
Descrição |
---|---|
Alt+Home |
De momento, esta tradução está bloqueada. |
Alt+End |
De momento, esta tradução está bloqueada. |
Alt+PageUp ou Ctrl ↑ ou Alt ↑ ou Cmd ↑ |
De momento, esta tradução está bloqueada. |
Alt+PageDown ou Ctrl+↓ ou Alt+↓ ou Cmd+↓ |
De momento, esta tradução está bloqueada. |
Alt+Enter ou Ctrl+Enter ou Cmd+Enter |
Gravar tradução atual. |
Ctrl+Shift+Enter ou Cmd+Shift+Enter |
Desmarca a tradução como a precisar de edição e a envia. |
Ctrl+E ou Cmd+E |
Muda o foco ao editor de tradução. |
Ctrl+U ou Cmd+U |
Muda o foco ao editor de comentários. |
Ctrl+M ou Cmd+M |
Mostra a guia Sugestões automáticas, consulte Sugestões automáticas. |
Ctrl+1 até Ctrl+9 ou Cmd+1 até Cmd+9 |
Copia objetos colocáveis de determinada quantidade da cadeia fonte. |
Ctrl+M+1 até 9 ou Cmd+M+1 até 9 |
É passado como um parâmetro único que consiste o nome de uma tradução atual. |
Ctrl+I+1 até 9 ou Cmd+I+1 até 9 |
Ignore um item na lista de verificações falhadas. |
Ctrl+J ou Cmd+J |
Mostra a guia de Cadeias próximas. |
Ctrl+S ou Cmd+S |
Muda o foco para o campo de pesquisa. |
Ctrl+O ou Cmd+O |
Copia a cadeia fonte. |
Ctrl+Y ou Cmd+Y |
Marca ou desmarca o marcador Necessita edição. |
Teclado visual¶
Uma pequena linha de teclado visual é mostrada logo acima do campo de tradução. Isto pode ser útil para manter a pontuação local em mente (pois a linha é local para cada idioma) ou ter caracteres que seriam de difícil digitação.
Os símbolos mostrados são apresentados em três categorias:
Caracteres configurados pelo utilizador definidos em Perfil do utilizador
Caracteres por idioma fornecidos pelo Weblate (por exemplo, citações ou caracteres específicos RTL)
Caracteres configurados a usar
SPECIAL_CHARS

Contexto da tradução¶
Esta descrição contextual fornece informações relacionadas sobre a cadeia atual.
- Atributos da cadeia
Coisas como ID da mensagem, contexto (
msgctxt
) ou localização no código-fonte.- Capturas de ecrã
Capturas de ecrã podem ser enviadas ao Weblate para melhor informar os tradutores sobre onde e como a cadeia é usada, veja Contexto visual para cadeias.
- Cadeias próximas
Exibe mensagens próximas do ficheiro de tradução. Estas também são geralmente usadas num contexto semelhante e se mostram úteis para manter a tradução consistente.
- Outras ocorrências
No caso de uma mensagem aparecer em vários lugares (por exemplo, vários componentes), esta guia mostra todos eles se forem considerados inconsistentes (veja Inconsistente). Pode escolher qual usar.
- Memória de tradução
Veja cadeias semelhantes traduzidas no passado, veja Memória de Tradução.
- Glossário
Exibe termos do glossário do projeto usados na mensagem atual.
- Alterações recentes
Lista de pessoas que modificaram esta mensagem recentemente a usar Weblate.
- Projeto
Informações do projeto, como instruções para tradutores ou um diretório, ou ligação para a cadeia no repositório do sistema de controlo de versão que o projeto usa.
Se quiser ligações diretos, o formato da tradução tem que ter suporte.
Histórico de tradução¶
Cada alteração é por predefinição (a menos que desativada nas configurações dos componentes) gravada no banco de dados e pode ser revertida. Opcionalmente, ainda se pode reverter qualquer coisa no sistema de controle de versão subjacente.
Comprimento da cadeia traduzida¶
Weblate pode limitar o comprimento de uma tradução em várias formas para garantir a cadeia traduzida não é muito longa:
A limitação padrão para tradução é dez vezes maior do que a cadeia fonte. Isso pode ser desativado em
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH
. Caso esteja a atingir isso, ele também pode ser causado por uma tradução monolingue ser erroneamente configurada como bilingue, a fazer o Weblate errar a chave de tradução para o texto fonte em vez da cadeia fonte. Veja Formatos bilíngues e monolíngues para obter mais informações.Comprimento máximo em caracteres definidos por ficheiro de tradução ou um sinalizador, consulte Tamanho máximo da tradução.
Tamanho máximo renderizado em pixels definido por sinalizadores, veja Tamanho máximo da tradução.
Sugestões automáticas¶
Baseado na configuração e o seu idioma traduzido, o Weblate fornece sugestões de várias ferramentas de tradução e memoria-tradução. Todas as traduções de máquina estão disponíveis numa única guia de cada página de tradução.
Veja também
Encontra a lista de ferramentas suportadas em Tradução automática.
Tradução automática¶
Pode usar a tradução automática para a iniciar a tradução com base em fontes externas. Esta ferramenta se chama Tradução automática, acessível no menu Ferramentas, uma vez que tenha selecionado um componente e um idioma:

Dois modos de operação são possíveis:
Usar outros componentes do Weblate como fonte para traduções.
Usar serviços selecionados de tradução automática com traduções acima de um certo limite de qualidade.
Também pode escolher quais cadeias devem ser traduzidas automaticamente.
Aviso
Tenha em mente que isso substituirá as traduções existentes se empregadas com filtros amplos, como Todos as cadeias.
Útil em várias situações, como a consolidação da tradução entre diferentes componentes (por exemplo, a aplicação e o site dela) ou quando estiver a iniciar uma tradução para um novo componente a usar traduções existentes (memória de tradução).
Veja também
Limitação de taxa¶
Para evitar abusos na interface, uma limitação de taxa é aplicada a várias operações como pesquisa, envio de formulários de contato ou tradução. Se afetado por isto, fica bloqueado por um certo período até que possa executar a operação novamente.
Os limites predefinidos e o ajuste fino estão descritos no manual administrativo, veja Limitação de taxa.
Procurar e substituir¶
Altere a terminologia efetivamente ou execute a correção em massa das cadeias a usar Pesquisar e substituir no menu Ferramentas.
Dica
Não se preocupe em estragar as cadeias. Este é um processo de dois passos que mostra uma pré-visualização das cadeias editados antes que a alteração real seja confirmada.
Edição em massa¶
A edição em massa permite realizar uma operação sobre a quantidade de cadeias. Define os textos a procurar por eles e configura algo a ser feito para corresponder-lhes. As seguintes operações são suportadas:
Alterar o estado da cadeia (por exemplo, para aprovar todas as cadeias não revistas).
Ajustar os sinalizadores de tradução (veja Personalizando comportamento a usar marcadores)
Ajustar as etiquetas de cadeias (veja Etiquetas de cadeia)
Dica
Esta ferramenta é chamada Editor em massa, acessível no menu Ferramentas de cada projeto, componente ou tradução.
Veja também
Descarregar e enviar traduções¶
Pode exportar ficheiros de uma tradução, fazer alterações e importá-los novamente. Isso permite trabalhar off-line e depois mesclar mudanças de volta na tradução existente. Isso funciona mesmo que tenha sido alterado entretanto.
Nota
As opções disponíveis podem ser limitadas por configurações de controle de acesso.
Descarregar traduções¶
A partir do painel do projeto ou componente, ficheiros traduzíveis podem ser descarregados no menu Ficheiros.
A primeira opção é descarregar o ficheiro no formato original, uma vez que ele é armazenado no repositório. Neste caso, quaisquer alterações pendentes na tradução estão a ser comprometidas e o ficheiro atualizado é produzido sem nenhuma conversão.
Pode também descarregar a tradução convertida num dos formatos de localização amplamente utilizados. Os ficheiros convertidos serão enriquecidos com dados fornecidos no Weblate, como contexto adicional, comentários ou marcadores. Vários formatos de ficheiro estão disponíveis através do menu Ficheiros ↓ Personalizar a descarrega:
gettext PO
XLIFF com extensões gettext
XLIFF 1.1
TermBase eXchange
Translation Memory eXchange
gettext MO (disponível apenas quando a tradução está usando gettext PO)
CSV
Excel Open XML
JSON (disponível apenas para traduções monolíngues)
Recurso de textos de Android (disponível apenas para traduções monolíngues)
Textos do iOS (disponível apenas para traduções monolíngues)
Dica
O conteúdo disponível nos ficheiros convertidos difere com base nos recursos de formato de arquivo, pode encontrar uma visão geral em Capacidades dos tipos de tradução.

Enviar traduções¶
Quando tiver feito as suas alterações, use Enviar tradução no menu Ficheiros.

Formatos de ficheiros suportados¶
Todos ficheiros num formato de ficheiro suportado pode ser enviado, mas ainda é recomendado usar o mesmo formato de ficheiro como o para a tradução, caso contrário, alguns recursos podem não ser traduzidos corretamente.
Veja também
O ficheiro enviado é mesclado para atualizar a tradução, substituindo as entradas existentes por predefinição (pode ser desativado ou ativado na caixa de diálogo de envio).
Métodos de importação¶
Estas são as opções apresentadas ao enviar ficheiros de tradução:
- Adicionar como tradução (
translate
) Traduções importadas são adicionadas como traduções. Este é o caso de uso mais comum e o comportamento predefinido.
Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.
- Adicionar como sugestão (
suggest
) As traduções importadas são adicionadas como sugestões, faça isso quando quiser ter as suas cadeias enviadas serem revisadas.
Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.
- Adicionar como tradução que necessita de edição («fuzzy»)
As traduções importadas são adicionadas como traduções que necessitam de edição. Isso pode ser útil quando quer que as traduções sejam usadas, mas também revisadas.
Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.
- Substituir ficheiro de tradução existente («replace»)
O ficheiro existente é substituído por novo conteúdo. Isso pode levar à perda de traduções existentes, use com cuidado.
- Atualizar cadeias fonte («source»)
Atualiza cadeias fonte em ficheiro de tradução bilíngue. Isso é semelhante ao que Atualizar ficheiros PO para coincidir com POT (msgmerge) faz.
Esta opção é suportada apenas para alguns formatos de ficheiro.
- Adicionar cadeias (
add
) Adiciona cadeias à tradução. Pula a que já existe.
Caso queira adicionar cadeias e atualizar traduções existentes, envie do ficheiro pela segunda vez com Adicionar como tradução.
Esta opção está disponível apenas com Gerir cadeias ativado.
Apenas fonte, tradução e chave (contexto) são usados do ficheiro enviado.
Gestão de conflitos¶
Define como lidar com cadeias enviadas que já são traduzidas.
Cadeias necessitando de edição¶
Há também uma opção de como lidar com cadeias que necessitam de edição no ficheiro importado. Tais cadeias podem ser manuseados de uma das três maneiras seguintes: «Não importar», «Importar como cadeia que necessita edição» ou «Importar como traduzido».
Substituindo autoria¶
Com permissões administrativas, também pode especificar a autoria do ficheiro enviado. Isso pode ser útil no caso de ter recebido o ficheiro de outra maneira e quiser mesclá-lo em traduções existentes enquanto credita corretamente o autor real.
Glossário¶
Cada projeto pode incluir um ou mais glossários como um atalho para armazenar terminologia. O glossário facilita a manutenção da consistência da tradução.
Um glossário para cada idioma pode ser gerido sozinho, mas eles são armazenados juntos como um único componente que ajuda os administradores de projeto e tradutores multilingues a manter alguma consistência entre os idiomas também. Os termos do glossário que contêm palavras da cadeia atualmente traduzida são exibidos na barra lateral do editor de tradução.
Gestão de glossários¶
Alterado na versão 4.5: Glossários são agora componentes de tradução comuns e pode usar todos os recursos da Weblate neles — a comentar, a armazenar num repositório remoto ou a adicionar explicações.
Use qualquer componente como um glossário a ligar Usar como um glossário. Pode criar vários glossários para um projeto.
Um glossário vazio para um determinado projeto é criado automaticamente com o projeto. Os glossários são compartilhados entre todos os componentes de um mesmo projeto e opcionalmente com outros projetos a utilizar Compartilhar em projetos do respectivo componente do glossário.
O componente do glossário se parece com qualquer outro componente da Weblate com etiqueta colorida adicionada:

Pode navegar por todos os termos do glossário:

ou edite-os como qualquer tradução.
Termos de glossário¶
Os termos de glossário são traduzidos da mesma forma que as cadeias comuns. Pode alternar recursos adicionais a utilizar o menu Ferramenta para cada termo.

Untranslatable terms¶
Novo na versão 4.5.
Sinalizar certas traduções de termos do glossário como read-only
editando em massa, digitando o marcador ou usando Ferramentas ↓ Marcar como somente leitura significa que não podem ser traduzidas. Use-o para nomes de marcas ou outros termos que não devem ser alterados em outros idiomas. Esses termos são destacados visualmente na barra lateral do glossário.
Veja também
Traduções proibidas¶
Novo na versão 4.5.
Marcar certas traduções de termos do glossário como forbidden
, editando em massa, digitando o marcador, ou usando Ferramentas ↓ Marcar como tradução proibida significa que não devem ser usado. Use isto para esclarecer a tradução quando algumas palavras são ambíguas ou podem ter significados inesperados.
Veja também
Terminologia¶
Novo na versão 4.5.
Marcar certos termos do glossário como terminology
editando em massa, digitando o marcador ou usando Ferramentas ↓ Marcar como terminologia adiciona entradas para eles em todos os idiomas no glossário. Use-o para termos importantes que devem ser bem pensados e manter um significado consistente em todos os idiomas.
Veja também
Variantes¶
As variantes são uma forma genérica de agrupar cadeias. Todas as variantes do termo são listadas no glossário lateral ao traduzir.
Dica
Pode usar isso para adicionar abreviações ou expressões mais curtas para um termo.
Veja também
Verificações e correções¶
As verificações de qualidade ajudam a apanhar erros comuns do tradutor, garantindo que a tradução esteja em boa forma. As verificações podem ser ignoradas em caso de falsos positivos.
Quando enviar uma tradução com uma verificação a falhar será imediatamente mostrada ao utilizador:

Correções automáticas¶
Além de Verificações de qualidade, o Weblate pode corrigir automaticamente alguns erros comuns em cadeias traduzidas. Use-o com cuidado para não causar erros por meio disto.
Veja também
Verificações de qualidade¶
O Weblate emprega uma ampla gama de verificações de qualidade em cadeias. A secção a seguir descreve todos eles em mais detalhe. Há também verificações específicas de idiomas. Por favor, preencha um relatório de erro se alguma verificação for relatada por engano.
Veja também
Verificações de tradução¶
Executado a cada alteração da tradução, ajuda os tradutores a manter traduções de boa qualidade.
Markup BBcode¶
- Summary
O BBcode na tradução não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.markup.BBCodeCheck
- Flag to ignore
ignore-bbcode
BBCode representa marcação simples, como, por exemplo, destacar partes importantes de uma mensagem em fonte em negrito ou itálico.
Esta verificação garante que eles também estejam na tradução.
Nota
O método para detetar BBcode é atualmente bastante simples, então esta verificação pode produzir falsos positivos.
Palavras consecutivas duplicadas¶
Novo na versão 4.1.
- Summary
O texto contém a mesma palavra duas vezes seguidas:
- Âmbito
translated strings
- Check class
weblate.checks.duplicate.DuplicateCheck
- Flag to ignore
ignore-duplicate
Verifica se não há palavras duplicadas consecutivas numa tradução. Isso geralmente indica um erro na tradução.
Dica
Esta verificação inclui regras específicas do idioma para evitar falsos positivos. Caso seja falso no seu caso, avise-nos. Veja Relatando problemas no Weblate.
Não segue o glossário¶
Novo na versão 4.5.
- Summary
A tradução não segue os termos definidos num glossário.
- Âmbito
translated strings
- Check class
weblate.checks.glossary.GlossaryCheck
- Sinalize para ativar
check-glossary
- Flag to ignore
ignore-check-glossary
Esta verificação tem de ser ligada a usar o sinalizador check-glossary
(veja Personalizando comportamento a usar marcadores). Por favor, considere seguir antes de ativá-lo:
Ele faz a correspondência exata das cadeias, espera-se que o glossário contenha termos em todas as variantes.
A verificação de cada cadeia em relação ao glossário é dispendiosa, ela irá retardar qualquer operação na Weblate que envolva a execução de verificações como a importação de textos ou a tradução.
Espaço duplo¶
- Summary
A tradução contém espaço duplo
- Âmbito
translated strings
- Check class
weblate.checks.chars.DoubleSpaceCheck
- Flag to ignore
ignore-double-space
Verifica se espaços duplos estão presentes na tradução para evitar falsos positivos em outras verificações relacionadas ao espaço.
A verificação é falsa quando espaços duplos são encontrados na fonte, o que significa que os espaços duplos são intencionais.
Cadeias formatadas¶
Verifica se a formatação em cadeias é replicada entre a fonte e a tradução. Omitir cadeias de formato na tradução geralmente causa problemas graves, de modo que a formatação em cadeias geralmente deve coincidir com a fonte.
O Weblate tem suporte a verificar cadeias de formato em vários idiomas. A verificação não é ativada automaticamente, somente se uma cadeia for sinalizada adequadamente (por exemplo, «c-format” para formato C). O Gettext adiciona-o automaticamente, mas provavelmente terá que adicioná-lo manualmente para outros formatos de ficheiro ou se os seus ficheiros PO não forem gerados por xgettext.
Isso pode ser feito por unidade (ver Informações adicionais sobre cadeias fonte) na Configuração de componente. Tê-lo definido por componente é mais simples, mas pode levar a falsos positivos no caso de a cadeia não ser interpretada como uma cadeia de formatação, mas a sintaxe de textos de formato passa a ser usada.
Dica
Caso a verificação de formato específico não esteja disponível no Weblate, pode usar Espaços reservados genéricos.
Além de verificar, isso também destacará as cadeias de formatação para inseri-los facilmente em cadeias traduzidas:

Cadeia de interpolação AngularJS¶
- Summary
As cadeias de interpolação AngularJS não correspondem à fonte
- Âmbito
translated strings
- Check class
weblate.checks.angularjs.AngularJSInterpolationCheck
- Sinalize para ativar
angularjs-format
- Flag to ignore
ignore-angularjs-format
- Named format string example
O seu saldo é {{amount}} {{ currency }}
Veja também
Formato C¶
- Summary
O formato C da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.CFormatCheck
- Sinalize para ativar
c-format
- Flag to ignore
ignore-c-format
- Simple format string example
Há %d maçãs
- Position format string example
O seu saldo é %1$d %2$s
Formato C#¶
- Summary
O formato C# da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.CSharpFormatCheck
- Sinalize para ativar
c-sharp-format
- Flag to ignore
ignore-c-sharp-format
- Position format string example
Há {0} maçãs
Veja também
Literais de modelo de ECMAScript¶
- Summary
As literais de modelo ECMAScript não correspondem com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.ESTemplateLiteralsCheck
- Sinalize para ativar
es-format
- Flag to ignore
ignore-es-format
- Interpolation example
Há ${number} maçãs
Veja também
Interpolação de i18next¶
Novo na versão 4.0.
- Summary
A interpolação de i18next não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.I18NextInterpolationCheck
- Sinalize para ativar
i18next-interpolation
- Flag to ignore
ignore-i18next-interpolation
- Interpolation example
Há {{number}} maçãs
- Nesting example
Há $t(number) maçãs
Veja também
Formato Java¶
- Summary
O formato Java da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.JavaFormatCheck
- Sinalize para ativar
java-format
- Flag to ignore
ignore-java-format
- Simple format string example
Há %d maçãs
- Position format string example
O seu saldo é %1$d %2$s
Veja também
Formato de Mensagem Java¶
- Summary
O MessageFormat Java da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.JavaMessageFormatCheck
- Flag to enable uncodintionally
java-messageformat
- Flag to enable autodetection
auto-java-messageformat
enables check only if there is a format string in the source- Flag to ignore
ignore-java-messageformat
- Position format string example
Há {0} maçãs
Veja também
Formato JavaScript¶
- Summary
O formato JavaScript da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.JavaScriptFormatCheck
- Sinalize para ativar
javascript-format
- Flag to ignore
ignore-javascript-format
- Simple format string example
Há %d maçãs
Veja também
Formato Lua¶
- Summary
O formato de cadeia Lua não corresponde com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.LuaFormatCheck
- Sinalize para ativar
lua-format
- Flag to ignore
ignore-lua-format
- Simple format string example
Há %d maçãs
Veja também
Formato Object Pascal¶
- Summary
O formato Object Pascal da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.ObjectPascalFormatCheck
- Sinalize para ativar
object-pascal-format
- Flag to ignore
ignore-object-pascal-format
- Simple format string example
Há %d maçãs
Espaços reservados de percentagem¶
Novo na versão 4.0.
- Summary
Os símbolos de percentagem não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.PercentPlaceholdersCheck
- Sinalize para ativar
percent-placeholders
- Flag to ignore
ignore-percent-placeholders
- Simple format string example
Há %number% maçãs
Veja também
Formato Perl¶
- Summary
O formato Perl da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.PerlFormatCheck
- Sinalize para ativar
perl-format
- Flag to ignore
ignore-perl-format
- Simple format string example
Há %d maçãs
- Position format string example
O seu saldo é %1$d %2$s
Veja também
Formato PHP¶
- Summary
O formato PHP da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.PHPFormatCheck
- Sinalize para ativar
php-format
- Flag to ignore
ignore-php-format
- Simple format string example
Há %d maçãs
- Position format string example
O seu saldo é %1$d %2$s
Veja também
Cadeias formatadas, Documentação de PHP sprintf, PHP Format Strings
Formato de chaveta Python¶
- Summary
O formato de chaveta Python da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.PythonBraceFormatCheck
- Sinalize para ativar
python-brace-format
- Flag to ignore
ignore-python-brace-format
- Cadeia de formato simples
Há {} maçãs
- Named format string example
O seu saldo é {amount} {currency}
Veja também
Cadeias formatadas, Formato de chaves Python, Python Format Strings
Formato Python¶
- Summary
O formato Python da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.PythonFormatCheck
- Sinalize para ativar
python-format
- Flag to ignore
ignore-python-format
- Cadeia de formato simples
Há %d maçãs
- Named format string example
Your balance is %(amount)d %(currency)s
Formato Qt¶
- Summary
O formato Qt da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.qt.QtFormatCheck
- Sinalize para ativar
qt-format
- Flag to ignore
ignore-qt-format
- Position format string example
Há %1 maçãs
Veja também
Forma plural Qt¶
- Summary
O formato plural Qt da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.qt.QtPluralCheck
- Sinalize para ativar
qt-plural-format
- Flag to ignore
ignore-qt-plural-format
- Plural format string example
Há %Ln maçã(s)
Veja também
Formato Ruby¶
- Summary
O formato Ruby da cadeia não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.ruby.RubyFormatCheck
- Sinalize para ativar
ruby-format
- Flag to ignore
ignore-ruby-format
- Simple format string example
Há %d maçãs
- Position format string example
O seu saldo é %1$f %2$s
- Named format string example
O seu saldo é %+.2<amount>f %<currency>s
- Cadeia de modelo nomeado
O seu saldo é %{amount} %{currency}
Veja também
Formato Scheme¶
- Summary
O formato de cadeia Scheme não corresponde com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.SchemeFormatCheck
- Sinalize para ativar
scheme-format
- Flag to ignore
ignore-scheme-format
- Simple format string example
Há ~d maçãs
Formatação vue I18n¶
- Summary
A formatação vue I18n não corresponde à fonte
- Âmbito
translated strings
- Check class
weblate.checks.format.VueFormattingCheck
- Sinalize para ativar
vue-format
- Flag to ignore
ignore-vue-format
- Formatação nomeada
Há {count} maçãs
- Formatação i18n de Rails
Há %{count} maçãs
- Mensagens de localidade vinculadas
@:message.dio @:message.the_world!
Foi traduzido¶
- Summary
Esta cadeia foi traduzida anteriormente
- Âmbito
all strings
- Check class
weblate.checks.consistency.TranslatedCheck
- Flag to ignore
ignore-translated
Significa que uma cadeia já foi traduzida. Isso pode acontecer quando as traduções foram revertidas no VCS ou perdidas de outra forma.
Inconsistente¶
- Summary
Esta cadeia tem mais de uma tradução neste projeto ou não está traduzida em alguns componentes.
- Âmbito
all strings
- Check class
weblate.checks.consistency.ConsistencyCheck
- Flag to ignore
ignore-inconsistent
O Weblate verifica traduções da mesma cadeia em todas as traduções de um projeto para ajudar a manter traduções consistentes.
A verificação falha em traduções diferentes de uma cadeia dentro de um projeto. Isso também pode levar a inconsistências nas verificações exibidas. Pode encontrar outras traduções desta cadeia na guia Outras ocorrências.
Dica
For performance reasons, the check might not find all inconsistencies, it limits number of matches.
Nota
Esta verificação também é disparada no caso de a cadeia estar traduzida num componente e não em outro. Ela pode ser usada como uma maneira rápida de manusear manualmente cadeias que não estão traduzidas em alguns componentes apenas clicando no botão Usar esta tradução exibido em cada linha na guia Outras ocorrências.
Pode usar Tradução automática para automatizar a tradução de cadeias recém-adicionadas que já são traduzidas em outro componente.
Veja também
Letra Kashida utilizada¶
Novo na versão 3.5.
- Summary
As letras decorativas kashida não deverão ser utilizadas
- Âmbito
translated strings
- Check class
weblate.checks.chars.KashidaCheck
- Flag to ignore
ignore-kashida
As letras Kashida decorativas não devem ser usadas na tradução. Estas também são conhecidas como Tatweel.
Veja também
Hiperligações de marcação¶
Novo na versão 3.5.
- Summary
As hiperligações de marcação não coincidem com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.markup.MarkdownLinkCheck
- Sinalize para ativar
md-text
- Flag to ignore
ignore-md-link
As ligações de Markdown não correspondem com a fonte.
Veja também
Referências de Markdown¶
Novo na versão 3.5.
- Summary
As referências de hiperligação de marcação não correspondem à fonte
- Âmbito
translated strings
- Check class
weblate.checks.markup.MarkdownRefLinkCheck
- Sinalize para ativar
md-text
- Flag to ignore
ignore-md-reflink
As referências de ligação Markdown não correspondem à fonte.
Veja também
Sintaxe de Markdown¶
Novo na versão 3.5.
- Summary
A sintaxe de Markdown não coincide com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.markup.MarkdownSyntaxCheck
- Sinalize para ativar
md-text
- Flag to ignore
ignore-md-syntax
A sintaxe de Markdown não coincide com a fonte
Veja também
Tamanho máximo da tradução¶
- Summary
A tradução não deve exceder o tamanho dado
- Âmbito
translated strings
- Check class
weblate.checks.chars.MaxLengthCheck
- Sinalize para ativar
max-length
- Flag to ignore
ignore-max-length
Verifica se as traduções são de comprimento aceitável para caber no espaço disponível. Isto apenas verifica o comprimento dos caracteres de tradução.
Ao contrário das outras verificações, o sinalizador deve ser definido como um par «chave:valor», como max-length:100
.
Dica
Esta verificação analisa a quntidade de carácteres, o que pode não ser a melhor métrica ao utilizar fontes proporcionais para renderizar o texto. A verificação Tamanho máximo da tradução verifica a renderização real do texto.
O sinalizador replacements:
também pode ser útil para expandir os objetos colocáveis antes de verificar a cadeia.
Tamanho máximo da tradução¶
- Summary
A tradução não deve exceder o tamanho dado
- Âmbito
translated strings
- Check class
weblate.checks.render.MaxSizeCheck
- Sinalize para ativar
max-size
- Flag to ignore
ignore-max-size
Novo na versão 3.7.
O texto traduzido não deve exceder o tamanho determinado. Ele renderiza o texto com quebra de linhas e verifica se ele se encaixa nos limites determinados.
Esta verificação necessita de um ou dois parâmetros - largura máxima e quantidade máximo de linhas. Caso a quantidade de linhas não seja fornecida, um texto de uma linha é considerado .
Também pode configurar a fonte utilizada pelas diretivas font-*
(veja Personalizando comportamento a usar marcadores), por exemplo, após os marcadores de tradução dizer que o texto renderizado com fonte ubuntu tamanho 22 deve caber em duas linhas e 500 pixels:
max-size:500:2, font-family:ubuntu, font-size:22
Dica
Queria definir as diretivas font-*
na Configuração de componente para ter a mesma fonte configurada para todas as cadeias dentro de um componente. Pode sobrescrever esses valores por cadeia, caso precise personalizá-la por cadeia.
O sinalizador replacements:
também pode ser útil para expandir os objetos colocáveis antes de verificar a cadeia.
\n não correspondente¶
- Summary
Number of \n in translation does not match source
- Âmbito
translated strings
- Check class
weblate.checks.chars.EscapedNewlineCountingCheck
- Flag to ignore
ignore-escaped-newline
Normalmente as novas linhas escapadas são importantes para a formatação da saída do programa. A verificação falha se a quantidade de literais \n
na tradução não corresponder à fonte.
Dois pontos não correspondentes¶
- Summary
A fonte e a tradução não terminam ambas com uma vírgula
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndColonCheck
- Flag to ignore
ignore-end-colon
Verifica se os dois pontos são replicados entre a fonte e a tradução. A presença de dois pontos também é verificada para vários idiomas onde eles não pertencem (chinês ou japonês).
Veja também
Reticências não correspondentes¶
- Summary
A fonte e a tradução não terminam ambas com reticências
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndEllipsisCheck
- Flag to ignore
ignore-end-ellipsis
Verifica se as reticências ao final são replicadas entre a fonte e a tradução. Isto só verifica se há reticências reais (…
) e não três pontos (...
).
Uma reticência é normalmente mais agradável do que três pontos na impressão e soa melhor com o texto para a fala.
Veja também
Ponto de exclamação não correspondente¶
- Summary
A fonte e a tradução não terminam ambas com um ponto de exclamação
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndExclamationCheck
- Flag to ignore
ignore-end-exclamation
Verifica se as exclamações são replicadas entre a fonte e a tradução. A presença de pontos de exclamação também é verificada para vários idiomas onde eles não pertencem (chinês, japonês, coreano, armênio, limbu, mianmar ou Nko).
Veja também
Ponto final não correspondente¶
- Summary
A fonte e a tradução não terminam ambas com ponto
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndStopCheck
- Flag to ignore
ignore-end-stop
Verifica se os pontos finais são replicados entre a fonte e a tradução. A presença de pontos finais é verificada para vários idiomas onde eles não pertencem (chinês, japonês, devanágari ou urdu).
Veja também
Ponto de interrogação não correspondente¶
- Summary
A fonte e a tradução não terminam ambas com um ponto de interrogação
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndQuestionCheck
- Flag to ignore
ignore-end-question
Verifica se os pontos de interrogação são replicados entre a fonte e a tradução. A presença de pontos de interrogação também é verificada para vários idiomas onde eles não pertencem (armênio, árabe, chinês, coreano, japonês, etíope, vai ou copta).
Veja também
Ponto e vírgula não correspondente¶
- Summary
A fonte e a tradução não terminam ambas com ponto e vírgula
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndSemicolonCheck
- Flag to ignore
ignore-end-semicolon
Verifica se os caracteres de ponto e vírgula no final das frases são replicados entre a fonte e a tradução. Isto pode ser útil para manter a formatação das entradas, como ficheiros de desktop.
Veja também
Quebras de linha não coincidentes¶
- Summary
A quantidade de novas linhas na tradução não corresponde ao da fonte
- Âmbito
translated strings
- Check class
weblate.checks.chars.NewLineCountCheck
- Flag to ignore
ignore-newline-count
Geralmente, as novas linhas são importantes para formatar a saída do programa. A verificação falha se a quantidade de literais \n
na tradução não corresponder à fonte.
Faltam plurais¶
- Summary
Alguns plurais não estão traduzidos
- Âmbito
translated strings
- Check class
weblate.checks.consistency.PluralsCheck
- Flag to ignore
ignore-plurals
Verifica se todas as formas plurais de uma cadeia fonte foram traduzidas. Especificações sobre como cada forma plural é usada encontram-se na definição da cadeia.
O não preenchimento correto das formas de plural vai levar, em alguns casos, a exibir nada quando a forma do plural está em uso.
Espaços reservados¶
Novo na versão 3.9.
- Summary
Faltam alguns espaços reservados na tradução
- Âmbito
translated strings
- Check class
weblate.checks.placeholders.PlaceholderCheck
- Sinalize para ativar
placeholders
- Flag to ignore
ignore-placeholders
Alterado na versão 4.3: Pode usar expressões regulares como espaço reservado.
A tradução não contém alguns espaços reservados. Estes são extraídos do ficheiro de tradução ou definidos manualmente a usar o sinalizador placeholders
, outros podem ser separados com ponto e vírgula, cadeias com o espaço podem ser postos entre aspas:
placeholders:$URL$:$TARGET$:"some long text"
Caso tenha alguma sintaxe para os espaços reservados, pode usar uma expressão regular:
placeholders:r"%[^% ]%"
Veja também
Espaçamento da pontuação¶
Novo na versão 3.9.
- Summary
Falta de espaço não quebrável antes do sinal de pontuação duplo
- Âmbito
translated strings
- Check class
weblate.checks.chars.PunctuationSpacingCheck
- Flag to ignore
ignore-punctuation-spacing
Verifica se há espaço rígido antes do sinal de pontuação dupla (ponto de exclamação, ponto de interrogação, ponto e vírgula e dois pontos). Esta regra é usada apenas em alguns idiomas selecionados, como o francês ou o bretão, onde o espaço antes do sinal de pontuação dupla é uma regra tipográfica.
Veja também
Expressão regular¶
Novo na versão 3.9.
- Summary
A tradução não corresponde à expressão regular:
- Âmbito
translated strings
- Check class
weblate.checks.placeholders.RegexCheck
- Sinalize para ativar
regex
- Flag to ignore
ignore-regex
A tradução não corresponde à expressão regular. A expressão é extraída do ficheiro de tradução ou definida manualmente a usar o sinalizador regex
:
regex:^foo|bar$
Mesmos plurais¶
- Summary
Alguns plurais estão traduzidos da mesma maneira
- Âmbito
translated strings
- Check class
weblate.checks.consistency.SamePluralsCheck
- Flag to ignore
ignore-same-plurals
Verifica que falha se algumas formas de plural estiverem duplicadas na tradução. Na maioria dos idiomas, elas têm que ser diferentes.
Nova linha no início¶
- Summary
A fonte e a tradução não iniciam ambas com uma nova linha
- Âmbito
translated strings
- Check class
weblate.checks.chars.BeginNewlineCheck
- Flag to ignore
ignore-begin-newline
As novas linhas costumam aparecer nas cadeias fonte por uma boa razão, de forma que omissões ou adições podem levar a problemas de formatação quando o texto traduzido é posto em uso.
Veja também
Espaços no início¶
- Summary
A fonte e a tradução não iniciam ambas com a mesma quantidade de espaços
- Âmbito
translated strings
- Check class
weblate.checks.chars.BeginSpaceCheck
- Flag to ignore
ignore-begin-space
Um espaço no início de uma cadeia é normalmente usado para recuo na interface, portanto, importante manter.
Nova linha no final¶
- Summary
A fonte e a tradução não terminam ambas com uma nova linha
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndNewlineCheck
- Flag to ignore
ignore-end-newline
As novas linhas costumam aparecer nas cadeias fonte por uma boa razão, de forma que omissões ou adições podem levar a problemas de formatação quando o texto traduzido é posto em uso.
Veja também
Espaço no final¶
- Summary
A fonte e a tradução não terminam ambas com um espaço
- Âmbito
translated strings
- Check class
weblate.checks.chars.EndSpaceCheck
- Flag to ignore
ignore-end-space
Verifica se os espaços no final são replicados entre a fonte e a tradução.
O espaço ao final é normalmente utilizado para espaçar os elementos vizinhos, de forma que a sua remoção pode quebrar a disposição.
Tradução inalterada¶
- Summary
Fonte e tradução são iguais
- Âmbito
translated strings
- Check class
weblate.checks.same.SameCheck
- Flag to ignore
ignore-same
Acontece se as cadeias fonte e a tradução correspondente forem idênticos, até pelo menos uma das formas de plural. Algumas cadeias normalmente encontrados em todos os idiomas são ignorados e várias marcações são ignoradas. Isto reduz a quantidade de falsos positivos.
Esta verificação pode ajudar a encontrar cadeias erroneamente não traduzidos.
O comportamento padrão desta verificação é excluir palavras da lista negra embutida da verificação. Estas são palavras que frequentemente não estão a ser traduzidas. Isto é útil para evitar falsos positivos em cadeias curtas, que consistem apenas numa única palavra que é a mesma em vários idiomas. Esta lista negra pode ser desativada a adicionar strict-same
à cadeia ou componente.
HTML inseguro¶
Novo na versão 3.9.
- Summary
A tradução usa marcação HTML insegura
- Âmbito
translated strings
- Check class
weblate.checks.markup.SafeHTMLCheck
- Sinalize para ativar
safe-html
- Flag to ignore
ignore-safe-html
A tradução utiliza uma marcação HTML insegura. Esta verificação tem que ser ativada a utilizar o sinalizador safe-html
(veja Personalizando comportamento a usar marcadores). Há também o autocorretor acompanhado que pode automaticamente corrigir a marcação.
Veja também
A verificação HTML é feita pela biblioteca Bleach desenvolvida pela Mozilla.
URL¶
Novo na versão 3.5.
- Summary
A tradução não contém um URL
- Âmbito
translated strings
- Check class
weblate.checks.markup.URLCheck
- Sinalize para ativar
url
- Flag to ignore
ignore-url
A tradução não contém uma URL. Isso só é acionado caso a unidade esteja marcada como a conter uma URL. Nesse caso, a tradução tem de ser uma URL válido.
Markup XML¶
- Summary
Etiquetas XML na tradução não coincidem com a fonte
- Âmbito
translated strings
- Check class
weblate.checks.markup.XMLTagsCheck
- Flag to ignore
ignore-xml-tags
Isso geralmente significa que a saída resultante terá uma aparência diferente. Na maioria dos casos, este não é o resultado desejado de alterar a tradução, mas ocasionalmente é.
Verifica se as tags XML são replicadas entre a fonte e a tradução.
Nota
This check is disabled by the safe-html
flag as the HTML cleanup done by
it can produce HTML markup which is not valid XML.
Sintaxe XML¶
Novo na versão 2.8.
- Summary
A tradução não é XML válido
- Âmbito
translated strings
- Check class
weblate.checks.markup.XMLValidityCheck
- Flag to ignore
ignore-xml-invalid
A marcação XML não é válida.
Nota
This check is disabled by the safe-html
flag as the HTML cleanup done by
it can produce HTML markup which is not valid XML.
Espaçamento nulo¶
- Summary
A tradução contém carateres extra de espaço nulo
- Âmbito
translated strings
- Check class
weblate.checks.chars.ZeroWidthSpaceCheck
- Flag to ignore
ignore-zero-width-space
Os caracteres de largura zero (<U+200B>) são usados para quebrar mensagens dentro das palavras (word wrapping).
Como geralmente são inseridas por engano, esta verificação é acionada uma vez que estão presentes na tradução. Alguns programas podem ter problemas quando este caractere é usado.
Veja também
Verificações de texto fonte¶
Estas verificações podem ajudar os programadores a melhorar a qualidade das cadeias fonte.
Reticências¶
- Summary
A cadeia utiliza três pontos (…) em vez do carácter de reticências (…)
- Âmbito
entradas fonte
- Check class
weblate.checks.source.EllipsisCheck
- Flag to ignore
ignore-ellipsis
Isto falha quando a cadeia usa três pontos (...
) quando deveria usar um caractere de reticências (…
).
O uso do caractere Unicode é, na maioria dos casos, a melhor abordagem e parece melhor renderizado e pode soar melhor com texto para fala (text-to-speech).
Veja também
Não traduzido há muito tempo¶
Novo na versão 4.1.
- Summary
A cadeia não foi traduzida há muito tempo
- Âmbito
entradas fonte
- Check class
weblate.checks.source.LongUntranslatedCheck
- Flag to ignore
ignore-long-untranslated
Quando a cadeia não é traduzida há muito tempo, pode indicar um problema numa cadeia fonte, a dificultar a tradução.
Várias verificações falhadas¶
- Summary
As traduções em várias línguas têm verificações falhadas
- Âmbito
entradas fonte
- Check class
weblate.checks.source.MultipleFailingCheck
- Flag to ignore
ignore-multiple-failures
Várias traduções desta cadeia têm falhas nas verificações de qualidade. Isto é normalmente uma indicação de que algo poderia ser feito para melhorar a cadeia fonte.
Esta falha na verificação pode muitas vezes ser causada por um ponto final de uma frase, ou por questões menores similares que os tradutores tendem a corrigir na tradução, enquanto seria melhor corrigi-la na cadeia fonte.
Várias variáveis sem nome¶
Novo na versão 4.1.
- Summary
Há várias variáveis sem nome na cadeia, o que faz impossível aos tradutores reordená-las
- Âmbito
entradas fonte
- Check class
weblate.checks.format.MultipleUnnamedFormatsCheck
- Flag to ignore
ignore-unnamed-format
Há várias variáveis sem nome na cadeia, o que impossibilita aos tradutores reordená-las.
Considere usar variáveis nomeadas para permitir que os tradutores as reordenem.
Não pluralizado¶
- Summary
A cadeia é utilizada como plural, mas não tem plural
- Âmbito
entradas fonte
- Check class
weblate.checks.source.OptionalPluralCheck
- Flag to ignore
ignore-optional-plural
A cadeia é usado como um plural, mas não usa formas de plural. Caso o seu sistema de tradução tenha suporte a isso, deve usar a variante que reconheça o plural.
Por exemplo, com o Gettext em Python poderia ser:
from gettext import ngettext
print ngettext("Selected %d file", "Selected %d files", files) % files
Pesquisando¶
Novo na versão 3.9.
Consultas avançadas a usar operações booleanas, parênteses ou pesquisas específicas de campo podem ser usadas para encontrar as cadeias que deseja.
Quando nenhum campo é definido, a pesquisa acontece nos campos Fonte, Tradução e Contexto.

Pesquisa simples¶
Qualquer frase digitada na caixa de pesquisa é dividida em palavras. As cadeias que contêm qualquer uma delas são mostradas. Para procurar uma frase exata, ponha «a frase de pesquisa» entre aspas (ambas aspas simples (“) e duplas («) funcionarão: "este é uma cadeia entre aspas"
ou 'outra cadeia entre aspas'
.
Campos¶
source:TEXTO
Pesquisa na cadeia fonte sem diferenciar maiúscula de minúscula.
target:TEXTO
Pesquisa na cadeia de destino sem diferenciar maiúscula de minúscula.
context:TEXTO
Pesquisa na cadeia de contexto sem diferenciar maiúscula de minúscula.
key:TEXTO
Pesquisa na cadeia chave sem diferenciar maiúscula de minúscula.
note:TEXTO
Pesquisa na cadeia de comentário sem diferenciar maiúscula de minúscula.
location:TEXTO
Pesquisa na cadeia de localização sem diferenciar maiúscula de minúscula.
priority:NÚMERO
Prioridade da cadeia.
added:DATA E HORA
Data e hora de quando a cadeia foi adicionada ao Weblate.
state:TEXTO
Pesquisa de estado (
approved
,translated
,needs-editing
,empty
,read-only
), suporta Operações de campo.pending:BOOLEANO
Cadeia pendente para descarga para o VCS.
has:TEXTO
Pesquisa por texto com atributos -
plural
,context
,suggestion
,comment
,check
,dismissed-check
,translation
,variant
,screenshot
,flags
,explanation
,glossary
,note
.is:TEXTO
Pesquisa por estados de cadeia (
pending
,translated
,untranslated
).language:TEXTO
Idioma de destino da cadeia.
component:TEXTO
URL amigável de componente ou pesquisa que não diferencia maiúsculas de minúsculas, veja URL amigável do componente e Nome do componente.
project:TEXTO
Slug do projeto, veja URL amigável.
changed_by:TEXTO
A cadeia foi alterada pelo autor com o nome de utilizador fornecido.
changed:DATA E HORA
O conteúdo da cadeia foi alterado na data, suporta operadores de pesquisa.
change_time:DATA E HORA
A cadeia foi alterada na data, suporta Operações de campo; ao contrário de
changed
, isso inclui eventos que não alteram o conteúdo e pode aplicar uma filtragem de ação personalizada a utilizarchange_action
.change_action:TEXTO
Filtros em ação de alteração, útil juntamente com
change_time
. Aceita o nome em inglês da ação de alteração, seja entre aspas e com espaços ou letras minúsculas e espaços substituídos por um hífen. Veja Pesquisando por alterações para exemplos.check:TEXTO
A cadeia tem verificação com falha.
dismissed_check:TEXTO
A cadeia tem verificação dispensada.
comment:TEXTO
Pesquisa nos comentários de utilizadores.
comment_author:TEXTO
Filtra por autor do comentário.
suggestion:TEXTO
Pesquisa nas sugestões.
suggestion_author:TEXTO
Filtra por autor da sugestão.
explanation:TEXTO
Pesquisa em explicações.
Operadores booleanos¶
Pode combinar pesquisas a usar AND
, OR
, NOT
e parênteses para formar consultas complexas. Por exemplo: state:translated AND (source:hello OR source:bar)
Operações de campo¶
Pode especificar operadores, intervalos ou pesquisas parciais para pesquisas de data ou numéricas:
state:>=translated
Estado é
translated
ou melhor (approved
).changed:2019
Alterado no ano de 2019.
changed:[2019-03-01 to 2019-04-01]
Alterado entre as duas datas dadas.
Operadores exatos¶
Pode fazer uma consulta de correspondência exata em diferentes campos de texto a usar o operador =
. Por exemplo, para procurar por todas as cadeias fonte que correspondem exatamente a hello world
, use: source:="hello world"
. Para pesquisar por expressões de uma única palavra, não precisa de aspas. Por exemplo, para procurar por todos as cadeias fonte que correspondam a hello
, pode utilizar: source:=hello
.
Pesquisando por alterações¶
Novo na versão 4.4.
A pesquisa por eventos do histórico pode ser feita a utilizar os operadores change_action
e change_time
.
Por exemplo, uma pesquisa por cadeias marcadas para edição em 2018 pode ser inserida como change_time:2018 AND change_action:marked-for-edit
ou change_time:2018 AND change_action:"Marked for edit"
.
Expressões regulares¶
Em qualquer lugar que o texto seja aceito, também pode especificar uma expressão regular como r "regexp"
.
Por exemplo, para pesquisar por todas as cadeias que contenham qualquer dígito entre 2 e 5, utilize source:r"[2-5]"
.
Consultas predefinidas¶
Pode selecionar entre as consultas predefinidas na página de pesquisa, o que lhe permite acessar rapidamente as pesquisas mais frequentes:

Fluxos de trabalho de tradução¶
Usar o Weblate é um processo que lhe aproxima os seus utilizadores, a aproximar-o dos seus tradutores. Depende de decidir quantos recursos deseja usar.
A lista a seguir não é uma lista completa de maneiras de configurar o Weblate. Pode basear outros fluxos de trabalho nos exemplos mais usuais listados aqui.
Acesso à tradução¶
O controle de acesso não é discutido em detalhe como um todo nos fluxos de trabalho, pois a maioria das opções dele pode ser aplicada a qualquer fluxo de trabalho. Consulte a respectiva documentação sobre como gerir o acesso às traduções.
Nos capítulos a seguir, qualquer utilizador significa um utilizador que tenha acesso à tradução. Pode ser qualquer utilizador autenticado se o projeto for público ou um utilizador que tenha uma permissão Traduzir para o projeto.
Estados de tradução¶
Cada cadeia traduzida pode estar num dos seguintes estados:
- Não traduzido
A tradução está vazia, pode ou não estar armazenada no ficheiro, dependendo do formato do ficheiro.
- Precisa de edição
A tradução precisa ser editada, isso geralmente é o resultado de uma alteração de cadeias fonte, correspondência aproximada ou ação de um tradutor. A tradução está armazenada no ficheiro, a depender do formato do ficheiro que pode ser marcado como necessidade de edição (por exemplo, da mesma forma que receberia uma sinalização
fuzzy
no ficheiro de Gettext).- A aguardar por revisão
A tradução está feita, mas não revisada. É armazenada no ficheiro como uma tradução válida.
- Aprovadas
A tradução foi aprovada na revisão. Já não pode ser alterada por tradutores, mas apenas por revisores. Tradutores só podem adicioná-las sugestões.
- Sugestões
As sugestões estão armazenadas apenas no Weblate e não no ficheiro de tradução.
Os estados são representados nos ficheiros de tradução quando possível.
Dica
In case file format you use does not support storing states, you might want to use Marcar as traduções inalteradas como «Precisa de edição» addon to flag unchanged strings as needing editing.
Tradução direta¶
Esta é a configuração mais usual para equipas menores, qualquer um pode traduzir diretamente. Esta também é a configuração predefinida no Weblate.
Qualquer utilizador pode editar traduções.
Sugestões são formas opcionais de sugerir alterações, quando os tradutores não têm certeza sobre a alteração.
Configuração |
Valor |
Nota |
---|---|---|
Activar revisões |
inativo |
Configurado a nível de projeto. |
Ativar sugestões |
ativo |
É útil para os utilizadores serem capazes de sugerir quando não têm certeza. |
Votação de sugestão |
inativo |
|
Aceitar sugestões automaticamente |
0 |
|
Grupo de tradutores |
Utilizadores |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
N/D |
Não usado. |
Revisão por pares¶
Com este fluxo de trabalho, qualquer pessoa pode adicionar sugestões e precisa da aprovação de um ou mais membros adicionais antes de ser aceite como tradução.
Qualquer utilizador pode adicionar sugestões.
Qualquer utilizador pode votar em sugestões.
Sugestões tornam-se traduções quando dado uma quantidade predeterminada de votos.
Configuração |
Valor |
Nota |
---|---|---|
Activar revisões |
inativo |
Configurado a nível de projeto. |
Ativar sugestões |
ativo |
|
Votação de sugestão |
inativo |
|
Aceitar sugestões automaticamente |
1 |
Pode definir um valor mais alto para exibir mais revisões por pares. |
Grupo de tradutores |
Utilizadores |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
N/D |
Não usado, todos os tradutores revisam. |
Revisores dedicados¶
Novo na versão 2.18: O fluxo de trabalho adequado de revisão é suportado desde o Weblate 2.18.
Com revisores dedicados tem dois grupos de utilizadores, um capaz de enviar traduções e outro capaz de revisá-los para garantir que as traduções sejam consistentes e que a qualidade seja boa.
Qualquer utilizador pode editar traduções não aprovadas.
Revisor pode aprovar / retirar a aprovação de cadeias.
Revisor pode editar todas as traduções (incluindo as aprovadas).
Sugestões também podem ser usadas para sugerir alterações para cadeias aprovadas.
Configuração |
Valor |
Nota |
---|---|---|
Activar revisões |
ativo |
Configurado a nível de projeto. |
Ativar sugestões |
inativo |
É útil para os utilizadores serem capazes de sugerir quando não têm certeza. |
Votação de sugestão |
inativo |
|
Aceitar sugestões automaticamente |
0 |
|
Grupo de tradutores |
Utilizadores |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
Revisores |
Ou Revisar com controle de acesso por projeto. |
Ativar revisões¶
As revisões podem ser ativadas na configuração do projeto, a partir da subpágina Fluxo de trabalho das configurações do projeto (pode ser encontrada no menu Gerir → Configurações):

Nota
Dependendo da configuração do Weblate, a configuração pode não estar-lhe disponível. Por exemplo, no Hosted Weblate, isso não está disponível para projetos hospedados gratuitamente.
Portal de qualidade para cadeias fonte¶
Em muitos casos, as cadeias fonte do idioma de origem vêm de programadores, porque eles escrevem o código e fornecem cadeias iniciais. No entanto, os programadores muitas vezes não são falantes nativos do idioma de origem e não fornecem a qualidade desejada das cadeias fonte. A tradução intermediária pode ajudá-los a lidar com isso - há uma rota de qualidade adicional para as cadeias entre programadores e tradutores e utilizadores.
Ao definir um Ficheiro de idioma intermédio, este ficheiro será usado como fonte para as cadeias, mas será editado para o idioma de origem para poli-lo. Uma vez que o texto esteja pronto no idioma de origem, também estará disponível para os tradutores traduzirem em idiomas adicionais.
Revisões de cadeias fonte¶
Com o Ativar revisões de fontes ativado, o processo de revisão pode ser aplicado em cadeias fonte. Uma vez ativado, os utilizadores podem relatar problemas nas cadeias fonte. O processo real depende se usa formatos bilíngues ou monolíngues.
Para formatos monolíngues, a revisão de cadeias fonte se comporta da mesma forma que com Revisores dedicados - uma vez que o problema é relatado na cadeia fonte, é marcado como Necessita edição.
Os formatos bilíngues não permitem a edição direta de cadeias fonte (estes são normalmente extraídos diretamente do código-fonte). Neste caso, o rótulo Fonte precisa de revisão é anexado às cadeias relatadas por tradutores. Deve revisar esses textos e editá-los na fonte ou remover o rótulo.
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.
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.
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.
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.
Veja também
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).
If you’ve already encountered a merge conflict, the easiest way to solve all conflicts locally on your machine, is to add Weblate as a remote repository, merge it into upstream and fix any conflicts. Once you push changes back, Weblate will be able to use the merged version without any other special actions.
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
Veja também
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.
Veja também
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.
Crie um repositório com os seus ficheiros de tradução.
Adicione-o como um submódulo ao seu código:
git submodule add git@example.com:project-translations.git path/to/translations
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.
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 quando cria um componente de tradução. Pode alterá-lo na administração a qualquer momento.
O autor de cada commit (se o VCS subjacente o suportar) ainda é registado corretamente como o utilizador que fez a tradução.
Veja também
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.
Veja também
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.
Veja também
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.
Pode configurar tmserver com todos os bancos de dados que tem e deixar o Weblate utilizá-lo. Isto é bom quando quer utilizá-lo várias vezes durante a tradução.
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.
Veja também
Tradução automática, Sugestões automáticas, Memória de Tradução
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.
Veja também
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
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).
Veja também
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
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"]
Veja também
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 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.
Veja também
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.
Veja também
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?¶
These are language codes defined by RFC 5646 to better indicate that they
are really different languages instead previously wrongly used modifiers (for
@latin
variants) or country codes (for Chinese).
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
Weblate defaults to POSIX style language codes with underscore, see Definições de idioma for more details.
Formatos de ficheiros suportados¶
O Weblate tem suporte à maioria dos formatos de tradução compreendidos pelo translate-toolkit, porém cada formato a ser ligeiramente diferente, alguns problemas com formatos que não são bem testados podem surgir.
Veja também
Nota
Ao escolher um formato de ficheiro para a sua aplicação, é melhor pôr algum formato bem estabelecido no kit de ferramentas/plataforma que usa. Dessa forma, os seus tradutores podem usar adicionalmente todas as ferramentas que estão acostumados e provavelmente contribuirão para o seu projeto.
Formatos bilíngues e monolíngues¶
Ambos os formatos monolingual e bilingual são suportados. Formatos bilingues armazenam dois idiomas num único ficheiro e tradução (exemplos típicos são GNU gettext, XLIFF ou Cadeias de Apple iOS). Por outro lado, formatos monolingues identificam a cadeia por ID e cada ficheiro de idioma contém apenas o mapeamento desses para qualquer idioma (tipicamente Recurso de cadeias de Android). Alguns formatos de ficheiro são utilizados em ambas as variantes, veja a descrição detalhada abaixo.
Para o uso correto de ficheiros monolingues, Weblate requer acesso a um ficheiro a conter uma lista completa de cadeias para traduzir com a fonte dele – este ficheiro é chamado de Ficheiro de idioma base monolingue dentro do Weblate, embora a nomenclatura possa variar no seu paradigma.
Além disso, este fluxo de trabalho pode ser estendido a usar Ficheiro de idioma intermédio para incluir cadeias fornecidas pelos programadores, mas não para ser usado como está nos textos finais.
Deteção automática¶
O Weblate pode detetar automaticamente vários formatos de ficheiros generalizados, mas essa detecção pode prejudicar o seu desempenho e limitará recursos específicos para o formato de ficheiro dado (por exemplo, a adição automática de novas traduções).
Capacidades dos tipos de tradução¶
Capacidades de todos os formatos suportados:
Formato |
Lingualidade 1 |
Plurais 2 |
Comentários 3 |
Contexto 4 |
Localização 5 |
Marcadores 8 |
Estados adicionais 6 |
---|---|---|---|---|---|---|---|
bilíngue |
sim |
sim |
sim |
sim |
sim 9 |
necessita edição |
|
mono |
sim |
sim |
sim |
sim |
sim 9 |
necessita edição |
|
ambos |
sim |
sim |
sim |
sim |
sim 10 |
necessita edição, aprovado |
|
ambos |
não |
sim |
não |
não |
não |
||
mono |
não |
sim |
não |
não |
não |
||
mono |
sim |
sim |
não |
não |
não |
||
mono |
não |
sim |
não |
sim |
não |
||
ambos |
sim |
sim |
não |
sim |
sim 10 |
necessita edição |
|
mono |
sim |
sim 7 |
não |
não |
sim 10 |
||
bilíngue |
não |
sim |
não |
não |
não |
||
mono |
não 11 |
sim |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
sim |
não |
não |
não |
não |
||
mono |
sim |
não |
não |
não |
não |
||
mono |
sim |
sim |
não |
não |
não |
||
mono |
sim |
sim |
não |
não |
não |
||
mono |
não |
sim |
não |
não |
sim 10 |
||
ambos |
não |
sim |
sim |
sim |
não |
necessita edição |
|
mono |
não |
sim |
não |
não |
não |
||
mono |
sim |
sim |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
não |
sim 10 |
||
mono |
não |
sim |
não |
não |
não |
||
mono |
não |
sim |
sim |
sim |
não |
necessita edição |
|
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
sim |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
mono |
não |
não |
não |
não |
não |
||
bilíngue |
não |
sim |
não |
não |
sim 10 |
||
mono |
não |
não |
não |
não |
não |
||
mono |
sim |
sim |
não |
não |
não |
||
mono |
no 12 |
sim |
não |
não |
não |
- 1
- 2
Os plurais são necessários para localizar adequadamente as cadeias com contagem variável.
- 3
Os comentários podem ser usados para passar informações adicionais sobre a cadeia a traduzir.
- 4
O contexto é usado para diferenciar cadeias idênticas usadas em diferentes escopos (por exemplo, Sun pode ser usado como um nome abreviado do dia «Sunday» ou como o nome da nossa estrela mais próxima).
- 5
A localização de uma cadeia no código-fonte pode ajudar tradutores proficientes a descobrir como a cadeia é usada.
- 6
Estados adicionais suportados pelo formato do ficheiro, além de «Não traduzido» e «Traduzido».
- 7
Comentário XML posto antes do elemento
<string>
, analisado como um comentário do programador.- 8
- 9(1,2)
Os comentários do tipo gettext são usados como marcadores.
- 10(1,2,3,4,5,6)
Os marcadores são extraídos do atributo não padrão
weblate-flags
para todos os formatos baseados em XML. Adicionalmente, omax-length:N
é suportado através do atributomaxwidth
como definido no padrão XLIFF, veja Especificação de bandeiras de tradução.- 11
Os plurais são suportados apenas para Laravel, que usa em sintaxe de cadeias para defini-las, veja Localização em Laravel`_.
- 12
Plurals are handled in the syntax of the strings and not exposed as plurals in Weblate.
Cadeias somente leitura¶
Novo na versão 3.10.
Cadeias de somente leitura dos ficheiros de tradução serão incluídos, mas não podem ser editadas no Weblate. Esse recurso é suportado nativamente por poucos formatos (XLIFF e Recurso de cadeias de Android), mas pode ser emulado em outros a adicionar um marcador read-only
, consulte Personalizando comportamento a usar marcadores.
GNU gettext¶
O formato mais usado para traduzir software livre.
As informações contextuais armazenadas no ficheiro são suportadas a ajustar os cabeçalhos dele ou a vincular-se a ficheiros fonte correspondentes.
O ficheiro de PO de texto bilíngue normalmente parece-se com este:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
Vazio |
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro Gettext PO |
Veja também
Traduzindo software a usar GNU gettext, Traduzindo documentação a usar Sphinx, Gettext no Wikipédia, PO Files, Atualizar a variável ALL_LINGUAS no ficheiro «configure», Personalizar a saída gettext, Atualizar ficheiro LINGUAS, Gerar ficheiros MO, Atualizar ficheiros PO para coincidir com POT (msgmerge)
Gettext monolíngue¶
Alguns projetos decidem usar o gettext como formatos monolingues – eles codificam apenas os IDs no código-fonte deles e a cadeia então precisa ser traduzido para todos os idiomas, que inclui o inglês. É suportado, embora tenha que escolher este formato de ficheiro explicitamente ao importar componentes para o Weblate.
O ficheiro gettext PO monolíngue normalmente se parece com este:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"
Enquanto o ficheiro de idioma base será:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro Gettext PO (monolíngue) |
XLIFF¶
Formato baseado em XML criado para padronizar ficheiros de tradução, mas no final é um dos muitos padrões, nesta área.
XML Localization Interchange File Format (XLIFF) é normalmente utilizado como bilíngue, mas Weblate também o suporta como monolíngue.
Veja também
Especificação do `XML Localization Interchange File Format (XLIFF)
Estados de tradução¶
Alterado na versão 3.3: Weblate ignorava o atributo state
antes da versão 3.3.
O atributo state
no ficheiro é parcialmente processado e mapeado para o estado «Necessita edição» no Weblate (os seguintes estados são utilizados para marcar a cadeia como a necessitar editar se houver um alvo presente: new
, needs-translation
, needs-adaptation
, needs-l10n
). Caso o atributo state
esteja a faltar, uma cadeia é considerada traduzida assim que um elemento <target>
existir.
Se a cadeia de tradução tiver approved="yes"
, ela também será importada para a Weblate como «Aprovado», qualquer outra coisa será importada como «A aguardar revisão» (que corresponde à especificação XLIFF).
Ao gravar, o Weblate não adiciona esses atributos a menos que seja necessário:
O atributo
state
só é adicionado no caso da cadeia ser marcada como a necessitar de edição.O atributo
approved
só é adicionado no caso da cadeia ter sido revista.Em outros casos os atributos não são adicionados, mas são atualizados no caso de estarem presentes.
Isso significa que, ao utilizar o formato XLIFF, é fortemente recomendado ativar o processo de revisão do Weblate, de modo a ver e alterar o estado aprovado de cadeias.
Da mesma forma, ao importar tais ficheiros (no formulário de envio), deve escolher Importador como traduzido em A processar as cadeias que necessitam edição.
Veja também
Espaços em branco e novas linhas em XLIFF¶
Geralmente os tipos ou quantidades de espaços em branco não são diferenciados entre si nos formatos XML. Se quiser mantê-los, tem que adicionar o marcador xml:space="preserve"
à cadeia.
Por exemplo:
<trans-unit id="10" approved="yes">
<source xml:space="preserve">hello</source>
<target xml:space="preserve">Hello, world!
</target>
</trans-unit>
Especificação de bandeiras de tradução¶
Pode especificar marcadores de tradução adicionais (veja Personalizando comportamento a usar marcadores) a utilizar o atributo weblate-flags
. Weblate também entende os atributos maxwidth
e font
da especificação XLIFF:
<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
<source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
<source>Hello %s</source>
</trans-unit>
O atributo fonte
é analisado para a família de fontes, tamanho e peso, o exemplo acima mostra tudo isso, embora apenas a família de fontes seja necessária. Qualquer espaço em branco na família de fontes é convertido para sublinhado, então Source Sans Pro
torna-se Source_Sans_Pro
, por favor tenha isso em mente ao nomear o grupo de fontes (veja Gerir letras).
Chaves de cadeias¶
Weblate identifica as unidades no ficheiro XLIFF pelo atributo resname
no caso de estar presente e, do contrário, recorre a id
(junto com a tag file
se presente).
O atributo resname
deveria ser um identificador humanamente amigável da unidade, a tornar-a mais adequada para a exibição de Weblate em vez de id
. O resname
tem de ser único em todo o ficheiro XLIFF. Isto é exigido pelo Weblate e não é coberto pelo padrão XLIFF – não coloca nenhuma restrição de exclusividade neste atributo.
Configuração de componente típica do Weblate para XLIFF bilíngue |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
Vazio |
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro de tradução XLIFF |
Configuração de componente típica do Weblate para XLIFF monolíngue |
|
---|---|
Máscara de ficheiros |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro de tradução XLIFF |
Propriedades Java¶
Formato nativo do Java para traduções.
As propriedades Java são geralmente usadas como traduções monolíngues.
Weblate é compatível com as variantes ISO-8859-1, UTF-8 e UTF-16 deste formato. Todos eles suportam o armazenamento de todos os caracteres Unicode, mas são codificados de forma diferente. No ISO-8859-1, as sequências de escape Unicode são usadas (por exemplo, zkou\u0161ka
), todas as outras codificam caracteres diretamente em UTF-8 ou UTF-16.
Nota
Carregar sequências de escape também funciona no modo UTF-8, por isso, tenha cuidado ao escolher o conjunto de codificação correto para corresponder às necessidades da aplicação.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Propriedades Java (ISO-8859-1) |
Ficheiros lang mi18n¶
Novo na versão 4.7.
File format used for JavaScript localization by mi18n. Syntactically it matches Propriedades Java.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro lang mi18n |
Propriedades GWT¶
Formato nativo de GWT para traduções.
As propriedades GWT são geralmente usadas como traduções monolíngues.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Propriedades GWT |
Traduções de INI¶
Novo na versão 4.1.
Formato de aplicação INI para traduções.
As traduções de INI são geralmente usadas como traduções monolíngues.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro INI |
Nota
O Weblate só extrai chaves de seções dentro de um ficheiro INI. Caso o seu ficheiro INI não tenha seções, quereria usar Traduções para Joomla ou Propriedades Java.
Veja também
INI Files, Propriedades Java, Traduções para Joomla, Traduções Inno Setup INI
Traduções Inno Setup INI¶
Novo na versão 4.1.
Formato de ficheirio Inno Setup INI para traduções.
As traduções Inno Setup INI são normalmente usadas como traduções monolingues.
Nota
A única diferença notável para Traduções de INI é ter suporte aos espaços reservados %n
and %t
para quebra de linha e tabulação.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro Inno Setup INI |
Nota
Apenas ficheiros Unicode (.islu
) são suportados atualmente, a variante ANSI (.isl
) não é suportada atualmente.
Veja também
Traduções para Joomla¶
Novo na versão 2.12.
Formato nativo de Joomla para traduções.
As traduções de Joomla são geralmente usadas como traduções monolíngues.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro de idioma Joomla |
.ts de Qt Linguist¶
Formato de tradução usado em aplicações baseados em Qt.
Os ficheiros Qt Linguist são usados como traduções bilíngues e monolíngues.
Configuração de componente típica do Weblate ao usar como bilíngue |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
Vazio |
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro de tradução Qt Linguist |
Configuração de componente típica do Weblate ao usar como monolíngue |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro de tradução Qt Linguist |
Veja também
Manual do Qt Linguist, Qt .ts, Formatos bilíngues e monolíngues
Recurso de cadeias de Android¶
Formato de ficheiro específico do Android para traduzir aplicações.
Os recursos de cadeias do Android são monolingues, o Ficheiro de idioma base monolingue é armazenado num local diferente dos outros res/values/strings.xml
.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Recurso de cadeias de Android |
Nota
As estruturas de `string-array`do Android não são atualmente suportadas. Para contornar isso, pode quebrar os seus vetores de cadeias:
<string-array name="several_strings">
<item>First string</item>
<item>Second string</item>
</string-array>
se torna:
<string-array name="several_strings">
<item>@string/several_strings_0</item>
<item>@string/several_strings_1</item>
</string-array>
<string name="several_strings_0">First string</string>
<string name="several_strings_1">Second string</string>
O string-array que aponta para os elementos string deve ser armazenado num ficheiro diferente e não ser disponibilizado para tradução.
Este script pode ajudar a pré-processar os seus ficheiros strings.xml e traduções existentes: https://gist.github.com/paour/11291062
Cadeias de Apple iOS¶
Formato de ficheiro específico da Apple para traduzir aplicações, utilizado tanto para traduções de aplicações de iOS quanto de iPhone/iPad.
As cadeias de Apple iOS geralmente são usadas como traduções bilingues.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Cadeias do iOS (UTF-8) |
Cadeias de PHP¶
As traduções do PHP são geralmente monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.
Exemplo de ficheiro:
<?php
$LANG['foo'] = 'bar';
$LANG['foo1'] = 'foo bar';
$LANG['foo2'] = 'foo bar baz';
$LANG['foo3'] = 'foo bar baz bag';
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Cadeias do PHP |
Cadeias de PHP Laravel¶
Alterado na versão 4.1.
Os ficheiros de localização do PHP de Laravel também são suportados com plurais:
<?php
return [
'welcome' => 'Welcome to our application',
'apples' => 'There is one apple|There are many apples',
];
Veja também
Ficheiro JSON¶
Novo na versão 2.0.
Alterado na versão 2.16: Desde o Weblate 2.16 e com translate-toolkit pelo menos 2.2.4, os ficheiros JSON de estrutura aninhada também são suportados.
Alterado na versão 4.3: A estrutura de ficheiros JSON é devidamente preservada mesmo para situações complexas que foram quebradas em versões anteriores.
O formato JSON é usado principalmente para traduzir aplicações implementades em JavaScript.
O Weblate atualmente suporta várias variantes das traduções JSON:
Ficheiro simples de chaves/valores, usados por exemplo por vue-i18n ou react-intl.
Ficheiro com chaves aninhadas.
As traduções JSON são geralmente monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.
Exemplo de ficheiro:
{
"Hello, world!\n": "Ahoj světe!\n",
"Orangutan has %d banana.\n": "",
"Try Weblate at https://demo.weblate.org/!\n": "",
"Thank you for using Weblate.": ""
}
Os ficheiros aninhados também são suportados (veja acima para os requisitos), tal ficheiro pode parecer:
{
"weblate": {
"hello": "Ahoj světe!\n",
"orangutan": "",
"try": "",
"thanks": ""
}
}
Dica
O ficheiro JSON e Ficheiro de estrutura JSON aninhada podem ambos lidar com o mesmo tipo de ficheiros. Ambos preservam a estrutura JSON existente ao traduzir.
A única diferença entre eles é ao adicionar textos ao usar Weblate. O formato de estrutura aninhada analisa a tecla recém-adicionada e insere a cadeia na estrutura de correspondência. Por exemplo, a tecla app.name
está inserida como:
{
"app": {
"name": "Weblate"
}
}
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro de estrutura JSON aninhada |
Ficheiros i18next do JSON¶
Alterado na versão 2.17: Desde o Weblate 2.17 e com translate-toolkit pelo menos 2.2.5, os ficheiros I18next do JSON com plurais também são suportados.
i18next é uma estrutura de internacionalização escrita dentro e para JavaScript. O Weblate suporta os ficheiros de localização dele com recursos como plurais.
As traduções i18next são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.
Nota
Weblate suporta o formato v3 de I18next do JSON. As variantes V2 e V1 são na maioria compatíveis, com exceção de como os plurais são manuseados.
Exemplo de ficheiro:
{
"hello": "Hello",
"apple": "I have an apple",
"apple_plural": "I have {{count}} apples",
"apple_negative": "I have no apples"
}
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro JSON i18next |
Ficheiros JSON go-i18n¶
Novo na versão 4.1.
As traduções go-i18n são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.
Nota
Weblate tem suporte ao formato go-i18n JSON v1, para formatos JSON simples, use Ficheiro JSON. O formato v2 com hash não é suportado no momento.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
ficheiro JSON go-i18n |
Ficheiro ARB¶
Novo na versão 4.1.
As traduções ARB são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro ARB |
JSON WebExtension¶
Novo na versão 2.16: Isto é suportado desde Weblate 2.16 e com o translate-toolkit pelo menos 2.2.4.
Formato de ficheiro usado ao traduzir extensões para Mozilla Firefox ou Google Chromium.
Nota
Embora este formato se chame JSON, a especificação dele permite incluir comentários, que não fazem parte da especificação JSON. O Weblate atualmente não suporta ficheiro com comentários.
Exemplo de ficheiro:
{
"hello": {
"message": "Ahoj světe!\n",
"description": "Description",
"placeholders": {
"url": {
"content": "$1",
"example": "https://developer.mozilla.org"
}
}
},
"orangutan": {
"message": "",
"description": "Description"
},
"try": {
"message": "",
"description": "Description"
},
"thanks": {
"message": "",
"description": "Description"
}
}
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro JSON WebExtension |
Veja também
JSON, Google chrome.i18n, Mozilla Extensions Internationalization
Ficheiros de recursos .XML¶
Novo na versão 2.3.
Um ficheiro de rescurso .XML (.resx) emprega um formato de ficheiro XML monolíngue usado nas aplicações Microsoft .NET. É intercambiável com .resw, quando usa sintaxe idêntica ao .resx.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro de recursos .NET |
Ficheiros CSV¶
Novo na versão 2.4.
Os ficheiros CSV podem conter uma simples lista de origem e tradução. O Weblate suporta os seguintes ficheiros:
Ficheiros com campos de definição de cabeçalho (
location
,source
,target
,ID
,fuzzy
,context
,translator_comments
,developer_comments
). Esta é a abordagem recomendada, pois é a menos sujeita a erros. Escolha Ficheiro CSV como um formato de ficheiro.Ficheiros com dois campos – fonte e tradução (nesta ordem). Escolha Ficheiro CSV simples como um formato de ficheiro.
Ficheiros sem cabeçalhos com campos na ordem definida pelo translate-toolkit:
location
,source
,target
,ID
,fuzzy
,context
,translator_comments
,developer_comments
. Escolha Arquivo CSV como formato de ficheiro.Lembre-se de definir o Ficheiro de idioma base monolingue quando os seus ficheiros são monolíngues (veja Formatos bilíngues e monolíngues).
Aviso
O formato CSV detecta automaticamente o dialeto do ficheiro CSV. Em alguns casos, a detecção automática pode falhar e terá resultados mistos. Isso é especialmente verdadeiro para ficheiros CSV com linhas novas nos valores. Como solução alternativa, recomenda-se omitir caracteres entre aspas.
Exemplo de ficheiro:
Thank you for using Weblate.,Děkujeme za použití Weblate.
Configuração de componente típica do Weblate para CSV bilíngue |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
Vazio |
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro CSV |
Configuração de componente típica do Weblate para CSV monolíngue |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro CSV simples |
Veja também
Ficheiros YAML¶
Novo na versão 2.9.
Os ficheiros YAML simples com chaves de cadeias e valores. Weblate também extrai cadeias de listas ou dicionários.
Exemplo de um ficheiro YAML:
weblate:
hello: ""
orangutan": ""
try": ""
thanks": ""
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro YAML |
Veja também
Ficheiros Ruby YAML¶
Novo na versão 2.9.
Ficheiros YAML de i18n do Ruby com idioma como nó raiz.
Exemplo de ficheiro YAML de i18n do Ruby:
cs:
weblate:
hello: ""
orangutan: ""
try: ""
thanks: ""
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro Ruby YAML |
Veja também
Ficheiros DTD¶
Novo na versão 2.18.
Exemplo de ficheiro DTD:
<!ENTITY hello "">
<!ENTITY orangutan "">
<!ENTITY try "">
<!ENTITY thanks "">
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro DTD |
Veja também
Ficheiro XML simples¶
Novo na versão 3.9.
Exemplo de um ficheiro XML simples:
<?xml version='1.0' encoding='UTF-8'?>
<root>
<str key="hello_world">Hello World!</str>
<str key="resource_key">Translated value.</str>
</root>
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro XML simples |
Veja também
Ficheiros RC do Windows¶
Alterado na versão 4.1: O suporte para ficheiros RC do Windows foi reescrito.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
Exemplo de ficheiro RC do Windows:
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_MSG1 "Hello, world!\n"
IDS_MSG2 "Orangutan has %d banana.\n"
IDS_MSG3 "Try Weblate at http://demo.weblate.org/!\n"
IDS_MSG4 "Thank you for using Weblate."
END
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro RC |
Veja também
Ficheiros de metadados da App Store¶
Novo na versão 3.5.
Metadados usados para publicar aplicações em várias lojas de aplicações podem ser traduzidos. Atualmente, as seguintes ferramentas são compatíveis:
Os metadados consistem em vários ficheiros de texto, que o Weblate apresentará como cadeias separados para traduzir.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiros de metadados de loja de aplicações |
Dica
Caso não queira traduzir certas cadeias (por exemplo, changelogs), marque-as como somente leitura (veja Personalizando comportamento a usar marcadores). Isto pode ser automatizado por Edição em massa.
Ficheiros de legenda¶
Novo na versão 3.7.
Weblate pode traduzir vários ficheiros de legenda:
Ficheiros de legenda SubRip (
*.srt
)Ficheiro de legenda MicroDVD (
*.sub
)Ficheiro de legenda Advanced Substation Alpha (
*.ass
)Ficheiro de legenda Substation Alpha (
*.ssa
)
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Ficheiro de legenda SubRip |
Veja também
Excel Open XML¶
Novo na versão 3.2.
Os ficheiros Excel Open XML (.xlsx) podem ser importados e exportados.
Ao enviar ficheiros XLSX para a tradução, esteja ciente que apenas a planilha ativa é considerada e deve haver pelo menos uma coluna chamada source
(que contém a cadeia fonte) e uma coluna chamada target
(que contém a tradução). Além disso, deve haver a coluna chamada context
(que contém o caminho de contexto da cadeia de tradução). Se usar a descarrega XLSX para exportar as traduções numa pasta de trabalho do Excel, já terá um ficheiro com o formato de ficheiro correto.
Ficheiro HTML¶
Novo na versão 4.1.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
O conteúdo traduzível é extraído dos ficheiros HTML e oferecido para a tradução.
Veja também
Ficheiros de texto¶
Novo na versão 4.6.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
O conteúdo traduzível é extraído dos ficheiros de texto simples e oferecido para a tradução. Cada parágrafo é traduzido como um texto separado.
Há três sabores desse formato:
Ficheiros de texto simples
Ficheiros de texto DokuWiki
Ficheiro de texto MediaWiki
Veja também
Formato OpenDocument¶
Novo na versão 4.1.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
O conteúdo traduzível é extraído dos ficheiros OpenDocument e oferecido para a tradução.
Veja também
Formato IDML¶
Novo na versão 4.1.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
O conteúdo traduzível é extraído dos ficheiros Adobe InDesign Markup Language e oferecido para a tradução.
Formato TermBase eXchange¶
Novo na versão 4.5.
TBX é um formato XML para a troca de dados de terminologia.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
Vazio |
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Ficheiro TermBase eXchange |
Veja também
Stringsdict format¶
Novo na versão 4.8.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
XML based format used by Apple which is able to store plural forms of a string.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Stringsdict file |
Veja também
Fluent format¶
Novo na versão 4.8.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
Fluent is a monolingual text format that focuses on asymmetric localization: a simple string in one language can map to a complex multi-variant translation in another language.
Configuração de componente típica do Weblate |
|
---|---|
Máscara de ficheiro |
|
Ficheiro de idioma base monolingue |
|
Modelo para novas traduções |
Vazio |
Formato de ficheiro |
Fluent file |
Veja também
Suportando outros formatos¶
A maioria dos formatos suportados pelo translate-toolkit que tem suporte a serialização pode ser facilmente suportado, mas eles não (ainda) receberam nenhum teste. Na maioria dos casos, alguma camada fina é necessária no Weblate para ocultar diferenças no comportamento de diferentes armazenamentos do translate-toolkit.
To add support for a new format, the preferred approach is to first implement support for it in the translate-toolkit.
Veja também
Integração de controlo de versões¶
Weblate atualmente tem suporte a Git (com suporte estendido a GitHub, Gerrit e Subversion) e Mercurial como back-ends de controle de versão.
Acessando repositórios¶
O repositório VCS que deseja usar tem que ser acessível ao Weblate. Com um repositório disponível publicamente, só precisa inserir a URL correta (por exemplo https://github.com/WeblateOrg/weblate.git
), mas para repositórios privados ou para URLs de push a configuração é mais complexa e requer autenticação.
Acessando repositórios do Hosted Weblate¶
Para Hosted Weblate há um utilizador dedicado para fazer push registado no GitHub, Bitbucket, Codeberg e GitLab (com o nome de utilizador weblate, e-mail hosted@weblate.org
e chamado Weblate push user). Precisa adicionar esse utilizador como colaborador e dar a permissão apropriada ao seu repositório (somente leitura está bom para clonagem, escrita é necessária para fazer push). Dependendo do serviço e das configurações da sua organização, isso acontece imediatamente, ou requer confirmação do lado do Weblate.
O utilizador weblate no GitHub aceita convites automaticamente dentro de cinco minutos. O processamento manual pode ser necessário nos outros serviços, por isso, por favor, seja paciente.
Uma vez adicionado o utilizador weblate, pode configurar o Repositório do código-fonte e a URL de submissão do repositório a utilizar o protocolo SSH (por exemplo, git@github.com:WeblateOrg/weblate.git
).
Repositórios SSH¶
O método mais usado para acessar repositórios privados é baseado no SSH. Autorize a chave pública SSH do Weblate (veja Chave SSH do Weblate) para acessar o repositório upstream desta forma.
Aviso
No GitHub, cada chave só pode ser utilizada uma vez, veja vcs-repos-github`e :ref:`hosted-push.
Weblate também armazena a impressão digital da chave do host na primeira conexão e não se conecta ao host caso ele seja alterado posteriormente (veja Verificando chaves SSH do host).
Caso o ajuste seja necessário, faça-o a partir da interface de administração Weblate:

Chave SSH do Weblate¶
A chave pública do Weblate está visível para todos os utilizadores que navegam na página Sobre.
Os administradores podem gerar ou exibir a chave pública usada atualmente pelo Weblate na conexão (a partir de Chaves SSH) na página inicial da interface administrativa.
Nota
A chave SSH privada correspondente não pode ter uma palavra-passe no momento, por isso certifique-se de que ela está bem protegida.
Dica
Faça um backup da chave SSH privada gerada do Weblate.
Verificando chaves SSH do host¶
O Weblate armazena automaticamente as chaves SSH do host no primeiro acesso e lembra-se delas para uso posterior.
Caso queira verificar a impressão digital da chave antes de se conectar ao repositório, adicione as chaves SSH dos servidores que vai acessar em Adicionar chave de host, a partir da mesma secção da interface de administração. Digite o nome do host que vai acessar (por exemplo, gitlab.com
) e pressione Enviar. Verifique se a sua impressão digital corresponde ao servidor que adicionou.
As chaves adicionadas com impressões digitais são mostradas na mensagem de confirmação:

Repositórios do GitHub¶
O acesso via SSH é possível (veja Repositórios SSH), mas caso precise acessar mais de um repositório, atingirá uma limitação do GitHub no uso permitido da chave SSH (já que cada chave pode ser usada apenas uma vez).
Caso o Ramo do push não seja definido, é criado um fork do projeto e feito um push das alterações através do fork. Caso seja definido, os pushes são feitos para o repositório upstream e para o ramo escolhido.
Para implantações menores, use autenticação HTTPS com um token de acesso pessoal e a sua conta no GitHub, veja Criando um token de acesso para uso em linha de comando.
Para configurações maiores, geralmente é melhor criar um utilizador dedicado para o Weblate, atribuir-lhe a chave SSH pública gerada no Weblate (ver Chave SSH do Weblate) e concedê-lo acesso a todos os repositórios que deseja traduzir. Essa abordagem também é usada para o Hosted Weblate, há utilizador dedicado weblate para isso.
Veja também
URLs internas do Weblate¶
Compartilhe uma configuração de repositório entre diferentes componentes, a fazer referência à sua colocação como weblate://projeto/componente
em outros componentes (vinculados). Desta forma, os componentes vinculados utilizam a configuração do repositório VCS do componente principal (referenciado).
Aviso
A remoção do componente principal também remove componentes vinculados.
O Weblate ajusta automaticamente a URL do repositório ao criar um componente se encontrar um componente com uma configuração de repositório correspondente. Pode anular isso na última etapa da configuração do componente.
Motivos para usar isso:
Economiza espaço em disco no servidor, o repositório é armazenado apenas uma vez.
Torna as atualizações mais rápidas, apenas um repositório é atualizado.
Há apenas um repositório exportado com traduções do Weblate (ver Exportador git).
Algumas extensões podem operar em vários componentes a compartilhar um repositório; por exemplo, Squash de commits git.
Repositórios HTTPS¶
Para acessar repositórios HTTPS protegidos, inclua o nome de utilizador e a palavra-passe na URL. Não se preocupe, o Weblate irá remover essas informações quando a URL for mostrada aos utilizadores (se mesmo permitido ver a URL do repositório).
Por exemplo, a URL do GitHub com autenticação adicionada pode parecer: https://usuario:seu_token_de_acesso@github.com/WeblateOrg/weblate.git
.
Nota
Se o seu nome de utilizador ou palavra-passe contiver caracteres especiais, eles devem ser codificados para URL; por exemplo, https://usuario%40example.com:%24senha%23@bitbucket.org/…
.
Usando proxy¶
Se precisar acessar repositórios VCS por HTTP/HTTPS a usar um servidor proxy, configure o VCS para usá-lo.
Isto pode ser feito a utilizar as variáveis de ambiente http_proxy
, https_proxy
e all_proxy
(como descrito na documentação do cURL) ou a aplicar-a na configuração do VCS, por exemplo:
git config --global http.proxy http://user:password@proxy.example.com:80
Nota
A configuração do proxy precisa ser feita com o utilizador a executar Weblate (veja também Permissões do sistema de ficheiros) e com HOME=$DATA_DIR/home
(veja DATA_DIR
), caso contrário o Git executado pelo Weblate não o utilizará.
Veja também
Git¶
Dica
Weblate needs Git 2.12 or newer.
Veja também
Consulte Acessando repositórios para obter informações sobre como acessar diferentes tipos de repositórios.
Git com push forçado¶
Ele se comporta exatamente como o próprio Git, a única diferença é que ele sempre força pushes. Isso se destina apenas no caso de usar um repositório separado para traduções.
Aviso
Use com cautela, pois isso facilmente leva a commits perdidos no seu repositório upstream.
Personalizando a configuração do Git¶
Weblate invoca todos os comandos VCS com HOME=$DATA_DIR/home
(veja :set:`DATA_DIR`), portanto a edição da configuração do utilizador precisa ser feita em DATA_DIR/home/.git
.
Auxiliares de remotos do Git¶
Também pode usar os auxiliares de remotos do Git para ter suporte adicionalmente a outros sistemas de controle de versão, mas esteja preparado para depurar problemas que isso pode levar.
Neste momento, os auxiliares de Bazaar e Mercurial estão disponíveis em repositórios separados no GitHub: git-remote-hg e git-remote-bzr. Baixe-os manualmente e ponha em algum lugar no seu caminho de pesquisa (por exemplo, :file:`~/bin `). Certifique-se de ter os sistemas de controle de versão correspondentes instalados.
Uma vez instalados, esses controles podem ser usados para especificar um repositório no Weblate.
Para clonar o projeto gnuhello
do Launchpad a usar Bazaar:
bzr::lp:gnuhello
Para o repositório hello
de selenic.com a usar Mercurial:
hg::http://selenic.com/repo/hello
Aviso
O inconveniente de usar auxiliares de remotos Git é, por exemplo, com o Mercurial, o auxiliar de remoto às vezes cria uma nova dica ao fazer push das mudanças de volta.
GitHub¶
Novo na versão 2.3.
Isto adiciona uma camada fina sobre o Git a utilizar a API do GitHub para permitir fazer push de alterações de tradução como pull requests, ao invés de fazer push diretamente para o repositório.
Git faz push das alterações diretamente para um repositório, enquanto GitHub cria pull requests. Este último não é necessário para apenas acessar repositórios Git.
Veja também
Fazendo push de alterações para o GitHub como pull requests¶
Se não quiser fazer push das traduções para um repositório do GitHub, elas podem ser enviadas como uma ou várias pull requests.
Precisa configurar credenciais de API para fazer isso funcionar.
Veja também
GitLab¶
Novo na versão 3.9.
Isto apenas adiciona uma camada fina sobre o Git a usar a API do GitLab para permitir fazer push de alterações de tradução como merge requests, ao invés de fazer push diretamente para o repositório.
Não há necessidade de usá-lo para acessar repositórios de Git, o Git comum funciona da mesma forma, a ser a única diferença como o push para um repositório é manipulado. Com Git, o push das alterações é feito diretamente para o repositório, enquanto GitLab cria merge request.
Veja também
Fazendo push de alterações para o GitLab como merge requests¶
Se não quiser fazer push das traduções para um repositório do GitLab, elas podem ser enviadas como uma ou várias merge requests.
Precisa configurar credenciais de API para fazer isso funcionar.
Veja também
Pagure¶
Novo na versão 4.3.2.
Isto apenas adiciona uma camada fina sobre o Git a usar a API do Pagure para permitir fazer push de alterações de tradução como merge requests, ao invés de fazer push diretamente para o repositório.
Não há necessidade de usá-lo para acessar repositórios de Git, o Git comum funciona da mesma forma, a ser a única diferença como o push para um repositório é manipulado. Com Git, o push das alterações é feito diretamente para o repositório, enquanto Pagure cria merge request.
Veja também
Enviar alterações para o Pagure como solicitações de mesclagem¶
Se não quiser fazer push das traduções para um repositório do Pagure, elas podem ser enviadas como uma ou várias merge requests.
Precisa configurar credenciais de API para fazer isso funcionar.
Veja também
Gerrit¶
Novo na versão 2.2.
Adiciona uma camada fina sobre o Git a usar a ferramenta git-review para permitir fazer push de alterações de tradução como review requests do Gerrit, ao invés de fazer push diretamente para o repositório.
A documentação Gerrit tem os detalhes sobre a configuração necessária para configurar tais repositórios.
Mercurial¶
Novo na versão 2.1.
Mercurial é outro VCS que pode usar diretamente no Weblate.
Nota
Ele deve funcionar com qualquer versão Mercurial, mas às vezes há alterações incompatíveis na interface de linha de comando que quebra a integração Weblate.
Veja também
Consulte Acessando repositórios para obter informações sobre como acessar diferentes tipos de repositórios.
Subversion¶
Novo na versão 2.8.
O Weblate usa git-svn para interagir com repositórios subversion. É um script Perl que permite que o subversion seja usado por um cliente Git, a permitir que os utilizadores mantenham um clone completo do repositório interno e façam commit localmente.
Nota
O Weblate tenta detetar o layout do repositório Subversion automaticamente – ele tem suporta a URLs diretas para remos ou repositórios com layout padrão (branches/, tags/ e trunk/). Mais informações sobre isso podem ser encontradas na documentação do git-svn. Se o repositório não tiver um layout padrão e encontrar erros, tente incluir o nome do ramo na URL do repositório e deixar a ramo vazia.
Alterado na versão 2.19: Antes disso, apenas repositórios a usar o layout padrão eram suportados.
Credenciais de Subversion¶
Weblate espera que tenha aceito o certificado com antecedência (e as suas credenciais, se necessário). Ele procurará inseri-las no diretório :set:`DATA_DIR`. Aceite o certificado a utilizar svn uma vez com a variável de ambiente $HOME definida como DATA_DIR
:
# Use DATA_DIR as configured in Weblate settings.py, it is /app/data in the Docker
HOME=${DATA_DIR}/home svn co https://svn.example.com/example
Veja também
Ficheiros locais¶
Git¶
Dica
Underneath, this uses Git. It requires Git installed and allows you to switch to using Git natively with full history of your translations.
Novo na versão 3.8.
O Weblate também pode operar sem um VCS remoto. As traduções iniciais são importadas a carrega-las. Mais tarde, pode substituir ficheiros individuais a enviar ficheiros ou a adicionar cadeias de tradução diretamente do Weblate (atualmente disponível apenas para traduções monolíngues).
No fundo, o Weblate cria um repositório de Git para si e todas as alterações são rastreadas. Caso decida mais tarde usar um VCS para armazenar as traduções, já tem um repositório dentro do Weblate pode basear na sua integração.
API REST do Weblate¶
Novo na versão 2.6: A API REST está disponível desde o Weblate 2.6.
A API é acessível na URL /api/
e é baseada em framework Django REST. Pode utilizá-la diretamente ou por Cliente Weblate.
Autenticação e parâmetros genéricos¶
A API do projeto público está disponível sem autenticação, embora as solicitações não autenticadas sejam fortemente limitadas (por padrão a 100 solicitações por dia), por isso é recomendado usar autenticação. A autenticação usa um token, que pode obter no seu perfil. Use-o no cabeçalho Authorization
:
- ANY /¶
O comportamento de solicitação genérico para a API, os cabeçalhos, códigos de estado e parâmetros aqui aplicam-se a todos os pontos finais também.
- Parâmetros de consulta
format – Formato de resposta (substitui Accept). Os valores possíveis dependem da configuração do quadro REST, por padrão
json
eapi
são suportados. Este último fornece uma interface de navegador web para API.page – Returns given page of paginated results (use next and previous fields in response to automate the navigation).
- Cabeçalhos de solicitação
Accept – o tipo de conteúdo de resposta depende do cabeçalho Accept
Authorization – token opcional para se autenticar como
Authorization: Token SEU-TOKEN
- Cabeçalhos de resposta
Content-Type – isso depende de cabeçalho Accept da solicitação
Allow – lista de métodos HTTP permitidos no objeto
- Objeto JSON de resposta
detail (string) – descrição detalhada do resultado (para códigos de estado HTTP diferentes de 200 OK)
count (int) – contagem total de itens para listas de objetos
next (string) – URL da próxima página para listas de objetos
previous (string) – URL da página anterior para listas de objetos
results (array) – resultados para listas de objetos
url (string) – URL para acessar esse recurso a usar API
web_url (string) – URL para acessar esse recurso a usar navegador web
- Códigos de estado
200 OK – quando o pedido foi resolvido corretamente
201 Created – when a new object was created successfully
204 No Content – when an object was deleted successfully
400 Bad Request – quando faltam os parâmetros do formulário
403 Forbidden – quando o acesso é negado
429 Too Many Requests – quando a limitação está em vigor
Exemplos de autenticação¶
Exemplo de solicitação:
GET /api/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript
Authorization: Token YOUR-TOKEN
Exemplo de resposta:
HTTP/1.0 200 OK
Date: Fri, 25 Mar 2016 09:46:12 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, HEAD, OPTIONS
{
"projects":"http://example.com/api/projects/",
"components":"http://example.com/api/components/",
"translations":"http://example.com/api/translations/",
"languages":"http://example.com/api/languages/"
}
Exemplo de CURL:
curl \
-H "Authorization: Token TOKEN" \
https://example.com/api/
Exemplos de passagem de parâmetros¶
Para o método POST os parâmetros podem ser especificados como envio de formulário (application/x-www-form-urlencoded) ou como JSON (application/json).
Exemplo de solicitação de formulário:
POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Token TOKEN
operation=pull
Exemplo de solicitação JSON:
POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20
{"operation":"pull"}
Exemplo de CURL:
curl \
-d operation=pull \
-H "Authorization: Token TOKEN" \
http://example.com/api/components/hello/weblate/repository/
Exemplo de CURL JSON:
curl \
--data-binary '{"operation":"pull"}' \
-H "Content-Type: application/json" \
-H "Authorization: Token TOKEN" \
http://example.com/api/components/hello/weblate/repository/
Limitação de taxa da API¶
As solicitações de API são limitadas; a configuração padrão limita-a a 100 solicitações por dia para utilizadores anônimos e 5000 solicitações por hora para utilizadores autenticados.
A limitação da taxa pode ser ajustada no settings.py
. Consulte Throttling na documentação do framework Django REST para obter mais detalhes sobre como configurá-la.
O estado de limitação de taxa é relatado nos seguintes cabeçalhos:
|
Limite de limitação de taxa de solicitações para realizar |
|
Limite restante de solicitações |
|
Quantidade de segundos até que a janela de «ratelimit» seja reiniciada |
Alterado na versão 4.1: Adicionados cabeçalhos de estado de limitação de taxa.
Veja também
Ponto de entrada da API¶
- GET /api/¶
O ponto de entrada raiz da API.
Exemplo de solicitação:
GET /api/ HTTP/1.1 Host: example.com Accept: application/json, text/javascript Authorization: Token YOUR-TOKEN
Exemplo de resposta:
HTTP/1.0 200 OK Date: Fri, 25 Mar 2016 09:46:12 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, HEAD, OPTIONS { "projects":"http://example.com/api/projects/", "components":"http://example.com/api/components/", "translations":"http://example.com/api/translations/", "languages":"http://example.com/api/languages/" }
Utilizadores¶
Novo na versão 4.0.
- GET /api/users/¶
Retorna uma lista de utilizadores se tiver permissões para ver utilizadores geridos. Se não, então pode ver apenas os seus próprios detalhes.
Veja também
Os atributos do objeto dos utilizadores estão documentados em
GET /api/users/(str:username)/
.
- POST /api/users/¶
Cria um novo utilizador.
- Parâmetros
username (string) – Nome de utilizador
full_name (string) – Nome completo do utilizador
email (string) – E-mail do utilizador
is_superuser (boolean) – O utilizador é superutilizador? (opcional)
is_active (boolean) – O utilizador está ativo? (opcional)
- GET /api/users/(str: username)/¶
Retorna informações sobre os utilizadores.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Objeto JSON de resposta
username (string) – nome de utilizador de um utilizador
full_name (string) – nome completo de um utilizador
email (string) – email de um utilizador
is_superuser (boolean) – se o utilizador é um superutilizador
is_active (boolean) – se o utilizador está ativo
date_joined (string) – data de criação do utilizador
groups (array) – ligações para grupos associados; veja
GET /api/groups/(int:id)/
Exemplo de dados JSON:
{ "email": "user@example.com", "full_name": "Example User", "username": "exampleusername", "groups": [ "http://example.com/api/groups/2/", "http://example.com/api/groups/3/" ], "is_superuser": true, "is_active": true, "date_joined": "2020-03-29T18:42:42.617681Z", "url": "http://example.com/api/users/exampleusername/", "statistics_url": "http://example.com/api/users/exampleusername/statistics/" }
- PUT /api/users/(str: username)/¶
Altera os parâmetros do utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Objeto JSON de resposta
username (string) – nome de utilizador de um utilizador
full_name (string) – nome completo de um utilizador
email (string) – email de um utilizador
is_superuser (boolean) – se o utilizador é um superutilizador
is_active (boolean) – se o utilizador está ativo
date_joined (string) – data de criação do utilizador
- PATCH /api/users/(str: username)/¶
Altera os parâmetros do utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Objeto JSON de resposta
username (string) – nome de utilizador de um utilizador
full_name (string) – nome completo de um utilizador
email (string) – email de um utilizador
is_superuser (boolean) – se o utilizador é um superutilizador
is_active (boolean) – se o utilizador está ativo
date_joined (string) – data de criação do utilizador
- DELETE /api/users/(str: username)/¶
Apaga todas as informações do utilizador e marca o utilizador como inativo.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- POST /api/users/(str: username)/groups/¶
Associa grupos a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Parâmetros de formulário
string group_id – O ID de grupo único
- GET /api/users/(str: username)/statistics/¶
Lista as estatísticas de um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Objeto JSON de resposta
translated (int) – Quantidade de traduções por utilizador
suggested (int) – Quantidade de sugestões por utilizador
uploaded (int) – Quantidade de envios por utilizador
commented (int) – Quantidade de comentários por utilizador
languages (int) – Quantidade de idiomas que o utilizador pode traduzir
- GET /api/users/(str: username)/notifications/¶
Lista de subscrições de um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- POST /api/users/(str: username)/notifications/¶
Associar subscrições a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
- Objeto JSON da solicitação
notification (string) – Nome da notificação registada
scope (int) – Escopo de notificação a partir das opções disponíveis
frequency (int) – Escolha de frequência para notificações
- GET /api/users/(str: username)/notifications/(int: subscription_id)/¶
Obtém uma assinatura associada a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
subscription_id (int) – ID da notificação registada
- PUT /api/users/(str: username)/notifications/(int: subscription_id)/¶
Edita uma assinatura associada a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
subscription_id (int) – ID da notificação registada
- Objeto JSON da solicitação
notification (string) – Nome da notificação registada
scope (int) – Escopo de notificação a partir das opções disponíveis
frequency (int) – Escolha de frequência para notificações
- PATCH /api/users/(str: username)/notifications/(int: subscription_id)/¶
Edita uma assinatura associada a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
subscription_id (int) – ID da notificação registada
- Objeto JSON da solicitação
notification (string) – Nome da notificação registada
scope (int) – Escopo de notificação a partir das opções disponíveis
frequency (int) – Escolha de frequência para notificações
- DELETE /api/users/(str: username)/notifications/(int: subscription_id)/¶
Apaga uma assinatura associada a um utilizador.
- Parâmetros
username (string) – Nome de utilizador do utilizador
subscription_id – Nome da notificação registada
subscription_id – int
Grupos¶
Novo na versão 4.0.
- GET /api/groups/¶
Retorna uma lista de grupos se tiver permissões para ver grupos geridos. Se não, então pode ver apenas os grupos dos quais o utilizador faz parte.
Veja também
Os atributos de objeto de grupo estão documentados em
GET /api/groups/(int:id)/
.
- POST /api/groups/¶
Cria um novo grupo.
- Parâmetros
name (string) – Nome do grupo
project_selection (int) – Grupo de seleção de projetos a partir de opções dadas
language_selection (int) – Grupo de idiomas selecionados a partir de opções dadas
- GET /api/groups/(int: id)/¶
Devolve informação sobre o grupo.
- Parâmetros
id (int) – ID do grupo
- Objeto JSON de resposta
name (string) – nome de um grupo
project_selection (int) – inteiro correspondente ao grupo de projetos
language_selection (int) – inteiro correspondente ao grupo de idiomas
roles (array) – ligacão para funções associadas; veja
GET /api/roles/(int:id)/
projects (array) – ligação para projetos associados; veja
GET /api/projects/(string:project)/
components (array) – ligação para componentes associados; veja
GET /api/components/(string:project)/(string:component)/
componentlist (array) – ligação para lista de componentes associada; veja
GET /api/component-lists/(str:slug)/
Exemplo de dados JSON:
{ "name": "Guests", "project_selection": 3, "language_selection": 1, "url": "http://example.com/api/groups/1/", "roles": [ "http://example.com/api/roles/1/", "http://example.com/api/roles/2/" ], "languages": [ "http://example.com/api/languages/en/", "http://example.com/api/languages/cs/", ], "projects": [ "http://example.com/api/projects/demo1/", "http://example.com/api/projects/demo/" ], "componentlist": "http://example.com/api/component-lists/new/", "components": [ "http://example.com/api/components/demo/weblate/" ] }
- PUT /api/groups/(int: id)/¶
Altera os parâmetros do grupo.
- Parâmetros
id (int) – ID do grupo
- Objeto JSON de resposta
name (string) – nome de um grupo
project_selection (int) – inteiro correspondente ao grupo de projetos
language_selection (int) – inteiro correspondente ao grupo de idiomas
- PATCH /api/groups/(int: id)/¶
Altera os parâmetros do grupo.
- Parâmetros
id (int) – ID do grupo
- Objeto JSON de resposta
name (string) – nome de um grupo
project_selection (int) – inteiro correspondente ao grupo de projetos
language_selection (int) – inteiro correspondente ao grupo de idiomas
- DELETE /api/groups/(int: id)/¶
Apaga o grupo.
- Parâmetros
id (int) – ID do grupo
- POST /api/groups/(int: id)/roles/¶
Associar funções a um grupo.
- Parâmetros
id (int) – ID do grupo
- Parâmetros de formulário
string role_id – O ID de função único
- POST /api/groups/(int: id)/components/¶
Associa componentes a um grupo.
- Parâmetros
id (int) – ID do grupo
- Parâmetros de formulário
string component_id – O ID de componente único
- DELETE /api/groups/(int: id)/components/(int: component_id)¶
Eliminar componente de um grupo.
- Parâmetros
id (int) – ID do grupo
component_id (int) – O ID de componente único
- POST /api/groups/(int: id)/projects/¶
Associa projetos a um grupo.
- Parâmetros
id (int) – ID do grupo
- Parâmetros de formulário
string project_id – O ID do projeto único
- DELETE /api/groups/(int: id)/projects/(int: project_id)¶
Eliminar projeto de um grupo.
- Parâmetros
id (int) – ID do grupo
project_id (int) – O ID do projeto único
- POST /api/groups/(int: id)/languages/¶
Associar línguas a um grupo.
- Parâmetros
id (int) – ID do grupo
- Parâmetros de formulário
string language_code – O código de idioma único
- DELETE /api/groups/(int: id)/languages/(string: language_code)¶
Eliminar língua de um grupo.
- Parâmetros
id (int) – ID do grupo
language_code (string) – O código de idioma único
- POST /api/groups/(int: id)/componentlists/¶
Associa listas de componentes a um grupo.
- Parâmetros
id (int) – ID do grupo
- Parâmetros de formulário
string component_list_id – O ID de lista de componentes único
- DELETE /api/groups/(int: id)/componentlists/(int: component_list_id)¶
Apaga a lista de componentes de um grupo.
- Parâmetros
id (int) – ID do grupo
component_list_id (int) – O ID de lista de componentes único
Funções¶
- GET /api/roles/¶
Retorna uma lista de todas as funções associadas ao utilizador. Se o utilizador for superutilizador, então a lista de todas as funções existentes será retornada.
Veja também
Os atributos de objeto de funções estão documentados em
GET /api/roles/(int:id)/
.
- POST /api/roles/¶
Cria uma nova função.
- Parâmetros
name (string) – Nome da função
permissions (array) – Lista de codinomes de permissões
- GET /api/roles/(int: id)/¶
Retorna informações sobre uma função.
- Parâmetros
id (int) – ID da função
- Objeto JSON de resposta
name (string) – Nome da função
permissions (array) – lista de codinomes de permissões
Exemplo de dados JSON:
{ "name": "Access repository", "permissions": [ "vcs.access", "vcs.view" ], "url": "http://example.com/api/roles/1/", }
- PUT /api/roles/(int: id)/¶
Altera os parâmetros da função.
- Parâmetros
id (int) – ID da função
- Objeto JSON de resposta
name (string) – Nome da função
permissions (array) – lista de codinomes de permissões
- PATCH /api/roles/(int: id)/¶
Altera os parâmetros da função.
- Parâmetros
id (int) – ID da função
- Objeto JSON de resposta
name (string) – Nome da função
permissions (array) – lista de codinomes de permissões
- DELETE /api/roles/(int: id)/¶
Apaga a função.
- Parâmetros
id (int) – ID da função
Idiomas¶
- GET /api/languages/¶
Retorna uma lista de todos os idiomas.
Veja também
Os atributos do objeto de idioma estão documentados em
GET /api/languages/(string:language)/
.
- POST /api/languages/¶
Cria uma nova língua.
- Parâmetros
code (string) – Nome do idioma
name (string) – Nome do idioma
direction (string) – Direção do texto
plural (object) – Fórmula e quantidade de plural do idioma
- GET /api/languages/(string: language)/¶
Devolve informação sobre uma língua.
- Parâmetros
language (string) – Código do idioma
- Objeto JSON de resposta
code (string) – Código do idioma
direction (string) – Direção do texto
plural (object) – Objeto de informações de plurais do idioma
aliases (array) – vetor de codinomes para o idioma
Exemplo de dados JSON:
{ "code": "en", "direction": "ltr", "name": "English", "plural": { "id": 75, "source": 0, "number": 2, "formula": "n != 1", "type": 1 }, "aliases": [ "english", "en_en", "base", "source", "eng" ], "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/", "statistics_url": "http://example.com/api/languages/en/statistics/" }
- PUT /api/languages/(string: language)/¶
Altera os parâmetros linguísticos.
- Parâmetros
language (string) – Código do idioma
- Objeto JSON da solicitação
name (string) – Nome do idioma
direction (string) – Direção do texto
plural (object) – Detalhes de plural do idioma
- PATCH /api/languages/(string: language)/¶
Altera os parâmetros linguísticos.
- Parâmetros
language (string) – Código do idioma
- Objeto JSON da solicitação
name (string) – Nome do idioma
direction (string) – Direção do texto
plural (object) – Detalhes de plural do idioma
- DELETE /api/languages/(string: language)/¶
Apaga o idioma.
- Parâmetros
language (string) – Código do idioma
- GET /api/languages/(string: language)/statistics/¶
Devolve estatísticas para uma língua.
- Parâmetros
language (string) – Código do idioma
- Objeto JSON de resposta
total (int) – quantidade total de cadeias
total_words (int) – número total de palavras
last_change (timestamp) – últimas alterações na língua
recent_changes (int) – número total de alterações
translated (int) – quantidade de cadeias traduzidas
translated_percent (float) – percentagem de cadeia traduzidas
translated_words (int) – número de palavras traduzidas
translated_words_percent (int) – percentagem de palavras traduzidas
translated_chars (int) – número de caracteres traduzidos
translated_chars_percent (int) – percentagem de caracteres traduzidos
total_chars (int) – número total de caracteres
fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)
fuzzy_percent (int) – percentagem de cadeias aproximadas (marcados para edição)
failing (int) – quantidade de cadeias com falha
failing – percentagem de cadeias com falha
Projetos¶
- GET /api/projects/¶
Retorna uma lista de todos os projetos.
Veja também
Os atributos do objeto do projeto estão documentados em
GET /api/projects/(string:project)/
.
- POST /api/projects/¶
Novo na versão 3.9.
Cria um novo projeto.
- Parâmetros
name (string) – Nome do projeto
slug (string) – URL amigável do projeto
web (string) – Site da Web do Projeto
- GET /api/projects/(string: project)/¶
Devolve informação sobre um projecto.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
name (string) – nome do projeto
slug (string) – url amigável do projeto
web (string) – site do projeto
components_list_url (string) – URL para lista de componentes; veja
GET /api/projects/(string:project)/components/
repository_url (string) – URL para estado do repositório; veja
GET /api/projects/(string:project)/repository/
changes_list_url (string) – URL para lista de alterações; veja
GET /api/projects/(string:project)/changes/
translation_review (boolean) – Activar revisões
source_review (boolean) – Ativar revisões de fontes
set_language_team (boolean) – Definir cabeçalho «Language-Team»
enable_hooks (boolean) – Ativar hooks
instructions (string) – Instruções para tradução
language_aliases (string) – Aliases do idioma
Exemplo de dados JSON:
{ "name": "Hello", "slug": "hello", "url": "http://example.com/api/projects/hello/", "web": "https://weblate.org/", "web_url": "http://example.com/projects/hello/" }
- PATCH /api/projects/(string: project)/¶
Novo na versão 4.3.
Edita um projeto por uma solicitação PATCH.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- PUT /api/projects/(string: project)/¶
Novo na versão 4.3.
Edita um projeto por uma solicitação :http:method:PUT`.
- Parâmetros
project (string) – URL semântico do projeto
- DELETE /api/projects/(string: project)/¶
Novo na versão 3.9.
Apaga um projeto.
- Parâmetros
project (string) – URL semântico do projeto
- GET /api/projects/(string: project)/changes/¶
Retorna uma lista de alterações no projeto. Este é essencialmente um
GET /api/changes/
no escopo do projeto a aceitar os mesmos parâmetros.- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
results (array) – vetor de objetos componentes; veja
GET /api/changes/(int:id)/
- GET /api/projects/(string: project)/repository/¶
Retorna informações sobre o estado do repositório VCS. Este contém apenas um resumo geral de todos os repositórios para o projeto. Para obter um estado mais detalhado, use http:get:/api/components/(string:project)/(string:component)/repository/.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
needs_commit (boolean) – se há alguma alteração pendente de commit
needs_merge (boolean) – se há alguma alteração do upstream para mesclar
needs_push (boolean) – se há alguma alteração local para fazer push
Exemplo de dados JSON:
{ "needs_commit": true, "needs_merge": false, "needs_push": true }
- POST /api/projects/(string: project)/repository/¶
Realiza a operação dada no repositório VCS.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON da solicitação
operation (string) – Operação para realizar: uma de
push
,pull
,commit
,reset
,cleanup
,file-sync
- Objeto JSON de resposta
result (boolean) – resultado da operação
Exemplo de CURL:
curl \ -d operation=pull \ -H "Authorization: Token TOKEN" \ http://example.com/api/projects/hello/repository/
Exemplo de solicitação JSON:
POST /api/projects/hello/repository/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 {"operation":"pull"}
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS {"result":true}
- GET /api/projects/(string: project)/components/¶
Retorna uma lista de componentes de tradução no projeto dado.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
results (array) – vetor de objetos componentes; veja
GET /api/components/(string:project)/(string:component)/
- POST /api/projects/(string: project)/components/¶
Novo na versão 3.9.
Alterado na versão 4.3: Os parâmetros `` zipfile`` e `` docfile`` agora são aceitos para componentes sem VCS, veja Ficheiros locais.
Alterado na versão 4.6: The cloned repositories are now automatically shared within a project using URLs internas do Weblate. Use
disable_autoshare
to turn off this.Cria componentes de tradução no projeto dado.
Dica
Use URLs internas do Weblate ao criar vários componentes a partir de um único repositório VCS.
Nota
A maior parte da criação de componentes acontece em segundo plano. Verifique o atributo
task_url
do componente criado e siga o progresso por lá.- Parâmetros
project (string) – URL semântico do projeto
- Parâmetros de formulário
file zipfile – Ficheiro ZIP para enviar ao Weblate para inicialização de traduções
file docfile – Documento para traduzir
boolean disable_autoshare – Disables automatic repository sharing via URLs internas do Weblate.
- Objeto JSON de resposta
result (object) – Objeto componente criado; veja
GET /api/components/(string:project)/(string:component)/
JSON não pode ser usado ao enviar os ficheiros a usar os parâmetros
zipfile
edocfile
. Os dados devem ser enviados como multipart/form-data.Exemplo de solicitação de formulário com CURL:
curl \ --form docfile=@strings.html \ --form name=Weblate \ --form slug=weblate \ --form file_format=html \ --form new_lang=add \ -H "Authorization: Token TOKEN" \ http://example.com/api/projects/hello/components/
Exemplo de solicitação JSON com CURL:
curl \ --data-binary '{ "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "Weblate", "slug": "weblate", "repo": "file:///home/nijel/work/weblate-hello", "template": "", "new_base": "", "vcs": "git" }' \ -H "Content-Type: application/json" \ -H "Authorization: Token TOKEN" \ http://example.com/api/projects/hello/components/
Exemplo de solicitação JSON:
POST /api/projects/hello/components/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 { "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "Weblate", "slug": "weblate", "repo": "file:///home/nijel/work/weblate-hello", "template": "", "new_base": "", "vcs": "git" }
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS { "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "Weblate", "slug": "weblate", "project": { "name": "Hello", "slug": "hello", "source_language": { "code": "en", "direction": "ltr", "name": "English", "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/" }, "url": "http://example.com/api/projects/hello/", "web": "https://weblate.org/", "web_url": "http://example.com/projects/hello/" }, "repo": "file:///home/nijel/work/weblate-hello", "template": "", "new_base": "", "url": "http://example.com/api/components/hello/weblate/", "vcs": "git", "web_url": "http://example.com/projects/hello/weblate/" }
- GET /api/projects/(string: project)/languages/¶
Retorna estatísticas paginadas para todos os idiomas num projeto.
Novo na versão 3.8.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
results (array) – vetor de objetos de estatísticas de tradução
language (string) – nome de idioma
code (string) – código de idioma
total (int) – quantidade total de cadeias
translated (int) – quantidade de cadeias traduzidas
translated_percent (float) – percentagem de cadeia traduzidas
total_words (int) – número total de palavras
translated_words (int) – número de palavras traduzidas
words_percent (float) – percentagem de palavras traduzidas
- GET /api/projects/(string: project)/statistics/¶
Retorna estatísticas para um projeto.
Novo na versão 3.8.
- Parâmetros
project (string) – URL semântico do projeto
- Objeto JSON de resposta
total (int) – quantidade total de cadeias
translated (int) – quantidade de cadeias traduzidas
translated_percent (float) – percentagem de cadeia traduzidas
total_words (int) – número total de palavras
translated_words (int) – número de palavras traduzidas
words_percent (float) – percentagem de palavras traduzidas
Componentes¶
- GET /api/components/¶
Retorna uma lista de componentes de tradução.
Veja também
Os atributos do objeto componente estão documentados em
GET /api/components/(string:project)/(string:component)/
.
- GET /api/components/(string: project)/(string: component)/¶
Retorna informações sobre o componente de tradução.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
project (object) – o projeto de tradução; veja
GET /api/projects/(string:project)/
name (string) – Nome do componente
slug (string) – URL amigável do componente
vcs (string) – Sistema de controlo de versões
repo (string) – Repositório do código-fonte
git_export (string) – URL do repositório exportado
branch (string) – Ramo do repositório
push_branch (string) – Ramo do push
filemask (string) – Máscara de ficheiros
template (string) – Ficheiro de idioma base monolingue
edit_template (string) – Editar ficheiro base
intermediate (string) – Ficheiro de idioma intermédio
new_base (string) – Modelo para novas traduções
file_format (string) – Formato de ficheiro
license (string) – Licença da tradução
agreement (string) – Acordo de contribuidor
new_lang (string) – Adicionar nova tradução
language_code_style (string) – Estilo de código de idioma
source_language (object) – objeto do idioma fonte; veja
GET /api/languages/(string:language)/
push (string) – URL de submissão do repositório
check_flags (string) – Marcadores de tradução
priority (string) – Prioridade
enforced_checks (string) – Verificações impostas
restricted (string) – Acesso restrito
repoweb (string) – Navegador do repositório
report_source_bugs (string) – Endereço para reportar erros na cadeia fonte
merge_style (string) – Estilo de união
commit_message (string) – Mensagens de commit, add, merge e extensão
add_message (string) – Mensagens de commit, add, merge e extensão
delete_message (string) – Mensagens de commit, add, merge e extensão
merge_message (string) – Mensagens de commit, add, merge e extensão
addon_message (string) – Mensagens de commit, add, merge e extensão
allow_translation_propagation (string) – Permitir propagação da tradução
enable_suggestions (string) – Ativar sugestões
suggestion_voting (string) – Votação de sugestão
suggestion_autoaccept (string) – Aceitar sugestões automaticamente
push_on_commit (string) – Enviar ao submeter
commit_pending_age (string) – Idade das alterações a fazer commit
auto_lock_error (string) – Bloquear com erro
language_regex (string) – Filtro de idioma
variant_regex (string) – Expressão regular das variantes
repository_url (string) – URL para estado do repositório; veja
GET /api/components/(string:project)/(string:component)/repository/
translations_url (string) – URL para lista de tradução; veja
GET /api/components/(string:project)/(string:component)/translations/
lock_url (string) – URL para estado de bloqueio; veja
GET /api/components/(string:project)/(string:component)/lock/
changes_list_url (string) – URL para lista de alterações; veja
GET /api/components/(string:project)/(string:component)/changes/
task_url (string) – URL para uma tarefa em segundo plano (se houver); veja
GET /api/tasks/(str:uuid)/
Exemplo de dados JSON:
{ "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "Weblate", "slug": "weblate", "project": { "name": "Hello", "slug": "hello", "source_language": { "code": "en", "direction": "ltr", "name": "English", "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/" }, "url": "http://example.com/api/projects/hello/", "web": "https://weblate.org/", "web_url": "http://example.com/projects/hello/" }, "source_language": { "code": "en", "direction": "ltr", "name": "English", "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/" }, "repo": "file:///home/nijel/work/weblate-hello", "template": "", "new_base": "", "url": "http://example.com/api/components/hello/weblate/", "vcs": "git", "web_url": "http://example.com/projects/hello/weblate/" }
- PATCH /api/components/(string: project)/(string: component)/¶
Edita uma componente por uma solicitação PATCH.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
source_language (string) – Código de idioma fonte do projeto (opcional)
- Objeto JSON da solicitação
name (string) – nome do componente
slug (string) – URL amigável do componente
repo (string) – URL do repositório VCS
Exemplo de CURL:
curl \ --data-binary '{"name": "new name"}' \ -H "Content-Type: application/json" \ -H "Authorization: Token TOKEN" \ PATCH http://example.com/api/projects/hello/components/
Exemplo de solicitação JSON:
PATCH /api/projects/hello/components/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 { "name": "new name" }
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS { "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "new name", "slug": "weblate", "project": { "name": "Hello", "slug": "hello", "source_language": { "code": "en", "direction": "ltr", "name": "English", "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/" }, "url": "http://example.com/api/projects/hello/", "web": "https://weblate.org/", "web_url": "http://example.com/projects/hello/" }, "repo": "file:///home/nijel/work/weblate-hello", "template": "", "new_base": "", "url": "http://example.com/api/components/hello/weblate/", "vcs": "git", "web_url": "http://example.com/projects/hello/weblate/" }
- PUT /api/components/(string: project)/(string: component)/¶
Edita um componente por uma solicitação PUT.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON da solicitação
branch (string) – Ramo do repositório VCS
file_format (string) – formato de ficheiro de traduções
filemask (string) – máscara dos ficheiros de tradução no repositório
name (string) – nome do componente
slug (string) – URL amigável do componente
repo (string) – URL do repositório VCS
template (string) – ficheiro base para traduções monolíngues
new_base (string) – ficheiro base para adicionar novas traduções
vcs (string) – sistema de controle de versão
- DELETE /api/components/(string: project)/(string: component)/¶
Novo na versão 3.9.
Apaga um componente.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- GET /api/components/(string: project)/(string: component)/changes/¶
Retorna uma lista de alterações de componentes. Este é essencialmente um componente com escop
GET /api/changes/
a aceitar os mesmos parâmetros.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
results (array) – vetor de objetos componentes; veja
GET /api/changes/(int:id)/
- GET /api/components/(string: project)/(string: component)/screenshots/¶
Retorna uma lista de capturas de ecrã do componente.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
results (array) – vetor de capturas de ecrã do componente; veja
GET /api/screenshots/(int:id)/
- GET /api/components/(string: project)/(string: component)/lock/¶
Retorna o estado do bloqueio do componente.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
locked (boolean) – se o componente está bloqueado para atualizações
Exemplo de dados JSON:
{ "locked": false }
- POST /api/components/(string: project)/(string: component)/lock/¶
Define o estado de bloqueio do componente.
A resposta é a mesma que
GET /api/components/(string:project)/(string:component)/lock/
.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON da solicitação
lock – Booleano se deve ser bloqueado ou não.
Exemplo de CURL:
curl \ -d lock=true \ -H "Authorization: Token TOKEN" \ http://example.com/api/components/hello/weblate/repository/
Exemplo de solicitação JSON:
POST /api/components/hello/weblate/repository/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 {"lock": true}
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS {"locked":true}
- GET /api/components/(string: project)/(string: component)/repository/¶
Retorna informações sobre o estado do repositório VCS.
A resposta é a mesma para
GET /api/projects/(string:project)/repository/
.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
needs_commit (boolean) – se há alguma alteração pendente de commit
needs_merge (boolean) – se há alguma alteração do upstream para mesclar
needs_push (boolean) – se há alguma alteração local para fazer push
remote_commit (string) – Informações do commit remoto
status (string) – Estado do repositório VCS como relatado pelo VCS
merge_failure – Texto a descrever uma falha de mesclagem ou nulo se houver nenhuma
- POST /api/components/(string: project)/(string: component)/repository/¶
Executa a operação fornecida num repositório VCS.
Veja
POST /api/projects/(string:project)/repository/
para a documentação.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON da solicitação
operation (string) – Operação para executar: um de
push
,pull
,commit
,reset
,cleanup
- Objeto JSON de resposta
result (boolean) – resultado da operação
Exemplo de CURL:
curl \ -d operation=pull \ -H "Authorization: Token TOKEN" \ http://example.com/api/components/hello/weblate/repository/
Exemplo de solicitação JSON:
POST /api/components/hello/weblate/repository/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 {"operation":"pull"}
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS {"result":true}
- GET /api/components/(string: project)/(string: component)/monolingual_base/¶
Descarrega o ficheiro base para traduções monolíngues.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- GET /api/components/(string: project)/(string: component)/new_template/¶
Descarrega o ficheiro de modelo para novas traduções.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- GET /api/components/(string: project)/(string: component)/translations/¶
Retorna uma lista de objetos de tradução no componente fornecido.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
results (array) – vetor de objetos de tradução; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/
- POST /api/components/(string: project)/(string: component)/translations/¶
Cria uma nova tradução no componente fornecido.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON da solicitação
language_code (string) – código de idioma de tradução; veja
GET /api/languages/(string:language)/
- Objeto JSON de resposta
result (object) – novo objecto de tradução criado
Exemplo de CURL:
curl \ -d language_code=cs \ -H "Authorization: Token TOKEN" \ http://example.com/api/projects/hello/components/
Exemplo de solicitação JSON:
POST /api/projects/hello/components/ HTTP/1.1 Host: example.com Accept: application/json Content-Type: application/json Authorization: Token TOKEN Content-Length: 20 {"language_code": "cs"}
Exemplo de resposta JSON:
HTTP/1.0 200 OK Date: Tue, 12 Apr 2016 09:32:50 GMT Server: WSGIServer/0.1 Python/2.7.11+ Vary: Accept, Accept-Language, Cookie X-Frame-Options: SAMEORIGIN Content-Type: application/json Content-Language: en Allow: GET, POST, HEAD, OPTIONS { "failing_checks": 0, "failing_checks_percent": 0, "failing_checks_words": 0, "filename": "po/cs.po", "fuzzy": 0, "fuzzy_percent": 0.0, "fuzzy_words": 0, "have_comment": 0, "have_suggestion": 0, "is_template": false, "is_source": false, "language": { "code": "cs", "direction": "ltr", "name": "Czech", "url": "http://example.com/api/languages/cs/", "web_url": "http://example.com/languages/cs/" }, "language_code": "cs", "id": 125, "last_author": null, "last_change": null, "share_url": "http://example.com/engage/hello/cs/", "total": 4, "total_words": 15, "translate_url": "http://example.com/translate/hello/weblate/cs/", "translated": 0, "translated_percent": 0.0, "translated_words": 0, "url": "http://example.com/api/translations/hello/weblate/cs/", "web_url": "http://example.com/projects/hello/weblate/cs/" }
- GET /api/components/(string: project)/(string: component)/statistics/¶
Retorna estatísticas paginadas para todas as traduções dentro do componente.
Novo na versão 2.7.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
results (array) – vetor de objetos de estatísticas de tradução; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/statistics/
- GET /api/components/(string: project)/(string: component)/links/¶
Retorna projetos vinculados a um componente.
Novo na versão 4.5.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Objeto JSON de resposta
projects (array) – projetos associados; veja
GET /api/projects/(string:project)/
- POST /api/components/(string: project)/(string: component)/links/¶
Associa projeto a um componente.
Novo na versão 4.5.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
- Parâmetros de formulário
string project_slug – URL amigável do projeto
- DELETE /api/components/(string: project)/(string: component)/links/(string: project_slug)/¶
Remove associação de um projeto com um componente.
Novo na versão 4.5.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
project_slug (string) – Slug do projeto para remover
Traduções¶
- GET /api/translations/¶
Devolve uma lista de traduções.
Veja também
Atributos de objeto de tradução estão documentados em
GET /api/translations/(string:project)/(string:component)/(string:language)/
.
- GET /api/translations/(string: project)/(string: component)/(string: language)/¶
Devolve informação sobre uma tradução.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON de resposta
component (object) – objeto do componente; veja
GET /api/components/(string:project)/(string:component)/
failing_checks (int) – quantidade de cadeias com verificações falhadas
failing_checks_percent (float) – Cadeias traduzidas com quaisquer verificações falhadas
failing_checks_words (int) – quantidade de verificações falhadas
filename (string) – Nome do ficheiro da tradução
fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)
fuzzy_percent (float) – percentagem de cadeias aproximadas (marcados para edição)
fuzzy_words (int) – quantidade de palavras em cadeias aproximadas (marcados para edição)
have_comment (int) – quantidade de cadeias com comentário
have_suggestion (int) – quantidade de cadeias com sugestão
is_template (boolean) – se a tradução tem uma base monolingue
language (object) – objeto do idioma fonte; veja
GET /api/languages/(string:language)/
language_code (string) – código de idioma usado no repositório; isso pode ser diferente do código de idioma no objeto de linguagem
last_author (string) – nome do úlitmo autor
last_change (timestamp) – data e hora da última alteração
revision (string) – hash de revisão para o ficheiro
share_url (string) – URL para compartilhar a levar à página de engajamento
total (int) – quantidade total de cadeias
total_words (int) – número total de palavras
translate_url (string) – URL para tradução
translated (int) – quantidade de cadeias traduzidas
translated_percent (float) – percentagem de cadeia traduzidas
translated_words (int) – número de palavras traduzidas
repository_url (string) – URL para estado do repositório; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/repository/
file_url (string) – URL para objeto ficheiro; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/file/
changes_list_url (string) – URL para lista de alterações; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/changes/
units_list_url (string) – URL para lista de cadeias; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/units/
Exemplo de dados JSON:
{ "component": { "branch": "main", "file_format": "po", "filemask": "po/*.po", "git_export": "", "license": "", "license_url": "", "name": "Weblate", "new_base": "", "project": { "name": "Hello", "slug": "hello", "source_language": { "code": "en", "direction": "ltr", "name": "English", "url": "http://example.com/api/languages/en/", "web_url": "http://example.com/languages/en/" }, "url": "http://example.com/api/projects/hello/", "web": "https://weblate.org/", "web_url": "http://example.com/projects/hello/" }, "repo": "file:///home/nijel/work/weblate-hello", "slug": "weblate", "template": "", "url": "http://example.com/api/components/hello/weblate/", "vcs": "git", "web_url": "http://example.com/projects/hello/weblate/" }, "failing_checks": 3, "failing_checks_percent": 75.0, "failing_checks_words": 11, "filename": "po/cs.po", "fuzzy": 0, "fuzzy_percent": 0.0, "fuzzy_words": 0, "have_comment": 0, "have_suggestion": 0, "is_template": false, "language": { "code": "cs", "direction": "ltr", "name": "Czech", "url": "http://example.com/api/languages/cs/", "web_url": "http://example.com/languages/cs/" }, "language_code": "cs", "last_author": "Weblate Admin", "last_change": "2016-03-07T10:20:05.499", "revision": "7ddfafe6daaf57fc8654cc852ea6be212b015792", "share_url": "http://example.com/engage/hello/cs/", "total": 4, "total_words": 15, "translate_url": "http://example.com/translate/hello/weblate/cs/", "translated": 4, "translated_percent": 100.0, "translated_words": 15, "url": "http://example.com/api/translations/hello/weblate/cs/", "web_url": "http://example.com/projects/hello/weblate/cs/" }
- DELETE /api/translations/(string: project)/(string: component)/(string: language)/¶
Novo na versão 3.9.
Apaga uma tradução.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- GET /api/translations/(string: project)/(string: component)/(string: language)/changes/¶
Retorna uma lista de alterações de tradução. Este é essencialmente um
GET /api/changes/
no escopo de tradução a aceitar os mesmos parâmetros.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON de resposta
results (array) – vetor de objetos componentes; veja
GET /api/changes/(int:id)/
- GET /api/translations/(string: project)/(string: component)/(string: language)/units/¶
Retorna uma lista de unidades de tradução.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
q (string) – Texto de consulta de pesquisa; veja Pesquisando (opcional)
- Objeto JSON de resposta
results (array) – texto de objetos de componente; veja
GET /api/units/(int:id)/
- POST /api/translations/(string: project)/(string: component)/(string: language)/units/¶
Adiciona uma nova unidade monolíngue.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON da solicitação
key (string) – Nome da unidade de tradução
value (array) – O valor da unidade de tradução
Veja também
- POST /api/translations/(string: project)/(string: component)/(string: language)/autotranslate/¶
Aciona a tradução automática.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON da solicitação
mode (string) – Modo de tradução automático
filter_type (string) – Tipo de filtro de tradução automática
auto_source (string) – Fonte da tradução automática –
mt
ouothers
component (string) – Ativar a contribuição para a memória de tradução compartilhada para que o projeto tenha acesso a componentes adicionais.
engines (array) – Motores de tradução automática
threshold (string) – Limite de pontuação
- GET /api/translations/(string: project)/(string: component)/(string: language)/file/¶
Descarrega o ficheiro de tradução atual como está armazenado no VCS (sem o parâmetro
format
) ou convertido para outro formato (veja Descarregar traduções).Nota
Este ponto de extremidade da API usa uma lógica diferente para a saída do resto da API, pois opera no ficheiro inteiro em vez de nos dados. O conjunto de parâmetros aceitos no
format
difere e sem tal parâmetro obtém o ficheiro de tradução armazenado no VCS.- Parâmetros de consulta
format – Formato de ficheiro a usar; se não for especificado nenhuma conversão de formato acontecerá; formatos de ficheiro suportados:
po
,mo
,xliff
,xliff11
,tbx
,csv
,xlsx
,json
,aresource
,strings
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- POST /api/translations/(string: project)/(string: component)/(string: language)/file/¶
Envia um novo ficheiro com traduções.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Parâmetros de formulário
string conflict – Como lidar com conflitos (
ignore
,replace-translated
oureplace-approved
)file file – Ficheiro enviado
string email – E-mail do autor
string author – Nome do autor
string method – Método de envio (
translate
,approve
,suggest
,fuzzy
,replace
,source
,add
), veja Métodos de importaçãostring fuzzy – Processamento de cadeia aproximadas (marcados para edição) (vazio,
process
,approve
)
Exemplo de CURL:
curl -X POST \ -F file=@strings.xml \ -H "Authorization: Token TOKEN" \ http://example.com/api/translations/hello/android/cs/file/
- GET /api/translations/(string: project)/(string: component)/(string: language)/repository/¶
Retorna informações sobre o estado do repositório VCS.
A resposta é a mesma que para
GET /api/components/(string:project)/(string:component)/repository/
.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- POST /api/translations/(string: project)/(string: component)/(string: language)/repository/¶
Realiza a operação dada no repositório VCS.
Veja
POST /api/projects/(string:project)/repository/
para a documentação.- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON da solicitação
operation (string) – Operação para executar: um de
push
,pull
,commit
,reset
,cleanup
- Objeto JSON de resposta
result (boolean) – resultado da operação
- GET /api/translations/(string: project)/(string: component)/(string: language)/statistics/¶
Devolve estatísticas detalhadas da tradução.
Novo na versão 2.7.
- Parâmetros
project (string) – URL semântico do projeto
component (string) – URL semântico do componente
language (string) – Código de idioma de tradução
- Objeto JSON de resposta
code (string) – código de idioma
failing (int) – número de verificações falhadas
failing_percent (float) – percentagem de verificações com falha
fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)
fuzzy_percent (float) – percentagem de cadeias aproximadas (marcados para edição)
total_words (int) – número total de palavras
translated_words (int) – número de palavras traduzidas
last_author (string) – nome do úlitmo autor
last_change (timestamp) – data da última alteração
name (string) – nome de idioma
total (int) – quantidade total de cadeias
translated (int) – quantidade de cadeias traduzidas
translated_percent (float) – percentagem de cadeia traduzidas
url (string) – URL para acesso à tradução (URL de engajamento)
url_translate (string) – URL para acesso à tradução (URL real da tradução)
Unidades¶
Uma unidade é uma única parte de uma tradução que forma o par de um texto fonte com uma cadeia traduzida correspondente e também contém alguns metadados relacionados. O termo é derivado do Translate Toolkit e do XLIFF.
Novo na versão 2.10.
- GET /api/units/¶
Retorna uma lista de unidades de tradução.
Veja também
Os atributos do objeto da unidade estão documentados em
GET /api/units/(int:id)/
.
- GET /api/units/(int: id)/¶
Alterado na versão 4.3: O
target
esource
agora são vetores para lidar apropriadamente com cadeias plurais.Devolve informação sobre a unidade de tradução.
- Parâmetros
id (int) – ID da unidade
- Objeto JSON de resposta
translation (string) – URL de um objeto de tradução relacionado
source (array) – cadeia fonte
previous_source (string) – cadeia fonte anterior usado para correspondência aproximada
target (array) – cadeia alvo
id_hash (string) – identificador único da unidade
content_hash (string) – identificador único da cadeia fonte
location (string) – local da unidade no código-fonte
context (string) – contexto da unidade de tradução
note (string) – nota da unidade de tradução
flags (string) – marcadores da unidade de tradução
state (int) – estado da unidade, 0 - não traduzida, 10 - necessita tradução, 20 - traduzida, 30 - aprovada, 100 - somente leitura
fuzzy (boolean) – se a unidade está confusa ou marcada para revisão
translated (boolean) – Percentagem traduzido
approved (boolean) – Tradução aprovada
position (int) – posição da unidade no ficheiro de tradução
has_suggestion (boolean) – Cadeia tem sugestão
has_comment (boolean) – Cadeia tem comentário
has_failing_check (boolean) – Cadeia tem verificação falhada
num_words (int) – número de palavras de origem
priority (int) – prioridade de tradução. 100 é o padrão
id (int) – identificador da unidade
explanation (string) – Explicação de cadeia, disponível em unidades fonte, veja Informações adicionais sobre cadeias fonte
extra_flags (string) – Sinalizadores de cadeias adicionais, disponíveis nas unidades de fonte, veja Personalizando comportamento a usar marcadores
web_url (string) – URL onde a unidade pode ser editada
souce_unit (string) – Ligação da unidade fonte; veja
GET /api/units/(int:id)/
- PATCH /api/units/(int: id)/¶
Novo na versão 4.3.
Realiza uma atualização parcial na unidade de tradução.
- Parâmetros
id (int) – ID da unidade
- Objeto JSON da solicitação
state (int) – estado da unidade, 0 - não traduzida, 10 - necessita edição, 20 - traduzida, 30 - aprovada (fluxo de trabalho de exigência de revisão ativado, veja Revisores dedicados)
target (array) – cadeia alvo
explanation (string) – Explicação de cadeia, disponível em unidades fonte, veja Informações adicionais sobre cadeias fonte
extra_flags (string) – Sinalizadores de cadeias adicionais, disponíveis nas unidades de fonte, veja Personalizando comportamento a usar marcadores
- PUT /api/units/(int: id)/¶
Novo na versão 4.3.
Realiza a atualização completa da unidade de tradução.
- Parâmetros
id (int) – ID da unidade
- Objeto JSON da solicitação
state (int) – estado da unidade, 0 - não traduzida, 10 - necessita edição, 20 - traduzida, 30 - aprovada (fluxo de trabalho de exigência de revisão ativado, veja Revisores dedicados)
target (array) – cadeia alvo
explanation (string) – Explicação de cadeia, disponível em unidades fonte, veja Informações adicionais sobre cadeias fonte
extra_flags (string) – Sinalizadores de cadeias adicionais, disponíveis nas unidades de fonte, veja Personalizando comportamento a usar marcadores
- DELETE /api/units/(int: id)/¶
Novo na versão 4.3.
Apaga a unidade de tradução.
- Parâmetros
id (int) – ID da unidade
Alterações¶
Novo na versão 2.10.
- GET /api/changes/¶
Alterado na versão 4.1: A filtragem de alterações foi introduzida na versão 4.1.
Retorna uma lista de alterações de tradução.
Veja também
Os atributos do objeto de alteração estão documentados em
GET /api/changes/(int:id)/
.- Parâmetros de consulta
user (string) – Nome de utilizador do utilizador para filtros
action (int) – Ação para filtrar, pode ser usada várias vezes
timestamp_after (timestamp) – Data e hora no formato ISO 8601 para listar as alterações após
timestamp_before (timestamp) – Data e hora no formato ISO 8601 para listar as alterações antes
- GET /api/changes/(int: id)/¶
Devolve informação sobre mudanças na tradução.
- Parâmetros
id (int) – ID da alteração
- Objeto JSON de resposta
unit (string) – URL de um objeto de unidade relacionado
translation (string) – URL de um objeto de tradução relacionado
component (string) – URL de um objeto de componente relacionado
user (string) – URL de um objeto de utilizador relacionado
author (string) – URL de um objeto de autor relacionado
timestamp (timestamp) – data e hora do evento
action (int) – identificação numérica da ação
action_name (string) – descrição textual da ação
target (string) – texto ou detalhe alterado de evento
id (int) – identificador da alteração
Capturas de ecrã¶
Novo na versão 2.14.
- GET /api/screenshots/¶
Retorna uma lista de informações de cadeias de capturas de ecrã.
Veja também
Os atributos do objeto de captura de ecrã estão documentados em
GET /api/screenshots/(int:id)/
.
- GET /api/screenshots/(int: id)/¶
Retorna informações sobre dados de captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- Objeto JSON de resposta
name (string) – nome de um screenshot
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para descarregar um ficheiro; veja
GET /api/screenshots/(int:id)/file/
units (array) – ligação para associar informações sobre cadeia fonte; veja
GET /api/units/(int:id)/
- GET /api/screenshots/(int: id)/file/¶
Descarrega a imagem de captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- POST /api/screenshots/(int: id)/file/¶
Substitui a imagem de captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- Parâmetros de formulário
file image – Ficheiro enviado
Exemplo de CURL:
curl -X POST \ -F image=@image.png \ -H "Authorization: Token TOKEN" \ http://example.com/api/screenshots/1/file/
- POST /api/screenshots/(int: id)/units/¶
Associa cadeias fonte com uma captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- Parâmetros de formulário
string unit_id – ID da unidade
- Objeto JSON de resposta
name (string) – nome de um screenshot
translation (string) – URL de um objeto de tradução relacionado
file_url (string) – URL para descarregar um ficheiro; veja
GET /api/screenshots/(int:id)/file/
units (array) – ligação para associar informações sobre cadeia fonte; veja
GET /api/units/(int:id)/
- DELETE /api/screenshots/(int: id)/units/(int: unit_id)¶
Remove a associação da cadeia fonte com captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
unit_id – ID da unidade da cadeia fonte
- POST /api/screenshots/¶
Cria uma nova captura de ecrã.
- Parâmetros de formulário
file image – Ficheiro enviado
string name – Nome da captura do ecrã
string project_slug – URL amigável do projeto
string component_slug – URL amigável do componente
string language_code – Código do idioma
- Objeto JSON de resposta
name (string) – nome de um screenshot
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para descarregar um ficheiro; veja
GET /api/screenshots/(int:id)/file/
units (array) – ligação para associar informações sobre cadeia fonte; veja
GET /api/units/(int:id)/
- PATCH /api/screenshots/(int: id)/¶
Edita informações parciais sobre captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- Objeto JSON de resposta
name (string) – nome de um screenshot
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para descarregar um ficheiro; veja
GET /api/screenshots/(int:id)/file/
units (array) – ligação para associar informações sobre cadeia fonte; veja
GET /api/units/(int:id)/
- PUT /api/screenshots/(int: id)/¶
Edita informações completas sobre captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
- Objeto JSON de resposta
name (string) – nome de um screenshot
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para descarregar um ficheiro; veja
GET /api/screenshots/(int:id)/file/
units (array) – ligação para associar informações sobre cadeia fonte; veja
GET /api/units/(int:id)/
- DELETE /api/screenshots/(int: id)/¶
Apagar captura de ecrã.
- Parâmetros
id (int) – ID da captura de ecrã
Extensões¶
Novo na versão 4.4.1.
- GET /api/addons/¶
Retorna uma lista de extensões.
Veja também
Os atributos do objeto de extensão estão documentados em
GET /api/addons/(int:id)/
.
- GET /api/addons/(int: id)/¶
Retorna informações sobre dados da extensão.
- Parâmetros
id (int) – ID da extensão
- Objeto JSON de resposta
name (string) – nome de uma extensão
component (string) – URL de um objeto de componente relacionado
configuration (object) – Configuração opcional da extensão
Veja também
- POST /api/components/(string: project)/(string: component)/addons/¶
Cria uma nova extensão.
- Parâmetros
project_slug (string) – URL amigável do projeto
component_slug (string) – URL amigável do componente
- Objeto JSON da solicitação
name (string) – nome de uma extensão
configuration (object) – Configuração opcional da extensão
- PATCH /api/addons/(int: id)/¶
Edita informações parciais sobre extensão.
- Parâmetros
id (int) – ID da extensão
- Objeto JSON de resposta
configuration (object) – Configuração opcional da extensão
- PUT /api/addons/(int: id)/¶
Edita informações completas sobre extensão.
- Parâmetros
id (int) – ID da extensão
- Objeto JSON de resposta
configuration (object) – Configuração opcional da extensão
- DELETE /api/addons/(int: id)/¶
Apaga extensão.
- Parâmetros
id (int) – ID da extensão
Listas de componentes¶
Novo na versão 4.0.
- GET /api/component-lists/¶
Retorna uma lista de listas de componentes.
Veja também
Os atributos do objeto da lista de componentes estão documentados em
GET /api/component-lists/(str:slug)/
.
- GET /api/component-lists/(str: slug)/¶
Retorna informações sobre a lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
- Objeto JSON de resposta
name (string) – nome de uma lista de componentes
slug (string) – URL amigável de uma lista de componentes
show_dashboard (boolean) – se deve mostrar num painel
components (array) – ligação para componentes associados; veja
GET /api/components/(string:project)/(string:component)/
auto_assign (array) – regras de atribuição automáticas
- PUT /api/component-lists/(str: slug)/¶
Altera os parâmetros da lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
- Objeto JSON da solicitação
name (string) – nome de uma lista de componentes
slug (string) – URL amigável de uma lista de componentes
show_dashboard (boolean) – se deve mostrar num painel
- PATCH /api/component-lists/(str: slug)/¶
Altera os parâmetros da lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
- Objeto JSON da solicitação
name (string) – nome de uma lista de componentes
slug (string) – URL amigável de uma lista de componentes
show_dashboard (boolean) – se deve mostrar num painel
- DELETE /api/component-lists/(str: slug)/¶
Apaga a lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
- POST /api/component-lists/(str: slug)/components/¶
Associa um componente a uma lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
- Parâmetros de formulário
string component_id – ID do componente
- DELETE /api/component-lists/(str: slug)/components/(str: component_slug)¶
Desassocia um componente da lista de componentes.
- Parâmetros
slug (string) – URL amigável da lista de componentes
component_slug (string) – URL amigável do componente
Glossário¶
Alterado na versão 4.5: Glossários agora são armazenados como componentes, traduções e cadeias comuns. Use a respetiva API.
Tarefas¶
Novo na versão 4.4.
- GET /api/tasks/¶
A listagem de tarefas não está disponível no momento.
- GET /api/tasks/(str: uuid)/¶
Retorna informações sobre uma tarefa
- Parâmetros
uuid (string) – UUID da tarefa
- Objeto JSON de resposta
completed (boolean) – Se a tarefa foi concluída
progress (int) – Progresso da tarefa em percentagem
result (object) – Resultado da tarefa ou detalhes do progresso
log (string) – Registos da tarefa
Metrics¶
- GET /api/metrics/¶
Returns server metrics.
- Objeto JSON de resposta
units (int) – Quantidade de unidades
units_translated (int) – Quantidade de unidades traduzidas
users (int) – Quantidade de utilizadores
changes (int) – Quantidade de alterações
projects (int) – Quantidade de projetos
components" (int) – Quantidade de componentes
translations" (int) – Quantidade de traduções
languages" (int) – Quantidade de idiomas usados
checks" (int) – Quantidade de verificações de qualidade acionadas
configuration_errors" (int) – Quantidade de erros de configuração
suggestions" (int) – Quantidade de sugestões pendentes
celery_queues (object) – Comprimento das filas de Celery, veja Tarefas de fundo a usar o Celery
name (string) – Nome do servidor configurado
Hooks de notificação¶
Os ganchos de notificação permitem que aplicações externos notifiquem o Weblate que o repositório VCS foi atualizado.
Pode usar terminais de repositório para projetos, componentes e traduções para atualizar repositórios individuais; veja POST /api/projects/(string:project)/repository/
para a documentação.
- GET /hooks/update/(string: project)/(string: component)/¶
Obsoleto desde a versão 2.6: Use
POST /api/components/(string:project)/(string:component)/repository/
em vez disso, que funciona corretamente com autenticação para projetos limitados por ACL.Aciona a atualização de um componente (a buscar do VCS e a procurar por alterações de tradução).
- GET /hooks/update/(string: project)/¶
Obsoleto desde a versão 2.6: Use
POST /api/projects/(string:project)/repository/
, que funciona corretamente com autenticação para projetos limitados por ACL.Aciona a atualização de todos os componentes num projeto (a descarregar do VCS e a procurar por alterações de tradução).
- POST /hooks/github/¶
Gancho especial para lidar com notificações do GitHub e atualizar automaticamente os componentes correspondentes.
Nota
O GitHub inclui suporte direto para notificar o Weblate: ative o gancho do serviço Weblate nas configurações do repositório e defina a URL para a URL da sua instalação do Weblate.
Veja também
- Receber alterações do GitHub automaticamente
Para instruções sobre como configurar integração com GitHub
- https://docs.github.com/pt/github/extending-github/about-webhooks
Informações genéricas sobre Webhooks do GitHub
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/gitlab/¶
Gancho especial para lidar com notificações do GitLab e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações do GitLab automaticamente
Para instrução sobre configurar integração com GitLab
- https://docs.gitlab.com/ee/user/project/integrations/webhooks.html
Informações genéricas sobre Webhooks do GitLab
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/bitbucket/¶
Gancho especial para lidar com notificações do Bitbucket e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações do Bitbucket automaticamente
Para instruções sobre como configurar integração com Bitbucket
- https://support.atlassian.com/bitbucket-cloud/docs/manage-webhooks/
Informações genéricas sobre Webhooks do Bitbucket
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/pagure/¶
Novo na versão 3.3.
Gancho especial para lidar com notificações do Pagure e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações do Pagure automaticamente
Para instruções sobre como configurar integração com Pagure
- https://docs.pagure.org/pagure/usage/using_webhooks.html
Informações genéricas sobre Webhooks do Pagure
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/azure/¶
Novo na versão 3.8.
Gancho especial para lidar com notificações do Azure Repos e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações dos Azure Repos automaticamente
Para instruções sobre como configurar integração com Azure
- https://docs.microsoft.com/pt-br/azure/devops/service-hooks/services/webhooks?view=azure-devops
Informações genéricas sobre Web Hooks do Azure Repos
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/gitea/¶
Novo na versão 3.9.
Gancho especial para lidar com notificações de Webhook do Gitea e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações dos Gitea Repos automaticamente
Para instruções sobre como configurar integração com Gitea
- https://docs.gitea.io/pt-br/webhooks/
Informações genéricas sobre Webhooks do Gitea
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
- POST /hooks/gitee/¶
Novo na versão 3.9.
Gancho especial para lidar com notificações de Webhook do Gitee e atualizar automaticamente os componentes correspondentes.
Veja também
- Receber alterações de Gitee Repos automaticamente
Para instruções sobre como configurar integração com Gitee
- https://gitee.com/help/categories/40
Informações genéricas sobre Webhooks do Gitee
ENABLE_HOOKS
Para ativar ganchos para todo o Weblate
Exportações¶
O Weblate fornece várias exportações para permitir que processe ainda mais os dados.
- GET /exports/stats/(string: project)/(string: component)/¶
- Parâmetros de consulta
format (string) – Formato de saída:
json
oucsv
Obsoleto desde a versão 2.6: Use
GET /api/components/(string:project)/(string:component)/statistics/
eGET /api/translations/(string:project)/(string:component)/(string:language)/statistics/
em vez disso; ele também permite acesso a projetos controlados por ACL.Recupera estatísticas para determinado componente em determinado formato.
Exemplo de solicitação:
GET /exports/stats/weblate/main/ HTTP/1.1 Host: example.com Accept: application/json, text/javascript
Exemplo de resposta:
HTTP/1.1 200 OK Vary: Accept Content-Type: application/json [ { "code": "cs", "failing": 0, "failing_percent": 0.0, "fuzzy": 0, "fuzzy_percent": 0.0, "last_author": "Michal Čihař", "last_change": "2012-03-28T15:07:38+00:00", "name": "Czech", "total": 436, "total_words": 15271, "translated": 436, "translated_percent": 100.0, "translated_words": 3201, "url": "http://hosted.weblate.org/engage/weblate/cs/", "url_translate": "http://hosted.weblate.org/projects/weblate/main/cs/" }, { "code": "nl", "failing": 21, "failing_percent": 4.8, "fuzzy": 11, "fuzzy_percent": 2.5, "last_author": null, "last_change": null, "name": "Dutch", "total": 436, "total_words": 15271, "translated": 319, "translated_percent": 73.2, "translated_words": 3201, "url": "http://hosted.weblate.org/engage/weblate/nl/", "url_translate": "http://hosted.weblate.org/projects/weblate/main/nl/" }, { "code": "el", "failing": 11, "failing_percent": 2.5, "fuzzy": 21, "fuzzy_percent": 4.8, "last_author": null, "last_change": null, "name": "Greek", "total": 436, "total_words": 15271, "translated": 312, "translated_percent": 71.6, "translated_words": 3201, "url": "http://hosted.weblate.org/engage/weblate/el/", "url_translate": "http://hosted.weblate.org/projects/weblate/main/el/" } ]
Feeds RSS¶
As alterações nas traduções são exportadas em feeds RSS.
- GET /exports/rss/(string: project)/(string: component)/(string: language)/¶
Recupera o feed RSS com as alterações recentes de uma tradução.
- GET /exports/rss/(string: project)/(string: component)/¶
Recupera feed RSS com alterações recentes para um componente.
- GET /exports/rss/(string: project)/¶
Recupera feed RSS com alterações recentes para um projeto.
- GET /exports/rss/language/(string: language)/¶
Recupera feed RSS com alterações recentes para um idioma.
- GET /exports/rss/¶
Recupera feed RSS com alterações recentes para a instância Weblate.
Veja também
Cliente Weblate¶
Novo na versão 2.7: Há suporte total do utilitário wlc desde o Weblate 2.7. Se estiver a usar uma versão mais antiga, algumas incompatibilidades com a API podem ocorrer.
Instalação¶
O cliente Weblate é enviado separadamente e inclui o módulo Python. Para usar os comandos abaixo, precisa instalar wlc
:
pip3 install wlc
Uso do Docker¶
O Weblate Client também está disponível como uma imagem Docker.
A imagem está publicada no Docker Hub: https://hub.docker.com/r/weblate/wlc
Instalar:
docker pull weblate/wlc
O contentor Docker usa as configurações padrão do Weblate e se conecta à API implementada no localhost. A URL da API e API_KEY podem ser configuradas através dos argumentos aceitos pelo Weblate.
O comando para iniciar o contentor usa a seguinte sintaxe:
docker run --rm weblate/wlc [WLC_ARGS]
Exemplo:
docker run --rm weblate/wlc --url https://hosted.weblate.org/api/ list-projects
Quereria passar o seu Ficheiros de configuração para o contentor Docker, a abordagem mais fácil é adicionar o seu diretório atual como o volume /home/weblate
:
docker run --volume $PWD:/home/weblate --rm weblate/wlc show
Primeiros Passos¶
A configuração do wlc é armazenada em ``~/.config/weblate``(veja Ficheiros de configuração para outros locais), por favor, crie-a para corresponder ao seu ambiente:
[weblate]
url = https://hosted.weblate.org/api/
[keys]
https://hosted.weblate.org/api/ = APIKEY
Depois pode invocar comandos no servidor predefinido:
wlc ls
wlc commit sandbox/hello-world
Veja também
Sinopse¶
wlc [arguments] <command> [options]
Os comandos indicam, na verdade, qual operação deve ser realizada.
Descrição¶
O cliente Weblate é uma biblioteca Python e utilitário de linha de comando para gerir o Weblate remotamente a usar a API REST do Weblate. O utilitário de linha de comando pode ser invocado como wlc e está embutido em wlc
.
Argumentos¶
O programa aceita os seguintes argumentos que definem o formato de saída ou qual a instância do Weblate a utilizar. Estes devem ser introduzidos antes de qualquer comando.
- --format {csv,json,text,html}¶
Especifica o formato de saída.
- --url URL¶
Especifica a URL da API. Substitui qualquer valor encontrado no ficheiro de configuração, consulte Ficheiros de configuração. A URL deve terminar com
/api/
, por exemplo,https://hosted.weblate.org/api/
.
- --key KEY¶
Especifica a chave do utilizador de API a ser usada. Substitui qualquer valor encontrado no ficheiro de configuração, consulte Ficheiros de configuração. Pode encontrar a sua chave no seu perfil no Weblate.
- --config PATH¶
Substitui o caminho do ficheiro de configuração, consulte Ficheiros de configuração.
- --config-section SECTION¶
Substitui a secção de ficheiros de configuração em uso, consulte Ficheiros de configuração.
Comandos¶
Os comandos seguintes estão disponíveis:
- version¶
Imprime a versão atual.
- list-languages¶
Lista os idiomas usados no Weblate.
- list-projects¶
Lista os projetos no Weblate.
- list-components¶
Lista os componentes no Weblate.
- list-translations¶
Lista as traduções no Weblate.
- show¶
Mostra o objeto do Weblate (tradução, componente ou projeto).
- ls¶
Lista o objeto do Weblate (tradução, componente ou projeto).
- commit¶
Faz um commit das alterações feitas num objeto Weblate (tradução, componente ou projeto).
- pull¶
Faz um pull das alterações remotas do repositório no objeto Weblate (tradução, componente ou projeto).
- push¶
Faz um push das alterações do objeto Weblate ao repositório remoto (tradução, componente ou projeto).
- reset¶
Novo na versão 0.7: Suportado desde o wlc 0.7.
Redefine as alterações no objeto Weblate para corresponder ao repositório remoto (tradução, componente ou projeto).
- cleanup¶
Novo na versão 0.9: Suportado desde o wlc 0.9.
Remove todas as alterações não rastreadas num objeto Weblate para corresponder ao repositório remoto (tradução, componente ou projeto).
- repo¶
Exibe o estado do repositório para um determinado objeto do Weblate (tradução, componente ou projeto).
- statistics¶
Exibe estatísticas detalhadas para um determinado objeto Weblate (tradução, componente ou projeto).
- lock-status¶
Novo na versão 0.5: Suportado desde o wlc 0.5.
Exibe o estado do bloqueio.
- lock¶
Novo na versão 0.5: Suportado desde o wlc 0.5.
Bloqueia o componente de tradução posterior no Weblate.
- unlock¶
Novo na versão 0.5: Suportado desde o wlc 0.5.
Desbloqueia a tradução do componente Weblate.
- changes¶
Novo na versão 0.7: Suportado desde o wlc 0.7 e o Weblate 2.10.
Exibe alterações para um determinado objeto.
- download¶
Novo na versão 0.7: Suportado desde o wlc 0.7.
Descarrega um ficheiro de tradução.
- --convert¶
Converte o formato do ficheiro, se nenhuma conversão não especificada for feita no servidor e o ficheiro for descarregado como está no repositório.
- --output¶
Especifica o ficheiro para gravar a saída e se não for especificado é impresso na stdout (saída predefinida).
- upload¶
Novo na versão 0.9: Suportado desde o wlc 0.9.
Descarrega um ficheiro de tradução.
- --overwrite¶
Substitua as traduções existentes ao enviar.
- --input¶
Ficheiro a partir do qual o conteúdo é lido, se não for especificado é lido de stdin (entrada predefinida).
Dica
Pode obter informações mais detalhadas sobre como invocar comandos individuais a passar --help
, por exemplo: wlc ls --help
.
Ficheiros de configuração¶
.weblate
,.weblate.ini
,weblate.ini
Alterado na versão 1.6: Os ficheiros com extensão .ini também são aceitos.
Por ficheiro de configuração de projeto
C:\Users\NAME\AppData\weblate.ini
Novo na versão 1.6.
Ficheiro de configuração do utilizador no Windows.
~/.config/weblate
Ficheiro de configuração do utilizador
/etc/xdg/weblate
Ficheiro de configuração para todo o sistema
O programa segue a especificação XDG, para que possa ajustar a colocação de ficheiros de configuração por variáveis de ambiente XDG_CONFIG_HOME
ou XDG_CONFIG_DIRS
. No diretório do Windows APPDATA`
é o local preferido para o ficheiro de configuração.
As configurações seguintes podem ser configuradas na secção [weblate]
(pode personalizar-lo por --config-section
):
- key
Chave de API para acessar o Weblate.
- url
URL de API do servidor, a predefinição é
http://127.0.0.1:8000/api/
.
- translation
Caminho à tradução predefinida - componente ou projeto.
O ficheiro de configuração é um ficheiro INI, por exemplo:
[weblate]
url = https://hosted.weblate.org/api/
key = APIKEY
translation = weblate/application
Além disso, as chaves de API podem ser armazenadas na secção [keys]
:
[keys]
https://hosted.weblate.org/api/ = APIKEY
Isso permite que armazene chaves nas suas configurações pessoais, enquanto usa a configuração do .weblate
no repositório VCS para que o wlc saiba com qual servidor ele deve comunicar.
Exemplos¶
Imprimir a versão atual do programa:
$ wlc version
version: 0.1
Listar todos os projetos:
$ wlc list-projects
name: Hello
slug: hello
url: http://example.com/api/projects/hello/
web: https://weblate.org/
web_url: http://example.com/projects/hello/
Também pode designar em qual projeto o wlc deve trabalhar:
$ cat .weblate
[weblate]
url = https://hosted.weblate.org/api/
translation = weblate/application
$ wlc show
branch: main
file_format: po
source_language: en
filemask: weblate/locale/*/LC_MESSAGES/django.po
git_export: https://hosted.weblate.org/git/weblate/application/
license: GPL-3.0+
license_url: https://spdx.org/licenses/GPL-3.0+
name: Application
new_base: weblate/locale/django.pot
project: weblate
repo: git://github.com/WeblateOrg/weblate.git
slug: application
template:
url: https://hosted.weblate.org/api/components/weblate/application/
vcs: git
web_url: https://hosted.weblate.org/projects/weblate/application/
Com esta configuração é fácil fazer um commit de alterações pendentes no projeto atual:
$ wlc commit
API Python do Weblate¶
Instalação¶
A API Python é distribuída separadamente, precisa instalar o Cliente Weblate: (wlc) para tê-la.
pip install wlc
wlc
¶
WeblateException
¶
- exception wlc.WeblateException¶
Classe base para todas as exceções.
Weblate
¶
- class wlc.Weblate(key='', url=None, config=None)¶
- Parâmetros
key (str) – Chave do utilizador
url (str) – URL da API do servidor; se não especificado, o padrão é usado
config (wlc.config.WeblateConfig) – Objeto de configuração, substitui quaisquer outros parâmetros.
Acessa a classe para a API, define a chave da API e, opcionalmente, a URL da API.
- get(path)¶
-
Executa uma única chamada de API GET.
wlc.config
¶
WeblateConfig
¶
Instruções de configuração¶
Instalar o Weblate¶
Instalando a usar Docker¶
Com a implantação do Weblate dockerizada, pode pôr a sua instância Weblate pessoal em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão.
Requisitos de hardware¶
O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):
2 GB de RAM
2 núcleos de CPU
1 GB de espaço de armazenamento
Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).
Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.
O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.
Instalação¶
Os exemplos a seguir presumem que tem um ambiente Docker funcional, com docker-compose
instalado. Verifique a documentação do Docker para obter instruções.
Clone o repositório weblate-docker:
git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker cd weblate-docker
Crie um ficheiro
docker-compose.override.yml
com as suas configurações. Veja Variáveis de ambiente do Docker para uma lista completa das variáveis de ambiente.version: '3' services: weblate: ports: - 80:8080 environment: WEBLATE_EMAIL_HOST: smtp.example.com WEBLATE_EMAIL_HOST_USER: user WEBLATE_EMAIL_HOST_PASSWORD: pass WEBLATE_SERVER_EMAIL: weblate@example.com WEBLATE_DEFAULT_FROM_EMAIL: weblate@example.com WEBLATE_SITE_DOMAIN: weblate.example.com WEBLATE_ADMIN_PASSWORD: password for the admin user WEBLATE_ADMIN_EMAIL: weblate.admin@example.com
Nota
Se
WEBLATE_ADMIN_PASSWORD
não estiver definida, o utilizador admin é criado com uma palavra-passe aleatória mostrada na primeira inicialização.O exemplo fornecido faz o Weblate escutar na porta 80. Edite o mapeamento da porta no ficheiro
docker-compose.override.yml
para alterar isso.Inicie os contentores do Weblate:
docker-compose up
Aproveite a implantação do Weblate, ele está acessível na porta 80 do contentor weblate
.
Alterado na versão 2.15-2: A configuração foi alterada recentemente, antes havia um contentor de servidor web separado, desde 2.15-2 o servidor web está embutido no contentor do Weblate.
Alterado na versão 3.7.1-6: Em julho de 2019 (a começar com a tag 3.7.1-6), os contentores não estão a ser executados como um utilizador root. Isso mudou a porta exposta de 80 para 8080.
Veja também
Choosing Docker hub tag¶
You can use following tags on Docker hub, see https://hub.docker.com/r/weblate/weblate/tags/ for full list of available ones.
Tag name |
Descrição |
Caso de uso |
---|---|---|
|
Weblate stable release, matches latest tagged release |
Rolling updates in a production environment |
|
Weblate stable release |
Well defined deploy in a production environment |
|
Weblate stable release with development changes in the Docker container (for example updated dependencies) |
Rolling updates in a staging environment |
|
Weblate stable release with development changes in the Docker container (for example updated dependencies) |
Well defined deploy in a staging environment |
|
Development version Weblate from Git |
Rollling updates to test upcoming Weblate features |
|
Development version Weblate from Git |
Well defined deploy to test upcoming Weblate features |
Every image is tested by our CI before it gets published, so even the bleeding version should be quite safe to use.
Contentor Docker com suporte a HTTPS¶
Por favor, veja Instalação para instruções genéricas de implantação, esta secção apenas menciona diferenças em comparação a ela.
Usando os seus próprios certificados SSL¶
Novo na versão 3.8-3.
No caso de ter o seu próprio certificado SSL que deseja usar, basta pôr os ficheiros no volume de dados Weblate (veja Volumes de contentor Docker):
ssl/fullchain.pem
a conter o certificado, incluindo quaisquer certificados CA necessáriosssl/privkey.pem
a conter a chave privada
Ambos os ficheiros devem pertencer ao mesmo utilizador que inicia o contentor do docker e ter a máscara de ficheiro definida como 600
(legível e gravável apenas pelo utilizador dono).
Além disso, o contentor Weblate agora aceitará conexões SSL na porta 4443. Ainda quererá incluir o encaminhamento de porta para HTTPS na substituição de composição do docker:
version: '3'
services:
weblate:
ports:
- 80:8080
- 443:4443
Se já hospeda outros sites no mesmo servidor, é provável que as portas 80
e 443
sejam usadas por um proxy reverso, como NGINX. Para passar a conexão HTTPS do NGINX para o contentor do docker, pode usar a seguinte configuração:
server {
listen 443;
listen [::]:443;
server_name <SITE_URL>;
ssl_certificate /etc/letsencrypt/live/<SITE>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<SITE>/privkey.pem;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_pass https://127.0.0.1:<EXPOSED_DOCKER_PORT>;
}
}
Substitua <SITE_URL>
, <SITE>
e <EXPOSED_DOCKER_PORT>
por valores reais do seu ambiente.
Certificados SSL automáticos a usar Let’s Encrypt¶
Caso queira usar certificados SSL Let’s Encrypt gerados automaticamente na instalação pública, precisa adicionar um proxy HTTPS reverso num contentor Docker adicional, https-portal será usado para isso. Isso é usado no ficheiro docker-compose-https.yml
. Em seguida, crie um ficheiro docker-compose-https.override.yml
com as suas configurações:
version: '3'
services:
weblate:
environment:
WEBLATE_EMAIL_HOST: smtp.example.com
WEBLATE_EMAIL_HOST_USER: user
WEBLATE_EMAIL_HOST_PASSWORD: pass
WEBLATE_SITE_DOMAIN: weblate.example.com
WEBLATE_ADMIN_PASSWORD: password for admin user
https-portal:
environment:
DOMAINS: 'weblate.example.com -> http://weblate:8080'
Sempre que invocar docker-compose, precisa passar os dois ficheios a ele e então fazer:
docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml build
docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml up
Atualizando o contentor Docker¶
Normalmente, é uma boa ideia atualizar apenas o contentor Weblate e manter o contentor PostgreSQL na versão que possui, já que atualizar o PostgreSQL é muito doloroso e na maioria dos casos não traz muitos benefícios.
Pode fazer isso a manter o docker-compose existente e apenas obter as imagens mais recentes e reiniciar:
docker-compose stop
docker-compose pull
docker-compose up
O banco de dados do Weblate deve ser migrado automaticamente na primeira inicialização e não deve haver necessidade de ações manuais adicionais.
Nota
Atualizações na 3.0 não são suportadas pelo Weblate. Se estiver na série 2.x e quiser atualizar para 3.x, primeiro atualize para a imagem 3.0.1-x mais recente (no momento em que escrevo esta é a imagem 3.0.1-7
), que faça a migração e, em seguida, continue a atualizar para as versões mais recentes.
Também quererá atualizar o repositório docker-compose
, embora não seja necessário na maioria dos casos. Cuidado com as mudanças de versão do PostgreSQL neste caso, pois não é simples atualizar o banco de dados, consulte este issue do GitHub para mais informações.
Autenticação como administrador¶
Após a configuração do contentor, pode entrar como utilizador admin com a palavra-passe fornecida em WEBLATE_ADMIN_PASSWORD
, ou uma palavra-passe aleatória gerada na primeira inicialização se não tiver sido definida.
Para redefinir a palavra-passe do admin, reinicie o contentor com WEBLATE_ADMIN_PASSWORD
definido com a nova palavra-passe.
Veja também
WEBLATE_ADMIN_PASSWORD
,
WEBLATE_ADMIN_NAME
,
WEBLATE_ADMIN_EMAIL
Quantidade de processos e consumo de memória¶
A quantidade de processos de trabalho para uWSGI e Celery é determinado automaticamente com base no quantidade de CPUs. Isso funciona bem para a maioria das máquinas virtuais em nuvem, pois normalmente têm poucas CPUs e boa quantidade de memória.
Caso tenha muitos núcleos de CPU e tenha problemas de memória insuficiente, tente reduzir a quantidade de workers:
environment:
WEBLATE_WORKERS: 2
Também pode ajustar as categorias de workers individuais:
environment:
UWSGI_WORKERS: 4
CELERY_MAIN_OPTIONS: --concurrency 2
CELERY_NOTIFY_OPTIONS: --concurrency 1
CELERY_TRANSLATE_OPTIONS: --concurrency 1
Dimensionando horizontalmente¶
Novo na versão 4.6.
Aviso
Este recurso é uma prévia da tecnologia.
Pode executar vários contentores Weblate para dimensionar o serviço horizontalmente. O volume /app/data
deve ser compartilhado por todos os contentores, é recomendado usar um sistema de ficheiros de cluster como o GlusterFS para isso. O volume /app/cache
deve ser separado para cada contentor.
Cada contentor Weblate tem um papel definido a usar a variável de ambiente WEBLATE_SERVICE
. Siga atentamente a documentação, pois alguns dos serviços devem ser executados apenas uma vez no cluster e a ordem dos serviços também é importante.
Pode encontrar configuração de exemplo no repositório docker-compose
como docker-compose-split.yml.
Variáveis de ambiente do Docker¶
Muitas das Configurações do Weblate podem ser definidas no contentor Docker a usar variáveis de ambiente:
Configurações genéricas¶
- WEBLATE_DEBUG¶
Configura o modo de depuração do Django a usar
DEBUG
.Exemplo:
environment: WEBLATE_DEBUG: 1
Veja também
- WEBLATE_LOGLEVEL¶
Configura o detalhamento do log.
- WEBLATE_SITE_TITLE¶
Altera o título do site mostrado no cabeçalho de todas as páginas.
- WEBLATE_SITE_DOMAIN¶
Configura o domínio do site. Este parâmetro é obrigatório.
Veja também
- WEBLATE_ADMIN_NAME¶
- WEBLATE_ADMIN_EMAIL¶
Configura o nome e o e-mail do administrador do site. É usado para
ADMINS
e para criar o utilizador admin (vejaWEBLATE_ADMIN_PASSWORD
para mais informações).Exemplo:
environment: WEBLATE_ADMIN_NAME: Weblate admin WEBLATE_ADMIN_EMAIL: noreply@example.com
- WEBLATE_ADMIN_PASSWORD¶
Define a palavra-passe para o utilizador admin.
Se não for definido e o utilizador admin não existir, ele será criado com uma palavra-passe aleatória mostrada na primeira inicialização do contentor.
Se não for definido e o utilizador admin existir, nenhuma ação será executada.
Se definido, o utilizador admin é ajustado em cada inicialização do contentor para corresponder a
WEBLATE_ADMIN_PASSWORD
,WEBLATE_ADMIN_NAME
eWEBLATE_ADMIN_EMAIL
.
Aviso
Pode ser um risco de segurança armazenar a palavra-passe no ficheiro de configuração. Considere usar essa variável apenas para configuração inicial (ou deixe o Weblate gerar uma palavra-passe aleatória na inicialização) ou para recuperação de palavra-passe.
- WEBLATE_ADMIN_PASSWORD_FILE¶
Define o caminho para um ficheiro que contém a palavra-passe para o utilizador admin.
Veja também
- WEBLATE_SERVER_EMAIL¶
- WEBLATE_DEFAULT_FROM_EMAIL¶
Configura o endereço para e-mails de saída.
Veja também
- WEBLATE_CONTACT_FORM¶
Configura o comportamento do formulário de contato, veja
CONTACT_FORM
.
- WEBLATE_ALLOWED_HOSTS¶
Configura os nomes de host HTTP permitidos a usar
ALLOWED_HOSTS
.O padrão é `` * `` que permite todos os nomes de host.
Exemplo:
environment: WEBLATE_ALLOWED_HOSTS: weblate.example.com,example.com
- WEBLATE_REGISTRATION_OPEN¶
Configura se os registos são abertos a alternar
REGISTRATION_OPEN
.Exemplo:
environment: WEBLATE_REGISTRATION_OPEN: 0
- WEBLATE_REGISTRATION_ALLOW_BACKENDS¶
Configura quais métodos de autenticação podem ser usados para criar uma nova conta via
REGISTRATION_ALLOW_BACKENDS
.Exemplo:
environment: WEBLATE_REGISTRATION_OPEN: 0 WEBLATE_REGISTRATION_ALLOW_BACKENDS: azuread-oauth2,azuread-tenant-oauth2
- WEBLATE_TIME_ZONE¶
Configura o fuso horário usado no Weblate, veja
TIME_ZONE
.Nota
Para alterar o fuso horário do próprio contentor do Docker, use a variável de ambiente `` TZ``.
Exemplo:
environment: WEBLATE_TIME_ZONE: Europe/Prague
- WEBLATE_ENABLE_HTTPS¶
Faz com que o Weblate presuma que é operado por trás de um proxy HTTPS reverso, faz com que o Weblate use HTTPS em e-mail e ligações de API ou defina sinalizadores seguros em cookies.
Dica
Por favor, consulte a documentação de
ENABLE_HTTPS
para possíveis advertências.Nota
Isso não faz com que o contentor Weblate aceite conexões HTTPS, precisa configurar isso também, consulte Contentor Docker com suporte a HTTPS para exemplos.
Exemplo:
environment: WEBLATE_ENABLE_HTTPS: 1
- WEBLATE_IP_PROXY_HEADER¶
Permite que o Weblate obtenha o endereço IP de qualquer cabeçalho HTTP fornecido. Use isso ao usar um proxy reverso na frente do contentor Weblate.
Ativa
IP_BEHIND_REVERSE_PROXY
e defineIP_PROXY_HEADER
.Nota
O formato deve estar de acordo com as expectativas do Django. O Django transforma nomes de cabeçalho HTTP brutos da seguinte forma:
converte todos os caracteres em maiúsculas
substitui todos os hifenes por sublinhados
prefixa o prefixo
HTTP_
Portanto,
X-Forwarded-For
seria mapeado paraHTTP_X_FORWARDED_FOR
.Exemplo:
environment: WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
- WEBLATE_SECURE_PROXY_SSL_HEADER¶
Uma tupla que representa uma combinação de cabeçalho/valor HTTP que significa que uma solicitação é segura. Isso é necessário quando o Weblate está a ser executado por trás de um proxy reverso a fazer a terminação SSL que não passa cabeçalhos HTTPS padrão.
Exemplo:
environment: WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
Veja também
- WEBLATE_REQUIRE_LOGIN¶
Ativa
REQUIRE_LOGIN
para impor autenticação em todo o Weblate.Exemplo:
environment: WEBLATE_REQUIRE_LOGIN: 1
- WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS¶
- WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS¶
- WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS¶
Adiciona exceções de URL para autenticação necessária para toda a instalação do Weblate a usar
LOGIN_REQUIRED_URLS_EXCEPTIONS
.Pode substituir configurações inteiras ou modificar o valor padrão a usar as variáveis
ADD
eREMOVE
.
- WEBLATE_GOOGLE_ANALYTICS_ID¶
Configura o ID para o Google Analytics a alterar
GOOGLE_ANALYTICS_ID
.
- WEBLATE_GITHUB_USERNAME¶
Configura o nome de utilizador do GitHub para pull requests do GitHub a alterar
GITHUB_USERNAME
.Veja também
- WEBLATE_GITHUB_TOKEN¶
Novo na versão 4.3.
Configura o token de acesso pessoal do GitHub para pull requests do GitHub via API a alterar
GITHUB_TOKEN
.Veja também
- WEBLATE_GITLAB_USERNAME¶
Configura o nome de utilizador do GitLab para merge requests do GitLab a alterar
GITLAB_USERNAME
Veja também
- WEBLATE_GITLAB_TOKEN¶
Configura o token de acesso pessoal do GitLab para merge requests do GitLab via API a alterar
GITLAB_TOKEN
Veja também
- WEBLATE_PAGURE_USERNAME¶
Configura o nome de utilizador do Pagure para merge requests do Pagure a alterar
PAGURE_USERNAME
Veja também
- WEBLATE_PAGURE_TOKEN¶
Configura o token de acesso pessoal do Pagure para merge requests do Pagure via API a alterar
PAGURE_TOKEN
Veja também
- WEBLATE_SIMPLIFY_LANGUAGES¶
Configura a política de simplificação de idioma, veja
SIMPLIFY_LANGUAGES
.
- WEBLATE_DEFAULT_ACCESS_CONTROL¶
Configura o padrão Controlo de acesso para novos projetos, veja
DEFAULT_ACCESS_CONTROL
.
- WEBLATE_DEFAULT_RESTRICTED_COMPONENT¶
Configura o valor padrão para Acesso restrito para novos componentes, veja
DEFAULT_RESTRICTED_COMPONENT
.
- WEBLATE_DEFAULT_TRANSLATION_PROPAGATION¶
Configura o valor padrão para Permitir propagação da tradução para novos componentes, veja
DEFAULT_TRANSLATION_PROPAGATION
.
- WEBLATE_DEFAULT_COMMITER_EMAIL¶
Configura
DEFAULT_COMMITER_EMAIL
.
- WEBLATE_DEFAULT_COMMITER_NAME¶
Configura
DEFAULT_COMMITER_NAME
.
- WEBLATE_DEFAULT_SHARED_TM¶
Configura
DEFAULT_SHARED_TM
.
- WEBLATE_AKISMET_API_KEY¶
Configura a chave API do Akismet, veja
AKISMET_API_KEY
.
- WEBLATE_GPG_IDENTITY¶
Configura a assinatura GPG de commits, veja
WEBLATE_GPG_IDENTITY
.Veja também
- WEBLATE_URL_PREFIX¶
Configura o prefixo da URL onde o Weblate está a ser executado, veja
URL_PREFIX
.
- WEBLATE_SILENCED_SYSTEM_CHECKS¶
Configura verificações que não deseja que sejam mostradas, veja
SILENCED_SYSTEM_CHECKS
.
- WEBLATE_CSP_SCRIPT_SRC¶
- WEBLATE_CSP_IMG_SRC¶
- WEBLATE_CSP_CONNECT_SRC¶
- WEBLATE_CSP_STYLE_SRC¶
- WEBLATE_CSP_FONT_SRC¶
Permite personalizar o cabeçalho HTTP
Content-Security-Policy
.
- WEBLATE_LICENSE_FILTER¶
Configura
LICENSE_FILTER
.
- WEBLATE_LICENSE_REQUIRED¶
Configura
LICENSE_REQUIRED
- WEBLATE_WEBSITE_REQUIRED¶
Configura
WEBSITE_REQUIRED
- WEBLATE_HIDE_VERSION¶
Configura
HIDE_VERSION
.
- WEBLATE_BASIC_LANGUAGES¶
Configura
BASIC_LANGUAGES
.
- WEBLATE_DEFAULT_AUTO_WATCH¶
Configura
DEFAULT_AUTO_WATCH
.
- WEBLATE_RATELIMIT_ATTEMPTS¶
- WEBLATE_RATELIMIT_LOCKOUT¶
- WEBLATE_RATELIMIT_WINDOW¶
Novo na versão 4.6.
Configura o limitador de taxa.
Dica
Pode definir a configuração para qualquer escopo do limitador de taxa. Para fazer isso, adicione o prefixo
WEBLATE_
a qualquer uma das configurações descritas em Limitação de taxa.Veja também
Limitação de taxa,
RATELIMIT_ATTEMPTS
,RATELIMIT_WINDOW
,RATELIMIT_LOCKOUT
- WEBLATE_ENABLE_AVATARS¶
Novo na versão 4.6.1.
Configura
ENABLE_AVATARS
.
Configurações de tradução automática¶
Dica
Configuring API key for a service automatically configures it in MT_SERVICES
.
- WEBLATE_MT_APERTIUM_APY¶
Ativa tradução automática do Apertium e define
MT_APERTIUM_APY
- WEBLATE_MT_AWS_REGION¶
- WEBLATE_MT_AWS_ACCESS_KEY_ID¶
- WEBLATE_MT_AWS_SECRET_ACCESS_KEY¶
Configura tradução automática da AWS.
environment: WEBLATE_MT_AWS_REGION: us-east-1 WEBLATE_MT_AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE WEBLATE_MT_AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
- WEBLATE_MT_DEEPL_KEY¶
Ativa tradução de máquina do DeepL e define
MT_DEEPL_KEY
- WEBLATE_MT_DEEPL_API_URL¶
Configura a versão da API do DeepL para usar, veja
MT_DEEPL_API_URL
.
- WEBLATE_MT_LIBRETRANSLATE_KEY¶
Enables LibreTranslate machine translation and sets
MT_LIBRETRANSLATE_KEY
- WEBLATE_MT_LIBRETRANSLATE_API_URL¶
Configures LibreTranslate API instance to use, see
MT_LIBRETRANSLATE_API_URL
.
- WEBLATE_MT_GOOGLE_KEY¶
Ativa Google Tradutor e define
MT_GOOGLE_KEY
- WEBLATE_MT_MICROSOFT_COGNITIVE_KEY¶
Ativa Tradutor dos Serviços Cognitivos da Microsoft e define
MT_MICROSOFT_COGNITIVE_KEY
- WEBLATE_MT_MICROSOFT_ENDPOINT_URL¶
Define
MT_MICROSOFT_ENDPOINT_URL
. Note que isto deve conter apenas o nome de domínio.
- WEBLATE_MT_MICROSOFT_REGION¶
Defina
MT_MICROSOFT_REGION
- WEBLATE_MT_MICROSOFT_BASE_URL¶
Defina
MT_MICROSOFT_BASE_URL
- WEBLATE_MT_MODERNMT_KEY¶
Ativa ModernMT e define
MT_MODERNMT_KEY
.
- WEBLATE_MT_MYMEMORY_ENABLED¶
Ativa tradução de máquina do MyMemory e define
MT_MYMEMORY_EMAIL
paraWEBLATE_ADMIN_EMAIL
.Exemplo:
environment: WEBLATE_MT_MYMEMORY_ENABLED: 1
- WEBLATE_MT_GLOSBE_ENABLED¶
Ativa tradução de máquina do Glosbe.
environment: WEBLATE_MT_GLOSBE_ENABLED: 1
- WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED¶
Ativa tradução de máquina do Serviço de Terminologia Microsoft.
environment: WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED: 1
- WEBLATE_MT_SAP_BASE_URL¶
- WEBLATE_MT_SAP_SANDBOX_APIKEY¶
- WEBLATE_MT_SAP_USERNAME¶
- WEBLATE_MT_SAP_PASSWORD¶
- WEBLATE_MT_SAP_USE_MT¶
Configura tradução de máquina do SAP Translation Hub.
environment: WEBLATE_MT_SAP_BASE_URL: "https://example.hana.ondemand.com/translationhub/api/v1/" WEBLATE_MT_SAP_USERNAME: "user" WEBLATE_MT_SAP_PASSWORD: "password" WEBLATE_MT_SAP_USE_MT: 1
Configurações de autenticação¶
- WEBLATE_AUTH_LDAP_SERVER_URI¶
- WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE¶
- WEBLATE_AUTH_LDAP_USER_ATTR_MAP¶
- WEBLATE_AUTH_LDAP_BIND_DN¶
- WEBLATE_AUTH_LDAP_BIND_PASSWORD¶
- WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS¶
- WEBLATE_AUTH_LDAP_USER_SEARCH¶
- WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER¶
- WEBLATE_AUTH_LDAP_USER_SEARCH_UNION¶
- WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER¶
Configuração de autenticação LDAP.
Exemplo para vinculação direta:
environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: uid=%(user)s,ou=People,dc=example,dc=net # map weblate 'full_name' to ldap 'name' and weblate 'email' attribute to 'mail' ldap attribute. # another example that can be used with OpenLDAP: 'full_name:cn,email:mail' WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
Exemplo para pesquisa e vinculação:
environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com
Exemplo para vinculação e pesquisa de união:
environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: ou=users,dc=example,dc=com|ou=otherusers,dc=example,dc=com
Exemplo com pesquisar e vincular ao Active Directory:
environment: WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: 0 WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: (sAMAccountName=%(user)s)
Veja também
- WEBLATE_SOCIAL_AUTH_GITHUB_KEY¶
- WEBLATE_SOCIAL_AUTH_GITHUB_SECRET¶
Ativa Autenticação por GitHub.
- WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY¶
- WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET¶
Ativa Autenticação por Bitbucket.
- WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY¶
- WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET¶
Ativa OAuth 2 do Facebook.
- WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY¶
- WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET¶
- WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS¶
- WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS¶
Ativa OAuth 2 do Google.
- WEBLATE_SOCIAL_AUTH_GITLAB_KEY¶
- WEBLATE_SOCIAL_AUTH_GITLAB_SECRET¶
- WEBLATE_SOCIAL_AUTH_GITLAB_API_URL¶
Ativa OAuth 2 do GitLab.
- WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY¶
- WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET¶
Ativa autenticação por Active Directory do Azure, veja Active Directory do Microsoft Azure.
- WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY¶
- WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET¶
- WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID¶
Ativa autenticação por Active Directory do Azure com suporte a Tenant, veja Active Directory do Microsoft Azure.
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY¶
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET¶
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY¶
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM¶
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL¶
- WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL¶
Ativa autenticação com Keycloak, veja a documentação.
Pode ativar a autenticação a usar serviços de autenticação de fornecedores Linux, a definir as seguintes variáveis para qualquer valor.
- WEBLATE_SOCIAL_AUTH_FEDORA¶
- WEBLATE_SOCIAL_AUTH_OPENSUSE¶
- WEBLATE_SOCIAL_AUTH_UBUNTU¶
Chaves SAML autoassinadas são geradas automaticamente na primeira inicialização do contentor. Caso queira usar chaves próprias, ponha o certificado e a chave privada em /app/data/ssl/saml.crt
e /app/data/ssl/saml.key
.
- WEBLATE_SAML_IDP_ENTITY_ID¶
- WEBLATE_SAML_IDP_URL¶
- WEBLATE_SAML_IDP_X509CERT¶
Configurações do provedor de identidade SAML, consulte Autenticação por SAML.
Configuração de banco de dados PostgreSQL¶
O banco de dados é criado por docker-compose.yml
, então essas configurações afetam os contentores Weblate e PostgreSQL.
Veja também
- POSTGRES_PASSWORD¶
Palavra-passe do PostgreSQL.
- POSTGRES_PASSWORD_FILE¶
Caminho para o ficheiro que contém a palavra-passe do PostgreSQL. Use como uma alternativa para POSTGRES_PASSWORD.
- POSTGRES_USER¶
Nome de utilizador do PostgreSQL.
- POSTGRES_DATABASE¶
Nome do banco de dados PostgreSQL.
- POSTGRES_HOST¶
Nome de host ou endereço IP do servidor PostgreSQL. O padrão é
database
.
- POSTGRES_PORT¶
Porta do servidor PostgreSQL. O padrão é nenhum (usa o valor padrão).
- POSTGRES_SSL_MODE¶
Configura como o PostgreSQL lida com SSL em conexão com o servidor, para as opções possíveis, consulte SSL Mode Descriptions
- POSTGRES_ALTER_ROLE¶
Configura o nome da função para alterar durante as migrações, consulte Configurar Weblate para usar PostgreSQL.
- POSTGRES_CONN_MAX_AGE¶
Novo na versão 4.8.1.
The lifetime of a database connection, as an integer of seconds. Use 0 to close database connections at the end of each request (this is the default behavior).
Enabling connection persistence will typically, cause more open connection to the database. Please adjust your database configuration prior enabling.
Aviso
This is currently experimental, not widely tested and not supported by the Weblate team.
Veja também
Configurações de backup de base de dados¶
Veja também
- WEBLATE_DATABASE_BACKUP¶
Configura o despejo diário do banco de dados a usar
DATABASE_BACKUP
. O padrão éplain
.
Configuração do servidor de cache¶
O uso do Redis é altamente recomendado pelo Weblate e deve fornecer uma instância do Redis ao executar o Weblate no Docker.
Veja também
- REDIS_HOST¶
O nome de host ou endereço IP do servidor Redis. O padrão é
cache
.
- REDIS_PORT¶
A porta do servidor Redis. O padrão é
6379
.
- REDIS_DB¶
O número do banco de dados Redis, o padrão é
1
.
- REDIS_PASSWORD¶
A palavra-passe do servidor Redis, não usada por padrão.
- REDIS_TLS¶
Ativa o uso de SSL para conexão Redis.
- REDIS_VERIFY_SSL¶
Pode ser usado para desativar a verificação de certificado SSL para conexão Redis.
Configuração do servidor de e-mail¶
Para fazer com que o e-mail de saída funcione, precisa fornecer um servidor de e-mail.
Exemplo de configuração TLS:
environment:
WEBLATE_EMAIL_HOST: smtp.example.com
WEBLATE_EMAIL_HOST_USER: user
WEBLATE_EMAIL_HOST_PASSWORD: pass
Exemplo de configuração SSL:
environment:
WEBLATE_EMAIL_HOST: smtp.example.com
WEBLATE_EMAIL_PORT: 465
WEBLATE_EMAIL_HOST_USER: user
WEBLATE_EMAIL_HOST_PASSWORD: pass
WEBLATE_EMAIL_USE_TLS: 0
WEBLATE_EMAIL_USE_SSL: 1
Veja também
- WEBLATE_EMAIL_HOST¶
Nome de host ou endereço IP do servidor de correio.
Veja também
WEBLATE_EMAIL_PORT
,WEBLATE_EMAIL_USE_SSL
,WEBLATE_EMAIL_USE_TLS
,EMAIL_HOST
- WEBLATE_EMAIL_PORT¶
Porta do servidor de correio, o padrão é 25.
Veja também
- WEBLATE_EMAIL_HOST_USER¶
Utilizador da autenticação por e-mail.
Veja também
- WEBLATE_EMAIL_HOST_PASSWORD¶
Palavra-passe da autenticação por e-mail.
Veja também
- WEBLATE_EMAIL_HOST_PASSWORD_FILE¶
Caminho para o ficheiro que contém a palavra-passe da autenticação por e-mail.
Veja também
- WEBLATE_EMAIL_USE_SSL¶
Se deve usar uma conexão TLS (segura) implícita ao falar com o servidor SMTP. Na maioria das documentações de e-mail, esse tipo de conexão TLS é conhecido como SSL. Geralmente é usado na porta 465. Se estiver a ter problemas, consulte a configuração TLS explícita
WEBLATE_EMAIL_USE_TLS
.Veja também
- WEBLATE_EMAIL_USE_TLS¶
Se deve usar uma conexão TLS (segura) ao falar com o servidor SMTP. Isso é usado para conexões TLS explícitas, geralmente na porta 587 ou 25. Se estiver a ter conexões travadas, consulte a configuração TLS implícita
WEBLATE_EMAIL_USE_SSL
.Veja também
- WEBLATE_EMAIL_BACKEND¶
Configura o back-end do Django para usar no envio de e-mails.
Veja também
Integração do site¶
- WEBLATE_GET_HELP_URL¶
Configura
GET_HELP_URL
.
- WEBLATE_STATUS_URL¶
Configura
STATUS_URL
.
- WEBLATE_PRIVACY_URL¶
Configures
PRIVACY_URL
.
Relatório de erro¶
É recomendado coletar erros da instalação sistematicamente, veja Coletando relatórios de erros.
Para ativar o suporte para Rollbar, defina o seguinte:
- ROLLBAR_KEY¶
O seu token de acesso ao servidor de postagem Rollbar.
- ROLLBAR_ENVIRONMENT¶
O seu ambiente Rollbar, o padrão é
production
.
Para ativar o suporte para Sentry, defina o seguinte:
- SENTRY_DSN¶
O seu DSN no Sentry.
- SENTRY_ENVIRONMENT¶
O seu ambiente no Sentry (opcional).
CDN de localização¶
- WEBLATE_LOCALIZE_CDN_URL¶
- WEBLATE_LOCALIZE_CDN_PATH¶
Novo na versão 4.2.1.
Configuração para CDN de localização JavaScript.
O
WEBLATE_LOCALIZE_CDN_PATH
é o caminho dentro do contentor. Ele deve ser armazenado no volume persistente e não no armazenamento temporário.Uma das possibilidades é armazenar isso dentro do diretório de dados do Weblate:
environment: WEBLATE_LOCALIZE_CDN_URL: https://cdn.example.com/ WEBLATE_LOCALIZE_CDN_PATH: /app/data/l10n-cdn
Nota
É responsável por configurar o serviço dos ficheiros gerados pelo Weblate, ele só armazena os ficheiros no local configurado.
Alterando apps, verificações, complementos ou correções automáticas ativados¶
Novo na versão 3.8-5.
A configuração embutida de verificações, complementos ou correções automática ativados pode ser ajustada pelas seguintes variáveis:
- WEBLATE_ADD_APPS¶
- WEBLATE_REMOVE_APPS¶
- WEBLATE_ADD_CHECK¶
- WEBLATE_REMOVE_CHECK¶
- WEBLATE_ADD_AUTOFIX¶
- WEBLATE_REMOVE_AUTOFIX¶
- WEBLATE_ADD_ADDONS¶
- WEBLATE_REMOVE_ADDONS¶
Exemplo:
environment:
WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace
WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon
Veja também
Configurações do contentor¶
- WEBLATE_WORKERS¶
Novo na versão 4.6.1.
Quantidade base de processos de trabalho em execução no contentor. Quando não definido, é determinado automaticamente na inicialização do contentor com base na quantidade de núcleos de CPU disponíveis.
É usado para determinar
CELERY_MAIN_OPTIONS
,CELERY_NOTIFY_OPTIONS
,CELERY_MEMORY_OPTIONS
,CELERY_TRANSLATE_OPTIONS
,CELERY_BACKUP_OPTIONS
,CELERY_BEAT_OPTIONS
eUWSGI_WORKERS
. Pode usar essas configurações para fazer o ajuste fino.
- CELERY_MAIN_OPTIONS¶
- CELERY_NOTIFY_OPTIONS¶
- CELERY_MEMORY_OPTIONS¶
- CELERY_TRANSLATE_OPTIONS¶
- CELERY_BACKUP_OPTIONS¶
- CELERY_BEAT_OPTIONS¶
Essas variáveis permitem que ajuste as opções do worker do Celery. Pode ser útil ajustar a simultaneidade (
--concurrency 16
) ou usar diferentes implementações de pool (--pool=gevent
).Por padrão, a quantidade de workers simultâneos é baseado em
WEBLATE_WORKERS
.Exemplo:
environment: CELERY_MAIN_OPTIONS: --concurrency 16
- UWSGI_WORKERS¶
Configura quantos workers uWSGI devem ser executados.
O padrão é
WEBLATE_WORKERS
.Exemplo:
environment: UWSGI_WORKERS: 32
- WEBLATE_SERVICE¶
Define quais serviços devem ser executados dentro do contentor. Use isto para Dimensionando horizontalmente.
Os seguintes serviços são definidos:
celery-beat
Agendador de tarefas do Celery, apenas uma instância deve estar em execução. Este contentor também é responsável pelas migrações da estrutura do banco de dados e deve ser iniciado antes dos demais.
celery-backup
Worker do Celery para backups, apenas uma instância deve estar em execução.
celery-celery
Worker genérico do Celery.
celery-memory
Worker do Celery para memória de tradução.
celery-notify
Worker do Celery para notificações.
celery-translate
Worker do Celery para tradução automática.
web
Servidor web.
Volumes de contentor Docker¶
Há dois volumes (dados e cacho) exportados pelo contentor Weblate. Os outros contentores de serviço (PostgreSQL ou Redis) também têm os volumes de dados deles, mas eles não são cobertos por este documento.
O volume de dados é usado para armazenar dados persistentes do Weblate, como repositórios clonados ou para personalizar a instalação do Weblate.
O posicionamento do volume Docker no sistema hospedeiro depende da configuração do Docker, mas geralmente é armazenado em /var/lib/docker/volumes/weblate-docker_weblate-data/_data/
(o caminho consiste no nome de seu diretório docker-compose, contentor e nomes de volume). No contentor, ele é montado como /app/data
.
O volume do cache é montado como /app/cache
e é usado para armazenar ficheiros estáticos. O conteúdo deles é recriado na inicialização do contentor e o volume pode ser montado a usar um sistema de ficheiros efêmero como tmpfs.
Ao criar os volumes manualmente, os diretórios devem pertencer ao UID 1000, pois é o utilizador usado dentro do contentor.
Veja também
Personalização adicional da configuração¶
Pode personalizar ainda mais a instalação do Weblate no volume de dados, veja Volumes de contentor Docker.
Ficheiros de configuração personalizados¶
Também pode sobrescrever a configuração em /app/data/settings-override.py
(veja Volumes de contentor Docker). Isso é executado no final das configurações embutidas, depois que todas as configurações de ambiente são carregadas e pode ajustá-las ou substituí-las.
Substituindo o logotipo e outros ficheiros estáticos¶
Novo na versão 3.8-5.
Os ficheiros estáticos que vêm com Weblate podem ser sobrescritos a colocar em /app/data/python/customize/static
(veja Volumes de contentor Docker). Por exemplo, criar /app/data/python/customize/static/favicon.ico
substituirá o favicon.
Dica
Os ficheiros são copiados para o local correspondente na inicialização do contentor, portanto, é necessário reiniciar o Weblate após alterar o conteúdo do volume.
Como alternativa, também pode incluir o próprio módulo (veja ../ customize) e adicioná-lo como um volume separado ao contentor do Docker, por exemplo:
weblate:
volumes:
- weblate-data:/app/data
- ./weblate_customization/weblate_customization:/app/data/python/weblate_customization
environment:
WEBLATE_ADD_APPS: weblate_customization
Adicionando os seus próprios módulos Python¶
Novo na versão 3.8-5.
Pode pôr os próprios módulos Python em /app/data/python/
(veja Volumes de contentor Docker) e eles podem ser carregados pelo Weblate, provavelmente a usar docker-custom -config.
Veja também
Instalando no Debian e Ubuntu¶
Requisitos de hardware¶
O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):
2 GB de RAM
2 núcleos de CPU
1 GB de espaço de armazenamento
Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).
Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.
O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.
Instalação¶
Requisitos do sistema¶
Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):
apt install \
libxml2-dev libxslt-dev libfreetype6-dev libjpeg-dev libz-dev libyaml-dev \
libcairo-dev gir1.2-pango-1.0 libgirepository1.0-dev libacl1-dev libssl-dev \
build-essential python3-gdbm python3-dev python3-pip python3-virtualenv virtualenv git
Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):
apt install tesseract-ocr libtesseract-dev libleptonica-dev
Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.
As instruções de instalação local:
# Web server option 1: NGINX and uWSGI
apt install nginx uwsgi uwsgi-plugin-python3
# Web server option 2: Apache with ``mod_wsgi``
apt install apache2 libapache2-mod-wsgi-py3
# Caching backend: Redis
apt install redis-server
# Database server: PostgreSQL
apt install postgresql postgresql-contrib
# SMTP server
apt install exim4
Módulos do Python¶
Dica
Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.
Crie o virtualenv para Weblate:
virtualenv --python=python3 ~/weblate-env
Ative o virtualenv para Weblate:
. ~/weblate-env/bin/activate
Instale o Weblate incluindo todas as dependências:
pip install Weblate
Instale o driver do banco de dados:
pip install psycopg2-binary
Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):
pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
Configurando o Weblate¶
Nota
Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate
). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o ficheiro
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Adjust the values in the new
settings.py
file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):
weblate migrate
Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):
weblate collectstatic
Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):
weblate compress
Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.
Agora pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.
Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou a usar weblate check --deploy, veja Configuração de produção.
Adicionando tradução¶
Abra a interface de administração (
http://localhost:8000/create/project/
) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.Tudo que precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.
Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.
Instalando no SUSE e openSUSE¶
Requisitos de hardware¶
O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):
2 GB de RAM
2 núcleos de CPU
1 GB de espaço de armazenamento
Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).
Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.
O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.
Instalação¶
Requisitos do sistema¶
Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):
zypper install \
libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
cairo-devel typelib-1_0-Pango-1_0 gobject-introspection-devel libacl-devel \
python3-pip python3-virtualenv python3-devel git
Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):
zypper install tesseract-ocr tesseract-devel leptonica-devel
Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.
As instruções de instalação local:
# Web server option 1: NGINX and uWSGI
zypper install nginx uwsgi uwsgi-plugin-python3
# Web server option 2: Apache with ``mod_wsgi``
zypper install apache2 apache2-mod_wsgi
# Caching backend: Redis
zypper install redis-server
# Database server: PostgreSQL
zypper install postgresql postgresql-contrib
# SMTP server
zypper install postfix
Módulos do Python¶
Dica
Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.
Crie o virtualenv para Weblate:
virtualenv --python=python3 ~/weblate-env
Ative o virtualenv para Weblate:
. ~/weblate-env/bin/activate
Instale o Weblate incluindo todas as dependências:
pip install Weblate
Instale o driver do banco de dados:
pip install psycopg2-binary
Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):
pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
Configurando o Weblate¶
Nota
Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate
). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o ficheiro
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Adjust the values in the new
settings.py
file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):
weblate migrate
Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):
weblate collectstatic
Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):
weblate compress
Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.
Agora pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.
Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou a usar weblate check --deploy, veja Configuração de produção.
Adicionando tradução¶
Abra a interface de administração (
http://localhost:8000/create/project/
) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.Tudo que precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.
Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.
Instalando no RedHat, Fedora e CentOS¶
Requisitos de hardware¶
O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):
2 GB de RAM
2 núcleos de CPU
1 GB de espaço de armazenamento
Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).
Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.
O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.
Instalação¶
Requisitos do sistema¶
Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):
dnf install \
libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
cairo-devel pango-devel gobject-introspection-devel libacl-devel \
python3-pip python3-virtualenv python3-devel git
Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):
dnf install tesseract-langpack-eng tesseract-devel leptonica-devel
Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.
As instruções de instalação local:
# Web server option 1: NGINX and uWSGI
dnf install nginx uwsgi uwsgi-plugin-python3
# Web server option 2: Apache with ``mod_wsgi``
dnf install apache2 apache2-mod_wsgi
# Caching backend: Redis
dnf install redis
# Database server: PostgreSQL
dnf install postgresql postgresql-contrib
# SMTP server
dnf install postfix
Módulos do Python¶
Dica
Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.
Crie o virtualenv para Weblate:
virtualenv --python=python3 ~/weblate-env
Ative o virtualenv para Weblate:
. ~/weblate-env/bin/activate
Instale o Weblate incluindo todas as dependências:
pip install Weblate
Instale o driver do banco de dados:
pip install psycopg2-binary
Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):
pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
Configurando o Weblate¶
Nota
Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate
). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o ficheiro
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Adjust the values in the new
settings.py
file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):
weblate migrate
Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):
weblate collectstatic
Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):
weblate compress
Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.
Agora pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.
Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou a usar weblate check --deploy, veja Configuração de produção.
Adicionando tradução¶
Abra a interface de administração (
http://localhost:8000/create/project/
) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.Tudo que precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.
Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.
Instalando no macOS¶
Requisitos de hardware¶
O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):
2 GB de RAM
2 núcleos de CPU
1 GB de espaço de armazenamento
Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).
Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.
O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.
Instalação¶
Requisitos do sistema¶
Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):
brew install python pango cairo gobject-introspection libffi glib libyaml
pip3 install virtualenv
Certifique-se de que o pip será capaz de encontrar a versão do libffi
fornecida pelo homebrew – isso será necessário durante a etapa de compilação da instalação.
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):
brew install tesseract
Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.
As instruções de instalação local:
# Web server option 1: NGINX and uWSGI
brew install nginx uwsgi
# Web server option 2: Apache with ``mod_wsgi``
brew install httpd
# Caching backend: Redis
brew install redis
# Database server: PostgreSQL
brew install postgresql
Módulos do Python¶
Dica
Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.
Crie o virtualenv para Weblate:
virtualenv --python=python3 ~/weblate-env
Ative o virtualenv para Weblate:
. ~/weblate-env/bin/activate
Instale o Weblate incluindo todas as dependências:
pip install Weblate
Instale o driver do banco de dados:
pip install psycopg2-binary
Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):
pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
Configurando o Weblate¶
Nota
Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate
). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o ficheiro
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Adjust the values in the new
settings.py
file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):
weblate migrate
Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):
weblate collectstatic
Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):
weblate compress
Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.
Agora pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.
Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou a usar weblate check --deploy, veja Configuração de produção.
Adicionando tradução¶
Abra a interface de administração (
http://localhost:8000/create/project/
) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.Tudo que precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.
Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.
Instalando a partir do código-fonte¶
Siga as instruções de instalação do seu sistema primeiro:
Pegue o código-fonte mais recente do Weblate a usar Git (ou baixe um tarball e descompacte-o):
git clone https://github.com/WeblateOrg/weblate.git weblate-src
Alternativamente, pode usar ficheiros lançados. Pode descarregá-los no nosso site <https://weblate.org/>. Essas descarregas são assinadas criptograficamente, consulte Verificar assinaturas de lançamento.
Instale o código atual do Weblate no virtualenv:
. ~/weblate-env/bin/activate pip install -e weblate-src
Copie
weblate/settings_example.py
paraweblate/settings.py
.Adjust the values in the new
settings.py
file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.Crie o banco de dados usado pelo Weblate, veja Configuração de banco de dados para o Weblate.
Construa tabelas Django, ficheiros estáticos e dados iniciais (veja Preencher o banco de dados e Servir ficheiros estáticos):
weblate migrate weblate collectstatic weblate compress weblate compilemessages
Nota
Esta etapa deve ser repetida sempre que atualizar o repositório.
Instalando no OpenShift¶
Com o modelo OpenShift Weblate, pode pôr a sua instância pessoal do Weblate em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão e declarações de volume persistentes são usadas.
Pode encontrar o modelo em <https://github.com/WeblateOrg/openshift/>.
Instalação¶
Os exemplos a seguir presumem que tem um ambiente OpenShift v3.x funcional, com a ferramenta cliente oc
instalada. Confira a documentação do OpenShift para obter instruções.
O template.yml
é adequado para executar todos os componentes em OpenShift. Existe também template-external-postgresql.yml
que não inicia um servidor PostgreSQL e permite que configure um servidor PostgreSQL externo.
Console web¶
Copie o conteúdo bruto de template.yml e importe-o ao seu projeto, então use o botão Create
no console web do OpenShift para criar a sua aplicação. O console web solicitará os valores de todos os parâmetros usados pelo modelo.
CLI¶
Para enviar o modelo Weblate para a biblioteca de modelos do seu projeto atual, passe o ficheiro template.yml
com o seguinte comando:
$ oc create -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
-n <PROJECT>
O modelo agora está disponível para seleção a usar o console web ou o CLI.
Os parâmetros que pode substituir estão listados na secção de parâmetros do modelo. Pode listá-los com a CLI a usar o seguinte comando e a especificar o ficheiro a ser usado:
$ oc process --parameters -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml
# If the template is already uploaded
$ oc process --parameters -n <PROJECT> weblate
Também pode usar a CLI para processar modelos e usar a configuração gerada para criar objetos imediatamente.
$ oc process -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
-p APPLICATION_NAME=weblate \
-p WEBLATE_VERSION=4.3.1-1 \
-p WEBLATE_SITE_DOMAIN=weblate.app-openshift.example.com \
-p POSTGRESQL_IMAGE=docker-registry.default.svc:5000/openshift/postgresql:9.6 \
-p REDIS_IMAGE=docker-registry.default.svc:5000/openshift/redis:3.2 \
| oc create -f
A instância do Weblate deve estar disponível após a migração e implantação com sucesso no parâmetro WEBLATE_SITE_DOMAIN
especificado.
Após a configuração do contentor, pode entrar como utilizador admin com a palavra-passe fornecida em WEBLATE_ADMIN_PASSWORD
, ou uma palavra-passe aleatória gerada na primeira inicialização se não tiver sido definida.
Para redefinir a palavra-passe do admin, reinicie o contentor com WEBLATE_ADMIN_PASSWORD
definido para a nova palavra-passe no respectivo Secret
.
$ oc delete all -l app=<APPLICATION_NAME>
$ oc delete configmap -l app= <APPLICATION_NAME>
$ oc delete secret -l app=<APPLICATION_NAME>
# ATTTENTION! The following command is only optional and will permanently delete all of your data.
$ oc delete pvc -l app=<APPLICATION_NAME>
$ oc delete all -l app=weblate \
&& oc delete secret -l app=weblate \
&& oc delete configmap -l app=weblate \
&& oc delete pvc -l app=weblate
Configuração¶
Ao processar o modelo, um respectivo ConfigMap
será criado e poderá ser usado para personalizar a imagem Weblate. O ConfigMap
é montado diretamente como variáveis de ambiente e dispara uma nova implantação toda vez que é alterado. Para mais opções de configuração, consulte Variáveis de ambiente do Docker para uma lista completa de variáveis de ambiente.
Instalando no Kubernetes¶
Nota
Este guia procura colaboradores experientes com o Kubernetes para abordar a configuração com mais detalhes.
Com o chart de Kubernetes Helm, pode pôr a sua instância pessoal do Weblate em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão e declarações de volume persistentes são usadas.
Pode encontrar o chart em <https://github.com/WeblateOrg/helm/> e pode ser exibido em <https://artifacthub.io/packages/helm/weblate/weblate>.
Instalação¶
helm repo add weblate https://helm.weblate.org
helm install my-release weblate/weblate
Configuração¶
Para mais opções de configuração, consulte Variáveis de ambiente do Docker para uma lista completa de variáveis de ambiente.
Dependendo da sua configuração e experiência, escolha um método de instalação apropriado para si:
Instalando a usar Docker, recomendado para configurações de produção.
Instalação virtualenv, recomendada para configurações de produção:
Instalando a partir do código-fonte, recomendado para o desenvolvimento.
Requisitos de software¶
Sistema operacional¶
Weblate é conhecido por funcionar no Linux, FreeBSD e macOS. Outros sistemas como o Unix provavelmente funcionarão também.
O Weblate não é suportado no Windows. Mas ainda pode funcionar e patches são aceitos alegremente.
Outros serviços¶
Weblate está a usar outros serviços para a operação dele. Precisará pelo menos os seguintes serviços em execução:
Servidor de banco de dados PostgreSQL, consulte Configuração de banco de dados para o Weblate.
Servidor Redis para cache e fila de tarefas, consulte Tarefas de fundo a usar o Celery.
Servidor SMTP para e-mails de saída, consulte Configuração de e-mail de saída.
Dependências Python¶
Weblate é escrito em Python e tem suporte de Python 3.6 ou mais novo. Pode instalar dependências a usar pip ou dos pacotes de distribuição deles, a lista completa está disponível em requirements.txt
.
As dependências mais notáveis:
- Django
- Celery
- Translate Toolkit
- translation-finder
- Python Social Auth
- Django REST Framework
Dependências opcionais¶
Os módulos seguintes são necessários para alguns recursos do Weblate. Pode encontrar todos em requirements-optional.txt
.
Mercurial
(opcional para suporte de repositórios Mercurial)phply
(opcional para suporte de PHP)tesserocr
(opcional para OCR de capturas de ecrã)akismet
(opcional para a sugestão de proteção de spam)ruamel.yaml
(opcional para Ficheiros YAML)Zeep
(opcional para Serviço de Terminologia Microsoft)aeidon
(opcional para Ficheiros de legenda)
Dependências de backend de banco de dados¶
O Weblate tem suporte de PostgreSQL, MySQL e MariaDB, consulte Configuração de banco de dados para o Weblate e a documentação dos backends para mais detalhes.
Outros requisitos do sistema¶
As dependências seguintes devem ser instaladas no sistema:
Git
- Pango, Cairo e ficheiros de cabeçalho relacionados e dados de introspecção gir
https://cairographics.org/, https://pango.gnome.org/, veja Pango e Cairo
git-review
(opcional para suporte de Gerrit)git-svn
(opcional para suporte de Subversion)tesseract
e os dados dele (opcional para OCR de capturas de ecrã)licensee
(opcional para detetar a licença ao criar o componente)
Dependências de tempo de compilação¶
Para compilar alguns das dependências Python, pode precisar instalar as dependências deles. Isso depende de como instala-as, por isso consulte pacotes individuais para obter documentação. Não precisará deles se usar Wheels
pré-compilado durante a instalação a usar pip
ou quando usar pacotes de distribuição.
Pango e Cairo¶
Alterado na versão 3.7.
O Weblate usa Pango e Cairo para renderizar widgets de bitmap (ver Promovendo a tradução) e verificações de renderização (ver Gerir letras). Para instalar as ligações Python corretamente para esses, precisa de instalar bibliotecas de sistemas primeiro - precisa tanto do Cairo quanto do Pango, que por sua vez precisam de GLib. Todos esses devem ser instalados com ficheiros de desenvolvimento e dados de introspecção GObject.
Verificar assinaturas de lançamento¶
Os lançamentos do Weblate são criptograficamente assinados pelo programador que os lançou. Atualmente é Michal Čihař. A impressão digital da chave PGP é:
63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D
e pode obter mais informações de identificação de <https://keybase.io/nijel>.
Deve verificar se a assinatura corresponde ao ficheiro que descarregou. Desta forma, pode ter certeza de que está a usar o mesmo código que foi lançado. Também deve verificar a data da assinatura para ter certeza de que descarregou a versão mais recente.
Cada arquivo é acompanhado de ficheiros .asc
, os quais contêm a assinatura PGP para ele. Uma vez que tenha ambos na mesma pasta, pode verificar a assinatura:
$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg: using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Can't check signature: public key not found
Como pode ver, o GPG reclama que não conhece a chave pública. Neste ponto deve fazer um dos seguintes passos:
Use wkd para descarregar a chave:
$ gpg --auto-key-locate wkd --locate-keys michal@cihar.com
pub rsa4096 2009-06-17 [SC]
63CB1DF1EF12CF2AC0EE5A329C27B31342B7511D
uid [ultimate] Michal Čihař <michal@cihar.com>
uid [ultimate] Michal Čihař <nijel@debian.org>
uid [ultimate] [jpeg image of size 8848]
uid [ultimate] Michal Čihař (Braiins) <michal.cihar@braiins.cz>
sub rsa4096 2009-06-17 [E]
sub rsa4096 2015-09-09 [S]
Descarregue o chaveiro do servidor do Michal e importe-o com:
$ gpg --import wmxth3chu9jfxdxywj1skpmhsj311mzm
Descarregue e importe a chave de um dos servidores principais:
$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: key 9C27B31342B7511D: "Michal Čihař <michal@cihar.com>" imported
gpg: Total number processed: 1
gpg: unchanged: 1
Isso vai melhorar a situação um pouco - neste momento pode verificar que a assinatura da chave dada está correta, mas ainda não pode confiar no nome usado na chave:
$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg: using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg: aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg: aka "[jpeg image of size 8848]" [ultimate]
gpg: aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D
O problema aqui é que qualquer um poderia emitir a chave com este nome. Precisa garantir que a chave é realmente a propriedade da pessoa mencionada. O Manual de Privacidade do GNU aborda este tópico no capítulo Validating other keys on your public keyring. O método mais confiável é de conhecer o programador pessoalmente e trocar impressões digitais importantes, no entanto também pode confiar na rede de confiança. Dessa forma, pode confiar na chave transitivamente através de assinaturas de outros, que conheceram o programador pessoalmente.
Uma vez que a chave seja confiável, o aviso não ocorrerá:
$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Sun Mar 3 16:43:15 2019 CET
gpg: using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg: aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg: aka "[jpeg image of size 8848]" [ultimate]
gpg: aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]
Se a assinatura for inválida (o ficheiro foi alterado), obteria um erro claro, independentemente do fato de que a chave é confiável ou não:
$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: Signature made Sun Mar 3 16:43:15 2019 CET
gpg: using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: BAD signature from "Michal Čihař <michal@cihar.com>" [ultimate]
Permissões do sistema de ficheiros¶
O processo Weblate precisa ser capaz de ler e escrever para o diretório onde mantém os dados – DATA_DIR
. Todos os ficheiros dentro deste diretório devem ser de propriedade e graváveis pelo utilizador que executa todos os processos do Weblate (geralmente WSGI e Celery, veja Executar o servidor e Tarefas de fundo a usar o Celery).
A configuração predefinida põe-os na mesma árvore que as fontes do Weblate, no entanto, pode preferir movê-los para um local melhor, como /var/lib/weblate
.
O Weblate tenta criar esses diretórios automaticamente, mas ele falhará quando não tiver permissões para fazê-lo.
Também deve tomar cuidado ao executar Comandos de gerência, pois eles devem ser executados sob o mesmo utilizador que o Weblate em si está a ser executado, caso contrário, permissões em alguns ficheiros podem estar erradas.
No contentor Docker, todos os ficheiros no volume /app/data
tem de ter como dono o utilizador weblate dentro do contentor (UID 1000).
Veja também
Configuração de banco de dados para o Weblate¶
Recomenda-se a executar o Weblate com um servidor de banco de dados PostgreSQL.
Veja também
Usar um poderoso mecanismo de banco de dados, Databases, Migrando de outros bancos de dados para o PostgreSQL
PostgreSQL¶
PostgreSQL é geralmente a melhor escolha para sites baseados em Django. É o banco de dados de referência usado para implementar a camada de banco de dados Django.
Nota
O Weblate usa a extensão trigram que deve ser instalada separadamente em alguns casos. Procure por postgresql-contrib
ou um pacote com nome similar.
Veja também
Criar um banco de dados no PostgreSQL¶
Geralmente é uma boa ideia executar o Weblate num banco de dados separado e separar a conta do utilizador:
# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"
# Create a database user called "weblate"
sudo -u postgres createuser --superuser --pwprompt weblate
# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate
Dica
Se não quiser fazer do utilizador do Weblate um superutilizador no PostgreSQL, pode omiti-lo. Nesse caso, terá que executar algumas das etapas de migração manualmente como um superutilizador do PostgreSQL no esquema Weblate usará:
CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA weblate;
Configurar Weblate para usar PostgreSQL¶
O trecho settings.py
para PostgreSQL:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Name of role to alter to set parameters in PostgreSQL,
# use in case role name is different than user used for authentication.
# "ALTER_ROLE": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
}
}
A migração do banco de dados executa ALTER ROLE na função de banco de dados usada pelo Weblate. Na maioria dos casos, o nome da função corresponde ao nome de utilizador. Em configurações mais complexas, o nome da função é diferente do nome de utilizador e obterá um erro sobre a função não existente durante a migração do banco de dados (psycopg2.errors.UndefinedObject: role "weblate@hostname" does not exist
). Isso é conhecido por acontecer com o Azure Database para PostgreSQL, mas não está limitado a este ambiente. Defina ALTER_ROLE
para alterar o nome da função que o Weblate deve alterar durante a migração do banco de dados.
MySQL e MariaDB¶
Dica
Alguns recursos do Weblate terão melhor desempenho com PostgreSQL. Isso inclui a memória de pesquisa e tradução, que ambos utilizam recursos de texto completo no banco de dados e a implementação do PostgreSQL é superior.
Weblate também pode ser usado com MySQL ou MariaDB, consulte MySQL notes e MariaDB notes para ressalvas ao uso do Django com elas. or causa das limitações, é recomendado usar PostgreSQL para novas instalações.
O Weblate requer MySQL pelo menos 5.7.8 ou MariaDB pelo menos 10.2.7.
A configuração seguinte é recomendada para Weblate:
Use o conjunto de caracteres
utf8mb4
para permitir a representação de planos Unicode mais altos (por exemplo, emojis).Configure o servidor com
innodb_large_prefix
para permitir índices mais longos em campos de texto.Defina o nível de isolamento para
READ COMMITTED
.O modo SQL deve ser definido como
STRICT_TRANS_TABLES
.
MySQL 8.x, MariaDB 10.5.x ou mais recente têm uma configuração padrão razoável, de modo que nenhum ajuste de servidor deve ser necessário e tudo o que é necessário pode ser configurado no lado do cliente.
Abaixo está um exemplo /etc/my.cnf.d/server.cnf
para um servidor com 8 GB de RAM. Essas configurações devem ser suficientes para a maioria das instalações. MySQL e MariaDB têm ajustáveis que irão aumentar o desempenho do seu servidor que são considerados desnecessários, a menos que esteja a planejar ter uma grande quantidade de utilizadores simultâneos a acessar o sistema. Consulte a documentação de vários fornecedores sobre esses detalhes.
É absolutamente crítico para reduzir problemas durante a instalação que a configuração innodb_file_per_table
esteja configurada corretamente e o MySQL/MariaDB reiniciado antes de iniciar a instalação do Weblate.
[mysqld]
character-set-server = utf8mb4
character-set-client = utf8mb4
collation-server = utf8mb4_unicode_ci
datadir=/var/lib/mysql
log-error=/var/log/mariadb/mariadb.log
innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_file_per_table=1
innodb_buffer_pool_size=2G
sql_mode=STRICT_TRANS_TABLES
Dica
No caso de estar a receber o erro #1071 - Specified key was too long; max key length is 767 bytes
, atualize a sua configuração para incluir as configurações innodb
acima e reinicie a sua instalação.
Dica
No caso de estar a receber o erro #2006 - MySQL server has gone away
, configurar CONN_MAX_AGE
pode ajudar.
Configurando Weblate para usar MySQL/MariaDB¶
O trecho de settings.py
para MySQL e MariaDB:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "127.0.0.1",
# Set to empty string for default
"PORT": "3306",
# In case you wish to use additional
# connection options
"OPTIONS": {},
}
}
Também deve criar a conta de utilizador weblate
no MySQL ou MariaDB antes de iniciar a instalação. Use os comandos abaixo para fazer isso:
GRANT ALL ON weblate.* to 'weblate'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Outras configurações¶
Configuração de e-mail de saída¶
O Weblate envia e-mails em várias ocasiões - para a ativação de contas e sobre várias notificações configuradas pelos utilizadores. Para isso, precisa de acesso a um servidor de SMTP.
A configuração do servidor de e-mail é configurada a usar essas configurações: EMAIL_HOST
, EMAIL_HOST_PASSWORD
, EMAIL_USE_SSL
, EMAIL_USE_TLS
, EMAIL_HOST_USER
e EMAIL_PORT
. Os nomes deles são bastante autoexplicativos, mas pode encontrar mais informações na documentação do Django.
Dica
Caso tenha erro sobre autenticação não suportada (por exemplo, SMTP AUTH extension not supported by server
), é provavelmente causada pelo uso de conexão insegura e o servidor se recusa a autenticar dessa forma. Tente ativar EMAIL_USE_TLS
nesse caso.
Executar por trás de um proxy reverso¶
Vários recursos no Weblate dependem de ser capaz de obter o endereço IP do cliente. Isso inclui Limitação de taxa, Proteção contra spam ou Registo de auditoria.
Na configuração predefinida, o Weblate analisa o endereço IP de REMOTE_ADDR
que é definido pelo manipulador WSGI.
Se estiver a usar um proxy reverso, este campo provavelmente conterá o seu endereço. Precisa configurar o Weblate para confiar em cabeçalhos HTTP adicionais e analisar o endereço IP destes. Isso não pode ser ativado por predefinição, porque permitiria a falsificação de endereços IP para instalações que não usam um proxy reverso. Ativar IP_BEHIND_REVERSE_PROXY
pode ser suficiente para as configurações mais usuais, mas podia precisar de ajustar IP_PROXY_HEADER
e IP_PROXY_OFFSET
também.
Proxy HTTP¶
O Weblate executa comandos VCS e esses que aceitam a configuração proxy do ambiente. A abordagem recomendada é definir configurações de proxy em settings.py
:
import os
os.environ["http_proxy"] = "http://proxy.example.com:8080"
os.environ["HTTPS_PROXY"] = "http://proxy.example.com:8080"
Veja também
Ajustar a configuração¶
Veja também
Copie weblate/settings_example.py
para weblate/settings.py
e ajuste-o para corresponder à configuração. Provavelmente irá ajustar as opções a seguir:
ADMINS
Lista de administradores de sites para receber notificações quando algo dá errado, por exemplo, notificações em mesclagens fracassadas ou erros de Django.
Veja também
ALLOWED_HOSTS
Precisa definir isso para listar os hosts que o seu site deve servir. Por exemplo:
ALLOWED_HOSTS = ["demo.weblate.org"]Alternativamente, pode incluir curinga:
ALLOWED_HOSTS = ["*"]
SESSION_ENGINE
Configure como as suas sessões serão armazenadas. Caso mantenha o mecanismo de backend do banco de dados predefinido, deve agendar: weblate clearsessions para remover dados de sessão obsoletos do banco de dados.
Se estiver a usar o Redis como cache (veja Ativar o cache) é recomendado também usá-lo para sessões:
SESSION_ENGINE = "django.contrib.sessions.backends.cache"Veja também
DATABASES
Conetividade ao servidor de banco de dados, verifique a documentação do Django para obter mais detalhes.
Veja também
Configuração de banco de dados para o Weblate,
DATABASES
, Databases
DEBUG
Desative isto para qualquer servidor de produção. Com o modo de depuração ativado, o Django mostrará backtraces em caso de erro aos utilizadores, quando desativá-lo, erros serão enviados por e-mail para
ADMINS
(veja acima).O modo de depuração também desacelera o Weblate, já que o Django armazena muito mais informações internamente neste caso.
Veja também
DEFAULT_FROM_EMAIL
Endereço de remetente de e-mail para e-mail de saída, por exemplo, e-mails de registo.
Veja também
SECRET_KEY
Chave usada por Django para assinar informações em cookies, consulte Chave secreta do Django para obter mais informações.
Veja também
SERVER_EMAIL
E-mail usado como endereço de remetente para envio de e-mails ao administrador, por exemplo, notificações em mesclagens falhadas.
Veja também
Preencher o banco de dados¶
Depois que a sua configuração estiver pronta, pode executar weblate migrate
para criar a estrutura do banco de dados. Agora deve ser capaz de criar projetos de tradução a usar a interface administrativa.
Caso quere executar uma instalação não interativamente, pode usar weblate migrate --noinput
e depois criar um utilizador administrativo pelo comando createadmin
.
Uma vez feito, também deve verificar o Relatório de desempenho na interface administrativa, o que lhe dará dicas de configuração potencial não ideal no seu site.
Veja também
Configuração de produção¶
Para uma configuração de produção, deve realizar ajustes descritos nas seções a seguir. As configurações mais críticas acionarão um aviso, que é indicado por um ponto de exclamação na barra superior se esitver conectado como um superutilizador:

Também é recomendado inspecionar verificações desencadeadas por Django (embora possa não precisar corrigir todas):
weblate check --deploy
Também pode revisar a mesma lista de verificação na Interface de gestão.
Veja também
Desativar o modo de depuração¶
Desative o modo de depuração do Django (DEBUG
) com:
DEBUG = False
Com o modo de depuração ativado, o Django armazena todas as consultas executadas e mostra aos utilizadores backtraces de erros, o que não é desejado numa configuração de produção.
Veja também
Configurar administradores corretamente¶
Defina os endereços de administração corretos à configuração ADMINS
para definir quem receberá e-mails caso algo dê errado no servidor, por exemplo:
ADMINS = (("Your Name", "your_email@example.com"),)
Veja também
Definir domínio correto do site¶
Ajuste o nome e o domínio do site na interface administrativa, caso contrário, ligações no RSS ou e-mails de registo não funcionarão. Isto é configurado usando SITE_DOMAIN
que deve conter o nome de domínio do site.
Alterado na versão 4.2: Antes da versão 4.2, a estrutura de sites do Django era usada em vez disso, consulte The “sites” framework.
Configurar HTTPS corretamente¶
É fortemente recomendado executar Weblate a com o protocolo criptografado HTTPS. Depois de ativá-lo, deve definir ENABLE_HTTPS
nas configurações:
ENABLE_HTTPS = True
Dica
Pode também configurar o HSTS, consulte SSL/HTTPS para obter mais detalhes.
Definir SECURE_HSTS_SECONDS corretamente¶
Se o seu site for servido sobre SSL, deve considerar definir um valor para :django:`SECURE_HSTS_SECONDS` no settings.py
para ativar HTTP Strict Transport Security. Por padrão, ele está definido para 0 como mostrado abaixo.
SECURE_HSTS_SECONDS = 0
Se for definido como um valor inteiro não-zero, o cabeçalho django.middleware.security.SecurityMiddleware
define o cabeçalho HTTP Strict Transport Security em todas as respostas que ainda não o possuem.
Aviso
Definir isto incorretamente pode quebrar irreversivelmente (por algum tempo) o seu site. Leia primeiro a documentação HTTP Strict Transport Security.
Usar um poderoso mecanismo de banco de dados¶
Por favor, use PostgreSQL para um ambiente de produção, consulte Configuração de banco de dados para o Weblate para obter mais informações.
Use um local adjacente para executar o servidor de banco de dados, caso contrário, o desempenho ou confiabilidade da rede podem arruinar a sua experiência com o Weblate.
Verifique o desempenho do servidor de banco de dados ou ajuste a sua configuração, por exemplo, usando PGTune.
Ativar o cache¶
Se for possível, use Redis do Django e ajuste a variável de configuração CACHES
, por exemplo:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
# If redis is running on same host as Weblate, you might
# want to use unix sockets instead:
# 'LOCATION': 'unix:///var/run/redis/redis.sock?db=0',
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PARSER_CLASS": "redis.connection.HiredisParser",
},
}
}
Dica
Caso altere as configurações do Redis para o cache, pode ser necessário ajustá-las também para o Celery, consulte Tarefas de fundo a usar o Celery.
Veja também
Cache de avatares¶
Além do cache de Django, Weblate realiza cache de avatares. Recomenda-se usar um cache separado, baseado em ficheiros para este fim:
CACHES = {
"default": {
# Default caching backend setup, see above
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "unix:///var/run/redis/redis.sock?db=0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PARSER_CLASS": "redis.connection.HiredisParser",
},
},
"avatar": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
"TIMEOUT": 604800,
"OPTIONS": {
"MAX_ENTRIES": 1000,
},
},
}
Veja também
ENABLE_AVATARS
,
AVATAR_URL_PREFIX
,
Avatares,
Ativar o cache,
Django’s cache framework
Configurar envio de e-mail¶
O Weblate precisa enviar e-mails em várias ocasiões e esses e-mails devem ter um endereço de remetente correto, por favor, configure :configuração:`SERVER_EMAIL` e DEFAULT_FROM_EMAIL
para combinar com o seu ambiente, por exemplo:
SERVER_EMAIL = "admin@example.org"
DEFAULT_FROM_EMAIL = "weblate@example.org"
Nota
Para desativar o envio de e-mails pelo Weblate, defina EMAIL_BACKEND
a django.core.mail.backends.dummy.EmailBackend
.
Isso desativará toda a entrega de e-mail, incluindo e-mails de registo ou redefinição de palavra-passe.
Configuração de hosts permitidos¶
Django requer ALLOWED_HOSTS
para manter uma lista de nomes de domínio que o seu site pode servir, deixá-lo vazio bloqueará todas solicitações.
Caso isso não esteja configurado para corresponder ao seu servidor HTTP, terá erros como Invalid HTTP_HOST header: '1.1.1.1'. Pode ter que adicionar '1.1.1.1' ao ALLOWED_HOSTS.
Dica
No contentor Docker, isso está disponível como WEBLATE_ALLOWED_HOSTS
.
Chave secreta do Django¶
A configuração SECRET_KEY
é usada pelo Django para assinar cookies e você deve realmente gerar o seu próprio valor em vez de usar o da configuração do exemplo.
Pode gerar uma nova chave por weblate/examples/generate-secret-key
, que vem com o Weblate.
Veja também
Directório inicial¶
Alterado na versão 2.1: Isso não é mais necessário, agora o Weblate armazena todos os seus dados em DATA_DIR
.
O diretório home do utilizador que executa o Weblate deve existir e ser gravável por este utilizador. Isso é especialmente necessário se quiser usar o SSH para acessar repositórios privados, mas o Git pode precisar acessar este diretório também (dependendo da versão git que usa).
Pode alterar o diretório usado pelo Weblate em settings.py
, por exemplo, para defini-lo como diretório configuration
na árvore do Weblate:
os.environ["HOME"] = os.path.join(BASE_DIR, "configuration")
Nota
No Linux e em outros sistemas como UNIX, o caminho ao diretório home do utilizador é definido em /etc/passwd
. Muitas distribuições usam um diretório sem permissão de escrita como predefinição para utilizadores para servir conteúdo web (como apache
, www-data
ou wwwrun
), então tem que executar o Weblate sob um utilizador diferente ou alterar essa configuração.
Veja também
Carregar modelos¶
Recomenda-se usar um carregador de modelo em cache para Django. Armazena modelos analisados e evita a necessidade de analizar cada solicitação. Pode configurá-lo a usar o trecho a seguir (a configuração loaders
é importante aqui):
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [
os.path.join(BASE_DIR, "templates"),
],
"OPTIONS": {
"context_processors": [
"django.contrib.auth.context_processors.auth",
"django.template.context_processors.debug",
"django.template.context_processors.i18n",
"django.template.context_processors.request",
"django.template.context_processors.csrf",
"django.contrib.messages.context_processors.messages",
"weblate.trans.context_processors.weblate_context",
],
"loaders": [
(
"django.template.loaders.cached.Loader",
[
"django.template.loaders.filesystem.Loader",
"django.template.loaders.app_directories.Loader",
],
),
],
},
},
]
Veja também
Executar tarefas de manutenção¶
Para um desempenho ideal, é uma boa ideia executar algumas tarefas de manutenção em segundo plano. Isso agora é feito automaticamente por Tarefas de fundo a usar o Celery e abrange as seguintes tarefas:
Verificação de saúde da configuração (de hora em hora).
Realização de commits de alterações pendentes (de hora em hora), consulte Commits adiados e
commit_pending
.Atualização de alertas de componentes (dialy).
Atualização dos ramos remotos (nightly), consulte
AUTO_UPDATE
.Backup de memória de tradução para JSON (diariamente), consulte
dump_memory
.Tarefas de manutenção de texto completo e banco de dados (tarefas diárias e semanais), consulte
cleanuptrans
.
Alterado na versão 3.2: Desde a versão 3.2, a maneira predefinida de executar essas tarefas é usar o Celery e o Weblate já vem com a configuração adequada, consulte Tarefas de fundo a usar o Celery.
Codificação e localidades do sistema¶
As localidades do sistema devem ser configuradas para UTF-8. Na maioria das distribuições Linux, esta é a configuração predefinida. Se não é o caso no seu sistema, altere as localidades para a variante UTF-8.
Por exemplo, a editar /etc/default/locale
e a definir lá LANG="C.UTF-8"
.
Em alguns casos, os serviços individuais têm configuração separada para locais. Isso varia entre a distribuição e os servidores da web, portanto, verifique a documentação dos pacotes do servidor da web para isso.
Apache no Ubuntu usa /etc/apache2/envvars
:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Apache no CentOS usa /etc/sysconfig/httpd
(ou /opt/rh/httpd24/root/etc/sysconfig/httpd
):
LANG='en_US.UTF-8'
Usar uma autoridade certificadora personalizada¶
O Weblate verifica os certificados SSL durante as solicitações HTTP. Caso esteja a usar uma autoridade de certificação personalizada que não seja confiável em maços predefinidos, terá que adicionar o seu certificado como confiável.
A abordagem preferida é fazer isso no nível do sistema. Consulte a documentação da sua distro para mais detalhes (por exemplo, no Debian isso pode ser feito a por o certificado da AC em /usr/local/share/ca-certificates/
e executando update-ca-certificates).
Uma vez feito isso, as ferramentas do sistema confiarão no certificado e isso inclui o Git.
Para código em Python, precisará configurar solicitações para usar o pacote de AC do sistema em vez do fornecido . Isso pode ser conseguido pondo os seguintes trechos em settings.py
(o caminho é específico do Debian):
import os
os.environ["REQUESTS_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt"
Comprimir os ativos do cliente¶
O Weblate vem com um monte de ficheiros JavaScript e CSS. Por razões de desempenho, é bom comprimi-los antes de enviar para um cliente. Na configuração predefinida isso é feito rapidamente ao custo de pouca sobrecarga. Em grandes instalações, recomenda-se ativar o modo de compressão offline. Isso precisa ser feito na configuração e a compressão tem que ser acionada em cada atualização do Weblate.
A mudança da configuração é simples ao ativar django.conf.settings.COMPRESS_OFFLINE
e configuração django.conf.settings.COMPRESS_OFFLINE_CONTEXT
(este último já está incluído na configuração do exemplo):
COMPRESS_OFFLINE = True
Em cada implantação precisa compactar os ficheiros para corresponder à versão atual:
weblate compress
Dica
A imagem oficial do Docker já tem este recurso ativado.
Veja também
Executar o servidor¶
Dica
No caso de não ter experiência com os serviços descritos abaixo, pode tentar seguir Instalando a usar Docker.
Precisará de vários serviços para executar o Weblate, a configuração recomendada consiste em:
Servidor de banco de dados (consulte Configuração de banco de dados para o Weblate)
Servidor de cache (consulte Ativar o cache)
Servidor web frontend para ficheiros estáticos e terminação SSL (consulte Servir ficheiros estáticos)
Servidor WSGI para conteúdo dinâmico (consulte Configuração de amostra para NGINX e uWSGI)
Celery para executar tarefas em segundo plano (consulte Tarefas de fundo a usar o Celery)
Nota
Existem algumas dependências entre os serviços, por exemplo, o cache e o banco de dados devem estar em execução ao iniciar os processos de Celery ou uwsgi.
Na maioria dos casos, executará todos os serviços num único servidor (virtual), mas se a sua instalação estar muito carregada, pode dividir os serviços. A única limitação disso é que os servidores Celery e Wsgi precisam acessar DATA_DIR
.
Nota
O processo de WSGI deve ser executado sob o mesmo utilizador que o processo do Celery, caso contrário, os ficheiros em DATA_DIR
serão armazenados com propriedade mista, a levar a problemas de tempo de execução.
Veja também Permissões do sistema de ficheiros e Tarefas de fundo a usar o Celery.
Executar um servidor web¶
Executar o Weblate não é diferente de executar qualquer outro programa baseado em Django. Django é geralmente executado como uWSGI ou fcgi (consulte exemplos para diferentes servidores web abaixo).
Para fins de teste, pode usar o servidor web incorporado no Django:
weblate runserver
Aviso
NÃO USE ESTE SERVIDOR NUMA CONFIGURAÇÃO DE PRODUÇÃO. Não passou por auditorias de segurança ou testes de desempenho. Veja também a documentação de Django no runserver
.
Dica
O servidor embutido do Django serve apenas ficheiros estáticos com DEBUG
ativado, pois é destinado apenas ao desenvolvimento. Para uso em produção, consulte as configurações de wsgi em Configuração de amostra para NGINX e uWSGI, Configuração de amostra para Apache, Configuração de amostra para Apache and Gunicorn e Servir ficheiros estáticos.
Servir ficheiros estáticos¶
Alterado na versão 2.4: Antes da versão 2.4, o Weblate não usava a estrutura de ficheiros estáticos do Django corretamente e a configuração era mais complexa.
Django precisa coletar os ficheiros estáticos dele num único diretório. Para isso, execute weblate collectstatic --noinput
. Isso copiará os ficheiros estáticos num diretório especificado pela configuração STATIC_ROOT
(isso é a predefinição para um diretório static
dentro de DATA_DIR
).
Recomenda-se servir ficheiros estáticos diretamente do seu servidor web. Deve usá-los para os seguintes caminhos:
/static/
Serve ficheiros estáticos para Weblate e a interface de administração (definida por
STATIC_ROOT
)./media/
Usado para o envio de mídia pelo utilizador (por exemplo, capturas de ecrã).
/favicon.ico
Deve ser reescrito para reescrever uma regra para servir
/static/favicon.ico
.
Política de segurança de conteúdo¶
A configuração predefinida do Weblate ativa o middleware weblate.middleware.SecurityMiddleware
que define cabeçalhos HTTP relacionados à segurança como Content-Security-Policy
ou X-XSS-Protection
. São configurados por predefinição para funcionar com o Weblate e a configuração dele, mas isso pode precisar de personalização no seu ambiente.
Veja também
CSP_SCRIPT_SRC
,
CSP_IMG_SRC
,
CSP_CONNECT_SRC
,
CSP_STYLE_SRC
,
CSP_FONT_SRC
Configuração de amostra para NGINX e uWSGI¶
Para executar o servidor web de produção, use o wrapper wsgi instalado com Weblate (no caso de ambiente virtual é instalado como ~/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py
). Também não se esqueça de definir o caminho de pesquisa Python para o seu virtualenv (por exemplo, usando virtualenv = /home/user/weblate-env` no uWSGI).
A configuração a seguir executa o Weblate como uWSGI sob o servidor web NGINX.
A configuração para NGINX (também disponível como weblate/examples/weblate.nginx.conf
):
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
server {
listen 80;
server_name weblate;
# Not used
root /var/www/html;
location ~ ^/favicon.ico$ {
# DATA_DIR/static/favicon.ico
alias /home/weblate/data/static/favicon.ico;
expires 30d;
}
location /static/ {
# DATA_DIR/static/
alias /home/weblate/data/static/;
expires 30d;
}
location /media/ {
# DATA_DIR/media/
alias /home/weblate/data/media/;
expires 30d;
}
location / {
include uwsgi_params;
# Needed for long running operations in admin interface
uwsgi_read_timeout 3600;
# Adjust based to uwsgi configuration:
uwsgi_pass unix:///run/uwsgi/app/weblate/socket;
# uwsgi_pass 127.0.0.1:8080;
}
}
Configuração para uWSGI (também disponível como weblate/examples/weblate.uwsgi.ini
):
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
[uwsgi]
plugins = python3
master = true
protocol = uwsgi
socket = 127.0.0.1:8080
wsgi-file = /home/weblate/weblate-env/lib/python3.9/site-packages/weblate/wsgi.py
# Add path to Weblate checkout if you did not install
# Weblate by pip
# python-path = /path/to/weblate
# In case you're using virtualenv uncomment this:
virtualenv = /home/weblate/weblate-env
# Needed for OAuth/OpenID
buffer-size = 8192
# Reload when consuming too much of memory
reload-on-rss = 250
# Increase number of workers for heavily loaded sites
workers = 8
# Enable threads for Sentry error submission
enable-threads = true
# Child processes do not need file descriptors
close-on-exec = true
# Avoid default 0000 umask
umask = 0022
# Run as weblate user
uid = weblate
gid = weblate
# Enable harakiri mode (kill requests after some time)
# harakiri = 3600
# harakiri-verbose = true
# Enable uWSGI stats server
# stats = :1717
# stats-http = true
# Do not log some errors caused by client disconnects
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true
Veja também
Configuração de amostra para Apache¶
Recomenda-se o uso de prefork de MPM ao usar WSGI com Weblate.
A configuração a seguir executa o Weblate como WSGI. Precisa ter ativado mod_wsgi
(disponível como weblate/examples/apache.conf
):
#
# VirtualHost for Weblate
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
ServerAdmin admin@weblate.example.org
ServerName weblate.example.org
# DATA_DIR/static/favicon.ico
Alias /favicon.ico /home/weblate/data/static/favicon.ico
# DATA_DIR/static/
Alias /static/ /home/weblate/data/static/
<Directory /home/weblate/data/static/>
Require all granted
</Directory>
# DATA_DIR/media/
Alias /media/ /home/weblate/data/media/
<Directory /home/weblate/data/media/>
Require all granted
</Directory>
# Path to your Weblate virtualenv
WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
WSGIProcessGroup weblate
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
WSGIPassAuthorization On
<Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Nota
Weblate precisa do Python 3, então, por favor se certifique que está a executar a variante do Python 3 do modwsgi. Usualmente, está disponível como um pacote separado, por exemplo libapache2-mod-wsgi-py3
.
Configuração de amostra para Apache and Gunicorn¶
A configuração seguinte executa o Weblate em Gunicorn and Apache 2.4 (disponível como weblate/examples/apache.gunicorn.conf
):
#
# VirtualHost for Weblate using gunicorn on localhost:8000
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:443>
ServerAdmin admin@weblate.example.org
ServerName weblate.example.org
# DATA_DIR/static/favicon.ico
Alias /favicon.ico /home/weblate/data/static/favicon.ico
# DATA_DIR/static/
Alias /static/ /home/weblate/data/static/
<Directory /home/weblate/data/static/>
Require all granted
</Directory>
# DATA_DIR/media/
Alias /media/ /home/weblate/data/media/
<Directory /home/weblate/data/media/>
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/https_cert.cert
SSLCertificateKeyFile /etc/apache2/ssl/https_key.pem
SSLProxyEngine On
ProxyPass /favicon.ico !
ProxyPass /static/ !
ProxyPass /media/ !
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
ProxyPreserveHost On
</VirtualHost>
Veja também
A executar o Weblate sob o caminho¶
Novo na versão 1.3.
Recomenda-se o uso de prefork de MPM ao usar WSGI com Weblate.
Uma configuração do Apache de amostra para servir o Weblate sob /weblate
. Novamente, a usar mod_wsgi
(também disponível como weblate/examples/apache-path.conf
):
#
# VirtualHost for Weblate, running under /weblate path
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
ServerAdmin admin@weblate.example.org
ServerName weblate.example.org
# DATA_DIR/static/favicon.ico
Alias /weblate/favicon.ico /home/weblate/data/static/favicon.ico
# DATA_DIR/static/
Alias /weblate/static/ /home/weblate/data/static/
<Directory /home/weblate/data/static/>
Require all granted
</Directory>
# DATA_DIR/media/
Alias /weblate/media/ /home/weblate/data/media/
<Directory /home/weblate/data/media/>
Require all granted
</Directory>
# Path to your Weblate virtualenv
WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
WSGIProcessGroup weblate
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias /weblate /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
WSGIPassAuthorization On
<Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Adicionalmente, irá ter de ajustar o weblate/settings.py
:
URL_PREFIX = "/weblate"
Tarefas de fundo a usar o Celery¶
Novo na versão 3.2.
O Weblate usa Celery para processar tarefas em segundo plano. Uma configuração típica a usar redis como backend se parece com isso:
CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
Veja também
Para o desenvolvimento, pode usar uma configuração ansiosa, que processa todas as tarefas no local, mas isso terá impacto no desempenho do Weblate:
CELERY_TASK_ALWAYS_EAGER = True
CELERY_BROKER_URL = "memory://"
CELERY_TASK_EAGER_PROPAGATES = True
Também deve iniciar o worker do Celery para processar as tarefas e iniciar tarefas programadas, isso pode ser feito diretamente na linha de comando (o que é mais útil ao depurar ou desenvolver):
./weblate/examples/celery start
./weblate/examples/celery stop
Nota
O processo de Celery deve ser executado sob o mesmo utilizador que o Weblate e o processo do WSGI, caso contrário, os ficheiros em DATA_DIR
serão armazenados com propriedade mista, a levar a problemas de tempo de execução.
Veja também Permissões do sistema de ficheiros e Executar o servidor.
Executando Celery como serviço do sistema¶
Provavelmente vai querer executar o Celery como um daemon e que é coberto por Daemonization. Para as configurações Linux mais comuns a usar systemd, pode usar os ficheiros de exemplo disponibilizados na pasta examples
listado abaixo.
Unidade do systemd a ser posta como /etc/systemd/system/celery-weblate.service
:
[Unit]
Description=Celery Service (Weblate)
After=network.target
[Service]
Type=forking
User=weblate
Group=weblate
EnvironmentFile=/etc/default/celery-weblate
WorkingDirectory=/home/weblate
RuntimeDirectory=celery
RuntimeDirectoryPreserve=restart
LogsDirectory=celery
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
-A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
--logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
--pidfile=${CELERYD_PID_FILE}'
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
-A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
--logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
[Install]
WantedBy=multi-user.target
Configuração do ambiente a ser posta como /etc/default/celery-weblate
:
# Name of nodes to start
CELERYD_NODES="celery notify memory backup translate"
# Absolute or relative path to the 'celery' command:
CELERY_BIN="/home/weblate/weblate-env/bin/celery"
# App instance to use
# comment out this line if you don't use an app
CELERY_APP="weblate.utils"
# Extra command-line arguments to the worker,
# increase concurency if you get weblate.E019
CELERYD_OPTS="--beat:celery --queues:celery=celery --prefetch-multiplier:celery=4 \
--queues:notify=notify --prefetch-multiplier:notify=10 \
--queues:memory=memory --prefetch-multiplier:memory=10 \
--queues:translate=translate --prefetch-multiplier:translate=4 \
--concurrency:backup=1 --queues:backup=backup --prefetch-multiplier:backup=2"
# Logging configuration
# - %n will be replaced with the first part of the nodename.
# - %I will be replaced with the current child process index
# and is important when using the prefork pool to avoid race conditions.
CELERYD_PID_FILE="/run/celery/weblate-%n.pid"
CELERYD_LOG_FILE="/var/log/celery/weblate-%n%I.log"
CELERYD_LOG_LEVEL="INFO"
# Internal Weblate variable to indicate we're running inside Celery
CELERY_WORKER_RUNNING="1"
Configuração adicional para alternar os logs do Celery a usar logrotate a ser posta como /etc/logrotate.d/celery
:
/var/log/celery/*.log {
weekly
missingok
rotate 12
compress
notifempty
}
Tarefas periódicas a usar a batida do Celery¶
O Weblate vem com configuração embutida para tarefas programadas. No entanto, pode definir tarefas adicionais em settings.py
. Por exemplo, veja Commits adiados.
As tarefas deveriam ser executadas por daemons de batidas do Celery. Caso não esteja a funcionar corretamente, pode não estar a funcionar ou o seu banco de dados foi corrompido. Verifique os registos de inicialização do Celery nesse caso para descobrir a causa raiz.
Monitorar o estado do Celery¶
Pode usar celery_queues
para ver o comprimento atual das filas de tarefas do Celery. Caso a fila fique muito longa, também terá erro de configuração na interface administrativa.
Aviso
Os erros do Celery são por padrão apenas conectados ao log do Celery e não são visíveis ao utilizador. Caso queira ter uma visão geral sobre tais falhas, recomenda-se ajustar a configuração para ir Coletando relatórios de erros.
Monitorando o Weblate¶
O Weblate fornece a URL /healthz/
a ser usada em verificações de saúde simples, por exemplo, usando Kubernetes. O contentor Docker tem verificação de saúde embutida usando esta URL.
Para monitorar as métricas do Weblate, pode usar o ponto final GET /api/metrics/
da API.
Veja também
Coletando relatórios de erros¶
Weblate, como qualquer outro software, pode falhar. Para coletar estados de falha úteis, recomendamos usar serviços de terceiros para coletar tais informações. Isso é especialmente útil no caso de falhas nas tarefas do Celery, que de outra forma só relatariam erro nos logs e não será notificado sobre eles. O Weblate tem suporte para os seguintes serviços:
Sentry¶
O Weblate possui suporte embutido para Sentry. Para usá-lo, é suficiente definir SENTRY_DSN
no settings.py
:
SENTRY_DSN = "https://id@your.sentry.example.com/"
Rollbar¶
O Weblate tem suporte embutido para Rollbar. Para usá-lo, basta seguir instruções para o notificador de Rollbar para Python.
Em suma, precisa ajustar settings.py
:
# Add rollbar as last middleware:
MIDDLEWARE = [
# … other middleware classes …
"rollbar.contrib.django.middleware.RollbarNotifierMiddleware",
]
# Configure client access
ROLLBAR = {
"access_token": "POST_SERVER_ITEM_ACCESS_TOKEN",
"client_token": "POST_CLIENT_ITEM_ACCESS_TOKEN",
"environment": "development" if DEBUG else "production",
"branch": "main",
"root": "/absolute/path/to/code/root",
}
Todo o resto é integrado automaticamente, agora coletará erros do lado do servidor e do cliente.
Migrando Weblate para outro servidor¶
Migrar o Weblate para outro servidor deve ser muito fácil, porém armazena dados em poucos locais que deve migrar cuidadosamente. A melhor abordagem é parar o Weblate para a migração.
Migrando banco de dados¶
Dependendo do backend do seu banco de dados, pode ter várias opções para migrar o banco de dados. O mais simples é despejar o banco de dados num servidor e importá-lo no novo. Alternativamente, pode usar a replicação no caso do seu banco de dados ter suporte a isso.
A melhor abordagem é usar ferramentas nativas de banco de dados, pois geralmente são as mais eficazes (por exemplo, mysqldump ou pg_dump). Se quiser migrar entre diferentes bancos de dados, a única opção pode ser usar a gestão do Django para despejar e importar o banco de dados:
# Export current data
weblate dumpdata > /tmp/weblate.dump
# Import dump
weblate loaddata /tmp/weblate.dump
Migrando repositórios VCS¶
Os repositórios VCS armazenados em DATA_DIR
também precisam ser migrados. Pode simplesmente copiá-los ou usar rsync para fazer a migração de forma mais eficaz.
Outras notas¶
Não se esqueça de mover outros serviços que o Weblate pode ter usado como Redis, tarefas do cron ou backends de autenticação personalizada.
Implantações de Weblate¶
O Weblate pode ser facilmente instalado na sua nuvem. Encontre um guia detalhado para sua plataforma:
Implantações de terceiros para Weblate¶
Nota
As seguintes implantações não são desenvolvidas ou suportadas pela equipa Weblate. Partes da configuração podem variar do que está descrito nesta documentação.
Pilha Weblate para Bitnami¶
Bitnami fornece uma pilha Weblate para muitas plataformas em <https://bitnami.com/stack/weblate>. A configuração será ajustada durante a instalação, consulte <https://bitnami.com/stack/weblate/README.txt> para mais documentação.
Pacote de Weblate para Cloudron¶
Cloudron é uma plataforma para auto-hospedagem de aplicações da web. Weblate instalado com Cloudron será automaticamente atualizado. O pacote é mantido pela equipa Cloudron no seu repositório de pacotes Weblate <https://git.cloudron.io/cloudron/weblate-app> _.

Weblate no YunoHost¶
O projeto de hospedagem própria YunoHost fornece um pacote para Weblate. Uma vez que tenha a sua instalação YunoHost, pode instalar o Weblate como qualquer outra aplicação. Ele fornecerá uma pilha de trabalho completo com backup e restauração, mas ainda pode ter que editar seu ficheiro de configurações para usos específicos.
Pode usar a sua interface de administração ou este botão (vai levá-lo ao seu servidor):

Também é possível usar a interface da linha de comando:
yunohost app install https://github.com/YunoHost-Apps/weblate_ynh
Atualizando o Weblate¶
Atualizações de imagem Docker¶
A imagem Docker oficial (veja Instalando a usar Docker) possui todas as etapas de atualização integradas. Não há nenhuma etapa manual além de buscar a versão mais recente.
Instruções genéricas de atualização¶
Antes de atualizar, verifique os atuais Requisitos de software, pois eles podem ter mudado. Uma vez que todos os requisitos estejam instalados ou atualizados, ajuste o seu settings.py
para corresponder às mudanças na configuração (consulte settings_example.py
para os valores corretos).
Always check Instruções específicas de versão before upgrade. In case you are skipping some versions, please follow instructions for all versions you are skipping in the upgrade. Sometimes it’s better to upgrade to some intermediate version to ensure a smooth migration. Upgrading across multiple releases should work, but is not as well tested as single version upgrades.
Nota
It is recommended to perform a full database backup prior to upgrade so that you can roll back the database in case upgrade fails, see Fazer backup e mover o Weblate.
Stop wsgi and Celery processes. The upgrade can perform incompatible changes in the database, so it is always safer to avoid old processes running while upgrading.
Upgrade Weblate code.
Para instalações pip, isso pode ser alcançado da seguinte forma:
pip install -U Weblate
Com um checkout do Git, precisa obter o novo código-fonte e atualizar a sua instalação:
cd weblate-src git pull # Update Weblate inside your virtualenv . ~/weblate-env/bin/pip install -e . # Install dependencies directly when not using virtualenv pip install --upgrade -r requirements.txt
Atualize o ficheiro de configuração, consulte o
settings_example.py
ou :ref:`version-specific-instructions`para os passos necessários.Atualize estrutura do banco de dados:
weblate migrate --noinput
Colete ficheiros estáticos atualizados (veja Executar o servidor e Servir ficheiros estáticos):
weblate collectstatic --noinput
Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):
weblate compress
Se está a usar uma versão do Git, também deve gerar novamente ficheiros locais toda vez que estiver atualizando. Pode fazer isso a invocar:
weblate compilemessages
Verifique que a sua configuração é sana (ver também Configuração de produção):
weblate check --deploy
Restart Celery worker (see Tarefas de fundo a usar o Celery).
Instruções específicas de versão¶
Atualizar de 2.x¶
Se está a atualizar da versão 2.x, sempre atualize para a 3.0.1 antes e depois continue atualizando na série 3.x. Atualizações pulando esse passo não são suportadas e não funcionarão corretamente.
Upgrade from 3.x¶
If you are upgrading from 3.x release, always first upgrade to 4.0.4 or 4.1.1 and then continue upgrading in the 4.x series. Upgrades skipping this step are not supported and will break.
Upgrade from 4.0 to 4.1¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
There are several changes in
settings_example.py
, most notable middleware changes, please adjust your settings accordingly.There are new file formats, you might want to include them in case you modified the
WEBLATE_FORMATS
.There are new quality checks, you might want to include them in case you modified the
CHECK_LIST
.There is change in
DEFAULT_THROTTLE_CLASSES
setting to allow reporting of rate limiting in the API.There are some new and updated requirements.
There is a change in
INSTALLED_APPS
.The
MT_DEEPL_API_VERSION
setting has been removed in Version 4.7. The DeepL machine translation now uses the newMT_DEEPL_API_URL
instead. You might need to adjustMT_DEEPL_API_URL
to match your subscription.
Veja também
Upgrade from 4.1 to 4.2¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
Upgrade from 3.x releases is not longer supported, please upgrade to 4.0 or 4.1 first.
There are some new and updated requirements.
There are several changes in
settings_example.py
, most notable new middleware and changed application ordering.The keys for JSON based formats no longer include leading dot. The strings are adjusted during the database migration, but external components might need adjustment in case you rely on keys in exports or API.
The Celery configuration was changed to no longer use
memory
queue. Please adjust your startup scripts andCELERY_TASK_ROUTES
setting.The Weblate domain is now configured in the settings, see
SITE_DOMAIN
(orWEBLATE_SITE_DOMAIN
). You will have to configure it before running Weblate.The username and email fields on user database now should be case insensitive unique. It was mistakenly not enforced with PostgreSQL.
Veja também
Upgrade from 4.2 to 4.3¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
There are some changes in quality checks, you might want to include them in case you modified the
CHECK_LIST
.The source language attribute was moved from project to a component what is exposed in the API. You will need to update Cliente Weblate in case you are using it.
The database migration to 4.3 might take long depending on number of strings you are translating (expect around one hour of migration time per 100,000 source strings).
There is a change in
INSTALLED_APPS
.There is a new setting
SESSION_COOKIE_AGE_AUTHENTICATED
which complementsSESSION_COOKIE_AGE
.In case you were using hub or lab to integrate with GitHub or GitLab, you will need to reconfigure this, see
GITHUB_CREDENTIALS
andGITLAB_CREDENTIALS
.
Alterado na versão 4.3.1:
The Celery configuration was changed to add
memory
queue. Please adjust your startup scripts andCELERY_TASK_ROUTES
setting.
Alterado na versão 4.3.2:
The
post_update
method of addons now takes extraskip_push
parameter.
Veja também
Upgrade from 4.3 to 4.4¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
There is a change in
INSTALLED_APPS
,weblate.configuration
has to be added there.Django 3.1 is now required.
In case you are using MySQL or MariaDB, the minimal required versions have increased, see MySQL e MariaDB.
Alterado na versão 4.4.1:
Gettext monolíngue now uses both
msgid
andmsgctxt
when present. This will change identification of translation strings in such files breaking links to Weblate extended data such as screenshots or review states. Please make sure you commit pending changes in such files prior upgrading and it is recommeded to force loading of affected component usingloadpo
.Increased minimal required version of translate-toolkit to address several file format issues.
Veja também
Upgrade from 4.4 to 4.5¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
The migration might take considerable time if you had big glossaries.
Glossaries are now stored as regular components.
The glossary API is removed, use regular translation API to access glossaries.
There is a change in
INSTALLED_APPS
-weblate.metrics
should be added.
Alterado na versão 4.5.1:
There is a new dependency on the pyahocorasick module.
Veja também
Upgrade from 4.5 to 4.6¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
There are new file formats, you might want to include them in case you modified the
WEBLATE_FORMATS
.A API para a criação de componentes agora usa automaticamente URLs internas do Weblate, veja
POST /api/projects/(string:project)/components/
.There is a change in dependencies and
PASSWORD_HASHERS
to prefer Argon2 for passwords hashing.
Veja também
Upgrade from 4.6 to 4.7¶
Please follow Instruções genéricas de atualização in order to perform update.
Notable configuration or dependencies changes:
There are several changes in
settings_example.py
, most notable middleware changes (MIDDLEWARE
), please adjust your settings accordingly.The DeepL machine translation now has a generic
MT_DEEPL_API_URL
setting to adapt to different subscription models more flexibly. TheMT_DEEPL_API_VERSION
setting is no longer used.Django 3.2 is now required.
Veja também
Upgrade from 4.7 to 4.8¶
Please follow Instruções genéricas de atualização in order to perform update.
There are no additional upgrade steps needed in this release.
Veja também
Upgrading from Python 2 to Python 3¶
Weblate no longer supports Python older than 3.5. In case you are still running on older version, please perform migration to Python 3 first on existing version and upgrade later. See Upgrading from Python 2 to Python 3 in the Weblate 3.11.1 documentation.
Migrando de outros bancos de dados para o PostgreSQL¶
If you are running Weblate on other dabatase than PostgreSQL, you should consider migrating to PostgreSQL as Weblate performs best with it. The following steps will guide you in migrating your data between the databases. Please remember to stop both web and Celery servers prior to the migration, otherwise you might end up with inconsistent data.
Criar um banco de dados no PostgreSQL¶
Geralmente é uma boa ideia executar o Weblate num banco de dados separado e separar a conta do utilizador:
# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"
# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate
# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate
Migrating using Django JSON dumps¶
The simplest approach for migration is to utilize Django JSON dumps. This works well for smaller installations. On bigger sites you might want to use pgloader instead, see Migrating to PostgreSQL using pgloader.
Add PostgreSQL as additional database connection to the
settings.py
:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
# Additional database options
"OPTIONS": {
# In case of using an older MySQL server, which has MyISAM as a default storage
# 'init_command': 'SET storage_engine=INNODB',
# Uncomment for MySQL older than 5.7:
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
# If your server supports it, see the Unicode issues above
"charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
"connect_timeout": 28800,
},
},
"postgresql": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
},
}
Run migrations and drop any data inserted into the tables:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
Dump legacy database and import to PostgreSQL
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
Adjust
DATABASES
to use just PostgreSQL database as default, remove legacy connection.
Weblate should be now ready to run from the PostgreSQL database.
Migrating to PostgreSQL using pgloader¶
The pgloader is a generic migration tool to migrate data to PostgreSQL. You can use it to migrate Weblate database.
Adjust your
settings.py
to use PostgreSQL as a database.Migrate the schema in the PostgreSQL database:
weblate migrate weblate sqlflush | weblate dbshell
Run the pgloader to transfer the data. The following script can be used to migrate the database, but you might want to learn more about pgloader to understand what it does and tweak it to match your setup:
LOAD DATABASE FROM mysql://weblate:password@localhost/weblate INTO postgresql://weblate:password@localhost/weblate WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only ALTER SCHEMA 'weblate' RENAME TO 'public' ;
Migrating from Pootle¶
As Weblate was originally written as replacement from Pootle, it is supported
to migrate user accounts from Pootle. You can dump the users from Pootle and
import them using importusers
.
Fazer backup e mover o Weblate¶
Backup automatizado pelo BorgBackup¶
Novo na versão 3.9.
O Weblate tem suporte embutido para criação de backups de serviços a usar BorgBackup. Borg cria backups criptografados eficazes em termos de espaço que podem ser armazenados com segurança na nuvem. Os backups podem ser controlados na interface de gestão da guia Backups.
Alterado na versão 4.4.1: Os bancos de dados PostgreSQL e MySQL/MariaDB estão incluídos nos backups automatizados.
Os backups que usam o Borg são incrementais e o Weblate é configurado para manter os seguintes backups:
Backups diários para 14 dias
Backups semanais por 8 semanas atrás
Backups mensais por 6 meses atrás

Chave de criptografia do Borg¶
BorgBackup cria backups criptografados e não conseguiria restaurá-los sem a palavra-passe. A palavra-passe é gerada ao adicionar novo serviço de backup e deve copiá-lo e mantê-lo num lugar seguro.
Se estiver a usar Armazenamento de backup provisionado do Weblate, faça backup da sua chave SSH privada também, pois ela é usada para acessar os seus backups.
Veja também
Armazenamento de backup provisionado do Weblate¶
A forma mais fácil de fazer backup da sua instância do Weblate é comprar o serviço de backup em weblate.org. É assim que o faz funcionar:
Compre o Serviço de backup em https://weblate.org/support/#backup.
Insira a chave obtida na interface de gestão, veja Integrando o apoio.
Weblate se conecta ao serviço de nuvem e obtém informações de acesso para os backups.
Ative a nova configuração de backup a partir da guia Backups.
Faça backup das suas credenciais do Borg para conseguir restaurar os backups, veja Chave de criptografia do Borg.
Dica
O passo manual para ativar tudo está lá para sua segurança. Sem o seu consentimento, nenhum dado é enviado ao repositório de backup obtido através do processo de registo.
Usar armazenamento de backup personalizado¶
Também pode usar o seu próprio armazenamento para backups. SSH pode ser usado para armazenar cópias de segurança no destino remoto, o servidor de destino precisa do BorgBackup instalado.
Veja também
General na documentação do Borg
Sistema de ficheiros local¶
Recomenda-se especificar o caminho absoluto para o backup local, por exemplo /caminho/para/backup. O diretório deve poder ser escrito pelo utilizador a executar o Weblate (veja Permissões do sistema de ficheiros). Se ele não existir, o Weblate tenta criá-lo, mas precisa das permissões apropriadas para fazê-lo.
Dica
Ao executar o Weblate no Docker, certifique-se de que o local de backup seja exposto como um volume do contentor Weblate. Caso contrário, os backups serão descartados pelo Docker na reinicialização do seu contentor.
Uma opção é pôr backups num volume existente. Por exemplo, /app/data/borgbackup
. Este é um volume existente no contentor.
Também pode adicionar um novo contentor para os backups no ficheiro de composição do Docker, por exemplo, a usar /borgbackup
:
services:
weblate:
volumes:
- /home/weblate/data:/app/data
- /home/weblate/borgbackup:/borgbackup
O diretório onde os backups serão armazenados para serem possuídos por UID 1000, caso o contrário, Weblate não será capaz de escrever os backups lá.
Backups remotos¶
Para criar os backups remotos, terá que instalar o BorgBackup em outro servidor que seja acessível para sua implantação de Weblate via SSH a usar a chave SSH do Weblate:
Prepare um servidor onde os seus backups serão armazenados.
Instale o servidor SSH nele (receberá-o por padrão com a maioria das distribuições Linux).
Instale o BorgBackup nesse servidor; a maioria das distribuições Linux tem pacotes disponíveis (veja Installation).
Escolha um utilizador existente ou crie um novo que será usado para backup.
Adicione a chave SSH do Weblate ao utilizador para que o Weblate possa usar o SSH para o servidor sem uma palavra-passe (veja Chave SSH do Weblate).
Configure o local de backup no Weblate como
user@host:/caminho/para/backups
.
Dica
Armazenamento de backup provisionado do Weblate fornece backups remotos automatizados sem qualquer esforço.
Veja também
Restaurar do BorgBackup¶
Restaurar o acesso ao repositório de backup e preparar a sua palavra-passe de backup.
Liste todos os backups no servidor a usar
borg list REPOSITÓRIO
.Restaure o backup desejado para o diretório atual a usar
borg extract REPOSITÓRIO::PACOTE
.Restaure o banco de dados do despejo de SQL posto no diretório
backup
no diretório de dados do Weblate (veja :ref:”backup-dumps”).Copie a configuração do Weblate (
backups/settings.py
, veja Dados despejados para backups) até o local correto, veja Ajustar a configuração.Ao usar o contentor Docker, o ficheiro de configurações já está incluído no contentor e deve restaurar as variáveis de ambiente originais. O ficheiro
environment.yml
pode ajudá-lo com isso (veja Dados despejados para backups).Copie todo o diretório de dados restaurados para o local configurado por
DATA_DIR
.Ao usar contentores do Docker, coloque os dados num volume de dados, veja Volumes de contentor Docker.
Por favor, assegurar que os ficheiros têm o proprietário e as permissões corretas, veja :ref: file-permissions.
A sessão dos Borg pode parecer com isso:
$ borg list /tmp/xxx
Enter passphrase for key /tmp/xxx:
2019-09-26T14:56:08 Thu, 2019-09-26 14:56:08 [de0e0f13643635d5090e9896bdaceb92a023050749ad3f3350e788f1a65576a5]
$ borg extract /tmp/xxx::2019-09-26T14:56:08
Enter passphrase for key /tmp/xxx:
Veja também
Backup manual¶
Dependendo do que deseja gravar, faça backup do tipo de dados que o Weblate armazena em cada lugar.
Dica
Se estiver a fazer os backups manualmente, pode silenciar os avisos do Weblate sobre a falta de backups a adicionar weblate.I028
para SILENCED_SYSTEM_CHECKS
em settings.py
ou WEBLATE_SILENCED_SYSTEM_CHECKS
para o Docker.
SILENCED_SYSTEM_CHECKS.append("weblate.I028")
Banco de dados¶
O local de armazenamento real depende da configuração do seu banco de dados.
Dica
O banco de dados é o armazenamento mais importante. Configure backups regulares do seu banco de dados. Sem o banco de dados, todas as traduções são perdidas.
Backup nativo do banco de dados¶
A abordagem recomendada é gravar um despejo do banco de dados a usar ferramentas nativas, tais como pg_dump ou msqldump. Esta abordagem normalmente tem um desempenho melhor do que o backup do Django e restaura tabelas completas com todos os seus dados.
Pode restaurar esse backup numa versão mais nova do Weblate, ele executará todas as migrações necessárias ao executar em migrate
. Consulte Atualizando o Weblate sobre informações mais detalhadas sobre como a atualizar entre as versões.
Backup do banco de dados do Django¶
Alternativamente, pode fazer backup do seu banco de dados a utilizar o comando dumpdata
do Django. Dessa forma o backup é agnóstico de banco de dados e pode ser usado caso queira alterar o backend do banco de dados.
Antes de restaurar o banco de dados, precisa estar a usar exatamente a mesma versão do Weblate na qual o backup foi feito. Isso é necessário, pois a estrutura do banco de dados muda entre as versões e acabaria a corromper os dados de alguma forma. Depois de instalar a mesma versão, execute todas as migrações do banco de dados a usar migrate
.
Depois disso, algumas entradas já serão criadas no banco de dados e as terá no backup do banco de dados também. A abordagem recomendada é apagar essas entradas manualmente a usar o shell de gestão (veja Invocando comandos de gestão):
weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()
Ficheiros¶
Se tiver espaço de backup suficiente, basta fazer backup de todo o DATA_DIR
. Esta é uma aposta segura, mesmo que inclua alguns ficheiro que não quer. As seções a seguir descrevem o que deve fazer backup e o que pode pular em detalhes.
Dados despejados para backups¶
Alterado na versão 4.7: O despejo do ambiente foi adicionado como environment.yml
para ajudar na restauração nos ambientes Docker.
Armazenados em DATA_DIR
/backups
.
O Weblate despeja vários dados aqui e pode incluir esses ficheiros para backups mais completos. Os ficheiros são atualizados diariamente (requer um servidor de «beats» do Celery em execução, consulte Tarefas de fundo a usar o Celery). Atualmente, isto inclui:
Configurações do Weblate como
settings.py
(existe também a versão expandida emsettings-expanded.py
).Backup de banco de dados PostgreSQL como
database.sql
.Despejo do ambiente como
environment.yml
.
Os backups do banco de dados são salvos como texto simples por padrão, mas eles também podem ser comprimidos ou totalmente ignorados a usar DATABASE_BACKUP
.
Para restaurar o backup do banco de dados, carregue-o usando ferramentas de banco de dados, por exemplo:
psql --file=database.sql weblate
Repositórios de controle de versão¶
Armazenados em DATA_DIR
/vcs
.
Os repositórios de controle de versão contêm uma cópia dos seus repositórios upstream com alterações do Weblate. Se tiver o Enviar ao submeter ativado para todos os seus componentes de tradução, todas as alterações do Weblate são incluídas no upstream. Não há necessidade de fazer backup dos repositórios no lado do Weblate, pois eles podem ser clonados novamente a partir dos upstream locais sem perda de dados.
Chaves SSH e GPG¶
Armazenados em DATA_DIR
/ssh
e DATA_DIR
/home
.
Se está a usar chaves SSH ou GPG geradas pelo Weblate, deve fazer backup destes locais. Caso contrário, vai perder as chaves privadas e terá que gerar novamente as novas.
Ficheiros enviados pelo utilizador¶
Armazenados em DATA_DIR
/media
.
Deve fazer o backup de todos os ficheiros enviados pelo utilizador (por exemplo, Contexto visual para cadeias).
Tarefas do Celery¶
A fila de tarefas do Celery pode conter algumas informações, mas geralmente não é necessária para um backup. No máximo, perderá atualizações ainda não processadas para a memória de tradução. Recomenda-se realizar a atualização de texto completo ou repositório ao restaurar de qualquer maneira, de modo que não há problema em perdê-las.
Veja também
Linha de comando para backup manual¶
Usando uma tarefa de cron, pode configurar um comando do Bash para ser executado diariamente, por exemplo:
$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret
A cadeia entre as aspas após XZ_OPT permite que escolha as suas opções do xz, por exemplo, a quantidade de memória utilizada para compressão; veja https://linux.die.net/man/1/xz
Pode ajustar a lista de pastas e ficheiros às suas necessidades. Para evitar gravar a memória de tradução (na pasta backups), pode usar:
$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups/database.sql backups/settings.py vcs ssh home media fonts secret
Restaurar backup manual¶
Restaure todos os dados dos quais tenha feito backup.
Atualize todos repositórios a usar o
updategit
.weblate updategit --all
Mover uma instalação do Weblate¶
Realoque a instalação de um sistema diferente, a seguir as instruções de backup e restauração acima.
Autenticação¶
Registo de utilizador¶
A configuração predefinida para Weblate é usar python-social-auth, um formulário no site para lidar com o registo de novos utilizadores. Depois de confirmar o seu e-mail, um novo utilizador pode contribuir ou autenticar a usar um dos serviços de terceiros.
Também pode desativar o registo de novos utilizadores configurando REGISTRATION_OPEN
.
As tentativas de autenticação estão sujeitas a Limitação de taxa.
Backends de autenticação¶
A solução embutida do Django é utilizada para autenticação, incluindo várias opções sociais para fazê-lo. Utilizando-a, pode importar o banco de dados de utilizadores de outros projetos baseados no Django (veja Migrating from Pootle).
Django pode, adicionalmente, ser configurado para autenticar em outros meios também.
Veja também
Configurações de autenticação descreve como configurar a autenticação na imagem oficial do Docker.
Autenticação por palavra-passe¶
A predefinição settings.py
vem com um razoável conjunto de AUTH_PASSWORD_VALIDATORS
:
As palavras-passe não podem ser muito similares com as suas outras informações pessoais.
As palavras-passe devem conter no mínimo de 10 caracteres.
As palavras-passe não podem ser palaras-passe comumente usadas.
As palavras-passe não podem ser inteiramente numéricas.
As palavras-passe não podem consistir num único caractere ou apenas espaço em branco.
As palavras-passe não podem corresponder a uma palavra-passe que já usou no passado.
Pode personalizar esta configuração para corresponder à sua política de palavra-passe.
Além disso, também pode instalar o django-zxcvbn-password o que dá bastante estimativas realistas de complexidade da palavra-passe e permite rejeitar palavras-passe abaixo de um determinado limite.
Autenticação por SAML¶
Novo na versão 4.1.1.
Siga as instruções do Python Social Auth para configuração. Diferenças notáveis:
Weblate tem suporte a único IDP que tem de ser chamado de
weblate
emSOCIAL_AUTH_SAML_ENABLED_IDPS
.A URL de metadados XML de SAML é
/accounts/metadata/saml/
.As configurações a seguir são preenchidas automaticamente:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Exemplo de configuração:
# Authentication configuration
AUTHENTICATION_BACKENDS = (
"social_core.backends.email.EmailAuth",
"social_core.backends.saml.SAMLAuth",
"weblate.accounts.auth.WeblateUserBackend",
)
# Social auth backends setup
SOCIAL_AUTH_SAML_SP_ENTITY_ID = f"https://{SITE_DOMAIN}/accounts/metadata/saml/"
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "-----BEGIN CERTIFICATE-----"
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----"
SOCIAL_AUTH_SAML_ENABLED_IDPS = {
"weblate": {
"entity_id": "https://idp.testshib.org/idp/shibboleth",
"url": "https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO",
"x509cert": "MIIEDjCCAvagAwIBAgIBADA ... 8Bbnl+ev0peYzxFyF5sQA==",
"attr_name": "full_name",
"attr_username": "username",
"attr_email": "email",
}
}
SOCIAL_AUTH_SAML_ORG_INFO = {
"en-US": {
"name": "example",
"displayname": "Example Inc.",
"url": "http://example.com"
}
}
SOCIAL_AUTH_SAML_TECHNICAL_CONTACT = {
"givenName": "Tech Gal",
"emailAddress": "technical@example.com"
}
SOCIAL_AUTH_SAML_SUPPORT_CONTACT = {
"givenName": "Support Guy",
"emailAddress": "support@example.com"
}
A configuração padrão extrai detalhes do utilizador dos seguintes atributos, configure o seu IDP para fornecê-los:
Atributo |
Referência de URI SAML |
---|---|
Nome completo |
|
Primeiro nome |
|
Nome familiar |
|
|
|
Nome de utilizador |
|
Dica
O exemplo acima e a imagem do Docker definem um IDP rotulado como weblate
. Pode precisar configurar este texto como Relay no seu IDP.
Veja também
Autenticação por LDAP¶
A autenticação por LDAP pode ser melhor alcançada utilizando o pacote django-auth-ldap. Pode instalá-lo através dos meios habituais:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Dica
Este pacote está incluído no contentor Docker, veja Instalando a usar Docker.
Nota
Há algumas incompatibilidades no módulo Python LDAP 3.1.0, o que o pode impedir de usar essa versão. Se obter o erro AttributeError: “module” object has no attribute “_trace_level”, fayendo o downgrade para python-ldap 3.0.0 pode ajudar.
Uma vez que tenha o pacote instalado, pode ligá-lo à autenticação do Django:
# Add LDAP backed, keep Django one if you want to be able to sign in
# even without LDAP for admin account
AUTHENTICATION_BACKENDS = (
"django_auth_ldap.backend.LDAPBackend",
"weblate.accounts.auth.WeblateUserBackend",
)
# LDAP server address
AUTH_LDAP_SERVER_URI = "ldaps://ldap.example.net"
# DN to use for authentication
AUTH_LDAP_USER_DN_TEMPLATE = "cn=%(user)s,o=Example"
# Depending on your LDAP server, you might use a different DN
# like:
# AUTH_LDAP_USER_DN_TEMPLATE = 'ou=users,dc=example,dc=com'
# List of attributes to import from LDAP upon sign in
# Weblate stores full name of the user in the full_name attribute
AUTH_LDAP_USER_ATTR_MAP = {
"full_name": "name",
# Use the following if your LDAP server does not have full name
# Weblate will merge them later
# 'first_name': 'givenName',
# 'last_name': 'sn',
# Email is required for Weblate (used in VCS commits)
"email": "mail",
}
# Hide the registration form
REGISTRATION_OPEN = False
Nota
Deve remover 'social_core.backends.email.EmailAuth'
da configuração AUTHENTICATION_BACKENDS
, caso contrário, os utilizadores poderão definir a palavra-passe deles no Weblate e autenticar a usar-a. Manter 'weblate.accounts.auth.WeblateUserBackend'
ainda é necessário para fazer permissões e facilitar utilizadores anónimos. Também permitirá que faça login a usar uma conta administrativa local, se a criou (por exemplo, a usar createadmin
).
Usando palavra-passe associada¶
Se não puder usar a associação direta para autenticação, precisará usar a pesquisa e fornecer um utilizador para associar à pesquisa. Por exemplo:
import ldap
from django_auth_ldap.config import LDAPSearch
AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)
Integração com o Active Directory¶
import ldap
from django_auth_ldap.config import LDAPSearch, NestedActiveDirectoryGroupType
AUTH_LDAP_BIND_DN = "CN=ldap,CN=Users,DC=example,DC=com"
AUTH_LDAP_BIND_PASSWORD = "password"
# User and group search objects and types
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
)
# Make selected group a superuser in Weblate
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
# is_superuser means user has all permissions
"is_superuser": "CN=weblate_AdminUsers,OU=Groups,DC=example,DC=com",
}
# Map groups from AD to Weblate
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
"OU=Groups,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)"
)
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()
AUTH_LDAP_FIND_GROUP_PERMS = True
# Optionally enable group mirroring from LDAP to Weblate
# AUTH_LDAP_MIRROR_GROUPS = True
Veja também
Autenticação por CAS¶
A autenticação por CAS pode ser alcançada a usar um pacote como o django-cas-ng.
O primeiro passo é divulgar o campo de e-mail do utilizador via CAS. Isso tem que ser configurado no próprio servidor CAS e requer que utilize pelo menos CAS v2, já que o CAS v1 não tem suporte a atributos.
O segundo passo é atualizar a Weblate para utilizar o seu servidor CAS e os seus atributos.
Para instalar django-cas-ng:
pip install django-cas-ng
Uma vez que o pacote está instalado, pode conectá-lo ao sistema de autenticação do Django a modificar o ficheiro settings.py
:
# Add CAS backed, keep the Django one if you want to be able to sign in
# even without LDAP for the admin account
AUTHENTICATION_BACKENDS = (
"django_cas_ng.backends.CASBackend",
"weblate.accounts.auth.WeblateUserBackend",
)
# CAS server address
CAS_SERVER_URL = "https://cas.example.net/cas/"
# Add django_cas_ng somewhere in the list of INSTALLED_APPS
INSTALLED_APPS = (..., "django_cas_ng")
Finalmente, um sinal pode ser usado para mapear o campo de e-mail para o objeto do utilizador. Para que isso funcione, tem que importar o sinal do pacote django-cas-ng e conectar o seu código com este sinal. Fazer isto em configurações de ficheiro pode causar problemas, portanto, é sugerido pôr-lo:
No método
django.apps.AppConfig.ready()
da configuração do seu appNo ficheiro
urls.py
do projeto (quando não há modelos)
from django_cas_ng.signals import cas_user_authenticated
from django.dispatch import receiver
@receiver(cas_user_authenticated)
def update_user_email_address(sender, user=None, attributes=None, **kwargs):
# If your CAS server does not always include the email attribute
# you can wrap the next two lines of code in a try/catch block.
user.email = attributes["email"]
user.save()
Veja também
Configurando autenticação por Django de terceiros¶
Geralmente, qualquer extensão de autenticação Django deve funcionar com Weblate. Basta seguir as instruções da extensão, lembrando de manter o backend do utilizador Weblate instalado.
Veja também
Normalmente, a instalação consiste em adicionar uma autenticação de backend a AUTHENTICATION_BACKENDS`e a instalar uma app de autenticação (se houver) no :setting:`django:INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Controlo de acesso¶
O Weblate vem com um sistema de privilégios fino para atribuir permissões ao utilizador para toda a instância ou num escopo limitado.
Alterado na versão 3.0: Antes do Weblate 3.0, o sistema de privilégios era baseado apenas no sistema de privilégios do Django, mas é agora especificamente construído para Weblate. Se for usado algo mais antigo, consulte a documentação para a versão específica que está a usar.
Controle de acesso personalizado¶
Se não está a administrar toda a instalação do Weblate e apenas tem acesso para gerir certos projetos (como no Hosted Weblate), as suas opções de gestão de controle de acesso são limitadas às seguintes configurações. Se não precisa de nenhuma configuração complexa, elas são suficientes para si.
Controlo de acesso ao projeto¶
Nota
Este recurso está indisponível para os projetos que executam o plano Libre no Hosted Weblate.
Pode limitar o acesso do utilizador a projetos individuais a selecionar uma configuração diferente de Controle de acesso. As opções disponíveis são:
- Pública
Visível publicamente, traduzível para todos os utilizadores autenticados.
- Protegido
Publicamente visível, mas somente traduzível por utilizadores selecionados.
- Privado
Visível e traduzível apenas por utilizadores selecionados.
- Personalizado
Os recursos de Gestão de utilizadores serão desativados; por padrão, todos os utilizadores estão proibidos de realizar qualquer ação no projeto. Terá que configurar todas as permissões a usar Controle de acesso personalizado.
O Controle de acesso pode ser alterado na guia Acesso da configuração (Gerir ↓ Configurações) de cada projeto.

O valor padrão pode ser alterado por DEFAULT_ACCESS_CONTROL
.
Nota
Mesmo para projetos Privados, algumas informações sobre o seu projeto serão expostas: estatísticas e resumo de linguagem para toda a instância incluirão contagens para todos os projetos, apesar da configuração de controle de acesso. O nome do seu projeto e outras informações não podem ser revelados por meio disso.
Nota
O conjunto real de permissões disponíveis para utilizadores por padrão em projetos Públicos, Protegidos e Privados pode ser redefinido pelo administrador da instância de Weblate a usar configurações personalizadas.
Aviso
Ao ativar o controle de acesso Personalizado, o Weblate removerá todos os grupos especiais que ele criou para um projeto selecionado. Se estiver a fazer isso sem permissão administrativa para toda a instância de Weblate, perderá instantaneamente o seu acesso para gerir o projeto.
Veja também
A gerir controle de acesso por projeto¶
Os utilizadores com o privilégio Gerir acesso ao projeto (veja a Lista de privilégios) podem gerir utilizadores em projetos com controle de acesso não Personalizado. Eles podem atribuir os utilizadores a um dos seguintes grupos.
Para projetos Públicos, Protegidos e Privados:
- Administração
Inclui todas as permissões disponíveis para o projeto.
- Revisar (somente se fluxo de trabalho de revisão estiver ativado)
Pode aprovar traduções durante a revisão.
Para projetos Protegidos e Privados apenas:
- Traduzir
Pode traduzir o projeto e enviar traduções feitas offline.
- Fontes
Pode editar cadeias fonte (se permitido nas configurações do projeto) e informações de cadeias fonte.
- Idiomas
Pode gerir idiomas traduzidos (adicionar ou remover traduções).
- Glossário
Pode gerir glossário (adicionar ou remover entradas e também enviar).
- Memória
Pode gerir memória de tradução.
- Capturas de ecrã
Pode gerir capturas de ecrã (adicioná-las ou removê-las e associá-las a cadeias fonte).
- VCS
Pode gerir VCS e acessar o repositório exportado.
- Faturação
Pode acessar informações de cobrança e configurações (consulte Faturação).
Infelizmente, não é possível alterar este conjunto predefinido de grupos por enquanto. Além disso, dessa forma não é possível dar apenas algumas permissões adicionais a todos os utilizadores.
Nota
Para controle de acesso não-Customizado, uma instância de cada grupo descrito acima é na verdade definida para cada projeto. O nome real destes grupos será Projeto@Grupo
, também exibido na interface de administração do Django desta forma. Embora eles não possam ser editados a partir da interface de utilizador do Weblate.

Esses recursos estão disponíveis na página Controle de acesso, que pode ser acessada no projeto a partir do menu Gerir ↓ Utilizadores.
Novo convite de utilizador¶
Além de adicionar um utilizador existente ao projeto, também é possível convidar novos. Qualquer novo utilizador será criado imediatamente, mas a conta permanecerá inativa até que entre com uma ligação no convite enviado por e-mail. Não é necessário ter nenhum privilégio de todo o site para fazer isso, a permissão de gestão de acesso no escopo do projeto (por exemplo, uma associação no grupo Administração) seria suficiente.
Dica
Se o utilizador convidado perdeu a validade do convite, ele pode definir a sua palavra-passe a usar o endereço de e-mail convidado no formulário de redefinição de palavra-passe, pois a conta já foi criada.
Novo na versão 3.11: É possível reenviar o e-mail para convites de utilizador (a invalidar qualquer convite enviado anteriormente).
O mesmo tipo de convite está disponível em todo o site a partir da interface de gestão na guia Utilizadores.
A bloquear utilizadores¶
Novo na versão 4.7.
No caso de alguns utilizadores se comportarem mal no seu projeto, tem a opção de bloqueá-los de contribuir. O utilizador bloqueado ainda poderá ver o projeto se tiver permissão para isso, mas não poderá contribuir.
Gestão de permissões por projeto¶
Pode definir os seus projetos para Protegido ou Privado e gerir utilizadores por projeto na interface de utilizador do Weblate.
Por padrão, isso impede que o Weblate conceda acesso fornecido por grupos padrão Utilizadores e Visualizadores devido à própria configuração desses grupos. Isso não impede que conceda permissões a esses projetos em todo o site, a alterar grupos padrão, a criar um novo ou a criar configurações personalizadas adicionais para componentes individuais, conforme descrito em Controle de acesso personalizado abaixo.
Um dos principais benefícios de gerir permissões por meio da interface de utilizador do Weblate é que pode delegá-las a outros utilizadores sem dar a eles o privilégio de superutilizador. Para isso, adicione-os ao grupo Administração do projeto.
Controle de acesso personalizado¶
Nota
Este recurso está indisponível para os projetos que executam o plano Libre no Hosted Weblate.
O sistema de permissão é baseado em grupos e funções, onde as funções de definir um conjunto de permissões e grupos vinculam-nas aos utilizadores e traduções. Veja Utilizadores, papéis, grupos e permissões para mais detalhes.
Os recursos mais poderosos do sistema de controle de acesso do Weblate por enquanto estão disponíveis apenas através da interface administrativa do Django. Pode usá-la para gerir as permissões de qualquer projeto. Não precisa necessariamente definir o controle de acesso para Personalizado para utilizá-lo. No entanto, deve ter privilégios de superutilizador para usá-lo.
Se não está interessado em detalhes de implementação e apenas deseja criar uma configuração simples o suficiente com base nos padrões, ou não tem um acesso de todo o site para toda a instalação do Weblate (como em Hosted Weblate), consulte a secção Controle de acesso personalizado.
Configurações comuns¶
Esta secção contém uma visão geral de algumas configurações comuns nas quais pode estar interessado.
Gestão de permissões para todo o site¶
Para gerir permissões para uma instância inteira de uma vez, adicione utilizadores aos grupos padrão:
Utilizadores (isso é feito por padrão pela associação de grupo automática).
Revisores (se estiver a usar fluxo de trabalho de revisão com revisores dedicados).
Gestores (se deseja delegar a maioria das operações de gestão a outra pessoa).
Deve manter todos os projetos configurados como Públicos (veja Controlo de acesso ao projeto), caso contrário as permissões de todo o site fornecidas pela participação nos grupos Utilizadores e Revisores não terão nenhum efeito.
Também pode conceder algumas permissões adicionais de sua escolha aos grupos padrão. Por exemplo, pode dar permissão para gerir capturas de ecrã para todos os Utilizadores.
Também pode definir alguns novos grupos personalizados. Se deseja continuar a gerir as suas permissões em todo o site para esses grupos, escolha um valor apropriado para Seleção de projeto (por exemplo Todos os projetos ou Todos os projetos públicos).
Permissões personalizadas a idiomas, componentes ou projetos¶
Pode criar os seus próprios grupos dedicados para gerir permissões para objetos distintos, como linguagens, componentes e projetos. Embora esses grupos só possam conceder privilégios adicionais, não pode revogar qualquer permissão concedida por grupos de todo o site ou por projeto a adicionar outro grupo personalizado.
Exemplo:
Se quiser (por qualquer motivo) permitir a tradução para um idioma específico (digamos, tcheco) apenas para um conjunto fechado de tradutores confiáveis, a manter as traduções para outros idiomas públicos, terá que:
Remover a permissão para traduzir Tcheco de todos os utilizadores. Na configuração padrão, isso pode ser feito a alterar o grupo padrão Utilizadores.
Grupo Utilizadores¶ Seleção de idioma
Como definido
Idiomas
Todos, exceto Tcheco
Adicionar um grupo dedicado para tradutores(as) de Tcheco.
Grupo Tradutores(as) de tcheco¶ Funções
Utilizadores(as) avançados(as)
Seleção de projeto
Todos os projetos públicos
Seleção de idioma
Como definido
Idiomas
Tcheco
Adicionar utilizadores aos quais deseja conceder permissões a este grupo.
Como pode ver, a gestão de permissões dessa maneira é poderosa, mas pode ser um trabalho tedioso. Não pode delegá-lo a outro utilizador, a menos que conceda permissões de superutilizador.
Utilizadores, papéis, grupos e permissões¶
Os modelos de autenticação consistem em vários objetos:
- Permissão
Permissão individual definida pelo Weblate. Permissões não podem ser atribuídas a utilizadores. Isso só pode ser feito através da atribuição de papéis.
- Função
Um papel define um conjunto de permissões. Isso permite a reutilização desses conjuntos em vários lugares, a facilitar a administração.
- Utilizador
Utilizador pode pertencer a vários grupos.
- Grupo
Grupo conecta papéis, utilizadores e objetos de autenticação (projetos, idiomas e listas de componentes).
Nota
Um grupo não pode ter papéis lhe atribuídos; nesse caso, o acesso para navegar no projeto por qualquer pessoa é presumido (veja abaixo).
Acesso para navegar até um projeto¶
Um utilizador tem que ser um membro de um grupo vinculado ao projeto ou qualquer componente dentro daquele projeto. Ser membro é suficiente, não são necessárias permissões específicas para navegar o projeto (isso é usado no grupo padrão Visualizadores, consulte Lista de grupos).
Acesso para navegar até um componente¶
Um utilizador pode acessar componentes irrestritos assim que for possível acessar o projeto dos componentes (e terá todas as permissões que foram concedidas ao utilizador para o projeto). Com o Acesso restrito ativado, o acesso ao componente requer permissões explícitas para o componente (ou uma lista de componentes na qual o componente está contido).
Escopo de grupos¶
O escopo da permissão atribuída pelas funções nos grupos é aplicado pelas seguintes regras:
Se o grupo especificar qualquer Lista de componentes, todas as permissões dadas aos membros desse grupo serão concedidas para todos os componentes nas listas de componentes anexadas ao grupo e um acesso sem permissões adicionais é concedido para todos os projetos estes componentes estão contidos. Componentes e Projetos são ignorados.
Se o grupo especificar quaisquer Componentes, todas as permissões dadas aos membros desse grupo são concedidas para todos os componentes anexados ao grupo e um acesso sem permissões adicionais é concedido para todos os projetos nos quais que esses componentes estão. Projetos são ignorados.
Caso contrário, se o grupo especificar Projetos, seja a listar-os diretamente ou a ter Seleção de projetos definida com um valor como Todos os projetos públicos, todas essas permissões são aplicadas a todos os projetos, que efetivamente concede as mesmas permissões para acessar todos os componentes irrestritos dos projetos.
As restrições impostas pelos Idiomas de um grupo são aplicadas separadamente, quando é verificado se um utilizador tem acesso para realizar determinadas ações. Ou seja, é aplicado apenas a ações diretamente relacionadas ao próprio processo de tradução, como revisar, gravar traduções, adicionar sugestões, etc.
Dica
Use Seleção de idioma ou Seleção de projeto para automatizar a inclusão de todos os idiomas ou projetos.
Exemplo:
Digamos que haja um projeto
foo
com os componentesfoo/bar
efoo/baz
e o seguinte grupo:
Grupo Revisores-admins de espanhol¶ Funções
Rever cadeias, Gerir repositório
Componentes
foo/bar
Idiomas
Espanhol
Membros deste grupo terão as seguintes permissões (a presumir as configurações padrão de papeis):
Acesso geral (navegação) para todo o projeto
foo
incluindo ambos componentes nele:foo/bar
efoo/baz
.Rever cadeias na tradução para espanhol de
foo/bar
(não em outro lugar).Gerir VCS para todo o repositório
foo/bar
, por exemplo, fazer commit de alterações pendentes feitas por tradutores de todos os idiomas.
Atribuições de grupo automáticas¶
Na parte inferior da página de edição Grupo na interface administrativa do Django, pode especificar Associações automáticas de grupo, que é uma lista de expressões regulares usadas para atribuir automaticamente utilizadores recém-criados a um grupo com base nos endereços de e-mail deles. Esta associação só acontece após a criação da conta.
O caso de uso mais comum para o recurso é atribuir todos os novos utilizadores a algum grupo padrão. Para fazer isso, provavelmente desejará manter o valor padrão (^.*$
) No campo da expressão regular. Outro caso de uso para essa opção pode ser conceder alguns privilégios adicionais aos funcionários da sua empresa por padrão. Supondo que todos eles usem endereços de e-mail corporativos no seu domínio, isso pode ser feito com uma expressão como ^.*@minhaempresa.com
.
Nota
Associação automática de grupo para Utilizadores e Visualizadores sempre será recriada ao atualizar de uma versão anterior do Weblate para outra. Se deseja desativá-los, defina a expressão regular para ^$
(que nunca corresponderá).
Nota
Por enquanto, não há como adicionar em massa utilizadores já existentes a algum grupo por meio da interface do utilizador. Para isso, pode recorrer ao uso da API REST.
Grupos e funções predefinidos¶
Após a instalação, um conjunto padrão de grupos é criado (veja Lista de grupos).
Esses funções e grupos são criados após a instalação. As funções embutidas são sempre mantidas atualizadas pela migração do banco de dados ao atualizar. Não pode alterá-las. Defina uma nova função caso queira definir o seu próprio conjunto de permissões.
Lista de privilégios¶
- Faturamento (consulte Faturação)
Visualizar informações de faturamento [Administração, Faturamento]
- Alterações
Descarrgar alterações [Administração]
- Comentários
Publicar comentário [Administração, Editar fonte, Utiliyador avançado, Revisar cadeias, Traduzir]
Apagar comentário [Administração]
- Componente
Editar configurações do componente [Administração]
Bloquear componente, a evitar traduções [Administração]
- Glossário
Adicionar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]
Editar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]
Apagar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]
Enviar entradas do glossário [Administração, Gerir glossário, Utilizador avançado]
- Sugestões automáticas
Usar sugestões automáticas [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
- Memória de tradução
Editar memória de tradução [Administração, Gerir memória de tradução]
Apagar memória de tradução [Administração, Gerir memória de tradução]
- Projetos
Editar configurações do projeto [Administração]
Gerir acesso do projeto [Administração]
- Relatórios
Descarragar relatórios [Administração]
- Capturas de ecrã
Adicionar captura de ecrã [Administração, Gerir capturas de ecrã]
Editar captura de ecrã [Administração, Gerir capturas de ecrã]
Apagar captura de ecrã [Administração, Gerir capturas de ecrã]
- Cadeias fonte
Editar informações adicionais da cadeia [Administração, Editar fonte]
- Cadeias
Adicionar nova cadeia [Administração]
Remover uma cadeia [Administração]
Descartar verificação com falha [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
Editar cadeias [Administração, Editar fonte, Utilizador avançado, Revisar cadeias, Traduzir]
Revisar cadeias [Administração, Revisar cadeias]
Editar cadeia quando as sugestões são forçadas [Administração, Rever cadeias]
Editar cadeias fonte [Administração, Editar fonte, Utilizador avançado]
- Sugestões
Aceitar sugestão [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
Adicionar sugestão [Administração, Editar fonte, ``Adicionar sugestão, Utilizador avançado, Rever cadeias, Traduzir]
Apagar sugestão [Administração, Utilizador avançado]
Votar em sugestão [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
- Traduções
Adicionar idioma para tradução [Administração, Utilizador avançado, Gerir idiomas]
Efetuar tradução automática [Administração, Gerir idiomas]
Apagar tradução existente [Administração, Gerir idiomas]
Adicionar idiomas para tradução [Administração, Gerir idiomas]
- Envios
Definir autor da tradução enviada [Administração]
Sobrescrever cadeias existentes com envio [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
Enviar traduções [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]
- VCS
Acessar o repositório interno [Administração, Acessar repositório, Utilizador avançado, Gerir repositório]
Submeter as alterações ao repositório interno [Administração, Geriar repositório]
Fazer push das alterações do repositório interno [Administração, Gerir repositório]
Redefinir as alterações no repositório interno [Administração, Gerir repositório]
Ver o local do repositório upstream [Administração, Acessar repositório, Utilizador avançado, Gerir repositório]
Atualizar o repositório interno [Administração, Gerir repositório]
- Privilégios para todo o site
Utilizar a interface de gestão
Adicionar novos projetos
Adicionar definições de idioma
Gerir definições de idioma
Gerir grupos
Gerir utilizadores
Gerir funções
Gerir anúncios
Gerir a memória de tradução
Gerir as listas de componentes
Nota
Privilégios para todo o site não são concedidos a nenhuma função padrão. Eles são poderosos e muito próximos do estado de superutilizador. A maioria deles afetam todos os projetos da sua instalação do Weblate.
Lista de grupos¶
Os seguintes grupos são criados após a instalação (ou após a execução de setupgroups
) e está livre a modificá-los. A migração irá, no entanto, recriá-los se apagá-los ou renomeá-los.
- Convidados
Define permissões para utilizadores não autenticados.
Este grupo contém apenas utilizadores anônimos (consulte
ANONYMOUS_USER_NAME
).Pode remover funções deste grupo para limitar as permissões para utilizadores não autenticados.
Funções predefinidas: Adicionar sugestão, Acessar repositório
- Visualizadores
Essa função garante a visibilidade de projetos públicos para todos os utilizadores. Por padrão, todos os utilizadores são membros deste grupo.
Por padrão, associação automática de grupo faz com que todos os novos membros de contas deste grupo quando eles entram.
Funções predefinidas: nenhuma
- Utilizadores
Grupo predefinido para todos os utilizadores.
Por padrão, associação automática de grupo faz com que todos os novos membros de contas deste grupo quando eles entram.
Funções predefinidas: Utilizador avançado
- Revisores
Grupo para revisores (consulte Fluxos de trabalho de tradução).
Funções predefinidas: Revisar cadeias
- Gestores
Grupo pra administradores.
Funções predefinidas: Administração
Aviso
Nunca remova os grupos e utilizadores predefinidos do Weblate, pois isso pode levar a problemas inesperados! Se não tiver uso para eles, pode remover todos os privilégios deles.
Restrições adicionais de acesso¶
Se quiser usar a instalação do Weblate de uma maneira menos pública, ou seja, permitir novos utilizadores apenas por convite, isso pode ser feito a configurar o Weblate de forma que apenas utilizadores conhecidos tenham acesso a ele. Para fazer isso, pode definir REGISTRATION_OPEN
para False
para prevenir registos de quaisquer novos utilizadores e definir REQUIRE_LOGIN
para /.*
para exigir login para acessar todas as páginas do site. Esta é basicamente a forma de bloquear a instalação do Weblate.
Dica
Pode usar os convites embutidos para adicionar novos utilizadores.
Projetos de tradução¶
Organização de tradução¶
O Weblate organiza o conteúdo VCS traduzível do projeto/componentes numa estrutura semelhante a uma árvore.
O objeto de nível inferior é Configuração de projeto, que deve conter todas as traduções pertencentes a um conjunto (por exemplo, tradução de uma aplicação em várias versões e/ou documentação que o acompanha).
No nível acima, Configuração de componente, que é na verdade o componente a ser traduzido, define o repositório VCS a ser usado e a máscara dos ficheiros a serem traduzidos.
Acima da Configuração de componente existem traduções individuais, manipuladas automaticamente pelo Weblate como ficheiros de tradução (que correspondem a Máscara de ficheiros definido em Configuração de componente) aparecem no repositório VCS.
O Weblate tem suporte a uma ampla gama de formatos de tradução (bilíngues e monolíngues) suportados pelo Translate Toolkit, veja Formatos de ficheiros suportados.
Nota
Pode compartilhar repositórios VCS clonados a usar URLs internas do Weblate. Usar este recurso é altamente recomendado quando tem muitos componentes a compartilhar o mesmo VCS. Ele melhora o desempenho e diminui o espaço em disco necessário.
Adicionando projetos e componentes de tradução¶
Alterado na versão 3.2: Uma interface para adicionar projetos e componentes está incluída e não precisa mais usar A interface administrativa do Django.
Alterado na versão 3.4: O processo de adição de componentes agora tem vários estágios, com descoberta automatizada da maioria dos parâmetros.
Com base nas suas permissões, novos projetos e componentes de tradução podem ser criados. É sempre permitido para utilizadores com a permissão Adicionar novos projetos e se a sua instância usa cobrança (por exemplo, como https://hosted.weblate.org/, veja Faturação), também pode criar aqueles com base na permissão dos seus planos da conta de utilizador que gere a cobrança.
Pode visualizar o seu plano de cobrança atual numa página separada:

A criação do projeto pode ser iniciada a partir daí, ou a utilizar o menu da barra de navegação, a preencher informações básicas sobre o projeto de tradução para completar a adição dele:

Depois de criar o projeto, é levado diretamente à página do projeto:

A criação de um novo componente de tradução pode ser iniciada com um único clique lá. O processo de criação de um componente possui vários estágios e detecta automaticamente a maioria dos parâmetros de tradução. Existem várias abordagens para a criação de componentes:
- Do controle de versão
Cria um componente do repositório de controle de versão remoto.
- Do componente existente
Cria um componente adicional ao existente, a escolher ficheiros diferentes.
- Ramo adicional
Cria um componente adicional ao existente, apenas para um ramo diferente.
- Enviar ficheiros de tradução
Envia os ficheiros de tradução para o Weblate caso não tenha controle de versão ou não queira integrá-lo ao Weblate. Pode atualizar o conteúdo posteriormente a usar a interface web ou API REST do Weblate.
- Traduzir documento
Upload single document or translation file and translate that.
- Começar do zero
Cria um projeto de tradução vazio e adiciona cadeias manualmente.
Depois de ter os componentes de tradução existentes, também pode adicionar facilmente novos para ficheiros adicionais ou ramos a usar o mesmo repositório.
Primeiro precisa preencher o nome e a localização do repositório:

Na próxima página, verá uma lista de recursos traduzíveis descobertos:

Como última etapa, analisa as informações do componente de tradução e preenche os detalhes opcionais:

Configuração de projeto¶
Cria um projeto de tradução e, em seguida, adiciona um novo componente para tradução nele. O projeto é como uma estante, na qual as traduções reais estão empilhadas. Todos os componentes no mesmo projeto compartilham sugestões e o dicionário deles; as traduções também são propagadas automaticamente por todos os componentes num único projeto (a menos que desligado na configuração do componente), veja Memória de Tradução.
Veja também
Esses atributos básicos configuram e informam os tradutores de um projeto:
Nome do projeto¶
Nome detalhado do projeto, usado para exibir o nome do projeto.
URL amigável¶
Nome do projeto adequado para URLs.
Site da Web do Projeto¶
URL onde os tradutores podem encontrar mais informações sobre o projeto.
Este é um parâmetro obrigatório, a menos que seja desligado por WEBSITE_REQUIRED
.
Instruções para tradução¶
URL para mais sites com instruções mais detalhadas para tradutores.
Definir cabeçalho «Language-Team»¶
Se o Weblate deve gerir o cabeçalho Language-Team
(este é um recurso apenas do GNU gettext no momento).
Controlo de acesso¶
Configura o controle de acesso por projeto, veja Controlo de acesso ao projeto para mais detalhes.
O valor padrão pode ser alterado por DEFAULT_ACCESS_CONTROL
.
Activar revisões¶
Ativa o fluxo de trabalho de revisão para traduções, veja Revisores dedicados.
Ativar revisões de fontes¶
Ativa o fluxo de trabalho de revisão para cadeia fonte, veja Revisões de cadeias fonte.
Veja também
Ativar hooks¶
Se Hooks de notificação não autenticados devem ser usados para este repositório.
Aliases do idioma¶
Define o mapeamento dos códigos de idioma ao importar traduções para o Weblate. Use isso quando os códigos de idioma forem inconsistentes nos seus repositórios e quiser obter uma visualização consistente no Weblate ou no caso de desejar usar uma nomenclatura fora do padrão dos seus ficheiros de tradução.
O caso de uso típico pode ser mapear inglês americano para inglês: en_US:en
Vários mapeamentos devem ser separados por vírgula: en_GB:en,en_US:en
Usando código não padrão: ia_FOO:ia
Dica
Os códigos de idioma são mapeados ao combinar os ficheiros de tradução e as correspondências diferenciam maiúsculas de minúsculas, por isso certifique-se de usar os códigos de idioma fonte na mesma forma usada nos nomes dos ficheiros.
Veja também
Configuração de componente¶
Um componente é um agrupamento de algo para tradução. Insere um local de repositório VCS e uma máscara de ficheiros para os ficheiros que deseja traduzir e o Weblate busca automaticamente neste VCS e encontra todos os ficheiros traduzíveis correspondentes.
Veja também
Pode encontrar alguns exemplos de configurações típicas nos Formatos de ficheiros suportados.
Nota
Recomenda-se manter os componentes de tradução num tamanho razoável – divida a tradução por qualquer coisa que faça sentido no seu caso (apps ou complementos individuais, capítulos de livros ou sites).
O Weblate lida facilmente com traduções com 10000s de cadeias, mas é mais difícil dividir o trabalho e coordenar entre os tradutores com componentes de tradução tão grandes.
Se a definição do idioma de uma tradução estiver a faltar, uma definição vazia é criada e nomeada como «cs_CZ (generated)». Deve ajustar a definição e relatar isso aos autores do Weblate, para que os idiomas em falta possam ser incluídos na próxima versão.
O componente contém todos os parâmetros importantes para trabalhar com o VCS e para obter traduções dele:
Nome do componente¶
Nome detalhado do componente, usado para exibir o nome do componente.
URL amigável do componente¶
Nome do componente adequado para URLs.
Projeto do componente¶
Configuração de projeto ao qual o componente pertence.
Sistema de controlo de versões¶
VCS para usar, veja Integração de controlo de versões para detalhes.
Veja também
Repositório do código-fonte¶
Repositório VCS usado para fazer pull das alterações.
Veja também
Veja Acessando repositórios para mais detalhes sobre especificar URLs.
Dica
Pode ser uma URL VCS real ou weblate://projeto/componente
a indicar que o repositório deve ser compartilhado com outro componente. Veja URLs internas do Weblate para mais detalhes.
URL de submissão do repositório¶
URL do repositório usado para fazer push. Esta configuração é usada apenas para Git e Mercurial e o suporte a push é desativado para estes quando está vazio.
Veja também
Veja Acessando repositórios para mais detalhes sobre como especificar uma URL de repositório e Fazendo push das alterações do Weblate para mais detalhes sobre como fazer push de mudanças do Weblate.
Navegador do repositório¶
URL de navegação do repositório usada para exibir os ficheiros fonte (localização das mensagens usadas). Quando vazio, nenhuma dessas ligações será gerado. Pode usar Marcação de modelo.
Por exemplo, no GitHub, use algo como: https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}
In case your paths are relative to different folder (path contains ..
), you
might want to strip leading directory by parentdir
filter (see
Marcação de modelo):
https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}}
URL do repositório exportado¶
URL para onde as alterações feitas pelo Weblate são exportadas. Isso é importante quando Tradução contínua não é usada, ou quando há a necessidade de mesclar manualmente as alterações. Pode usar Exportador git para automatizar isso para repositórios Git.
Ramo do repositório¶
De qual ramo fazer checkout do VCS e onde procurar traduções.
Ramo do push¶
Ramo para fazer push de alterações, deixe vazio para usar Ramo do repositório.
Nota
Atualmente, isso é compatível apenas com Git, GitLab e GitHub, mas é ignorado para outras integrações VCS.
Veja também
Máscara de ficheiros¶
Máscara de ficheiros a traduzir, incluindo caminho. Deve incluir um «*» a substituir o código de idioma (veja Definições de idioma para informações sobre como isso é processado). Caso seu repositório contenha mais de um ficheiro de tradução (por exemplo, mais domínios gettext), precisa criar um componente para cada um deles.
Por exemplo, po/*.po
ou locale/*/LC_MESSAGES/django.po
.
No caso do seu nome de ficheiro conter caracteres especiais como [
, ]
, eles precisam ser escapados como [[]
ou []]
.
Ficheiro de idioma base monolingue¶
Ficheiro base a conter definições de cadeias para Componentes monolínguas.
Editar ficheiro base¶
Permite a edição do ficheiro base para Componentes monolínguas.
Ficheiro de idioma intermédio¶
Ficheiro de idioma intermediário para Componentes monolínguas. Na maioria dos casos, este é um ficheiro de tradução fornecido por programadores e é usado ao criar cadeias de origem reais.
Quando definido, as cadeias fonte são baseados neste ficheiro, mas todos os outros idiomas são baseados em Ficheiro de idioma base monolingue. Caso a cadeia não seja traduzida para o idioma fonte, a tradução para outros idiomas é proibida. Isso fornece uma Portal de qualidade para cadeias fonte.
Modelo para novas traduções¶
Ficheiro base usado para gerar novas traduções, por exemplo, um ficheiro .pot
com gettext.
Dica
Em muitos formatos monolíngues, o Weblate começa com um ficheiro em branco por padrão. Use-o no caso de desejar que todas as cadeias estejam presentes com um valor vazio ao criar uma tradução.
Formato de ficheiro¶
Formato do ficheiro de tradução, veja também Formatos de ficheiros suportados.
Endereço para reportar erros na cadeia fonte¶
Endereço de e-mail usado para relatar bugs upstream. Este endereço também receberá notificação sobre quaisquer comentários da cadeia fonte feitos no Weblate.
Permitir propagação da tradução¶
Pode desativar a propagação de traduções para este componente de outros componentes dentro do mesmo projeto. Isso realmente depende do que está a traduzir, às vezes é desejável ter feito uso de uma tradução mais de uma vez.
Normalmente, é uma boa ideia desligar isso para traduções monolíngues, a menos que esteja a usar os mesmos IDs em todo o projeto.
O valor padrão pode ser alterado por DEFAULT_TRANSLATION_PROPAGATION
.
Veja também
Ativar sugestões¶
Se sugestões de tradução são aceitas para este componente.
Votação de sugestão¶
Ativa a emissão de votos para sugestões, veja Votação de sugestão.
Aceitar sugestões automaticamente¶
Aceita automaticamente sugestões votadas, veja Votação de sugestão.
Marcadores de tradução¶
Personalização de verificações de qualidade e outros comportamentos do Weblate, veja Personalizando comportamento a usar marcadores.
Verificações impostas¶
Lista de verificações que não podem ser ignoradas, veja Forçar verificações.
Nota
Forçar a verificação não a ativa automaticamente, ainda deve ativá-la Personalizando comportamento a usar marcadores em Marcadores de tradução ou Informações adicionais sobre cadeias fonte.
Licença da tradução¶
Licença da tradução (não precisa ser igual à licença do código-fonte).
Acordo de contribuidor¶
Acordo do utilizador que tem de ser aprovado antes do utilizador poder traduzir este componente.
Adicionar nova tradução¶
Como lidar com solicitações de criação de novos idiomas. Opções disponíveis:
- Contactar gestores
O utilizador pode selecionar o idioma desejado e os mantenedores do projeto receberão uma notificação sobre isso. Cabe adiciona-los (ou não) o idioma ao repositório.
- Apontar para URL com instruções de tradução
É apresentado ao utilizador uma ligação para a página que descreve o processo de iniciar novas traduções. Use-o caso deseje um processo mais formal (por exemplo, formar uma equipa antes de iniciar a tradução real).
- Criar novo ficheiro de idioma
O utilizador pode selecionar o idioma e o Weblate cria automaticamente o ficheiro para ele e a tradução pode começar.
- Desativar adição de novas traduções
Não haverá a opção para o utilizador iniciar uma nova tradução.
Dica
Os administradores do projeto podem adicionar novas traduções mesmo se estiver desativado aqui quando for possível (tanto Modelo para novas traduções ou o formato de ficheiro tem suporte a partir de um ficheiro vazio).
Veja também
Gerir cadeias¶
Novo na versão 4.5.
Configura se os utilizadores no Weblate terão permissão para adicionar novos textos e remover os existentes. Ajuste isso para corresponder ao seu fluxo de trabalho de localização – como os novos textos devem ser introduzidos.
Para formatos bilíngues, os textos são normalmente extraídos do código-fonte (por exemplo, usando xgettext) e adicionar novas strings no Weblate deve ser desativado (elas seriam descartadas na próxima vez que atualizasse os ficheiros de tradução). No Weblate, pode gerir textos para cada tradução e não exige que os textos em todas as traduções sejam consistentes.
Para formatos monolingues, as cadeias são geridas apenas no idioma fonte e são automaticamente adicionadas ou removidas nas traduções. As cadeias aparecem nos ficheiros de tradução assim que são traduzidas.
Estilo de código de idioma¶
Personalizar o código de idioma usado para gerar o nome do ficheiro para traduções criadas por Weblate.
Estilo de união¶
Pode configurar como as atualizações do repositório upstream são tratadas. Isso pode não ser compatível com alguns VCSs. Veja Mesclar ou rebase para mais detalhes.
Valor predefindo pode ser alterado por DEFAULT_MERGE_STYLE
.
Mensagens de commit, add, merge e extensão¶
Mensagem usada ao fazer commit uma tradução, veja Marcação de modelo.
O valor predefinido pode ser alterado por DEFAULT_ADD_MESSAGE
, DEFAULT_ADDON_MESSAGE
, DEFAULT_COMMIT_MESSAGE
, DEFAULT_DELETE_MESSAGE
, DEFAULT_MERGE_MESSAGE
.
Enviar ao submeter¶
Se as alterações confirmadas devem ser enviadas automaticamente para o repositório upstream. Quando ativado, o push é iniciado assim que o Weblate confirma as alterações no repositório subjacente dele (veja Commits adiados). Para ativar o push URL de push do repositório também deve ser configurado.
Idade das alterações a fazer commit¶
Define a idade (em horas) das alterações antes de ser feito commit pela tarefa em segundo plano ou pelo comando de gestão commit_pending
. Todas as alterações num componente tem commit feito quando houver pelo menos uma alteração anterior a esse período.
O valor predefinido pode ser alterado por COMMIT_PENDING_HOURS
.
Dica
Existem outras situações onde mudanças pendentes podem ter o commit feito, veja Commits adiados.
Bloquear com erro¶
Bloqueia o componente (e os componentes vinculados, consulte URLs internas do Weblate) no primeiro push ou mesclagem com falha no repositório upstream dele, ou extraia dele. Isso evita adicionar outros conflitos, que teriam que ser resolvidos manualmente.
O componente será desbloqueado automaticamente quando não houver mais erros de repositório.
Idioma fonte¶
Linguagem usada para textos fonte. Altere isso se estiver a traduzir de algo diferente do inglês.
Dica
Caso esteja a traduzir ficheiros bilíngues do inglês, mas também queira fazer correções na tradução para o inglês, escolha Inglês (Programador) como idioma fonte para evitar conflito entre o nome do idioma fonte e a tradução existente.
Para traduções monolíngues, pode usar tradução intermediária neste caso, veja Ficheiro de idioma intermédio.
Filtro de idioma¶
Expressão regular usada para filtrar a tradução ao examinar por uma máscara de ficheiro. Pode ser usada para limitar a lista de idiomas geridos pelo Weblate.
Nota
Precisa listar os códigos de idioma conforme aparecem no nome do ficheiro.
Alguns exemplos de filtragem:
Descrição do filtro |
Expressão regular |
---|---|
Apenas idiomas selecionados |
|
Exclui idiomas |
|
Filtra apenas códigos de duas letras |
|
Exclui ficheiros que não são idiomas |
|
Inclui todos os ficheiros (predfinição) |
|
Expressão regular das variantes¶
Expressão regular usada para determinar as variantes de um texto, veja Variantes de cadeias.
Nota
A maioria dos campos pode ser editada por proprietários ou gerentes de projetos, na interface do Weblate.
Prioridade¶
Componentes de prioridade mais elevada são oferecidos primeiro aos tradutores.
Acesso restrito¶
Por predefinição, o componente é visível para todos que tenham acesso ao projeto, mesmo se a pessoa não puder realizar nenhuma alteração no componente. Isso torna mais fácil manter a consistência da tradução dentro do projeto.
Restringir o acesso num componente ou nível de lista de componentes assume a permissão de acesso a um componente, independentemente das permissões de nível de projeto. Terá que conceder-lhe acesso explicitamente. Isso pode ser feito concedendo acesso a um novo grupo de utilizadores e colocando utilizadores nele, ou usando os grupos de controle de acesso predefinido personalizado ou privado.
O valor predefinido pode ser alterado em DEFAULT_RESTRICTED_COMPONENT
.
Dica
Isso se aplica aos administradores do projeto também – certifique-se de não perder o acesso ao componente após alternar o status.
Usar como um glossário¶
Novo na versão 4.5.
Permite usar este componente como glossário. Pode configurar como ele será listado a usar a Cor do glossário.
O glossário estará acessível em todos os projetos definidos por Compartilhar em projetos.
É recomendado ativar Gerir cadeias em glossários para permitir adicionar-lhes novas palavras.
Veja também
Cor do glossário¶
Cor de exibição para um glossário usado ao mostrar correspondências de palavras.
Marcação de modelo¶
O Weblate usa uma linguagem de marcação simples em vários lugares onde a renderização de texto é necessária. É baseado em The Django template language, então pode ser bastante poderoso.
Atualmente isso é usado em:
Formatação de mensagens de commit, veja Configuração de componente
As seguintes variáveis estão disponíveis nos modelos de componentes:
{{ language_code }}
Código do idioma
{{ language_name }}
Nome do idioma
{{ component_name }}
Nome do componente
{{ component_slug }}
URL amigável do componente
{{ project_name }}
Nome do projeto
{{ project_slug }}
URL amigável do projeto
{{ url }}
URL de tradução
{{ filename }}
Nome do ficheiro de tradução
{{ stats }}
Estatísticas de tradução, isso tem outros atributos, exemplos abaixo.
{{ stats.all }}
Contagem total de textos
{{ stats.fuzzy }}
Contagem de textos que precisam de revisão
{{ stats.fuzzy_percent }}
Percentagem de textos que precisam de revisão
{{ stats.translated }}
Contagem de textos traduzidos
{{ stats.translated_percent }}
Percentagem de textos traduzidos
{{ stats.allchecks }}
Quantidade de textos com falhas nas verificações
{{ stats.allchecks_percent }}
Percentagem de textos com falhas nas verificações
{{ author }}
Autor do commit atual, disponível apenas no escopo do commit.
{{ addon_name }}
Nome da extensão atualmente em execução, disponível apenas na mensagem de commit da extensão.
As seguintes variáveis estão disponíveis nos modelos de navegador ou editor de repositório:
{{branch}}
ramo atual
{{line}}
linha no ficheiro
{{filename}}
nome do ficheiro, também pode remover as partes principais usando o filtro
parentdir
, por exemplo{{filename|parentdir}}
Pode combiná-los com filtros:
{{ component|title }}
Pode usar as condições:
{% if stats.translated_percent > 80 %}Well translated!{% endif %}
Há uma tag adicional disponível para substituir caracteres:
{% replace component "-" " " %}
Pode combiná-lo com filtros:
{% replace component|capfirst "-" " " %}
Existem também filtros adicionais para manipular com nomes de ficheiros:
Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times: {{ filename|parentdir|parentdir }}
…e outros recursos de modelos do Django.
Velocidade de importação¶
Obter o repositório VCS e importar traduções ao Weblate pode ser um processo demorado, dependendo do tamanho das suas traduções. Aqui estão algumas dicas:
Otimizar a configuração¶
A configuração predefinida é útil para testar e depurar o Weblate, enquanto para uma configuração de produção, deve fazer alguns ajustes. Muitas delas têm um grande impacto no desempenho. Por favor, confira Configuração de produção para mais detalhes, especialmente:
Configure o Celery para executar tarefas em segundo plano (veja Tarefas de fundo a usar o Celery)
Verificar limites de recursos¶
Se estiver a importar grandes traduções ou repositórios, pode ser atingido por limitações de recursos do seu servidor.
Verifique a quantidade de memória livre, pois os ficheiros de tradução armazenados em cache pelo sistema operacional melhorará muito o desempenho.
As operações de disco podem ser um gargalo se houver muitos textos a serem processadas – o disco é enviado pelo Weblate e pelo banco de dados.
Núcleos de CPU adicionais podem ajudar a melhorar o desempenho de tarefas em segundo plano (veja Tarefas de fundo a usar o Celery).
Desativar verificações desnecessárias¶
Algumas verificações de qualidade podem ser bastante custosas e, se não forem necessárias, podem economizar algum tempo durante a importação, se omitidas. Veja CHECK_LIST
para informações sobre configuração.
Criação automática de componentes¶
Caso seu projeto tenha dezenas de ficheiros de tradução (por exemplo, para diferentes domínios gettext ou partes de apps Android), pode querer importá-los automaticamente. Isso pode ser feito na linha de comando usando import_project
ou import_json
, ou instalando a extensão Descoberta de componentes.
Para usar o complemento, primeiro precisa criar um componente para um ficheiro de tradução (escolha aquele que tem menos probabilidade de ser renomeado ou removido no futuro) e instalar o complemento neste componente.
Para os comandos de gestão, precisa criar um projeto que conterá todos os componentes e então executar import_project
ou import_json
.
Veja também
Definições de idioma¶
Para apresentar diferentes traduções corretamente, são necessárias informações sobre nome do idioma, direção de texto, definições plurais e código de idioma.
Analisando códigos de idioma¶
Ao analisar as traduções, o Weblate tenta mapear o código de idioma (geralmente o ISO 639-1) para qualquer objeto de idioma existente.
Pode ajustar ainda mais esse mapeamento no nível do projeto por Aliases do idioma.
Se nenhuma correspondência exata for encontrada, uma tentativa será feita para melhor encaixá-la num idioma existente. São testadas etapas a seguir:
Procuras sem diferenciar maiúsculo de minúsculo.
Normalizar sublinhados e traços.
Procurar aliases de idioma embutido.
Procurar por nome de idioma.
Ignorar o código de país padrão para o idioma dado – escolher
cs
em vez decs_CZ
.
Se isso também falhar, uma nova definição de idioma será criada a usar seu padrão (direção do texto da esquerda para a direita, um plural). A linguagem criada automaticamente com o código xx_XX
será nomeada como xx_XX (generated). Podia mudar isso na interface administrativa mais tarde, (veja Alterando as definições de idioma) e relatar ao rastreador de problemas (veja Contribuir ao Weblate), para que a definição apropriada possa ser adicionada ao próximo lançamento do Weblate.
Dica
No caso de ver algo indesejado como idioma, podia ajustar Filtro de idioma para ignorar tal ficheiro ao analisar traduções.
Veja também
Alterando as definições de idioma¶
Pode alterar as definições de idioma na interface de idiomas (URL /languages/
).
Durante a edição, certifique-se de que todos os campos estejam corretos (especialmente os plurais e a direção do texto), caso contrário, os tradutores não poderão editar adequadamente essas traduções.
Definições embutidas de idioma¶
Definições para cerca de 600 idiomas estão incluídas no Weblate e a lista é estendida a cada versão. Sempre que o Weblate é atualizado (mais especificamente sempre que weblate migrate é executado, veja Instruções genéricas de atualização) o banco de dados de idiomas é atualizado para incluir todas as definições de idioma enviadas no Weblate.
Este recurso pode ser desativado a usar UPDATE_LANGUAGES
. Também pode forçar a atualização do banco de dados para corresponder aos dados embutidos do Weblate a usar setuplang
.
Veja também
Códigos de idioma ambíguos e macrolinguagens¶
Em muitos casos, não é uma boa ideia usar código de idioma macro para uma tradução. O caso típico problemático pode ser a língua curda, que pode ser escrita em árabe ou latim, a depender da variante real. Para obter o comportamento correto no Weblate, é recomendável usar apenas códigos de idioma individuais e evitar macroidiomas.
Veja também
Definições de idioma¶
Cada idioma consiste nos seguintes campos:
Código do idioma¶
Código identificando o idioma. Weblate prefere códigos de duas letras, conforme definido pela ISO 639-1, mas usa códigos de ISO 639-2 or ISO 639-3 para idiomas que não têm código de duas letras. Ele também pode ter suporte a códigos estendidos, conforme definido por BCP 47.
Veja também
Nome do idioma¶
Nome visível do idioma. Os nomes dos idiomas incluídos no Weblate também estão a ser localizados a depender do idioma da interface do utilizador.
Direção do texto¶
Determina se o idioma é escrito da direita para a esquerda ou da esquerda para a direita. Esta propriedade é autodetectada corretamente para a maioria dos idiomas.
Quantidade de plurais¶
Quantidade de plurais usados no idioma.
Fórmula de plural¶
Fórmula de plural compatível com Gettext usada para determinar qual forma de plural é usada para determinada contagem.
Adicionando novas traduções¶
Alterado na versão 2.18: Nas versões anteriores a 2.18, o comportamento de adicionar novas traduções era específico do formato de ficheiro.
Weblate pode iniciar automaticamente uma nova tradução para todos os formatos de ficheiro.
Alguns formatos esperam começar com um ficheiro vazio e apenas cadeias traduzidas a serem incluídas (por exemplo, Recurso de cadeias de Android), enquanto outros esperam ter todas as chaves presentes (por exemplo, GNU gettext). Em algumas situações, isso realmente não depende do formato, mas sim do framework que usa para lidar com a tradução (por exemplo, com Ficheiro JSON).
Quando especifica Modelo para novas traduções em Configuração de componente, Weblate usará este ficheiro para iniciar novas traduções. Todas as traduções existentes serão removidas do ficheiro ao fazer isso.
Quando Modelo para novas traduções está vazio e o formato de ficheiro suporta, um ficheiro vazio é criado onde novas cadeias serão adicionadas assim que forem traduzidos.
O Estilo de código de idioma permite que personalize o código de idioma usado nos nomes de ficheiros gerados:
- Predefinição baseada no formato do ficheiro
Dependendo do formato do ficheiro, para a maioria deles utiliza-se POSIX.
- Estilo POSIX utilizando o sublinhado como um separador
Normalmente usado por gettext e ferramentas relacionadas, produz códigos de linguagem como
pt_BR
.- Estilo de POSIX utilizando o sublinhado como um separador, incluindo o código do país
Código de idioma do estilo POSIX incluindo o código do país mesmo quando não necessário (por exemplo,
cs_CZ
).- Estilo BCP utilizando o hífen como um separador
Normalmente usado em plataformas web, produz códigos de idioma como
pt-BR
.- Estilo de BCP utilizando o hífen como um separador, incluindo o código do país
Código de idioma do estilo BCP, incluindo o código do país, mesmo quando não necessário (por exemplo,
cs-CZ
).- Estilo Android
Usado apenas em apps Android, produz códigos de idioma como
pt-rBR
.- Estilo Java
Usado por Java – principalmente BCP com códigos legados para chinês.
Além disso, quaisquer mapeamentos definidos em Aliases do idioma são aplicados ao contrário.
Nota
O Weblate reconhece qualquer um desses ao analisar ficheiros de tradução; as configurações acima apenas influenciam como os novos ficheiros são criados.
Veja também
Tradução contínua¶
Há infraestrutura em vigor para que a sua tradução acompanhe o desenvolvimento de perto . Desta forma, os tradutores podem trabalhar em traduções o tempo todo, em vez de trabalhar com uma enorme quantidade de texto novo pouco antes do lançamento.
Veja também
Integrando com Weblate descreve maneiras básicas de integrar o seu desenvolvimento com o Weblate.
O processo é o seguinte:
Os programadores fazem alterações e fazem push delas so repositório VCS.
Opcionalmente, os ficheiros de tradução são atualizados (isso depende do formato do ficheiro, consulte Por que é que o Weblate ainda mostra as cadeias de tradução antigas quando atualizei o modelo?).
O Weblate faz o pull das alterações do repositório VCS, consulte Atualizar repositórios.
Uma vez que o Weblate deteta alterações nas traduções, os tradutores são notificados com base na configurações de assinatura deles.
Os tradutores enviam traduções a usar a interface web do Weblate ou enviam alterações feitas offline.
Uma vez que os tradutores acabaram, o Weblate faz commit das alterações no repositório local (veja Commits adiados) e faz push delas de volta se tiver permissões para fazê-lo (veja Fazendo push das alterações do Weblate).
Atualizar repositórios¶
Deve configurar alguma maneira de atualizar repositórios de backend a partir da fonte dele.
Use Hooks de notificação para integrar com a maioria dos serviços comuns de hospedagem de código:
Acione manualmente a atualização na gestão do repositório ou a usar API REST do Weblate ou Cliente Weblate
Ative
AUTO_UPDATE
para atualizar todos os componentes na sua instância Weblate automaticamenteExecute
updategit
(com a seleção de um projeto ou--all
para atualizar tudo)
Sempre que o Weblate atualiza o repositório, as extensões de pós-atualização serão acionadas, consulte Extensões.
Evitar conflitos de mesclagem¶
Os conflitos de mesclagem do Weblate surgem quando o mesmo ficheiro foi alterado tanto no Weblate quanto fora dele. Existem duas abordagens para lidar com isso - evitar edições fora do Weblate ou integrar o Weblate no seu processo de atualização, de modo que descarte alterações antes de atualizar os ficheiros fora do Weblate.
A primeira abordagem é fácil com ficheiros monolingues - pode adicionar novas cadeias no Weblate e deixar a edição completa dos ficheiros lá. Para ficheiros bilíngues, geralmente há algum tipo de processo de extração de mensagens para gerar ficheiros traduzíveis do código-fonte. Em alguns casos, isso pode ser dividido em duas partes - uma para a extração gera modelo (por exemplo, o GETTEXT POT é gerado a usar xgettext) e depois o processo a seguir mescla-o em traduções reais (os ficheiros GETTEXT PO são atualizados a usar msgmerge). Pode executar o segundo passo dentro do Weblate e garantirá que todas as alterações pendentes sejam incluídas antes desta operação.
A segunda abordagem pode ser alcançada a usar o API REST do Weblate para forçar o Weblate a fazer push de todas as alterações pendentes e bloquear a tradução enquanto está fazendo alterações do seu lado.
O script para fazer atualizações pode ser assim:
# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock
Se tiver vários componentes compartilhando o mesmo repositório, deve bloqueá-los todos separadamente:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Nota
O exemplo usa Cliente Weblate, que precisa de configuração (chaves de API) para ser capaz de controlar o Weblate remotamente. Também pode conseguir isso a usar qualquer cliente HTTP em vez de wlc, por exemplo, curl, ver API REST do Weblate.
Veja também
Receber alterações do GitHub automaticamente¶
O Weblate vem com suporte nativo ao GitHub.
Se estiver a usar o Hosted Weblate, a abordagem recomendada é instalar o app Weblate, dessa forma terá a configuração correta sem ter que configurar muito. Também pode ser usado para fazer push de mudanças de volta.
Para receber notificações em cada push a um repositório do GitHub, adicione o webhook do Weblate nas configurações do repositório (Webhooks) como mostrado na imagem abaixo:

Para a URL de carga útil, anexar /hooks/github/
à URL do Weblate, por exemplo, para o serviço Hosted Weblate, este é https://hosted.weblate.org/hooks/github/
.
Pode deixar outros valores nas configurações predefinidas (o Weblate pode lidar com ambos os tipos de conteúdo e consome apenas o evento push).
Receber alterações do Bitbucket automaticamente¶
O Weblate tem suporte para webhooks do Bitbucket, adicione um webhook que aciona no push do repositório, com destino a URL /hooks/bitbucket/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/bitbucket/
).

Receber alterações do GitLab automaticamente¶
O Weblate tem suporte para ganchos do GitLab, adiciona um webhook de projeto com destino a URL /hooks/gitlab/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitlab/
).
Receber alterações do Pagure automaticamente¶
Novo na versão 3.3.
O Weblate tem suporte para ganchos Pagure. Adicione um webhook com destino a URL /hooks/pagure/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/pagure/
). Isso pode ser feito em Web-hooks em Project options:

Receber alterações dos Azure Repos automaticamente¶
Novo na versão 3.8.
O Weblate tem suporte para webhooks dos Azure Repos, adicione um webhook para o evento Code pushed com destino para URL /ganchos/azure/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/azure/
). Isso pode ser feito em Service hooks ` em :guilabel:`Project settings.
Receber alterações dos Gitea Repos automaticamente¶
Novo na versão 3.9.
Weblate tem suporte para webhooks do Gitea, adicione um Gitea Webhook para o evento Push events com destino ao URL /hooks/gitea/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitea/
). Isso pode ser feito no Webhooks em Settings do repositório.
Receber alterações de Gitee Repos automaticamente¶
Novo na versão 3.9.
O Weblate tem suporte para webhooks Gitee, adicione um WebHook para o evento Push com destino para URL /hooks/gitee/
na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitee/
). Isso pode ser feito em WebHooks sob Management do repositório.
Atualizar repositórios nightly automaticamente¶
O Weblate busca automaticamente repositórios remotos nightly para melhorar o desempenho ao mesclar alterações mais tarde. Pode opcionalmente transformar isso em fazer mesclagens noturnas também, ativando AUTO_UPDATE
.
Fazendo push das alterações do Weblate¶
Cada componente de tradução pode ter uma URL de push configurada (veja URL de submissão do repositório) e, nesse caso, o Weblate será capaz de fazer push da alteração ao repositório remoto. O Weblate também pode ser configurado para fazer push automaticamente das alterações em cada commit (isso é a predefinição, veja Enviar ao submeter). Se não quiser que seja feito push automático das alterações, pode fazer-lo manualmente em Manutenção do repositório ou a usar API via wlc push
.
As opções de push diferem com base no Integração de controlo de versões usado, mais detalhes são encontrados nesse capítulo.
No caso de não querer pushes diretos pelo Weblate, há suporte para pull requests do GitHub, do GitLab e do Pagure ou revisões do Gerrit, pode ativá-los a escolher GitHub, GitLab, Gerrit ou Pagure, como Sistema de controlo de versões em Configuração de componente.
No geral, as opções a seguir estão disponíveis com Git, GitHub e GitLab:
Configuração desejada |
|||
---|---|---|---|
Sem push |
vazio |
vazio |
|
Push diretamente |
URL de SSH |
vazio |
|
Empurrar para um ramo separado |
URL de SSH |
Nome do ramo |
|
Pull request de GitHub do fork |
vazio |
vazio |
|
Pull request de GitHub do ramo |
URL de SSH 1 |
Nome do ramo |
|
Merge request de GitLab do fork |
vazio |
vazio |
|
Merge request de GitLab do ramo |
URL de SSH 1 |
Nome do ramo |
|
Merge request de Pagure do fork |
vazio |
vazio |
|
Merge request de Pagure do ramo |
URL de SSH 1 |
Nome do ramo |
- 1(1,2,3)
Pode estar vazia caso o Repositório do código-fonte tenha suporte a push.
Nota
Também pode ativar o push automático de alterações após o Weblate fazer commit, isso pode ser feito em Enviar ao submeter.
Veja também
Consulte Acessando repositórios para configurar chaves de SSH e Commits adiados para obter informações sobre quando o Weblate decide fazer commit de alterações.
Ramos protegidos¶
Se estiver a usar o Weblate em ramo protegido, pode configurá-lo para usar pull requests e executar revisão real sobre as traduções (o que pode ser problemático para idiomas que não conhece). Uma abordagem alternativa é abrir mão desta limitação em favor do utilizador de push no Weblate.
Por exemplo, no GitHub, isso pode ser feito na configuração do repositório:

Mesclar ou rebase¶
Por predefinição, o Weblate mescla o repositório upstream para dentro do seu próprio. Esta é a maneira mais segura no caso de também acessar o repositório subjacente por outros meios. Caso não precise disso, pode permitir fazer rebase de alterações em upstream, o que produzirá um histórico com menos compromissos de mesclagem.
Nota
Rebasing pode causar problemas em caso de mesclagens complicadas, então considere cuidadosamente se quer ou não ativá-los.
Interagir com os outros¶
O Weblate facilita a interação com outras pessoas a usar a API dele.
Veja também
Commits adiados¶
O comportamento do Weblate é de agrupar commits do mesmo autor num só commit, se for possível. Isso reduz a quantidade de commits consideravelmente, no entanto, pode precisar de dizer explicitamente para fazer os commits no caso de querer deixar o repositório VCS em sincronia, por exemplo, para mesclarem (isso é por predefinição permitido para o grupo Managers, consulte Lista de privilégios).
As alterações neste modo têm o commit delas feitas assim que qualquer uma das seguintes condições são cumpridas:
Outra pessoa altera uma cadeia já alterada.
Um merge do upstream é feito.
Um commit explícito é solicitado.
A alteração é mais antiga do que o período definido como Idade das alterações a fazer commit em Configuração de componente.
Dica
Os commits são criados para cada componente. Então, caso tenha muitos componentes, ainda verá muitos commits. Pode utilizar a extensão Squash de commits git neste caso.
Se quiser fazer commit das alterações com mais frequência e sem verificar a idade, pode agendar uma tarefa regular para realizar um commit:
CELERY_BEAT_SCHEDULE = {
# Unconditionally commit all changes every 2 minutes
"commit": {
"task": "weblate.trans.tasks.commit_pending",
# Ommiting hours will honor per component settings,
# otherwise components with no changes older than this
# won't be committed
"kwargs": {"hours": 0},
# How frequently to execute the job in seconds
"schedule": 120,
}
}
Processar repositório com scripts¶
A maneira de personalizar como o Weblate interage com o repositório é com Extensões. Consulte Escrevendo scripts para extensões para obter informações sobre como executar scripts externos através de extensões.
Manter traduções iguais entre componentes¶
Uma vez que tenha vários componentes de tradução, pode garantir que as mesmas cadeias tenham a mesma tradução. Isso pode ser alcançado em vários níveis.
Propagação de tradução¶
With Permitir propagação da tradução enabled (what is the default, see Configuração de componente), all new translations are automatically done in all components with matching strings. Such translations are properly credited to currently translating user in all components.
Nota
A propagação de tradução requer a chave para ser compatível com formatos de tradução monolíngue, por isso tenha isso em mente ao criar chaves de tradução.
Verificação de consistência¶
A verificação check-inconsistente é acionada sempre que as cadeias são diferentes. Pode usar isso para rever tais diferenças manualmente e escolher a tradução certa.
Tradução automática¶
A tradução automática com base em diferentes componentes pode ser uma maneira de sincronizar as traduções entre os componentes. Pode acioná-la manualmente (veja Tradução automática) ou fazê-la ser executada automaticamente na atualização do repositório a usar uma extensão (veja Tradução automática).
Licenciar traduções¶
Pode especificar sob quais traduções de licença são contribuídas. Isto é especialmente importante se as traduções forem abertas ao público, para estipular para que elas possam ser usadas.
Deve especificar as informações da licença da Configuração de componente. Deve evitar exigir um contrato de licença de colaborador, embora seja possível.
Informações de licença¶
Ao especificar informações de licenças (nome da licença e URL), essas informações são mostradas na secção de informações de tradução do respetivo Configuração de componente.
Normalmente este é o melhor lugar para publicar informações de licenciamento se nenhum consentimento explícito for necessário. Se o seu projeto ou tradução não for livre, provavelmente precisa de consentimento prévio.
Acordo de contribuidor¶
Se especificar um contrato de licença de colaborador, apenas os utilizadores que concordaram com ele poderão contribuir. Este é um passo claramente visível ao acessar a tradução:

O texto inserido é formatado em parágrafos e ligações externas podem ser incluídas. A marcação HTML não pode ser usada.
Licenças de utilizador¶
Todos utilizadores podem rever todas as licenças de tradução de todos os projetos públicos na instância do seu perfil:

Processo de tradução¶
Votação de sugestão¶
Everyone can add suggestions by default, to be accepted by signed in users. Suggestion voting can be used to make use of a string when more than one signed-in user agrees, by setting up the Configuração de componente with Suggestion voting to turn on voting, and Autoaccept suggestions to set a threshold for accepted suggestions (this includes a vote from the user making the suggestion if it is cast).
Nota
Uma vez que a aceitação automática está configurada, utilizadores normais perdem o privilégio de gravar diretamente traduções ou aceitar sugestões. Isso pode ser sobrescrito pela permissão Editar texto quando as sugestões são forçadas.
Pode combiná-las com :ref:`controle de acesso <access-control>`para uma das configurações a seguir:
Utilizadores sugerem e votam por sugestões e um grupo limitado controla o que é aceito. - Ativar votação. - Desativar aceitação automática. - Não deixar utilizadores gravarem traduções.
Utilizadores sugerem e votam em sugestões com aceitação automática uma vez que a quantidade definida deles concorda. - Ativar votação. - Definir o numero desejado de votos para aceitação automática.
Voto opcional para sugestões. (Pode ser usado opcionalmente pelos utilizadores quando não têm certeza sobre uma tradução, marcando múltiplas sugestões.) - Apenas ativar a votação.
Informações adicionais sobre cadeias fonte¶
Melhore o processo de tradução adicionando informações extra para os textos incluindo explicações, prioridades dos textos, marcadores de verificações e contexto visual. Algumas dessas informações podem ser extraídas dos ficheiros de tradução e podem ser adicionadas ao editar as informações adicionais do texto:

Acesse isso diretamente da interface de tradução clicando no ícone «Editar» perto de Contexto da captura de ecrã ou Marcadores.

Priorização dos textos¶
Novo na versão 2.0.
A prioridade dos textos pode ser mudada para oferecer textos prioritários para tradução antes, usando o marcador priority
.
Dica
Isso pode ser utilizado para organizar a ordem de tradução de maneira lógica.
Veja também
Marcadores de tradução¶
Novo na versão 2.4.
Alterado na versão 3.3: Anteriormente chamado de Marcadores de verificações de qualidade, ele já não configura apenas verificações.
O conjunto predefinido de sinalizadores de tradução é determinado pela Configuração de componente de tradução e o ficheiro de tradução. No entanto, pode usá-lo para o personalizar por texto fonte.
Explicação¶
Alterado na versão 4.1: Nas versões anteriores, isso era chamado de Contexto extra.
Use a explicação para esclarecer o escopo ou uso da tradução. Pode usar Markdown para incluir ligações e outras marcações.
Contexto visual para cadeias¶
Novo na versão 2.9.
Pode enviar uma captura de ecrã que mostram um determinado texto fonte em uso no seu programa. Isso ajuda os tradutores a entender onde é usado e como deve ser traduzido.
A captura de ecrã enviada é mostrada na barra lateral de contexto de tradução:

Além de Informações adicionais sobre cadeias fonte, as capturas de ecrã têm uma interface de gestão separada no menu Ferramentas. Envie capturas de ecrã, atribua-as a textos fonte manualmente ou use o reconhecimento ótico de caracteres para fazer isso.
Depois que uma captura de ecrã é carregada, esta interface lida com a gestão e a associação de texto fonte:

Verificações e correções¶
Correções automáticas personalizadas¶
Também pode implementar a sua própria correção automática, além das predefinidas e incluí-las em AUTOFIX_LIST
.
As correções automáticas são poderosas, mas também podem causar danos; tenha cuidado ao escrever uma.
Por exemplo, a correção automática a seguir iria substituir cada ocorrência da cadeia foo
, numa tradução com bar
:
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
from django.utils.translation import gettext_lazy as _
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
name = _("Foobar")
def fix_single_target(self, target, source, unit):
if "foo" in target:
return target.replace("foo", "bar"), True
return target, False
Para instalar verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em AUTOFIX_LIST
, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
Personalizando comportamento a usar marcadores¶
Pode ajustar o comportamento de Weblate (principalmente de verificações) para cada cadeia fonte (na revisão de cadeias fonte, veja Informações adicionais sobre cadeias fonte) ou em Configuração de componente (Marcadores de tradução). Alguns formatos de ficheiro também permitem especificar sinalizadores diretamente no formato (veja Formatos de ficheiros suportados).
As etiquetas são separadas por vírgulas, os parâmetros são separados por caracteres de dois pontos. Pode usar aspas para incluir espaços em branco ou caracteres especiais na cadeia. Por exemplo:
placeholders:"special:value":"other value", regex:.*
Aqui está uma lista de sinalizadores atualmente aceitos:
rst-text
Trata um texto como um documento reStructuredText, afeta Tradução inalterada.
dos-eol
Usa marcadores de ponta de linha do DOS em vez dos Unix (
\r\n
em vez de\n
).read-only
A cadeia é somente leitura e não deve ser editada no Weblate, veja Cadeias somente leitura.
priority:N
Prioridade da cadeia. As cadeias de maior prioridade são apresentados primeiro para tradução. A prioridade predefinida é 100, quanto maior prioridade que um texto tem, mais cedo é oferecido para tradução.
max-length:N
Limita o comprimento máximo de uma cadeia a N caracteres, veja Tamanho máximo da tradução.
xml-text
Trata o texto como documento XML, afeta Sintaxe XML e Markup XML.
font-family:NOME
Define a família de letras para verificações da renderização, veja Gerir letras.
font-weight:PESO
Define o peso da letra para verificações da renderização, veja Gerir letras.
font-size:SIZE
Define o tamanho da letra para verificações da renderização, veja Gerir letras.
font-spacing:ESPAÇAMENTO
Define o espaçamento de letras para verificações da renderização, veja Gerir letras.
placeholders:NOME:NOME2:...
Cadeias de espaço reservado esperados na tradução, veja Espaços reservados.
replacements:DE:PARA:DE2:PARA2...
Substituições para realizar ao verificar parâmetros de texto resultantes (por exemplo, em Tamanho máximo da tradução ou Tamanho máximo da tradução). O caso de uso típico para isso é expandir objetos colocáveis (placeables) para garantir que o texto se encaixe mesmo com valores longos, por exemplo:
replacements:%s:"John Doe"
.variants:FONTE
Marca esta cadeia como uma variante do texto com a fonte correspondente. Veja Variantes de cadeias.
regex:EXPRESSÃO REGULAR
Expressão regular para corresponder à tradução; veja Expressão regular.
forbidden
Indica tradução proibida num glossário, veja Traduções proibidas.
strict-same
Faz com que «Tradução não alterada» evite usar a lista negra de palavras embutidas, veja Tradução inalterada.
check-glossary
Ative a verificação de qualidade Não segue o glossário.
angularjs-format
Ative a verificação de qualidade Cadeia de interpolação AngularJS.
c-format
Ative a verificação de qualidade Formato C.
c-sharp-format
Ative a verificação de qualidade Formato C#.
es-format
Ative a verificação de qualidade :ref: check-es-format.
i18next-interpolation
Ative a verificação de qualidade Interpolação de i18next.
java-format
Ative a verificação de qualidade Formato Java.
java-messageformat
Ative a verificação de qualidade Formato de Mensagem Java.
javascript-format
Ative a verificação de qualidade :ref:”check-javascript-format”.
lua-format
Ative a verificação de qualidade Formato Lua.
object-pascal-format
Ative a verificação de qualidade Formato Object Pascal.
percent-placeholders
Enable the Espaços reservados de percentagem quality check.
perl-format
Enable the Formato Perl quality check.
php-format
Enable the Formato PHP quality check.
python-brace-format
Enable the Formato de chaveta Python quality check.
python-format
Enable the Formato Python quality check.
qt-format
Enable the Formato Qt quality check.
qt-plural-format
Enable the Forma plural Qt quality check.
ruby-format
Enable the Formato Ruby quality check.
scheme-format
Enable the Formato Scheme quality check.
vue-format
Enable the Formatação vue I18n quality check.
md-text
Treat text as a Markdown document. Enable Hiperligações de marcação, Referências de Markdown, and Sintaxe de Markdown quality checks.
safe-html
Enable the HTML inseguro quality check.
url
The string should consist of only a URL. Enable the URL quality check.
ignore-bbcode
Skip the Markup BBcode quality check.
ignore-duplicate
Skip the Palavras consecutivas duplicadas quality check.
ignore-check-glossary
Skip the Não segue o glossário quality check.
ignore-double-space
Skip the Espaço duplo quality check.
ignore-angularjs-format
Skip the Cadeia de interpolação AngularJS quality check.
ignore-c-format
Skip the Formato C quality check.
ignore-c-sharp-format
Skip the Formato C# quality check.
ignore-es-format
Skip the Literais de modelo de ECMAScript quality check.
ignore-i18next-interpolation
Skip the Interpolação de i18next quality check.
ignore-java-format
Skip the Formato Java quality check.
ignore-java-messageformat
Skip the Formato de Mensagem Java quality check.
ignore-javascript-format
Skip the Formato JavaScript quality check.
ignore-lua-format
Skip the Formato Lua quality check.
ignore-object-pascal-format
Skip the Formato Object Pascal quality check.
ignore-percent-placeholders
Skip the Espaços reservados de percentagem quality check.
ignore-perl-format
Skip the Formato Perl quality check.
ignore-php-format
Skip the Formato PHP quality check.
ignore-python-brace-format
Skip the Formato de chaveta Python quality check.
ignore-python-format
Skip the Formato Python quality check.
ignore-qt-format
Skip the Formato Qt quality check.
ignore-qt-plural-format
Skip the Forma plural Qt quality check.
ignore-ruby-format
Skip the Formato Ruby quality check.
ignore-scheme-format
Skip the Formato Scheme quality check.
ignore-vue-format
Skip the Formatação vue I18n quality check.
ignore-translated
Skip the Foi traduzido quality check.
ignore-inconsistent
Skip the Inconsistente quality check.
ignore-kashida
Skip the Letra Kashida utilizada quality check.
ignore-md-link
Skip the Hiperligações de marcação quality check.
ignore-md-reflink
Skip the Referências de Markdown quality check.
ignore-md-syntax
Skip the Sintaxe de Markdown quality check.
ignore-max-length
Skip the Tamanho máximo da tradução quality check.
ignore-max-size
Skip the Tamanho máximo da tradução quality check.
ignore-escaped-newline
Skip the \n não correspondente quality check.
ignore-end-colon
Skip the Dois pontos não correspondentes quality check.
ignore-end-ellipsis
Skip the Reticências não correspondentes quality check.
ignore-end-exclamation
Skip the Ponto de exclamação não correspondente quality check.
ignore-end-stop
Skip the Ponto final não correspondente quality check.
ignore-end-question
Skip the Ponto de interrogação não correspondente quality check.
ignore-end-semicolon
Skip the Ponto e vírgula não correspondente quality check.
ignore-newline-count
Skip the Quebras de linha não coincidentes quality check.
ignore-plurals
Skip the Faltam plurais quality check.
ignore-placeholders
Skip the Espaços reservados quality check.
ignore-punctuation-spacing
Skip the Espaçamento da pontuação quality check.
ignore-regex
Skip the Expressão regular quality check.
ignore-same-plurals
Skip the Mesmos plurais quality check.
ignore-begin-newline
Skip the Nova linha no início quality check.
ignore-begin-space
Skip the Espaços no início quality check.
ignore-end-newline
Skip the Nova linha no final quality check.
ignore-end-space
Skip the Espaço no final quality check.
ignore-same
Skip the Tradução inalterada quality check.
ignore-safe-html
Skip the HTML inseguro quality check.
ignore-url
Skip the URL quality check.
ignore-xml-tags
Skip the Markup XML quality check.
ignore-xml-invalid
Skip the Sintaxe XML quality check.
ignore-zero-width-space
Skip the Espaçamento nulo quality check.
ignore-ellipsis
Skip the Reticências quality check.
ignore-long-untranslated
Skip the Não traduzido há muito tempo quality check.
ignore-multiple-failures
Skip the Várias verificações falhadas quality check.
ignore-unnamed-format
Skip the Várias variáveis sem nome quality check.
ignore-optional-plural
Skip the Não pluralizado quality check.
Nota
Geralmente, a regra é chamada ignore-*
para qualquer verificação, a usar o identificador dele, para que possa usá-la mesmo para as suas verificações personalizadas.
Essas etiquetas são entendidas tanto nas configurações de Configuração de componente, por configurações de cadeias fonte quanto no próprio ficheiro de tradução (por exemplo, no GNU gettext).
Forçar verificações¶
Novo na versão 3.11.
Pode configurar uma lista de verificações que não podem ser ignoradas a definir Verificações impostas em Configuração de componente. Cada verificação listada não pode ser ignorada na interface do utilizador e qualquer cadeia com falha nesta verificação é marcada como Precisa de edição (veja Estados de tradução).
Gerir letras¶
Novo na versão 3.7.
Dica
As fontes carregadas no Weblate são usadas puramente para fins de verificação Tamanho máximo da tradução, elas não têm efeito na interface de utilizador do Weblate.
A verificação Tamanho máximo da tradução usada para calcular as dimensões do texto renderizado precisa ser carregada no Weblate e selecionada a usar um sinalizador de tradução (ver Personalizando comportamento a usar marcadores).
Ferramenta de gestão de fontes do Weblate em Fonts sob o menu Gerir do seu projeto de tradução fornece interface para carregar e gerir fontes. As fontes TrueType ou OpenType podem ser carregadas, configurar grupos de fontes e usá-los na verificação.
Os grupos de letras permitem definir letras diferentes para idiomas diferentes, o que é normalmente necessário para idiomas não-latinos:

O grupos de letras são identificados pelo nome, que não pode conter espaços ou caracteres especiais, de modo que ele pode ser facilmente utilizado na definição da verificação:

A família de letras e o estilo são automaticamente reconhecidos após carregá-los:

Pode ter muitas letras carregadas para Weblate:

Para usar as letras para verificar o comprimento da cadeia, passe-a os sinalizadores apropriados (veja Personalizando comportamento a usar marcadores). Provavelmente precisará dos seguintes:
max-size:500
Define o máximo de largura.
font-family:ubuntu
Define o grupo de letras para usar especificando seu identificador.
font-size:22
Define o tamanho da letra.
Escrever próprias verificações¶
Uma ampla gama de verificações de qualidade são incorporadas, (veja Verificações de qualidade), embora eles possam não cobrir tudo o que deseja verificar. A lista de verificações realizadas pode ser ajustada a usar CHECK_LIST
e também pode adicionar verificações personalizadas.
Crie uma subclasse de weblate.checks.Check
Define alguns atributos.
Implemente o método
check
(se quiser lidar com plurais no seu código) ou o métodocheck_single
(que faz isso por si).
Alguns exemplos:
Para instalar verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em CHECK_LIST
, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
Verificar se o texto de tradução não contém «foo»¶
Esta é uma verificação bastante simples que apenas verifica se a tradução não possui a cadeia «foo».
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class FooCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Verificando se os plurais de texto de tradução tcheca são diferentes¶
Usa as informações de idioma para verificar se as duas formas plurais no idioma tcheco não são os mesmos.
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class PluralCzechCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False
Tradução automática¶
Suporte integrado para vários serviços de tradução automática e pode ser ativado pelo administrador a usar MT_SERVICES
para cada um. Eles estão sujeitos aos seus termos de uso, portanto, certifique-se de ter permissão para usá-los como desejar.
O idioma fonte pode ser configurado na Configuração de projeto.
amaGama¶
Instalação especial do tmserver executado pelos autores do Virtaal.
Ative este serviço a adicionar weblate.machinery.tmserver.AmagamaTranslation
a MT_SERVICES
.
Veja também
Apertium¶
Uma plataforma de tradução de máquina de software livre que fornece traduções para um conjunto limitado de idiomas.
A maneira recomendada de usar o Apertium é executar o seu próprio servidor Apertium-APy.
Ative este serviço a adicionar weblate.machinery.apertium.ApertiumAPYTranslation
a MT_SERVICES
e defina MT_APERTIUM_APY
.
Veja também
MT_APERTIUM_APY
, Site do Apertium, Documentação do Apertium APy
AWS¶
Novo na versão 3.1.
O Amazon Translate é um serviço de tradução de máquina neural para traduzir textos de e para o inglês numa variedade de idiomas compatíveis.
Turn on this service by adding
weblate.machinery.aws.AWSTranslation
toMT_SERVICES
.Instale o módulo boto3.
Configure o Weblate.
Tradução de máquina do Baidu API¶
Novo na versão 3.2.
Serviço de tradução de máquina fornecido pelo Baidu.
Este serviço usa uma API e precisa obter um ID e uma chave de API do Baidu para usá-lo.
Ative este serviço a adicionar weblate.machinery.baidu.BaiduTranslation
a MT_SERVICES
e defina MT_BAIDU_ID
e MT_BAIDU_SECRET
.
Veja também
DeepL¶
Novo na versão 2.20.
DeepL é um serviço pago que fornece boa tradução de máquina para alguns idiomas. Precisa comprar a assinatura do DeepL API ou pode usar o plano legado :guilabel:`DeepL Pro (classic) `.
Ative este serviço a adicionar weblate.machinery.deepl.DeepLTranslation
a MT_SERVICES
e definda MT_DEEPL_KEY
.
Dica
No caso de ter uma assinatura para ferramentas CAT, deve usar a «API v1» em vez da «v2» padrão usada pelo Weblate (não é realmente uma versão da API neste caso). No caso de estar num plano gratuito em vez de um plano pago, tem que usar https://api-free.deepl.com/
em vez de https://api.deepl.com/
. Pode ajustar os dois parâmetros com MT_DEEPL_API_URL
.
Veja também
MT_DEEPL_KEY
, MT_DEEPL_API_URL
, Site do DeepL, Preços do DeepL, Documentação do DeepL
LibreTranslate¶
Novo na versão 4.7.1.
LibreTranslate is a free and open-source service for machine translations. The public instance requires an API key, but LibreTranslate can be self-hosted and there are several mirrors available to use the API for free.
Turn on this service by adding weblate.machinery.libretranslate.LibreTranslateTranslation
to MT_SERVICES
and set MT_LIBRETRANSLATE_API_URL
. If your
instance requires an API key, you must also set MT_LIBRETRANSLATE_KEY
.
Glosbe¶
Dicionário gratuito e memória de tradução para quase todos os idiomas vivos.
O uso da API é gratuito, mas está sujeito à licença da fonte de dados usada. Existe um limite de chamadas que podem ser feitas de um IP num determinado período de tempo, para evitar abusos.
Ative este serviço a adicionar weblate.machinery.glosbe.GlosbeTranslation
a MT_SERVICES
.
Veja também
Google Tradutor¶
Serviço de tradução de máquina fornecido pelo Google.
Este serviço usa a API do Google Tradutor e precisa obter uma chave de API e ativar a cobrança no console da API do Google.
Para ativar este serviço, adicione weblate.machinery.google.GoogleTranslation
em MT_SERVICES
e defina MT_GOOGLE_KEY
.
Veja também
API V3 do Google Tradutor (Avançado)¶
Serviço de tradução de máquina fornecido pelos serviços do Google Cloud.
Este serviço difere do anterior na forma como autentica. Para ativar o serviço, adicione weblate.machinery.googlev3.GoogleV3Translation
para MT_SERVICES
e defina
Se location falhar, também pode precisar especificar MT_GOOGLE_LOCATION
.
Tradutor dos Serviços Cognitivos da Microsoft¶
Novo na versão 2.10.
Serviço de tradução de máquina fornecido pela Microsoft no portal do Azure como um dos Serviços Cognitivos.
Weblate implementa API V3 do Tradutor.
Para ativar este serviço, adicione weblate.machinery.microsoft.MicrosoftCognitiveTranslation
a MT_SERVICES
e defina MT_MICROSOFT_COGNITIVE_KEY
.
API V2 de texto do Tradutor¶
A chave que usa com a API V2 do Tradutor pode ser usada com API 3.
API V3 de texto do Tradutor¶
Precisa registar-se no portal do Azure e usar a chave obtida lá. Com as novas chaves do Azure, também precisa definir MT_MICROSOFT_REGION
para a localidade do seu serviço.
Serviço de Terminologia Microsoft¶
Novo na versão 2.19.
A API do Serviço de Terminologia Microsoft permite que acesse programaticamente a terminologia, as definições e os textos da interface do utilizador (UI) disponíveis no Portal de Idiomas por meio de um serviço da web.
Ative este serviço adicionando weblate.machinery.microsoftterminology.MicrosoftTerminologyService
a MT_SERVICES
.
Veja também
ModernMT¶
Novo na versão 4.2.
Ligue este serviço adicionando weblate.machinery.modernmt.ModernMTTranslation
para MT_SERVICES
e configure MT_MODERNMT_KEY
.
Veja também
MyMemory¶
Grande memória de tradução com tradução de máquina.
O uso gratuito e anônimo está atualmente limitado a 100 solicitações/dia ou a 1000 solicitações/dia quando fornece um endereço de e-mail de contato em MT_MYMEMORY_EMAIL
. Também pode pedir mais.
Ative este serviço adicionando weblate.machinery.mymemory.MyMemoryTranslation
em MT_SERVICES
e defina MT_MYMEMORY_EMAIL
.
Veja também
MT_MYMEMORY_EMAIL
, MT_MYMEMORY_USER
, MT_MYMEMORY_KEY
, site do MyMemory
Tradução de máquina do NetEase Sight API¶
Novo na versão 3.3.
Serviço de tradução de máquina fornecido por NetEase.
Este serviço usa uma API e você precisa obter uma chave e um segredo de NetEase.
Ative este serviço adicionando weblate.machinery.youdao.NeteaseSightTranslation
em MT_SERVICES
e defina MT_NETEASE_KEY
e MT_NETEASE_SECRET
.
tmserver¶
Pode executar o seu próprio servidor de memória de tradução usando aquele que vem com o Translate-toolkit e deixar que o Weblate converse com ele. Também pode usá-lo com um servidor amaGama, que é uma versão aprimorada do tmserver.
Primeiro, vai importar alguns dados para a memória de tradução:
2. Turn on this service by adding weblate.machinery.tmserver.TMServerTranslation
to
MT_SERVICES
.
build_tmdb -d /var/lib/tm/db -s en -t cs locale/cs/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t de locale/de/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t fr locale/fr/LC_MESSAGES/django.po
Inicie o tmserver para ouvir as suas solicitações:
tmserver -d /var/lib/tm/db
Configure o Weblate para falar com ele:
MT_TMSERVER = "http://localhost:8888/tmserver/"
Veja também
MT_TMSERVER
,
tmserver
Installing amaGama,
Amagama,
Amagama Translation Memory
Yandex Translate¶
Serviço de memória de tradução fornecido pela Yandex.
Este serviço usa uma API de tradução e você precisa obter uma chave de API da Yandex.
Ative este serviço adicionando weblate.machinery.yandex.YandexTranslation
a MT_SERVICES
e defina MT_YANDEX_KEY
.
Veja também
MT_YANDEX_KEY
, API do Yandex Translate, Powered by Yandex.Translate
Tradução de máquina do Youdao Zhiyun API¶
Novo na versão 3.2.
Serviço de tradução de máquina fornecido pelo Youdao.
Este serviço usa uma API e você precisa obter um ID e uma chave de API do Youdao.
Ative este serviço adicionando weblate.machinery.youdao.YoudaoTranslation
a MT_SERVICES
e defina MT_YOUDAO_ID
e MT_YOUDAO_SECRET
.
Weblate¶
O Weblate também pode ser a fonte de traduções de máquina. Ele é baseado no mecanismo de texto completo Woosh e fornece correspondências exatas e inexatas.
Ative esses serviços adicionando weblate.machinery.weblatetm.WeblateTranslation
a MT_SERVICES
.
Weblate Translation Memory¶
Novo na versão 2.20.
A Memória de Tradução também pode ser usada como fonte para sugestões de tradução de máquina.
Ative esses serviços adicionando weblate.memory.machine.WeblateMemory
a MT_SERVICES
. Este serviço está ativado por padrão.
SAP Translation Hub¶
Serviço de tradução de máquina fornecido por SAP.
Precisa ter uma conta SAP (e o SAP Translation Hub ativado na SAP Cloud Platform) para usar este serviço.
Ative este serviço adicionando weblate.machinery.saptranslationhub.SAPTranslationHub
a MT_SERVICES
e defina o acesso apropriado para o sandbox ou a API de produção.
Nota
Para acessar a API Sandbox, precisa definir MT_SAP_BASE_URL
e MT_SAP_SANDBOX_APIKEY
.
Para acessar a API de produção, precisa definir MT_SAP_BASE_URL
, MT_SAP_USERNAME
e MT_SAP_PASSWORD
.
Tradução da máquina personalizada¶
Também pode implementar os seus próprios serviços de tradução automática usando algumas linhas de código Python. Este exemplo implementa a tradução automática numa lista fixa de idiomas usando o módulo Python dictionary
:
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Machine translation example."""
import dictionary
from weblate.machinery.base import MachineTranslation
class SampleTranslation(MachineTranslation):
"""Sample machine translation interface."""
name = "Sample"
def download_languages(self):
"""Return list of languages your machine translation supports."""
return {"cs"}
def download_translations(
self,
source,
language,
text: str,
unit,
user,
search: bool,
threshold: int = 75,
):
"""Return tuple with translations."""
for t in dictionary.translate(text):
yield {"text": t, "quality": 100, "service": self.name, "source": text}
Pode listar a sua própria classe em MT_SERVICES
e o Weblate vai começar a usar isso.
Extensões¶
Novo na versão 2.19.
Extensões fornecem maneiras para personalizar e automatizar o fluxo de trabalho de tradução. Administradores podem gerir extensões a partir do menu Gerir ↓ Extensões dos respectivos componente de tradução.
Dica
Também pode configurar extensões usando API, DEFAULT_ADDONS
ou install_addon
.

Extensões embutidas¶
Tradução automática¶
Novo na versão 3.9.
- ID da extensão
weblate.autotranslate.autotranslate
- Configuração
mode
Modo de tradução automático
Available choices:
suggest
– Add as suggestiontranslate
– Add as translationfuzzy
– Add as needing editfilter_type
Filtro de procura
Available choices:
all
– All stringsnottranslated
– Not translated stringstodo
– Strings needing actionfuzzy
– Strings marked for editcheck:inconsistent
– Failed check: Inconsistentauto_source
Fonte da tradução automática
Available choices:
others
– Other translation componentsmt
– Machine translationcomponent
Componentes
Ativar a contribuição para a memória de tradução compartilhada para que o projeto tenha acesso a componentes adicionais.
engines
Motores de tradução automática
threshold
Limite de pontuação
- Triggers
Atualização de componente, diária
Traduz automaticamente as cadeias utilizando a tradução automática ou outros componentes.
Ela é acionada:
Quando novas cadeias aparecem num componente.
Uma vez por mês para cada componente, isso pode ser configurado a usar
BACKGROUND_TASKS
.
CDN de localização JavaScript¶
Novo na versão 4.2.
- ID da extensão
weblate.cdn.cdnjs
- Configuração
threshold
Limiar de tradução
Limiar para inclusão de traduções.
css_selector
Seletor de CSS
Seletor CSS para detectar elementos localizáveis.
cookie_name
Nome do cookie do idioma
Nome do cookie que armazena a preferência de idioma.
files
Extrair cadeias de ficheiros de HTML
Lista de nomes de ficheiros no repositório atual ou URLs remotas a serem analisados para obter cadeias traduzíveis.
- Triggers
diário, pós-compromisso do repositório, pós-atualização do repositório
Publica traduções na rede de distribuição de conteúdo para o uso na localização de JavaScript ou HTML.
Pode ser usado para localizar páginas HTML estáticas ou para carregar a localização no código JavaScript.
Gera um URL exclusivo para o seu componente, que pode ser incluído em páginas HTML para localizá-los. Veja Traduzir HTML e JavaScript a usar CDN Weblate para mais detalhes.
Remover cadeias em branco¶
Novo na versão 4.4.
- ID da extensão
weblate.cleanup.blank
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pós-confirmação, repositório pós-atualização
Remove cadeias não traduzidas dos ficheiros de tradução.
Use isso para não ter cadeias vazias em ficheiros de tradução (por exemplo, se a sua biblioteca de localização os exibe como em falta em vez de recorrer ao texto fonte).
Limpeza de ficheiros de tradução¶
- ID da extensão
weblate.cleanup.generic
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pré-compromisso, repositório pós-atualização
Atualize todos os ficheiros de tradução para coincidirem com o ficheiro monolingue base. Para a maioria dos formatos de ficheiro, significa remover as chaves de tradução obsoletas que já não existem no ficheiro base.
Adiciona idiomas em falta¶
- ID da extensão
weblate.consistency.languages
- Configuração
Esta extensão não tem configuração.
- Triggers
diário, repositório pós-adição
Garante que um conjunto consistente de idiomas seja usado para todos os componentes de um projeto.
Os idiomas ausentes são verificados uma vez a cada 24 horas e quando novos idiomas são adicionados no Weblate.
Ao contrário da maioria dos outros, esta extensão afeta todo o projeto.
Dica
Traduza as cadeias recém-adicionadas automaticamente com Tradução automática.
Descoberta de componentes¶
- ID da extensão
weblate.discovery.discovery
- Configuração
match
Expressão regular para corresponder ficheiros de tradução
file_format
Formato de ficheiro
name_template
Personalizar nome do componente
base_file_template
Definir nome do ficheiro base monolingue
Manter vazio para ficheiros de tradução bilingue.
new_base_template
Defina o ficheiro base para as novas traduções
Nome do ficheiro utilizado para criar as novas traduções. Para gettext, escolher o ficheiro «.pot».
language_regex
Filtro de idioma
Expressão regular utilizada para filtrar ficheiros de tradução quando procurar pela máscara de ficheiro.
copy_addons
Clonar extensões do componente principal para os recém-criados
remove
Remover componentes para os ficheiros inexistentes
confirm
Confirmo que as correspondências acima parecem correctas
- Triggers
Pós-atualização do repositório
Adiciona ou remove automaticamente componentes do projeto com base em alterações de ficheiros no sistema de controlo de versão.
Acionada toda vez que o VCS é atualizado, de outra forma semelhante ao comando de gestão import_project
. Desta forma, pode rastrear vários componentes de tradução dentro de um VCS.
A correspondência é feita a usar expressões regulares que permitem uma configuração complexa, mas é necessário algum conhecimento para fazê-la. Alguns exemplos para casos de uso comum encontram-se na secção de ajuda de extensões.
Uma vez que acertar Gravar, uma prévia dos componentes correspondentes será apresentada, de onde pode verificar se a configuração realmente corresponde às suas necessidades:

Dica
A extensão de descoberta de componentes usa URLs internas do Weblate. É uma maneira conveniente de compartilhar a configuração do VCS entre vários componentes. Os componentes vinculados usam o repositório local do componente principal configurado a preencher weblate://project/main-component
no campo Repositório do código-fonte (em Gerir ↓ Configurações ↓ Sistema de controle de versão) de cada componente. Isso economiza tempo com configuração e recursos do sistema também.
Veja também
Edição em massa¶
Novo na versão 3.11.
- ID da extensão
weblate.flags.bulk
- Configuração
q
Consulta
state
Estado a definir
Available choices:
-1
– Do not change10
– Needs editing20
– Translated30
– Approvedadd_flags
Bandeiras de tradução para adicionar
remove_flags
Bandeiras de tradução para remover
add_labels
Etiqueta a adicionar
remove_labels
Etiquetas a remover
- Triggers
atualização de componente
Edição em série de marcadores, etiquetas, ou estados de cadeias.
Automatize o etiquetação a começar com a consulta de pesquisa NOT has:label
e adicione etiquetas até que todas as cadeias tenham todas as etiquetas necessárias. Outras operações automatizadas para metadados Weblate também podem ser feitas.
Exemplos::
Consulta de pesquisa |
|
---|---|
Etiqueta a adicionar |
recente |
Consulta de pesquisa |
|
---|---|
Bandeiras de tradução para adicionar |
|
Marcar as traduções inalteradas como «Precisa de edição»¶
Novo na versão 3.1.
- ID da extensão
weblate.flags.same_edit
- Configuração
Esta extensão não tem configuração.
- Triggers
unidade pós-criação
Sempre que uma nova cadeia traduzível é importada de VCS e corresponde a uma cadeia fonte, esta é marcada como precisa de edição no Weblate. Isto é especialmente útil para os formatos de ficheiro que incluem cadeias não traduzidas.
Dica
Também pode reforçar a verificação Tradução inalterada a adicionar o marcador strict-same
aos Marcadores de tradução.
Veja também
Marcar as novas cadeias fonte como «Precisa de edição»¶
- ID da extensão
weblate.flags.source_edit
- Configuração
Esta extensão não tem configuração.
- Triggers
unidade pós-criação
Sempre que uma nova cadeia é importada de VCS, esta é marcada como precisa de edição no Weblate. Deste modo pode filtrar e editar facilmente as cadeias fonte escritas pelos programadores.
Veja também
Marcar as novas traduções como «Precisa de edição»¶
- ID da extensão
weblate.flags.target_edit
- Configuração
Esta extensão não tem configuração.
- Triggers
unidade pós-criação
Sempre que uma nova cadeia de tradução é importada de VCS, esta é marcada como precisa de edição no Weblate. Deste modo pode filtrar e editar facilmente as traduções criadas pelos programadores.
Veja também
Gerador de estatísticas¶
- ID da extensão
weblate.generate.generate
- Configuração
filename
Nome do ficheiro gerado
template
Conteúdo do ficheiro gerado
- Triggers
repositório pré-compromisso
Gera um ficheiro que contêm a informação detalhada sobre o estado da tradução.
Pode usar um modelo do Django, tanto de nome de ficheiro e conteúdo, veja Markdown para uma descrição detalhada de marcação.
Por exemplo, a geração de um ficheiro de resumo para cada tradução:
- Nome do ficheiro gerado
locale/{{ language_code }}.json
- Conteúdo
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
Veja também
Geração da pseudolocalidade¶
- ID da extensão
weblate.generate.pseudolocale
- Configuração
source
Cadeias fonte
target
Tradução de destino
prefix
Prefixo da cadeia
suffix
Sufixo da cadeia
- Triggers
Atualização de componente, diária
Gera uma tradução a adicionar um prefixo e sufixo às cadeias de origem automaticamente.
Pseudolocalidades são úteis para encontrar textos que não estão preparadas para localização. Isso é feito a alterar todas as cadeias fonte traduzíveis para facilitar a descoberta de textos inalterados ao executar a aplicação no idioma da pseudolocalidade.
Também é possível encontrar cadeias cujas contrapartes localizadas podem não se ajustar ao layout.
Dica
Pode usar idiomas reais para teste, mas existem pseudolocalidades disponíveis no Weblate - en_XA e ar_XB.
Dica
Pode usar esta extensão para iniciar a tradução para uma nova localidade de um idioma existente ou idioma semelhante. Depois de adicionar a tradução ao componente, siga para a extensão. Exemplo: Se tem fr e deseja iniciar a tradução fr_CA, simplesmente defina fr como fonte,` fr_CA` como o destino e deixe o prefixo e o sufixo em branco.
Desinstale a extensão depois de preencher a nova tradução para evitar que o Weblate altere as traduções feitas após a cópia.
Contribuintes em comentários¶
- ID da extensão
weblate.gettext.authors
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pré-compromisso
Atualiza a parte do comentário no cabeçalho do ficheiro PO para incluir nomes de colaboradores e anos de contribuições.
O cabeçalho do ficheiro PO terá a seguinte aparência:
# Michal Čihař <michal@cihar.com>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.
Atualizar a variável ALL_LINGUAS no ficheiro «configure»¶
- ID da extensão
weblate.gettext.configure
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pós-adição, diário
Atualiza a variável ALL_LINGUAS em ficheiros configure
, configure.in
ou configure.ac
, quando uma nova tradução é adicionada.
Personalizar a saída gettext¶
- ID da extensão
weblate.gettext.customize
- Configuração
width
Ajuste de linhas longas
Por predefinição, o gettext quebra as linhas a 77 carateres e novas linhas. Com o parâmetro –no-wrap, quebra apenas em novas linhas.
Available choices:
77
– Wrap lines at 77 characters and at newlines65535
– Only wrap lines at newlines-1
– No line wrapping- Triggers
storage post-load
Permite personalizar o comportamento da saída gettext, por exemplo, a quebra de linhas.
Oferece as seguintes opções:
Quebrar linhas em 77 caracteres e em novas linhas
Quebrar as linhas apenas nas novas linhas
Sem quebra de linhas
Nota
Por padrão, o gettext quebra as linhas em 77 caracteres e em novas linhas. Com o parâmetro --no-wrap
, a quebra só é feita em novas linhas.
Atualizar ficheiro LINGUAS¶
- ID da extensão
weblate.gettext.linguas
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pós-adição, diário
Atualiza o ficheiro LINGUAS quando é adicionada uma nova tradução.
Gerar ficheiros MO¶
- ID da extensão
weblate.gettext.mo
- Configuração
path
Caminho do ficheiro MO gerado
Se não especificado, será utilizada a localização do ficheiro PO.
- Triggers
repositório pré-compromisso
Gera automaticamente um ficheiro MO para cada ficheiro PO alterado.
O local do ficheiro MO gerado pode ser personalizada e o campo para ele usa Marcação de modelo.
Atualizar ficheiros PO para coincidir com POT (msgmerge)¶
- ID da extensão
weblate.gettext.msgmerge
- Configuração
previous
Manter «msgids» anteriores das cadeias traduzidas
no_location
Remover localizações das cadeias traduzidas
fuzzy
Utilizar correspondência de imprecisa
- Triggers
Pós-atualização do repositório
Atualiza todos os ficheiros PO (configurados por Máscara de ficheiros) para corresponder ao ficheiro POT (configurado por Modelo para novas traduções) usando msgmerge.
Acionada sempre que novas alterações forem trazidas do repositório upstream. A maioria das opções de linha de comando do msgmerge podem ser definidas por meio da configuração da extensão.
Squash de commits git¶
- ID da extensão
weblate.git.squash
- Configuração
squash
Submeter com squash
Available choices:
all
– All commits into onelanguage
– Per languagefile
– Per fileauthor
– Per authorappend_trailers
Anexar linhas finalizadoras à mensagem do commit de squash
As linhas finalizadoras são linhas semelhantes aos cabeçalhos de e-mail RFC 822, no final de uma mensagem de commit de outra forma livre, como «Co-authored-by: …”.
commit_message
Mensagem de commit
Esta mensagem de commit será usada em vez das mensagens de commit combinadas dos commits após squash.
- Triggers
repositório pós-compromisso
Comprimir as submissões Git antes de enviar as alterações.
Commits Git podem ter squash feito antes de fazer o push das alterações num dos seguintes modos:
Novo na versão 3.4.
Todos os commits num só
Por idioma
Por ficheiro
Novo na versão 3.5.
Por autor
As mensagens de commit originais são mantidas, mas a autoria é perdida a menos que Por autor seja selecionada ou a mensagem de commit, seja personalizada para incluí-la.
Novo na versão 4.1.
As mensagens de commit originais podem opcionalmente ser substituídas por uma mensagem de commit personalizada.
Linhas finalizadoras (linhas de commits como Co-authored-by: …
) podem opcionalmente ser removidas das mensagens de commit originais e anexadas ao final da mensagem de compromisso após um squash. Isso também gera crédito próprio Co-authored-by:
para cada tradutor.
Personalizar a saída JSON¶
- ID da extensão
weblate.json.customize
- Configuração
sort_keys
Ordenar chaves JSON
indent
Indentação JSON
style
Estilo de indentação JSON
Available choices:
spaces
– Spacestabs
– Tabs- Triggers
storage post-load
Permite ajustar o comportamento da saída JSON, por exemplo, a indentação ou a ordenação.
Formata as propriedades do ficheiro Java¶
- ID da extensão
weblate.properties.sort
- Configuração
Esta extensão não tem configuração.
- Triggers
repositório pré-compromisso
Ordena o ficheiro de propriedades Java.
Purga de comentários obsoletos¶
Novo na versão 3.7.
- ID da extensão
weblate.removal.comments
- Configuração
age
Dias para manter
- Triggers
diário
Definir um prazo para a remoção de comentários.
Isso pode ser útil para remover comentários antigos que podem ter ficado desatualizados. Use com cuidado, pois comentários ficarem velhos não significam que eles perderam importância.
Purga de sugestões obsoletas¶
Novo na versão 3.7.
- ID da extensão
weblate.removal.suggestions
- Configuração
age
Dias para manter
votes
Limites de votação
Limite para a remoção. Este campo não tem efeito com os votos desativados.
- Triggers
diário
Definir um prazo para a remoção de sugestões.
Pode ser muito útil em relação à votação em sugestão (vej Revisão por pares) para remover sugestões que não recebem votos positivos suficientes num determinado período de tempo.
Atualizar ficheiros RESX¶
Novo na versão 3.9.
- ID da extensão
weblate.resx.update
- Configuração
Esta extensão não tem configuração.
- Triggers
Pós-atualização do repositório
Atualize todos os ficheiros de tradução para que correspondam ao ficheiro base monolingue original. As cadeias não utilizadas são removidas e as cadeias novas são adicionadas como cópias da cadeia fonte.
Dica
Use Limpeza de ficheiros de tradução se só quiser remover chaves de tradução obsoletas.
Personalizar a saída YAML¶
Novo na versão 3.10.2.
- ID da extensão
weblate.yaml.customize
- Configuração
indent
Indentação de YAML
width
Ajuste de linhas longas
Available choices:
80
– Wrap lines at 80 chars100
– Wrap lines at 100 chars120
– Wrap lines at 120 chars180
– Wrap lines at 180 chars65535
– No line wrappingline_break
Quebras de linha
Available choices:
dos
– DOS (\r\n)unix
– UNIX (\n)mac
– MAC (\r)- Triggers
storage post-load
Permite ajustar o comportamento da saída YAML, por exemplo, o comprimento de linha ou novas linhas.
Personalizando a lista de extensões¶
A lista de extensões é configurada por WEBLATE_ADDONS
. Para adicionar outra extensão, basta incluir o nome absoluto da classe nesta configuração.
Escrevendo extensões¶
Também pode escrever as suas próprias extensões. Crie uma subclasse de weblate.addons.base.BaseAddon
para definir os metadados da extensão e, então, implemente uma função de retorno que vai fazer o processamento.
Veja também
Escrevendo scripts para extensões¶
Extensões também podem ser usadas para executar scripts externos. Isso costumava estar integrado no Weblate, mas agora tem que escrever algum código para embrulhar o seu script com uma extensão.
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Example pre commit script."""
from django.utils.translation import gettext_lazy as _
from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon
class ExamplePreAddon(BaseScriptAddon):
# Event used to trigger the script
events = (EVENT_PRE_COMMIT,)
# Name of the addon, has to be unique
name = "weblate.example.pre"
# Verbose name and long descrption
verbose = _("Execute script before commit")
description = _("This addon executes a script.")
# Script to execute
script = "/bin/true"
# File to add in commit (for pre commit event)
# does not have to be set
add_file = "po/{{ language_code }}.po"
Para instruções de instalação, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
repositório VCS para qualquer componente.
Além disso, as seguintes variáveis de ambiente estão disponíveis:
- WL_VCS¶
Sistema de controle de versão usado.
- WL_REPO¶
URL do repositório upstream.
- WL_PATH¶
Caminho absoluto ao repositório VCS.
- WL_BRANCH¶
Novo na versão 2.11.
Ramo do repositório configurado no componente atual.
- WL_FILEMASK¶
Máscara de ficheiro para componente atual.
- WL_TEMPLATE¶
Nome de ficheiro de modelo para traduções monolínguas (pode estar vazio).
- WL_NEW_BASE¶
Novo na versão 2.14.
Nome do ficheiro usado para criar novas traduções (pode estar vazio).
- WL_FILE_FORMAT¶
Formato de ficheiro usado no componente atual.
- WL_LANGUAGE¶
Idioma da tradução processada atualmente (não disponível para ganchos de nível de componente).
- WL_PREVIOUS_HEAD¶
HEAD anterior após atualização (disponível apenas ao executar o gancho de pós-atualização).
- WL_COMPONENT_SLUG¶
Novo na versão 3.9.
Slug do componente usado para construir a URL.
- WL_PROJECT_SLUG¶
Novo na versão 3.9.
Slug de projeto usado para construir a URL.
- WL_COMPONENT_NAME¶
Novo na versão 3.9.
Nome de componente.
- WL_PROJECT_NAME¶
Novo na versão 3.9.
Nome do projeto.
- WL_COMPONENT_URL¶
Novo na versão 3.9.
URL do componente.
- WL_ENGAGE_URL¶
Novo na versão 3.9.
URL de engajamento do projeto.
Veja também
Processamento de repositório pós-atualização¶
Pode ser usado para atualizar ficheiros de tradução quando a fonte VCS do upstream alterar. Para conseguir isso, lembre-se que o Weblate só vê fcheiros dos quais se fez commit com o VCS, então precisa fazer commit das alterações como parte do script.
Por exemplo, com Gulp, pode fazê-lo a usar o código seguinte:
#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json
Processamento pré-commit de traduções¶
Use o script de commit para alterar automaticamente uma tradução antes de fazer commit dela para o repositório.
É passado como um parâmetro único que consiste o nome de uma tradução atual.
Memória de Tradução¶
Novo na versão 2.20.
O Weblate vem com uma memória de tradução integrada que consiste no seguinte:
Memória de tradução importada manualmente (veja Interface de utilizador).
Traduções armazenadas automaticamente realizadas em Weblate (dependendo dos Escopos de memória de tradução).
Traduções anteriores importadas automaticamente.
O conteúdo da memória de tradução pode ser aplicado de duas maneiras:
Manualmente, a visão de Sugestões automáticas durante a tradução.
Automaticamente, traduzindo textos usando a extensão Tradução automática ou Tradução automática.
Para dicas de instalação, veja Weblate Translation Memory, que está ativado por predefinição.
Escopos de memória de tradução¶
Novo na versão 3.2: Em versões anteriores, a memória de tradução só podia ser carregada de um ficheiro correspondente ao atual escopo da memória de tradução importada.
Os escopos de memória de tradução existem para permitir privacidade e compartilhamento de traduções, de acordo com o comportamento desejado.
Memória de tradução importada¶
Importar dados de memória de tradução arbitrários usando o comando import_memory
torna o conteúdo da memória disponível para todos os utilizadores e projetos.
Memória de tradução por utilizador¶
Armazena todas as traduções do utilizador automaticamente na memória de tradução pessoal de cada respectivo utilizador.
Memória de tradução por projeto¶
Todas as traduções dentro de um projeto são automaticamente armazenadas em uma memória de tradução de projeto disponível apenas para este projeto.
A gerir memória de tradução¶
Interface de utilizador¶
Novo na versão 3.2.
Na interface de utilizador básica, pode gerir memórias de tradução por utilizador e por projeto. Ela pode ser usada para descarregar, limpar ou importar memória de tradução.
Dica
A memória de tradução em JSON pode ser importada ao Weblate, o TMX é fornecido para interoperabilidade com outras ferramentas.
Veja também

Interface de gestão¶
Existem vários comandos de gestão para manipular o conteúdo da memória de tradução. Eles operam na memória de tradução como um todo, não filtrados por escopos (a menos que solicitados por parâmetros):
dump_memory
Exporta a memória para JSON
import_memory
Importa ficheiros TMX ou JSON para a memória de tradução
Configuração¶
Todas as configurações estão armazenadas em settings.py
(como é habitual no Django).
Nota
Após alterar qualquer uma dessas configurações, precisa reiniciar o Weblate - tanto os processos WSGI quanto os Celery.
Caso seja executado como mod_wsgi:
, precisa reiniciar o Apache para recarregar a configuração.
Veja também
Verifique também :doc:`Django’s documentation <django:ref/settings>`para parâmetros de configuração do próprio Django.
AUDITLOG_EXPIRY¶
Novo na versão 3.6.
Quantos dias o Weblate deve manter registos de auditoria, que contêm informações sobre a atividade da conta.
A predefinição é de 180 dias.
AUTH_LOCK_ATTEMPTS¶
Novo na versão 2.14.
Quantidade máxima de tentativas de autenticação que falharam antes da aplicação da limitação de taxa.
Atualmente, isto é aplicado nos locais seguintes:
Logins. Apaga a palavra-passe da conta, impedindo que o utilizador entre sem solicitar uma nova palavra-passe.
Redefinições de palavra-passe. Impede que novos e-mails sejam enviados, evitando o envio de spam aos utilizadores com muitas tentativas de redefinição de palavra-passe.
A predefinição é 10.
Veja também
AUTO_UPDATE¶
Novo na versão 3.2.
Alterado na versão 3.11: A opção original de ligar/desligar foi alterada para diferenciar quais cadeias são aceites.
Atualiza todos repositórios diariamente.
Dica
Útil se não estiver a user Hooks de notificação para atualizar os repositórios do Weblate automaticamente.
Nota
Existem opções de ligar/desligar, além da seleção de cadeias para compatibilidade com versões anteriores.
As opções são:
"none"
Sem atualizações diárias.
"remote"
e tambémFalse
Atualizar apenas os repositórios remotos.
"full"
e tambémTrue
Atualizar repositórios remotos e mesclar a cópia de trabalho.
Nota
Isto requer que Tarefas de fundo a usar o Celery esteja a funcionar e entrará em vigor após ser reiniciado.
AVATAR_URL_PREFIX¶
Prefixo para construção de URLs de avatars: ${AVATAR_URL_PREFIX}/avatar/${MAIL_HASH}?${PARAMS}
. Os serviços seguintes funcionam:
- Gravatar (predefinição), conforme https://gravatar.com/
AVATAR_URL_PREFIX = 'https://www.gravatar.com/'
- Libravatar, conforme https://www.libravatar.org/
AVATAR_URL_PREFIX = 'https://www.libravatar.org/'
Veja também
AUTH_TOKEN_VALID¶
Novo na versão 2.14.
Por quanto tempo o token de autenticação e a palavra-passe temporária dos e-mails de redefinição de palavra-passe são válidos. Definido em número de segundos, usando 172800 (2 dias) como predefinição.
AUTH_PASSWORD_DAYS¶
Novo na versão 2.15.
Quantos dias a usar a mesma palavra-passe deve ser permitido.
Nota
Mudanças de palavra-passe feitas anteriormente ao Weblate 2.15 não serão consideradas para essa política.
A predefinição é de 180 dias.
AUTOFIX_LIST¶
Lista de correções automáticas para aplicar ao gravar uma cadeia.
Nota
Forneça um caminho totalmente qualificado à classe Python que implementa a interface de correção automática.
Correções disponíveis:
weblate.trans.autofixes.whitespace.SameBookendingWhitespace
Corresponde o espaço em branco no início e no fim da cadeia com a fonte.
weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis
Substitui pontos ao final (…) se a cadeia fonte tiver um caractere de reticências (…) correspondente.
weblate.trans.autofixes.chars.RemoveZeroSpace
Remove caracteres de espaço de largura zero se a fonte não contiver nenhum.
weblate.trans.autofixes.chars.RemoveControlChars
Remove caracteres de controle se a fonte não contiver nenhum.
weblate.trans.autofixes.html.BleachHTML
Remove a marcação HTML insegura das cadeias sinalizadas como
safe-html
(veja HTML inseguro).
Pode selecionar quais usar:
AUTOFIX_LIST = (
"weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
"weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
)
BACKGROUND_TASKS¶
Novo na versão 4.5.2.
Define com que frequência as tarefas de manutenção demoradas devem ser acionadas para um componente.
No momento, isso controla:
Extensão Tradução automática
Recálculo de Verificações e correções
Escolhas possíveis:
monthly
(este é o padrão)weekly
daily
never
Nota
O aumento da frequência não é recomendado quando o Weblate contém milhares de componentes.
BASE_DIR¶
Diretório base onde as fontes do Weblate estão localizadas. Usado para derivar vários outros caminhos por predefinição:
Valor predefinido: Diretório de nível superior de fontes do Weblate.
BASIC_LANGUAGES¶
Novo na versão 4.4.
Lista de idiomas para oferecer aos utilizadores para iniciar uma nova tradução. Quando não especificado, a lista embutida é usada, o que inclui todos os idiomas comumente usados, mas sem variantes específicas de país.
Isso só limita utilizadores não privilegiados a adicionar idiomas indesejados. Os administradores do projeto ainda são apresentados com seleção completa de idiomas definidos no Weblate.
Nota
Isso não define novos idiomas para Weblate, ele filtra apenas os existentes no banco de dados.
Exemplo:
BASIC_LANGUAGES = {"cs", "it", "ja", "en"}
Veja também
CSP_SCRIPT_SRC, CSP_IMG_SRC, CSP_CONNECT_SRC, CSP_STYLE_SRC, CSP_FONT_SRC¶
Personaliza o cabeçalho Content-Security-Policy
para Weblate. O cabeçalho é gerado automaticamente com base em integrações ativadas com serviços de terceiros (Matomo, Google Analytics, Sentry, …).
Todos esses tem uma lista vazia como predefinição.
Exemplo:
# Enable Cloudflare Javascript optimizations
CSP_SCRIPT_SRC = ["ajax.cloudflare.com"]
CHECK_LIST¶
Lista de verificações de qualidade para realizar numa tradução.
Nota
Forneça um caminho totalmente qualificado à classe Python que implementa a interface de verificação.
Ajuste a lista de verificações para incluir as relevantes para si.
Todas as Verificações de qualidade embutidas estão ativadas por predefinição, de onde pode alterar essas configurações. Por predefinição, eles são comentados em Amostra de configuração para que os valores predefinidos sejam usados. Novas verificações são realizadas para cada versão nova do Weblate.
Pode desativar todas as verificações:
CHECK_LIST = ()
Pode ativar apenas algumas:
CHECK_LIST = (
"weblate.checks.chars.BeginNewlineCheck",
"weblate.checks.chars.EndNewlineCheck",
"weblate.checks.chars.MaxLengthCheck",
)
Nota
Alterar esta configuração afeta apenas as traduções recém-alteradas, as verificações existentes ainda serão armazenadas no banco de dados. Para também aplicar alterações nas traduções armazenadas, execute updatechecks
.
COMMENT_CLEANUP_DAYS¶
Novo na versão 3.6.
Apaga comentários após uma determinada quantidade de dias. A predefinição é None
, ou seja, nada apagado.
COMMIT_PENDING_HOURS¶
Novo na versão 2.10.
Quantidade de horas entre fazer o commit de alterações pendentes por meio da tarefa de segundo plano.
CONTACT_FORM¶
Novo na versão 4.6.
Configura como o e-mail do formulário de contato está a ser enviado. Escolha uma configuração que corresponda à configuração do seu servidor de e-mail.
"reply-to"
O remetente é usado como Reply-To, este é o comportamento padrão.
"from"
O remetente é usado como From. O seu servidor de e-mail precisa permitir o envio de tais e-mails.
DATA_DIR¶
A pasta na qual Weblate armazena todos os dados. Ela contém ligações para repositórios VCS, um índice de texto e vários ficheiros de configuração para ferramentas externas.
Os subdiretórios seguintes geralmente existem:
home
O diretório pessoal usado para invocar scripts.
ssh
Chaves e configuração de SSH.
static
Localização padrão para ficheiros de Django estáticos, especificados por
STATIC_ROOT
. Veja Servir ficheiros estáticos.O contentor do Docker usa um volume separado para isso, veja Volumes de contentor Docker.
media
Localização padrão para ficheiros de mídia Django, especificado por
MEDIA_ROOT
. Contém capturas de ecrã enviadas, veja Contexto visual para cadeias.vcs
Repositórios de controle de versão para traduções.
backups
Dados de backup diário. Confira Dados despejados para backups para detalhes.
celery
Dados do agendador Celery, consulte Tarefas de fundo a usar o Celery.
fonts
:Fontes enviadas pelo utilizador, veja Gerir letras.
Nota
Este diretório tem que ser escrito pelo Weblate. Executá-lo como uWSGI significa que o utilizador www-data
deve ter acesso de escrita.
A maneira mais fácil de conseguir isto é fazer do utilizador o proprietário do diretório:
sudo chown www-data:www-data -R $DATA_DIR
A predefinição é $BASE_DIR/data
.
DATABASE_BACKUP¶
Novo na versão 3.1.
Se os backups de banco de dados devem ser armazenados como texto simples, compactado ou ignorado. Os valores autorizados são:
"plain"
"compressed"
"none"
Veja também
DEFAULT_ACCESS_CONTROL¶
Novo na versão 3.3.
A configuração predefinida de controle de acesso para novos projetos:
0
Público
1
Protegido
100
Privado
200
Personalizado
Use Personalizado se está a gerir a ACL manualmente, o que significa não confiar na gestão interna do Weblate.
Veja também
DEFAULT_AUTO_WATCH¶
Novo na versão 4.5.
Configura se Observar automaticamente projetos em contribuição deve ser ativado para novos utilizadores. O padrão é True
.
Veja também
DEFAULT_RESTRICTED_COMPONENT¶
Novo na versão 4.1.
O valor predefinido para a restrição de componentes.
Veja também
DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE¶
Enviar mensagens predefinidas para diferentes operações, consulte Configuração de componente para detalhes.
DEFAULT_ADDONS¶
Complementos predefinidos para instalar em cada componente criado.
Nota
Essa configuração afeta apenas componentes recém-criados.
Exemplo:
DEFAULT_ADDONS = {
# Add-on with no parameters
"weblate.flags.target_edit": {},
# Add-on with parameters
"weblate.autotranslate.autotranslate": {
"mode": "suggest",
"filter_type": "todo",
"auto_source": "mt",
"component": "",
"engines": ["weblate-translation-memory"],
"threshold": "80",
},
}
Veja também
DEFAULT_COMMITER_EMAIL¶
Novo na versão 2.4.
Endereço de e-mail do committer com o padrão noreply@weblate.org
.
Veja também
DEFAULT_LANGUAGE¶
Novo na versão 4.3.2.
Idioma fonte padrão para usar, por exemplo, em Idioma fonte.
O padrão é en. O objeto de idioma correspondente precisa existir no banco de dados.
Veja também
DEFAULT_MERGE_STYLE¶
Novo na versão 3.4.
Mescla o estilo para quaisquer componentes novos.
rebase - predefinição
merge
Veja também
DEFAULT_TRANSLATION_PROPAGATION¶
Novo na versão 2.5.
Configuração predefinida para propagação de tradução, a predefinição é True
.
DEFAULT_PULL_MESSAGE¶
Título para pull requests novas, a predefinição é 'Update from Weblate'
.
ENABLE_AVATARS¶
Se se deve ativar avatares baseados em Gravatar para os utilizadores. Por predefinição, isto está ativado.
Avatares são buscados e armazenados em cache no servidor, diminuindo o risco de vazamento de informações privadas, acelerando a experiência do utilizador.
Veja também
ENABLE_HTTPS¶
Se se deve enviar ligações para Weblate como HTTPS ou HTTP. Esta configuração afeta os e-mails enviados e as URLs absolutas geradas.
Na configuração padrão, este também é usado para várias configurações de Django relacionadas ao HTTPS - ele ativa cookies seguros, ativa/desativa HSTSou ativa redirecionamento para URL HTTPS.
O redirecionamento HTTPS pode ser problemático em alguns casos e pode ter problemas com o redirecionamento infinito no caso de estar a usar um proxy reverso a fazer o encerramento SSL que não passa corretamente os cabeçalhos de protocolo para o Django. Ajuste a sua configuração de proxy reverso para emitir cabeçalhos X-Forwarded-Proto
ou Forwarded
, ou configure SECURE_PROXY_SSL_HEADER
para permitir que o Django detecte corretamente o estado SSL.
ENABLE_SHARING¶
Ativa/desativa o menu Compartilhar para que os utilizadores possam compartilhar o progresso da tradução nas redes sociais.
GITLAB_CREDENTIALS¶
Novo na versão 4.3.
Lista para credenciais para servidores de GitLab.
Dica
Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do GitLab com GITLAB_USERNAME
e GITLAB_TOKEN
.
GITLAB_CREDENTIALS = {
"gitlab.com": {
"username": "weblate",
"token": "your-api-token",
},
"gitlab.example.com": {
"username": "weblate",
"token": "another-api-token",
},
}
GITLAB_USERNAME¶
O nome de utilizador GitLab para enviar merge requests para atualizações de tradução.
Veja também
GITLAB_TOKEN¶
Novo na versão 4.3.
Token de acesso pessoal do GitLab usado para fazer chamadas API para atualizações de tradução.
Veja também
GITLAB_CREDENTIALS
,:ref:vcs-gitlab, GitLab: Ficha de acesso pessoal
GITHUB_CREDENTIALS¶
Novo na versão 4.3.
Lista para credenciais para servidores GitHub.
Dica
Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do GitHub com GITHUB_USERNAME
e GITHUB_TOKEN
.
GITHUB_CREDENTIALS = {
"api.github.com": {
"username": "weblate",
"token": "your-api-token",
},
"github.example.com": {
"username": "weblate",
"token": "another-api-token",
},
}
GITHUB_USERNAME¶
O nome de utilizador GitHub para enviar pull request para atualizações de tradução.
Veja também
GITHUB_TOKEN¶
Novo na versão 4.3.
Token de acesso pessoal GitHub usado para fazer chamadas API para enviar pull requests de tradução.
Veja também
GITHUB_CREDENTIALS
, GitHub, Criar um token de acesso pessoal
GOOGLE_ANALYTICS_ID¶
ID do Google Analytics para ativar o monitoramento do Weblate a usar o Google Analytics.
HIDE_REPO_CREDENTIALS¶
Oculta credenciais de repositório da interface web. No caso de ter URL do repositório com utilizador e palavra-passe, o Weblate irá ocultá-la quando as informações relacionadas são mostradas aos utilizadores.
Por exemplo, em vez de https://utilizador:palavra-passe@git.example.com/repo.git
, vai mostrar apenas “”https://git.example.com/repo.git”””. Tenta limpar mensagens de erro VCS também de forma semelhante.
Nota
Isso está ativado por predefinição.
HIDE_VERSION¶
Novo na versão 4.3.1.
Esconde informação de versão de utilizadores não autenticados. Isso também faz todos as ligacões de documentação apontar para a última versão, ao invés da versão de combinação da documentação instalada atualmente.
Ocultar a versão é uma prática de segurança recomendada em algumas empresas, mas não prevê invasores de descobrir a versão a sondar o comportamento.
Nota
Isto está desativado por predefinição.
IP_BEHIND_REVERSE_PROXY¶
Novo na versão 2.14.
Indica se o Weblate está a ser usado através de um proxy reverso.
Se for definido como True
, o Weblate obtém o endereço IP de um cabeçalho definido por IP_PROXY_HEADER
.
Aviso
Certifique-se de que está realmente a usar um proxy reverso e que ele define este cabeçalho, caso contrário, os utilizadores poderão falsificar o endereço IP.
Nota
Isto está ligado por predefinição.
IP_PROXY_HEADER¶
Novo na versão 2.14.
Indica de qual cabeçalho o Weblate deve obter o endereço IP quando IP_BEHIND_REVERSE_PROXY
está ativado.
A predefinição é HTTP_X_FORWARDED_FOR
.
IP_PROXY_OFFSET¶
Novo na versão 2.14.
Indica qual parte de IP_PROXY_HEADER
é usada como endereço IP do cliente.
Dependendo da configuração, este cabeçalho pode consistir em vários endereços IP (por exemplo, X-Forwarded-For: a, b, client-ip
) e pode configurar qual endereço do cabeçalho é usado como endereço IP do cliente aqui.
Aviso
Configurar isto afeta a segurança da sua instalação, por isso deve configurá-la só para usar proxies confiáveis para determinar o endereço IP.
A predefinição é 0.
LEGAL_URL¶
Novo na versão 3.5.
URL onde a sua instância de Weblate mostra os documentos legais dela.
Dica
Útil se hospeda os seus documentos legais fora do Weblate para incorporá-los ao Weblate, verifique Legal para obter detalhes.
Exemplo:
LEGAL_URL = "https://weblate.org/terms/"
Veja também
LICENSE_EXTRA¶
Licenças adicionais para incluir nas opções de licença.
Nota
Cada definição de licença deve ser uma tupla do seu nome curto, um nome longo e uma URL.
Por exemplo:
LICENSE_EXTRA = [
(
"AGPL-3.0",
"GNU Affero General Public License v3.0",
"https://www.gnu.org/licenses/agpl-3.0-standalone.html",
),
]
LICENSE_FILTER¶
Alterado na versão 4.3: A configurar este para valor em branco desativa o alerta de licença.
Filtrar licenças da lista para mostrar. Isto também desativa o alerta de licença quando configurado para vazio.
Nota
Este filtro usa os nomes de licença curtos.
Por exemplo:
LICENSE_FILTER = {"AGPL-3.0", "GPL-3.0-or-later"}
O seguinte desativa o alerta de licença:
LICENSE_FILTER = set()
Veja também
LICENSE_REQUIRED¶
Define se o atributo de licença em Configuração de componente é necessário.
Nota
Isto está desativado por predefinição.
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH¶
Se o comprimento de uma determinada tradução deve ser limitado. A restrição é o comprimento da cadeia fonte * 10 caracteres.
Dica
Define isto como False
para permitir traduções mais longas (até 10.000 caracteres) independentemente do comprimento da cadeia fonte.
Nota
A predefinição é «True».
LOCALIZE_CDN_URL e LOCALIZE_CDN_PATH¶
Essas configurações definem a extensão CDN de localização JavaScript. LOCALIZE_CDN_URL
define a URL raiz onde o CDN de localização está disponível e LOCALIZE_CDN_PATH
define o caminho onde o Weblate deve armazenar ficheiros gerados que serão servidos em LOCALIZE_CDN_URL
.
Dica
O Hosted Weblate usa o https://weblate-cdn.com/
.
Veja também
LOGIN_REQUIRED_URLS¶
Uma lista de URLs para as quais deseja exigir autenticação. (Além das regras predefinidas incorporadas ao Weblate).
Dica
Isto permite que proteja toda a instalação com uma palavra-passe a usar:
LOGIN_REQUIRED_URLS = (r"/(.*)$",)
REST_FRAMEWORK["DEFAULT_PERMISSION_CLASSES"] = [
"rest_framework.permissions.IsAuthenticated"
]
Dica
É desejável bloquear o acesso à API também, como mostrado no exemplo acima.
Veja também
LOGIN_REQUIRED_URLS_EXCEPTIONS¶
Lista de exceções para LOGIN_REQUIRED_URLS
. Se não especificado, os utilizadores podem acessar a página de autenticação.
Algumas das exceções que pode incluir:
LOGIN_REQUIRED_URLS_EXCEPTIONS = (
r"/accounts/(.*)$", # Required for sign in
r"/static/(.*)$", # Required for development mode
r"/widgets/(.*)$", # Allowing public access to widgets
r"/data/(.*)$", # Allowing public access to data exports
r"/hooks/(.*)$", # Allowing public access to notification hooks
r"/api/(.*)$", # Allowing access to API
r"/js/i18n/$", # JavaScript localization
)
MATOMO_SITE_ID¶
ID de um site em Matomo (anteriormente Piwik) que quer rastrear.
Nota
Esta integração não suporta o Matomo Tag Manager.
Veja também
MATOMO_URL¶
URL completa (incluindo barra ao final) de uma instalação Matomo (anteriormente Piwik) que deseja usar para rastrear o uso do Weblate. Por favor, consulte <https://matomo.org/> para mais detalhes.
Dica
Esta integração não suporta o Matomo Tag Manager.
Por exemplo:
MATOMO_SITE_ID = 1
MATOMO_URL = "https://example.matomo.cloud/"
Veja também
MT_SERVICES¶
Alterado na versão 3.0: A configuração foi renomeada de MACHINE_TRANSLATION_SERVICES
para MT_SERVICES
para ser consistente com outras configurações de tradução de máquina.
Lista de serviços de tradução de máquina ativados para uso.
Nota
Muitos dos serviços precisam de configuração adicional, como chaves de API, consulte a sua documentação Tradução automática para mais detalhes.
Dica
When using Docker container, this configuration is automatically generated based on provided API keys, see Configurações de tradução automática.
MT_SERVICES = (
"weblate.machinery.apertium.ApertiumAPYTranslation",
"weblate.machinery.deepl.DeepLTranslation",
"weblate.machinery.glosbe.GlosbeTranslation",
"weblate.machinery.google.GoogleTranslation",
"weblate.machinery.libretranslate.LibreTranslateTranslation",
"weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
"weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
"weblate.machinery.mymemory.MyMemoryTranslation",
"weblate.machinery.tmserver.AmagamaTranslation",
"weblate.machinery.tmserver.TMServerTranslation",
"weblate.machinery.yandex.YandexTranslation",
"weblate.machinery.weblatetm.WeblateTranslation",
"weblate.machinery.saptranslationhub.SAPTranslationHub",
"weblate.memory.machine.WeblateMemory",
)
Veja também
MT_APERTIUM_APY¶
URL do servidor Apertium-APy, https://wiki.apertium.org/wiki/Apertium-apy
Veja também
MT_BAIDU_ID¶
ID do cliente para a API do Baidu Zhiyun, pode registar-se em https://api.fanyi.baidu.com/api/trans/product/index
MT_BAIDU_SECRET¶
Segredo do cliente para a API do Baidu Zhiyun, pode registar-se em https://api.fanyi.baidu.com/api/trans/product/index
MT_DEEPL_API_URL¶
Alterado na versão 4.7: A URL completa da API agora está configurada para permitir o uso do plano gratuito. Antes, só era possível configurar a versão da API usando MT_DEEPL_API_VERSION
.
A URL da API para usar com o serviço DeepL. No momento em que este artigo foi escrito, existe a API v1, bem como uma versão gratuita e uma versão paga da API v2.
https://api.deepl.com/v2/
(padrão no Weblate)Destina-se ao uso da API no plano pago e a assinatura é baseada em uso.
https://api-free.deepl.com/v2/
Destina-se ao uso da API no plano gratuito e a assinatura é baseada em uso.
https://api.deepl.com/v1/
Destina-se a ferramentas CAT e é utilizável com assinatura por utilizador.
Anteriormente, o Weblate era classificado como uma ferramenta CAT pelo DeepL, por isso deveria usar a API v1, mas agora é entendido que deve usar a API v2. Portanto, a predefinição é v2 e pode alterar-lo para v1 no caso de ter uma assinatura CAT existente e querer que o Weblate use isso.
A maneira mais fácil de descobrir qual usar é abrir uma URL como a seguinte no seu navegador:
https://api.deepl.com/v2/translate?text=Hello&target_lang=FR&auth_key=XXX
Substitua o XXX pela sua auth_key. Se receber um objeto JSON que contém «Bonjour», tem a URL correta; se não, tente os outros três.
Veja também
MT_DEEPL_KEY¶
Chave de API ao API do DeepL, pode registar-se em https://www.deepl.com/pro.html
Veja também
MT_LIBRETRANSLATE_API_URL¶
Novo na versão 4.7.1.
API URL for the LibreTranslate instance to use.
https://libretranslate.com/
(official public instance)Requires an API key to use outside of the website.
Mirrors are documented on the LibreTranslate GitHub repository, some of which can be used without authentication:
https://github.com/LibreTranslate/LibreTranslate#user-content-mirrors
Veja também
MT_LIBRETRANSLATE_KEY¶
Novo na versão 4.7.1.
API key for the LibreTranslate instance specified in MT_LIBRETRANSLATE_API_URL.
Veja também
MT_GOOGLE_KEY¶
Chave de API para a API v2 do Google Translate, pode registar-se em https://cloud.google.com/translate/docs
Veja também
MT_GOOGLE_CREDENTIALS¶
Ficheiro de credenciais da API v3 do JSON obtido no console de nuvem do Google. Por favor, forneça um caminho completo do sistema operacional. As credenciais são por conta de serviço afiliada ao projeto determinado . Por favor, verifique https://cloud.google.com/docs/authentication/getting-started para mais detalhes.
MT_GOOGLE_PROJECT¶
ID de projeto da API v3 do Google Cloud com serviço de tradução ativado e faturamento ativado. Por favor consulte https://cloud.google.com/appengine/docs/standard/nodejs/building-app/creating-project para mais detalhes
MT_GOOGLE_LOCATION¶
A API v3 do App Engine do Google Cloud pode ser específica para uma localidade. Altere conforme o caso, se a predefinição``global`` não lhe servir.
Consulte https://cloud.google.com/appengine/docs/locations para mais detalhes
Veja também
MT_MICROSOFT_BASE_URL¶
Domínio de URL base da região conforme definido na secção «URLs base».
A predefinição é api.cognitive.microsofttranslator.com
para o Azure Global.
Para Azure China use api.translator.azure.cn
.
MT_MICROSOFT_COGNITIVE_KEY¶
Chave do cliente para a API do Microsoft Cognitive Services Translator.
MT_MICROSOFT_REGION¶
Prefixo da região conforme definido na secção «Autenticar com um recurso de vários serviços».
MT_MICROSOFT_ENDPOINT_URL¶
Domínio de URL de extremidade da região para token de acesso definido na secção «Autenticando com um token de acesso».
A predefinição é api.cognitive.microsoft.com
para Azure Global.
Para Azure China, use o desfecho do Portal do Azure.
MT_MODERNMT_URL¶
URL de ModernMT. A predefinição é https://api.modernmt.com/
para o serviço de nuvem.
Veja também
MT_MYMEMORY_EMAIL¶
Endereço de e-mail de identificação do myMemory. Permite 1000 solicitações por dia.
MT_MYMEMORY_KEY¶
Chave de acesso do MyMemory para memória de tradução privada. Use-a com MT_MYMEMORY_USER
.
MT_MYMEMORY_USER¶
ID de utilizador do MyMemory para a memória de tradução privada. Use-o com MT_MYMEMORY_KEY
.
MT_NETEASE_KEY¶
Chave de app para API da NetEase Sight, pode se registar em https://sight.youdao.com/
MT_NETEASE_SECRET¶
Segredo de app para a API da NetEase Sight, pode se registar em https://sight.youdao.com/
MT_TMSERVER¶
URL onde o tmserver está funcionando.
Veja também
tmserver, Tradução automática, Sugestões automáticas, tmserver
MT_YANDEX_KEY¶
Chave de API para a API do Yandex Translate, pode registar-se em https://yandex.com/dev/translate/
Veja também
Yandex Translate, Tradução automática, Sugestões automáticas
MT_YOUDAO_ID¶
ID do cliente para a API do Youdao Zhiyun, pode registar-se em https://ai.youdao.com/product-fanyi-text.s.
MT_YOUDAO_SECRET¶
Segredo do cliente para a API do Youdao Zhiyun, pode registar-se em https://ai.youdao.com/product-fanyi-text.s.
MT_SAP_BASE_URL¶
URL de API ao serviço SAP Translation Hub.
Veja também
SAP Translation Hub, Tradução automática, Sugestões automáticas
MT_SAP_SANDBOX_APIKEY¶
Chave de API para uso de API em caixa de proteção
Veja também
SAP Translation Hub, Tradução automática, Sugestões automáticas
MT_SAP_USERNAME¶
O seu nome de utilizador da SAP
Veja também
SAP Translation Hub, Tradução automática, Sugestões automáticas
MT_SAP_PASSWORD¶
A sua palavra-passe da SAP
Veja também
SAP Translation Hub, Tradução automática, Sugestões automáticas
MT_SAP_USE_MT¶
Se se deve também usar serviços de tradução de máquina, além do banco de dados de termos. Valores possíveis: True
ou False
Veja também
SAP Translation Hub, Tradução automática, Sugestões automáticas
NEARBY_MESSAGES¶
Quantas cadeia devem ser mostradas em torno da cadeia atualmente traduzida. Este é apenas um valor predefinido, os utilizadores podem ajustar-lo em Perfil do utilizador.
DEFAULT_PAGE_LIMIT¶
Novo na versão 4.7.
Número padrão de elementos a serem exibidos quando a paginação está ativa.
PAGURE_CREDENTIALS¶
Novo na versão 4.3.2.
Lista para credenciais para servidores de Pagure.
Dica
Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do Pagure com PAGURE_USERNAME
e PAGURE_TOKEN
.
PAGURE_CREDENTIALS = {
"pagure.io": {
"username": "weblate",
"token": "your-api-token",
},
"pagure.example.com": {
"username": "weblate",
"token": "another-api-token",
},
}
PAGURE_USERNAME¶
Novo na versão 4.3.2.
O nome de utilizador no Pagure para enviar merge requests para atualizações de tradução.
Veja também
PAGURE_TOKEN¶
Novo na versão 4.3.2.
Token de acesso pessoal do Pagure usado para fazer chamadas API para atualizações de tradução.
Veja também
PRIVACY_URL¶
Novo na versão 4.8.1.
URL where your Weblate instance shows its privacy policy.
Dica
Útil se hospeda os seus documentos legais fora do Weblate para incorporá-los ao Weblate, verifique Legal para obter detalhes.
Exemplo:
PRIVACY_URL = "https://weblate.org/terms/"
Veja também
RATELIMIT_ATTEMPTS¶
Novo na versão 3.2.
A quantidade máxima de tentativas de autenticação antes da limitação da taxa ser aplicada.
A predefinição é 5.
Veja também
RATELIMIT_WINDOW¶
Novo na versão 3.2.
Por quanto tempo a autenticação é aceita após a limitação da taxa ser aplicada.
Uma quantidade de segundos com a predefinição de 300 (5 minutos).
Veja também
RATELIMIT_LOCKOUT¶
Novo na versão 3.2.
Por quanto tempo a autenticação é bloqueada após a limitação da taxa ser aplicada.
Uma quantidade de segundos com a predefinição de 600 (10 minutos).
Veja também
REGISTRATION_ALLOW_BACKENDS¶
Novo na versão 4.1.
A lista de backends de autenticação de onde permite o registo. Isso só limita novos registos, os utilizadores ainda se podem autenticar e adicionar autenticação por todos os backends de autenticação configurados.
É recomendado para manter REGISTRATION_OPEN
ativado enquanto limita os backends de registo, caso contrário, os utilizadores poderão se registar, mas o Weblate não mostrará ligações para se registar na interface do utilizador.
Exemplo:
REGISTRATION_ALLOW_BACKENDS = ["azuread-oauth2", "azuread-tenant-oauth2"]
Dica
Os nomes de backend correspondem aos nomes usados na URL para autenticação.
Veja também
REGISTRATION_CAPTCHA¶
Um valor de True
ou False
indicando se o registo de contas novas é protegido pelo CAPTCHA. Esta configuração é opcional e uma predifinição de True
será presumido se não for fornecido.
Se for ativado, um CAPTCHA é adicionado a todas as páginas onde um utilizador digita o endereço de e-mail dele:
Registo de uma conta nova.
Recuperação de palavra-passe.
Adição de uma e-mail a uma conta.
Formulário de contacto para utilizadores que não estão autenticados.
REGISTRATION_EMAIL_MATCH¶
Novo na versão 2.17.
Permite filtrar quais endereços de e-mail podem ser registados.
A predefinição é .*
, que permite que registar qualquer endereço de e-mail.
Pode usá-lo para restringir o registo a um único domínio de e-mail:
REGISTRATION_EMAIL_MATCH = r"^.*@weblate\.org$"
REGISTRATION_OPEN¶
Se o registo de contas novas é atualmente permitido. Esta configuração opcional pode permanecer com a predefinição True
ou pode ser alterada para Falsa
.
Esta configuração afeta a autenticação embutida por endereço de e-mail ou através do Python Social Auth (pode listar certos back-ends a usar REGISTRATION_ALLOW_BACKENDS
).
Nota
Se estiver a usar métodos de autenticação de terceiros, como Autenticação por LDAP, ele apenas oculta o formulário de registo, mas novos utilizadores ainda conseguem se autenticar e criar contas.
Veja também
REGISTRATION_ALLOW_BACKENDS
,
REGISTRATION_EMAIL_MATCH
,
Autenticação
REPOSITORY_ALERT_THRESHOLD¶
Novo na versão 4.0.2.
Limiar para acionar um alerta para repositórios desatualizados ou aqueles que contêm muitas alterações. A predefinçao é 25.
Veja também
REQUIRE_LOGIN¶
Novo na versão 4.1.
Isso ativa :configuração`URLS_DE_LOGIN_NECESSÁRIOS` e configura o framework REST a requisitar autenticação para todos os pontos finais da API.
Nota
Isto é implementado no Amostra de configuração. Para Docker, use WEBLATE_REQUIRE_LOGIN
.
SENTRY_DSN¶
Novo na versão 3.9.
DSN do Sentry para usar para Coletando relatórios de erros.
Veja também
IDADE_REGISTRO_SESSÃO_AUTENTICADO¶
Novo na versão 4.3.
Configura a expiração da sessão para utilizador autenticados. Isso complementa IDADE_REGISTRO_SESSÃO
que é utilizado por utilizadores não autenticados.
Veja também
SIMPLIFY_LANGUAGES¶
Use códigos de idioma simples para combinações predfinidas de idioma/país. Por exemplo, uma tradução de fr_FR
usará o código de idioma fr
. Este é geralmente o comportamento desejado, pois simplifica a lista de idiomas para essas combinações predefinidas.
Desative isto se quiser traduções diferentes para cada variante.
SITE_DOMAIN¶
Configura o domínio do site. Isso é necessário para produzir ligações absolutas corretas em muitos escopos (por exemplo, ativação de e-mails, notificações ou feeds RSS).
No caso de o Weblate estar a ser executado num porte fora do padrão, inclua-a aqui também.
Exemplos::
# Production site with domain name
SITE_DOMAIN = "weblate.example.com"
# Local development with IP address and port
SITE_DOMAIN = "127.0.0.1:8000"
Nota
Esta configuração deve conter apenas o nome de domínio. Para configurar o protocolo (ativar e aplicar HTTPS), use ENABLE_HTTPS
e para alterar o URL, use URL_PREFIX
.
Dica
Num contentor Docker, o domínio do site é configurado através de WEBLATE_ALLOWED_HOSTS
.
SITE_TITLE¶
Título do site a ser usado para o site e e-mails enviados.
SPECIAL_CHARS¶
Caracteres adicionais para incluir no teclado visual, Teclado visual.
O valor predefinido é:
SPECIAL_CHARS = ("\t", "\n", "\u00a0", "…")
SINGLE_PROJECT¶
Novo na versão 3.8.
Redireciona os utilizadores diretamente para um projeto ou componente em vez de mostrar o painel. Pode configurá-lo como True
e, neste caso, só funciona no caso de haver realmente apenas um único projeto no Weblate. Alternativamente, define o projeto e redirecionará incondicionalmente para este projeto.
Alterado na versão 3.11: A configuração agora também aceita um slug de projeto, para forçar a exibição desse único projeto.
Exemplo:
SINGLE_PROJECT = "test"
STATUS_URL¶
A URL onde a sua instância de Weblate relata o estado dela.
SUGGESTION_CLEANUP_DAYS¶
Novo na versão 3.2.1.
Apaga sugestões automaticamente após uma determinada quantidade de dias. A predefinição é None
, ou seja, sem exclusões.
UPDATE_LANGUAGES¶
Novo na versão 4.3.2.
Controla se o banco de dados de idiomas deve ser atualizado ao executar a migração do banco de dados e está ativado por padrão. Esta configuração não tem efeito na invocação de setuplang
.
Veja também
URL_PREFIX¶
Esta configuração permite que execute Weblate em algum caminho (caso contrário, depende de ser executado a partir da raiz do servidor web).
Nota
Para usar esta configuração, também precisa configurar o seu servidor para remover este prefixo. Por exemplo, com o WSGI, isso pode ser alcançado definindo WSGIScriptAlias
.
Dica
O prefixo deve iniciar com um /
.
Exemplo:
URL_PREFIX = "/translations"
Nota
Esta configuração não funciona com o servidor embutido do Django, teria que ajustar urls.py
para conter este prefixo.
VCS_BACKENDS¶
Configuração de backends VCS disponíveis.
Nota
Weblate tenta usar todos os back-ends suportados para os seus utilizadores.
Dica
Pode limitar escolhas ou adicionar back-ends VCS personalizados a usar isto.
VCS_BACKENDS = ("weblate.vcs.git.GitRepository",)
Veja também
VCS_CLONE_DEPTH¶
Novo na versão 3.10.2.
Configura a profundidade a clonagem de repositórios Weblate deve ter.
Nota
Atualmente, isto só é suportado em Git. Por predefinição, o Weblate faz clones rasos dos repositórios para tornar a clonagem mais rápida e economizar espaço no disco. Dependendo do seu uso (por exemplo, ao usar o personalizado Extensões), pode aumentar a profundidade ou desligar os clones rasos completamente definindo isso para 0.
Dica
No caso de receber o erro fatal: protocol error: expected old/new/ref, got 'shallow <hash de commit>'
ao fazer push do Weblate, desative clones rasos completamente configurando:
VCS_CLONE_DEPTH = 0
WEBLATE_ADDONS¶
Lista de extensões disponíveis para uso. Para usá-las, elas devem ser ativadas para um determinado componente de tradução. Por predefinição, isto inclui todas as extensões embutidas, ao estender a lista, provavelmente vai manter as existentes ativadas, por exemplo:
WEBLATE_ADDONS = (
# Built-in addons
"weblate.addons.gettext.GenerateMoAddon",
"weblate.addons.gettext.UpdateLinguasAddon",
"weblate.addons.gettext.UpdateConfigureAddon",
"weblate.addons.gettext.MsgmergeAddon",
"weblate.addons.gettext.GettextCustomizeAddon",
"weblate.addons.gettext.GettextAuthorComments",
"weblate.addons.cleanup.CleanupAddon",
"weblate.addons.consistency.LangaugeConsistencyAddon",
"weblate.addons.discovery.DiscoveryAddon",
"weblate.addons.flags.SourceEditAddon",
"weblate.addons.flags.TargetEditAddon",
"weblate.addons.flags.SameEditAddon",
"weblate.addons.flags.BulkEditAddon",
"weblate.addons.generate.GenerateFileAddon",
"weblate.addons.json.JSONCustomizeAddon",
"weblate.addons.properties.PropertiesSortAddon",
"weblate.addons.git.GitSquashAddon",
"weblate.addons.removal.RemoveComments",
"weblate.addons.removal.RemoveSuggestions",
"weblate.addons.resx.ResxUpdateAddon",
"weblate.addons.autotranslate.AutoTranslateAddon",
"weblate.addons.yaml.YAMLCustomizeAddon",
"weblate.addons.cdn.CDNJSAddon",
# Add-on you want to include
"weblate.addons.example.ExampleAddon",
)
Nota
A remoção da extensão da lista não a desinstala dos componentes. Weblate vai travar nesse caso. Por favor, desinstale a extensão de todos os componentes antes de removê-la desta lista.
Veja também
WEBLATE_EXPORTERS¶
Novo na versão 4.2.
Lista de exportadores disponíveis que oferecem descarregar traduções ou glossários em vários formatos de ficheiro.
Veja também
WEBLATE_FORMATS¶
Novo na versão 3.0.
Lista de formatos de ficheiro disponíveis para uso.
Nota
A lista predfinida já tem os formatos comuns.
Veja também
WEBLATE_GPG_IDENTITY¶
Novo na versão 3.1.
Identidade usada pelo Weblate para assinar os commits Git, por exemplo:
WEBLATE_GPG_IDENTITY = "Weblate <weblate@example.com>"
O chaveiro GPG do Weblate é pesquisado por uma chave correspondente (home/.gnupg
em DATA_DIR
). Se não for encontrado, uma chave é gerada. Consulte Assinando commits do Git com GnuPG para mais detalhes.
Veja também
WEBSITE_REQUIRED¶
Define se Site da Web do Projeto deve ser especificado ao criar um projeto. Ativado por padrão, pois se adapta às configurações do servidor público.
Amostra de configuração¶
O exemplo a seguir é enviado como weblate/settings_example.py
com Weblate:
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
import os
import platform
from logging.handlers import SysLogHandler
# Title of site to use
SITE_TITLE = "Weblate"
# Site domain
SITE_DOMAIN = ""
# Whether site uses https
ENABLE_HTTPS = False
#
# Django settings for Weblate project.
#
DEBUG = True
ADMINS = (
# ("Your Name", "your_email@example.com"),
)
MANAGERS = ADMINS
DATABASES = {
"default": {
# Use "postgresql" or "mysql".
"ENGINE": "django.db.backends.postgresql",
# Database name.
"NAME": "weblate",
# Database user.
"USER": "weblate",
# Name of role to alter to set parameters in PostgreSQL,
# use in case role name is different than user used for authentication.
# "ALTER_ROLE": "weblate",
# Database password.
"PASSWORD": "",
# Set to empty string for localhost.
"HOST": "127.0.0.1",
# Set to empty string for default.
"PORT": "",
# Customizations for databases.
"OPTIONS": {
# In case of using an older MySQL server,
# which has MyISAM as a default storage
# "init_command": "SET storage_engine=INNODB",
# Uncomment for MySQL older than 5.7:
# "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
# Set emoji capable charset for MySQL:
# "charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
# "connect_timeout": 28800,
},
# Persistent connections
"CONN_MAX_AGE": 0,
}
}
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Data directory
DATA_DIR = os.path.join(BASE_DIR, "data")
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = "UTC"
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = "en-us"
LANGUAGES = (
("ar", "العربية"),
("az", "Azərbaycan"),
("be", "Беларуская"),
("be@latin", "Biełaruskaja"),
("bg", "Български"),
("br", "Brezhoneg"),
("ca", "Català"),
("cs", "Čeština"),
("da", "Dansk"),
("de", "Deutsch"),
("en", "English"),
("el", "Ελληνικά"),
("en-gb", "English (United Kingdom)"),
("es", "Español"),
("fi", "Suomi"),
("fr", "Français"),
("gl", "Galego"),
("he", "עברית"),
("hu", "Magyar"),
("hr", "Hrvatski"),
("id", "Indonesia"),
("is", "Íslenska"),
("it", "Italiano"),
("ja", "日本語"),
("kab", "Taqbaylit"),
("kk", "Қазақ тілі"),
("ko", "한국어"),
("nb", "Norsk bokmål"),
("nl", "Nederlands"),
("pl", "Polski"),
("pt", "Português"),
("pt-br", "Português brasileiro"),
("ro", "Română"),
("ru", "Русский"),
("sk", "Slovenčina"),
("sl", "Slovenščina"),
("sq", "Shqip"),
("sr", "Српски"),
("sr-latn", "Srpski"),
("sv", "Svenska"),
("th", "ไทย"),
("tr", "Türkçe"),
("uk", "Українська"),
("zh-hans", "简体字"),
("zh-hant", "正體字"),
)
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Type of automatic primary key, introduced in Django 3.2
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
# URL prefix to use, please see documentation for more details
URL_PREFIX = ""
# Absolute filesystem path to the directory that will hold user-uploaded files.
MEDIA_ROOT = os.path.join(DATA_DIR, "media")
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
MEDIA_URL = f"{URL_PREFIX}/media/"
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
STATIC_ROOT = os.path.join(DATA_DIR, "static")
# URL prefix for static files.
STATIC_URL = f"{URL_PREFIX}/static/"
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
"compressor.finders.CompressorFinder",
)
# Make this unique, and don't share it with anybody.
# You can generate it using weblate/examples/generate-secret-key
SECRET_KEY = ""
_TEMPLATE_LOADERS = [
"django.template.loaders.filesystem.Loader",
"django.template.loaders.app_directories.Loader",
]
if not DEBUG:
_TEMPLATE_LOADERS = [("django.template.loaders.cached.Loader", _TEMPLATE_LOADERS)]
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"OPTIONS": {
"context_processors": [
"django.contrib.auth.context_processors.auth",
"django.template.context_processors.debug",
"django.template.context_processors.i18n",
"django.template.context_processors.request",
"django.template.context_processors.csrf",
"django.contrib.messages.context_processors.messages",
"weblate.trans.context_processors.weblate_context",
],
"loaders": _TEMPLATE_LOADERS,
},
}
]
# GitHub username and token for sending pull requests.
# Please see the documentation for more details.
GITHUB_USERNAME = None
GITHUB_TOKEN = None
# GitLab username and token for sending merge requests.
# Please see the documentation for more details.
GITLAB_USERNAME = None
GITLAB_TOKEN = None
# Authentication configuration
AUTHENTICATION_BACKENDS = (
"social_core.backends.email.EmailAuth",
# "social_core.backends.google.GoogleOAuth2",
# "social_core.backends.github.GithubOAuth2",
# "social_core.backends.bitbucket.BitbucketOAuth",
# "social_core.backends.suse.OpenSUSEOpenId",
# "social_core.backends.ubuntu.UbuntuOpenId",
# "social_core.backends.fedora.FedoraOpenId",
# "social_core.backends.facebook.FacebookOAuth2",
"weblate.accounts.auth.WeblateUserBackend",
)
# Custom user model
AUTH_USER_MODEL = "weblate_auth.User"
# Social auth backends setup
SOCIAL_AUTH_GITHUB_KEY = ""
SOCIAL_AUTH_GITHUB_SECRET = ""
SOCIAL_AUTH_GITHUB_SCOPE = ["user:email"]
SOCIAL_AUTH_BITBUCKET_KEY = ""
SOCIAL_AUTH_BITBUCKET_SECRET = ""
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True
SOCIAL_AUTH_FACEBOOK_KEY = ""
SOCIAL_AUTH_FACEBOOK_SECRET = ""
SOCIAL_AUTH_FACEBOOK_SCOPE = ["email", "public_profile"]
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {"fields": "id,name,email"}
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ""
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ""
# Social auth settings
SOCIAL_AUTH_PIPELINE = (
"social_core.pipeline.social_auth.social_details",
"social_core.pipeline.social_auth.social_uid",
"social_core.pipeline.social_auth.auth_allowed",
"social_core.pipeline.social_auth.social_user",
"weblate.accounts.pipeline.store_params",
"weblate.accounts.pipeline.verify_open",
"social_core.pipeline.user.get_username",
"weblate.accounts.pipeline.require_email",
"social_core.pipeline.mail.mail_validation",
"weblate.accounts.pipeline.revoke_mail_code",
"weblate.accounts.pipeline.ensure_valid",
"weblate.accounts.pipeline.remove_account",
"social_core.pipeline.social_auth.associate_by_email",
"weblate.accounts.pipeline.reauthenticate",
"weblate.accounts.pipeline.verify_username",
"social_core.pipeline.user.create_user",
"social_core.pipeline.social_auth.associate_user",
"social_core.pipeline.social_auth.load_extra_data",
"weblate.accounts.pipeline.cleanup_next",
"weblate.accounts.pipeline.user_full_name",
"weblate.accounts.pipeline.store_email",
"weblate.accounts.pipeline.notify_connect",
"weblate.accounts.pipeline.password_reset",
)
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
"social_core.pipeline.disconnect.allowed_to_disconnect",
"social_core.pipeline.disconnect.get_entries",
"social_core.pipeline.disconnect.revoke_tokens",
"weblate.accounts.pipeline.cycle_session",
"weblate.accounts.pipeline.adjust_primary_mail",
"weblate.accounts.pipeline.notify_disconnect",
"social_core.pipeline.disconnect.disconnect",
"weblate.accounts.pipeline.cleanup_next",
)
# Custom authentication strategy
SOCIAL_AUTH_STRATEGY = "weblate.accounts.strategy.WeblateStrategy"
# Raise exceptions so that we can handle them later
SOCIAL_AUTH_RAISE_EXCEPTIONS = True
SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION = "weblate.accounts.pipeline.send_validation"
SOCIAL_AUTH_EMAIL_VALIDATION_URL = f"{URL_PREFIX}/accounts/email-sent/"
SOCIAL_AUTH_LOGIN_ERROR_URL = f"{URL_PREFIX}/accounts/login/"
SOCIAL_AUTH_EMAIL_FORM_URL = f"{URL_PREFIX}/accounts/email/"
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = f"{URL_PREFIX}/accounts/profile/#account"
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ("email",)
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
SOCIAL_AUTH_SLUGIFY_FUNCTION = "weblate.accounts.pipeline.slugify_username"
# Password validation configuration
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator" # noqa: E501, pylint: disable=line-too-long
},
{
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
"OPTIONS": {"min_length": 10},
},
{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
{"NAME": "weblate.accounts.password_validation.CharsPasswordValidator"},
{"NAME": "weblate.accounts.password_validation.PastPasswordsValidator"},
# Optional password strength validation by django-zxcvbn-password
# {
# "NAME": "zxcvbn_password.ZXCVBNValidator",
# "OPTIONS": {
# "min_score": 3,
# "user_attributes": ("username", "email", "full_name")
# }
# },
]
# Password hashing (prefer Argon)
PASSWORD_HASHERS = [
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
]
# Allow new user registrations
REGISTRATION_OPEN = True
# Shortcut for login required setting
REQUIRE_LOGIN = False
# Middleware
MIDDLEWARE = [
"weblate.middleware.RedirectMiddleware",
"weblate.middleware.ProxyMiddleware",
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"weblate.accounts.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"social_django.middleware.SocialAuthExceptionMiddleware",
"weblate.accounts.middleware.RequireLoginMiddleware",
"weblate.api.middleware.ThrottlingMiddleware",
"weblate.middleware.SecurityMiddleware",
"weblate.wladmin.middleware.ManageMiddleware",
]
ROOT_URLCONF = "weblate.urls"
# Django and Weblate apps
INSTALLED_APPS = [
# Weblate apps on top to override Django locales and templates
"weblate.addons",
"weblate.auth",
"weblate.checks",
"weblate.formats",
"weblate.glossary",
"weblate.machinery",
"weblate.trans",
"weblate.lang",
"weblate_language_data",
"weblate.memory",
"weblate.screenshots",
"weblate.fonts",
"weblate.accounts",
"weblate.configuration",
"weblate.utils",
"weblate.vcs",
"weblate.wladmin",
"weblate.metrics",
"weblate",
# Optional: Git exporter
"weblate.gitexport",
# Standard Django modules
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.admin.apps.SimpleAdminConfig",
"django.contrib.admindocs",
"django.contrib.sitemaps",
"django.contrib.humanize",
# Third party Django modules
"social_django",
"crispy_forms",
"compressor",
"rest_framework",
"rest_framework.authtoken",
"django_filters",
]
# Custom exception reporter to include some details
DEFAULT_EXCEPTION_REPORTER_FILTER = "weblate.trans.debug.WeblateExceptionReporterFilter"
# Default logging of Weblate messages
# - to syslog in production (if available)
# - otherwise to console
# - you can also choose "logfile" to log into separate file
# after configuring it below
# Detect if we can connect to syslog
HAVE_SYSLOG = False
if platform.system() != "Windows":
try:
handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2)
handler.close()
HAVE_SYSLOG = True
except OSError:
HAVE_SYSLOG = False
if DEBUG or not HAVE_SYSLOG:
DEFAULT_LOG = "console"
else:
DEFAULT_LOG = "syslog"
DEFAULT_LOGLEVEL = "DEBUG" if DEBUG else "INFO"
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/stable/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
"version": 1,
"disable_existing_loggers": True,
"filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}},
"formatters": {
"syslog": {"format": "weblate[%(process)d]: %(levelname)s %(message)s"},
"simple": {"format": "[%(asctime)s: %(levelname)s/%(process)s] %(message)s"},
"logfile": {"format": "%(asctime)s %(levelname)s %(message)s"},
"django.server": {
"()": "django.utils.log.ServerFormatter",
"format": "[%(server_time)s] %(message)s",
},
},
"handlers": {
"mail_admins": {
"level": "ERROR",
"filters": ["require_debug_false"],
"class": "django.utils.log.AdminEmailHandler",
"include_html": True,
},
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "simple",
},
"django.server": {
"level": "INFO",
"class": "logging.StreamHandler",
"formatter": "django.server",
},
"syslog": {
"level": "DEBUG",
"class": "logging.handlers.SysLogHandler",
"formatter": "syslog",
"address": "/dev/log",
"facility": SysLogHandler.LOG_LOCAL2,
},
# Logging to a file
# "logfile": {
# "level":"DEBUG",
# "class":"logging.handlers.RotatingFileHandler",
# "filename": "/var/log/weblate/weblate.log",
# "maxBytes": 100000,
# "backupCount": 3,
# "formatter": "logfile",
# },
},
"loggers": {
"django.request": {
"handlers": ["mail_admins", DEFAULT_LOG],
"level": "ERROR",
"propagate": True,
},
"django.server": {
"handlers": ["django.server"],
"level": "INFO",
"propagate": False,
},
# Logging database queries
# "django.db.backends": {
# "handlers": [DEFAULT_LOG],
# "level": "DEBUG",
# },
"weblate": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
# Logging VCS operations
"weblate.vcs": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
# Python Social Auth
"social": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
# Django Authentication Using LDAP
"django_auth_ldap": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
# SAML IdP
"djangosaml2idp": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
},
}
# Remove syslog setup if it's not present
if not HAVE_SYSLOG:
del LOGGING["handlers"]["syslog"]
# List of machine translations
MT_SERVICES = (
# "weblate.machinery.apertium.ApertiumAPYTranslation",
# "weblate.machinery.baidu.BaiduTranslation",
# "weblate.machinery.deepl.DeepLTranslation",
# "weblate.machinery.glosbe.GlosbeTranslation",
# "weblate.machinery.google.GoogleTranslation",
# "weblate.machinery.googlev3.GoogleV3Translation",
# "weblate.machinery.libretranslate.LibreTranslateTranslation",
# "weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
# "weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
# "weblate.machinery.modernmt.ModernMTTranslation",
# "weblate.machinery.mymemory.MyMemoryTranslation",
# "weblate.machinery.netease.NeteaseSightTranslation",
# "weblate.machinery.tmserver.AmagamaTranslation",
# "weblate.machinery.tmserver.TMServerTranslation",
# "weblate.machinery.yandex.YandexTranslation",
# "weblate.machinery.saptranslationhub.SAPTranslationHub",
# "weblate.machinery.youdao.YoudaoTranslation",
"weblate.machinery.weblatetm.WeblateTranslation",
"weblate.memory.machine.WeblateMemory",
)
# Machine translation API keys
# URL of the Apertium APy server
MT_APERTIUM_APY = None
# DeepL API key
MT_DEEPL_KEY = None
# LibreTranslate
MT_LIBRETRANSLATE_API_URL = None
MT_LIBRETRANSLATE_KEY = None
# Microsoft Cognitive Services Translator API, register at
# https://portal.azure.com/
MT_MICROSOFT_COGNITIVE_KEY = None
MT_MICROSOFT_REGION = None
# ModernMT
MT_MODERNMT_KEY = None
# MyMemory identification email, see
# https://mymemory.translated.net/doc/spec.php
MT_MYMEMORY_EMAIL = None
# Optional MyMemory credentials to access private translation memory
MT_MYMEMORY_USER = None
MT_MYMEMORY_KEY = None
# Google API key for Google Translate API v2
MT_GOOGLE_KEY = None
# Google Translate API3 credentials and project id
MT_GOOGLE_CREDENTIALS = None
MT_GOOGLE_PROJECT = None
# Baidu app key and secret
MT_BAIDU_ID = None
MT_BAIDU_SECRET = None
# Youdao Zhiyun app key and secret
MT_YOUDAO_ID = None
MT_YOUDAO_SECRET = None
# Netease Sight (Jianwai) app key and secret
MT_NETEASE_KEY = None
MT_NETEASE_SECRET = None
# API key for Yandex Translate API
MT_YANDEX_KEY = None
# tmserver URL
MT_TMSERVER = None
# SAP Translation Hub
MT_SAP_BASE_URL = None
MT_SAP_SANDBOX_APIKEY = None
MT_SAP_USERNAME = None
MT_SAP_PASSWORD = None
MT_SAP_USE_MT = True
# Use HTTPS when creating redirect URLs for social authentication, see
# documentation for more details:
# https://python-social-auth-docs.readthedocs.io/en/latest/configuration/settings.html#processing-redirects-and-urlopen
SOCIAL_AUTH_REDIRECT_IS_HTTPS = ENABLE_HTTPS
# Make CSRF cookie HttpOnly, see documentation for more details:
# https://docs.djangoproject.com/en/1.11/ref/settings/#csrf-cookie-httponly
CSRF_COOKIE_HTTPONLY = True
CSRF_COOKIE_SECURE = ENABLE_HTTPS
# Store CSRF token in session
CSRF_USE_SESSIONS = True
# Customize CSRF failure view
CSRF_FAILURE_VIEW = "weblate.trans.views.error.csrf_failure"
SESSION_COOKIE_SECURE = ENABLE_HTTPS
SESSION_COOKIE_HTTPONLY = True
# SSL redirect
SECURE_SSL_REDIRECT = ENABLE_HTTPS
# Sent referrrer only for same origin links
SECURE_REFERRER_POLICY = "same-origin"
# SSL redirect URL exemption list
SECURE_REDIRECT_EXEMPT = (r"healthz/$",) # Allowing HTTP access to health check
# Session cookie age (in seconds)
SESSION_COOKIE_AGE = 1000
SESSION_COOKIE_AGE_AUTHENTICATED = 1209600
SESSION_COOKIE_SAMESITE = "Lax"
# Increase allowed upload size
DATA_UPLOAD_MAX_MEMORY_SIZE = 50000000
# Apply session coookie settings to language cookie as ewll
LANGUAGE_COOKIE_SECURE = SESSION_COOKIE_SECURE
LANGUAGE_COOKIE_HTTPONLY = SESSION_COOKIE_HTTPONLY
LANGUAGE_COOKIE_AGE = SESSION_COOKIE_AGE_AUTHENTICATED * 10
LANGUAGE_COOKIE_SAMESITE = SESSION_COOKIE_SAMESITE
# Some security headers
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
SECURE_CONTENT_TYPE_NOSNIFF = True
# Optionally enable HSTS
SECURE_HSTS_SECONDS = 31536000 if ENABLE_HTTPS else 0
SECURE_HSTS_PRELOAD = ENABLE_HTTPS
SECURE_HSTS_INCLUDE_SUBDOMAINS = ENABLE_HTTPS
# HTTPS detection behind reverse proxy
SECURE_PROXY_SSL_HEADER = None
# URL of login
LOGIN_URL = f"{URL_PREFIX}/accounts/login/"
# URL of logout
LOGOUT_URL = f"{URL_PREFIX}/accounts/logout/"
# Default location for login
LOGIN_REDIRECT_URL = f"{URL_PREFIX}/"
# Anonymous user name
ANONYMOUS_USER_NAME = "anonymous"
# Reverse proxy settings
IP_PROXY_HEADER = "HTTP_X_FORWARDED_FOR"
IP_BEHIND_REVERSE_PROXY = False
IP_PROXY_OFFSET = 0
# Sending HTML in mails
EMAIL_SEND_HTML = True
# Subject of emails includes site title
EMAIL_SUBJECT_PREFIX = f"[{SITE_TITLE}] "
# Enable remote hooks
ENABLE_HOOKS = True
# By default the length of a given translation is limited to the length of
# the source string * 10 characters. Set this option to False to allow longer
# translations (up to 10.000 characters)
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH = True
# Use simple language codes for default language/country combinations
SIMPLIFY_LANGUAGES = True
# Render forms using bootstrap
CRISPY_TEMPLATE_PACK = "bootstrap3"
# List of quality checks
# CHECK_LIST = (
# "weblate.checks.same.SameCheck",
# "weblate.checks.chars.BeginNewlineCheck",
# "weblate.checks.chars.EndNewlineCheck",
# "weblate.checks.chars.BeginSpaceCheck",
# "weblate.checks.chars.EndSpaceCheck",
# "weblate.checks.chars.DoubleSpaceCheck",
# "weblate.checks.chars.EndStopCheck",
# "weblate.checks.chars.EndColonCheck",
# "weblate.checks.chars.EndQuestionCheck",
# "weblate.checks.chars.EndExclamationCheck",
# "weblate.checks.chars.EndEllipsisCheck",
# "weblate.checks.chars.EndSemicolonCheck",
# "weblate.checks.chars.MaxLengthCheck",
# "weblate.checks.chars.KashidaCheck",
# "weblate.checks.chars.PunctuationSpacingCheck",
# "weblate.checks.format.PythonFormatCheck",
# "weblate.checks.format.PythonBraceFormatCheck",
# "weblate.checks.format.PHPFormatCheck",
# "weblate.checks.format.CFormatCheck",
# "weblate.checks.format.PerlFormatCheck",
# "weblate.checks.format.JavaScriptFormatCheck",
# "weblate.checks.format.LuaFormatCheck",
# "weblate.checks.format.ObjectPascalFormatCheck",
# "weblate.checks.format.SchemeFormatCheck",
# "weblate.checks.format.CSharpFormatCheck",
# "weblate.checks.format.JavaFormatCheck",
# "weblate.checks.format.JavaMessageFormatCheck",
# "weblate.checks.format.PercentPlaceholdersCheck",
# "weblate.checks.format.VueFormattingCheck",
# "weblate.checks.format.I18NextInterpolationCheck",
# "weblate.checks.format.ESTemplateLiteralsCheck",
# "weblate.checks.angularjs.AngularJSInterpolationCheck",
# "weblate.checks.qt.QtFormatCheck",
# "weblate.checks.qt.QtPluralCheck",
# "weblate.checks.ruby.RubyFormatCheck",
# "weblate.checks.consistency.PluralsCheck",
# "weblate.checks.consistency.SamePluralsCheck",
# "weblate.checks.consistency.ConsistencyCheck",
# "weblate.checks.consistency.TranslatedCheck",
# "weblate.checks.chars.EscapedNewlineCountingCheck",
# "weblate.checks.chars.NewLineCountCheck",
# "weblate.checks.markup.BBCodeCheck",
# "weblate.checks.chars.ZeroWidthSpaceCheck",
# "weblate.checks.render.MaxSizeCheck",
# "weblate.checks.markup.XMLValidityCheck",
# "weblate.checks.markup.XMLTagsCheck",
# "weblate.checks.markup.MarkdownRefLinkCheck",
# "weblate.checks.markup.MarkdownLinkCheck",
# "weblate.checks.markup.MarkdownSyntaxCheck",
# "weblate.checks.markup.URLCheck",
# "weblate.checks.markup.SafeHTMLCheck",
# "weblate.checks.placeholders.PlaceholderCheck",
# "weblate.checks.placeholders.RegexCheck",
# "weblate.checks.duplicate.DuplicateCheck",
# "weblate.checks.source.OptionalPluralCheck",
# "weblate.checks.source.EllipsisCheck",
# "weblate.checks.source.MultipleFailingCheck",
# "weblate.checks.source.LongUntranslatedCheck",
# "weblate.checks.format.MultipleUnnamedFormatsCheck",
# "weblate.checks.glossary.GlossaryCheck",
# )
# List of automatic fixups
# AUTOFIX_LIST = (
# "weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
# "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
# "weblate.trans.autofixes.chars.RemoveZeroSpace",
# "weblate.trans.autofixes.chars.RemoveControlChars",
# )
# List of enabled addons
# WEBLATE_ADDONS = (
# "weblate.addons.gettext.GenerateMoAddon",
# "weblate.addons.gettext.UpdateLinguasAddon",
# "weblate.addons.gettext.UpdateConfigureAddon",
# "weblate.addons.gettext.MsgmergeAddon",
# "weblate.addons.gettext.GettextCustomizeAddon",
# "weblate.addons.gettext.GettextAuthorComments",
# "weblate.addons.cleanup.CleanupAddon",
# "weblate.addons.cleanup.RemoveBlankAddon",
# "weblate.addons.consistency.LangaugeConsistencyAddon",
# "weblate.addons.discovery.DiscoveryAddon",
# "weblate.addons.autotranslate.AutoTranslateAddon",
# "weblate.addons.flags.SourceEditAddon",
# "weblate.addons.flags.TargetEditAddon",
# "weblate.addons.flags.SameEditAddon",
# "weblate.addons.flags.BulkEditAddon",
# "weblate.addons.generate.GenerateFileAddon",
# "weblate.addons.generate.PseudolocaleAddon",
# "weblate.addons.json.JSONCustomizeAddon",
# "weblate.addons.properties.PropertiesSortAddon",
# "weblate.addons.git.GitSquashAddon",
# "weblate.addons.removal.RemoveComments",
# "weblate.addons.removal.RemoveSuggestions",
# "weblate.addons.resx.ResxUpdateAddon",
# "weblate.addons.yaml.YAMLCustomizeAddon",
# "weblate.addons.cdn.CDNJSAddon",
# )
# E-mail address that error messages come from.
SERVER_EMAIL = "noreply@example.com"
# Default email address to use for various automated correspondence from
# the site managers. Used for registration emails.
DEFAULT_FROM_EMAIL = "noreply@example.com"
# List of URLs your site is supposed to serve
ALLOWED_HOSTS = ["*"]
# Configuration for caching
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
# If redis is running on same host as Weblate, you might
# want to use unix sockets instead:
# "LOCATION": "unix:///var/run/redis/redis.sock?db=1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PARSER_CLASS": "redis.connection.HiredisParser",
# If you set password here, adjust CELERY_BROKER_URL as well
"PASSWORD": None,
"CONNECTION_POOL_KWARGS": {},
},
"KEY_PREFIX": "weblate",
},
"avatar": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
"TIMEOUT": 86400,
"OPTIONS": {"MAX_ENTRIES": 1000},
},
}
# Store sessions in cache
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# Store messages in session
MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"
# REST framework settings for API
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
"DEFAULT_PERMISSION_CLASSES": [
# Require authentication for login required sites
"rest_framework.permissions.IsAuthenticated"
if REQUIRE_LOGIN
else "rest_framework.permissions.IsAuthenticatedOrReadOnly"
],
"DEFAULT_AUTHENTICATION_CLASSES": (
"rest_framework.authentication.TokenAuthentication",
"weblate.api.authentication.BearerAuthentication",
"rest_framework.authentication.SessionAuthentication",
),
"DEFAULT_THROTTLE_CLASSES": (
"weblate.api.throttling.UserRateThrottle",
"weblate.api.throttling.AnonRateThrottle",
),
"DEFAULT_THROTTLE_RATES": {"anon": "100/day", "user": "5000/hour"},
"DEFAULT_PAGINATION_CLASS": ("rest_framework.pagination.PageNumberPagination"),
"PAGE_SIZE": 20,
"VIEW_DESCRIPTION_FUNCTION": "weblate.api.views.get_view_description",
"UNAUTHENTICATED_USER": "weblate.auth.models.get_anonymous",
}
# Fonts CDN URL
FONTS_CDN_URL = None
# Django compressor offline mode
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = [
{"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": True},
{"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": False},
]
# Require login for all URLs
if REQUIRE_LOGIN:
LOGIN_REQUIRED_URLS = (r"/(.*)$",)
# In such case you will want to include some of the exceptions
# LOGIN_REQUIRED_URLS_EXCEPTIONS = (
# rf"{URL_PREFIX}/accounts/(.*)$", # Required for login
# rf"{URL_PREFIX}/admin/login/(.*)$", # Required for admin login
# rf"{URL_PREFIX}/static/(.*)$", # Required for development mode
# rf"{URL_PREFIX}/widgets/(.*)$", # Allowing public access to widgets
# rf"{URL_PREFIX}/data/(.*)$", # Allowing public access to data exports
# rf"{URL_PREFIX}/hooks/(.*)$", # Allowing public access to notification hooks
# rf"{URL_PREFIX}/healthz/$", # Allowing public access to health check
# rf"{URL_PREFIX}/api/(.*)$", # Allowing access to API
# rf"{URL_PREFIX}/js/i18n/$", # JavaScript localization
# rf"{URL_PREFIX}/contact/$", # Optional for contact form
# rf"{URL_PREFIX}/legal/(.*)$", # Optional for legal app
# )
# Silence some of the Django system checks
SILENCED_SYSTEM_CHECKS = [
# We have modified django.contrib.auth.middleware.AuthenticationMiddleware
# as weblate.accounts.middleware.AuthenticationMiddleware
"admin.E408"
]
# Celery worker configuration for testing
# CELERY_TASK_ALWAYS_EAGER = True
# CELERY_BROKER_URL = "memory://"
# CELERY_TASK_EAGER_PROPAGATES = True
# Celery worker configuration for production
CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
# Celery settings, it is not recommended to change these
CELERY_WORKER_MAX_MEMORY_PER_CHILD = 200000
CELERY_BEAT_SCHEDULE_FILENAME = os.path.join(DATA_DIR, "celery", "beat-schedule")
CELERY_TASK_ROUTES = {
"weblate.trans.tasks.auto_translate*": {"queue": "translate"},
"weblate.accounts.tasks.notify_*": {"queue": "notify"},
"weblate.accounts.tasks.send_mails": {"queue": "notify"},
"weblate.utils.tasks.settings_backup": {"queue": "backup"},
"weblate.utils.tasks.database_backup": {"queue": "backup"},
"weblate.wladmin.tasks.backup": {"queue": "backup"},
"weblate.wladmin.tasks.backup_service": {"queue": "backup"},
"weblate.memory.tasks.*": {"queue": "memory"},
}
# Enable plain database backups
DATABASE_BACKUP = "plain"
# Enable auto updating
AUTO_UPDATE = False
# PGP commits signing
WEBLATE_GPG_IDENTITY = None
# Third party services integration
MATOMO_SITE_ID = None
MATOMO_URL = None
GOOGLE_ANALYTICS_ID = None
SENTRY_DSN = None
SENTRY_ENVIRONMENT = SITE_DOMAIN
AKISMET_API_KEY = None
Comandos de gerência¶
Nota
Executar comandos de gestão sob um utilizador diferente daquele que executa o seu servidor web pode resultar em ficheiros a receber permissões erradas, por favor, confira Permissões do sistema de ficheiros para mais detalhes.
Encontrará comandos básicos de gestão (disponíveis como ./manage.py
nas fontes do Django ou como um conjunto estendido num script chamado weblate instalável em cima do Weblate).
Invocando comandos de gestão¶
Como mencionado anteriormente, a invocação depende de como instalou o Weblate.
Se estiver a usar o virtualenv para Weblate, pode especificar o caminho completo para weblate ou ativar o virtualenv antes de invocá-lo:
# Direct invocation
~/weblate-env/bin/weblate
# Activating virtualenv adds it to search path
. ~/weblate-env/bin/activate
weblate
Se estiver a usar o código-fonte diretamente (de um tarball ou checkout Git), o script de gestão é . /manage.py
disponível nos fontes do Weblate. Para executá-lo:
python ./manage.py list_versions
Se instalou o Weblate a usar o instalador pip ou pip3, ou a usar o script . /setup.py
, o weblate é instalado no seu caminho (ou caminho virtualenv), de onde pode usá-lo para controlar o Weblate:
weblate list_versions
Para a imagem Docker, o script é instalado como acima e pode executá-lo usando docker exec:
docker exec --user weblate <container> weblate list_versions
Para docker-compose o processo é semelhante, apenas tem que usar docker-compose exec:
docker-compose exec --user weblate weblate weblate list_versions
Caso precise passar-le um ficheiro, pode adicionar temporariamente um volume:
docker-compose exec --user weblate /tmp:/tmp weblate weblate importusers /tmp/users.json
add_suggestions¶
- weblate add_suggestions <project> <component> <language> <file>¶
Novo na versão 2.5.
Importa uma tradução do fcheiro para usar como sugestão para a tradução fornecida. Pula traduções duplicadas; apenas os diferentes são adicionados.
- --author USER@EXAMPLE.COM¶
E-mail do autor para sugestões. Este utilizador deve existir antes da importação (você pode criar um na interface administrativa, se necessário).
Exemplo:
weblate --author michal@cihar.com add_suggestions weblate application cs /tmp/suggestions-cs.po
auto_translate¶
- weblate auto_translate <project> <component> <language>¶
Novo na versão 2.5.
Alterado na versão 4.6: Adicionado parâmetro para o modo de tradução.
Executa tradução automática com base em outras traduções de componentes.
- --source PROJECT/COMPONENT¶
Especifica o componente a ser usado como fonte disponível para tradução. Se não for especificado, todos os componentes do projeto serão usados.
- --user USERNAME¶
Especifica o nome de utilizador listado como autor das traduções. «Utilizador anônimo» é usado se não for especificado.
- --overwrite¶
Se deve sobrescrever as traduções existentes.
- --inconsistent¶
Se deve substituir as traduções existentes que são inconsistentes (veja Inconsistente).
- --add¶
Adiciona automaticamente o idioma se uma determinada tradução não existir.
- --mt MT¶
Use a tradução automática em vez de outros componentes como traduções de máquina.
- --threshold THRESHOLD¶
Limite de similaridade para tradução de máquina, a predefinição é 80.
- --mode MODE¶
Especifica o modo de tradução tendo como o padrão
translate
, masfuzzy
ousuggest
pode ser usado.
Exemplo:
weblate auto_translate --user nijel --inconsistent --source weblate/application weblate website cs
Veja também
celery_queues¶
- weblate celery_queues¶
Novo na versão 3.7.
Exibe o tamanho das filas de tarefas do Celery.
checkgit¶
- weblate checkgit <project|project/component>¶
Imprime o estado atual do repositório Git de backend.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
commitgit¶
- weblate commitgit <project|project/component>¶
Faz commit de todas as alterações pendentes possíveis para o repositório Git de backend.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
commit_pending¶
- weblate commit_pending <project|project/component>¶
Faz commit de alterações pendentes anteriores a uma determinada idade.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
- --age HOURS¶
Idade em horas para fazer commit. Se não for especificado, o valor configurado em Configuração de componente é usado.
Nota
Isso é realizado automaticamente em segundo plano pelo Weblate, de modo que não há necessidade real de invocar isso manualmente, além de forçar um commit anterior do que o especificado por Configuração de componente.
Veja também
cleanuptrans¶
- weblate cleanuptrans¶
Limpa verificações e sugestões de tradução órfãs. Normalmente, não há necessidade de executá-lo manualmente, pois as limpezas acontecem automaticamente em segundo plano.
Veja também
createadmin¶
- weblate createadmin¶
Cria uma conta admin
com uma palavra-passe aleatória, a menos que seja especificada.
- --password PASSWORD¶
Fornece uma palavra-passe na linha de comando, para não gerar uma palavra-passe aleatória.
- --no-password¶
Não define a palavra-passe, isso pode ser útil com –update.
- --username USERNAME¶
Use o nome dado em vez de
admin
.
- --email USER@EXAMPLE.COM¶
Especifica o endereço de e-mail do administrador.
- --name¶
Especifica o nome (visível) do administrador.
- --update¶
Atualiza o utilizador existente (pode usar isto para alterar palavras-passe).
Alterado na versão 2.9: Adicionados os parâmetros --username
, --email
, --name
e --update
.
dump_memory¶
- weblate dump_memory¶
Novo na versão 2.20.
Exporta um ficheiro JSON que contem o conteúdo de memória de tradução do Weblate.
dumpuserdata¶
- weblate dumpuserdata <file.json>¶
Despeja dados de utilizador num ficheiro para uso posterior por importuserdata
Dica
Isso é útil ao migrar ou mesclar instâncias do Weblate.
import_demo¶
- weblate import_demo¶
Novo na versão 4.1.
Cria um projeto de demonstração com componentes baseados em <https://github.com/WeblateOrg/demo>.
Isso pode ser útil ao desenvolver Weblate.
import_json¶
- weblate import_json <json-file>¶
Novo na versão 2.7.
Importação em lote de componentes com base em dados JSON.
A estrutura do ficheiro JSON importado corresponde basicamente ao objeto do componente (consulte GET /api/components/(string:project)/(string:component)/
). Deve incluir os campos name
e filemask
.
- --project PROJECT¶
Especifica de onde os componentes serão importados.
- --main-component COMPONENT¶
Usa o repositório VCS fornecido deste componente para todos eles.
- --ignore¶
Pula os componentes (já) importados.
- --update¶
Atualiza os componentes (já) importados.
Alterado na versão 2.9: Os parâmetros --ignore
e --update
existem para lidar com componentes já importados.
Exemplo de ficheiro JSON:
[
{
"slug": "po",
"name": "Gettext PO",
"file_format": "po",
"filemask": "po/*.po",
"new_lang": "none"
},
{
"name": "Android",
"filemask": "android/values-*/strings.xml",
"template": "android/values/strings.xml",
"repo": "weblate://test/test",
"file_format": "aresource"
}
]
Veja também
import_memory¶
- weblate import_memory <file>¶
Novo na versão 2.20.
Importa um ficheiro TMX ou JSON para a memória de tradução do Weblate.
- --language-map LANGMAP¶
Permite mapear idiomas no TMX para a memória de tradução do Weblate. Os códigos de idioma são mapeados após a normalização geralmente feita pelo Weblate.
--language-map en_US:en
vai, por exemplo, importar todos os textosen_US
comoen
.Isso pode ser útil caso as localidades do seu ficheiro TMX não correspondam ao que usa no Weblate.
import_project¶
- weblate import_project <project> <gitrepo> <branch> <filemask>¶
Alterado na versão 3.0: O comando import_project agora é baseado na extensão Descoberta de componentes, levando a algumas mudanças no comportamento e quais parâmetros são aceitos.
Executa a importação em lote de componentes para o projeto com base na máscara de ficheiro.
<project> é o nome de um projeto existente, para o qual os componentes devem ser importados.
O <gitrepo> define a URL do repositório Git a ser usada e <branch> significa o ramo Git. Para importar componentes de tradução adicionais de um componente Weblate existente, use uma URL weblate://<project>/<component> ao <gitrepo>.
O <filemask> define a descoberta de ficheiro para o repositório. Pode ser simplificado usando curingas ou pode usar todo o poder das expressões regulares.
A correspondência simples usa **
para o nome do componente e *
para o idioma, por exemplo: **/*.po
A expressão regular deve conter grupos chamados component e language. Por exemplo: (?P<language>[^/]*)/(?P<component>[^-/]*)\.po
A importação corresponde aos componentes existentes com base em ficheiros e adiciona aqueles que não existem. Isso não altera os já existentes.
- --name-template TEMPLATE¶
Personaliza o nome de um componente usando a sintaxe do modelo Django.
Por exemplo:
Documentation: {{ component }}
- --base-file-template TEMPLATE¶
Personaliza o ficheiro base para traduções monolíngues.
Por exemplo:
{{ component }}/res/values/string.xml
- --new-base-template TEMPLATE¶
Personaliza o ficheiro base para adicionar novas traduções.
Por exemplo:
{{ component }}/ts/en.ts
- --file-format FORMAT¶
Também pode especificar o formato de ficheiro a ser usado (veja Formatos de ficheiros suportados), a predefinição é a detecção automática.
- --language-regex REGEX¶
Pode especificar a filtragem de idioma (veja Configuração de componente) com este parâmetro. Tem que ser uma expressão regular válida.
- --main-component¶
Pode especificar qual componente será escolhido como o principal – aquele que realmente contém o repositório VCS.
- --license NAME¶
Especifica a licença de tradução geral, projeto ou componente.
- --license-url URL¶
Especifica a URL onde a licença de tradução encontra-se.
- --vcs NAME¶
Caso precise especificar qual sistema de controle de versão usar, pode fazê-lo aqui. O controle de versão predefinido é Git.
Para dar alguns exemplos, vamos tentar importar dois projetos.
Primeiro as traduções do Manual do Debian, onde cada idioma separou uma pasta com as traduções de cada capítulo:
weblate import_project \
debian-handbook \
git://anonscm.debian.org/debian-handbook/debian-handbook.git \
squeeze/master \
'*/**.po'
Em seguida, a ferramenta Tanaguru, onde o formato do ficheiro precisa ser especificado, junto com o modelo de ficheiro base e como todos os componentes e traduções estão localizados numa única pasta:
weblate import_project \
--file-format=properties \
--base-file-template=web-app/tgol-web-app/src/main/resources/i18n/%s-I18N.properties \
tanaguru \
https://github.com/Tanaguru/Tanaguru \
master \
web-app/tgol-web-app/src/main/resources/i18n/**-I18N_*.properties
Um exemplo mais complexo de análise de nomes de ficheiro para obter o componente correto e o idioma de um nome de ficheiro como src/security/Numerous_security_holes_in_0.10.1.de.po
:
weblate import_project \
tails \
git://git.tails.boum.org/tails master \
'wiki/src/security/(?P<component>.*)\.(?P<language>[^.]*)\.po$'
Filtrando apenas traduções num idioma escolhido:
./manage import_project \
--language-regex '^(cs|sk)$' \
weblate \
https://github.com/WeblateOrg/weblate.git \
'weblate/locale/*/LC_MESSAGES/**.po'
Importando a documentação do Sphinx dividida em vários ficheiros:
$ weblate import_project --name-template 'Documentation: %s' \
--file-format po \
project https://github.com/project/docs.git master \
'docs/locale/*/LC_MESSAGES/**.po'
A documentação de importação do Sphinx dividida em vários ficheiros e diretórios:
$ weblate import_project --name-template 'Directory 1: %s' \
--file-format po \
project https://github.com/project/docs.git master \
'docs/locale/*/LC_MESSAGES/dir1/**.po'
$ weblate import_project --name-template 'Directory 2: %s' \
--file-format po \
project https://github.com/project/docs.git master \
'docs/locale/*/LC_MESSAGES/dir2/**.po'
Veja também
Exemplos mais detalhados encontram-se no capítulo Comea çar com a internacionalização, alternativamente quererá usar import_json
.
importuserdata¶
- weblate importuserdata <file.json>¶
Importa dados do utilizador de um ficheiro criado por dumpuserdata
importusers¶
- weblate importusers --check <file.json>¶
Importa utilizadores do despejo JSON do banco de dados auth_users do Django.
- --check¶
Com esta opção irá apenas verificar se determinado ficheiro pode ser importado e reportar possíveis conflitos decorrentes de nomes de utilizadores ou e-mails.
Pode descartar os utilizadores da instalação existente do Django usando:
weblate dumpdata auth.User > users.json
install_addon¶
Novo na versão 3.2.
- weblate install_addon --addon ADDON <project|project/component>¶
Instala uma extensão para um conjunto de componentes.
- --addon ADDON¶
Nome do complemento a ser instalado. Por exemplo,
weblate.gettext.customize
.
- --configuration CONFIG¶
Configuração codificada em JSON de uma extensão.
- --update¶
Atualiza a configuração existente da extensão.
Pode definir em qual projeto ou componente instalar a extensão (por exemplo, weblate/application
) ou usar --all
para incluir todos os componentes existentes.
Para instalar Personalizar a saída gettext para todos os componentes:
weblate install_addon --addon weblate.gettext.customize --config '{"width": -1}' --update --all
Veja também
list_languages¶
- weblate list_languages <locale>¶
Lista os idiomas suportados na marcação MediaWiki – códigos de idioma, nomes em inglês e nomes localizados.
Isso é usado para gerar <https://wiki.l10n.cz/Slovn%C3%ADk_s_n%C3%A1zvy_jazyk%C5%AF>.
list_translators¶
- weblate list_translators <project|project/component>¶
Lista tradutores por idioma contribuído ao projeto em questão:
[French]
Jean Dupont <jean.dupont@example.com>
[English]
John Doe <jd@example.com>
- --language-code¶
Lista os nomes pelo código do idioma em vez do nome do idioma.
Pode definir qual projeto ou componente usar (por exemplo, weblate/application
) ou usar --all
para listar os tradutores de todos os componentes existentes.
loadpo¶
- weblate loadpo <project|project/component>¶
Recarrega traduções de disco (por exemplo, caso tenha feito algumas atualizações no repositório VCS).
- --force¶
Força a atualização, mesmo que os ficheiros devam estar atualizados.
- --lang LANGUAGE¶
Limita o processamento a um único idioma.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Nota
Raramente precisa invocar isso, o Weblate carregará automaticamente os ficheiros alterados para cada atualização do VCS. Isso é necessário no caso de alterar manualmente um repositório Weblate VCS subjacente ou em alguns casos especiais após uma atualização.
lock_translation¶
- weblate lock_translation <project|project/component>¶
Impede outras traduções de um componente.
Dica
Útil caso queira fazer alguma manutenção no repositório subjacente.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Veja também
move_language¶
- weblate move_language source target¶
Novo na versão 3.0.
Permite mesclar o conteúdo do idioma. Isso é útil ao atualizar para uma nova versão que contém apelidos para idiomas anteriormente desconhecidos que foram criados com o sufixo (generated). Ele move todo o conteúdo do idioma fonte source para o de destino`target`.
Exemplo:
weblate move_language cze cs
Depois de mover o conteúdo, deve verificar se sobrou algo (isto está sujeito a condições de corrida quando alguém atualiza o repositório enquanto isso) e remover o idioma (generated).
pushgit¶
- weblate pushgit <project|project/component>¶
Faz um push das alterações com commit feito para o repositório VCS upstream.
- --force-commit¶
Força o commit de todas as alterações pendentes, antes de fazer o push.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Nota
O Weblate faz o push das mudanças automaticamente se Enviar ao submeter na Configuração de componente está ativada, que é a predefinição.
unlock_translation¶
- weblate unlock_translation <project|project/component>¶
Desbloqueia um determinado componente, disponibilizando-o para tradução.
Dica
Útil caso queira fazer alguma manutenção no repositório subjacente.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Veja também
setupgroups¶
- weblate setupgroups¶
Configura grupos predefinidos e, opcionalmente, atribui todos os utilizadores a esse grupo predefinido.
- --no-privs-update¶
Desativa a atualização automática de grupos existentes (apenas adiciona novos).
- --no-projects-update¶
Impede atualizações automáticas de grupos para projetos existentes. Isso permite adicionar grupos recém-adicionados a projetos existentes, consulte Controlo de acesso ao projeto.
Veja também
setuplang¶
- weblate setuplang¶
Atualiza a lista de idiomas definidos no Weblate.
- --no-update¶
Desativa as atualizações automáticas de idiomas existentes (apenas adiciona novos).
updatechecks¶
- weblate updatechecks <project|project/component>¶
Atualiza todas as verificações para todos os textos.
Dica
Útil para atualizações que fazem grandes mudanças nas verificações.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
updategit¶
- weblate updategit <project|project/component>¶
Busca repositórios VCS remotos e atualiza o cache interno.
Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Nota
Normalmente é melhor configurar os ganchos no repositório para acionar Hooks de notificação, ao invés da pesquisa regular por updategit
.
Anúncios¶
Alterado na versão 4.0: Em versões anteriores, esse recurso era chamado de mensagens de quadro de comunicações.
Forneça informações aos seus tradutores postando anúncios, em todo o site, por projeto, componente ou idioma.
Anuncie o propósito, prazos, estados ou especificar metas para tradução.
Os utilizadores receberão notificação sobre os anúncios de projetos assistidos (a menos que optem por não participar).
Isto pode ser útil para várias coisas, desde anunciar o propósito do site até especificar alvos para traduções.
Os anúncios podem ser publicados em cada nível no menu Manage, a usar :guilabel:”Publicar anúncio”:

Ele também pode ser adicionado a usar a interface administrativa:

Os anúncios são então mostrados com base no seu contexto específico:
Nenhum contexto especificado
Mostrado no painel (página de chegada).
Projeto especificado
Mostrado dentro do projeto, incluindo todos os seus componentes e traduções.
Componente especificado
Mostrado para um determinado componente e todas as traduções dele.
Idioma especificado
Mostrado na visão geral do idioma e todas as traduções nesse idioma.
Esta é a aparência na página de visão geral do idioma:

Lista de componentes¶
Especifique múltiplas listas de componentes para aparecer como opções no painel do utilizador, a partir do qual os utilizadores podem selecionar uma visualização como a visão predefinida. Veja Painel para saber mais.
Alterado na versão 2.20: Um estado vai ser apresentado para cada componente listado no painel.
Os nomes e conteúdos das listas de componentes podem ser especificados na interface administrativa, na secção Component lists. Cada lista de componentes deve ter um nome que é exibido ao utilizador e uma slug representando-a na URL.
Alterado na versão 2.13: Altera as configurações de painel para utilizadores anônimos da interface administrativa, a alterar qual painel é apresentado para utilizadores não autenticados.
Listas de componentes automáticas¶
Novo na versão 2.13.
Adicione componentes à lista automaticamente com base nas suas slugs criando regras Automatic component list assignment.
Útil para atualizar listas de componentes para grandes instalações, ou no caso de querer ter uma lista de componentes com todos os componentes na sua instalação do Weblate.
Dica
Faça uma lista de componentes contendo todos os componentes da sua instalação Weblate.
1. Define Automatic component list assignment with ^.*$
as regular expression
in both the project and the component fields, as shown on this image:

Módulos opcionais do Weblate¶
Vários módulos opcionais estão disponíveis para sua configuração.
Exportador git¶
Novo na versão 2.10.
Fornece acesso somente leitura ao repositório Git subjacente usando HTTP(S).
Instalação¶
Adicione
weblate.gitexport
às apps instaladas emsettings.py
:
INSTALLED_APPS += ("weblate.gitexport",)
Exporte repositórios existentes migrando seu banco de dados após a instalação:
weblate migrate
Uso¶
O módulo conecta-se automaticamente ao Weblate e define a URL do repositório exportado na Configuração de componente. Os repositórios são acessíveis na parte /git/
da URL do Weblate, por exemplo, https://example.org/git/weblate/main/
.
Repositórios para projetos disponíveis publicamente podem ser clonados sem autenticação:
git clone 'https://example.org/git/weblate/main/'
O acesso para navegar nos repositórios com acesso restrito (com controle de acesso Privado ou quando REQUIRE_LOGIN
está ativado) requer um token de API que pode ser obtido no seu perfil de utilizador:
git clone 'https://user:KEY@example.org/git/weblate/main/'
Dica
Por predefinição, os membros ou o grupo Utilizadores e utilizador anônimo têm acesso aos repositórios para projetos públicos via Acessar repositório e funções de Utilizador avançado.
Faturação¶
Novo na versão 2.4.
Isso é usado no Hosted Weblate para definir planos de cobrança, rastrear faturas e limites de uso.
Instalação¶
1. Add weblate.billing
to installed apps in
settings.py
:
INSTALLED_APPS += ("weblate.billing",)
Execute a migração do banco de dados para instalar opcionalmente estruturas de banco de dados adicionais para o módulo:
weblate migrate
Uso¶
Após a instalação, pode controlar a cobrança na interface de administração. Os utilizadores com cobrança ativada obterão a nova guia Cobrança no Perfil do utilizador deles.
O módulo de cobrança também permite que os administradores do projeto criem novos projetos e componentes sem serem superutilizadores (veja add-projects). Isso é possível quando as seguintes condições são atendidas:
A cobrança está nos limites configurados dele (qualquer uso excessivo resulta no bloqueio da criação do projeto/componente) e pago (se o preço dele for diferente de zero)
O utilizador é administrador do projeto existente com cobrança ou o utilizador é proprietário da cobrança (este último é necessário ao criar uma nova cobrança para que os utilizadores possam importar novos projetos).
Após a criação do projeto, o utilizador pode escolher qual faturamento deve ser cobrado pelo projeto, caso tenha acesso a mais deles.
Legal¶
Novo na versão 2.15.
Isso é usado em Weblate hospedado para fornecer documentos legais necessários. Ele vem fornecido com documentos em branco e espera-se que preencha os seguintes modelos nos documentos:
legal/documents/tos.html
Documento de termos de serviço
legal/documents/privacy.html
Documento de política de privacidade
legal/documents/summary.html
Visão geral breve dos termos de serviço e política de privacidade
Nota
Documentos legais para o serviço Hosted Weblate estão disponíveis neste repositório Git <https://github.com/WeblateOrg/wllegal/tree/main/wllegal/templates/legal/documents>.
Muito provavelmente, eles não serão úteis diretamente para si, mas podem ser úteis como um ponto de partida se ajustados para atender às suas necessidades.
Instalação¶
1. Add weblate.legal
to installed apps in
settings.py
:
INSTALLED_APPS += ("weblate.legal",)
# Optional:
# Social auth pipeline to confirm TOS upon registration/subsequent sign in
SOCIAL_AUTH_PIPELINE += ("weblate.legal.pipeline.tos_confirm",)
# Middleware to enforce TOS confirmation of signed in users
MIDDLEWARE += [
"weblate.legal.middleware.RequireTOSMiddleware",
]
Execute a migração do banco de dados para instalar opcionalmente estruturas de banco de dados adicionais para o módulo:
weblate migrate
Edite os documentos jurídicos na pasta
weblate/legal/templates/legal/
para corresponder ao seu serviço.
Uso¶
Após a instalação e edição, os documentos legais são exibidos na interface de utilizador do Weblate.
Avatares¶
Os avatares são descarredaos e armazenados em cache no lado do servidor para reduzir o vazamento de informações para os sites que os servem por predefinição. O suporte embutido para buscar avatares de endereços de e-mail configurados para isso pode ser desligado usando ENABLE_AVATARS
.
Atualmente, o Weblate oferece suporte a:
Veja também
Proteção contra spam¶
Pode se proteger contra spam por utilizadores usando o serviço Akismet.
Instale o módulo Python akismet (ele já está incluído na imagem Docker oficial).
Obtenha a chave de API do Akismet.
Armazene-a como
AKISMET_API_KEY
ouWEBLATE_AKISMET_API_KEY
no Docker.
O seguinte conteúdo é enviado ao Akismet para verificação:
Sugestões de utilizador não autenticados
Descrições e ligações de projetos e componentes
Nota
Este (entre outras coisas) depende do endereço IP do cliente, veja Executar por trás de um proxy reverso para configurá-lo apropriadamente.
Assinando commits do Git com GnuPG¶
Novo na versão 3.1.
Todos os commits podem ser assinados pela chave GnuPG da instância Weblate.
1. Turn on WEBLATE_GPG_IDENTITY
. (Weblate will generate a GnuPG
key when needed and will use it to sign all translation commits.)
Este recurso precisa do GnuPG 2.1 ou mais recente instalado.
Pode encontrar a chave em DATA_DIR
e a chave pública é mostrada na página «Sobre»:

2. Alternatively you can also import existing keys into Weblate, just set
HOME=$DATA_DIR/home
when invoking gpg.
Veja também
Limitação de taxa¶
Alterado na versão 3.2: A limitação de taxa agora aceita uma configuração mais refinada.
Alterado na versão 4.6: A limitação de taxa não se aplica mais a superutilizadores.
Várias operações no Weblate são limitadas por taxas. No máximo RATELIMIT_ATTEMPTS
tentativas são permitidas dentro de RATELIMIT_WINDOW
segundos. O utilizador é bloqueado por RATELIMIT_LOCKOUT
. Há também configurações específicas para escopos como, por exemplo, RATELIMIT_CONTACT_ATTEMPTS
ou RATELIMIT_TRANSLATE_ATTEMPTS
. A tabela abaixo é uma lista completa de escopos disponíveis.
As seguintes operações estão sujeitas a limitação de taxa:
Nome |
Âmbito |
Tentativas permitidas |
Janela de limite de tempo |
Período de bloqueio |
---|---|---|---|---|
Registo |
|
5 |
300 |
600 |
Enviando mensagem para administradores |
|
5 |
300 |
600 |
Autenticação de palavra-passe ao entrar |
|
5 |
300 |
600 |
Pesquisa em todo o site |
|
6 |
60 |
60 |
Traduzir |
|
30 |
60 |
600 |
Adicionando ao glossário |
|
30 |
60 |
600 |
Iniciando a tradução para um novo idioma |
|
2 |
300 |
600 |
Creating new project |
|
5 |
600 |
600 |
Se um utilizador falhar ao fazer o login AUTH_LOCK_ATTEMPTS
vezes, a autenticação da palavra-passe será desativada na conta até ter passado pelo processo de redefinição da palavra-passe.
As configurações também podem ser aplicadas no contentor do Docker adicionando o prefixo WEBLATE_
ao nome da configuração, por exemplo RATELIMIT_ATTEMPTS
torna-se WEBLATE_RATELIMIT_ATTEMPTS
.
A API possui configurações separadas de limitação de taxa, consulte Limitação de taxa da API.
Integração com Fedora Messaging¶
Fedora Messaging é um editor baseado em AMQP para todas as mudanças que acontecem no Weblate. Pode conectar serviços adicionais nas mudanças que acontecem no Weblate usando isso.
A integração com Fedora Messaging está disponível como um módulo Python separado weblate-fedora-messaging
. Consulte <https://github.com/WeblateOrg/fedora_messaging/> para obter instruções de configuração.
Personalizar o Weblate¶
Amplie e personalize a usar Django e Python. Contribua as suas alterações para o upstream acima para que todos possam se beneficiar. Isso reduz os seus custos de manutenção; código no Weblate é cuidado ao alterar interfaces internas ou refatorar o código.
Aviso
Nem interfaces internas nem modelos são considerados uma API estável. Por favor, revise as suas próprias personalizações para cada atualização, as interfaces ou a semântica deles podem mudar sem aviso prévio.
Veja também
Criar um módulo Python¶
Se não conheçe o Python, pode olhar para Python For Beginners, que explica o básico e aponta aos tutoriais adicionais.
Para escrever algum código Python personalizado (chamado de módulo), é necessário um lugar para armazená-lo, seja no caminho do sistema (geralmente algo como /usr/lib/python3.7/site-packages/
) ou no diretório Weblate, que também é adicionado ao caminho de pesquisa do interpretador.
Melhor ainda, transforme a sua personalização num pacote Python adequado:
Crie uma pasta para o seu pacote (usaremos weblate_customization).
Dentro dele, crie um ficheiro
setup.py
para descrever o pacote:from setuptools import setup setup( name="weblate_customization", version="0.0.1", author="Your name", author_email="yourname@example.com", description="Sample Custom check for Weblate.", license="GPLv3+", keywords="Weblate check example", packages=["weblate_customization"], )
Crie uma pasta para o módulo Python (também chamado de
weblate_customization
) para o código de personalização.Dentro dele, crie um ficheiro
__init__.py
para garantir que o Python possa importar o módulo.Este pacote agora pode ser instalado a usar pip install -e. Mais informações a serem encontradas em “Editable” Installs.
Uma vez instalado, o módulo pode ser usado na configuração Weblate (por exemplo,
weblate_customization.checks.FooCheck
).
Sua estrutura de módulo deve ser assim:
weblate_customization
├── setup.py
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
Pode encontrar um exemplo de personalização do Weblate em <https://github.com/WeblateOrg/customize-example>, ele abrange todos os tópicos descritos abaixo.
Alterar o logotipo¶
Crie uma app Django simples a conter os ficheiros estáticos que deseja substituir (veja Criar um módulo Python).
A marca aparece nos ficheiros seguintes:
icons/weblate.svg
Logotipo mostrado na barra de navegação.
logo-*.png
Ícones web dependendo da resolução do ecrã e do navegador web.
favicon.ico
Ícone web usado por navegadores legados.
weblate-*.png
Avatares para bots ou utilizadores anônimos. Alguns navegadores web usam-nos como ícones de atalho.
email-logo.png
Usado em e-mails de notificações.
Adicione-o a
INSTALLED_APPS
:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Execute
weblate collectstatic --noinput
, para coletar ficheiros estáticos servidos aos clientes.
Verificações de qualidade personalizadas, extensões e correções automáticas¶
Para instalar o seu código para Correções automáticas personalizadas, Escrever próprias verificações ou Escrevendo extensões no Weblate:
Ponha os ficheiros no seu módulo Python a conter a personalização ao Weblate (veja Criar um módulo Python).
Adicione o caminho totalmente qualificado dele à classe Python nas configurações dedicadas (
WEBLATE_ADDONS
,CHECK_LIST
ouAUTOFIX_LIST
):
# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)
# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)
# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)
Interface de gestão¶
A interface de gestão oferece configurações de administração sob a URL /manage/
. Está disponível para utilizadores que se inscrevem com privilégios administrativos, acessíveis a usar o ícone da chave inglesa no canto superior direito:

Ela inclui uma visão geral básica do seu Weblate:
Estado de suporte, veja Obter suporte para o Weblate
Backups, veja Fazer backup e mover o Weblate
Memória de tradução compartilhada, veja Memória de Tradução
Relatório de desempenho para revisar a saúde do Weblate e a duração das filas do Celery
Gestão de chaves SSH, veja Repositórios SSH
Visão geral de alertas para todos os componentes, veja Alertas da componente de tradução
A interface administrativa do Django¶
Aviso
Será removido no futuro, pois o uso dele é desencorajado — a maioria das funcionalidades pode ser geridas diretamente no Weblate.
Aqui pode gerir objetos armazenados no banco de dados, tais como utilizadores, traduções e outras configurações:

Na secção Relatórios pode verificar o estado do seu site, ajustá-lo para produção ou gerir chaves SSH usadas para acessar Acessando repositórios.
Gerir objetos de banco de dados em qualquer uma das secções abaixo. A mais interessante é provavelmente Traduções do Weblate, onde pode gerir projetos traduzíveis, veja Configuração de projeto e Configuração de componente.
Idiomas do Weblate detém as definições de idiomas, explicado melhor em Definições de idioma.
Adicionar um projeto¶
A adição de um projeto serve como contentor para todos os componentes. Normalmente cria um projeto para um software, ou livro (Veja Configuração de projeto para informações sobre parâmetros individuais):

Veja também
Componentes bilíngues¶
Uma vez que adicionou um projeto, os componentes de tradução podem ser adicionados-lo. (Ver Configuração de componente para obter informações sobre parâmetros individuais):

Componentes monolínguas¶
Para facilitar a tradução destes, forneça um ficheiro de modelo contendo o mapeamento de IDs de mensagem para respectivo idioma fonte dele (geralmente inglês). (Ver Configuração de componente para obter informações sobre parâmetros individuais):

Obter suporte para o Weblate¶
Weblate é um software livre protegido por copyleft e com apoio comunitário. Os assinantes recebem apoio prioritário sem custo adicional. Pacotes de ajuda pré-pago estão disponíveis para todos. Pode encontrar mais informações sobre as ofertas de apoio atuais em <https://weblate.org/support/>.
Integrando o apoio¶
Novo na versão 3.8.
Os pacotes de apoio adquiridos podem ser integrados opcionalmente à sua gestão de assinatura do Weblate, de onde encontrará uma ligação a ele. Detalhes básicos da instância sobre a sua instalação também são relatados de volta ao Weblate desta forma.

Dados enviados ao Weblate¶
URL onde a sua instância do Weblate está configurada
Título do seu site
A versão do Weblate que está a executar
Contagem de alguns objetos no seu banco de dados Weblate (projetos, componentes, idiomas, cadeias fonte e utilizadores)
A chave pública SSH da sua instância
Além disso, quando Descubra Weblate está ativado:
Lista de projetos públicos (nome, URL e site)
Nenhum outro dado é enviado.
Serviços de integração¶
Veja se o seu pacote de apoio ainda é válido
Dica
Os pacotes de apoio adquiridos já estão ativados no momento da compra e podem ser usados sem integrá-los.
Descubra Weblate¶
Novo na versão 4.5.2.
Nota
Este recurso está atualmente num beta inicial.
Descubra Weblate é um serviço opcional que facilita encontrar comunidades e servidores Weblate. Os utilizadores podem navegar por serviços cadastrados em <https://weblate.org/discover/> e lá encontrar projetos para contribuir.
Como fazer para ser listado¶
Dica
Participar do Descubra Weblate faz com que o Weblate envie algumas informações sobre o seu servidor, veja Dados enviados ao Weblate.
Para listar o seu servidor com uma assinatura de suporte ativa (veja Integrando o apoio) no Descubra Weblate tudo que precisa fazer é ativar isso no painel de gestão:

Listando seu servidor sem uma assinatura de suporte no Descubra Weblate:
Registe-se em <https://weblate.org/user/>
Registe o seu servidor Weblate no banco de dados de descoberta em <https://weblate.org/subscription/discovery/>
Confirme a ativação do serviço no seu Weblate e ative a lista de descoberta na sua página de gestão do Weblate usando o botão Ativar descoberta:

Personalizando a listagem¶
Pode personalizar a lista fornecendo um texto e uma imagem (570 x 260 pixels) em <https://weblate.org/user/>.
Documentos legais¶
Nota
Aqui encontrará várias informações legais que pode precisar para operar Weblate em certas jurisdições legais. É fornecido como um meio de orientação, sem qualquer garantia de precisão ou correção. Em última análise, é a sua responsabilidade de garantir que o seu uso do Weblate esteja em conformidade com todas as leis e regulamentos aplicáveis.
ITAR e outros controles de exportação¶
O Weblate pode ser usado dentro do seu próprio datacenter ou nuvem privada virtual. Como tal, ele pode ser usado para armazenar informações ITAR ou outras controladas por exportação; no entanto, os utilizadores finais são responsáveis por garantir tal conformidade.
O serviço Hosted Weblate não foi auditado pela conformidade com ITAR ou outros controles de exportação e atualmente não oferece a capacidade de restringir traduções de acesso por país.
Controlos de criptografia dos EUA¶
O Weblate não contém nenhum código criptográfico, mas pode ser objeto de controles de exportação, pois usa componentes de terceiros utilizando criptografia para autenticação, integridade de dados e confidencialidade.
Provavelmente Weblate seria classificado como ECCN 5D002 ou 5D992 e, como software livre publicamente disponível, não deve ser sujeito ao EAR (veja «Itens de criptografia NÃO estão sujeitos a EAR <https://www.bis.doc.gov/index.php/policy-guidance/encryption/1-encryption-items-not-subject-to-the-ear>`_).
Componentes de software utilizados por Weblate (listando somente os componentes relacionados à função criptográfica):
- Python
Veja https://wiki.python.org/moin/PythonSoftwareFoundationLicenseFaq#Is_Python_subject_to_export_laws.3F
- GnuPG
Opcionalmente usado pelo Weblate
- Git
Opcionalmente usado pelo Weblate
- curl
Usado pelo Git
- OpenSSL
Usado pelo Python e cURL
A força de chaves de criptografia depende da configuração do Weblate e os componentes de terceiros que interage com ele, mas em qualquer decente instalação, irá incluir todas as funções criptográficas com exportação restrita:
Em excesso de 56 bits para um algoritmo simétrico
Fatorização de inteiros acima de 512 bits para um algoritmo assimétrico
Cálculo de logaritmos discretos num grupo multiplicativo de um campo finito de tamanho maior do que 512 bits para um algoritmo assimétrico
Logaritmos discretos num grupo diferente do que acima de 112 bits para um algoritmo assimétrico
O Weblate não tem nenhum recurso de ativação criptográfica, mas pode ser configurado de maneira sem ter nenhum código de criptografia envolvido. Os recursos criptográficos incluem:
Acessar servidores remotos a usar protocolos seguros (HTTPS)
Gerar assinaturas para commits de código (PGP)
Veja também
Controles de Exportação (EAR) em Software de Código Aberto (inglês)
Comea çar com a internacionalização¶
Tem um projeto e quer traduzi-lo para vários idiomas? Este guia o ajudará a fazer isso. Várias situações típicas são apresentadas, mas a maioria dos exemplos são genéricos e podem ser aplicados a outros cenários também.
Antes de traduzir qualquer software, deve perceber que os idiomas ao redor do mundo são realmente diferentes e não deve fazer nenhuma suposição com base na sua experiência. Para a maioria dos idiomas, parecerá estranho se tentar concatenar uma frase de segmentos traduzidos. Também deve lidar adequadamente com formas plurais porque muitos idiomas têm regras complexas para isso e a estrutura de internacionalização que acaba a usar deve oferecer suporte a isso.
Por último, mas não menos importante, às vezes pode ser necessário adicionar algum contexto ao texto traduzido. Imagine que um tradutor receberia a cadeia Sun
para traduzir. Sem contexto, a maioria das pessoas traduziria isso como a nossa estrela mais próxima, mas pode ser usado como uma abreviatura para domingo.
Escolhendo a estrutura de internacionalização¶
Escolha o que for padrão na sua plataforma, tente evitar reinventar a roda a criar a sua própria estrutura para lidar com localizações. Weblate tem suporte à maioria dos frameworks amplamente usados, veja Formatos de ficheiros suportados para mais informações (especialmente Capacidades dos tipos de tradução).
Nossa recomendação pessoal para algumas plataformas está na tabela a seguir. Isso se baseia em nossa experiência, mas não pode abranger todos os casos de uso, portanto, sempre considere o seu ambiente ao fazer a escolha.
Plataforma |
Formato recomendado |
---|---|
Android |
|
iOS |
|
Qt |
|
Python |
|
PHP |
|
C/C++ |
|
C# |
|
Perl |
|
Ruby |
|
Extensões web |
|
Java |
|
JavaScript |
- 1
O suporte nativo a Gettext no PHP é problemático e frequentemente está ausente nas compilações do Windows, é recomendado usar a biblioteca de terceiros motranslator em vey disso.
- 2
Também pode usar Propriedades Java se os plurais não forem necessários.
- 3
Também pode usar Ficheiro JSON simples se os plurais não forem necessários.
O fluxo de trabalho mais detalhado para alguns formatos é descrito nos capítulos a seguir:
Veja também
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 ou Recurso de cadeias de Android). Os projetos existem para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de uma aplicação).
Internamente, cada projeto tem traduções para cadeias comuns propagadas em outros componentes dentro dele por predefinição. Isso 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 a utilizar Permitir propagação da tradução caso as traduções devam divergir.
Importar 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 das suas traduções em componentes.
Alternativamente, pode usar o Weblate para configurar um repositório local a conter todas as traduções sem integração.
Obtendo traduções atualizadas do Weblate¶
Para buscar cadeias atualizadas do Weblate, pode simplesmente buscar o repositório Git subjacente (tanto do sistema de ficheiros ou pode ser disponibilizado através de Exportador git). Antes disso, pode querer submeter quaisquer alterações pendentes (veja Commits adiados). Pode fazer isso na interface do utilizador (em Manutenção do repositório) ou na linha de comando a usar o Cliente Weblate.
Isso pode ser automatizado se conceder acesso push do Weblate ao seu repositório e configurar URL de submissão do repositório na Configuração de componente. Veja Fazendo push das alterações do Weblate.
Alternativamente, 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 as cadeias recém-atualizados no seu repositório para o Weblate, apenas deixe-o fazer pull do repositório upstream. Isso pode ser feito na interface do utilizador (em Manutenção do repositório) ou na linha de comando a usar o Cliente Weblate.
Isso pode ser automatizado a configurar um webhook no seu repositório para acionar o Weblate sempre que houver um novo commit. Veja Atualizar repositórios para mais detalhes.
Se não estiver a usar uma integração VCS, pode usar a UI ou API REST do Weblate para atualizar as traduções para corresponder à sua base de código.
Veja também
A adicionar novas cadeias¶
No caso que os seus ficheiros de tradução serem armazenados num VCS com o código, provavelmente tem um fluxo de trabalho existente para os programadores introduzirem novos textos. Qualquer forma de adicionar cadeias será escolhida, mas considere usar Portal de qualidade para cadeias fonte para evitar a introdução de erros.
Quando os ficheiros de tradução são separados do código, existem as seguintes maneiras de introduzir novas cadeias no Weblate.
Manualmente, a usar Adicionar nova cadeia de tradução do menu Ferramentas no idioma usado como fonte para as traduções.
Programaticamente, a usar a API
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.
Nota
A disponibilidade de adicionar cadeias no Weblate depende de Gerir cadeias.
Atualizar ficheiro de idioma de destino¶
Para ficheiros monolingues (veja Formatos de ficheiros suportados), o Weblate pode adicionar novas cadeias de tradução não presentes no Ficheiro de idioma base monolingue e não nas traduções reais. No entanto, ele não executa nenhuma limpeza automática de cadeias obsoletas, pois isso pode ter resultados inesperados. Se quiser fazê-lo, instale a extensão Limpeza de ficheiros de tradução que fará a limpeza conforme os seus requisitos.
Weblate também não tentará atualizar ficheiros bilíngues de nenhuma forma, então se precisar que os ficheiros po
sejam atualizados de pot
, precisa fazer isso sozinho a usar Métodos de importação de Atualizar cadeias fonte: ou a usar a extensão Atualizar ficheiros PO para coincidir com POT (msgmerge).
A gerir 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 Tradução contínua o repositório é automaticamente empurrado sempre que houver mudanças e normalmente não há necessidade de manipulá-lo manualmente.

As seguintes operações estão disponíveis:
Commit
Faz commit de quaisquer alterações pendentes que estejam presentes no banco de dados do Weblate, mas não no repositório, veja Commits adiados.
Push
Faz um push das alterações para o repositório upstream, se configurado pela URL de submissão do repositório.
Atualizar, Pull, Rebase
Atualiza o repositório Weblate com mudanças upstream. Ele usa Estilo de união ao escolher Atualizar ou você pode escolher um diferente no menu suspenso.
Bloquear
O bloqueio impede que os tradutores façam alterações
Redefinir de Manutenção
Redefine todas as alterações feitas no Weblate para corresponder ao repositório upstream. Isso descartará todas as traduções feitas no Weblate e não presentes no repositório upstream.
Limpar de Manutenção
Remove ficheiros não rastreados do repositório. Isso pode ser resultado de bugs ou extensões com comportamento incorreto.
Forçar sincronização de Manutenção
Força a escrita de todos os textos nos ficheiros de tradução. Use-o quando os ficheiros do repositório ficarem fora de sincronia com o Weblate por algum motivo.
Veja também
Traduzindo software a usar GNU gettext¶
GNU gettext é uma das ferramentas mais utilizadas para internacionalização de software livre. Ele fornece uma maneira simples, mas flexível, de localizar o software. Ele tem um ótimo suporte para plurais, pode adicionar mais contexto à cadeia traduzida e há várias ferramentas construídas em torno dele. Claro que tem um ótimo suporte no Weblate (veja a descrição do formato de ficheiro GNU gettext).
Nota
Se estiver prestes a usá-lo num software proprietário, consulte o licenciamento primeiro. Ele pode não ser adequado para si.
GNU gettext pode ser usado a partir de uma variedade de linguagens (C, Python, PHP, Ruby, JavaScript e muitos mais) e geralmente os frameworks de UI já vêm com algum suporte para isso. O uso padrão é através da chamada de função gettext(), que geralmente é apelidada de _() para tornar o código mais simples e fácil de ler.
Além disso, ele fornece a chamada pgettext() para fornecer contexto adicional para tradutores e ngettext() que pode lidar com tipos plurais conforme definido para o idioma alvo.
Como uma ferramenta amplamente difundida, ela possui muitos wrappers que tornam o uso dele realmente simples, ao invés de invocar manualmente o gettext descrito abaixo, quererá tentar um deles, por exemplo, o intltool.
Visão geral do fluxo de trabalho¶
O GNU gettext usa vários ficheiros para gerir a localização:
PACKAGE.pot
contém cadeias extraídas do seu código-fonte, normalmente a usar xgettext ou alguns wrappers de alto nível como intltool.LANGUAGE.po
contém cadeias com uma tradução para um único idioma. Ele deve ser atualizado por msgmerge uma vez que oPACKAGE.pot
seja atualizado. Pode criar novos ficheiros de idioma a usar msginit ou dentro do Weblate.LANGUAGE.mo
contém a representação binária deLANGUAGE.po
e é usado no tempo de execução da aplicação. Normalmente não é mantido num controle de versão, mas gerado em tempo de compilação a usar msgfmt. No caso de desejar tê-lo no controle de versão, pode gerá-lo no Weblate a usar a extensão Gerar ficheiros MO.
No geral, o fluxo de trabalho do GNU gettext é assim:
Veja também
Amostra de programa¶
O programa simples em C a usar gettext pode ter a seguinte aparência:
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int count = 1;
setlocale(LC_ALL, "");
bindtextdomain("hello", "/usr/share/locale");
textdomain("hello");
printf(
ngettext(
"Orangutan has %d banana.\n",
"Orangutan has %d bananas.\n",
count
),
count
);
printf("%s\n", gettext("Thank you for using Weblate."));
exit(0);
}
A extrair cadeias traduzíveis¶
Assim que tiver o código a usar as chamadas gettext, pode usar xgettext para extrair mensagens dele e armazená-las num .pot:
$ xgettext main.c -o po/hello.pot
Nota
Existem programas alternativos para extrair cadeias do código, por exemplo pybabel.
Isso cria um ficheiro de modelo, que pode usar para iniciar novas traduções (a usar msginit) ou atualizar as existentes após a mudança de código (usaria msgmerge para isso). O ficheiro resultante é simplesmente um ficheiro texto estruturado:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""
Cada linha msgid
define uma cadeia a ser traduzido, a cadeia vazia especial no início é o cabeçalho do ficheiro a conter metadados sobre a tradução.
Iniciando nova tradução¶
Com o modelo no lugar, podemos começar nossa primeira tradução:
$ msginit -i po/hello.pot -l cs --no-translator -o po/cs.po
Created cs.po.
O recém-criado cs.po
já tem algumas informações preenchidas. Mais importante ainda, ele obteve a definição de formas plurais apropriada para o idioma escolhido e pode ver que a quantidade de plurais mudou de acordo com isso:
# Czech translations for PACKAGE package.
# Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: 2015-10-23 11:02+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""
Este ficheiro é compilado num formato binário otimizado, o ficheiro .mo usado pelas funções do GNU gettext em tempo de execução.
A atualizar cadeias¶
Depois de adicionar mais textos ou alterar algumas cadeias no seu programa, executa novamente xgettext que gera novamente o ficheiro de modelo:
$ xgettext main.c -o po/hello.pot
Em seguida, pode atualizar ficheiros de tradução individuais para corresponder aos modelos recém-criados (isso inclui reordenar as cadeias para corresponder ao novo modelo):
$ msgmerge --previous --update po/cs.po po/hello.pot
Importando para o Weblate¶
Para importar tal tradução para o Weblate, tudo que precisa definir são os seguintes campos ao criar o componente (veja Configuração de componente para uma descrição detalhada dos campos):
Campo |
Valor |
---|---|
Repositório do código-fonte |
URL do repositório VCS com o seu projeto |
Máscara de ficheiros |
|
Modelo para novas traduções |
|
Formato de ficheiro |
Escolha ficheiro PO gettext |
Novo idioma |
Escolha Criar novo ficheiro de idioma |
E é isso. Agora está pronto para começar a traduzir o seu software!
Veja também
Pode encontrar um exemplo de gettext com muitos idiomas no projeto Weblate Hello no GitHub: <https://github.com/WeblateOrg/hello>.
Traduzindo documentação a usar Sphinx¶
Sphinx é uma ferramenta para criar documentação bonita. Ela usa a sintaxe reStructuredText simples e pode gerar saída em muitos formatos. Se está a procurar um exemplo, esta documentação também é construída a usar-a. O companheiro muito útil para usar o Sphinx é o serviço Read the Docs, que irá construir e publicar a sua documentação gratuitamente.
Não vou me concentrar em escrever documentação em si, se precisar de orientação com isso, basta seguir as instruções no site do Sphinx. Assim que tiver a documentação pronta, traduzi-la é bastante fácil, pois o Sphinx vem com suporte para isso e é muito bem abordado na sua Internationalization. É uma questão de poucas diretivas de configuração e invocação da ferramenta sphinx-intl
.
Se estiver a usar o serviço Read the Docs, pode começar a construir a documentação traduzida no Read the Docs. Localization of Documentation (localização de documentação) deles cobre praticamente tudo que precisa - criar outro projeto, definir o seu idioma e vinculá-lo do projeto principal como uma tradução.
Agora tudo que precisa é traduzir o conteúdo da documentação. O Sphinx gera um ficheiro PO para cada diretório ou ficheiro de nível superior, o que pode levar a muitos ficheiros para traduzir (a depender das configurações de gettext_compact
). Pode importar o index.po
no Weblate como um componente inicial e então configurar a extensão Descoberta de componentes para descobrir automaticamente todos os outros.
|
|
|
|
|
|
ficheiro gettext PO |
|
|
Expressão regular para corresponder ficheiros de tradução |
|
Personalizar nome do componente |
|
Defina o ficheiro base para as novas traduções |
|
Dica
Prefere que o Sphinx gere apenas um único ficheiro PO? Desde o Sphinx 3.3.0, pode fazer isso a usar:
gettext_compact = "docs"
Pode encontrar vários projetos de documentação a ser traduzidos a usar esta abordagem:
Traduzir HTML e JavaScript a usar CDN Weblate¶
A partir do Weblate 4.2, é possível exportar a localização para um CDN a usar a extensão CDN de localização JavaScript.
Nota
Este recurso é configurado no Hosted Weblate. Requer configuração adicional na sua instalação, veja LOCALIZE_CDN_URL
e LOCALIZE_CDN_PATH
.
Após a instalação no seu componente, ele enviará as traduções confirmadas (veja Commits adiados) para o CDN e elas podem ser usadas nas suas páginas da web para localizá-las.
Criar componente¶
Primeiro, precisa criar um componente monolingue que manterá as suas cadeias. Veja add-projects para instruções genéricas sobre isso.
Caso tenha um repositório existente para começar (por exemplo, aquele que contém ficheiro HTML), crie um ficheiro JSON vazio no repositório para o idioma de origem (consulte Idioma fonte), por exemplo locales/en.json
. O conteúdo deve ser {}
para indicar um objeto vazio. Depois de fazer isso, o repositório pode ser importado para o Weblate e pode começar com uma configuração adicional.
Dica
Caso tenha traduções existentes, pode colocá-las nos ficheiros JSON do idioma e esses serão usados no Weblate.
Para aqueles que não querem usar o repositório existente (ou não tem um), escolha Iniciar do zero ao criar o componente e escolher ficheiro JSON como formato de ficheiro (pode escolher qualquer formato monolíngue este ponto).
Configurar extensão de Weblate CDN¶
A extensão CDN de localização JavaScript fornece algumas opções de configuração.
- Limiar de tradução
As traduções traduzidas acima desse limite serão incluídas no CDN.
- Seletor de CSS
Configura quais cadeias dos documentos HTML são traduzíveis, veja Extração de cadeias para CDN Weblate e Localização de HTML a usar CDN Weblate.
- Nome do cookie do idioma
Nome do cookie que contém o idioma selecionado pelo utilizador. Usado no trecho de JavaScript para Localização de HTML a usar CDN Weblate.
- Extrair cadeias de ficheiros de HTML
Lista de ficheiros no repositório ou URLs onde Weblate irá procurar por cadeias traduzíveis e os oferecerá para uma tradução, veja Extração de cadeias para CDN Weblate.
Extração de cadeias para CDN Weblate¶
As cadeias de tradução devem estar presentes no Weblate. Pode gerí-los manualmente, usar API para criá-los ou listar ficheiros ou URLs a usar Extrair cadeias de ficheiros HTML e o Weblate irá extraí-los automaticamente. Os ficheiros devem apresentar no repositório ou conter URLs remotas que serão descarregadas e analisadas regularmente pelo Weblate.
A configuração predefinida para Seletor CSS extrai elementos com classe CSS l10n
. Por exemplo, extrairia duas cadeias dos seguintes trechos:
<section class="content">
<div class="row">
<div class="wrap">
<h1 class="section-title min-m l10n">Maintenance in progress</h1>
<div class="page-desc">
<p class="l10n">We're sorry, but this site is currently down for maintenance.</p>
</div>
</div>
</div>
</section>
Caso não deseje modificar o código existente, também pode usar *
como um seletor para processar todos os elementos.
Nota
No momento, apenas o texto dos elementos é extraído. Este complemento não suporta a localização de atributos de elementos ou elementos com filhos.
Localização de HTML a usar CDN Weblate¶
Para localizar um documento HTML, precisa carregar o script weblate.js
:
<script src="https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/weblate.js" async></script>
Ao carregar, isto encontrará todos os elementos traduzíveis correspondentes automaticamente (com base na configuração Seletor CSS ) e substituirá o texto deles por uma tradução.
O idioma do utilizador é detetado do cookie configurado e volta aos idiomas preferidos do utilizador configurados no navegador.
O Nome do cookie de idioma pode ser útil para integração com outras aplicações (por exemplo, escolha django_language
ao usar Django).
Localização de JavaScript¶
As traduções individuais são expostas como ficheiros JSON bilingues sob o CDN. Para buscar um, pode usar o seguinte código:
fetch(("https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/cs.json")
.then(response => response.json())
.then(data => console.log(data));
A lógica de localização real precisa ser implementada neste caso.
Alertas da componente de tradução¶
Mostra erros na configuração do Weblate ou no projeto de tradução de qualquer componente de tradução. Orientação sobre como resolver os problemas encontrados também é oferecida.
Atualmente, o seguinte é coberto:
Cadeias fonte duplicadas em ficheiros de tradução
Idiomas duplicados nas traduções
Falhas de mesclagem, atualização ou envio no repositório
Erros de análise nos ficheiros de tradução
Limites de cobrança (consulte Faturação)
Repositório contendo muitos commits para serem enviados ou em falta
Licenças ausentes
Erros ao executar extensão (veja Extensões)
Tradução monolingue mal configurada.
Configuração de componente quebrada
URLs quebradas
Capturas de ecrã não usadas
Código do idioma ambíguo
Nova base não utilizada nas configurações de componente
Máscara de ficheiro duplicada usada para componentes vinculados
Os alertas são atualizados diariamente, ou sobre mudanças relacionadas (por exemplo, quando Configuração de componente é alterada ou quando o repositório é atualizado).
Os alertas são listados em cada página do respectivo componente como Alertas. Se estiver a faltar, o componente limpa todas as verificações atuais. Os alertas não podem ser ignorados, mas desaparecerão assim que o problema subjacente for corrigido.
Um componente com cadeias e idiomas duplicados tem a seguinte aparência:

Veja também
Construir comunidade de tradutores¶
Lista de verificação de localização da comunidade¶
Novo na versão 3.9.
O Checklist de localização comunitária, que encontra-se no menu de cada componente, pode fornecer orientações para facilitar o processo de localização para os tradutores da comunidade.

A gerir traduções¶
Adicionando novas traduções¶
Novas cadeias podem ser disponibilizadas para tradução quando aparecem no ficheiro base, chamado Modelo para novas traduções (veja Configuração de componente). Se o seu formato de ficheiro não exige esse tipo de ficheiro, como é o caso da maioria dos fluxos de tradução monolingues, pode começar com ficheiros em branco).
Novos idiomas podem ser adicionados imediatamente quando solicitados por um utilizador no Weblate, ou uma notificação será enviada aos administradores do projeto para aprovação e adição manual. Isso pode ser feito a usar Adicionar nova tradução em Configuração de componente.
Nota
Se adicionar um ficheiro de idioma no repositório remoto conectado, a respectiva tradução será adicionada ao componente quando o Weblate atualizar o repositório local.
Mais informações sobre as configurações de atualização do repositório podem ser encontradas em Atualizar repositórios.
Veja também
Removendo traduções existentes¶
Idiomas, componentes, ou os projetos em que estão, podem ser removidos (apagados do Weblate e do repositório remoto se usado) do menu Gerir ↓ Remoção de cada projeto, componente ou idioma.
Iniciar a ação Remoção mostra a lista de componentes a serem removidos. Deve inserir o slug do objeto para confirmar a remoção. O slug, ou URL amigável, é o nome do caminho do projeto, da linguagem ou do componente conforme pode ser visto na URL.
Se deseja remover apenas algumas cadeias específicas, existem as seguintes maneiras:
Manualmente no ficheiro fonte. Eles também serão removidos do projeto de tradução após a atualização do repositório do Weblate.
Novo na versão 4.5.
Na UI do Weblate através do botão Ferramentas ↓ Remover ao editar a cadeia. Isso tem diferenças entre os formatos de ficheiro. Veja Gerir cadeias
Nota
Se apagar um ficheiro de idioma no repositório remoto conectado, a tradução respetiva será removida do componente quando o Weblate atualizar o repositório local.
Mais informações sobre as configurações de atualização do repositório podem ser encontradas em Atualizar repositórios.
Variantes de cadeias¶
As variantes são úteis para agrupar várias cadeias, de modo que os tradutores possam ver todas as variantes do texto num só lugar.
Dica
Abreviaturas (formas abreviadas, contrações) são um bom exemplo de variantes.
Variantes baseadas em chaves automatizadas¶
Novo na versão 3.11.
Pode definir uma expressão regular para agrupar as cadeias com base na chave das traduções monolingues no Configuração de componente:

No caso de Chave corresponder à expressão, a parte correspondente é removida para gerar a chave raiz da variante. Então, todas as cadeias com a mesma chave raiz tornam-se parte de um único grupo de variantes, a incluir também a cadeia com a chave que corresponde exatamente à chave raiz.
A tabela a seguir lista alguns exemplos de uso:
Caso de uso |
Variante de expressão regular |
Chaves de tradução correspondentes |
---|---|---|
Identificação de sufixo |
|
|
Identificação em linha |
|
|
Variantes manuais¶
Novo na versão 4.5.
Pode vincular manualmente cadeias específicas a usar o marcador variant:SOURCE
. Isso pode ser útil para traduções bilingues que não possuem chaves para agrupar cadeias automaticamente, ou para agrupar cadeias cujas chaves não são correspondentes, mas devem ser consideradas juntas durante a tradução.
A variante adicional para uma cadeia também pode ser adicionada a usar Ferramentas durante a tradução (quando Gerir cadeias está ativado):

Nota
Nesse caso, a cadeia fonte da variante tem, no máximo, 768 caracteres. Esta é uma limitação técnica devido à compatibilidade com o banco de dados MySQL.
Veja também
Etiquetas de cadeia¶
Divide as cadeias de tradução do componente em categorias por texto e cor na configuração do projeto.

Dica
As etiquetas podem ser atribuídas a unidades em Informações adicionais sobre cadeias fonte por edição em massa, ou a usar a extensão Edição em massa.
A rever cadeias¶
Relatórios de atividade¶
Os relatórios de atividades verificam as alterações das traduções, para projetos, componentes ou utilizadores individuais.
Os relatórios de atividades de um projeto ou componente podem ser acessados em seu painel, na guia Info.

Mais relatórios estão acessíveis na guia Insights, a selecionar Relatórios de tradução.
A atividade do utilizador atualmente conectado pode ser vista a clicar em Perfil no menu do utilizador no canto superior direito.
Verificações de cadeia fonte¶
Existem muitas Verificações de qualidade, algumas delas focam em melhorar a qualidade dos cadeias fonte. Muitas verificações com falha sugerem uma dica para tornar as cadeias fonte mais fáceis de traduzir. Todos os tipos de verificação de fonte com falha são exibidos na guia Fonte de cada componente.
Verificações da cadeia de tradução¶
Verificações de cadeia de tradução com falha errónea indicam que o problema é com a cadeia fonte. Os tradutores às vezes corrigem erros na tradução em vez de relatá-los - um exemplo típico é a falta de um ponto final no final de uma frase.
A revisão de todas as verificações com falha pode dar um feedback valioso para melhorar as cadeias fonte dele. Para tornar a revisão dos textos fonte mais fácil, o Weblate cria automaticamente uma tradução para o idioma fonte e mostra as verificações de nível de fonte lá:

Uma das verificações mais interessantes aqui é Várias verificações falhadas – ela é acionada sempre que há falha em várias traduções de um determinado texto. Normalmente, é algo a procurar, pois é uma cadeia com que os tradutores têm problemas a traduzir corretamente.
A lista detalhada é uma visão geral por idioma:

A receber feedback sobre a cadeia fonte¶
Os tradutores podem comentar tanto sobre a tradução quanto sobre as cadeias fonte. Cada Configuração de componente pode ser configurada para receber tais comentários num endereço de e-mail (veja Endereço para reportar erros na cadeia fonte) e usar a lista de discussão de programadores é geralmente a melhor abordagem. Dessa forma, pode ficar de olho quando surgirem problemas na tradução, cuidar deles e corrigi-los rapidamente.
Veja também
Promovendo a tradução¶
O Weblate fornece widgets para compartilhar no seu site ou outras fontes para promover o projeto de tradução. Ele também tem uma bela página de boas-vindas para novos colaboradores, a fornecer informações básicas sobre a tradução. Além disso, pode compartilhar informações sobre tradução a usar o Facebook ou Twitter. Todas essas possibilidades podem ser encontradas na guia Compartilhar:

Todos esses emblemas são fornecidos com uma ligação para uma página simples que explica aos utilizadores como traduzir a usar o Weblate:

Relatório de progresso da tradução¶
Os recursos de relatório fornecem uma visão de como uma tradução progride num determinado período. É fornecido um resumo das contribuições para qualquer componente temporalmente. A ferramenta de relatório é encontrada no menu Insights de qualquer componente de tradução, projeto ou no painel:

Várias ferramentas de relatório estão disponíveis nesta página e todas podem produzir saída em HTML, reStructuredText ou JSON. Os primeiros dois formatos são adequados para incorporar estatísticas na documentação existente, enquanto JSON é útil para processamento posterior dos dados.
Créditos do tradutor¶
Gera um documento utilizável para creditar tradutores – classificado por idioma e lista todos os colaboradores para um determinado idioma:
* Czech
* John Doe <john@example.com> (5)
* Jane Doe <jane@example.com> (1)
* Dutch
* Jane Doe <jane@example.com> (42)
Dica
O número entre parênteses indica a quantidade de contribuições em determinado período.
Estatísticas do colaborador¶
Gera a quantidade de palavras e cadeias traduzidos por nome do tradutor:
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
Name Email Count total Source words total Source chars total Target words total Target chars total Count new Source words new Source chars new Target words new Target chars new Count approved Source words approved Source chars approved Target words approved Target chars approved Count edited Source words edited Source chars edited Target words edited Target chars edited
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
John Done john@example.com 1 3 24 3 21 1 3 24 3 21 0 0 0 0 0 0 0 0 0 0
Jane Done jane@example.com 2 5 25 4 28 2 3 24 3 21 0 0 0 0 0 0 0 0 0 0
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
Isso pode ser útil se paga os seus tradutores com base na quantidade de trabalho, pois fornece várias estatísticas sobre o trabalho dos tradutores.
Todas as estatísticas estão disponíveis em três variantes:
- Total
Quantidade geral de cadeias editados.
- New
Cadeias recentemente traduzidos que não tinham tradução antes.
- Approved
Contagem para aprovações de cadeias no fluxo de trabalho de revisão (consulte Revisores dedicados).
- Edited
Cadeias editadas que tiveram tradução antes.
As seguintes métricas estão disponíveis para cada um:
- Count
Quantidade de cadeias.
- Edits
Quantidade de edições na cadeia, medido na distância Damerau–Levenshtein.
- Source words
Quantidade de palavras na cadeia fonte.
- Source characters
Quantidade de caracteres na cadeia fonte.
- Target words
Quantidade de palavras na cadeia traduzida.
- Target characters
Quantidade de caracteres na cadeia traduzida.
Contribuir ao Weblate¶
Há dezenas de maneiras de melhorar o Weblate. Pode escolher uma com a qual se sente confortável, seja codificação, design gráfico, documentação, patrocínio ou uma ideia:
Traduzir o Weblate¶
O Weblate está a ser continuamente traduzido a usar o próprio Weblate. Sinta-se à vontade para participar do esforço de disponibilizar o Weblate na maior quantidade possível de idiomas humanos. Isso traz o Weblate para mais perto dos utilizadores deles!
Se encontrar um possível erro na cadeia fonte, pode marcá-lo com um comentário no editor Weblate. Dessa forma, pode ser discutido e corrigido. Se tiver certeza, também pode clicar na ligação na secção Localização do texto fonte e enviar um PR com a sua correção.
Contribua à documentação do Weblate¶
É bem-vindo para melhorar a página de documentação de sua escolha. Faça isso facilmente a clicar no botão Editar no GitHub no canto superior direito da página.
Respeite essas diretrizes ao escrever:
Não remova parte da documentação se ela for válida.
Use uma linguagem clara e de fácil compreensão. Está a escrever documentos técnicos, não um poema. Nem todos os leitores de documentos são falantes nativos, fique atento.
Não tenha medo de perguntar se não tem certeza. Se tiver que perguntar sobre algum recurso durante a edição, não altere os documentos dele antes de ter a resposta. Isso significa: muda ou pergunta. Não faça os dois ao mesmo tempo.
Verifique as suas alterações a executar as ações descritas ao seguir os documentos.
Envie PR com alterações em pequenos pedaços para tornar mais fácil e rápido revisar e mesclar.
Se quiser reescrever e alterar a estrutura de um grande artigo, faça isso em duas etapas:
Reescreva
Depois que a reescrita for revisada, polida e mesclada, altere a estrutura dos parágrafos em outro PR.
Dica
Pode traduzir os documentos.
Extending built-in language definitions¶
As definições de idioma estão no repositório weblate-language-data repository.
You are welcome to add missing language definitions to languages.csv
,
other files are generated from that file.
Discussões do Weblate¶
Se tiver uma ideia e não tiver certeza se ela é adequada para um problema, não se preocupe. Pode entrar na comunidade de discussões do GitHub.
Financiar o desenvolvimento do Weblate¶
Pode impulsionar o desenvolvimento do Weblate na página de doação. Os fundos coletados lá são usados para permitir hospedagem de grátis para projetos de software livre e o desenvolvimento adicional do Weblate. Por favor, verifique a página de doação para obter opções, como metas de financiamento e as recompensas que obtém como um financiador orgulhoso.
Apoiadores que financiaram o Weblate¶
Lista de apoiadores do Weblate:
Yashiro Ccs
Cheng-Chia Tseng
Timon Reinhard
Loic Dachary
Marozed
Richard Nespithal
MyExpenses.Mobi
Gostaria de estar na lista? Veja as opções em Doar ao Weblate.
Comea çar a contribuir código para o Weblate¶
Entenda o código-fonte do Weblate a passar por Código-fonte do Weblate, Frontend do Weblate e Componentes internos do Weblate.
Comea çar com a base de código¶
Familiarize-se com a base de código do Weblate, a dar uma olhada nos bugs etiquetados como good first issue.
Execução local de Weblate¶
A abordagem mais confortável para começar a desenvolver Weblate é seguir …/admin/install/source. Isso lhe dará um virtualenv com fontes editáveis do Weblate.
Clone o código-fonte do Weblate:
git clone https://github.com/WeblateOrg/weblate.git cd weblate
Crie um virtualenv:
virtualenv .venv .venv/bin/activate
Instale Weblate (para isso, vai precisar de algumas dependências do sistema, veja …/admin/install/source):
pip install -e .
Instale todas as dependências úteis para o desenvolvimento:
pip install -r requirements-dev.txt
Inicie um servidor de desenvolvimento:
weblate runserver
Dependendo da sua configuração, também quereria inciar workers do Celery:
./weblate/examples/celery start
Para executar um teste (veja Teste local para mais detalhes):
. scripts/test-database ./manage.py test
Veja também
Executando Weblate localmente no Docker¶
Se tiver Docker e docker-compose instalados, pode pôr para funcionar o ambiente de desenvolvimento simplesmente a executar:
./rundev.sh
Isso irá criar uma imagem do Docker de desenvolvimento e iniciá-lo. Weblate está a ser executado em <http://127.0.0.1:8080/> e pode entrar como o utilizador admin
, a usar admin
como a palavra-passe. A nova instalação está vazia, então quererá seguir Adicionando projetos e componentes de tradução.
Os ficheiros Dockerfile
e docker-compose.yml
para isso estão localizados no diretório dev-docker
.
The script also accepts some parameters, to execute tests, run it with the
test
parameter and then specify any test
parameters,
for example running only tests in the weblate.machine
module:
./rundev.sh test --failfast weblate.machine
Nota
Tenha cuidado para que os seus contentores Docker estejam prontos e em execução antes de fazer os testes. Pode verificar isso a executar o comando docker ps
.
Para exibir os logs:
./rundev.sh logs
Para parar os contentores em segundo fundo, execute:
./rundev.sh stop
A execução do script sem argumentos vai recriar o contentor Docker e reiniciá-lo.
Nota
Esta não é uma configuração adequada para a produção, pois inclui vários hacks que são inseguros, mas que tornam o desenvolvimento mais fácil.
Codificando Weblate com PyCharm¶
PyCharm é uma IDE conhecida para Python, aqui estão algumas diretrizes para lhe ajudar a configurar o seu projeto Weblate nele.
Considerando que acabou de clonar o repositório GitHub, para uma pasta, basta abri-la com o PyCharm. Assim que a IDE estiver aberta, o primeiro passo é especificar o interpretador que deseja:

Pode optar por deixar PyCharm criar o virtualenv para si, ou selecionar um já existente:

Não se esqueça de instalar as dependências quando o interpretador estiver configurado: faça isso através do console (o console do IDE vai usar diretamente o seu virtualenv por padrão, ou através da interface quando receber um aviso sobre dependências em falta.
O segundo passo é definir a informação certa para usar o Django nativo dentro do PyCharm: a ideia é ser capaz de acionar imediatamente os testes unitários no IDE. Para isso, precisa especificar o caminho raiz do projeto Django e o caminho para as suas configurações:

Tenha cuidado, Django project root é a raiz real do repositório, não o subdiretório do Weblate. Sobre as configurações, poderia usar o weblate/settings_test.py
do repositório, mas pode criar a sua própria configuração e configurá-la lá.
O último passo é executar o servidor e pôr pontos de interrupção no código para poder depurá-lo. Isto é feito a criar uma nova configuração do Django Server:


Dica
Tenha cuidado com a propriedade chamada No reload: ela evita do servidor ser recarregado automaticamente quando modificar os ficheiros. Isso permite que os pontos de interrupção de depuração existentes persistam, quando eles normalmente seriam descartados no recarregamento do servidor.
Inicializar a sua instância de desenvolvimento¶
Quererá usar import_demo
para criar traduções de demonstração e createadmin
para criar um utilizador administrador.
Código-fonte do Weblate¶
O Weblate é desenvolvido no GitHub. É bem-vindo para criar um fork do código e abrir pull requests. Patches em qualquer outra forma também são bem-vindos.
Veja também
Confira Componentes internos do Weblate para ver como o Weblate se parece por dentro.
Princípios de Segurança por Design¶
Qualquer código para Weblate deve ser escrito com Princípios de Segurança por Design (inglês) em mente.
Padrão de codificação¶
O código deve seguir as diretrizes de codificação PEP-8 e deve ser formatado a usar o formatador de código black.
Para verificar a qualidade do código, pode usar o :programa:`flake8`, os plugins recomendados estão listados em .pre-commit-config.yaml
e a configuração dele está em setup.cfg
.
A abordagem mais fácil para impor tudo isso é instalar pre-commit. O repositório do Weblate contém a configuração para verificar se os ficheiros do commit estão sãos. Depois de instalá-lo (ele já está incluído no requirements-lint.txt
), ative-o executando pré-commit install
na sua cópia do Weblate. Desta forma, todas as suas alterações serão verificadas automaticamente.
Também pode acionar a verificação manualmente, para verificar todos os ficheiros execute:
pre-commit run --all
Depuração do Weblate¶
Os bugs podem se comportar como falhas na aplicação ou como um mau comportamento. É bem-vindo a coletar informações sobre qualquer problema desse tipo e enviá-las para o rasteador de problemas.
Modo de depuração¶
Ao ligar o modo de depuração, as exceções serão mostradas no navegador. Isto é útil para problemas de depuração na interface web, mas não é adequado para o ambiente de produção, pois tem consequências de desempenho e pode vazar dados privados.
Veja também
Logs do Weblate¶
Weblate pode produzir registos (logs) detalhados do que está a acontecer em segundo fundo. Na configuração padrão, ele usa syslog e isso faz o log aparecer em /var/log/messages
ou /var/log/syslog
(a depender da configuração do seu daemon syslog).
O processo de Celery (veja Tarefas de fundo a usar o Celery) normalmente produz também registos próprios. O exemplo de configurações de todo o sistema regista em vários ficheiros em /var/log/celery/
.
Os contentores Docker registam a sua saída (como é habitual no mundo Docker), por isso pode olhar para os logs a utilizar docker-compose logs
.
Veja também
Amostra de configuração contém uma configuração de LOGGING
.
Não a processar tarefas de segundo plano¶
Muitas coisas acontecem em segundo plano, workers do Celery. Caso coisas como o envio de e-mails ou remoção de componentes não funcionem, pode haver algum problema com isso.
Coisas a verificar neste caso:
Verifique se o processo do Celery está em execução, veja Tarefas de fundo a usar o Celery
Verifique o estado da fila do Celery em Interface de gestão ou use
celery_queues
Procure erros nos registos do Celery (veja Logs do Weblate)
Não a receber e-mails do Weblate¶
Pode verificar se o e-mail de saída está a funcionar corretamente a usar o comando de gestão sendtestemail
(veja Invocando comandos de gestão para instruções sobre como invocá-lo em diferentes ambientes) ou a usar Interface de gestão sob a guia Ferramentas.
Estes enviam e-mails diretamente, para que isto verifique se a sua configuração SMTP está correta (veja Configuração de e-mail de saída). A maioria dos e-mails da Weblate são, no entanto, enviados em segundo plano e pode haver alguns problemas com o Celery envolvido também, veja Não a processar tarefas de segundo plano para depuração disso.
Análise de falhas de aplicação¶
Caso o aplicação falhar, é útil recolher o máximo de informação possível sobre a falha. A maneira mais fácil de conseguir isso é a usar serviços de terceiros que podem coletar tais informações automaticamente. Pode encontrar informações sobre como configurar isso em Coletando relatórios de erros.
Falhas silenciosas¶
Muitas tarefas são descarregadas para o Celery para processamento em segundo plano. As falhas não são exibidas na interface do utilizador, mas aparecem nos logs do Celery. A configuração em Coletando relatórios de erros ajuda a perceber essas falhas mais facilmente.
Problemas de desempenho¶
Caso o Weblate tenha um mau desempenho em alguma situação, por favor recolha os registos relevantes a mostrar o problema e qualquer coisa que possa ajudar a descobrir onde o código pode ser melhorado.
Caso alguns pedidos demorem muito tempo sem nenhuma indicação, pode querer instalar dogslow juntamente com Coletando relatórios de erros e obter tracebacks detalhados na ferramenta de coleta de erros.
Componentes internos do Weblate¶
Nota
Este capítulo lhe dará uma visão geral básica dos componentes internos do Weblate.
Weblate deriva a maior parte da estrutura de código dele e é baseado no Django.
Estrutura de diretórios¶
Visão geral rápida da estrutura de diretórios do repositório principal Weblate:
docs
Código-fonte desta documentação, que pode ser construída a usar Sphinx.
dev-docker
Código do Docker para executar o servidor de desenvolvimento, veja Executando Weblate localmente no Docker.
weblate
Código-fonte do Weblate como uma aplicação Django, veja Componentes internos do Weblate.
weblate/static
Ficheiro de cliente (CSS, Javascript e imagens), veja Frontend do Weblate.
Módulos¶
O Weblate consiste em vários aplicações Django (alguns opcionais, veja Módulos opcionais do Weblate):
accounts
Conta de utilizador, perfis e notificações.
addons
Extensões para ajustar o comportamento do Weblate, veja Extensões.
api
API baseada no framework Django REST.
auth
Autenticação e permissões.
billing
O módulo opcional de Faturação.
checks
Módulo de Verificações de qualidade de texto de tradução.
fonts
Módulo de verificações de renderização de fonte.
formats
Camada de abstração de formato de ficheiro baseada no translate-toolkit.
gitexport
O módulo opcional Exportador git.
lang
Módulo que define idioma e modelos plurais.
legal
O módulo opcional Legal.
machinery
Integração de serviços de tradução de máquina.
memory
Memória de tradução embutida, veja Memória de Tradução.
screenshots
Gestão de capturas de ecrã e módulo OCR.
trans
Módulo principal que trata das traduções.
utils
Várias utilidades de ajuda.
vcs
Abstração do sistema de controle de versão.
wladmin
Personalização da interface administrativa do Django.
Desenvolvendo extensões¶
Extensões são uma forma de personalizar o fluxo de trabalho de localização no Weblate.
- class weblate.addons.base.BaseAddon(storage=None)¶
- classmethod can_install(component, user)¶
Verifica se a extensão é compatível com o componente dado.
- configure(settings)¶
Salva a configuração.
- daily(component)¶
Gancho acionado diariamente.
- classmethod get_add_form(user, component, **kwargs)¶
Retorna um formulário de configuração para adicionar uma nova extensão.
- get_settings_form(user, **kwargs)¶
Retorna um formulário de configuração para esta extensão.
- post_add(translation)¶
Gancho acionado após nova tradução ser adicionada.
- post_commit(component)¶
Gancho acionado após alterações terem feito um commit para o repositório.
- post_push(component)¶
Gancho acionado após repositório ter o push feito para o upstream.
- post_update(component, previous_head: str, skip_push: bool)¶
Gancho acionado após o repositório ser atualizado a partir do upstream.
- Parâmetros
- pre_commit(translation, author)¶
Gancho acionado antes das alterações terem feito um commit para o repositório.
- pre_push(component)¶
Gancho acionado antes do repositório ter feito push para o upstream.
- pre_update(component)¶
Hook acionado antes do repositório ser atualizado a partir do upstream.
- save_state()¶
Salva informações do estado da extensão.
- stay_on_create = False¶
Classe base para as extensões do Weblate.
- store_post_load(translation, store)¶
Gancho acionado após um ficheiro ser analisado.
Ele recebe uma instância de uma classe de formato de ficheiro como um argumento.
Isso é útil para modificar os parâmetros de classe de formato de ficheiro, por exemplo, ajustar como o ficheiro será salvo.
- unit_pre_create(unit)¶
Gancho acionado antes que a nova unidade seja criada.
Aqui está um exemplo de extensão:
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
from django.utils.translation import gettext_lazy as _
from weblate.addons.base import BaseAddon
from weblate.addons.events import EVENT_PRE_COMMIT
class ExampleAddon(BaseAddon):
# Filter for compatible components, every key is
# matched against property of component
compat = {"file_format": {"po", "po-mono"}}
# List of events add-on should receive
events = (EVENT_PRE_COMMIT,)
# Add-on unique identifier
name = "weblate.example.example"
# Verbose name shown in the user interface
verbose = _("Example add-on")
# Detailed add-on description
description = _("This add-on does nothing it is just an example.")
# Callback to implement custom behavior
def pre_commit(self, translation, author):
return
Frontend do Weblate¶
O frontend atualmente é construído a usar Bootstrap, jQuery e algumas bibliotecas de terceiros.
Navegadores suportados¶
Weblate oferece suporte às versões mais recentes e estáveis de todos os principais navegadores e plataformas.
Navegadores alternativos que usam a versão mais recente do WebKit, Blink ou Gecko, seja diretamente ou por meio da API de visualização da web da plataforma, não são explicitamente suportados. No entanto, o Weblate deve (na maioria dos casos) ser exibido e funcionar corretamente nesses navegadores também.
Navegadores mais antigos podem funcionar, mas alguns recursos podem ser limitados.
Gestão de dependências¶
The yarn package manager is used to update third party libraries. The
configuration lives in scripts/yarn
and there is a wrapper script
scripts/yarn-update
to upgrade the libraries, build them and copy to
correct locations in weblate/static/vendor
, where all third partly
frontend code is located. The Weblate specific code should be placed directly
in weblate/static
or feature specific subdirectories (for example
weblate/static/editor
).
Adicionar uma nova biblioteca de terceiros geralmente consiste em:
# Add a yarn package
yarn --cwd scripts/yarn add PACKAGE
# Edit the script to copy package to the static folder
edit scripts/yarn-update
# Run the update script
./scripts/yarn-update
# Add files to git
git add .
Estilo de codificação¶
Weblate depende do Prettier para a formatação do código para ficheiros JavaScript e CSS.
Também usamos ESLint para verificar o código JavaScript.
Tradução¶
Se precisar de qualquer texto visível para o utilizador no código do frontend, ele deve ser localizável. Na maioria dos casos, tudo que precisa é envolver o seu texto dentro da função gettext
, mas existem recursos mais complexos disponíveis:
document.write(gettext('this is to be translated'));
var object_count = 1 // or 0, or 2, or 3, ...
s = ngettext('literal for the singular case',
'literal for the plural case', object_count);
fmts = ngettext('There is %s object. Remaining: %s',
'There are %s objects. Remaining: %s', 11);
s = interpolate(fmts, [11, 20]);
// s is 'There are 11 objects. Remaining: 20'
Veja também
Ícones¶
Weblate atualmente usa ícones de design de material. Caso esteja a procurar por um novo símbolo, verifique Material Design Icons ou Material Design Resources.
Além disso, existe scripts/optimize-svg
para reduzir o tamanho do SVG, já que a maioria dos ícones são embutidos no HTML para permitir estilização dos caminhos.
Relatando problemas no Weblate¶
O rastreador de problemas do Weblate está hospedado no GitHub.
Sinta-se à vontade para relatar quaisquer problemas que tenha ou sugerir melhorias para o Weblate lá. Existem vários modelos preparados para lhe orientar confortavelmente durante o relatório de problemas.
Se o que encontrou é um problema de segurança no Weblate, consulte a secção Problemas de segurança abaixo.
Se não tem certeza sobre o seu relatório de bug ou solicitação de recurso, pode tentar Discussões do Weblate.
Problemas de segurança¶
A fim de dar à comunidade tempo para responder e fazer upgrade, recomendamos enfaticamente que relate todos os problemas de segurança em particular. O HackerOne é usado para lidar com problemas de segurança e pode ser relatado diretamente em HackerOne. Depois de enviá-lo lá, a comunidade terá tempo limitado, mas suficiente para resolver o incidente.
Como alternativa, relate para security@weblate.org, que termina no HackerOne também.
Se não quiser usar o HackerOne, por qualquer motivo, pode enviar o relatório por e-mail para michal@cihar.com. Pode optar por criptografá-lo a usar esta chave PGP 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D. Também pode obter a chave PGP em Keybase.
Nota
O Weblate depende de componentes de terceiros para muitas coisas. Caso encontre uma vulnerabilidade a afetar um desses componentes em geral, relate-o diretamente ao respectivo projeto.
Alguns deles são:
Conjunto de testes e integração contínua do Weblate¶
Existem conjuntos de teste para a maior parte do código atual, aumente a cobertura a adicionar casos de teste para qualquer nova funcionalidade e verifique se funciona.
Integração contínua¶
Os resultados do teste atual encontram-se em GitHub Actions e a cobertura é relatada em Codecov.
Existem vários trabalhos para verificar diferentes aspectos:
Testes de unidade
Construção de documentação e ligações externas
Testes de migração de todas as versões com suporte
Linting de código
Verificação de configuração (garante que os ficheiros dist gerados não percam nada e possam ser testados)
A configuração do CI está no diretório .github/workflows
. Ele usa muito scripts auxiliares armazenados no diretório ci
. Os scripts também podem ser executados manualmente, mas eles requerem várias variáveis de ambiente, principalmente a definir o ficheiro de configurações do Django para usar e conexão com o banco de dados. A definição de exemplo disso está em scripts/test-database
:
# Simple way to configure test database from environment
# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}
# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test
A execução simples pode ser semelhante a:
. scripts/test-database
./ci/run-migrate
./ci/run-test
./ci/run-docs
Teste local¶
Para executar um conjunto de testes localmente, use:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test
Dica
Precisará de um servidor de banco de dados (PostgreSQL) a ser usado para os testes. Por padrão, o Django cria um banco de dados separado para executar testes com o prefixo test_
, então no caso que as suas configurações estarem configuradas para usar weblate
, os testes usarão o banco de dados test_weblate
. Veja Configuração de banco de dados para o Weblate para instruções de configuração.
O weblate/settings_test.py
é usado no ambiente CI também (veja Integração contínua) e pode ser ajustado a usar variáveis de ambiente:
# Simple way to configure test database from environment
# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}
# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test
Antes de executar os testes, deve coletar ficheiros estáticos, pois alguns testes contam com a presença deles:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Também pode especificar testes individuais para executar:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
Dica
Os testes também podem ser executados dentro de um contentor Docker do programador, consulte Executando Weblate localmente no Docker.
Veja também
Veja :doc:`django:topics/testing/index`para mais informações sobre a execução e escrita de testes para Django.
Esquemas de dados¶
Weblate usa JSON Schema para definir o layout de ficheiros JSON externos.
Esquema de memória de tradução Weblate¶
tipo |
array |
||
items |
O item de memória de tradução |
||
tipo |
objeto |
||
propriedades |
|||
|
A categoria de cadeia |
||
1 is global, 2 is shared, 10000000+ are project specific, 20000000+ are user specific |
|||
tipo |
integer |
||
exemplos |
1 |
||
minimum |
0 |
||
predefinido |
1 |
||
|
The String Origin |
||
Nome do ficheiro ou componente |
|||
tipo |
cadeia |
||
exemplos |
test.tmx |
||
projeto/componente |
|||
predefinido |
|||
|
A cadeia fonte |
||
tipo |
cadeia |
||
exemplos |
Olá |
||
minLength |
1 |
||
predefinido |
|||
|
O idioma fonte |
||
ISO 639-1 / ISO 639-2 / IETF BCP 47 |
|||
tipo |
cadeia |
||
exemplos |
en |
||
pattern |
^[^ ]+$ |
||
predefinido |
|||
|
A cadeia de destino |
||
tipo |
cadeia |
||
exemplos |
Ahoj |
||
minLength |
1 |
||
predefinido |
|||
|
O idioma de destino |
||
ISO 639-1 / ISO 639-2 / IETF BCP 47 |
|||
tipo |
cadeia |
||
exemplos |
cs |
||
pattern |
^[^ ]+$ |
||
predefinido |
|||
additionalProperties |
False |
||
definições |
Veja também
Exportação de dados de utilizadores do Weblate¶
tipo |
objeto |
|||
propriedades |
||||
|
Básico |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Nome do utilizador |
|||
tipo |
cadeia |
|||
exemplos |
administrador |
|||
predefinido |
||||
|
Nome completo |
|||
tipo |
cadeia |
|||
exemplos |
Admin Weblate |
|||
predefinido |
||||
|
||||
tipo |
cadeia |
|||
exemplos |
||||
predefinido |
||||
|
Data de adesão |
|||
tipo |
cadeia |
|||
exemplos |
2019-11-18T18:53:54.862Z |
|||
predefinido |
||||
|
Perfil |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Idioma |
|||
tipo |
cadeia |
|||
exemplos |
cs |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Quantidade de cadeias fonte |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
predefinido |
0 |
|||
|
Quantidade de cadeias traduzidas |
|||
tipo |
integer |
|||
exemplos |
24 |
|||
predefinido |
0 |
|||
|
Quantidade de capturas de ecrã enviadas |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
predefinido |
0 |
|||
|
Ocultar as traduções completas no painel |
|||
tipo |
boolean |
|||
exemplos |
False |
|||
predefinido |
True |
|||
|
Mostrar traduções secundárias no modo Zen |
|||
tipo |
boolean |
|||
exemplos |
True |
|||
predefinido |
True |
|||
|
Ocultar a fonte se existir uma tradução secundária |
|||
tipo |
boolean |
|||
exemplos |
False |
|||
predefinido |
True |
|||
|
Hiperligação_do_editor |
|||
tipo |
cadeia |
|||
exemplos |
||||
pattern |
^.*$ |
|||
predefinido |
||||
|
Modo do editor de tradução |
|||
tipo |
integer |
|||
exemplos |
0 |
|||
predefinido |
0 |
|||
|
Modo de editor Zen |
|||
tipo |
integer |
|||
exemplos |
0 |
|||
predefinido |
0 |
|||
|
Carateres especiais |
|||
tipo |
cadeia |
|||
exemplos |
||||
pattern |
^.*$ |
|||
predefinido |
||||
|
Vista predefinida do painel |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
predefinido |
0 |
|||
|
Lista predefinida de componentes |
|||
predefinido |
null |
|||
anyOf |
tipo |
null |
||
tipo |
integer |
|||
|
Idiomas traduzidos |
|||
tipo |
array |
|||
predefinido |
||||
items |
Código do idioma |
|||
tipo |
cadeia |
|||
exemplos |
cs |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Idiomas secundários |
|||
tipo |
array |
|||
predefinido |
||||
items |
Código do idioma |
|||
tipo |
cadeia |
|||
exemplos |
sk |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Projetos vigiados |
|||
tipo |
array |
|||
predefinido |
||||
items |
Slug do projeto |
|||
tipo |
cadeia |
|||
exemplos |
weblate |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Registo de auditoria |
|||
tipo |
array |
|||
predefinido |
||||
items |
Items |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Endereço IP |
|||
tipo |
cadeia |
|||
exemplos |
127.0.0.1 |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Agente do utilizador |
|||
tipo |
cadeia |
|||
exemplos |
PC / Linux / Firefox 70.0 |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Timestamp |
|||
tipo |
cadeia |
|||
exemplos |
2019-11-18T18:58:30.845Z |
|||
pattern |
^.*$ |
|||
predefinido |
||||
|
Atividade |
|||
tipo |
cadeia |
|||
exemplos |
sessão |
|||
pattern |
^.*$ |
|||
predefinido |
||||
definições |
Veja também
Criando lançamento do Weblate¶
Agenda de lançamentos¶
O Weblate tem um ciclo de lançamento de dois meses para lançamentos (x.y). Geralmente, eles são seguidos por várias versões de correções de bugs para corrigir problemas que ocorrem neles (x.y.z).
A mudança na versão principal indica que o processo de atualização não pode ignorar esta versão - sempre deve atualizar para x.0 antes de atualizar para versões x.y superiores.
Veja também
Planejamento de lançamento¶
Os recursos para os próximos lançamentos são coletados a usar marcos do GitHub, pode ver nosso roteiro em <https://github.com/WeblateOrg/weblate/milestones>.
Processo de lançamento¶
Coisas para verificar antes de fazer um lançamento:
Verificar novos idiomas traduzidos a usar ./scripts/list-translated-languages.
Definir a versão final a usar ./scripts/prepare-release.
Certificar-se de que as capturas de ecrã estejam atualizadas a usar make -C docs update-screenshots.
Junte todas as traduções pendentes a usar wlc push; git remote update; git merge origin/weblate
Realizar o lançamento:
Criar um lançamento a usar ./scripts/create-release --tag (veja abaixo os requisitos).
Etapas manuais pós-lançamento:
Atualizar a imagem Docker.
Fechar o marco do GitHub.
Assim que a imagem Docker for testada, adicionar uma tag e fazer o push dela.
Atualizar um chart Helm para a nova versão.
Incluir a nova versão em
.github/workflows/migrations.yml
para cobri-la nos testes de migração.Incrementar a versão nas ligações de descarregas do site.
Incrementar a versão no repositório a usar ./scripts/set-version.
Para criar tags a usar o script ./scripts/create-release, precisará do seguinte:
GnuPG com chave privada usada para assinar o lançamento
Acesso por push a repositórios git Weblate (ele envia tags)
Ferramenta hub configurada e acesso para criar lançamentos no repositório Weblate
Acesso SSH ao servidor de descarregas Weblate (as descarregas do site são copiados lá)
Segurança e privacidade¶
Dica
No Weblate, a segurança mantém um ambiente que valoriza a privacidade dos nossos utilizadores.
O desenvolvimento do Weblate segue as Melhores Práticas da Core Infrastructure Initiative da Linux Foundation.
Veja também
Rastreamento de dependências para vulnerabilidades¶
Problemas de segurança em nossas dependências são monitorados a usar Dependabot. Isso cobre as bibliotecas Python e JavaScript e a versão estável mais recente tem as dependências delesatualizadas para evitar vulnerabilidades.
Dica
Pode haver vulnerabilidades em bibliotecas de terceiros que não afetam o Weblate, portanto, não são solucionadas com o lançamento de versões de correção de bugs do Weblate.
Segurança de contentor Docker¶
Os contentores Docker são verificados a usar Anchore e Trivy.
Isso nos permite detetar vulnerabilidades antecipadamente e lançar melhorias rapidamente.
Pode obter os resultados dessas varreduras no GitHub – eles são armazenados como artefatos em nosso CI no formato SARIF (Static Analysis Results Interchange Format).
Veja também
Sobre o Weblate¶
Objetivos do projeto¶
Ferramenta de localização contínua baseada na web com Integração de controlo de versões suportando uma ampla gama de Formatos de ficheiros suportados, facilitando a contribuição dos tradutores.
Nome do projeto¶
«Weblate» é uma palavra-valise das palavras «web» e «translate».
Site da Web do Projeto¶
A página inicial é https://weblate.org e há um serviço hospedado na nuvem em https://hosted.weblate.org. A documentação pode ser lida em https://docs.weblate.org.
Logotipos do projeto¶
Os logotipos do projeto e outros gráficos estão disponíveis em https://github.com/WeblateOrg/graphics.
Liderança¶
Este projeto é mantido por Michal Čihař, que pode ser alcançado em michal@cihar.com.
Autores¶
Weblate foi iniciado por Michal Čihař. Desde a criação dele, em 2012, milhares de pessoas contribuíram.
Licença¶
Copyright (C) 2012 - 2021 Michal Čihař <michal@cihar.com>
Este programa é um software livre: pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicado pela Free Software Foundation, seja a versão 3 da Licença, ou (ao seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que ele seja útil, mas sem qualquer garantia; sem sequer a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO ESPECÍFICO. Consulte a Licença Pública Geral GNU para obter mais detalhes.
Deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, veja <https://www.gnu.org/licenses/>.
Weblate 4.8.1¶
Released on September 10th 2021.
Fixed user removal in Django admin interface.
Document add-on parameters in more detail.
Fixed JavaScript error on glossary.
Add limit to number of matches in consistency check.
Improve placeholders handling in machine translations.
Fixed creating add-ons using API.
Added
PRIVACY_URL
setting to add privacy policy link to the footer.Hide member e-mail addresses from project admins.
Improved gettext PO merging in case of conflicts.
Improved glossary highlighting.
Improved
safe-html
flag behavior with XML checks.Fixed commit messages on linked components.
Weblate 4.8¶
Released on August 21th 2021.
Added support for Apple stringsdict format.
The exact search operator is now case-sensitive on PostgreSQL.
Fixed saving glossary explanations in some cases.
Documentation improvements.
Performance improvements.
Improved squash add-on compatibility with Gerrit.
Fixed adding strings to monolingual glossary components.
Improved performance in handling variants.
Fixed squash add-on sometimes skipping parsing upstream changes.
Preserve file extension for downloads.
Added support for the Fluent format.
Added support for using tabs to indent JSON formats.
Weblate 4.7.2¶
Released on July 15th 2021.
Support more language aliases to be configured on a project.
Fixed search string validation in API.
Fixed Git exporter URLs after a domain change.
Fixed cleanup add-on for Windows RC files.
Fixed possible crash in XLIFF updating.
Weblate 4.7.1¶
Released on June 30th 2021.
Improved popup for adding terms to glossary.
Added support for LibreTranslate machine translation service.
Added rate limiting on creating new projects.
Improved performance of file updates.
Weblate 4.7¶
Released on June 17th 2021.
Melhorada a verificação de saúde da configuração.
Suporte adicionado para
object-pascal-format
usado em gettext PO, veja Formato Object Pascal.Renamed Nearby keys to Similar keys to better describe the purpose.
Adicionado suporte para Ficheiros lang mi18n.
Melhorada a integração de autenticação SAML.
Fixed Gerrit integration to better handle corner cases.
Weblate now requires Django 3.2.
Corrigido o convite de utilizadores quando a autenticação por e-mail está desativada.
Melhoradas as definições de idioma.
Adicionado suporte para bloquear utilizadores de contribuir para um projeto.
Corrigida a criação automática de idiomas de glossário.
Estendida a documetanção sobre extensões.
Melhorias no desempenho para componentes com repositórios vinculados.
Adicionado suporte para DeepL API grátis.
O utilizador de gerência não precisa mais da interface administrativa do Django.
Weblate 4.6.2¶
Released on May 8th 2021.
Corrigida a falha após mover o componente compartilhado entre projetos.
Corrigida a adição de novos textos a ficheiros de propriedades vazios.
Fixed copy icon alignment in RTL languages.
Estendidas as estatísticas de texto na guia de Informações.
Corrigido o tratamento de ficheiros de tradução ignorados no Git.
Melhorada o desempenho das métricas.
Corrigido possível erro no salvamento de glossários.
Fixed consistency check behavior on languages with different plural rules.
Weblate 4.6.1¶
Released on May 2nd 2021.
Remove obsolete spam protection code.
Melhora na precisão da verificação de plural de textos fonte.
Update list of user interface languages in Docker.
Melhoradas as mensagens de erro ao criar pull requests.
Fixed creating pull requests on Pagure.
Corrigido acionamento automático de extensões instaladas.
Corrigidos possíveis problemas de cache ao atualizar.
Corrigida a adição de novas unidades para traduções monolíngues usando envio.
Weblate 4.6¶
Released on April 19th 2021.
The auto_translate management command has now a parameter for specifying translation mode.
Adicionado suporte para Ficheiros de texto.
Adicionadas tendências e métricas para todos os objetos.
Adicionado suporte para cópia direta de texto a partir de idiomas secundários.
Added date filtering when browsing changes.
Improved activity charts.
Sender for contact form e-mails can now be configured.
Melhorada a validação de parâmetros na API de criação de componentes.
A limitação de taxa não se aplica mais a superutilizadores.
Melhorada a desempenho e confiabilidade da extensão de tradução automática.
The rate limiting now can be customized in the Docker container.
API for creating components now automatically uses URLs internas do Weblate.
Simplified state indication while listing strings.
Hash de palavras-passe agora usa Argon2 por padrão.
Barras de progresso simplificadas a indicar o estado da tradução.
Renamed Adiciona idiomas em falta to clarify the purpose.
Corrigido gravar o estado de cadeia para XLIFF.
Adicionada pesquisa para todo idioma.
Initial support for Dimensionando horizontalmente the Docker deployment.
Weblate 4.5.3¶
Released on April 1st 2021.
Fixed metrics collection.
Corrigido possível travamento ao adicionar textos.
Melhorados os exemplos de consulta de pesquisa.
Fixed possible loss of newly added strings on replace upload.
Weblate 4.5.2¶
Released on March 26th 2021.
Agendamento configurável para tradução automática.
Adicionada verificação de formato Lua.
Ignore format strings in the Palavras consecutivas duplicadas check.
Allow uploading screenshot from a translate page.
Added forced file synchronization to the repository maintenance.
Fixed automatic suggestions for languages with a longer code.
Melhorado desempenho ao adicionar novos textos.
Várias correções de erros em verificações de qualidade.
Several performance improvements.
Adicionada integração com Descubra Weblate.
Fixed checks behavior with read-only strings.
Weblate 4.5.1¶
Released on March 5th 2021.
Fixed editing of glossary flags in some corner cases.
Extend metrics usage to improve performance of several pages.
Store correct source language in TMX files.
Melhor manuseio para envios de PO monolíngues usando API.
Improved alerts behavior on glossary components.
Melhoradas verificações de ligações Markdown.
Indicate glossary and source language in breadcrumbs.
Listagem paginada de componentes de grandes projetos.
Aprimorado o desempenho da remoção de tradução, componente ou projeto.
Improved bulk edit performance.
Fixed preserving «Needs editing» and «Approved» states for ODF files.
Interface melhorada para personalização de descarregas de ficheiros de tradução
Weblate 4.5¶
Released on February 19th 2021.
Suporte adicionado para
lua-format
usado em gettext PO.Adicionado suporte para compartilhar componente entre projetos.
Fixed multiple unnamed variables check behavior with multiple format flags.
Dropped mailing list field on the project in favor of generic instructions for translators.
Adicionada extensão de geração de pseudolocalidade.
Suporte adicionado para ficheiros TermBase eXchange.
Adicionado suporte para definir manualmente variantes de cadeia a usar um marcador.
Aprimorado o desempenho de verificações de consistência.
Aprimorado o desempenho de memória de tradução para textos longos.
Adicionado suporte para pesquisar em explicações.
Strings can now be added and removed in bilingual formats as well.
Estende a lista de idiomas suportados na tradução automática do Amazon Translate.
Ativa automaticamente verificações de MessageFormat para Properties do Java.
Adicionado um novo método de envio para adicionar novos textos para uma tradução.
Adicionada uma interface simples para navegação das traduções.
Glossaries are now stored as regular components.
Dropped specific API for glossaries as component API is used now.
Added simplified interface to toggle some of the flags.
Adicionado suporte para termos não traduzidos ou proibidos no glossário.
Adicionado suporte para definir terminologia num glossário.
Moved text direction toggle to get more space for the visual keyboard.
Adicionada a opção de observar automaticamente os projetos para os quais o utilizador contribuiu.
Added check whether translation matches the glossary.
Adicionado suporte para personalizar a cor de texto de navegação.
Weblate 4.4.1¶
Released on January 13th 2021.
Fixed reverting plural changes.
Fixed displaying help for project settings.
Administração aprimorada de utilizadores.
Melhorado o tratamento de contexto em ficheiros PO monolíngues.
Fixed cleanup add-on behavior with HTML, ODF, IDML and Windows RC formats.
Corrigida a análise do local de ficheiros CSV.
Use content compression for file downloads.
Improved user experience on importing from ZIP file.
Melhorada a deteção do formato de ficheiros para envios.
Avoid duplicate pull requests on Pagure.
Melhorado o desempenho ao exibir traduções fantasmas.
Reimplemented translation editor to use native browser textarea.
Corrigida a quebra da extensão de limpeza ao adicionar novos textos.
Added API for add-ons.
Weblate 4.4¶
Released on December 15th 2020.
Melhorada a validação ao criar um componente.
Weblate now requires Django 3.1.
Adicionado suporte para personalização de aparência na interface de gestão.
Fixed read-only state handling in bulk edit.
Integração com CodeMirror melhorada.
Adicionada extensão para remover textos vazios de ficheiros de tradução.
O editor CodeMirror é agora usado para traduções.
Syntax highlighting in translation editor for XML, HTML, Markdown and reStructuredText.
Realce de objetos colocáveis no editor de tradução.
Improved support for non-standard language codes.
Added alert when using ambiguous language codes.
The user is now presented with a filtered list of languages when adding a new translation.
Extended search capabilities for changes in history.
Improved billing detail pages and libre hosting workflow.
Estendida a API de estatísticas de tradução.
Melhorada a guia «outras traduções» ao traduzir.
Added tasks API.
Melhorado o desempenho do envio de ficheiros.
Improved display of user defined special characters.
Melhorado o desempenho da tradução automática.
Several minor improvements in the user interface.
Improved naming of ZIP downloads.
Adicionada a opção para obter notificações de projetos não observados.
Weblate 4.3.2¶
Released on November 4th 2020.
Fixed crash on certain component filemasks.
Melhorada a precisão de verificação de palavras consecutivas duplicadas.
Suporte adicional para solicitações de Pagure.
Melhoradas as mensagens de erro para registos com falha.
Reverted rendering developer comments as Markdown.
Simplified setup of Git repositories with different default branch than «master».
Newly created internal repositories now use main as the default branch.
Reduced false positives rate of unchanged translation while translating reStructuredText.
Fixed CodeMirror display issues in some situations.
Renamed Template group to «Sources» to clarify its meaning.
Fixed GitLab pull requests on repositories with longer paths.
Weblate 4.3.1¶
Released on October 21st 2020.
Melhorada o desempenho da tradução automática.
Expiração da sessão para utilizadores autenticados corrigida.
Suporte para ocultar informações da versão adicionado.
Improve hooks compatibility with Bitbucket Server.
Melhorado o desempenho de atualizações de memória de tradução.
Reduced memory usage.
Melhorado o desempenho da visão Matriz.
Adicionada confirmação antes de remover um utilizador de um projeto.
Weblate 4.3¶
Released on October 15th 2020.
Include user stats in the API.
Fixed component ordering on paginated pages.
Define source language for a glossary.
Rewritten support for GitHub and GitLab pull requests.
Contagens de estatísticas corrigidas após a remoção da sugestão.
Perfil do utilizador público estendido.
Fixed configuration of enforced checks.
Improve documentation about built-in backups.
Moved source language attribute from project to a component.
Adicionar a verificação de formatação Vue I18n.
Generic placeholders check now supports regular expressions.
Melhorado o visual do modo Matriz.
A maquinaria é agora chamada sugestões automáticas.
Added support for interacting with multiple GitLab or GitHub instances.
Extended API to cover project updates, unit updates and removals and glossaries.
Unit API now properly handles plural strings.
Component creation can now handle ZIP file or document upload.
Consolidated API response status codes.
Suporte a Markdown no acordo de colaborador.
Rastreamento de cadeias de origem melhorado.
Improved JSON, YAML and CSV formats compatibility.
Suporte adicional para remover cadeias.
Improved performance of file downloads.
Improved repository management view.
Automatically enable java-format for Android.
Suporte adicional para capturas de ecrã localizadas.
Suporte adicional para Python 3.9.
Fixed translating HTML files under certain conditions.
Weblate 4.2.2¶
Released on September 2nd 2020.
Correspondência de cadeias fonte para formatos JSON corrigido.
Fixed login redirect for some authentication configurations.
Autenticação LDAP corrigida com sincronização de grupo.
Falha na comunicação do progresso da tradução automática corrigida.
Fixed Git commit squashing with trailers enabled.
Fixed creating local VCS components using API.
Weblate 4.2.1¶
Released on August 21st 2020.
Fixed saving plurals for some locales in Android resources.
Corrigido o travamento na limpeza da extensão para alguns ficheiros XLIFF.
Allow setting up localization CDN in Docker image.
Weblate 4.2¶
Released on August 18th 2020.
Improved user pages and added listing of users.
Dropped support for migrating from 3.x releases, migrate through 4.1 or 4.0.
Added exports into several monolingual formats.
Improved activity charts.
Number of displayed nearby strings can be configured.
Suporte adicionado para bloquear componentes com erros no repositório.
Simplified main navigation (replaced buttons with icons).
Improved language code handling in Google Translate integration.
The Git squash add-on can generate
Co-authored-by:
trailers.Improved query search parser.
Improved user feedback from format strings checks.
Improved performance of bulk state changes.
Added compatibility redirects after project or component renaming.
Added notifications for strings approval, component locking and license change.
Added support for ModernMT.
Allow to avoid overwriting approved translations on file upload.
Dropped support for some compatibility URL redirects.
Verificação para literais de modelo de ECMAScript adicionada.
A opção para observar um componente foi adicionada.
Removed leading dot from JSON unit keys.
Fila separada de Celery para memória de tradução foi removida.
Permitir a tradução de todos os componentes de uma só vez.
Allow to configure
Content-Security-Policy
HTTP headers.Added support for aliasing languages at project level.
Nova extensão para ajudar com localização HTML e JavaScript, veja CDN de localização JavaScript.
The Weblate domain is now configured in the settings, see
SITE_DOMAIN
.Adicionar suporte para a pesquisa por componente e projeto.
Weblate 4.1.1¶
Released on June 19th 2020.
Fixed changing autofix or add-ons configuration in Docker.
Fixed possible crash in «About» page.
Improved installation of byte-compiled locale files.
Fixed adding words to glossary.
Corrigidos os atalhos de teclado para maquinaria.
Removed debugging output causing discarding log events in some setups.
Fixed lock indication on project listing.
Fixed listing GPG keys in some setups.
Added option for which DeepL API version to use.
Added support for acting as SAML Service Provider, see Autenticação por SAML.
Weblate 4.1¶
Released on June 15th 2020.
Added support for creating new translations with included country code.
Added support for searching source strings with screenshot.
Extended info available in the stats insights.
Improved search editing on «Translate» pages.
Improve handling of concurrent repository updates.
Include source language in project creation form.
Include changes count in credits.
Fixed UI language selection in some cases.
Allow to whitelist registration methods with registrations closed.
Improved lookup of related terms in glossary.
Improved translation memory matches.
Group same machinery results.
Add direct link to edit screenshot from translate page.
Improved removal confirmation dialog.
Include templates in ZIP download.
Add support for Markdown and notification configuration in announcements.
Extended details in check listings.
Added support for new file formats: Cadeias de PHP Laravel, Ficheiro HTML, Formato OpenDocument, Formato IDML, Ficheiros RC do Windows, Traduções de INI, Traduções Inno Setup INI, Propriedades GWT, Ficheiros JSON go-i18n, Ficheiro ARB.
Consistently use dismissed as state of dismissed checks.
Adiciona suporte para configurar extensões predefinidas para ativar.
Corrigido o atalho de teclado do editor para dispensar verificações.
Improved machine translation of strings with placeholders.
Show ghost translation for user languages to ease starting them.
Improved language code parsing.
Show translations in user language first in the list.
Renamed shapings to more generic name variants.
Added new quality checks: Várias variáveis sem nome, Não traduzido há muito tempo, Palavras consecutivas duplicadas.
Reintroduced support for wiping translation memory.
Fixed option to ignore source checks.
Added support for configuring different branch for pushing changes.
API now reports rate limiting status in the HTTP headers.
Added support for Google Translate V3 API (Advanced).
Added ability to restrict access on component level.
Added support for whitespace and other special chars in translation flags, see Personalizando comportamento a usar marcadores.
Always show rendered text check if enabled.
API now supports filtering of changes.
Added support for sharing glossaries between projects.
Weblate 4.0.4¶
Released on May 7th 2020.
Fixed testsuite execution on some Python 3.8 environments.
Typo fixes in the documentation.
Fixed creating components using API in some cases.
Fixed JavaScript errors breaking mobile navigation.
Fixed crash on displaying some checks.
Fixed screenshots listing.
Fixed monthly digest notifications.
Fixed intermediate translation behavior with units non existing in translation.
Weblate 4.0.3¶
Released on May 2nd 2020.
Fixed possible crash in reports.
User mentions in comments are now case insensitive.
Fixed PostgreSQL migration for non superusers.
Fixed changing the repository URL while creating component.
Fixed crash when upstream repository is gone.
Weblate 4.0.2¶
Released on April 27th 2020.
Improved performance of translation stats.
Improved performance of changing labels.
Improved bulk edit performance.
Melhoria do desempenho da memória de tradução.
Fixed possible crash on component deletion.
Fixed displaying of translation changes in some corner cases.
Improved warning about too long celery queue.
Fixed possible false positives in the consistency check.
Fixed deadlock when changing linked component repository.
Included edit distance in changes listing and CSV and reports.
Avoid false positives of punctuation spacing check for Canadian French.
Fixed XLIFF export with placeholders.
Fixed false positive with zero width check.
Improved reporting of configuration errors.
Fixed bilingual source upload.
Automatically detect supported languages for DeepL machine translation.
Fixed progress bar display in some corner cases.
Fixed some checks triggering on non translated strings.
Weblate 4.0¶
Released on April 16th 2020.
Weblate now requires Python 3.6 or newer.
Added management overview of component alerts.
Added component alert for broken repository browser URLs.
Improved sign in and registration pages.
Project access control and workflow configuration integrated to project settings.
Added check and highlighter for i18next interpolation and nesting.
Added check and highlighter for percent placeholders.
Mostrar falhas nas verificações de sugestões.
Record source string changes in history.
Upgraded Microsoft Translator to version 3 API.
Reimplemented translation memory backend.
Added support for several
is:
lookups in Pesquisando.Allow to make Tradução inalterada avoid internal blacklist.
Improved comments extraction from monolingual po files.
Renamed whiteboard messages to announcements.
Fixed occasional problems with registration mails.
Improved LINGUAS update add-on to handle more syntax variants.
Fixed editing monolingual XLIFF source file.
Added support for exact matching in Pesquisando.
Extended API to cover screenshots, users, groups, componentlists and extended creating projects.
Add support for source upload on bilingual translations.
Added support for intermediate language from developers.
Added support for source strings review.
Extended download options for platform wide translation memory.
Weblate 3.x series¶
Weblate 3.11.3¶
Released on March 11th 2020.
Fixed searching for fields with certain priority.
Fixed predefined query for recently added strings.
Fixed searching returning duplicate matches.
Fixed notifications rendering in Gmail.
Fixed reverting changes from the history.
Added links to events in digest notifications.
Fixed email for account removal confirmation.
Added support for Slack authentication in Docker container.
Avoid sending notifications for not subscribed languages.
Include Celery queues in performance overview.
Corrigidos os links da documentação para extensões.
Reduced false negatives for unchanged translation check.
Raised bleach dependency to address CVE-2020-6802.
Fixed listing project level changes in history.
Fixed stats invalidation in some corner cases.
Fixed searching for certain string states.
Improved format string checks behavior on missing percent.
Fixed authentication using some third party providers.
Weblate 3.11.2¶
Released on February 22nd 2020.
Fixed rendering of suggestions.
Fixed some strings wrongly reported as having no words.
Weblate 3.11.1¶
Released on February 20th 2020.
Documented Celery setup changes.
Improved filename validation on component creation.
Fixed minimal versions of some dependencies.
Fixed adding groups with certain Django versions.
Fixed manual pushing to upstream repository.
Improved glossary matching.
Weblate 3.11¶
Released on February 17th 2020.
Allow using VCS push URL during component creation via API.
Rendered width check now shows image with the render.
Fixed links in notifications e-mails.
Improved look of plaintext e-mails.
Display ignored checks and allow to make them active again.
Display nearby keys on monolingual translations.
Suporte adicionado para agrupar formas de cadeias.
Recommend upgrade to new Weblate versions in the system checks.
Provide more detailed analysis for duplicate language alert.
Include more detailed license info on the project pages.
Automatically unshallow local copies if needed.
Fixed download of strings needing action.
New alert to warn about using the same filemask twice.
Improve XML placeables extraction.
The
SINGLE_PROJECT
can now enforce redirection to chosen project.Added option to resolve comments.
Added bulk editing of flags.
Added support for Etiquetas de cadeia.
Adicionada extensão de edição em massa.
Added option for Forçar verificações.
Increased default validity of confirmation links.
Improved Matomo integration.
Fixed Foi traduzido to correctly handle source string change.
Extended automatic updates configuration by
AUTO_UPDATE
.Extensões de LINGUAS agora fazem sincronização completa de tradução no Weblate.
Weblate 3.10.2¶
Released on January 18th 2020.
Add lock indication to projects.
Fixed CSS bug causing flickering in some web browsers.
Fixed searching on systems with non-English locales.
Improved repository matching for GitHub and Bitbucket hooks.
Fixed data migration on some Python 2.7 installations.
Allow configuration of Git shallow cloning.
Improved background notification processing.
Fixed broken form submission when navigating back in web browser.
New add-on to configure YAML formatting.
Fixed same plurals check to not fire on single plural form languages.
Fixed regex search on some fields.
Weblate 3.10.1¶
Released on January 9th 2020.
Extended API with translation creation.
Fixed several corner cases in data migrations.
Compatibility with Django 3.0.
Aprimorado o desempenho da limpeza de dados.
Added support for customizable security.txt.
Improved breadcrumbs in changelog.
Improved translations listing on dashboard.
Improved HTTP responses for webhooks.
Added support for GitLab merge requests in Docker container.
Weblate 3.10¶
Released on December 20th 2019.
Interface de utilizador da aplicação melhorada.
Added doublespace check.
Fixed creating new languages.
Avoid sending auditlog notifications to deleted e-mails.
Added support for read only strings.
Added support for Markdown in comments.
Allow placing translation instruction text in project info.
Add copy to clipboard for secondary languages.
Improved support for Mercurial.
Improved Git repository fetching performance.
Add search lookup for age of string.
Show source language for all translations.
Show context for nearby strings.
Added support for notifications on repository operations.
Improved translation listings.
Extended search capabilities.
Added support for automatic translation strings marked for editing.
Avoid sending duplicate notifications for linked component alerts.
Improve default merge request message.
Better indicate string state in Zen mode.
Added support for more languages in Yandex Translate.
Improved look of notification e-mails.
Provide choice for translation license.
Weblate 3.9.1¶
Released on October 28th 2019.
Remove some unneeded files from backups.
Fixed potential crash in reports.
Fixed cross database migration failure.
Added support for force pushing Git repositories.
Reduced risk of registration token invalidation.
Fixed account removal hitting rate limiter.
Added search based on priority.
Fixed possible crash on adding strings to JSON file.
Safe HTML check and fixup now honor source string markup.
Avoid sending notifications to invited and deleted users.
Fix SSL connection to redis in Celery in Docker container.
Weblate 3.9¶
Released on October 15th 2019.
Include Weblate metadata in downloaded files.
Improved UI for failing checks.
Indicate missing strings in format checks.
Separate check for French punctuation spacing.
Add support for fixing some of quality checks errors.
Add separate permission to create new projects.
Extend stats for char counts.
Improve support for Java style language codes.
Added new generic check for placeholders.
Added support for WebExtension JSON placeholders.
Added support for flat XML format.
Extended API with project, component and translation removal and creation.
Added support for Gitea and Gitee webhooks.
Added new custom regex based check.
Allow to configure contributing to shared translation memory.
Added ZIP download for more translation files.
Make XLIFF standard compliant parsing of maxwidth and font.
Added new check and fixer for safe HTML markup for translating web applications.
Add component alert on unsupported configuration.
Adicionada uma extensão de tradução automática para inicializar traduções.
Extend automatic translation to add suggestions.
Display add-on parameters on overview.
Sentry is now supported through modern Sentry SDK instead of Raven.
Changed example settings to be better fit for production environment.
Added automated backups using BorgBackup.
Split cleanup add-on for RESX to avoid unwanted file updates.
Added advanced search capabilities.
Allow users to download their own reports.
Added localization guide to help configuring components.
Added support for GitLab merge requests.
Improved display of repository status.
Perform automated translation in the background.
Weblate 3.8¶
Released on August 15th 2019.
Added support for simplified creating of similar components.
Added support for parsing translation flags from the XML based file formats.
Log exceptions into Celery log.
Melhoria no desempenho de extensões com escopo de repositório.
Improved look of notification e-mails.
Fixed password reset behavior.
Improved performance on most of translation pages.
Fixed listing of languages not known to Weblate.
Adiciona suporte para clonar extensões para componentes descobertos.
Add support for replacing file content with uploaded.
Add support for translating non VCS based content.
Added OpenGraph widget image to use on social networks.
Added support for animated screenshots.
Improved handling of monolingual XLIFF files.
Avoid sending multiple notifications for single event.
Add support for filtering changes.
Extended predefined periods for reporting.
Added webhook support for Azure Repos.
New opt-in notifications on pending suggestions or untranslated strings.
Add one click unsubscribe link to notification e-mails.
Fixed false positives with Has been translated check.
New management interface for admins.
String priority can now be specified using flags.
Added language management views.
Add checks for Qt library and Ruby format strings.
Added configuration to better fit single project installations.
Notify about new string on source string change on monolingual translations.
Added separate view for translation memory with search capability.
Weblate 3.7.1¶
Released on June 28th 2019.
Documentation updates.
Fixed some requirements constraints.
Updated language database.
Localization updates.
Various user interface tweaks.
Improved handling of unsupported but discovered translation files.
More verbosely report missing file format requirements.
Weblate 3.7¶
Released on June 21st 2019.
Added separate Celery queue for notifications.
Use consistent look with application for API browsing.
Include approved stats in the reports.
Report progress when updating translation component.
Allow to abort running background component update.
Extend template language for filename manipulations.
Use templates for editor link and repository browser URL.
Indicate max length and current characters count when editing translation.
Improved handling of abbreviations in unchanged translation check.
Refreshed landing page for new contributors.
Adiciona suporte para configurar extensões de msgmerge.
Delay opening SMTP connection when sending notifications.
Improved error logging.
Allow custom location in MO generating add-on.
Added add-ons to cleanup old suggestions or comments.
Added option to enable horizontal mode in the Zen editor.
Improved import performance with many linked components.
Fixed examples installation in some cases.
Improved rendering of alerts in changes.
Added new horizontal stats widget.
Improved format strings check on plurals.
Added font management tool.
New check for rendered text dimensions.
Added support for subtitle formats.
Include overall completion stats for languages.
Added reporting at project and global scope.
Improved user interface when showing translation status.
New Weblate logo and color scheme.
New look of bitmap badges.
Weblate 3.6.1¶
Released on April 26th 2019.
Improved handling of monolingual XLIFF files.
Fixed digest notifications in some corner cases.
Fixed add-on script error alert.
Fixed generating MO file for monolingual PO files.
Fixed display of uninstalled checks.
Indicate administered projects on project listing.
Allow update to recover from missing VCS repository.
Weblate 3.6¶
Released on April 20th 2019.
Add support for downloading user data.
Add-ons are now automatically triggered upon installation.
Improved instructions for resolving merge conflicts.
Cleanup add-on is now compatible with app store metadata translations.
Configurable language code syntax when adding new translations.
Warn about using Python 2 with planned termination of support in April 2020.
Extract special characters from the source string for visual keyboard.
Extended contributor stats to reflect both source and target counts.
Admins and consistency add-ons can now add translations even if disabled for users.
Fixed description of toggle disabling
Language-Team
header manipulation.Notify users mentioned in comments.
Removed file format autodetection from component setup.
Fixed generating MO file for monolingual PO files.
Added digest notifications.
Added support for muting component notifications.
Added notifications for new alerts, whiteboard messages or components.
Notifications for administered projects can now be configured.
Improved handling of three letter language codes.
Weblate 3.5.1¶
Released on March 10th 2019.
Fixed Celery systemd unit example.
Fixed notifications from HTTP repositories with login.
Fixed race condition in editing source string for monolingual translations.
Include output of failed add-on execution in the logs.
Improved validation of choices for adding new language.
Allow to edit file format in component settings.
Update installation instructions to prefer Python 3.
Performance and consistency improvements for loading translations.
Make Microsoft Terminology service compatible with current Zeep releases.
Localization updates.
Weblate 3.5¶
Released on March 3rd 2019.
Improved performance of built-in translation memory.
Added interface to manage global translation memory.
Improved alerting on bad component state.
Added user interface to manage whiteboard messages.
Add-on commit message now can be configured.
Reduce number of commits when updating upstream repository.
Fixed possible metadata loss when moving component between projects.
Improved navigation in the Zen mode.
Added several new quality checks (Markdown related and URL).
Added support for app store metadata files.
Added support for toggling GitHub or Gerrit integration.
Added check for Kashida letters.
Added option to squash commits based on authors.
Improved support for XLSX file format.
Compatibility with Tesseract 4.0.
Billing add-on now removes projects for unpaid billings after 45 days.
Weblate 3.4¶
Released on January 22nd 2019.
Added support for XLIFF placeholders.
Celery can now utilize multiple task queues.
Added support for renaming and moving projects and components.
Include characters counts in reports.
Added guided adding of translation components with automatic detection of translation files.
Customizable merge commit messages for Git.
Added visual indication of component alerts in navigation.
Improved performance of loading translation files.
Nova extensão para fazer squash de commits antes de fazer push.
Improved displaying of translation changes.
Changed default merge style to rebase and made that configurable.
Better handle private use subtags in language code.
Improved performance of fulltext index updates.
Extended file upload API to support more parameters.
Weblate 3.3¶
Released on November 30th 2018.
Added support for component and project removal.
Improved performance for some monolingual translations.
Added translation component alerts to highlight problems with a translation.
Expose XLIFF string resname as context when available.
Added support for XLIFF states.
Added check for non writable files in DATA_DIR.
Improved CSV export for changes.
Weblate 3.2.2¶
Released on October 20th 2018.
Remove no longer needed Babel dependency.
Updated language definitions.
Improve documentation for add-ons, LDAP and Celery.
Fixed enabling new dos-eol and auto-java-messageformat flags.
Fixed running setup.py test from PyPI package.
Improved plurals handling.
Fixed translation upload API failure in some corner cases.
Fixed updating Git configuration in case it was changed manually.
Weblate 3.2.1¶
Released on October 10th 2018.
Document dependency on backports.csv on Python 2.7.
Fix running tests under root.
Improved error handling in gitexport module.
Fixed progress reporting for newly added languages.
Correctly report Celery worker errors to Sentry.
Fixed creating new translations with Qt Linguist.
Fixed occasional fulltext index update failures.
Improved validation when creating new components.
Added support for cleanup of old suggestions.
Weblate 3.2¶
Released on October 6th 2018.
Add install_addon management command for automated add-on installation.
Allow more fine grained ratelimit settings.
Added support for export and import of Excel files.
Improve component cleanup in case of multiple component discovery add-ons.
Rewritten Microsoft Terminology machine translation backend.
Weblate now uses Celery to offload some processing.
Improved search capabilities and added regular expression search.
Added support for Youdao Zhiyun API machine translation.
Added support for Baidu API machine translation.
Integrated maintenance and cleanup tasks using Celery.
Improved performance of loading translations by almost 25%.
Removed support for merging headers on upload.
Removed support for custom commit messages.
Configurable editing mode (zen/full).
Added support for error reporting to Sentry.
Added support for automated daily update of repositories.
Added support for creating projects and components by users.
Memória de tradução embutida agora armazena automaticamente as traduções feitas.
Users and projects can import their existing translation memories.
Better management of related strings for screenshots.
Added support for checking Java MessageFormat.
See 3.2 milestone on GitHub for detailed list of addressed issues.
Weblate 3.1¶
Released on July 27th 2018.
Upgrades from older version than 3.0.1 are not supported.
Allow to override default commit messages from settings.
Improve webhooks compatibility with self hosted environments.
Added support for Amazon Translate.
Compatibility with Django 2.1.
Django system checks are now used to diagnose problems with installation.
Removed support for soon shutdown libravatar service.
Nova extensão para marcar traduções não alteradas como a necessitar de edição.
Add support for jumping to specific location while translating.
Downloaded translations can now be customized.
Improved calculation of string similarity in translation memory matches.
Added support by signing Git commits by GnuPG.
Weblate 3.0.1¶
Released on June 10th 2018.
Fixed possible migration issue from 2.20.
Localization updates.
Removed obsolete hook examples.
Improved caching documentation.
Fixed displaying of admin documentation.
Improved handling of long language names.
Weblate 3.0¶
Released on June 1st 2018.
Rewritten access control.
Several code cleanups that lead to moved and renamed modules.
Nova extensão para descoberta automática de componentes.
The import_project management command has now slightly different parameters.
Added basic support for Windows RC files.
New add-on to store contributor names in PO file headers.
The per component hook scripts are removed, use add-ons instead.
Add support for collecting contributor agreements.
Access control changes are now tracked in history.
Nova extensão para garantir que todos os componentes num projeto tenham as mesmas traduções.
Support for more variables in commit message templates.
Add support for providing additional textual context.
Weblate 2.x series¶
Weblate 2.20¶
Released on April 4th 2018.
Improved speed of cloning subversion repositories.
Changed repository locking to use third party library.
Added support for downloading only strings needing action.
Added support for searching in several languages at once.
New add-on to configure gettext output wrapping.
New add-on to configure JSON formatting.
Added support for authentication in API using RFC 6750 compatible Bearer authentication.
Added support for automatic translation using machine translation services.
Added support for HTML markup in whiteboard messages.
Added support for mass changing state of strings.
Translate-toolkit at least 2.3.0 is now required, older versions are no longer supported.
Adicionada memória de tradução embutida.
Added componentlists overview to dashboard and per component list overview pages.
Added support for DeepL machine translation service.
Machine translation results are now cached inside Weblate.
Adicionado suporte para reordenar alterações de commits feitos.
Weblate 2.19.1¶
Released on February 20th 2018.
Fixed migration issue on upgrade from 2.18.
Improved file upload API validation.
Weblate 2.19¶
Released on February 15th 2018.
Fixed imports across some file formats.
Display human friendly browser information in audit log.
Added TMX exporter for files.
Various performance improvements for loading translation files.
Added option to disable access management in Weblate in favor of Django one.
Improved glossary lookup speed for large strings.
Compatibility with django_auth_ldap 1.3.0.
Configuration errors are now stored and reported persistently.
Honor ignore flags in whitespace autofixer.
Improved compatibility with some Subversion setups.
Melhorado o serviço embutido de tradução de máquina.
Added support for SAP Translation Hub service.
Added support for Microsoft Terminology service.
Removed support for advertisement in notification e-mails.
Melhorado o relatório de progresso de tradução a nível de idioma.
Improved support for different plural formulas.
Added support for Subversion repositories not using stdlayout.
Adicionadas extensões para personalizar fluxos de trabalho de tradução.
Weblate 2.18¶
Released on December 15th 2017.
Extended contributor stats.
Improved configuration of special characters virtual keyboard.
Added support for DTD file format.
Alterados os atalhos do teclado para reduzir a chance de colisão com os do navegador/sistema.
Improved support for approved flag in XLIFF files.
Added support for not wrapping long strings in gettext PO files.
Added button to copy permalink for current translation.
Dropped support for Django 1.10 and added support for Django 2.0.
Removed locking of translations while translating.
Added support for adding new strings to monolingual translations.
Added support for translation workflows with dedicated reviewers.
Weblate 2.17.1¶
Released on October 13th 2017.
Fixed running testsuite in some specific situations.
Locales updates.
Weblate 2.17¶
Released on October 13th 2017.
Weblate by default does shallow Git clones now.
Improved performance when updating large translation files.
Added support for blocking certain e-mails from registration.
Users can now delete their own comments.
Added preview step to search and replace feature.
Client side persistence of settings in search and upload forms.
Extended search capabilities.
More fine grained per project ACL configuration.
Default value of BASE_DIR has been changed.
Added two step account removal to prevent accidental removal.
Project access control settings is now editable.
Added optional spam protection for suggestions using Akismet.
Weblate 2.16¶
Released on August 11th 2017.
Various performance improvements.
Added support for nested JSON format.
Added support for WebExtension JSON format.
Corrigida a autenticação com exportador git.
Improved CSV import in certain situations.
Improved look of Other translations widget.
The max-length checks is now enforcing length of text in form.
Make the commit_pending age configurable per component.
Various user interface cleanups.
Fixed component/project/site wide search for translations.
Weblate 2.15¶
Released on June 30th 2017.
Show more related translations in other translations.
Add option to see translations of current string to other languages.
Use 4 plural forms for Lithuanian by default.
Fixed upload for monolingual files of different format.
Improved error messages on failed authentication.
Keep page state when removing word from glossary.
Added direct link to edit secondary language translation.
Added Perl format quality check.
Added support for rejecting reused passwords.
Extended toolbar for editing RTL languages.
Weblate 2.14.1¶
Released on May 24th 2017.
Fixed possible error when paginating search results.
Fixed migrations from older versions in some corner cases.
Fixed possible CSRF on project watch and unwatch.
The password reset no longer authenticates user.
Fixed possible CAPTCHA bypass on forgotten password.
Weblate 2.14¶
Released on May 17th 2017.
Add glossary entries using AJAX.
The logout now uses POST to avoid CSRF.
The API key token reset now uses POST to avoid CSRF.
Weblate sets Content-Security-Policy by default.
The local editor URL is validated to avoid self-XSS.
The password is now validated against common flaws by default.
Notify users about important activity with their account such as password change.
The CSV exports now escape potential formulas.
Various minor improvements in security.
The authentication attempts are now rate limited.
Suggestion content is stored in the history.
Store important account activity in audit log.
Ask for password confirmation when removing account or adding new associations.
Show time when suggestion has been made.
There is new quality check for trailing semicolon.
Ensure that search links can be shared.
Included source string information and screenshots in the API.
Allow to overwrite translations through API upload.
Weblate 2.13.1¶
Released on Apr 12th 2017.
Fixed listing of managed projects in profile.
Fixed migration issue where some permissions were missing.
Fixed listing of current file format in translation download.
Return HTTP 404 when trying to access project where user lacks privileges.
Weblate 2.13¶
Released on Apr 12th 2017.
Fixed quality checks on translation templates.
Added quality check to trigger on losing translation.
Add option to view pending suggestions from user.
Add option to automatically build component lists.
Default dashboard for unauthenticated users can be configured.
Add option to browse 25 random strings for review.
History now indicates string change.
Better error reporting when adding new translation.
Added per language search within project.
Group ACLs can now be limited to certain permissions.
The per project ALCs are now implemented using Group ACL.
Added more fine grained privileges control.
Various minor UI improvements.
Weblate 2.12¶
Released on Mar 3rd 2017.
Improved admin interface for groups.
Added support for Yandex Translate API.
Improved speed of site wide search.
Added project and component wide search.
Added project and component wide search and replace.
Improved rendering of inconsistent translations.
Added support for opening source files in local editor.
Added support for configuring visual keyboard with special characters.
Improved screenshot management with OCR support for matching source strings.
Default commit message now includes translation information and URL.
Added support for Joomla translation format.
Improved reliability of import across file formats.
Weblate 2.11¶
Released on Jan 31st 2017.
Include language detailed information on language page.
Mercurial backend improvements.
Added option to specify translation component priority.
More consistent usage of Group ACL even with less used permissions.
Added WL_BRANCH variable to hook scripts.
Improved developer documentation.
Melhor compatibilidade com várias versões git na extensão do exportador git.
Incluído por projecto e estatísticas de componentes.
Added language code mapping for better support of Microsoft Translate API.
Moved fulltext cleanup to background job to make translation removal faster.
Fixed displaying of plural source for languages with single plural form.
Improved error handling in import_project.
Various performance improvements.
Weblate 2.10.1¶
Released on Jan 20th 2017.
Do not leak account existence on password reset form (CVE-2017-5537).
Weblate 2.10¶
Released on Dec 15th 2016.
Added quality check to check whether plurals are translated differently.
Fixed GitHub hooks for repositories with authentication.
Adicionado módulo opcional de exportador git.
Support for Microsoft Cognitive Services Translator API.
Simplified project and component user interface.
Added automatic fix to remove control characters.
Added per language overview to project.
Added support for CSV export.
Added CSV download for stats.
Added matrix view for quick overview of all translations.
Added basic API for changes and strings.
Added support for Apertium APy server for machine translations.
Weblate 2.9¶
Released on Nov 4th 2016.
Extended parameters for createadmin management command.
Extended import_json to be able to handle with existing components.
Added support for YAML files.
Project owners can now configure translation component and project details.
Use «Watched» instead of «Subscribed» projects.
Projects can be watched directly from project page.
Added multi language status widget.
Highlight secondary language if not showing source.
Record suggestion deletion in history.
Improved UX of languages selection in profile.
Fixed showing whiteboard messages for component.
Keep preferences tab selected after saving.
Show source string comment more prominently.
Automatically install Gettext PO merge driver for Git repositories.
Added search and replace feature.
Added support for uploading visual context (screenshots) for translations.
Weblate 2.8¶
Released on Aug 31st 2016.
Documentation improvements.
Translations.
Updated bundled javascript libraries.
Added list_translators management command.
Django 1.8 is no longer supported.
Fixed compatibility with Django 1.10.
Added Subversion support.
Separated XML validity check from XML mismatched tags.
Fixed API to honor HIDE_REPO_CREDENTIALS settings.
Show source change in Zen mode.
Alt+PageUp/PageDown/Home/End now works in Zen mode as well.
Add tooltip showing exact time of changes.
Add option to select filters and search from translation page.
Added UI for translation removal.
Improved behavior when inserting placeables.
Fixed auto locking issues in Zen mode.
Weblate 2.7¶
Released on Jul 10th 2016.
Removida a tradução automática da web do Google.
Improved commit message when adding translation.
Fixed Google Translate API for Hebrew language.
Compatibility with Mercurial 3.8.
Added import_json management command.
Correct ordering of listed translations.
Show full suggestion text, not only a diff.
Extend API (detailed repository status, statistics, …).
Testsuite no longer requires network access to test repositories.
Weblate 2.6¶
Released on Apr 28th 2016.
Fixed validation of components with language filter.
Improved support for XLIFF files.
Fixed machine translation for non English sources.
Added REST API.
Django 1.10 compatibility.
Added categories to whiteboard messages.
Weblate 2.5¶
Released on Mar 10th 2016.
Fixed automatic translation for project owners.
Improved performance of commit and push operations.
New management command to add suggestions from command line.
Added support for merging comments on file upload.
Added support for some GNU extensions to C printf format.
Documentation improvements.
Added support for generating translator credits.
Added support for generating contributor stats.
Site wide search can search only in one language.
Improve quality checks for Armenian.
Support for starting translation components without existing translations.
Support for adding new translations in Qt TS.
Improved support for translating PHP files.
Performance improvements for quality checks.
Pesquisa corrigida para todo o site por verificações com falha.
Added option to specify source language.
Improved support for XLIFF files.
Extended list of options for import_project.
Improved targeting for whiteboard messages.
Support for automatic translation across projects.
Optimized fulltext search index.
Added management command for auto translation.
Added placeables highlighting.
Adicionados atalhos de teclado para os objetos colocáveis, verificações e traduções automáticas.
Improved translation locking.
Added quality check for AngularJS interpolation.
Added extensive group based ACLs.
Clarified terminology on strings needing edit (formerly fuzzy).
Clarified terminology on strings needing action and not translated strings.
Support for Python 3.
Dropped support for Django 1.7.
Dropped dependency on msginit for creating new gettext PO files.
Added configurable dashboard views.
Improved notifications on parse errors.
Added option to import components with duplicate name to import_project.
Improved support for translating PHP files.
Added XLIFF export for dictionary.
Added XLIFF and gettext PO export for all translations.
Documentation improvements.
Added support for configurable automatic group assignments.
Improved adding of new translations.
Weblate 2.4¶
Released on Sep 20th 2015.
Improved support for PHP files.
Ability to add ACL to anonymous user.
Improved configurability of import_project command.
Added CSV dump of history.
Avoid copy/paste errors with whitespace characters.
Added support for Bitbucket webhooks.
Tighter control on fuzzy strings on translation upload.
Several URLs have changed, you might have to update your bookmarks.
Hook scripts are executed with VCS root as current directory.
Hook scripts are executed with environment variables describing current component.
Add management command to optimize fulltext index.
Added support for error reporting to Rollbar.
Projects now can have multiple owners.
Project owners can manage themselves.
Added support for
javascript-format
used in gettext PO.Support for adding new translations in XLIFF.
Improved file format autodetection.
Estendidos os atalhos de teclado.
Improved dictionary matching for several languages.
Improved layout of most of pages.
Support for adding words to dictionary while translating.
Added support for filtering languages to be managed by Weblate.
Added support for translating and importing CSV files.
Rewritten handling of static files.
Direct login/registration links to third-party service if that’s the only one.
Commit pending changes on account removal.
Add management command to change site name.
Add option to configure default committer.
Add hook after adding new translation.
Add option to specify multiple files to add to commit.
Weblate 2.3¶
Released on May 22nd 2015.
Dropped support for Django 1.6 and South migrations.
Support for adding new translations when using Java Property files.
Allow to accept suggestion without editing.
Improved support for Google OAuth 2.0.
Added support for Microsoft .resx files.
Tuned default robots.txt to disallow big crawling of translations.
Simplified workflow for accepting suggestions.
Added project owners who always receive important notifications.
Allow to disable editing of monolingual template.
More detailed repository status view.
Direct link for editing template when changing translation.
Allow to add more permissions to project owners.
Allow to show secondary language in Zen mode.
Support for hiding source string in favor of secondary language.
Weblate 2.2¶
Released on Feb 19th 2015.
Performance improvements.
Fulltext search on location and comments fields.
New SVG/javascript based activity charts.
Support for Django 1.8.
Support for deleting comments.
Added own SVG badge.
Added support for Google Analytics.
Improved handling of translation filenames.
Added support for monolingual JSON translations.
Record component locking in a history.
Support for editing source (template) language for monolingual translations.
Added basic support for Gerrit.
Weblate 2.1¶
Released on Dec 5th 2014.
Added support for Mercurial repositories.
Replaced Glyphicon font by Awesome.
Added icons for social authentication services.
Better consistency of button colors and icons.
Documentation improvements.
Various bugfixes.
Automatic hiding of columns in translation listing for small screens.
Changed configuration of filesystem paths.
Improved SSH keys handling and storage.
Improved repository locking.
Customizable quality checks per source string.
Allow to hide completed translations from dashboard.
Weblate 2.0¶
Released on Nov 6th 2014.
New responsive UI using Bootstrap.
Rewritten VCS backend.
Documentation improvements.
Added whiteboard for site wide messages.
Configurable strings priority.
Added support for JSON file format.
Fixed generating mo files in certain cases.
Added support for GitLab notifications.
Added support for disabling translation suggestions.
Django 1.7 support.
ACL projects now have user management.
Extended search possibilities.
Give more hints to translators about plurals.
Fixed Git repository locking.
Compatibility with older Git versions.
Improved ACL support.
Added buttons for per language quotes and other special characters.
Support for exporting stats as JSONP.
Weblate 1.x series¶
Weblate 1.9¶
Released on May 6th 2014.
Django 1.6 compatibility.
No longer maintained compatibility with Django 1.4.
Management commands for locking/unlocking translations.
Improved support for Qt TS files.
Users can now delete their account.
Avatars can be disabled.
Merged first and last name attributes.
Avatars are now fetched and cached server side.
Added support for shields.io badge.
Weblate 1.8¶
Released on November 7th 2013.
Please check manual for upgrade instructions.
Nicer listing of project summary.
Better visible options for sharing.
More control over anonymous users privileges.
Supports login using third party services, check manual for more details.
Users can login by e-mail instead of username.
Documentation improvements.
Improved source strings review.
Searching across all strings.
Better tracking of source strings.
Captcha protection for registration.
Weblate 1.7¶
Released on October 7th 2013.
Please check manual for upgrade instructions.
Support for checking Python brace format string.
Per component customization of quality checks.
Detailed per translation stats.
Changed way of linking suggestions, checks and comments to strings.
Users can now add text to commit message.
Support for subscribing on new language requests.
Support for adding new translations.
Widgets and charts are now rendered using Pillow instead of Pango + Cairo.
Add status badge widget.
Dropped invalid text direction check.
Changes in dictionary are now logged in history.
Performance improvements for translating view.
Weblate 1.6¶
Released on July 25th 2013.
Nicer error handling on registration.
Browsing of changes.
Fixed sorting of machine translation suggestions.
Improved support for MyMemory machine translation.
Added support for Amagama machine translation.
Various optimizations on frequently used pages.
Highlights searched phrase in search results.
Support for automatic fixups while saving the message.
Tracking of translation history and option to revert it.
Added support for Google Translate API.
Added support for managing SSH host keys.
Various form validation improvements.
Various quality checks improvements.
Performance improvements for import.
Added support for voting on suggestions.
Cleanup of admin interface.
Weblate 1.5¶
Released on April 16th 2013.
Please check manual for upgrade instructions.
Added public user pages.
Better naming of plural forms.
Added support for TBX export of glossary.
Added support for Bitbucket notifications.
Activity charts are now available for each translation, language or user.
Extended options of import_project admin command.
Compatible with Django 1.5.
Avatars are now shown using libravatar.
Added possibility to pretty print JSON export.
Various performance improvements.
Indicate failing checks or fuzzy strings in progress bars for projects or languages as well.
Added support for custom pre-commit hooks and committing additional files.
Rewritten search for better performance and user experience.
New interface for machine translations.
Added support for monolingual po files.
Extend amount of cached metadata to improve speed of various searches.
Now shows word counts as well.
Weblate 1.4¶
Released on January 23rd 2013.
Fixed deleting of checks/comments on string deletion.
Added option to disable automatic propagation of translations.
Added option to subscribe for merge failures.
Correctly import on projects which needs custom ttkit loader.
Added sitemaps to allow easier access by crawlers.
Provide direct links to string in notification e-mails or feeds.
Various improvements to admin interface.
Provide hints for production setup in admin interface.
Added per language widgets and engage page.
Improved translation locking handling.
Show code snippets for widgets in more variants.
Indicate failing checks or fuzzy strings in progress bars.
More options for formatting commit message.
Fixed error handling with machine translation services.
Improved automatic translation locking behaviour.
Support for showing changes from previous source string.
Added support for substring search.
Various quality checks improvements.
Support for per project ACL.
Basic code coverage by unit tests.
Weblate 1.3¶
Released on November 16th 2012.
Compatibility with PostgreSQL database backend.
Removes languages removed in upstream git repository.
Melhoria do processamento dos controlos de qualidade.
Added new checks (BB code, XML markup and newlines).
Support for optional rebasing instead of merge.
Possibility to relocate Weblate (for example to run it under /weblate path).
Support for manually choosing file type in case autodetection fails.
Better support for Android resources.
Support for generating SSH key from web interface.
More visible data exports.
New buttons to enter some special characters.
Support for exporting dictionary.
Support for locking down whole Weblate installation.
Checks for source strings and support for source strings review.
Support for user comments for both translations and source strings.
Better changes log tracking.
Changes can now be monitored using RSS.
Improved support for RTL languages.
Weblate 1.2¶
Released on August 14th 2012.
Weblate now uses South for database migration, please check upgrade instructions if you are upgrading.
Fixed minor issues with linked git repos.
New introduction page for engaging people with translating using Weblate.
Added widgets which can be used for promoting translation projects.
Added option to reset repository to origin (for privileged users).
Project or component can now be locked for translations.
Possibility to disable some translations.
Configurable options for adding new translations.
Configuration of git commits per project.
Simple antispam protection.
Better layout of main page.
Support for automatically pushing changes on every commit.
Support for e-mail notifications of translators.
List only used languages in preferences.
Improved handling of not known languages when importing project.
Support for locking translation by translator.
Optionally maintain
Language-Team
header in po file.Include some statistics in about page.
Supports (and requires) django-registration 0.8.
Fazer cache de contagens de cadeias a conter verificações com falha.
Checking of requirements during setup.
Documentation improvements.
Weblate 1.1¶
Released on July 4th 2012.
Improved several translations.
Better validation while creating component.
Added support for shared git repositories across components.
Do not necessary commit on every attempt to pull remote repo.
Added support for offloading indexing.
Weblate 1.0¶
Released on May 10th 2012.
Improved validation while adding/saving component.
Experimental support for Android component files (needs patched ttkit).
Updates from hooks are run in background.
Improved installation instructions.
Improved navigation in dictionary.
Weblate 0.x series¶
Weblate 0.9¶
Released on April 18th 2012.
Fixed import of unknown languages.
Improved listing of nearby messages.
Improved several checks.
Documentation updates.
Added definition for several more languages.
Várias limpezas de código.
Documentation improvements.
Alteração do layout do ficheiro.
Update helper scripts to Django 1.4.
Improved navigation while translating.
Better handling of po file renames.
Better validation while creating component.
Integrated full setup into syncdb.
Added list of recent changes to all translation pages.
Check for not translated strings ignores format string only messages.
Weblate 0.8¶
Released on April 3rd 2012.
Replaced own full text search with Whoosh.
Various fixes and improvements to checks.
New command updatechecks.
Lot of translation updates.
Added dictionary for storing most frequently used terms.
Added /admin/report/ for overview of repositories status.
Machine translation services no longer block page loading.
Management interface now contains also useful actions to update data.
Records log of changes made by users.
Ability to postpone commit to Git to generate less commits from single user.
Possibility to browse failing checks.
Automatic translation using already translated strings.
New about page showing used versions.
Django 1.4 compatibility.
Ability to push changes to remote repo from web interface.
Added review of translations done by others.
Weblate 0.7¶
Released on February 16th 2012.
Direct support for GitHub notifications.
Added support for cleaning up orphaned checks and translations.
Displays nearby strings while translating.
Displays similar strings while translating.
Improved searching for string.
Weblate 0.6¶
Released on February 14th 2012.
Added various checks for translated messages.
Tunable access control.
Improved handling of translations with new lines.
Added client side sorting of tables.
Please check upgrading instructions in case you are upgrading.
Weblate 0.5¶
Released on February 12th 2012.
- Support for machine translation using following online services:
Apertium
Microsoft Translator
MyMemory
Várias traduções novas.
Improved merging of upstream changes.
Better handle concurrent git pull and translation.
Propagating works for fuzzy changes as well.
Propagating works also for file upload.
Fixed file downloads while using FastCGI (and possibly others).
Weblate 0.4¶
Released on February 8th 2012.
Added usage guide to documentation.
Fixed API hooks not to require CSRF protection.
Weblate 0.3¶
Released on February 8th 2012.
Better display of source for plural translations.
New documentation in Sphinx format.
Displays secondary languages while translating.
Improved error page to give list of existing projects.
New per language stats.
Weblate 0.2¶
Released on February 7th 2012.
Improved validation of several forms.
Warn users on profile upgrade.
Lembre-se de URL para fazer o login.
Naming of text areas while entering plural forms.
Automatic expanding of translation area.
Autenticação social¶
Graças ao Welcome to Python Social Auth’s documentation!, o Weblate tem suporte a autenticação utilizando muitos serviços de terceiros, tais como GitLab, Ubuntu, Fedora, etc.
Por favor, verifique a documentação deles por instruções de configuração genéricas em Django Framework.
Nota
Por predefinição, o Weblate conta com serviços de autenticação de terceiros para fornecer um endereço de e-mail validado. Se alguns dos serviços que deseja usar não suportarem isto, por favor aplique a validação de e-mail no lado Weblate configurando FORCE_EMAIL_VALIDATION para eles. Por exemplo:
Veja também
Pipeline
Permitir backends individuais é bastante fácil, é apenas uma questão de adicionar uma entrada à configuração
AUTHENTICATION_BACKENDS
e possivelmente adicionar chaves necessárias para um determinado método de autenticação. Por favor, note que alguns backends não fornecem e-mails do utilizador por predefinição, tem que solicitá-lo explicitamente, caso contrário o Weblate não será capaz de corretamente dar mérito às contribuições que os utilizadores fazem.Dica
A maioria dos backends de autenticação exige HTTPS. Assim que o HTTPS estiver ativado no seu servidor web, configure o Weblate para relatá-lo corretamente usando
ENABLE_HTTPS
ou, no contentor Docker,WEBLATE_ENABLE_HTTPS
.Veja também
Backend de Python Social Auth
Autenticação por OpenID¶
Para serviços baseados em OpenID, geralmente é apenas uma questão de ativá-los. A secção a seguir permite a autenticação OpenID para OpenSUSE, Fedora e Ubuntu:
Veja também
OpenID
Autenticação por GitHub¶
Precisa registar uma aplicação de OAuth no GitHub e, em seguida, dizer ao Weblate todos os seus segredos:
O GitHub deve ser configurado para ter URL de um retorno de chamada como
https://example.com/accounts/complete/github/
.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
GitHub
Autenticação por Bitbucket¶
Precisa registar uma aplicação no Bitbucket e dar todos os segredos dele ao Weblate:
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Bitbucket
OAuth 2 do Google¶
Para usar o OAuth 2 do Google, precisa registar-se numa aplicação em <https://console.developers.google.com/> e ativar a API do Google+.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/google-oauth2/
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Google
OAuth 2 do Facebook¶
Como de costume com os serviços OAuth 2, precisa registar a sua aplicação no Facebook. Uma vez feito, pode configurar o Weblate para usá-lo:
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/facebook/
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Facebook
OAuth 2 do GitLab¶
Para usar o OAuth 2 do GitLab, precisa registar uma aplicação em <https://gitlab.com/profile/applications>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/gitlab/
e garantir que marque o escopo read_user.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
GitLab
Active Directory do Microsoft Azure¶
Weblate pode ser configurado para usar inquilinos comuns ou específicos para autenticação.
O URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/azuread-oauth2/
para autenticação comum ehttps://SERVIDOR WEBLATE/accounts/complete/azuread-tenant-oauth2/
para autenticação específica do inquilino.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Microsoft Azure Active Directory
Slack¶
Para usar o OAuth 2 do Slack, precisa registar uma aplicação em <https://api.slack.com/apps>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/slack/
.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Slack
A substituir nomes e ícones de métodos de autenticação¶
Pode substituir o nome de exibição do método de autenticação e o ícone a usar configurações como
SOCIAL_AUTH_<NOME>_IMAGE
eSOCIAL_AUTH_<NOME>_TITLE
. Por exemplo, substituir a nomenclatura para Auth0 ficaria assim:Desativar autenticação por palavra-passe¶
Autenticação por e-mail e palavra-passe pode ser desativada através da remoção de
social_core.backends.email.EmailAuth
deAUTHENTICATION_BACKENDS
. Mantenha sempreweblate.accounts.auth.WeblateUserBackend
lá, pois é necessário para a funcionalidade central do Weblate.Dica
Ainda pode usar autenticação por palavra-passe para a interface administrativa, para utilizadores que lá cria manualmente. Basta navegar para
/admin/
.Por exemplo, a autenticação a usar apenas o provedor Open ID do openSUSE pode ser alcançada a usar o seguinte: