
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.
Suporte¶
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¶
Pode ser encontrado 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: você 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 (a 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.
Você 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/.
Básico do Weblate¶
Estrutura de projetos e componentes¶
No Weblate, as traduções são organizadas em projetos e componentes. Cada projeto pode conter vários componentes, os quais contêm traduções para idiomas individuais. O componente corresponde a um arquivo traduzível (por exemplo, GNU gettext ou Recurso de textos de Android). Os projetos estão lá para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de um aplicativo).
Internamente, cada projeto tem traduções para textos comuns propagados em outros componentes dentro dele por padrão. Isso alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desabilitada por Configuração de componente usando Permitir propagação de tradução caso as traduções devam divergir.
Ver também
Registro e perfil de usuário¶
Registro¶
Todos podem procurar projetos, visualizar traduções ou sugerir traduções por padrão. Somente usuários registrados têm permissão para realmente salvar as alterações e são creditados para cada tradução feita.
Você pode se registrar seguindo alguns passos simples:
Preencha o formulário de registro com suas credenciais.
Ative o registro seguindo o link no e-mail que você receber.
Ajuste opcionalmente seu perfil para escolher quais idiomas você conhece.
Painel¶
Ao fazer login, você verá uma visão geral de projetos e componentes, bem como sua respectiva progressão de tradução.
Novo na versão 2.5.
Os componentes dos projetos que você está observando são mostrados por padrão, e cruzados com os idiomas de sua preferência.
Dica
Você pode mudar para visualizações diferentes usando as abas de navegação.

O menu tem estas opções:
Projetos > Visualizar todos os projetos no menu principal mostrando o status da tradução, para cada projeto, na instância do Weblate.
Selecionar um idioma no menu principal de Idiomas irá mostrar o status da tradução de todos os projetos, filtrada por um dos seus idiomas primários.
Traduções observadas no Painel vai mostrar o status da tradução apenas os projetos que você está observando, filtradas por seus idiomas primários.
Além disso, o menu suspenso também pode mostrar qualquer número de listas de componentes, conjuntos de componentes do projeto pré-configurados pelo administrador da Weblate, veja Lista de componentes.
Você pode configurar sua exibição de painel padrão pessoal na seção Preferências das configurações do perfil do usuário.
Nota
Quando o Weblate estiver configurado para um único projeto usando SINGLE_PROJECT
no arquivo settings.py
(veja Configuração), o painel não será mostrado, pois o usuário será redirecionado para um único projeto ou componente.
Perfil do usuário¶
O perfil do usuário é acessível clicando no ícone do usuário no topo direito do menu superior e, em seguida, no menu Configurações.
O perfil do usuário contém 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 você deseja traduzir clicando no botão para torná-los disponíveis também.
Idiomas¶
Idioma da interface¶
Escolha o idioma que você deseja exibir na UI.
Idiomas traduzidos¶
Escolha quais idiomas você prefere traduzir, e eles serão oferecidos na página principal de projetos assistidos, para que você tenha acesso mais fácil a essas todas as traduções em cada um desses idiomas.

Idiomas secundários¶
Você pode definir quais idiomas secundários são mostrados a você 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¶
Visão padrão do painel¶
Na aba Preferências, você pode escolher qual das visualizações disponíveis do painel de instrumentos deve-se apresentar por padrão. Se você escolher a lista de Lista de componentes, você terá que selecionar qual lista de componentes será exibida a partir da Lista de componentes padrão suspensa.
Ver também
Link do editor¶
Um link de código-fonte é mostrado no navegador web configurado nas Configuração de componente por padrão.
Dica
Ao definir o Link do editor, você usa o editor local para abrir o arquivo de código-fonte VCS de textos traduzidos. Você pode usar Marcação de modelo.
Geralmente alguma coisa como editor://open/?file={{filename}}&line={{line}}
é uma boa opção.
Ver também
Você pode encontrar mais informações sobre o registro de protocolos de URL personalizados para o editor na documentação do Nette.
Notificações¶
Inscreva-se em várias notificações da aba Notificações. As notificações para eventos selecionados em projetos assistidos ou administrados serão enviadas para você por e-mail.
Algumas das notificações são enviadas apenas para eventos em seus idiomas (por exemplo, sobre novas strings para traduzir), enquanto algumas acionam no nível de componente (por exemplo, erros de mesclagem). Esses dois grupos de notificações são visualmente separados nas configurações.
Você 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 habilitado, você começará automaticamente a ver os projetos ao traduzir um texto. O valor padrão depende de DEFAULT_AUTO_WATCH
.
Nota
Você não receberá notificações para suas próprias ações.

Conta¶
A aba Conta permite configurar detalhes básicos da conta, conectar vários serviços que você pode usar para entrar no Weblate, remover completamente sua conta ou baixar seus dados de usuário (Veja Exportação de dados de usuário 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 OAuth 2.0.

Perfil¶
Todos os campos desta página são opcionais e podem ser excluídos a qualquer momento e, ao preenchê-los, você está nos dando consentimento para compartilhar esses dados onde quer que seu perfil de usuário apareça.
Um avatar pode ser mostrado para cada usuário (dependendo de ENABLE_AVATARS
). Estas imagens são obtidas utilizando https://gravatar.com/.
Licenças¶
Acesso a API¶
Você pode obter ou redefinir seu token API de acesso aqui.
Registro de auditoria¶
O registro de auditoria acompanha as ações realizadas com sua conta. Ele registra endereço IP e navegador para cada ação importante com sua conta. As ações críticas também desencadeiam uma notificação para um endereço de e-mail principal.
Ver também
Traduzindo usando o Weblate¶
Obrigado pelo interesse em traduzir usando o Weblate. Os projetos podem ser configurados para tradução direta ou por meio de sugestões feitas por usuários 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 um número definido 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 qualquer um pode contribuir
Visível apenas para um certo grupo de tradutores
Ver também
Projetos de tradução¶
Os projetos de tradução possuem componentes; recursos para o mesmo software, livro ou projeto.

Links de tradução¶
Tendo navegado para um componente, um conjunto de links leva a sua tradução real. A tradução é ainda dividida em verificações individuais, como Textos não traduzidos ou Textos que necessitam edição. Se todo o projeto for traduzido, sem erro, Todas os textos ainda estão disponíveis. Alternativamente, você pode usar o campo de pesquisa para encontrar um texto ou termo específico.

Sugestões¶
Nota
As permissões podem variar de acordo com a configuração da sua instância do Weblate.
Usuários anônimos só podem (por padrão) encaminhar sugestões. Isso ainda está disponível para os usuários autenticados, nos casos em que surge a incerteza sobre a tradução, levando outros tradutores a revisá-la.
As sugestões são verificadas diariamente para remover as duplicatas e sugestões correspondendo à tradução atual.
Comentários¶
Três tipos de comentários podem ser publicados: para traduções, textos fonte ou para relatar erros de textos fonte quando esta funcionalidade é ativada utilizando Habilitar revisões de fontes. Escolha o adequado para o tópico que você deseja discutir. Os comentários de texto fonte são, em qualquer caso, bons para fornecer feedback sobre o texto original, por exemplo, que ele deve ser reformulado ou para fazer perguntas sobre ele.
Você pode usar a sintaxe do Markdown em todos os comentários e mencionar outros usuários usando @menção
.
Variantes¶
As variantes são usadas para agrupar variantes de diferentes comprimentos do texto. O frontend de seu projeto pode, então, usar diferentes textos dependendo da tela ou do tamanho da janela.
Ver também
Etiquetas¶
As etiquetas são usadas para categorizar textos dentro de um projeto para personalizar ainda mais o fluxo de trabalho de localização (por exemplo, para definir categorias de textos).
Ver também
Traduzindo¶
Na página de tradução, o texto fonte e uma área de edição para sua tradução são mostrados. Caso a tradução seja plural, são mostradas múltiplos textos 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á sendo 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 do texto fonte.
Embaixo da tradução, tradutores vão encontrar sugestões feita por outros, para serem aceitas (✓), aceitas com alterações (🖉) ou excluídas (🗑).
Plurais¶
Palavras mudando a forma para levar em conta sua designação numérica são chamadas de plurais. Cada idioma tem sua 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 suas regras para os plurais são diferentes.
O Weblate tem total suporte a cada uma dessas formas, em cada respectivo idioma (traduzindo cada plural separadamente). O número de campos e como ele é usado no aplicativo 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.
Ver também

Atalhos de teclado¶
Alterado na versão 2.18: Os atalhos de teclado foram renovados em 2.18 para reduzir a chance de colidir com o atalhos padrão de navegadores ou sistemas.
Os seguintes atalhos de teclado podem ser utilizados durante a tradução:
Atalho de teclado |
Descrição |
---|---|
Alt+Home |
Navega para a primeira tradução na pesquisa atual. |
Alt+End |
Navega para a última tradução na pesquisa atual. |
Alt+PageUp ou Ctrl ↑ ou Alt ↑ ou Cmd ↑ |
Navega para a tradução anterior na pesquisa atual. |
Alt+PageDown ou Ctrl+↓ ou Alt+↓ ou Cmd+↓ |
Navega para a próxima tradução na pesquisa atual. |
Alt+Enter ou Ctrl+Enter ou Cmd+Enter |
Salva a tradução atual. |
Ctrl+Shift+Enter ou Cmd+Shift+Enter |
Desmarca a tradução como precisando de edição e a envia. |
Ctrl+E ou Cmd+E |
Muda o foco para o editor de tradução. |
Ctrl+U ou Cmd+U |
Muda o foco para o editor de comentários. |
Ctrl+M ou Cmd+M |
Mostra a aba 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 determinado número do texto fonte. |
Ctrl+M+1 até 9 ou Cmd+M+1 até 9 |
Copia a tradução de máquina do número dado para a tradução atual. |
Ctrl+I+1 até 9 ou Cmd+I+1 até 9 |
Ignora o item na lista de verificações com falha. |
Ctrl+J ou Cmd+J |
Mostra a aba de Textos próximos. |
Ctrl+S ou Cmd+S |
Muda o foco para o campo de pesquisa. |
Ctrl+O ou Cmd+O |
Copia o texto 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 usuário definidos em Perfil do usuário
Caracteres por idioma fornecidos pelo Weblate (por exemplo, citações ou caracteres específicos RTL)
Caracteres configurados usando
SPECIAL_CHARS

Contexto da tradução¶
Esta descrição contextual fornece informações relacionadas sobre o texto atual.
- Atributos do texto
Coisas como ID da mensagem, contexto (
msgctxt
) ou localização no código-fonte.- Capturas de tela
Capturas de tela podem ser enviadas para o Weblate para melhor informar os tradutores sobre onde e como o texto é usado, veja Contexto visual para textos.
- Textos próximos
Exibe mensagens próximas do arquivo de tradução. Estas também são geralmente usadas em um 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 aba mostra todos eles se forem considerados inconsistentes (veja Inconsistente). Você pode escolher qual usar.
- Memória de tradução
Veja textos semelhantes traduzidos no passado, veja Gerenciamento de memória.
- Glossário
Exibe termos do glossário do projeto usados na mensagem atual.
- Alterações recentes
Lista de pessoas que mudaram esta mensagem recentemente usando Weblate.
- Projeto
Informações do projeto, como instruções para tradutores ou um diretório ou link para o texto no repositório do sistema de controle de versão que o projeto usa.
Se você quiser links diretos, o formato da tradução tem que ter suporte.
Histórico de tradução¶
Cada alteração é por padrão (a menos que desativada nas configurações dos componentes) salva no banco de dados e pode ser revertida. Opcionalmente, ainda se pode reverter qualquer coisa no sistema de controle de versão subjacente.
Comprimento do texto traduzido¶
Weblate pode limitar o comprimento de uma tradução em várias formas para garantir o texto traduzido não é muito longo:
A limitação padrão para tradução é dez vezes maior do que o texto fonte. Isso pode ser desativado em
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH
. Caso você esteja atingindo isso, ele também pode ser causado por uma tradução monolíngue ser erroneamente configurada como bilíngue, fazendo o Weblate errar a chave de tradução para o texto fonte em vez do texto fonte. Veja Formatos bilíngues e monolíngues para obter mais informações.Comprimento máximo em caracteres definidos por arquivo de tradução ou um sinalizador, consulte Comprimento máximo da tradução.
Tamanho máximo renderizado em pixels definido por marcadores, veja Tamanho máximo da tradução.
Sugestões automáticas¶
Baseado na configuração e 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 em uma única aba de cada página de tradução.
Ver também
Você pode encontrar a lista de ferramentas suportadas em Tradução de máquina.
Tradução automática¶
Você 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 você tenha selecionado um componente e um idioma:

Dois modos de operação são possíveis:
Usando outros componentes do Weblate como fonte para traduções.
Usando serviços selecionados de tradução automática com traduções acima de um certo limite de qualidade.
Você também pode escolher quais textos devem ser traduzidos automaticamente.
Aviso
Tenha em mente que isso substituirá as traduções existentes se empregadas com filtros amplos, como Todos os textos.
Útil em várias situações, como a consolidação da tradução entre diferentes componentes (por exemplo, o aplicativo e seu site) ou quando estiver iniciando uma tradução para um novo componente usando traduções existentes (memória de tradução).
Ver 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, você fica bloqueado por um certo período até que você possa executar a operação novamente.
Os limites predefinidos e o ajuste fino estão descritos no manual administrativo, veja Limitação de taxa.
Pesquisar e substituir¶
Altere a terminologia efetivamente ou execute a correção em massa dos textos usando Pesquisar e substituir no menu Ferramentas.
Dica
Não se preocupe com bagunçar os textos. Este é um processo de dois passos que mostra uma pré-visualização dos textos editados antes que a alteração real seja confirmada.
Editor em massa¶
A edição em massa permite realizar uma operação sobre o número de textos. Você define os textos procurando por eles e configura algo a ser feito para corresponder a eles. As seguintes operações são suportadas:
Alterar o estado de texto (por exemplo, para aprovar todos os textos não revisados).
Ajustar os marcadores de tradução (veja Personalizando comportamento usando marcadores)
Ajustar as etiquetas de texto (veja Etiquetas de texto)
Dica
Esta ferramenta é chamada Editor em massa, acessível no menu Ferramentas de cada projeto, componente ou tradução.
Ver também
Baixando e enviando traduções¶
Você pode exportar arquivos a partir de uma tradução, fazer alterações e importá-los novamente. Isso permite trabalhar offline e, em seguida, mesclar mudanças de volta na tradução existente. Isso funciona mesmo que tenha sido alterado nesse meio tempo.
Nota
As opções disponíveis podem ser limitadas por configurações de controle de acesso.
Baixando traduções¶
A partir do painel do projeto ou componente, arquivos traduzíveis podem ser baixados no menu Arquivos.
A primeira opção é baixar o arquivo no formato original, uma vez que ele é armazenado no repositório. Neste caso, quaisquer alterações pendentes na tradução estão sendo comprometidas e o arquivo atualizado é produzido sem nenhuma conversão.
Você pode também baixar a tradução convertida em um dos formatos de localização amplamente utilizados. Os arquivos convertidos serão enriquecidos com dados fornecidos no Weblate, como contexto adicional, comentários ou marcadores. Vários formatos de arquivo estão disponíveis através do menu Arquivos ↓ Personalizar o download:
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 arquivos convertidos difere com base nos recursos de formato de arquivo, você pode encontrar uma visão geral em Capacidades dos tipos de tradução.

Enviando traduções¶
Quando você tiver feito suas alterações, use Enviar tradução no menu Arquivos.

Formatos de arquivos suportados¶
Qualquer arquivo em um formato de arquivo suportado pode ser carregado, mas ainda é recomendado usar o mesmo formato de arquivo que o usado para tradução, caso contrário, alguns recursos podem não ser traduzidos corretamente.
Ver também
O arquivo enviado é mesclado para atualizar a tradução, substituindo as entradas existentes por padrão (isso 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 arquivos 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 padrão.
Apenas traduções são usadas do arquivo 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 seus textos enviados revisados.
Apenas traduções são usadas do arquivo carregado e nenhum conteúdo adicional.
- Adicionar como tradução que necessita edição (
fuzzy
) As traduções importadas são adicionadas como traduções que necessitam de edição. Isso pode ser útil quando você quer que as traduções sejam usadas, mas também revisadas.
Apenas traduções são usadas do arquivo carregado e nenhum conteúdo adicional.
- Substituir arquivo tradução existente (
replace
) O arquivo existente é substituído por novo conteúdo. Isso pode levar à perda de traduções existentes, use com cuidado.
- Atualizar textos fonte (
source
) Atualiza textos fonte em arquivo de tradução bilíngue. Isso é semelhante ao que Atualizar arquivos PO para corresponder ao POT (msgmerge) faz.
Esta opção é suportada apenas para alguns formatos de arquivo.
- Adicionar novos textos (
add
) Adiciona novos textos à tradução. Pula a que já existe.
Caso você queira adicionar novos textos e atualizar traduções existentes, envie do arquivo pela segunda vez com Adicionar como tradução.
Esta opção está disponível apenas com Gerenciar textos ativado.
Apenas fonte, tradução e chave (contexto) são usados do arquivo enviado.
Gestão de conflitos¶
Define como lidar com textos enviados que já são traduzidos.
Textos necessitando de edição¶
Há também uma opção de como lidar com textos que necessitam de edição no arquivo importado. Tais textos podem ser manuseados de uma das três maneiras seguintes: “Não importar”, “Importar como texto que necessita edição” ou “Importar como traduzido”.
Substituindo autoria¶
Com permissões administrativas, você também pode especificar a autoria do arquivo enviado. Isso pode ser útil no caso de você ter recebido o arquivo 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 gerenciado sozinho, mas eles são armazenados juntos como um único componente que ajuda os administradores de projeto e tradutores multilíngues a manter alguma consistência entre os idiomas também. Os termos do glossário contendo palavras de texto atualmente traduzido são exibidos na barra lateral do editor de tradução.
Gerenciando glossários¶
Alterado na versão 4.5: Glossários são agora componentes de tradução comuns e você pode usar todos os recursos da Weblate neles — comentando, armazenando em um repositório remoto ou adicionando explicações.
Use qualquer componente como um glossário ligando Usar como um glossário. Você 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 utilizando 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:

Você 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 os textos comuns. Você pode alternar recursos adicionais utilizando o menu Ferramenta para cada termo.

Termos não traduzíveis¶
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.
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.
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.
Variantes¶
As variantes são uma forma genérica de agrupar textos. Todas as variantes do termo são listadas no glossário lateral ao traduzir.
Dica
Você pode usar isso para adicionar abreviações ou expressões mais curtas para um termo.
Ver também
Verificações e correções¶
As verificações de qualidade ajudam a pegar erros comuns do tradutor, garantindo que a tradução esteja em boa forma. As verificações podem ser ignoradas em caso de falsos positivos.
Uma vez que enviar uma tradução com uma verificação de falha, isso é imediatamente mostrado ao usuário:

Correções automáticas¶
Além de Verificações de qualidade, o Weblate pode corrigir alguns erros comuns em textos traduzidos automaticamente. Use isso com cuidado para não causar erros por meio disto.
Ver também
Verificações de qualidade¶
O Weblate emprega uma ampla gama de verificações de qualidade em textos. A seção a seguir descreve todos eles em mais detalhes. 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.
Verificações de tradução¶
Executada a cada alteração na tradução, ajudando os tradutores a manter traduções de boa qualidade.
Marcação de BBcode¶
BBcode na tradução não corresponde à fonte
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 sejam encontrados na tradução.
Nota
O método para detectar BBcode é atualmente bastante simples, então esta verificação pode produzir falsos positivos.
Há palavras duplicadas de forma consecutiva¶
O texto contém a mesma palavra duas vezes seguidas:
Novo na versão 4.1.
Verifica se não ocorrem palavras duplicadas consecutivas em uma 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 seguir glossário¶
Novo na versão 4.5.
A tradução não segue os termos definidos em um glossário.
Esta verificação tem de ser ligada usando o sinalizador check-glossary
(veja Personalizando comportamento usando marcadores). Por favor, considere seguir antes de habilitá-lo:
Ele faz a correspondência exata dos textos, espera-se que o glossário contenha termos em todas as variantes.
A verificação de cada texto 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¶
A tradução contém espaço duplo
Verifica se o espaço duplo está presente na tradução para evitar falsos positivos em outras verificações relacionadas ao espaço.
A verificação é falsa quando o espaço duplo é encontrado no texto fonte, o que significa que o espaço duplo é intencional.
Textos formatados¶
Verifica se a formatação em textos é replicada entre a fonte e a tradução. Omitir textos de formato na tradução geralmente causa problemas graves, de modo que a formatação em textos geralmente deve coincidir com a fonte.
Weblate tem suporte a verificar textos de formato em vários idiomas. A verificação não é ativada automaticamente, somente se um texto for sinalizado adequadamente (por exemplo, “c-format’ para formato C). O Gettext adiciona isso automaticamente, mas você provavelmente terá que adicioná-lo manualmente para outros formatos de arquivo ou se seus arquivos PO não forem gerados por xgettext.
Isso pode ser feito por unidade (ver Informações adicionais sobre textos fonte) na Configuração de componente. Tê-lo definido por componente é mais simples, mas pode levar a falsos positivos no caso de o texto não ser interpretado como um texto 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, você pode usar Espaços reservados genéricos.
Além de verificar, isso também destacará os textos e formatação para inseri-los facilmente em textos traduzidos:

Texto de interpolação AngularJS¶
O texto de interpolação AngularJS não corresponde à fonte
Texto de formato nomeado |
|
Sinalizador para habilitar |
angularjs-format |
Ver também
Formato C¶
O texto de formato C não corresponde à fonte
Texto de formato simples |
|
Texto de formato de posição |
|
Sinalizador para habilitar |
c-format |
Ver também
Formato C#¶
O texto de formato C# não corresponde à fonte
Texto de formato de posição |
|
Sinalizador para habilitar |
c-sharp-format |
Ver também
Literais de modelo de ECMAScript¶
Os literais de modelo de ECMAScript não correspondem à fonte
Interpolação |
|
Sinalizador para habilitar |
es-format |
Ver também
Interpolação de i18next¶
A interpolação de i18next não corresponde à fonte
Novo na versão 4.0.
Interpolação |
|
Aninhamento |
|
Sinalizador para habilitar |
i18next-interpolation |
Ver também
Formato Java¶
O texto de formato java não corresponde à fonte
Texto de formato simples |
|
Texto de formato de posição |
|
Sinalizador para habilitar |
java-format |
Ver também
MessageFormat do Java¶
O texto de MessageFormat do Java não corresponde à fonte
Texto de formato de posição |
|
Sinalizador para habilitar |
java-messageformat habilita a verificação incondicionalmente |
auto-java-messageformat habilita verificação somente se houver um texto de formato na fonte |
Ver também
Formato JavaScript¶
O texto de formato JavaScript não corresponde à fonte
Texto de formato simples |
|
Sinalizador para habilitar |
javascript-format |
Ver também
Formato Lua¶
O formato de texto Lua não corresponde com a fonte
Texto de formato simples |
|
Sinalizador para habilitar |
lua-format |
Ver também
Formato de Object Pascal¶
O formato do texto Object Pascal não corresponde com a fonte
Texto de formato simples |
|
Sinalizador para habilitar |
object-pascal-format |
Espaços reservados de porcentagem¶
Os espaços reservados de porcentagem não correspondem à fonte
Novo na versão 4.0.
Texto de formato simples |
|
Sinalizador para habilitar |
percent-placeholders |
Ver também
Formato Perl¶
O texto de formato Perl não corresponde à fonte
Texto de formato simples |
|
Texto de formato de posição |
|
Sinalizador para habilitar |
perl-format |
Ver também
Formato PHP¶
O texto de formato PHP não corresponde à fonte
Texto de formato simples |
|
Texto de formato de posição |
|
Sinalizador para habilitar |
php-format |
Formato de chaves Python¶
O texto de formato de chaves Python não corresponde à fonte
Texto de formato simples |
|
Texto de formato nomeado |
|
Sinalizador para habilitar |
python-brace-format |
Formato Python¶
O texto de formato Python não corresponde à fonte
Texto de formato simples |
|
Texto de formato nomeado |
|
Sinalizador para habilitar |
python-format |
Formato Qt¶
O texto de formato Qt não corresponde à fonte
Texto de formato de posição |
|
Sinalizador para habilitar |
qt-format |
Ver também
Formato de plural Qt¶
O texto de formato de plural do Qt não corresponde à fonte
Texto de formato de plural |
|
Sinalizador para habilitar |
qt-plural-format |
Ver também
Formato Ruby¶
O texto de formato Ruby não corresponde à fonte
Texto de formato simples |
|
Texto de formato de posição |
|
Texto de formato nomeado |
|
Texto do modelo nomeado |
|
Sinalizador para habilitar |
ruby-format |
Ver também
Formato Scheme¶
O formato do texto Scheme não corresponde com a fonte
Texto de formato simples |
|
Sinalizador para habilitar |
scheme-format |
Formatação Vue I18n¶
A formatação Vue I18n não corresponde com a fonte
Formatação nomeada |
|
Formatação Rails i18n |
|
Mensagens da localidade vinculada |
|
Sinalizador para habilitar |
vue-format |
Foi traduzido¶
Este texto foi traduzido no passado
Significa que um texto já foi traduzido. Isso pode acontecer quando as traduções foram revertidas no VCS ou perdidas de outra forma.
Inconsistente¶
Este texto tem mais de uma tradução neste projeto ou não é traduzida em alguns componentes.
O Weblate verifica traduções da mesmo texto em todas as traduções de um projeto para ajudar a manter traduções consistentes.
A verificação falha em diferentes traduções de um texto dentro de um projeto. Isso também pode levar a inconsistências nas verificações exibidas. Você pode encontrar outras traduções deste texto na aba Outras ocorrências.
Nota
Esta verificação também é disparada no caso de o texto estar traduzido em um componente e não em outro. Ela pode ser usado como uma maneira rápida de manusear manualmente textos que não estão traduzidos em alguns componentes apenas clicando no botão Usar esta tradução exibido em cada linha na aba Outras ocorrências.
Você pode usar Tradução automática para automatizar a tradução de textos recém-adicionadas que já são traduzidas em outro componente.
Ver também
Letra Kashida usada¶
As letras kashida decorativas não devem ser usadas
Novo na versão 3.5.
As letras Kashida decorativas não devem ser usadas na tradução. Estas também são conhecidas como Tatweel.
Ver também
Links Markdown¶
Os links Markdown não correspondem com a fonte
Novo na versão 3.5.
Os links Markdown não correspondem com a fonte.
Ver também
Referências Markdown¶
As referências de link Markdown não correspondem à fonte
Novo na versão 3.5.
As referências de link Markdown não correspondem à fonte.
Ver também
Sintaxe Markdown¶
A sintaxe de Markdown não corresponde à fonte
Novo na versão 3.5.
A sintaxe de Markdown não corresponde à fonte
Ver também
Comprimento máximo da tradução¶
A tradução não deve exceder o comprimento dado
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 o número de gráficos, 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 o texto.
Tamanho máximo da tradução¶
O texto traduzido não deve exceder o tamanho determinado
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 número máximo de linhas. Caso o número de linhas não seja fornecido, é considerado um texto de uma linha.
Você também pode configurar a fonte utilizada pelas diretivas font-*
(veja Personalizando comportamento usando 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
Você pode querer definir as diretivas font-*
na Configuração de componente para ter a mesma fonte configurada para todas as strings dentro de um componente. Você pode sobrescrever esses valores por texto, caso você precise personalizá-la por texto.
O sinalizador replacements:
também pode ser útil para expandir os objetos colocáveis antes de verificar o texto.
\n não correspondente¶
O número de \n nas traduções não corresponde ao fonte
Normalmente as novas linhas escapadas são importantes para a formatação da saída do programa. A verificação falha se o número de literais \n
na tradução não corresponder à fonte.
Caractere de dois pontos não correspondente¶
Fonte e tradução não terminam com dois pontos
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).
Ver também
Reticências não correspondentes¶
Fonte e tradução não terminam com uma reticências
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.
Ver também
Ponto de exclamação não correspondente¶
Fonte e tradução não terminam com um ponto de exclamação
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).
Ver também
Ponto final não correspondente¶
Fonte e tradução não terminam com um ponto final
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).
Ver também
Ponto de interrogação não correspondente¶
Fonte e tradução não terminam com uma interrogação
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).
Ver também
Ponto e vírgula não correspondente¶
Fonte e tradução não terminam com ponto e vírgula
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 arquivos desktop.
Ver também
Quebras de linha descasadas¶
Número de novas linhas na tradução não corresponde à fonte
Geralmente, as novas linhas são importantes para formatar a saída do programa. A verificação falha se o número de literais \n
na tradução não corresponder à fonte.
Faltam plurais¶
Algumas formas no plural não estão traduzidas
Verifica se todas as formas plurais de um texto fonte foram traduzidas. Especificações sobre como cada forma plural é usada podem ser encontradas na definição do texto.
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¶
Falta a tradução de alguns espaços reservados:
Novo na versão 3.9.
Alterado na versão 4.3: Você pode usar uma expressão regular como espaço reservado.
A tradução não contém alguns espaços reservados. Estes são extraídos do arquivo de tradução ou definidos manualmente usando o sinalizador placeholders
, outros podem ser separados com ponto e vírgula, textos com o espaço podem ser colocados entre aspas:
placeholders:$URL$:$TARGET$:"some long text"
Caso você tenha alguma sintaxe para os espaços reservados, você pode usar uma expressão regular:
placeholders:r"%[^% ]%"
Espaçamento de pontuação¶
Espaço rígido antes do sinal de pontuação dupla
Novo na versão 3.9.
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.
Ver também
Expressão regular¶
A tradução não corresponde à expressão regular:
Novo na versão 3.9.
A tradução não corresponde à expressão regular. A expressão é extraída do arquivo de tradução ou definida manualmente usando o sinalizador regex
:
regex:^foo|bar$
Mesmos plurais¶
Algumas formas de plural estão traduzidas da mesma forma
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¶
Fonte e tradução não iniciam com uma nova linha
As novas linhas costumam aparecer nos textos 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 é colocado em uso.
Ver também
Espaços no início¶
Fonte e tradução não iniciam com o mesmo número de espaços
Um espaço no início de um texto é normalmente usado para recuo na interface e, portanto, importante de manter.
Linha em branco no final¶
Fonte e tradução não terminam com uma nova linha
As novas linhas costumam aparecer nos textos 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 é colocado em uso.
Ver também
Espaço no final¶
Fonte e tradução não terminam com um espaço
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 não alterada¶
A fonte e a tradução são idênticas
Acontece se o texto fonte e a tradução correspondente forem idênticos, até pelo menos uma das formas de plural. Alguns textos normalmente encontrados em todos os idiomas são ignorados, e várias marcações são ignoradas. Isto reduz o número de falsos positivos.
Esta verificação pode ajudar a encontrar textos 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 sendo traduzidas. Isto é útil para evitar falsos positivos em textos curtos, que consistem apenas em uma única palavra que é a mesma em vários idiomas. Esta lista negra pode ser desabilitada adicionando strict-same
ao texto ou componente.
HTML inseguro¶
A tradução usa uma marcação HTML insegura
Novo na versão 3.9.
A tradução utiliza uma marcação HTML insegura. Esta verificação tem que ser habilitada utilizando o sinalizador safe-html
(veja Personalizando comportamento usando marcadores). Há também o autocorretor acompanhado que pode automaticamente corrigir a marcação.
Ver também
A verificação HTML é feita pela biblioteca Bleach desenvolvida pela Mozilla.
URL¶
A tradução não contém uma URL
Novo na versão 3.5.
A tradução não contém uma URL. Isso só é acionado caso a unidade esteja marcada como contendo uma URL. Nesse caso, a tradução tem de ser uma URL válido.
Marcação XML¶
As tags na tradução não correspondem com a fonte
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.
Espaço com largura zero¶
A tradução contém um caractere extra de espaço com largura zero
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.
Ver também
Verificações de texto fonte¶
Estas verificações podem ajudar os desenvolvedores a melhorar a qualidade dos textos fonte.
Reticências¶
O texto usa três pontos (…) ao invés do caractere de reticências (…)
Isto falha quando o texto 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).
Ver também
Não traduzido a muito tempo¶
Este texto não foi traduzido há muito tempo
Novo na versão 4.1.
Quando o texto não é traduzida há muito tempo, pode indicar um problema em um texto fonte, tornando difícil a tradução.
Várias verificações com falha¶
As traduções em diversos idiomas têm verificações com falha
Várias traduções deste texto têm falhas nas verificações de qualidade. Isto é normalmente uma indicação de que algo poderia ser feito para melhorar o texto 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 que seria melhor corrigi-la no texto fonte.
Várias variáveis sem nome¶
Há várias variáveis sem nome no texto, o que impossibilita aos tradutores reordená-las
Novo na versão 4.1.
Há várias variáveis sem nome no texto, o que impossibilita aos tradutores reordená-las.
Considere usar variáveis nomeadas para permitir que os tradutores as reordenem.
Não pluralizado¶
O texto é usado como plural, mas não está usando formas de plural
O texto é usado como um plural, mas não usa formas de plural. Caso o seu sistema de tradução tenha suporte a isso, você 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 usando operações booleanas, parênteses ou pesquisas específicas de campo podem ser usadas para encontrar os textos que você 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 cordas que contêm qualquer uma delas são mostradas. Para procurar uma frase exata, coloque “a frase de pesquisa” entre aspas (ambas aspas simples (‘) e duplas (“) funcionarão: "este é um texto entre aspas"
ou 'outro texto entre aspas'
.
Campos¶
source:TEXTO
Pesquisa em texto fonte sem diferenciar maiúscula de minúscula.
target:TEXTO
Pesquisa em texto destino sem diferenciar maiúscula de minúscula.
context:TEXTO
Pesquisa em texto de contexto sem diferenciar maiúscula de minúscula.
key:TEXTO
Pesquisa em texto chave sem diferenciar maiúscula de minúscula.
note:TEXTO
Pesquisa em texto de comentário sem diferenciar maiúscula de minúscula.
location:TEXTO
Pesquisa em texto de localização sem diferenciar maiúscula de minúscula.
priority:NÚMERO
Prioridade do texto.
added:DATA E HORA
Data e hora de quando o texto foi adicionado ao Weblate.
state:TEXTO
Pesquisa de estado (
approved
,translated
,needs-editing
,empty
,read-only
), suporta Operações de campo.pending:BOOLEANO
Texto 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 texto (
pending
,translated
,untranslated
).language:TEXTO
Idioma de destino do texto.
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
O texto foi alterado pelo autor com o nome de usuário fornecido.
changed:DATA E HORA
O conteúdo do texto foi alterado na data, suporta operadores de pesquisa.
change_time:DATA E HORA
Texto foi alterado na data, suporta Operações de campo; ao contrário de
changed
, isso inclui eventos que não alteram o conteúdo e você pode aplicar uma filtragem de ação personalizada utilizandochange_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
O texto tem verificação com falha.
dismissed_check:TEXTO
O texto tem verificação dispensada.
comment:TEXTO
Pesquisa nos comentários de usuários.
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¶
Você pode combinar pesquisas usando AND
, OR
, NOT
e parênteses para formar consultas complexas. Por exemplo: state:translated AND (source:hello OR source:bar)
Operações de campo¶
Você 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¶
Você pode fazer uma consulta de correspondência exata em diferentes campos de texto usando o operador =
. Por exemplo, para procurar por todos os textos fonte que correspondem exatamente a hello world
, use: source:="hello world"
. Para pesquisar por expressões de uma única palavra, você não precisa de aspas. Por exemplo, para procurar por todos os textos fonte que correspondam a hello
, você pode utilizar: source:=hello
.
Pesquisando por alterações¶
Novo na versão 4.4.
A pesquisa por eventos do histórico pode ser feita utilizando os operadores change_action
e change_time
.
Por exemplo, uma pesquisa por textos marcados 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, você também pode especificar uma expressão regular como r "regexp"
.
Por exemplo, para pesquisar por todos os textos 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:

Ordenando os resultados¶
Há muitas opções para ordenar os textos de acordo com as suas necessidades:

Fluxos de trabalho de tradução¶
Usar o Weblate é um processo que aproxima seus usuários de você, aproximando você de seus tradutores. Depende de você decidir quantos recursos deseja usar.
A lista a seguir não é uma lista completa de maneiras de configurar o Weblate. Você 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 de suas opções pode ser aplicada a qualquer fluxo de trabalho. Consulte a respectiva documentação sobre como gerenciar o acesso às traduções.
Nos capítulos a seguir, qualquer usuário significa um usuário que tenha acesso à tradução. Pode ser qualquer usuário autenticado se o projeto for público, ou um usuário que tenha uma permissão Traduzir para o projeto.
Estados de tradução¶
Cada texto traduzida pode estar em um dos seguintes estados:
- Não traduzido
A tradução está vazia, pode ou não estar armazenada no arquivo, dependendo do formato do arquivo.
- Necessita edição
A tradução precisa ser editada, isso geralmente é o resultado de uma alteração de texto fonte, correspondência aproximada ou ação de um tradutor. A tradução está armazenada no arquivo, dependendo do formato do arquivo que pode ser marcado como necessidade de edição (por exemplo, da mesma forma que receberia uma sinalização
fuzzy
no arquivo de Gettext).- Aguardando revisão
A tradução está feita, mas não revisada. Ela é armazenada no arquivo como uma tradução válida.
- Aprovado
A tradução foi aprovada na revisão. Não pode mais ser alterada por tradutores, mas apenas por revisores. Tradutores só podem adicionar sugestões a ela.
- Sugestões
As sugestões estão armazenadas apenas no Weblate e não no arquivo de tradução.
Os estados são representados nos arquivos de tradução quando possível.
Dica
In case file format you use does not support storing states, you might want to use Marcar traduções não alteradas como “Necessita edição” addon to flag unchanged strings as needing editing.
Tradução direta¶
Esta é a configuração mais usual para equipes menores, qualquer um pode traduzir diretamente. Esta também é a configuração padrão no Weblate.
Qualquer usuário 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 |
---|---|---|
Habilitar revisões |
desativada |
Configurada a nível de projeto. |
Habilitar sugestões |
ativada |
É útil para os usuários serem capazes de sugerir quando não têm certeza. |
Votação de sugestões |
desativada |
|
Aceitar sugestões automaticamente |
0 |
|
Grupo de tradutores |
Usuários |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
N/D |
Não usada. |
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 aceita como tradução.
Qualquer usuário pode adicionar sugestões.
Qualquer usuário pode votar em sugestões.
Sugestões tornam-se traduções quando dado um número predeterminado de votos.
Configuração |
Valor |
Nota |
---|---|---|
Habilitar revisões |
desativada |
Configurada a nível de projeto. |
Habilitar sugestões |
ativada |
|
Votação de sugestões |
desativada |
|
Aceitar sugestões automaticamente |
1 |
Você pode definir um valor mais alto para exibir mais revisões por pares. |
Grupo de tradutores |
Usuários |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
N/D |
Não usada, 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 você tem dois grupos de usuários, 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 usuário pode editar traduções não aprovadas.
Revisor pode aprovar / retirar a aprovação de textos.
Revisor pode editar todas as traduções (incluindo as aprovadas).
Sugestões também podem ser usadas para sugerir alterações para textos aprovados.
Configuração |
Valor |
Nota |
---|---|---|
Habilitar revisões |
ativada |
Configurada a nível de projeto. |
Habilitar sugestões |
desativada |
É útil para os usuários serem capazes de sugerir quando não têm certeza. |
Votação de sugestões |
desativada |
|
Aceitar sugestões automaticamente |
0 |
|
Grupo de tradutores |
Usuários |
Ou Traduzir com controle de acesso por projeto. |
Grupo de revisores |
Revisores |
Ou Revisar com controle de acesso por projeto. |
Ativando 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 Gerenciar → Configurações):

Nota
Dependendo da configuração do Weblate, a configuração pode não estar disponível para você. Por exemplo, no Hosted Weblate, isso não está disponível para projetos hospedados gratuitamente.
Rota de qualidade para os textos fonte¶
Em muitos casos, os textos fonte do idioma fonte vêm de desenvolvedores, porque eles escrevem o código e fornecem textos iniciais. No entanto, os desenvolvedores muitas vezes não são falantes nativos do idioma fonte e não fornecem qualidade desejada dos textos fonte. A tradução intermediária pode ajudá-lo a lidar com isso - há uma rota de qualidade adicional para os tetos entre desenvolvedores e tradutores e usuários.
Ao definir um Arquivo de idioma intermediário, este arquivo será usado como fonte para os textos, mas será editado para o idioma fonte para poli-lo. Uma vez que o texto esteja pronto no idioma fonte, ele também estará disponível para os tradutores traduzirem em idiomas adicionais.
Revisões de textos fonte¶
Com o Habilitar revisões de fontes ativado, o processo de revisão pode ser aplicado em textos fonte. Uma vez ativado, os usuários podem relatar problemas nos textos fonte. O processo real depende se você usa formatos bilíngues ou monolíngues.
Para formatos monolíngues, a revisão de texto fonte se comporta da mesma forma que com Revisores dedicados - uma vez que o problema é relatado no texto fonte, ele é marcado como Necessita edição.
Os formatos bilíngues não permitem a edição direta de textos fonte (estes são normalmente extraídos diretamente do código-fonte). Neste caso, o rótulo Fonte precisa de revisão é anexado aos textos relatados por tradutores. Você 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 você der acesso de push ao seu repositório, as traduções podem acontecer sem interação, a menos que algum conflito de mesclagem ocorra.
Configure seu repositório Git para informar Weblate quando houver alguma alteração, veja Ganchos de notificação para informações sobre como fazer isso.
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 Push ao fazer commit na sua Configuração de componente no Weblate, isto fará com que o Weblate faça push das alterações no seu repositório sempre que elas acontecerem no Weblate.
Ver 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 arquivo de tradução é alterado tanto na Weblate como no repositório upstream ao mesmo tempo. Você geralmente pode evitar isso mesclando traduções Weblate antes de fazer alterações nos arquivos de tradução (por exemplo, antes de executar o msgmerge). Apenas diga ao Weblate para fazer o commit de todas as traduções pendentes (você pode fazer isso em Manutenção do repositório no menu Gerenciar) e mesclar o repositório (se o push automático não estiver ligado).
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 usuário 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 você estiver usando vários ramos na Weblate, você pode fazer o mesmo com todos eles:
# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second
# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit
# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit
# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push
No caso de arquivos PO gettext, há uma forma de mesclar conflitos de uma forma semiautomática:
Obtenha e mantenha um clone local do repositório Weblate Git. Obtenha também um segundo clone local novo do repositório upstream Git (ou seja, você precisa de duas cópias do repositório upstream Git: Uma cópia intacta e uma cópia de trabalho):
# Add remote:
git remote add weblate /path/to/weblate/snapshot/
# Update Weblate remote:
git remote update weblate
# Merge Weblate changes:
git merge weblate/main
# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
msgcat --use-first /path/to/weblate/snapshot/$PO\
/path/to/upstream/snapshot/$PO -o $PO.merge
msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
rm $PO.merge
git add $PO
done
git commit
# Push changes to the upstream repository, Weblate will fetch merge from there:
git push
Como faço para traduzir vários ramos ao mesmo tempo?¶
Weblate tem suporte a fazer push de alterações de tradução dentro de uma Configuração de projeto. Para cada Configuração de componente que o tem ligado (o comportamento padrão), a alteração feita é automaticamente propagada para outros. Desta forma as traduções são mantidas sincronizadas mesmo que os próprios ramos já tenham divergido bastante, e não é possível simplesmente fundir as mudanças de tradução entre eles.
Uma vez mescladas as mudanças do Weblate, você pode ter que mesclar esses ramos (dependendo do seu fluxo de trabalho de desenvolvimento) descartando as diferenças:
git merge -s ours origin/maintenance
Ver também
Como traduzir projetos multiplataforma?¶
Weblate tem suporte a uma grande variedade de formatos de arquivo (veja Formatos de arquivos suportados) e a abordagem mais fácil é utilizar o formato nativo para cada plataforma.
Uma vez que você tenha adicionado todos os arquivos de tradução da plataforma como componentes em um projeto (veja Adicionando projetos e componentes de tradução), você pode utilizar o recurso de propagação de tradução (ligado por padrão, e pode ser desligado na Configuração de componente) para traduzir textos para todas as plataformas ao mesmo tempo.
Ver 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 você tem acesso SSH a esta máquina, você pode usar o repositório diretamente.
Para acesso anônimo, você pode querer executar um servidor Git e deixá-lo servir o repositório para o mundo exterior.
Alternativamente, você pode usar Exportador git dentro do Weblate para automatizar isto.
Quais são as opções para fazer push das alterações de volta para o upstream?¶
Isto depende muito da sua configuração, Weblate é bastante flexível nesta área. Aqui estão exemplos de alguns fluxos de trabalho usados com o Weblate:
O Weblate faz push e mescla automaticamente alterações (veja Como criar um fluxo de trabalho automatizado?).
Você diz manualmente ao Weblate para fazer push (ele precisa de acesso push ao repositório upstream).
Alguém mescla manualmente as alterações do repositório Weblate git para o repositório upstream.
Alguém reescreve o histórico produzido pelo Weblate (por exemplo, eliminando compromissos de mesclagem), mescla alterações e diz ao Weblate para redefinir o conteúdo no repositório upstream.
Claro que você é livre para misturar tudo isso como quiser.
Como posso limitar o acesso ao Weblate apenas às traduções, sem lhe expor o código-fonte?¶
Você pode utilizar o comando git submodule para separar as traduções do código-fonte enquanto ainda as tem sob controle de versão.
Crie um repositório com seus arquivos 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.
Você pode atualizar o repositório principal com traduções do Weblate executando:
git submodule update --remote path/to/translations
Por favor, consulte a documentação do submódulo git para obter mais detalhes.
Como posso verificar se a minha Weblate está configurada corretamente?¶
Weblate inclui um conjunto de verificações de configuração que você pode ver na interface administrativa, basta seguir o link Relatório de desempenho na interface administrativa, ou abrir a URL /manage/performance/
diretamente.
Por que é que todos os commits são feitos por Weblate <noreply@weblate.org>?¶
Este é o nome padrão do “committer”, configurado quando você cria um componente de tradução. Você 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 usuário que fez a tradução.
Ver 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.
Você pode se inscrever para quaisquer alterações feitas em Notificações e depois verificar outras contribuições à medida que elas chegam por e-mail.
Há uma ferramenta de revisão disponível na parte inferior da vista de tradução, onde você pode optar por navegar pelas traduções feitas por outros desde uma data determinada.
Ver também
Como posso fornecer feedback sobre um texto fonte?¶
Nas abas de contexto abaixo da tradução, você pode utilizar a aba Comentários para fornecer feedback sobre um texto fonte, ou discuti-lo com outros tradutores.
Ver 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.
Você pode importar tradução arquivos de memória de tradução existente para o Weblate.
Use a funcionalidade de importação para carregar compêndios como traduções, sugestões ou traduções que necessitem de revisão. Esta é a melhor abordagem para uma tradução única usando um compêndio ou uma base de dados de tradução similar.
Você pode configurar tmserver com todos os bancos de dados que você tem e deixar o Weblate utilizá-lo. Isto é bom quando você quer utilizá-lo várias vezes durante a tradução.
Outra opção é traduzir todos os projetos relacionados em uma única instância Weblate, o que o fará pegar automaticamente as traduções de outros projetos também.
Ver também
Tradução de máquina, Sugestões automáticas, Memória de tradução
O Weblate atualiza arquivos de tradução além de traduções?¶
Weblate tenta limitar ao mínimo as alterações nos arquivos de tradução. Para alguns formatos de arquivo, infelizmente, isso pode levar a reformatar o arquivo. Se você quiser manter o arquivo formatado do seu jeito, use um gancho (hook) de pré-commit para isso.
Ver 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.
Você é livre para definir seus próprios idiomas na interface administrativa, você só precisa fornecer informações sobre isso.
Ver também
Weblate pode destacar alterações em um texto aproximado?¶
Weblate tem suporte a isso, porém precisa dos dados para mostrar a diferença.
Para arquivos PO Gettext, você tem que passar o parâmetro --previous
para msgmerge ao atualizar arquivos PO, por exemplo:
msgmerge --previous -U po/cs.po po/phpmyadmin.pot
Para traduções monolíngues, a Weblate pode encontrar o texto anterior por ID, por isso mostra as diferenças automaticamente.
Por que é que o Weblate ainda mostra os textos de tradução antigos quando eu atualizei o modelo?¶
Weblate não tenta manipular os arquivos de tradução de nenhuma outra forma que não seja permitir que os tradutores traduzam. Por isso, também não atualiza os arquivos traduzíveis quando o modelo ou código-fonte tiverem sido alterados. Você simplesmente tem que fazer isso manualmente e fazer push das alterações para o repositório, o Weblate irá então pegar as alterações automaticamente.
Nota
Normalmente é uma boa ideia mesclar as alterações feitas na Weblate antes de atualizar os arquivos de tradução, pois de outra forma geralmente acabará com alguns conflitos para mesclar.
Por exemplo, com os arquivos PO gettext, você pode atualizar os arquivos de tradução utilizando a ferramenta msgmerge:
msgmerge -U locale/cs/LC_MESSAGES/django.mo locale/django.pot
Caso você queira fazer a atualização automaticamente, você pode instalar a extensão Atualizar arquivos PO para corresponder ao POT (msgmerge).
Ver também
Soluções de problemas¶
As solicitações às vezes falham com o erro “muitos arquivos abertos”¶
Isto acontece às vezes quando o seu repositório Git cresce demais e você tem muitos deles. Comprimir os repositórios Git irá melhorar esta situação.
A maneira mais fácil de fazer isto é executar:
# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
pushd $d
git gc
popd
done
Ver também
Ao acessar ao site recebo um erro de “Bad Request (400)”¶
Isto é muito provavelmente causado por uma ALLOWED_HOSTS
mal configurada. Ele precisa conter todos os nomes de host que você quer acessar no seu Weblate. Por exemplo:
ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]
Ver também
O que significa “Existem mais arquivos para o idioma único (en)”?¶
Isso normalmente acontece quando você tem arquivo de tradução para idioma fonte. Weblate mantém o controle de textos fonte e reserva o idioma fonte para isso. O arquivo adicional para o mesmo idioma não é processado.
Caso a tradução para o idioma fonte seja desejada, altere o Idioma fonte nas configurações do projeto.
Caso o arquivo de tradução para o idioma fonte não seja necessário, remova-o do repositório.
Caso o arquivo de tradução para o idioma fonte seja necessário, mas deva ser ignorado pelo Weblate, ajuste o Filtro de idioma para excluí-lo.
Dica
Você também pode receber mensagens de erro semelhantes para outros idiomas. Nesse caso, o motivo mais provável é que vários arquivos mapeiam para um único idioma no Weblate.
Isto pode ser causado pelo uso de códigos de idioma obsoletos juntamente com um novo (ja
e jp
para japonês) ou incluindo tanto códigos específicos do país como genéricos (fr
e fr_FR
). Veja languagage-parsing-codes para mais detalhes.
Recursos¶
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.
Você também pode usar Auxiliares de remotos do Git no Git para acessar outros VCSs.
Weblate também tem suporte à operação sem VCS, veja Arquivos locais.
Nota
Para suporte nativo de outros VCSs, Weblate requer o uso de VCS distribuídos, e provavelmente poderia ser ajustado para trabalhar com qualquer outra coisa além de Git e Mercurial, mas alguém tem que implementar esse suporte.
Ver também
Como o Weblate credita os tradutores?¶
Cada alteração feita no Weblate é colocada em commit no VCS sob o nome dos tradutores. Desta forma, cada alteração tem a devida autoria, e você pode rastreá-la usando as ferramentas VCS padrão que você usa para código.
Além disso, quando o formato do arquivo de tradução o suporta, os cabeçalhos do arquivo são atualizados para incluir o nome do tradutor.
Ver também
Por que o Weblate força mostrar todos os arquivos PO em uma única árvore?¶
O Weblate foi projetado de uma forma que cada arquivo PO é representado como um único componente. Isso é benéfico para os tradutores, então eles sabem o que estão realmente traduzindo.
Alterado na versão 4.2: Tradutores podem traduzir todos os componentes de um projeto em um idioma específico como um todo.
Por que o Weblate usa códigos de idioma como sr_Latn ou zh_Hant?¶
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 arquivos suportados¶
O Weblate tem suporte à maioria dos formatos de tradução compreendidos pelo translate-toolkit, porém cada formato sendo ligeiramente diferente, alguns problemas com formatos que não são bem testados podem surgir.
Ver também
Nota
Ao escolher um formato de arquivo para o seu aplicativo, é melhor colocar algum formato bem estabelecido no kit de ferramentas/plataforma que você usa. Dessa forma, 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 bilíngues armazenam dois idiomas em um único arquivo e tradução (exemplos típicos são GNU gettext, XLIFF ou Textos de Apple iOS). Por outro lado, formatos monolíngues identificam o texto por ID, e cada arquivo de idioma contém apenas o mapeamento desses para qualquer idioma (tipicamente Recurso de textos de Android). Alguns formatos de arquivo são utilizados em ambas as variantes, veja a descrição detalhada abaixo.
Para o uso correto de arquivos monolíngues, Weblate requer acesso a um arquivo contendo uma lista completa de textos para traduzir com sua fonte – este arquivo é chamado de Arquivo de idioma da base monolíngue dentro do Weblate, embora a nomenclatura possa variar no seu paradigma.
Além disso este fluxo de trabalho pode ser estendido usando Arquivo de idioma intermediário para incluir textos fornecidos pelos desenvolvedores, mas não para ser usado como está nos textos finais.
Detecção automática¶
O Weblate pode detectar automaticamente vários formatos de arquivos generalizados, mas essa detecção pode prejudicar seu desempenho e limitará recursos específicos para o formato de arquivo 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 |
- 1
- 2
Os plurais são necessários para localizar adequadamente os textos com contagem variável.
- 3
Os comentários podem ser usados para passar informações adicionais sobre o texto para traduzir.
- 4
O contexto é usado para diferenciar textos idênticos usados em diferentes escopos (por exemplo, Sun pode ser usado como um nome abreviado do dia “Sunday” ou como o nome de nossa estrela mais próxima).
- 5
A localização de um texto no código-fonte pode ajudar tradutores proficientes a descobrir como o texto é usado.
- 6
Estados adicionais suportados pelo formato do arquivo, além de “Não traduzido” e “Traduzido”.
- 7
Comentário XML colocado antes do elemento
<string>
, analisado como um comentário do desenvolvedor.- 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 Especificando marcadores de tradução.- 11
Os plurais são suportados apenas para Laravel, que usa em sintaxe de textos para defini-los, veja Localização em Laravel`_.
Textos somente leitura¶
Novo na versão 3.10.
O textos somente leitura dos arquivos 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 textos de Android), mas pode ser emulado em outros adicionando um marcador read-only
, consulte Personalizando comportamento usando marcadores.
GNU gettext¶
O formato mais usado para traduzir software livre.
As informações contextuais armazenadas no arquivo são suportadas ajustando seus cabeçalhos ou vinculando-se a arquivos fonte correspondentes.
O arquivo de PO de texto bilíngue normalmente se parece 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
Vazio |
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo Gettext PO |
Ver também
Traduzindo software usando GNU gettext, Traduzindo documentação usando Sphinx, Gettext no Wikipédia, PO Files, Atualizar variável ALL_LINGUAS no arquivo “configure”, Personalizar saída do gettext, Atualizar arquivo LINGUAS, Gerar arquivos MO, Atualizar arquivos PO para corresponder ao POT (msgmerge)
Gettext monolíngue¶
Alguns projetos decidem usar o gettext como formatos monolíngues – eles codificam apenas os IDs em seu código-fonte e o texto então precisa ser traduzido para todos os idiomas, incluindo o inglês. Isso é suportado, embora você tenha que escolher este formato de arquivo explicitamente ao importar componentes para o Weblate.
O arquivo 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 arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo Gettext PO (monolíngue) |
XLIFF¶
Formato baseado em XML criado para padronizar arquivos 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.
Ver 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 arquivo é parcialmente processado e mapeado para o estado “Necessita edição” no Weblate (os seguintes estados são utilizados para marcar o texto como necessitando editar se houver um alvo presente: new
, needs-translation
, needs-adaptation
, needs-l10n
). Caso o atributo state
esteja faltando, um texto é considerado traduzido assim que um elemento <target>
existir.
Se o texto de tradução tiver approved="yes"
, ela também será importada para a Weblate como “Aprovado”, qualquer outra coisa será importada como “Aguardando revisão” (que corresponde à especificação XLIFF).
Ao salvar, o Weblate não adiciona esses atributos a menos que seja necessário:
O atributo
state
só é adicionado no caso de texto ser marcado como necessitando de edição.O atributo
approved
só é adicionado no caso de texto ter sido revisto.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, a fim de ver e alterar o estado aprovado de textos.
Da mesma forma, ao importar tais arquivos (no formulário de envio), você deve escolher Importador como traduzido em Processando os textos que necessitam edição.
Ver 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 você quiser mantê-los, você tem que adicionar o marcador xml:space="preserve"
ao texto.
Por exemplo:
<trans-unit id="10" approved="yes">
<source xml:space="preserve">hello</source>
<target xml:space="preserve">Hello, world!
</target>
</trans-unit>
Especificando marcadores de tradução¶
Você pode especificar marcadores de tradução adicionais (veja Personalizando comportamento usando marcadores) utilizando 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 Gerenciando fontes).
Chaves de textos¶
Weblate identifica as unidades no arquivo 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, tornando-a mais adequada para a exibição de Weblate em vez de id
. O resname
tem de ser único em todo o arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
Vazio |
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo de tradução XLIFF |
Configuração de componente típica do Weblate para XLIFF monolíngue |
|
---|---|
Máscara de arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo 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 do aplicativo.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Propriedades Java (ISO-8859-1) |
Arquivos 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Propriedades GWT |
Traduções de INI¶
Novo na versão 4.1.
Formato de arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo INI |
Nota
O Weblate só extrai chaves de seções dentro de um arquivo INI. Caso seu arquivo INI não tenha seções, você pode querer usar Traduções para Joomla ou Propriedades Java.
Traduções de Inno Setup INI¶
Novo na versão 4.1.
Formato de arquivo Inno Setup INI para traduções.
As traduções de Inno Setup INI são geralmente usadas como traduções monolíngues.
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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo Inno Setup INI |
Nota
Apenas arquivos Unicode (.islu
) são suportados atualmente, a variante ANSI (.isl
) não é suportada atualmente.
Ver 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo de idioma Joomla |
.ts de Qt Linguist¶
Formato de tradução usado em aplicativos baseados em Qt.
Os arquivos 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
Vazio |
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo de tradução Qt Linguist |
Configuração de componente típica do Weblate ao usar como monolíngue |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo de tradução Qt Linguist |
Ver também
Manual do Qt Linguist, Qt .ts, Formatos bilíngues e monolíngues
Recurso de textos de Android¶
Formato de arquivo específico do Android para traduzir aplicativos.
Os recursos de texto do Android são monolíngues, o Arquivo de idioma da base monolíngue é armazenado em um local diferente dos outros res/values/strings.xml
.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Recurso de textos de Android |
Nota
As estruturas de `string-array`do Android não são atualmente suportadas. Para contornar isso, você pode quebrar seus vetores de textos:
<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 em um arquivo diferente e não ser disponibilizado para tradução.
Este script pode ajudar a preprocessar seus arquivos strings.xml e traduções existentes: https://gist.github.com/paour/11291062
Textos de Apple iOS¶
Formato de arquivo específico da Apple para traduzir aplicativos, utilizado tanto para traduções de aplicativos de iOS quanto de iPhone/iPad.
Os textos de Apple iOS geralmente são usados como traduções bilíngues.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Textos do iOS (UTF-8) |
Textos do PHP¶
As traduções PHP são geralmente monolíngues, por isso é recomendável especificar um arquivo base com (o que é mais frequentemente os) textos em inglês.
Exemplo de arquivo:
<?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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Textos do PHP |
Textos do PHP de Laravel¶
Alterado na versão 4.1.
Os arquivos 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',
];
Ver também
Arquivos 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 arquivos JSON de estrutura aninhada também são suportados.
Alterado na versão 4.3: A estrutura de arquivo JSON é devidamente preservada mesmo para situações complexas que foram quebradas em versões anteriores.
O formato JSON é usado principalmente para traduzir aplicativos implementados no JavaScript.
O Weblate atualmente suporta várias variantes das traduções JSON:
Arquivos simples de chave/valor, usados por exemplo por vue-i18n ou react-intl.
Arquivos com chaves aninhadas.
As traduções JSON são geralmente monolíngues, por isso é recomendável especificar um arquivo base com (o que é mais frequentemente os) textos em inglês.
Exemplo de arquivo:
{
"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 arquivos aninhados também são suportados (veja acima para os requisitos), tal arquivo pode parecer:
{
"weblate": {
"hello": "Ahoj světe!\n",
"orangutan": "",
"try": "",
"thanks": ""
}
}
Dica
O arquivo JSON e Arquivo de estrutura JSON aninhada podem ambos lidar com o mesmo tipo de arquivos. Ambos preservam a estrutura JSON existente ao traduzir.
A única diferença entre eles é ao adicionar novos textos usando Weblate. O formato de estrutura aninhada analisa a tecla recém-adicionada e insere o novo texto 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo de estrutura JSON aninhada |
Arquivos i18next do JSON¶
Alterado na versão 2.17: Desde o Weblate 2.17 e com translate-toolkit pelo menos 2.2.5, os arquivos I18next do JSON com plurais também são suportados.
i18next é uma estrutura de internacionalização escrita dentro e para JavaScript. O Weblate suporta seus arquivos de localização com recursos como plurais.
As traduções i18next são monolíngues, por isso é recomendável especificar um arquivo base com (o que é mais frequentemente os) textos em inglês.
Nota
Weblate suporta o formato v3 de I18next do JSON. As variantes V2 e V1 são em sua maioria compatíveis, com exceção de como os plurais são manuseados.
Exemplo de arquivo:
{
"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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo JSON i18next |
Arquivos JSON go-i18n¶
Novo na versão 4.1.
As traduções go-i18n são monolíngues, por isso é recomendável especificar um arquivo base com (o que é mais frequentemente os) textos em inglês.
Nota
Weblate tem suporte ao formato go-i18n JSON v1, para formatos JSON simples, use Arquivos JSON. O formato v2 com hash não é suportado no momento.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo JSON go-i18n |
Arquivo ARB¶
Novo na versão 4.1.
As traduções ARB são monolíngues, por isso é recomendável especificar um arquivo base com (o que é mais frequentemente os) textos em inglês.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo 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 arquivo usado ao traduzir extensões para Mozilla Firefox ou Google Chromium.
Nota
Embora este formato se chame JSON, sua especificação permite incluir comentários, que não fazem parte da especificação JSON. O Weblate atualmente não suporta arquivo com comentários.
Exemplo de arquivo:
{
"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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo JSON WebExtension |
Arquivos de recursos .XML¶
Novo na versão 2.3.
Um arquivo de rescurso .XML (.resx) emprega um formato de arquivo XML monolíngue usado nos aplicativos Microsoft .NET. É intercambiável com .resw, quando usa sintaxe idêntica ao .resx.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo de recurso .NET |
Arquivos CSV¶
Novo na versão 2.4.
Os arquivos CSV podem conter uma simples lista de origem e tradução. O Weblate suporta os seguintes arquivos:
Arquivos 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 Arquivo CSV como um formato de arquivo.Arquivos com dois campos – fonte e tradução (nesta ordem). Escolha Arquivo CSV simples como um formato de arquivo.
Arquivos 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 arquivo.Lembre-se de definir o Arquivo de idioma da base monolíngue quando seus arquivos são monolíngues (veja Formatos bilíngues e monolíngues).
Aviso
O formato CSV detecta automaticamente o dialeto do arquivo CSV. Em alguns casos, a detecção automática pode falhar e você terá resultados mistos. Isso é especialmente verdadeiro para arquivos CSV com linhas novas nos valores. Como solução alternativa, recomenda-se omitir caracteres entre aspas.
Exemplo de arquivo:
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 do arquivo |
|
Arquivo de idioma da base monolíngue |
Vazio |
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo CSV |
Configuração de componente típica do Weblate para CSV monolíngue |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo CSV simples |
Ver também
Arquivos YAML¶
Novo na versão 2.9.
Os arquivos YAML simples com chaves de textos e valores. Weblate também extrai textos de listas ou dicionários.
Exemplo de um arquivo YAML:
weblate:
hello: ""
orangutan": ""
try": ""
thanks": ""
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo YAML |
Ver também
Arquivos Ruby YAML¶
Novo na versão 2.9.
Arquivos YAML de i18n do Ruby com idioma como nó raiz.
Exemplo de arquivo YAML de i18n do Ruby:
cs:
weblate:
hello: ""
orangutan: ""
try: ""
thanks: ""
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo Ruby YAML |
Ver também
Arquivos DTD¶
Novo na versão 2.18.
Exemplo de arquivo DTD:
<!ENTITY hello "">
<!ENTITY orangutan "">
<!ENTITY try "">
<!ENTITY thanks "">
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo DTD |
Ver também
Arquivos XML simples¶
Novo na versão 3.9.
Exemplo de um arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo XML simples |
Ver também
Arquivos RC do Windows¶
Alterado na versão 4.1: O suporte para arquivos RC do Windows foi reescrito.
Nota
O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.
Exemplo de arquivo 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo RC |
Ver também
Arquivos de metadados de loja de aplicativos¶
Novo na versão 3.5.
Metadados usados para publicar aplicativos em várias lojas de aplicativos podem ser traduzidos. Atualmente, as seguintes ferramentas são compatíveis:
Os metadados consistem em vários arquivos de texto, que o Weblate apresentará como textos separados para traduzir.
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivos de metadados de loja de aplicativos |
Dica
Caso você não queira traduzir certos textos (por exemplo, changelogs), marque-as como somente leitura (veja Personalizando comportamento usando marcadores). Isto pode ser automatizado por Editor em massa.
Arquivos de legenda¶
Novo na versão 3.7.
Weblate pode traduzir vários arquivos de legenda:
Arquivo de legenda SubRip (
*.srt
)Arquivo de legenda MicroDVD (
*.sub
)Arquivo de legenda Advanced Substation Alpha (
*.ass
)Arquivo de legenda Substation Alpha (
*.ssa
)
Configuração de componente típica do Weblate |
|
---|---|
Máscara do arquivo |
|
Arquivo de idioma da base monolíngue |
|
Modelo para novas traduções |
|
Formato de arquivo |
Arquivo de legenda SubRip |
Ver também
Excel Open XML¶
Novo na versão 3.2.
Os arquivos Excel Open XML (.xlsx) podem ser importados e exportados.
Ao enviar arquivos XLSX para tradução, esteja ciente de que apenas a planilha ativa é considerada, e deve haver pelo menos uma coluna chamada source
(que contém o texto 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 do texto de tradução). Se você usar o download XLSX para exportar as traduções em uma pasta de trabalho do Excel, você já terá um arquivo com o formato de arquivo correto.
Arquivos 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 arquivos HTML e oferecido para a tradução.
Ver também
Arquivos 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 arquivos texto simples e oferecido para a tradução. Cada parágrafo é traduzido como um texto separado.
Há três sabores desse formato:
Arquivo texto simples
Arquivo texto DokuWiki
Arquivo texto MediaWiki
Ver 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 arquivos OpenDocument e oferecido para a tradução.
Ver 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 arquivos 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 do arquivo |
|
Arquivo de idioma da base monolíngue |
Vazio |
Modelo para novas traduções |
Vazio |
Formato de arquivo |
Arquivo TermBase eXchange |
Ver 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.
Ver também
Integração com controle de versão¶
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 você deseja usar tem que ser acessível ao Weblate. Com um repositório disponível publicamente, você 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 usuário dedicado para fazer push registrado no GitHub, Bitbucket, Codeberg e GitLab (com o nome de usuário weblate, e-mail hosted@weblate.org
e chamado Weblate push user). Você precisa adicionar esse usuário 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 usuário 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 usuário weblate, você pode configurar o Repositório do código-fonte e a URL de push do repositório utilizando 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 usuários 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 senha 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 delas para uso posterior.
Caso você queira verificar a impressão digital da chave antes de se conectar ao repositório, adicione as chaves SSH dos servidores que você vai acessar em Adicionar chave de host, a partir da mesma seção da interface de administração. Digite o nome do host que você vai acessar (por exemplo, gitlab.com
), e pressione Enviar. Verifique se sua impressão digital corresponde ao servidor que você 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 você precise acessar mais de um repositório, você 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 sua conta GitHub, veja Criando um token de acesso para uso em linha de comando.
Para configurações maiores, geralmente é melhor criar um usuário 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 você deseja traduzir. Essa abordagem também é usada para o Hosted Weblate, há usuário dedicado weblate para isso.
Ver também
URLs internas do Weblate¶
Compartilhe uma configuração de repositório entre diferentes componentes, fazendo 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. Você 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 compartilhando um repositório; por exemplo, Squash de commits git.
Repositórios HTTPS¶
Para acessar repositórios HTTPS protegidos, inclua o nome de usuário e a senha na URL. Não se preocupe, o Weblate irá remover essas informações quando a URL for mostrada aos usuários (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 seu nome de usuário ou senha contiver caracteres especiais, eles devem ser codificados para URL; por exemplo, https://usuario%40example.com:%24senha%23@bitbucket.org/…
.
Usando proxy¶
Se você precisar acessar repositórios VCS por HTTP/HTTPS usando um servidor proxy, configure o VCS para usá-lo.
Isto pode ser feito utilizando as variáveis de ambiente http_proxy
, https_proxy
e all_proxy
(como descrito na documentação do cURL) ou aplicando-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 usuário executando Weblate (veja também Permissões do sistema de arquivos) e com HOME=$DATA_DIR/home
(veja DATA_DIR
), caso contrário o Git executado pelo Weblate não o utilizará.
Ver também
Git¶
Ver 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 em 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 usuário precisa ser feita em DATA_DIR/home/.git
.
Auxiliares de remotos do Git¶
Você 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 coloque em algum lugar em 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 usando Bazaar:
bzr::lp:gnuhello
Para o repositório hello
de selenic.com usando 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 utilizando 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.
Ver 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.
Você precisa configurar credenciais de API para fazer isso funcionar.
Ver também
GitLab¶
Novo na versão 3.9.
Isto apenas adiciona uma camada fina sobre o Git usando 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, sendo 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.
Ver 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.
Você precisa configurar credenciais de API para fazer isso funcionar.
Ver também
Pagure¶
Novo na versão 4.3.2.
Isto apenas adiciona uma camada fina sobre o Git usando 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, sendo 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.
Ver também
Fazendo push de alterações para o Pagure como merge requests¶
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.
Você precisa configurar credenciais de API para fazer isso funcionar.
Ver também
Gerrit¶
Novo na versão 2.2.
Adiciona uma camada fina sobre o Git usando 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 você 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.
Ver 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, permitindo que os usuários mantenham um clone completo do repositório interno e façam commit localmente.
Nota
O Weblate tenta detectar 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 você 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 usando o layout padrão eram suportados.
Credenciais de Subversion¶
Weblate espera que você tenha aceito o certificado com antecedência (e suas credenciais, se necessário). Ele procurará inseri-las no diretório :set:`DATA_DIR`. Aceite o certificado utilizando 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
Ver também
Arquivos locais¶
Novo na versão 3.8.
O Weblate também pode operar sem um VCS remoto. As traduções iniciais são importadas carregando-as. Mais tarde, você pode substituir arquivos individuais enviando arquivos ou adicionando textos 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 você e todas as alterações são rastreadas. Caso você decida mais tarde usar um VCS para armazenar as traduções, você já tem um repositório dentro do Weblate pode basear 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. Você pode utilizá-la diretamente ou por Weblate Client.
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 você pode obter em 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 status 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.
- 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 status 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 usando API
web_url (string) – URL para acessar esse recurso usando navegador web
- Códigos de status
200 OK – quando a solicitação foi corretamente tratada
201 Created – when a new object was created successfully
204 No Content – when an object was deleted successfully
400 Bad Request – quando faltam parâmetros de 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 usuários anônimos e 5000 solicitações por hora para usuários 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 status 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 |
|
Número de segundos até que a janela de “ratelimit” seja reiniciada |
Alterado na versão 4.1: Adicionados cabeçalhos de status de limitação de taxa.
Ver 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/" }
Usuários¶
Novo na versão 4.0.
- GET /api/users/¶
Retorna uma lista de usuários se você tiver permissões para ver usuários gerenciados. Se não, então você pode ver apenas seus próprios detalhes.
Ver também
Os atributos do objeto dos usuários estão documentados em
GET /api/users/(str:username)/
.
- POST /api/users/¶
Cria um novo usuário.
- Parâmetros
username (string) – Nome de usuário
full_name (string) – Nome completo do usuário
email (string) – E-mail do usuário
is_superuser (boolean) – O usuário é superusuário? (opcional)
is_active (boolean) – O usuário está ativo? (opcional)
- GET /api/users/(str: username)/¶
Retorna informações sobre os usuários.
- Parâmetros
username (string) – Nome de usuário do usuário
- Objeto JSON de resposta
username (string) – nome de usuário de um usuário
full_name (string) – nome completo de um usuário
email (string) – e-mail de um usuário
is_superuser (boolean) – se o usuário é um superusuário
is_active (boolean) – se o usuário está ativo
date_joined (string) – data de criação do usuário
groups (array) – link 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 usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- Objeto JSON de resposta
username (string) – nome de usuário de um usuário
full_name (string) – nome completo de um usuário
email (string) – e-mail de um usuário
is_superuser (boolean) – se o usuário é um superusuário
is_active (boolean) – se o usuário está ativo
date_joined (string) – data de criação do usuário
- PATCH /api/users/(str: username)/¶
Altera os parâmetros do usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- Objeto JSON de resposta
username (string) – nome de usuário de um usuário
full_name (string) – nome completo de um usuário
email (string) – e-mail de um usuário
is_superuser (boolean) – se o usuário é um superusuário
is_active (boolean) – se o usuário está ativo
date_joined (string) – data de criação do usuário
- DELETE /api/users/(str: username)/¶
Exclui todas as informações do usuário e marca o usuário como inativo.
- Parâmetros
username (string) – Nome de usuário do usuário
- POST /api/users/(str: username)/groups/¶
Associa grupos a um usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- 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 usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- Objeto JSON de resposta
translated (int) – Número de traduções por usuário
suggested (int) – Número de sugestões por usuário
uploaded (int) – Número de envios por usuário
commented (int) – Número de comentários por usuário
languages (int) – Número de idiomas que o usuário pode traduzir
- GET /api/users/(str: username)/notifications/¶
Lista assinaturas de um usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- POST /api/users/(str: username)/notifications/¶
Associa assinaturas com um usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
- 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 usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
subscription_id (int) – ID da notificação registrada
- PUT /api/users/(str: username)/notifications/(int: subscription_id)/¶
Edita uma assinatura associada a um usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
subscription_id (int) – ID da notificação registrada
- 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 usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
subscription_id (int) – ID da notificação registrada
- 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)/¶
Exclui uma assinatura associada a um usuário.
- Parâmetros
username (string) – Nome de usuário do usuário
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 você tiver permissões para ver grupos gerenciados. Se não, então você pode ver apenas os grupos dos quais o usuário faz parte.
Ver 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)/¶
Retorna informações 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) – link para funções associadas; veja
GET /api/roles/(int:id)/
projects (array) – link para projetos associados; veja
GET /api/projects/(string:project)/
components (array) – link para componentes associados; veja
GET /api/components/(string:project)/(string:component)/
componentlist (array) – link 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)/¶
Exclui o grupo.
- Parâmetros
id (int) – ID do grupo
- POST /api/groups/(int: id)/roles/¶
Associa 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)¶
Exclui o 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)¶
Exclui o 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/¶
Associa idiomas 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)¶
Exclui idioma 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)¶
Exclui 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 usuário. Se o usuário for superusuário, então a lista de todas as funções existentes será retornada.
Ver 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)/¶
Exclui a função.
- Parâmetros
id (int) – ID da função
Idiomas¶
- GET /api/languages/¶
Retorna uma lista de todos os idiomas.
Ver também
Os atributos do objeto de idioma estão documentados em
GET /api/languages/(string:language)/
.
- POST /api/languages/¶
Cria um novo idioma.
- Parâmetros
code (string) – Nome do idioma
name (string) – Nome do idioma
direction (string) – Direção do texto
plural (object) – Fórmula e número de plural do idioma
- GET /api/languages/(string: language)/¶
Retorna informações sobre um idioma.
- 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 do idioma.
- 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 do idioma.
- 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)/¶
Exclui o idioma.
- Parâmetros
language (string) – Código do idioma
- GET /api/languages/(string: language)/statistics/¶
Retorna estatísticas para um idioma.
- Parâmetros
language (string) – Código do idioma
- Objeto JSON de resposta
total (int) – número total de textos
total_words (int) – número total de palavras
last_change (timestamp) – alterações mais recentes no idioma
recent_changes (int) – número total de alterações
translated (int) – número de textos traduzidos
translated_percent (float) – porcentagem de textos traduzidos
translated_words (int) – número de palavras traduzidas
translated_words_percent (int) – porcentagem de palavras traduzidas
translated_chars (int) – número de caracteres traduzidos
translated_chars_percent (int) – porcentagem de caracteres traduzidos
total_chars (int) – número total de caracteres
fuzzy (int) – número de textos aproximados (marcados para edição)
fuzzy_percent (int) – porcentagem de textos aproximados (marcados para edição)
failing (int) – número de textos com falha
failing – porcentagem de textos com falha
Projetos¶
- GET /api/projects/¶
Retorna uma lista de todos os projetos.
Ver 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 do projeto
- GET /api/projects/(string: project)/¶
Retorna informações sobre um projeto.
- Parâmetros
project (string) – URL amigável 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 status 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) – Habilitar revisões
source_review (boolean) – Habilitar revisões de fontes
set_language_team (boolean) – Definir o cabeçalho do “Language-Team”
enable_hooks (boolean) – Habilitar ganchos
instructions (string) – Instruções de tradução
language_aliases (string) – Aliases de 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
- DELETE /api/projects/(string: project)/¶
Novo na versão 3.9.
Exclui um projeto.
- Parâmetros
project (string) – URL amigável 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 aceitando os mesmos parâmetros.- Parâmetros
project (string) – URL amigável 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 status do repositório VCS. Este contém apenas um resumo geral de todos os repositórios para o projeto. Para obter um status mais detalhado, use http:get:/api/components/(string:project)/(string:component)/repository/.
- Parâmetros
project (string) – URL amigável 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 amigável 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 amigável 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 Arquivos 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 amigável do projeto
- Parâmetros de formulário
file zipfile – Arquivo ZIP para carregar no 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 arquivos usando 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 em um projeto.
Novo na versão 3.8.
- Parâmetros
project (string) – URL amigável 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) – número total de textos
translated (int) – número de textos traduzidos
translated_percent (float) – porcentagem de textos traduzidos
total_words (int) – número total de palavras
translated_words (int) – número de palavras traduzidas
words_percent (float) – porcentagem 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 amigável do projeto
- Objeto JSON de resposta
total (int) – número total de textos
translated (int) – número de textos traduzidos
translated_percent (float) – porcentagem de textos traduzidos
total_words (int) – número total de palavras
translated_words (int) – número de palavras traduzidas
words_percent (float) – porcentagem de palavras traduzidas
Componentes¶
- GET /api/components/¶
Retorna uma lista de componentes de tradução.
Ver 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 amigável do projeto
component (string) – URL amigável 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 controle de versão
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 arquivo
template (string) – Arquivo de idioma da base monolíngue
edit_template (string) – Editar o arquivo base
intermediate (string) – Arquivo de idioma intermediário
new_base (string) – Modelo para novas traduções
file_format (string) – Formato de arquivo
license (string) – Licença da tradução
agreement (string) – Acordo de colaborador
new_lang (string) – Adicionando 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 push do repositório
check_flags (string) – Marcadores de tradução
priority (string) – Prioridade
enforced_checks (string) – Verificações forçadas
restricted (string) – Acesso restrito
repoweb (string) – Navegador do repositório
report_source_bugs (string) – Endereço do relatório de erros do texto fonte
merge_style (string) – Estilo de mesclagem
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 de tradução
enable_suggestions (string) – Habilitar sugestões
suggestion_voting (string) – Votação de sugestões
suggestion_autoaccept (string) – Aceitar sugestões automaticamente
push_on_commit (string) – Push ao fazer commit
commit_pending_age (string) – Idade das alterações para fazer commit
auto_lock_error (string) – Bloquear em erro
language_regex (string) – Filtro de idioma
variant_regex (string) – Expressão regular de variantes
repository_url (string) – URL para status 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 status 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável do componente
- Objeto JSON da solicitação
branch (string) – Ramo do repositório VCS
file_format (string) – formato de arquivo das traduções
filemask (string) – máscara dos arquivos 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) – arquivo base para traduções monolíngues
new_base (string) – arquivo 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.
Exclui um componente.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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/
aceitando os mesmos parâmetros.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 tela do componente.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável do componente
- Objeto JSON de resposta
results (array) – vetor de capturas de tela do componente; veja
GET /api/screenshots/(int:id)/
- GET /api/components/(string: project)/(string: component)/lock/¶
Retorna o status do bloqueio do componente.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 status de bloqueio do componente.
A resposta é a mesma que
GET /api/components/(string:project)/(string:component)/lock/
.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 status do repositório VCS.
A resposta é a mesma para
GET /api/projects/(string:project)/repository/
.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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) – Status do repositório VCS como relatado pelo VCS
merge_failure – Texto descrevendo uma falha de mesclagem ou nulo se houver nenhuma
- POST /api/components/(string: project)/(string: component)/repository/¶
Executa a operação fornecida em um repositório VCS.
Veja
POST /api/projects/(string:project)/repository/
para a documentação.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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/¶
Faz o download do arquivo base para traduções monolíngues.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável do componente
- GET /api/components/(string: project)/(string: component)/new_template/¶
Faz o download do arquivo de modelo para novas traduções.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 objeto 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável do componente
project_slug (string) – Slug do projeto para remover
Traduções¶
- GET /api/translations/¶
Retorna uma lista de traduções.
Ver 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)/¶
Retorna informações sobre uma tradução.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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) – número de textos contendo verificações com falha
failing_checks_percent (float) – porcentagem de textos contendo verificações com falha
failing_checks_words (int) – número de palavras contendo verificações com falha
filename (string) – Nome de arquivo da tradução
fuzzy (int) – número de textos aproximados (marcados para edição)
fuzzy_percent (float) – porcentagem de textos aproximados (marcados para edição)
fuzzy_words (int) – número de palavras em textos aproximados (marcados para edição)
have_comment (int) – número de textos com comentário
have_suggestion (int) – número de textos com sugestão
is_template (boolean) – se a tradução tem uma base monolíngue
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 último autor
last_change (timestamp) – data e hora da última alteração
revision (string) – hash de revisão para o arquivo
share_url (string) – URL para compartilhar levando à página de engajamento
total (int) – número total de textos
total_words (int) – número total de palavras
translate_url (string) – URL para tradução
translated (int) – número de textos traduzidos
translated_percent (float) – porcentagem de textos traduzidos
translated_words (int) – número de palavras traduzidas
repository_url (string) – URL para status do repositório; veja
GET /api/translations/(string:project)/(string:component)/(string:language)/repository/
file_url (string) – URL para objeto arquivo; 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 textos; 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.
Exclui uma tradução.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 aceitando os mesmos parâmetros.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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 (string) – O valor da unidade de tradução
Ver também
- POST /api/translations/(string: project)/(string: component)/(string: language)/autotranslate/¶
Aciona a tradução automática.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável do componente
language (string) – Código de idioma de tradução
- Objeto JSON da solicitação
mode (string) – Modo de tradução automática
filter_type (string) – Tipo de filtro da tradução automática
auto_source (string) – Fonte da tradução automática –
mt
ouothers
component (string) – Desativa contribuição para a memória de tradução compartilhada do projeto para obter acesso a componentes adicionais.
engines (array) – Mecanismos de tradução de máquina
threshold (string) – Limite de pontuação
- GET /api/translations/(string: project)/(string: component)/(string: language)/file/¶
Baixa o arquivo de tradução atual como está armazenado no VCS (sem o parâmetro
format
) ou convertido para outro formato (veja Baixando 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 arquivo inteiro em vez de nos dados. O conjunto de parâmetros aceitos no
format
difere e sem tal parâmetro você obtém o arquivo de tradução armazenado no VCS.- Parâmetros de consulta
format – Formato de arquivo para usar; se não especificado nenhuma conversão de formato acontece; formatos de arquivo suportados:
po
,mo
,xliff
,xliff11
,tbx
,csv
,xlsx
,json
,aresource
,strings
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável do componente
language (string) – Código de idioma de tradução
- POST /api/translations/(string: project)/(string: component)/(string: language)/file/¶
Envia novo arquivo com traduções.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável do componente
language (string) – Código de idioma de tradução
- Parâmetros de formulário
string conflicts – Como lidar com conflitos (
ignore
,replace-translated
oureplace-approved
)file file – Arquivo 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 textos aproximados (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 status do repositório VCS.
A resposta é a mesma que para
GET /api/components/(string:project)/(string:component)/repository/
.- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 amigável do projeto
component (string) – URL amigável 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/¶
Retorna as estatísticas de tradução detalhadas.
Novo na versão 2.7.
- Parâmetros
project (string) – URL amigável do projeto
component (string) – URL amigável 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 com falha
failing_percent (float) – porcentagem de verificações com falha
fuzzy (int) – número de textos aproximados (marcados para edição)
fuzzy_percent (float) – porcentagem de textos aproximados (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 último autor
last_change (timestamp) – data da última alteração
name (string) – nome de idioma
total (int) – número total de textos
translated (int) – número de textos traduzidos
translated_percent (float) – porcentagem de textos traduzidos
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 um texto traduzido 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.
Ver 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 textos plurais.Retorna informações 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) – texto fonte
previous_source (string) – texto fonte anterior usado para correspondência aproximada
target (array) – texto alvo
id_hash (string) – identificador único da unidade
content_hash (string) – identificador único do texto 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á marcada com “fuzzy” ou para revisão
translated (boolean) – se a unidade está traduzida
approved (boolean) – se a tradução está aprovada
position (int) – posição da unidade no arquivo de tradução
has_suggestion (boolean) – se a unidade tem sugestões
has_comment (boolean) – se a unidade tem comentários
has_failing_check (boolean) – se a unidade tem verificações com falha
num_words (int) – número de palavras fonte
priority (int) – prioridade de tradução. 100 é o padrão
id (int) – identificador da unidade
explanation (string) – Expansão de texto, disponível em unidades fonte, veja Informações adicionais sobre textos fonte
extra_flags (string) – Marcadores de textos adicionais, disponíveis nas unidades fonte, veja Personalizando comportamento usando marcadores
web_url (string) – URL onde a unidade pode ser editada
souce_unit (string) – Link da unidade fonte; veja
GET /api/units/(int:id)/
- PATCH /api/units/(int: id)/¶
Novo na versão 4.3.
Executa 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 habilitado, veja Revisores dedicados)
target (array) – texto alvo
explanation (string) – Expansão de texto, disponível em unidades fonte, veja Informações adicionais sobre textos fonte
extra_flags (string) – Marcadores de textos adicionais, disponíveis nas unidades fonte, veja Personalizando comportamento usando marcadores
- PUT /api/units/(int: id)/¶
Novo na versão 4.3.
Executa atualização completa 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 habilitado, veja Revisores dedicados)
target (array) – texto alvo
explanation (string) – Expansão de texto, disponível em unidades fonte, veja Informações adicionais sobre textos fonte
extra_flags (string) – Marcadores de textos adicionais, disponíveis nas unidades fonte, veja Personalizando comportamento usando marcadores
- DELETE /api/units/(int: id)/¶
Novo na versão 4.3.
Exclui uma 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.
Ver 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 usuário do usuário para filtrar
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)/¶
Retorna informações sobre alteração de 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 usuário 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 de texto da ação
target (string) – texto ou detalhe alterado de evento
id (int) – identificador da alteração
Capturas de tela¶
Novo na versão 2.14.
- GET /api/screenshots/¶
Retorna uma lista de informações de texto de capturas de tela.
Ver também
Os atributos do objeto de captura de tela estão documentados em
GET /api/screenshots/(int:id)/
.
- GET /api/screenshots/(int: id)/¶
Retorna informações sobre dados de captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- Objeto JSON de resposta
name (string) – nome de uma captura de tela
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para baixar um arquivo; veja
GET /api/screenshots/(int:id)/file/
units (array) – link para associar informações sobre texto fonte; veja
GET /api/units/(int:id)/
- GET /api/screenshots/(int: id)/file/¶
Baixa a imagem de captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- POST /api/screenshots/(int: id)/file/¶
Substitui a imagem de captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- Parâmetros de formulário
file image – Arquivo 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 texto fonte com uma captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- Parâmetros de formulário
string unit_id – ID da unidade
- Objeto JSON de resposta
name (string) – nome de uma captura de tela
translation (string) – URL de um objeto de tradução relacionado
file_url (string) – URL para baixar um arquivo; veja
GET /api/screenshots/(int:id)/file/
units (array) – link para associar informações sobre texto fonte; veja
GET /api/units/(int:id)/
- DELETE /api/screenshots/(int: id)/units/(int: unit_id)¶
Remove a associação de texto fonte com captura de tela.
- Parâmetros
id (int) – ID da captura de tela
unit_id – ID de unidade do texto fonte
- POST /api/screenshots/¶
Cria uma nova captura de tela.
- Parâmetros de formulário
file image – Arquivo enviado
string name – Nome da captura de tela
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 uma captura de tela
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para baixar um arquivo; veja
GET /api/screenshots/(int:id)/file/
units (array) – link para associar informações sobre texto fonte; veja
GET /api/units/(int:id)/
- PATCH /api/screenshots/(int: id)/¶
Edita informações parciais sobre captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- Objeto JSON de resposta
name (string) – nome de uma captura de tela
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para baixar um arquivo; veja
GET /api/screenshots/(int:id)/file/
units (array) – link para associar informações sobre texto fonte; veja
GET /api/units/(int:id)/
- PUT /api/screenshots/(int: id)/¶
Edita informações completas sobre captura de tela.
- Parâmetros
id (int) – ID da captura de tela
- Objeto JSON de resposta
name (string) – nome de uma captura de tela
component (string) – URL de um objeto de componente relacionado
file_url (string) – URL para baixar um arquivo; veja
GET /api/screenshots/(int:id)/file/
units (array) – link para associar informações sobre texto fonte; veja
GET /api/units/(int:id)/
- DELETE /api/screenshots/(int: id)/¶
Exclui captura de tela.
- Parâmetros
id (int) – ID da captura de tela
Extensões¶
Novo na versão 4.4.1.
- GET /api/addons/¶
Retorna uma lista de extensões.
Ver 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
Ver 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)/¶
Exclui extensão.
- Parâmetros
id (int) – ID da extensão
Listas dos componentes¶
Novo na versão 4.0.
- GET /api/component-lists/¶
Retorna uma lista de listas de componentes.
Ver 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 em um painel
components (array) – link 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 em um 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 em um painel
- DELETE /api/component-lists/(str: slug)/¶
Exclui 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 textos comuns. Use a respectiva 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 porcentagem
result (object) – Resultado da tarefa ou detalhes do progresso
log (string) – Registros da tarefa
Metrics¶
- GET /api/metrics/¶
Returns server metrics.
- Objeto JSON de resposta
units (int) – Número de unidades
units_translated (int) – Número de unidades traduzidas
users (int) – número de usuários
changes (int) – Quantidade de alterações
projects (int) – Número de projetos
components" (int) – Número de componentes
translations" (int) – Número de traduções
languages" (int) – Quantidade de idiomas usados
checks" (int) – Número de verificações de qualidade acionadas
configuration_errors" (int) – Número de erros de configuração
suggestions" (int) – Número de sugestões pendentes
celery_queues (object) – Comprimento das filas de Celery, veja Tarefas de fundo usando Celery
name (string) – Nome do servidor configurado
Ganchos de notificação¶
Os ganchos de notificação permitem que aplicativos externos notifiquem o Weblate que o repositório VCS foi atualizado.
Você 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 (baixando do VCS e procurando 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 em um projeto (baixando do VCS e procurando 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: habilite o gancho do serviço Weblate nas configurações do repositório e defina a URL para a URL de sua instalação do Weblate.
Ver também
- Recebendo automaticamente alterações do GitHub
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 habilitar ganchos para todo o Weblate
- POST /hooks/gitlab/¶
Gancho especial para lidar com notificações do GitLab e atualizar automaticamente os componentes correspondentes.
Ver também
- Recebendo automaticamente alterações do GitLab
Para instrução sobre configurar integração com GitLab
- https://docs.gitlab.com/ce/user/project/integrations/webhooks.html
Informações genéricas sobre Webhooks do GitLab
ENABLE_HOOKS
Para habilitar ganchos para todo o Weblate
- POST /hooks/bitbucket/¶
Gancho especial para lidar com notificações do Bitbucket e atualizar automaticamente os componentes correspondentes.
Ver também
- Recebendo automaticamente alterações do Bitbucket
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 habilitar 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.
Ver também
- Recebendo automaticamente alterações do Pagure
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 habilitar 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.
Ver também
- Recebendo automaticamente alterações do Azure Repos
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 habilitar 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.
Ver também
- Recebendo automaticamente alterações do Gitea Repos
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 habilitar 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.
Ver também
- Recebendo automaticamente alterações de Gitee Repos
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 habilitar ganchos para todo o Weblate
Exportações¶
O Weblate fornece várias exportações para permitir que você 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.
Ver também
Weblate Client¶
Novo na versão 2.7: Há suporte total do utilitário wlc desde o Weblate 2.7. Se você estiver usando uma versão mais antiga, algumas incompatibilidades com a API podem ocorrer.
Instalação¶
O Weblate Client é enviado separadamente e inclui o módulo Python. Para usar os comandos abaixo, você precisa instalar wlc
:
pip3 install wlc
Uso com 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
Instalação:
docker pull weblate/wlc
O contêiner 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 contêiner 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
Você pode querer passar seu Arquivos de configuração para o contêiner Docker, a abordagem mais fácil é adicionar 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
(consulte Arquivos de configuração para outros locais). Crie-o para corresponder ao seu ambiente:
[weblate]
url = https://hosted.weblate.org/api/
[keys]
https://hosted.weblate.org/api/ = APIKEY
Em seguida, você pode invocar comandos no servidor padrão:
wlc ls
wlc commit sandbox/hello-world
Ver também
Sinopse¶
wlc [arguments] <command> [options]
Os comandos indicam, na verdade, qual operação deve ser realizada.
Descrição¶
Weblate Client é uma biblioteca Python e utilitário de linha de comando para gerenciar o Weblate remotamente usando 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 instância do Weblate usar. Estes devem ser inseridos 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 arquivo de configuração, consulte Arquivos de configuração. A URL deve terminar com
/api/
, por exemplo,https://hosted.weblate.org/api/
.
- --key KEY¶
Especifica a chave do usuário de API a ser usada. Substitui qualquer valor encontrado no arquivo de configuração, consulte Arquivos de configuração. Você pode encontrar sua chave em seu perfil no Weblate.
- --config PATH¶
Substitui o caminho do arquivo de configuração, consulte Arquivos de configuração.
- --config-section SECTION¶
Substitui a seção de arquivos de configuração em uso, consulte Arquivos de configuração.
Comandos¶
Os seguintes comandos 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 commit das alterações feitas em um objeto Weblate (tradução, componente ou projeto).
- pull¶
Faz pull das alterações remotas do repositório no objeto Weblate (tradução, componente ou projeto).
- push¶
Faz push das alterações do objeto Weblate para o 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 quaisquer alterações não rastreadas em um objeto Weblate para corresponder ao repositório remoto (tradução, componente ou projeto).
- repo¶
Exibe o status do repositório para um determinado objeto 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 status 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.
Baixa um arquivo de tradução.
- --convert¶
Converte o formato do arquivo, se nenhuma conversão não especificada acontecer no servidor e o arquivo for baixado como está no repositório.
- --output¶
Especifica o arquivo para salvar a saída, se não for especificado, ele é impresso na stdout (saída padrão).
- upload¶
Novo na versão 0.9: Suportado desde o wlc 0.9.
Baixa um arquivo de tradução.
- --overwrite¶
Substitui as traduções existentes ao enviar.
- --input¶
Arquivo a partir do qual o conteúdo é lido, se não especificado é lido a partir de stdin (entrada padrão).
Dica
Você pode obter informações mais detalhadas sobre como invocar comandos individuais passando --help
, por exemplo: wlc ls --help
.
Arquivos de configuração¶
.weblate
,.weblate.ini
,weblate.ini
Alterado na versão 1.6: Os arquivos com extensão .ini também são aceitos.
Por arquivo de configuração de projeto
C:\Users\NAME\AppData\weblate.ini
Novo na versão 1.6.
Arquivo de configuração do usuário no Windows.
~/.config/weblate
Arquivo de configuração do usuário
/etc/xdg/weblate
Arquivo de configuração para todo o sistema
O programa segue a especificação XDG, para que você possa ajustar a colocação de arquivos de configuração por variáveis de ambiente XDG_CONFIG_HOME
ou XDG_CONFIG_DIRS
. No Windows, o diretório APPDATA
é o local preferido para o arquivo de configuração.
As configurações seguintes podem ser configuradas na seção [weblate]
(você pode personalizar isso por --config-section
):
- key
Chave de API para acessar o Weblate.
- url
URL de API do servidor, com o padrão sendo
http://127.0.0.1:8000/api/
.
- translation
Caminho para a tradução padrão - componente ou projeto.
O arquivo de configuração é um arquivo 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 seção [keys]
:
[keys]
https://hosted.weblate.org/api/ = APIKEY
Isso permite que você armazene chaves em 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 falar.
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/
Você 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 commit de alterações pendentes no projeto atual:
$ wlc commit
API Python do Weblate¶
Instalação¶
A API Python é distribuída separadamente, você precisa instalar o Weblate Client: (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 usuário
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¶
Instalando o Weblate¶
Instalando usando Docker¶
Com a implantação do Weblate dockerizada, você pode colocar 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 em um ú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 arquivos, banco de dados e Weblate).
Muitos usuários 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 seu tamanho mínimo fazendo clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções gerenciadas nele.
Instalação¶
Os exemplos a seguir presumem que você 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 arquivo
docker-compose.override.yml
com 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 usuário admin é criado com uma senha aleatória mostrada na primeira inicialização.O exemplo fornecido faz o Weblate escutar na porta 80. Edite o mapeamento da porta no arquivo
docker-compose.override.yml
para alterar isso.Inicie os contêineres do Weblate:
docker-compose up
Aproveite a implantação do Weblate, ele está acessível na porta 80 do contêiner weblate
.
Alterado na versão 2.15-2: A configuração foi alterada recentemente, antes havia um contêiner de servidor web separado, desde 2.15-2 o servidor web está embutido no contêiner do Weblate.
Alterado na versão 3.7.1-6: Em julho de 2019 (começando com a tag 3.7.1-6), os contêineres não estão sendo executados como um usuário root. Isso mudou a porta exposta de 80 para 8080.
Ver também
Contêiner Docker com suporte a HTTPS¶
Por favor, veja Instalação para instruções genéricas de implantação, esta seção apenas menciona diferenças em comparação a ela.
Usando seus próprios certificados SSL¶
Novo na versão 3.8-3.
No caso de você ter seu próprio certificado SSL que deseja usar, basta colocar os arquivos no volume de dados Weblate (veja Volumes de contêiner Docker):
ssl/fullchain.pem
contendo o certificado, incluindo quaisquer certificados CA necessáriosssl/privkey.pem
contendo a chave privada
Ambos os arquivos devem pertencer ao mesmo usuário que inicia o contêiner do docker e ter a máscara de arquivo definida como 600
(legível e gravável apenas pelo usuário dono).
Além disso, o contêiner Weblate agora aceitará conexões SSL na porta 4443. Você ainda vai 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 você 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 contêiner do docker, você 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 de seu ambiente.
Certificados SSL automáticos usando Let’s Encrypt¶
Caso você queira usar certificados SSL Let’s Encrypt gerados automaticamente na instalação pública, você precisa adicionar um proxy HTTPS reverso em um contêiner Docker adicional, https-portal será usado para isso. Isso é usado no arquivo docker-compose-https.yml
. Em seguida, crie um arquivo docker-compose-https.override.yml
com 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, você precisa passar os dois arquivos para 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 contêiner Docker¶
Normalmente, é uma boa ideia atualizar apenas o contêiner Weblate e manter o contêiner PostgreSQL na versão que você possui, já que atualizar o PostgreSQL é muito doloroso e na maioria dos casos não traz muitos benefícios.
Você pode fazer isso mantendo 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 você 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 atualizando para as versões mais recentes.
Você também pode 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 contêiner, você pode entrar como usuário admin com a senha fornecida em WEBLATE_ADMIN_PASSWORD
, ou uma senha aleatória gerada na primeira inicialização se não tiver sido definida.
Para redefinir a senha do admin, reinicie o contêiner com WEBLATE_ADMIN_PASSWORD
definido com a nova senha.
Ver também
WEBLATE_ADMIN_PASSWORD
,
WEBLATE_ADMIN_NAME
,
WEBLATE_ADMIN_EMAIL
Número de processos e consumo de memória¶
O número de processos de trabalho para uWSGI e Celery é determinado automaticamente com base no número 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 você tenha muitos núcleos de CPU e tenha problemas de memória insuficiente, tente reduzir o número de workers:
environment:
WEBLATE_WORKERS: 2
Você 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.
Você pode executar vários contêineres Weblate para dimensionar o serviço horizontalmente. O volume /app/data
deve ser compartilhado por todos os contêineres, é recomendado usar um sistema de arquivos de cluster como o GlusterFS para isso. O volume /app/cache
deve ser separado para cada contêiner.
Cada contêiner Weblate tem um papel definido usando 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.
Você 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 contêiner Docker usando variáveis de ambiente:
Configurações genéricas¶
- WEBLATE_DEBUG¶
Configura o modo de depuração do Django usando
DEBUG
.Exemplo:
environment: WEBLATE_DEBUG: 1
Ver 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.
Ver 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 usuário 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 senha para o usuário admin.
Se não for definido e o usuário admin não existir, ele será criado com uma senha aleatória mostrada na primeira inicialização do contêiner.
Se não for definido e o usuário admin existir, nenhuma ação será executada.
Se definido, o usuário admin é ajustado em cada inicialização do contêiner para corresponder a
WEBLATE_ADMIN_PASSWORD
,WEBLATE_ADMIN_NAME
eWEBLATE_ADMIN_EMAIL
.
Aviso
Pode ser um risco de segurança armazenar a senha no arquivo de configuração. Considere usar essa variável apenas para configuração inicial (ou deixe o Weblate gerar uma senha aleatória na inicialização) ou para recuperação de senha.
- WEBLATE_ADMIN_PASSWORD_FILE¶
Define o caminho para um arquivo contendo a senha para o usuário admin.
Ver também
- WEBLATE_SERVER_EMAIL¶
- WEBLATE_DEFAULT_FROM_EMAIL¶
Configura o endereço para e-mails de saída.
Ver 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 usando
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 registros são abertos alternando
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 contêiner 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 links 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 contêiner Weblate aceite conexões HTTPS, você precisa configurar isso também, consulte Contêiner 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 contêiner Weblate.
Habilita
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á sendo executado por trás de um proxy reverso fazendo 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
Ver também
- WEBLATE_REQUIRE_LOGIN¶
Habilita
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 usando
LOGIN_REQUIRED_URLS_EXCEPTIONS
.Você pode substituir configurações inteiras ou modificar o valor padrão usando as variáveis
ADD
eREMOVE
.
- WEBLATE_GOOGLE_ANALYTICS_ID¶
Configura o ID para o Google Analytics alterando
GOOGLE_ANALYTICS_ID
.
- WEBLATE_GITHUB_USERNAME¶
Configura o nome de usuário do GitHub para pull requests do GitHub alterando
GITHUB_USERNAME
.Ver 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 alterando
GITHUB_TOKEN
.Ver também
- WEBLATE_GITLAB_USERNAME¶
Configura o nome de usuário do GitLab para merge requests do GitLab alterando
GITLAB_USERNAME
Ver também
- WEBLATE_GITLAB_TOKEN¶
Configura o token de acesso pessoal do GitLab para merge requests do GitLab via API alterando
GITLAB_TOKEN
Ver também
- WEBLATE_PAGURE_USERNAME¶
Configura o nome de usuário do Pagure para merge requests do Pagure alterando
PAGURE_USERNAME
Ver também
- WEBLATE_PAGURE_TOKEN¶
Configura o token de acesso pessoal do Pagure para merge requests do Pagure via API alterando
PAGURE_TOKEN
Ver 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 Controle 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 de 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
.Ver também
- WEBLATE_URL_PREFIX¶
Configura o prefixo da URL onde o Weblate está sendo executado, veja
URL_PREFIX
.
- WEBLATE_SILENCED_SYSTEM_CHECKS¶
Configura verificações que você 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
Você 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.Ver 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¶
- WEBLATE_MT_APERTIUM_APY¶
Habilita 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¶
Habilita 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¶
Habilita Google Tradutor e define
MT_GOOGLE_KEY
- WEBLATE_MT_MICROSOFT_COGNITIVE_KEY¶
Habilita 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¶
Define
MT_MICROSOFT_REGION
- WEBLATE_MT_MICROSOFT_BASE_URL¶
Define
MT_MICROSOFT_BASE_URL
- WEBLATE_MT_MODERNMT_KEY¶
Habilita ModernMT e define
MT_MODERNMT_KEY
.
- WEBLATE_MT_MYMEMORY_ENABLED¶
Habilita 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¶
Habilita tradução de máquina do Glosbe.
environment: WEBLATE_MT_GLOSBE_ENABLED: 1
- WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED¶
Habilita 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)
Ver também
- WEBLATE_SOCIAL_AUTH_GITHUB_KEY¶
- WEBLATE_SOCIAL_AUTH_GITHUB_SECRET¶
Habilita Autenticação por GitHub.
- WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY¶
- WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET¶
Habilita Autenticação por Bitbucket.
- WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY¶
- WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET¶
Habilita 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¶
Habilita OAuth 2 do Google.
- WEBLATE_SOCIAL_AUTH_GITLAB_KEY¶
- WEBLATE_SOCIAL_AUTH_GITLAB_SECRET¶
- WEBLATE_SOCIAL_AUTH_GITLAB_API_URL¶
Habilita OAuth 2 do GitLab.
- WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY¶
- WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET¶
Habilita 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¶
Habilita 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¶
Habilita autenticação com Keycloak, veja a documentação.
Você pode habilitar a autenticação usando serviços de autenticação de fornecedores Linux, definindo 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 contêiner. Caso você queira usar chaves próprias, coloque 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 contêineres Weblate e PostgreSQL.
- POSTGRES_PASSWORD¶
Senha do PostgreSQL.
- POSTGRES_PASSWORD_FILE¶
Caminho para o arquivo que contém a senha do PostgreSQL. Use como uma alternativa para POSTGRES_PASSWORD.
- POSTGRES_USER¶
Nome de usuário 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 Configurando Weblate para usar PostgreSQL.
Configurações de backup de banco de dados¶
Ver também
- WEBLATE_DATABASE_BACKUP¶
Configura o despejo diário do banco de dados usando
DATABASE_BACKUP
. O padrão éplain
.
Configuração do servidor de cache¶
O uso do Redis é altamente recomendado pelo Weblate e você deve fornecer uma instância do Redis ao executar o Weblate no Docker.
Ver 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 senha do servidor Redis, não usada por padrão.
- REDIS_TLS¶
Habilita 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, você 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
Ver também
- WEBLATE_EMAIL_HOST¶
Nome de host ou endereço IP do servidor de correio.
- WEBLATE_EMAIL_PORT¶
Porta do servidor de correio, o padrão é 25.
Ver também
- WEBLATE_EMAIL_HOST_USER¶
Usuário da autenticação por e-mail.
Ver também
- WEBLATE_EMAIL_HOST_PASSWORD¶
Senha da autenticação por e-mail.
Ver também
- WEBLATE_EMAIL_HOST_PASSWORD_FILE¶
Caminho para o arquivo contendo a senha da autenticação por e-mail.
Ver 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 você estiver tendo problemas, consulte a configuração TLS explícita
WEBLATE_EMAIL_USE_TLS
.Ver 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 você estiver tendo conexões travadas, consulte a configuração TLS implícita
WEBLATE_EMAIL_USE_SSL
.Ver também
- WEBLATE_EMAIL_BACKEND¶
Configura o back-end do Django para usar no envio de e-mails.
Ver também
Integração do site¶
- WEBLATE_GET_HELP_URL¶
Configura
GET_HELP_URL
.
- WEBLATE_STATUS_URL¶
Configura
STATUS_URL
.
Relatório de erro¶
É recomendado coletar erros da instalação sistematicamente, veja Coletando relatórios de erros.
Para habilitar o suporte para Rollbar, defina o seguinte:
- ROLLBAR_KEY¶
Seu token de acesso ao servidor de postagem Rollbar.
- ROLLBAR_ENVIRONMENT¶
Seu ambiente Rollbar, o padrão é
production
.
Para habilitar o suporte para Sentry, defina o seguinte:
- SENTRY_DSN¶
Seu DSN no Sentry.
- SENTRY_ENVIRONMENT¶
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 contêiner. 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
Você é responsável por configurar o serviço dos arquivos gerados pelo Weblate, ele só armazena os arquivos no local configurado.
Alterando aplicativos, verificações, complementos ou correções automáticas habilitados¶
Novo na versão 3.8-5.
A configuração embutida de verificações, complementos ou correções automática habilitados 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
Ver também
Configurações do contêiner¶
- WEBLATE_WORKERS¶
Novo na versão 4.6.1.
Número base de processos de trabalho em execução no contêiner. Quando não definido, é determinado automaticamente na inicialização do contêiner com base no número 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
. Você 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 você 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, o número 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 contêiner. 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 contêiner 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 contêiner Docker¶
Há dois volumes (dados e cacho) exportados pelo contêiner Weblate. Os outros contêineres de serviço (PostgreSQL ou Redis) também têm seus volumes de dados, 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, contêiner e nomes de volume). No contêiner, ele é montado como /app/data
.
O volume do cache é montado como /app/cache
e é usado para armazenar arquivos estáticos. Seu conteúdo é recriado na inicialização do contêiner e o volume pode ser montado usando um sistema de arquivos efêmero como tmpfs.
Ao criar os volumes manualmente, os diretórios devem pertencer ao UID 1000, pois é o usuário usado dentro do contêiner.
Ver também
Personalização adicional da configuração¶
Você pode personalizar ainda mais a instalação do Weblate no volume de dados, veja Volumes de contêiner Docker.
Arquivos de configuração personalizados¶
Você também pode sobrescrever a configuração em /app/data/settings-override.py
(veja Volumes de contêiner Docker). Isso é executado no final das configurações embutidas, depois que todas as configurações de ambiente são carregadas e você pode ajustá-las ou substituí-las.
Substituindo o logotipo e outros arquivos estáticos¶
Novo na versão 3.8-5.
Os arquivos estáticos que vêm com Weblate podem ser sobrescritos colocando em /app/data/python/customize/static
(veja Volumes de contêiner Docker). Por exemplo, criar /app/data/python/customize/static/favicon.ico
substituirá o favicon.
Dica
Os arquivos são copiados para o local correspondente na inicialização do contêiner, portanto, é necessário reiniciar o Weblate após alterar o conteúdo do volume.
Como alternativa, você também pode incluir o próprio módulo (veja ../ customize) e adicioná-lo como um volume separado ao contêiner 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 seus próprios módulos Python¶
Novo na versão 3.8-5.
Você pode colocar os próprios módulos Python em /app/data/python/
(veja Volumes de contêiner Docker) e eles podem ser carregados pelo Weblate, provavelmente usando docker-custom -config.
Ver também
Selecione sua máquina – provedores locais ou em nuvem¶
Com Docker Machine, você pode criar sua implantação Weblate em sua máquina local ou em qualquer grande número de implantações baseadas em nuvem, por exemplo, Amazon AWS, Greenhost e muitos outros provedores.
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 em um ú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 arquivos, banco de dados e Weblate).
Muitos usuários 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 seu tamanho mínimo fazendo clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções gerenciadas 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, dependendo dos recursos que você 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 Executando servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo usando Celery. Dependendo do tamanho da sua instalação, você pode querer 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
# 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 usando o virtualenv para instalar o Weblate em um ambiente separado do seu sistema. Se você 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 dependendo dos recursos que você 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, você terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o arquivo
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Ajuste os valores no novo arquivo
settings.py
de acordo com sua preferência. Você pode ficar com o exemplo enviado para fins de teste, mas você vai querer mudanças para configuração de produção, veja Ajustando a configuração.Crie o banco de dados e sua estrutura 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 usuário do administrador e copie a senha de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete arquivos estáticos para o servidor web (veja Executando servidor e Servindo arquivos estáticos):
weblate collectstatic
Compactar arquivos JavaScript e CSS (opcional, veja Comprimindo 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 usando Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executando servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, seu servidor Weblate agora está funcionando e você pode começar a usá-lo.
Agora você pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registre-se com novos usuários.
Agora você pode executar comandos Weblate usando o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Você pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou usando 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 você precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta para o repositório VCS e seleciona quais arquivos 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 arquivos traduzíveis. Weblate suporta uma ampla gama de formatos, incluindo arquivos PO gettext, textos de recursos Android, propriedades de textos iOS, propriedades Java ou arquivos Qt Linguist, consulte Formatos de arquivos suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado dependendo do tamanho do seu repositório VCS e do número de mensagens a serem traduzidas), você 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 em um ú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 arquivos, banco de dados e Weblate).
Muitos usuários 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 seu tamanho mínimo fazendo clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções gerenciadas 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, dependendo dos recursos que você 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 Executando servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo usando Celery. Dependendo do tamanho da sua instalação, você pode querer 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 usando o virtualenv para instalar o Weblate em um ambiente separado do seu sistema. Se você 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 dependendo dos recursos que você 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, você terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o arquivo
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Ajuste os valores no novo arquivo
settings.py
de acordo com sua preferência. Você pode ficar com o exemplo enviado para fins de teste, mas você vai querer mudanças para configuração de produção, veja Ajustando a configuração.Crie o banco de dados e sua estrutura 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 usuário do administrador e copie a senha de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete arquivos estáticos para o servidor web (veja Executando servidor e Servindo arquivos estáticos):
weblate collectstatic
Compactar arquivos JavaScript e CSS (opcional, veja Comprimindo 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 usando Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executando servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, seu servidor Weblate agora está funcionando e você pode começar a usá-lo.
Agora você pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registre-se com novos usuários.
Agora você pode executar comandos Weblate usando o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Você pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou usando 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 você precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta para o repositório VCS e seleciona quais arquivos 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 arquivos traduzíveis. Weblate suporta uma ampla gama de formatos, incluindo arquivos PO gettext, textos de recursos Android, propriedades de textos iOS, propriedades Java ou arquivos Qt Linguist, consulte Formatos de arquivos suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado dependendo do tamanho do seu repositório VCS e do número de mensagens a serem traduzidas), você 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 em um ú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 arquivos, banco de dados e Weblate).
Muitos usuários 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 seu tamanho mínimo fazendo clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções gerenciadas 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, dependendo dos recursos que você 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 Executando servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo usando Celery. Dependendo do tamanho da sua instalação, você pode querer 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 usando o virtualenv para instalar o Weblate em um ambiente separado do seu sistema. Se você 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 dependendo dos recursos que você 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, você terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o arquivo
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Ajuste os valores no novo arquivo
settings.py
de acordo com sua preferência. Você pode ficar com o exemplo enviado para fins de teste, mas você vai querer mudanças para configuração de produção, veja Ajustando a configuração.Crie o banco de dados e sua estrutura 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 usuário do administrador e copie a senha de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete arquivos estáticos para o servidor web (veja Executando servidor e Servindo arquivos estáticos):
weblate collectstatic
Compactar arquivos JavaScript e CSS (opcional, veja Comprimindo 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 usando Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executando servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, seu servidor Weblate agora está funcionando e você pode começar a usá-lo.
Agora você pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registre-se com novos usuários.
Agora você pode executar comandos Weblate usando o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Você pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou usando 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 você precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta para o repositório VCS e seleciona quais arquivos 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 arquivos traduzíveis. Weblate suporta uma ampla gama de formatos, incluindo arquivos PO gettext, textos de recursos Android, propriedades de textos iOS, propriedades Java ou arquivos Qt Linguist, consulte Formatos de arquivos suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado dependendo do tamanho do seu repositório VCS e do número de mensagens a serem traduzidas), você 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 em um ú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 arquivos, banco de dados e Weblate).
Muitos usuários 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 seu tamanho mínimo fazendo clones rasos.
Nota
Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções gerenciadas 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, dependendo dos recursos que você pretende usar (veja Dependências opcionais):
brew install tesseract
Opcionalmente, instale o software para executar o servidor de produção, veja Executando servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo usando Celery. Dependendo do tamanho da sua instalação, você pode querer 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 usando o virtualenv para instalar o Weblate em um ambiente separado do seu sistema. Se você 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 dependendo dos recursos que você 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, você terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate
.
Copie o arquivo
~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py
para~/weblate-env/lib/python3.7/site-packages/weblate/settings.py
.Ajuste os valores no novo arquivo
settings.py
de acordo com sua preferência. Você pode ficar com o exemplo enviado para fins de teste, mas você vai querer mudanças para configuração de produção, veja Ajustando a configuração.Crie o banco de dados e sua estrutura 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 usuário do administrador e copie a senha de saída para a área de transferência e salve-a para uso posterior:
weblate createadmin
Colete arquivos estáticos para o servidor web (veja Executando servidor e Servindo arquivos estáticos):
weblate collectstatic
Compactar arquivos JavaScript e CSS (opcional, veja Comprimindo 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 usando Celery para mais informações:
~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
Inicie o servidor de desenvolvimento (veja Executando servidor para configuração de produção):
weblate runserver
Após a instalação¶
Parabéns, seu servidor Weblate agora está funcionando e você pode começar a usá-lo.
Agora você pode acessar o Weblate em
http://localhost:8000/
.Autentique-se com as credenciais de administrador obtidas durante a instalação ou registre-se com novos usuários.
Agora você pode executar comandos Weblate usando o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.
Você pode parar o servidor de teste com Ctrl+C.
Revise os possíveis problemas com sua instalação na URL
/manage/performance/
ou usando 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 você precisa especificar aqui é o nome do projeto e seu site.
Crie um componente que é o objeto real para tradução – ele aponta para o repositório VCS e seleciona quais arquivos 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 arquivos traduzíveis. Weblate suporta uma ampla gama de formatos, incluindo arquivos PO gettext, textos de recursos Android, propriedades de textos iOS, propriedades Java ou arquivos Qt Linguist, consulte Formatos de arquivos suportados para mais detalhes.
Depois que o acima for concluído (pode ser um processo demorado dependendo do tamanho do seu repositório VCS e do número de mensagens a serem traduzidas), você 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 usando Git (ou baixe um tarball e descompacte-o):
git clone https://github.com/WeblateOrg/weblate.git weblate-src
Alternativamente, você pode usar arquivos lançados. Você pode baixá-los em nosso site <https://weblate.org/>. Esses downloads são assinados criptograficamente, consulte Verificando 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
.Ajuste os valores no novo arquivo
settings.py
de acordo com sua preferência. Você pode ficar com o exemplo enviado para fins de teste, mas você vai querer mudanças para configuração de produção, veja Ajustando a configuração.Crie o banco de dados usado pelo Weblate, veja Configuração de banco de dados para o Weblate.
Construa tabelas Django, arquivos estáticos e dados iniciais (veja Preenchendo o banco de dados e Servindo arquivos estáticos):
weblate migrate weblate collectstatic weblate compress weblate compilemessages
Nota
Esta etapa deve ser repetida sempre que você atualizar o repositório.
Instalando no OpenShift¶
Com o modelo OpenShift Weblate, você pode colocar 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.
Você pode encontrar o modelo em <https://github.com/WeblateOrg/openshift/>.
Instalação¶
Os exemplos a seguir presumem que você 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 você configure um servidor PostgreSQL externo.
Console web¶
Copie o conteúdo bruto de template.yml e importe-o para seu projeto, então use o botão Create
no console web do OpenShift para criar seu aplicativo. 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 arquivo 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 usando o console web ou o CLI.
Os parâmetros que você pode substituir estão listados na seção de parâmetros do modelo. Você pode listá-los com a CLI usando o seguinte comando e especificando o arquivo 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
Você 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 contêiner, você pode entrar como usuário admin com a senha fornecida em WEBLATE_ADMIN_PASSWORD
, ou uma senha aleatória gerada na primeira inicialização se não tiver sido definida.
Para redefinir a senha do admin, reinicie o contêiner com WEBLATE_ADMIN_PASSWORD
definido para a nova senha 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 aciona 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, você pode colocar 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.
Você 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 você:
Instalando usando Docker, recomendado para configurações de produção.
Instalação com 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á usando outros serviços para sua operação. Você precisará pelo menos seguir os 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 usando Celery.
Servidor SMTP para e-mail de saída, consulte Configuração de e-mail de saída.
Dependências Python¶
Weblate é escrito em Python e tem suporte a Python 3.6 ou mais novo. Você pode instalar dependências usando pip ou de seus pacotes de distribuição, 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 seguintes módulos são necessários para alguns recursos do Weblate. Você pode encontrar todos eles em requirements-optional.txt
.
Mercurial
(opcional para suporte a repositórios Mercurial)phply
(opcional para suporte a PHP)tesserocr
(opcional para OCR de capturas de tela)akismet
(opcional para a sugestão de proteção de spam)ruamel.yaml
(opcional para Arquivos YAML)Zeep
(opcional para Serviço de Terminologia Microsoft)aeidon
(opcional para Arquivos de legenda)
Dependências de backend de banco de dados¶
O Weblate tem suporte a 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 seguintes dependências devem ser instaladas no sistema:
Git
- Pango, Cairo e arquivos 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 a Gerrit)git-svn
(opcional para suporte a Subversion)tesseract
e seus dados (opcional para OCR de capturas de tela)licensee
(opcional para detectar a licença ao criar o componente)
Dependências de tempo de compilação¶
Para compilar alguns das dependências Python, você pode precisar instalar suas dependências. Isso depende de como você instalá-las, por isso consulte pacotes individuais para obter documentação. Você não precisará deles se usar Wheels
pré-compilado durante a instalação usando pip
ou quando você usar pacotes de distribuição.
Pango e Cairo¶
Alterado na versão 3.7.
O Weblate usa Pango e Cairo para renderizar widgets bitmap (ver Promovendo a tradução) e verificações de renderização (ver Gerenciando fontes). Para instalar corretamente as ligações Python para aqueles que você precisa instalar bibliotecas de sistemas primeiro - você precisa tanto do Cairo quanto do Pango, que por sua vez precisam de GLib. Todos esses devem ser instalados com arquivos de desenvolvimento e dados de introspecção GObject.
Verificando assinaturas de lançamento¶
Os lançamentos do Weblate é criptograficamente assinados pelo desenvolvedor que o lançou. Atualmente este é Michal Čihař. A impressão digital da chave PGP é:
63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D
e você pode obter mais informações de identificação de <https://keybase.io/nijel>.
Você deve verificar se a assinatura corresponde ao arquivo que você baixou. Desta forma, você pode ter certeza de que está usando o mesmo código que foi lançado. Você também deve verificar a data da assinatura para ter certeza de que você baixou a versão mais recente.
Cada arquivo é acompanhado com arquivos .asc
, os quais contêm a assinatura PGP para ele. Uma vez que você tenha ambos na mesma pasta, você 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 você pode ver, o GPG reclama que não conhece a chave pública. Neste ponto você deve fazer um dos seguintes passos:
Use wkd para baixar 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]
Baixe o chaveiro do servidor do Michal e importe-o com:
$ gpg --import wmxth3chu9jfxdxywj1skpmhsj311mzm
Baixe e importe a chave de um dos principais servidores:
$ 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 um pouco a situação - neste momento, você pode verificar que a assinatura da chave dada está correta, mas você 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. Você precisa garantir que a chave é realmente 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 é conhecer o desenvolvedor pessoalmente e trocar impressões digitais importantes, no entanto você também pode confiar na rede de confiança. Dessa forma, você pode confiar na chave transitivamente através de assinaturas de outros, que conheceram o desenvolvedor 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 arquivo foi alterado), você 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 arquivos¶
O processo Weblate precisa ser capaz de ler e escrever para o diretório onde mantém os dados – DATA_DIR
. Todos os arquivos dentro deste diretório devem ser de propriedade e graváveis pelo usuário que executa todos os processos do Weblate (geralmente WSGI e Celery, veja Executando servidor e Tarefas de fundo usando Celery).
A configuração padrão coloca-os na mesma árvore que os fontes do Weblate, no entanto, você 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.
Você também deve tomar cuidado ao executar Comandos de gerência, pois eles devem ser executados sob o mesmo usuário que o Weblate em si está sendo executado, caso contrário, permissões em alguns arquivos podem estar erradas.
No contêiner Docker, todos os arquivos no volume /app/data
tem de ter como dono o usuário weblate dentro do contêiner (UID 1000).
Ver também
Configuração de banco de dados para o Weblate¶
Recomenda-se executar o Weblate com um servidor de banco de dados PostgreSQL.
Ver também
Usar um poderoso mecanismo de banco de dados, Banco de Dados, 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 uma extensão de trigrama que deve ser instalada separadamente em alguns casos. Procure por postgresql-contrib
ou um pacote com nome similar.
Ver também
Criando um banco de dados no PostgreSQL¶
Geralmente é uma boa ideia executar o Weblate em um banco de dados separado e separar a conta do usuário:
# 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 você não quiser fazer do usuário do Weblate um superusuário no PostgreSQL, você pode omitir isso. Nesse caso, você terá que executar algumas das etapas de migração manualmente como um superusuário PostgreSQL no esquema Weblate usará:
CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA weblate;
Configurando Weblate para usar PostgreSQL¶
O trecho de 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 usuário. Em configurações mais complexas, o nome da função é diferente do nome de usuário e você 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 seguinte configuração é 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 você esteja planejando ter um grande número de usuários simultâneos acessando 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 você 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 você estar recebendo o erro #1071 - Specified key was too long; max key length is 767 bytes
, atualize sua configuração para incluir as configurações innodb
acima e reinicie sua instalação.
Dica
No caso de você estar recebendo 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": {},
}
}
Você também deve criar a conta de usuário 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 ativação de conta e sobre várias notificações configuradas pelos usuários. Para isso, ele precisa de acesso a um servidor SMTP.
A configuração do servidor de e-mail é configurada usando essas configurações: EMAIL_HOST
, EMAIL_HOST_PASSWORD
, EMAIL_USE_SSL
, EMAIL_USE_TLS
, EMAIL_HOST_USER
e EMAIL_PORT
. Seus nomes são bastante autoexplicativos, mas você pode encontrar mais informações na documentação do Django.
Dica
Caso você 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.
Executando por trás de um proxy reverso¶
Vários recursos no Weblate dependem de ser capaz de obter endereço IP do cliente. Isso inclui Limitação de taxa, Proteção contra spam ou Registro de auditoria.
Na configuração padrão, o Weblate analisa o endereço IP de REMOTE_ADDR
que é definido pelo manipulador WSGI.
No caso de você estiver usando um proxy reverso, este campo provavelmente conterá seu endereço. Você 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 padrão, pois permitiria falsificação de endereço IP para instalações que não usam um proxy reverso. Habilitar IP_BEHIND_REVERSE_PROXY
pode ser suficiente para as configurações mais usuais, mas você pode precisar ajustar IP_PROXY_HEADER
e IP_PROXY_OFFSET
também.
Proxy HTTP¶
O Weblate executa comandos VCS e aqueles 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"
Ver também
Ajustando a configuração¶
Ver também
Copie weblate/settings_example.py
para weblate/settings.py
e ajuste-o para corresponder à configuração. Você provavelmente vai querer ajustar as seguintes opções:
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.
Ver também
ALLOWED_HOSTS
Você precisa definir isso para listar os hosts que seu site deve servir. Por exemplo:
ALLOWED_HOSTS = ["demo.weblate.org"]Alternativamente, você pode incluir curinga:
ALLOWED_HOSTS = ["*"]
SESSION_ENGINE
Configure como suas sessões serão armazenadas. Caso você mantenha o mecanismo de backend do banco de dados padrão, você deve agendar: weblate clearsessions para remover dados de sessão obsoletos do banco de dados.
Se você estiver usando o Redis como cache (veja Habilitar o cache) é recomendado usá-lo para sessões também:
SESSION_ENGINE = "django.contrib.sessions.backends.cache"Ver também
DATABASES
Conectividade ao servidor de banco de dados, verifique a documentação do Django para obter mais detalhes.
DEBUG
Desabilite isso para qualquer servidor de produção. Com o modo depuração ativado, o Django mostrará backtraces em caso de erro aos usuários, quando você desabilitá-lo, erros serão enviados por e-mail para
ADMINS
(veja acima).O modo depuração também diminui o Weblate, já que o Django armazena muito mais informações internamente neste caso.
Ver também
DEFAULT_FROM_EMAIL
Endereço de remetente de e-mail para e-mail de saída, por exemplo, e-mails de registro.
Ver também
SECRET_KEY
Chave usada por Django para assinar algumas informações em cookies, consulte Chave secreta do Django para obter mais informações.
Ver 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 fracassadas.
Ver também
Preenchendo o banco de dados¶
Depois que sua configuração estiver pronta, você pode executar weblate migrate
para criar a estrutura do banco de dados. Agora você deve ser capaz de criar projetos de tradução usando a interface administrativa.
Caso você queira executar uma instalação não interativamente, você pode usar weblate migrate --noinput
e, em seguida, criar um usuário administrativo usando createadmin
comando.
Uma vez feito, você também deve verificar o Relatório de desempenho na interface administrativa, o que lhe dará dicas de configuração potencial não ideal em seu site.
Ver também
Configuração de produção¶
Para uma configuração de produção, você 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 conectado como um superusuário:

Também é recomendado inspecionar verificações desencadeadas por Django (embora você possa não precisar corrigir todas elas):
weblate check --deploy
Você também pode revisar a mesma lista de verificação na Interface de gerenciamento.
Ver também
Desabilitar o modo de depuração¶
Desabilite o modo de depuração do Django (DEBUG
) com:
DEBUG = False
Com o modo depuração ativado, o Django armazena todas as consultas executadas e mostra aos usuários atrasos de erros, o que não é desejado em uma configuração de produção.
Ver também
Configurar corretamente administradores¶
Defina os endereços de administração corretos para a configuração ADMINS
para definir quem receberá e-mails caso algo dê errado no servidor, por exemplo:
ADMINS = (("Your Name", "your_email@example.com"),)
Ver também
Definir domínio correto do site¶
Ajuste o nome e o domínio do site na interface administrativa, caso contrário, links no RSS ou e-mails de registro não funcionarão. Isso é 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 corretamente HTTPS¶
É fortemente recomendado executar Weblate usando o protocolo HTTPS criptografado. Depois de habilitá-lo, você deve definir ENABLE_HTTPS
nas configurações:
ENABLE_HTTPS = True
Dica
Você pode querer configurar o HSTS também, consulte SSL/HTTPS para obter mais detalhes.
Definir corretamente SECURE_HSTS_SECONDS¶
Se o seu site for servido sobre SSL, você deve considerar definir um valor para :django:`SECURE_HSTS_SECONDS` no settings.py
para habilitar HTTP Strict Transport Security. Por padrão, ele está definido para 0 como mostrado abaixo.
SECURE_HSTS_SECONDS = 0
Se 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 isso incorretamente pode quebrar irreversivelmente (por algum tempo) 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 sua experiência com o Weblate.
Verifique o desempenho do servidor de banco de dados ou ajuste sua configuração, por exemplo, usando PGTune.
Habilitar o cache¶
Se possível, use Redis do Django ajustando 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 você altere as configurações do Redis para o cache, pode ser necessário ajustá-las também para o Celery, consulte Tarefas de fundo usando Celery.
Ver também
Cache de avatares¶
Além do cache de Django, Weblate realiza cache de avatares. Recomenda-se usar um cache separado, baseado em arquivos 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,
},
},
}
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 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 desabilitar o envio de e-mails pelo Weblate, defina EMAIL_BACKEND
para django.core.mail.backends.dummy.EmailBackend
.
Isso desabilitará toda entrega de e-mail, incluindo e-mails de registro ou redefinição de senha.
Configuração de hosts permitidos¶
Django requer ALLOWED_HOSTS
para manter uma lista de nomes de domínio que seu site pode servir, deixando-o vazio bloqueará quaisquer solicitações.
Caso isso não esteja configurado para corresponder ao seu servidor HTTP, você terá erros como Invalid HTTP_HOST header: '1.1.1.1'. You may need to add '1.1.1.1' to ALLOWED_HOSTS.
Dica
No contêiner 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 seu próprio valor em vez de usar o da configuração do exemplo.
Você pode gerar uma nova chave usando weblate/examples/generate-secret-key
, que vem com o Weblate.
Ver também
Diretório inicial¶
Alterado na versão 2.1: Isso não é mais necessário, o Weblate agora armazena todos os seus dados em DATA_DIR
.
O diretório home do usuário que executa o Weblate deve existir e ser escrito por este usuário. Isso é especialmente necessário se você 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 você usa).
Você 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 para o diretório home do usuário é definido em /etc/passwd
. Muitas distribuições usam como padrão um diretório sem permissão de escrita para usuários usados para servir conteúdo web (como apache
, www-data
ou wwwrun
), então você tem que executar o Weblate sob um usuário diferente ou alterar essa configuração.
Ver também
Carregamento de modelos¶
Recomenda-se usar um carregador de modelo em cache para Django. Ele armazena modelos analisados e evita a necessidade de fazer análise a cada solicitação. Você pode configurá-lo usando 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",
],
),
],
},
},
]
Ver também
Executando 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 usando Celery e cobre 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 (diariamente).
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 padrão de executar essas tarefas é usar o Celery e o Weblate já vem com a configuração adequada, consulte Tarefas de fundo usando 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 padrão. Caso não seja o caso em seu sistema, altere as localidades para a variante UTF-8.
Por exemplo, editando /etc/default/locale
e definindo 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'
Usando autoridade certificadora personalizada¶
O Weblate verifica os certificados SSL durante as solicitações HTTP. Caso você esteja usando uma autoridade de certificação personalizada que não seja confiável em pacotes padrão, você terá que adicionar 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 colocando o certificado de 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 Python, você precisará configurar solicitações para usar o pacote de AC do sistema em vez do enviado com ele. Isso pode ser conseguido colocando seguintes trechos para settings.py
(o caminho é específico do Debian):
import os
os.environ["REQUESTS_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt"
Comprimindo os ativos do cliente¶
Weblate vem com um monte de arquivos JavaScript e CSS. Por razões de desempenho, é bom comprimi-los antes de enviar para um cliente. Na configuração padrão isso é feito na mosca 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 habilitar 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 você precisa compactar os arquivos para corresponder à versão atual:
weblate compress
Dica
A imagem oficial do Docker já tem este recurso habilitado.
Executando servidor¶
Dica
No caso de você não ter experiência com os serviços descritos abaixo, você pode tentar seguir Instalando usando Docker.
Você 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 Habilitar o cache)
Servidor web frontend para arquivos estáticos e terminação SSL (consulte Servindo arquivos estáticos)
Servidor WSGI para conteúdo dinâmico (consulte Amostra de configuração para NGINX e uWSGI)
Celery para executar tarefas em segundo plano (consulte Tarefas de fundo usando 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, você executará todos os serviços em um único servidor (virtual), mas no caso de sua instalação estar muito carregada, você 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 usuário que o processo do Celery, caso contrário, os arquivos em DATA_DIR
serão armazenados com propriedade mista, levando a problemas de tempo de execução.
Veja também Permissões do sistema de arquivos e Tarefas de fundo usando Celery.
Executando 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, você pode usar o servidor web embutido no Django:
weblate runserver
Aviso
NÃO USE ESTE SERVIDOR EM UMA CONFIGURAÇÃO DE PRODUÇÃO. Ele 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 arquivos estáticos com DEBUG
ativado, pois é destinado apenas ao desenvolvimento. Para uso da produção, consulte as configurações de wsgi em Amostra de configuração para NGINX e uWSGI, Amostra de configuração para o Apache, Amostra de configuração para Apache e Gunicorn e Servindo arquivos estáticos.
Servindo arquivos estáticos¶
Alterado na versão 2.4: Antes da versão 2.4, o Weblate não usava corretamente a estrutura de arquivos estáticos do Django e a configuração era mais complexa.
Django precisa coletar seus arquivos estáticos em um único diretório. Para isso, execute weblate collectstatic --noinput
. Isso copiará os arquivos estáticos em um diretório especificado pela configuração STATIC_ROOT
(isso é padrão para um diretório static
dentro de DATA_DIR
).
Recomenda-se servir arquivos estáticos diretamente do seu servidor web. Você deve usá-los para os seguintes caminhos:
/static/
Serve arquivos estáticos para Weblate e a interface de administração (definida por
STATIC_ROOT
)./media/
Usado para envio de mídia pelo usuário (por exemplo, capturas de tela).
/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 padrão do Weblate habilita o middleware weblate.middleware.SecurityMiddleware
que define cabeçalhos HTTP relacionados à segurança como Content-Security-Policy
ou X-XSS-Protection
. Eles são configurados por padrão para funcionar com o Weblate e sua configuração, mas isso pode precisar de personalização para o seu ambiente.
Ver também
CSP_SCRIPT_SRC
,
CSP_IMG_SRC
,
CSP_CONNECT_SRC
,
CSP_STYLE_SRC
,
CSP_FONT_SRC
Amostra de configuração 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
). Não se esqueça de definir o caminho de pesquisa Python para seu virtualenv também (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.
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.7/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
Ver também
Amostra de configuração para o Apache¶
Recomenda-se o uso de prefork de MPM ao usar WSGI com Weblate.
A configuração a seguir executa o Weblate como WSGI. Você precisa ter habilitado 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 você está executando a variante do Python 3 do modwsgi. Usualmente, está disponível como um pacote separado, por exemplo libapache2-mod-wsgi-py3
.
Amostra de configuração para Apache e Gunicorn¶
A configuração a seguir executa o Weblate em Gunicorn e 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>
Ver também
tutorial/deployment/wsgi/gunicorn
Rodando 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, usando 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, você irá ter de ajustar o weblate/settings.py
:
URL_PREFIX = "/weblate"
Tarefas de fundo usando Celery¶
Novo na versão 3.2.
O Weblate usa Celery para processar tarefas em segundo plano. Uma configuração típica usando redis como backend se parece com isso:
CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
Ver também
Para o desenvolvimento, você pode querer 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
Você 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 usuário que o Weblate e o processo do WSGI, caso contrário, os arquivos em DATA_DIR
serão armazenados com propriedade mista, levando a problemas de tempo de execução.
Veja também Permissões do sistema de arquivos e Executando servidor.
Executando Celery como serviço do sistema¶
Provavelmente você vai querer executar o Celery como um daemon e que é coberto por Daemonization. Para as configurações Linux mais comuns usando systemd, você pode usar os arquivos de exemplo disponibilizados na pasta examples
listado abaixo.
Unidade do systemd a ser colocada 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 colocada 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 usando logrotate a ser colocada como /etc/logrotate.d/celery
:
/var/log/celery/*.log {
weekly
missingok
rotate 12
compress
notifempty
}
Tarefas periódicas usando a batida do Celery¶
O Weblate vem com configuração embutida para tarefas programadas. No entanto, você 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 funcionando corretamente, pode não estar funcionando ou seu banco de dados foi corrompido. Verifique os registros de inicialização do Celery nesse caso para descobrir a causa raiz.
Monitorando status do Celery¶
Você pode usar celery_queues
para ver o comprimento atual das filas de tarefas do Celery. Caso a fila fique muito longa, você 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 usuário. Caso você 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 contêiner Docker tem verificação de saúde embutida usando esta URL.
Para monitorar as métricas do Weblate, você pode usar o ponto final GET /api/metrics/
da API.
Ver 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 você 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, você 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 você 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 você 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, você pode ter várias opções para migrar o banco de dados. O mais simples é despejar o banco de dados em um servidor e importá-lo no novo. Alternativamente, você pode usar a replicação no caso de 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 você quiser migrar entre diferentes bancos de dados, a única opção pode ser usar o gerenciamento 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. Você 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 em 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 equipe 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 aplicativos da web. Weblate instalado com Cloudron será automaticamente atualizado. O pacote é mantido pela equipe Cloudron em seu repositório de pacotes Weblate.

Weblate no YunoHost¶
O projeto de auto-hospedagem YunoHost fornece um pacote para Weblate. Uma vez que você tenha a sua instalação YunoHost, você pode instalar o Weblate como qualquer outro aplicativo. Ele fornecerá uma pilha de trabalho completo com backup e restauração, mas você ainda pode ter que editar seu arquivo de configurações para usos específicos.
Você pode usar sua interface de administração ou este botão (ele 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 usando Docker) possui todas as etapas de atualização integradas. Não há nenhuma etapa manual além de baixar 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 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 Fazendo backup e movendo 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, você precisa obter o novo código-fonte e atualizar 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 arquivo 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 arquivos estáticos atualizados (veja Executando servidor e Servindo arquivos estáticos):
weblate collectstatic --noinput
Compactar arquivos JavaScript e CSS (opcional, veja Comprimindo os ativos do cliente):
weblate compress
Se você está usando uma versão do Git, você também deve gerar novamente arquivos locais toda vez que estiver atualizando. Você pode fazer isso invocando:
weblate compilemessages
Verifique que sua configuração é sana (ver também Configuração de produção):
weblate check --deploy
Restart Celery worker (see Tarefas de fundo usando Celery).
Instruções específicas de versão¶
Atualizar de 2.x¶
Se você está atualizando 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 subsciption.
Ver 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.
Ver 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 Weblate Client 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.
Ver 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.
Ver 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.
Ver 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.
Ver 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.
Ver 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.
Criando um banco de dados no PostgreSQL¶
Geralmente é uma boa ideia executar o Weblate em um banco de dados separado e separar a conta do usuário:
# 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
.
Fazendo backup e movendo o Weblate¶
Backup automatizado usando BorgBackup¶
Novo na versão 3.9.
O Weblate tem suporte embutido para criação de backups de serviços usando 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 gerenciamento da aba 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 você não conseguiria restaurá-los sem a senha. A senha é gerada ao adicionar novo serviço de backup e você deve copiá-lo e mantê-lo em um lugar seguro.
Se você estiver usando Armazenamento de backup provisionado do Weblate, faça backup da sua chave SSH privada também, pois ela é usada para acessar seus backups.
Ver 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 gerenciamento, veja Integrando suporte.
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 aba Backups.
Faça backup de 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 registro.
Usando armazenamento de backup personalizado¶
Você também pode usar 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.
Ver também
General na documentação do Borg
Sistema de arquivos local¶
Recomenda-se especificar o caminho absoluto para o backup local, por exemplo /caminho/para/backup. O diretório deve poder ser escrito pelo usuário executando o Weblate (veja Permissões do sistema de arquivos). 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 contêiner Weblate. Caso contrário, os backups serão descartados pelo Docker na reinicialização do seu contêiner.
Uma opção é colocar backups em um volume existente. Por exemplo, /app/data/borgbackup
. Este é um volume existente no contêiner.
Você também pode adicionar um novo contêiner para os backups no arquivo de composição do Docker, por exemplo, usando /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, você terá que instalar o BorgBackup em outro servidor que seja acessível para sua implantação de Weblate via SSH usando a chave SSH do Weblate:
Prepare um servidor onde seus backups serão armazenados.
Instale o servidor SSH nele (você o receberá 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 usuário existente ou crie um novo que será usado para backup.
Adicione a chave SSH do Weblate ao usuário para que o Weblate possa usar o SSH para o servidor sem uma senha (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.
Ver também
Restaurando do BorgBackup¶
Restaure o acesso ao repositório de backup e prepare sua senha de backup.
Liste todos os backups no servidor usando
borg list REPOSITÓRIO
.Restaure o backup desejado para o diretório atual usando
borg extract REPOSITÓRIO::PACOTE
.Restaure o banco de dados a partir do despejo de SQL colocado no diretório
backup
no diretório de dados do Weblate (veja Dados despejados para os backups).Copie a configuração do Weblate (
backups/settings.py
, veja Dados despejados para os backups) até o local correto, veja Ajustando a configuração.Ao usar o contêiner Docker, o arquivo de configurações já está incluído no contêiner e você deve restaurar as variáveis de ambiente originais. O arquivo
environment.yml
pode ajudá-lo com isso (veja Dados despejados para os backups).Copie todo o diretório de dados restaurados para o local configurado por
DATA_DIR
.Ao usar contêiner do Docker, coloca os dados em um volume de dados, veja Volumes de contêiner Docker.
Please make sure the files have correct ownership and permissions, see Permissões do sistema de arquivos.
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:
Ver também
Backup manual¶
Dependendo do que você deseja salvar, faça backup do tipo de dados que o Weblate armazena em cada lugar.
Dica
Se você estiver fazendo os backups manualmente, você pode querer silenciar os avisos do Weblate sobre a falta de backups adicionando 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 é salvar um despejo do banco de dados usando 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.
Você pode restaurar esse backup em uma 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, você pode fazer backup de seu banco de dados utilizando o comando dumpdata
do Django. Dessa forma o backup é agnóstico de banco de dados e pode ser usado caso você queira alterar o backend do banco de dados.
Antes de restaurar o banco de dados, você precisa estar usando 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 você acabaria corrompendo os dados de alguma forma. Depois de instalar a mesma versão, execute todas as migrações do banco de dados usando migrate
.
Depois disso, algumas entradas já serão criadas no banco de dados e você as terá no backup do banco de dados também. A abordagem recomendada é excluir essas entradas manualmente usando o shell de gerenciamento (veja Invocando comandos de gerenciamento):
weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()
Arquivos¶
Se você tiver espaço de backup suficiente, basta fazer backup de todo o DATA_DIR
. Esta é uma aposta segura, mesmo que inclua alguns arquivos que você não quer. As seções a seguir descrevem o que você deve fazer backup e o que você pode pular em detalhes.
Dados despejados para os 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 você pode incluir esses arquivos para backups mais completos. Os arquivos são atualizados diariamente (requer um servidor de “beats” do Celery em execução, consulte Tarefas de fundo usando Celery). Atualmente, isso 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 usando 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 de seus repositórios upstream com alterações do Weblate. Se você tiver o Push ao fazer commit 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 você está usando chaves SSH ou GPG geradas pelo Weblate, você deve fazer backup destes locais. Caso contrário, você vai perder as chaves privadas e você terá que gerar novamente as novas.
Arquivos enviados pelo usuário¶
Armazenados em DATA_DIR
/media
.
Você deve fazer o backup de todos os arquivos enviados pelo usuário (por exemplo, Contexto visual para textos).
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, você 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.
Ver também
Linha de comando para backup manual¶
Usando uma tarefa de cron, você 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
O texto entre as aspas após XZ_OPT permite que você escolha suas opções do xz, por exemplo, a quantidade de memória utilizada para compressão; veja https://linux.die.net/man/1/xz
Você pode ajustar a lista de pastas e arquivos às suas necessidades. Para evitar salvar a memória de tradução (na pasta backups), você 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
Restaurando backup manual¶
Restaure todos os dados dos quais você tenha feito backup.
Atualize todos repositórios usando o
updategit
.weblate updategit --all
Movendo uma instalação do Weblate¶
Realoque a instalação de um sistema diferente, seguindo as instruções de backup e restauração acima.
Autenticação¶
Registro de usuário¶
A configuração padrão para Weblate é usar python-social-auth, um formulário no site para lidar com o registro de novos usuários. Depois de confirmar seu e-mail, um novo usuário pode contribuir ou autenticar usando um dos serviços de terceiros.
Você também pode desativar o registro de novos usuários usando 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 o fazer. Utilizando-a, você pode importar o banco de dados de usuários de outros projetos baseados no Django (veja Migrating from Pootle).
Django pode, adicionalmente, ser configurado para autenticar em outros meios também.
Ver também
Configurações de autenticação descreve como configurar a autenticação na imagem oficial do Docker.
Autenticação por senha¶
O settings.py
padrão vem com um razoável conjunto de AUTH_PASSWORD_VALIDATORS
:
As senhas não podem ser muito similares às suas outras informações pessoais.
As senhas devem conter no mínimo 10 caracteres.
As senhas não podem ser uma senha comumente usada.
As senhas não podem ser inteiramente numéricas.
As senhas não podem consistir em um único caractere ou apenas espaço em branco.
As senhas não podem corresponder a uma senha que você usou no passado.
Você pode personalizar esta configuração para corresponder à sua política de senha.
Além disso, você também pode instalar o django-zxcvbn-password o que dá bastante estimativas realistas de senha dificuldade e permite rejeitar senhas 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 usuário dos seguintes atributos, configure seu IDP para fornecê-los:
Atributo |
Referência de URI SAML |
---|---|
Nome completo |
|
Primeiro nome |
|
Sobrenome |
|
|
|
Nome de usuário |
|
Dica
O exemplo acima e a imagem do Docker definem um IDP rotulado como weblate
. Você pode precisar configurar este texto como Relay em seu IDP.
Ver também
Autenticação por LDAP¶
A autenticação por LDAP pode ser melhor alcançada utilizando o pacote django-auth-ldap. Você 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 contêiner Docker, veja Instalando usando Docker.
Nota
Há algumas incompatibilidades no módulo Python LDAP 3.1.0, o que pode impedir você de usar essa versão. Se você obter o erro AttributeError: ‘module’ object has no attribute ‘_trace_level’, fazer o downgrade para python-ldap 3.0.0 pode ajudar.
Uma vez que você tenha o pacote instalado, você pode conectá-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
Você deve remover 'social_core.backends.email.EmailAuth'
da configuração AUTHENTICATION_BACKENDS
; caso contrário, os usuários poderão definir sua senha no Weblate e autenticar usando isso. Manter 'weblate.accounts.auth.WeblateUserBackend'
ainda é necessário para fazer permissões e facilitar usuários anônimos. Ele também permitirá que você faça login usando uma conta administrativa local, se você a criou (por exemplo, usando createadmin
).
Usando senha associada¶
Se você não puder usar associação direta para autenticação, você precisará usar a pesquisa e fornecer um usuário 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 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
Ver também
Autenticação por CAS¶
A autenticação por CAS pode ser alcançada usando um pacote como o django-cas-ng.
O primeiro passo é divulgar o campo de e-mail do usuário via CAS. Isso tem que ser configurado no próprio servidor CAS, e requer que você execute 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 instalado, você pode conectá-lo ao sistema de autenticação do Django modificando o arquivo 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 usuário. Para que isso funcione, você tem que importar o sinal do pacote django-cas-ng e conectar seu código com este sinal. Fazer isso em configurações de arquivo pode causar problemas, portanto, é sugerido colocá-lo:
No método
django.apps.AppConfig.ready()
da configuração do seu aplicativoNo arquivo
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()
Ver também
Configurando autenticação por Django de terceiros¶
Geralmente, qualquer plugin de autenticação Django deve funcionar com Weblate. Basta seguir as instruções do plugin, lembrando de manter o backend do usuário Weblate instalado.
Ver também
Normalmente, a instalação consiste em adicionar uma autenticação de backend a AUTHENTICATION_BACKENDS`e a instalar um aplicativo 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
)
Controle de acesso¶
O Weblate vem com um sistema de privilégios fino para atribuir permissões ao usuário para toda a instância ou em um 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 você está usando.
Controle de acesso personalizado¶
Se você não está administrando toda a instalação do Weblate e apenas tem acesso para gerenciar certos projetos (como no Hosted Weblate), suas opções de gerenciamento de controle de acesso são limitadas às seguintes configurações. Se você não precisa de nenhuma configuração complexa, elas são suficientes para você.
Controle de acesso do projeto¶
Nota
Este recurso está indisponível para os projetos que executam o plano Libre no Hosted Weblate.
Você pode limitar o acesso do usuário a projetos individuais selecionando uma configuração diferente de Controle de acesso. As opções disponíveis são:
- Público
Visível publicamente, traduzível para todos os usuários autenticados.
- Protegido
Publicamente visível, mas somente traduzível por usuários selecionados.
- Privado
Visível e traduzível apenas por usuários selecionados.
- Personalizado
Os recursos de Gerenciamento de usuários serão desabilitados; por padrão, todos os usuários estão proibidos de realizar qualquer ação no projeto. Você terá que configurar todas as permissões usando Controle de acesso personalizado.
O Controle de acesso pode ser alterado na aba Acesso da configuração (Gerenciar ↓ 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 usuários por padrão em projetos Públicos, Protegidos e Privados pode ser redefinido pelo administrador da instância de Weblate usando 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 você estiver fazendo isso sem permissão administrativa para toda a instância de Weblate, você perderá instantaneamente o seu acesso para gerenciar o projeto.
Ver também
Gerenciando controle de acesso por projeto¶
Os usuários com o privilégio Gerenciar acesso ao projeto (veja a Lista de privilégios) podem gerenciar usuários em projetos com controle de acesso não Personalizado. Eles podem atribuir os usuários 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 textos fonte (se permitido nas configurações do projeto) e informações de textos fonte.
- Idiomas
Pode gerenciar idiomas traduzidos (adicionar ou remover traduções).
- Glossário
Pode gerenciar glossário (adicionar ou remover entradas, e também enviar).
- Memória
Pode gerenciar memória de tradução.
- Capturas de tela
Pode gerenciar capturas de tela (adicioná-las ou removê-las e associá-las a textos fonte).
- VCS
Pode gerenciar VCS e acessar o repositório exportado.
- Cobrança
Pode acessar informações de cobrança e configurações (consulte Cobrança).
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 usuários.
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 usuário do Weblate.

Esses recursos estão disponíveis na página Controle de acesso, que pode ser acessada no projeto a partir do menu Gerenciar ↓ Usuários.
Novo convite de usuário¶
Além de adicionar um usuário existente ao projeto, também é possível convidar novos. Qualquer novo usuário será criado imediatamente, mas a conta permanecerá inativa até que você entre com um link 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 gerenciamento de acesso no escopo do projeto (por exemplo, uma associação no grupo Administração) seria suficiente.
Dica
Se o usuário convidado perdeu a validade do convite, ele pode definir sua senha usando o endereço de e-mail convidado no formulário de redefinição de senha, pois a conta já foi criada.
Novo na versão 3.11: É possível reenviar o e-mail para convites de usuário (invalidando qualquer convite enviado anteriormente).
O mesmo tipo de convite está disponível em todo o site a partir da interface de gerenciamento na aba Usuários.
Bloqueando usuários¶
Novo na versão 4.7.
No caso de alguns usuários se comportarem mal em seu projeto, você tem a opção de bloqueá-los de contribuir. O usuário bloqueado ainda poderá ver o projeto se tiver permissão para isso, mas não poderá contribuir.
Gerenciamento de permissões por projeto¶
Você pode definir seus projetos para Protegido ou Privado e gerenciar usuários por projeto na interface de usuário do Weblate.
Por padrão, isso impede que o Weblate conceda acesso fornecido por grupos padrão Usuários e Visualizadores devido à própria configuração desses grupos. Isso não impede que você conceda permissões a esses projetos em todo o site, alterando grupos padrão, criando um novo ou criando configurações personalizadas adicionais para componentes individuais, conforme descrito em Controle de acesso personalizado abaixo.
Um dos principais benefícios de gerenciar permissões por meio da interface de usuário do Weblate é que você pode delegá-las a outros usuários sem dar a eles o privilégio de superusuário. 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 para os usuários e traduções. Veja Usuários, 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. Você pode usá-la para gerenciar as permissões de qualquer projeto. Você não precisa necessariamente definir o controle de acesso para Personalizado para utilizá-lo. No entanto, você deve ter privilégios de superusuário para usá-lo.
Se você 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 seção Controle de acesso personalizado.
Configurações comuns¶
Esta seção contém uma visão geral de algumas configurações comuns nas quais você pode estar interessado.
Gerenciamento de permissões para todo o site¶
Para gerenciar permissões para uma instância inteira de uma vez, adicione usuários aos grupos padrão:
Usuários (isso é feito por padrão pela associação de grupo automática).
Revisores (se você estiver usando fluxo de trabalho de revisão com revisores dedicados).
Gestores (se você deseja delegar a maioria das operações de gestão a outra pessoa).
Você deve manter todos os projetos configurados como Públicos (veja Controle de acesso do projeto), caso contrário as permissões de todo o site fornecidas pela participação nos grupos Usuários e Revisores não terão nenhum efeito.
Você também pode conceder algumas permissões adicionais de sua escolha aos grupos padrão. Por exemplo, você pode querer dar permissão para gerenciar capturas de tela para todos os Usuários.
Você também pode definir alguns novos grupos personalizados. Se você deseja continuar gerenciando 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¶
Você pode criar seus próprios grupos dedicados para gerenciar permissões para objetos distintos, como linguagens, componentes e projetos. Embora esses grupos só possam conceder privilégios adicionais, você não pode revogar qualquer permissão concedida por grupos de todo o site ou por projeto adicionando outro grupo personalizado.
Exemplo:
Se você quiser (por qualquer motivo) permitir a tradução para um idioma específico (digamos, tcheco) apenas para um conjunto fechado de tradutores confiáveis, mantendo as traduções para outros idiomas públicos, você terá que:
Remover a permissão para traduzir Tcheco de todos os usuários. Na configuração padrão, isso pode ser feito alterando o grupo padrão Usuários.
Grupo Usuários¶ 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
Usuários(as) avançados(as)
Seleção de projeto
Todos os projetos públicos
Seleção de idioma
Como definido
Idiomas
Tcheco
Adicionar usuários aos quais deseja conceder permissões a este grupo.
Como você pode ver, o gerenciamento de permissões dessa maneira é poderoso, mas pode ser um trabalho tedioso. Você não pode delegá-lo a outro usuário, a menos que conceda permissões de superusuário.
Usuários, 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 usuários. Isso só pode ser feito através da atribuição de papéis.
- Papel
Um papel define um conjunto de permissões. Isso permite a reutilização desses conjuntos em vários lugares, facilitando a administração.
- Usuário
Usuário pode pertencer a vários grupos.
- Grupo
Grupo conecta papéis, usuários e objetos de autenticação (projetos, idiomas e listas de componentes).
Nota
Um grupo não pode ter papéis atribuídos a ele; nesse caso, o acesso para navegar no projeto por qualquer pessoa é presumido (veja abaixo).
Acesso para navegar até um projeto¶
Um usuário 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 usuário pode acessar componentes irrestritos assim que for possível acessar o projeto dos componentes (e terá todas as permissões que foram concedidas ao usuário 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 listando-os diretamente ou tendo 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 usuário 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, salvar 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
Revisar textos, Gerenciar repositório
Componentes
foo/bar
Idiomas
Espanhol
Membros deste grupo terão as seguintes permissões (presumindo as configurações padrão de papeis):
Acesso geral (navegação) para todo o projeto
foo
incluindo ambos componentes nele:foo/bar
efoo/baz
.Revisar textos na tradução para espanhol de
foo/bar
(não em outro lugar).Gerenciar VCS para todo o repositório
foo/bar
, por exemplo, fazer commit de alterações pendentes feitas por tradutores de todos os idiomas.
Associações automáticas de grupo¶
Na parte inferior da página de edição Grupo na interface administrativa do Django, você pode especificar Associações automáticas de grupo, que é uma lista de expressões regulares usadas para atribuir automaticamente usuários recém-criados a um grupo com base em seus endereços de e-mail. 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 usuários a algum grupo padrão. Para fazer isso, você 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 de sua empresa por padrão. Supondo que todos eles usem endereços de e-mail corporativos em seu domínio, isso pode ser feito com uma expressão como ^.*@minhaempresa.com
.
Nota
Associação automática de grupo para Usuários e Visualizadores sempre será recriada ao atualizar de uma versão anterior do Weblate para outra. Se você deseja desativá-los, defina a expressão regular para ^$
(que nunca corresponderá).
Nota
Por enquanto, não há como adicionar em massa usuários já existentes a algum grupo por meio da interface do usuário. Para isso, você pode recorrer ao uso da API REST.
Grupos e funções padrão¶
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. Você não pode alterá-las. Defina uma nova função caso você queira definir seu próprio conjunto de permissões.
Lista de privilégios¶
- Cobrança (consulte Cobrança)
Visualizar informações de cobrança [Administração, Cobrança]
- Alterações
Baixar alterações [Administração]
- Comentários
Publicar comentário [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
Excluir comentário [Administração]
- Componente
Editar configurações do componente [Administração]
Bloquear componente, evitando traduções [Administração]
- Glossário
Adicionar entrada do glossário [Administração, Gerenciar glossário, Usuário avançado]
Editar entrada do glossário [Administração, Gerenciar glossário, Usuário avançado]
Excluir entrada do glossário [Administração, Gerenciar glossário, Usuário avançado]
Enviar entradas do glossário [Administração, Gerenciar glossário, Usuário avançado]
- Sugestões automáticas
Usar sugestões automáticas [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
- Memória de tradução
Editar memória de tradução [Administração, Gerenciar memória de tradução]
Excluir memória de tradução [Administração, Gerenciar memória de tradução]
- Projetos
Editar configurações do projeto [Administração]
Gerenciar acesso ao projeto [Administração]
- Relatórios
Baixar relatórios [Administração]
- Capturas de tela
Adicionar captura de tela [Administração, Gerenciar capturas de tela]
Editar captura de tela [Administração, Gerenciar capturas de tela]
Excluir captura de tela [Administração, Gerenciar capturas de tela]
- Textos fonte
Editar informações adicionais de texto [Administração, Editar fonte]
- Textos
Adicionar novo texto [Administração]
Remover um texto [Administração]
Ignorar verificação com falha [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
Editar textos [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
Revisar textos [Administração, Revisar textos]
Editar texto quando as sugestões são forçadas [Administração, Revisar textos]
Editar textos fonte [Administração, Editar fonte, Usuário avançado]
- Sugestões
Aceitar sugestão [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
Adicionar sugestão [Administração, Editar fonte, ``Adicionar sugestão, Usuário avançado, Revisar textos, Traduzir]
Excluir sugestão [Administração, Usuário avançado]
Votar em sugestão [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
- Traduções
Adicionar idioma para tradução [Administração, Usuário avançado, Gerenciar idiomas]
Efetuar tradução automática [Administração, Gerenciar idiomas]
Excluir tradução existente [Administração, Gerenciar idiomas]
Adicionar idiomas para tradução [Administração, Gerenciar idiomas]
- Envios
Definir autor da tradução enviada [Administração]
Sobrescrever textos existentes com envio [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
Enviar traduções [Administração, Editar fonte, Usuário avançado, Revisar textos, Traduzir]
- VCS
Acessar o repositório interno [Administração, Acessar repositório, Usuário avançado, Gerenciar repositório]
Fazer commit das alterações para o repositório interno [Administração, Gerenciar repositório]
Fazer push das alterações do repositório interno [Administração, Gerenciar repositório]
Redefinir as alterações no repositório interno [Administração, Gerenciar repositório]
Ver o local do repositório upstream [Administração, Acessar repositório, Usuário avançado, Gerenciar repositório]
Atualizar o repositório interno [Administração, Gerenciar repositório]
- Privilégios para todo o site
Usar interface de gerenciamento
Adicionar novos projetos
Adicionar definições de idioma
Gerenciar definições de idiomas
Gerenciar grupos
Gerenciar usuários
Gerenciar funções
Gerenciar anúncios
Gerenciar memória de tradução
Gerenciar 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 status de superusuário. A maioria deles afetam todos os projetos de 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 você está livre para modificá-los. A migração irá, no entanto, recriá-los se você excluí-los ou renomeá-los.
- Convidados
Define permissões para usuários não autenticados.
Este grupo contém apenas usuários anônimos (consulte
ANONYMOUS_USER_NAME
).Você pode remover funções deste grupo para limitar as permissões para usuários não autenticados.
Funções padrão: Adicionar sugestão, Acessar repositório
- Visualizadores
Essa função garante a visibilidade de projetos públicos para todos os usuários. Por padrão, todos os usuários 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 padrão: nenhuma
- Usuários
Grupo padrão para todos os usuários.
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 padrão: Usuário avançado
- Revisores
Grupo para revisores (consulte Fluxos de trabalho de tradução).
Funções padrão: Revisar textos
- Gerenciadores
Grupo pra administradores.
Funções padrão: Administração
Aviso
Nunca remova os grupos e usuários predefinidos do Weblate, pois isso pode levar a problemas inesperados! Se você não tiver uso para eles, você pode remover todos os privilégios deles.
Restrições adicionais de acesso¶
Se você quiser usar a instalação do Weblate de uma maneira menos pública, ou seja, permitir novos usuários apenas por convite, isso pode ser feito configurando o Weblate de forma que apenas usuários conhecidos tenham acesso a ele. Para fazer isso, você pode definir REGISTRATION_OPEN
para False
para prevenir registros de quaisquer novos usuários, 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
Você pode usar os convites embutidos para adicionar novos usuários.
Projetos de tradução¶
Organização de tradução¶
O Weblate organiza o conteúdo VCS traduzível do projeto/componentes em uma 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 um aplicativo 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, você define o repositório VCS a ser usado e a máscara dos arquivos a serem traduzidos.
Acima da Configuração de componente existem traduções individuais, manipuladas automaticamente pelo Weblate como arquivos de tradução (que correspondem a Máscara de arquivo 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 arquivos suportados.
Nota
Você pode compartilhar repositórios VCS clonados usando URLs internas do Weblate. Usar este recurso é altamente recomendado quando você tem muitos componentes compartilhando 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 você 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 em suas permissões, novos projetos e componentes de tradução podem ser criados. É sempre permitido para usuários com a permissão Adicionar novos projetos, e se sua instância usa cobrança (por exemplo, como https://hosted.weblate.org/, veja Cobrança), você também pode criar aqueles com base na permissão de seus planos da conta de usuário que gerencia a cobrança.
Você pode visualizar seu plano de cobrança atual em uma página separada:

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

Depois de criar o projeto, você é levado diretamente para a 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:
- De controle de versão
Cria um componente do repositório de controle de versão remoto.
- De componente existente
Cria um componente adicional ao existente, escolhendo arquivos diferentes.
- Ramo adicional
Cria um componente adicional ao existente, apenas para um ramo diferente.
- Enviar arquivos de tradução
Envia os arquivos de tradução para o Weblate caso você não tenha controle de versão ou não queira integrá-lo ao Weblate. Você pode atualizar o conteúdo posteriormente usando a interface web ou API REST do Weblate.
- Traduzir documento
Envia um único documento e o traduz.
- Iniciar do zero
Cria um projeto de tradução vazio e adiciona textos manualmente.
Depois de ter os componentes de tradução existentes, você também pode adicionar facilmente novos para arquivos adicionais ou ramos usando o mesmo repositório.
Primeiro você precisa preencher o nome e a localização do repositório:

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

Como última etapa, você 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 seu dicionário; as traduções também são propagadas automaticamente por todos os componentes em um único projeto (a menos que desligado na configuração do componente), veja Memória de tradução.
Ver 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 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 de tradução¶
URL para mais sites com instruções mais detalhadas para tradutores.
Definir o cabeçalho do “Language-Team”¶
Se o Weblate deve gerenciar o cabeçalho Language-Team
(este é um recurso apenas do GNU gettext no momento).
Controle de acesso¶
Configura o controle de acesso por projeto, veja Controle de acesso do projeto para mais detalhes.
O valor padrão pode ser alterado por DEFAULT_ACCESS_CONTROL
.
Habilitar revisões¶
Habilita o fluxo de trabalho de revisão para traduções, veja Revisores dedicados.
Habilitar revisões de fontes¶
Habilita o fluxo de trabalho de revisão para textos fonte, veja Revisões de textos fonte.
Ver também
Habilitar ganchos¶
Se Ganchos de notificação não autenticados devem ser usados para este repositório.
Aliases de 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 em seus repositórios e você quiser obter uma visualização consistente no Weblate ou no caso de desejar usar uma nomenclatura fora do padrão de seus arquivos 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 arquivos 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 arquivos.
Ver também
Configuração de componente¶
Um componente é um agrupamento de algo para tradução. Você insere um local de repositório VCS e uma máscara de arquivo para os arquivos que deseja traduzir, e o Weblate busca automaticamente neste VCS e encontra todos os arquivos traduzíveis correspondentes.
Ver também
Você pode encontrar alguns exemplos de configurações típicas nos Formatos de arquivos suportados.
Nota
Recomenda-se manter os componentes de tradução em um tamanho razoável – divida a tradução por qualquer coisa que faça sentido no seu caso (aplicativos ou complementos individuais, capítulos de livros ou sites).
O Weblate lida facilmente com traduções com 10000s de textos, 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 faltando, uma definição vazia é criada e nomeada como “cs_CZ (generated)”. Você 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 controle de versão¶
VCS para usar, veja Integração com controle de versão para detalhes.
Ver também
Repositório do código-fonte¶
Repositório VCS usado para fazer pull das alterações.
Ver também
Veja Acessando repositórios para mais detalhes sobre especificar URLs.
Dica
Pode ser uma URL VCS real ou weblate://projeto/componente
indicando que o repositório deve ser compartilhado com outro componente. Veja URLs internas do Weblate para mais detalhes.
URL de push 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.
Ver 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 arquivos fonte (localização das mensagens usadas). Quando vazio, nenhum desses links será gerado. Você pode usar Marcação de modelo.
Por exemplo, no GitHub, use algo como: https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}
No caso de seus caminhos serem relativos a pastas diferentes, você pode querer remover o diretório principal pelo filtro parentdir
(veja 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 Localização contínua não é usada, ou quando há a necessidade de mesclar manualmente as alterações. Você 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.
Ver também
Máscara de arquivo¶
Máscara de arquivos a traduzir, incluindo caminho. Deve incluir um “*” substituindo 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 arquivo de tradução (por exemplo, mais domínios gettext), você precisa criar um componente para cada um deles.
Por exemplo, po/*.po
ou locale/*/LC_MESSAGES/django.po
.
No caso de seu nome de arquivo conter caracteres especiais como [
, ]
, eles precisam ser escapados como [[]
ou []]
.
Arquivo de idioma da base monolíngue¶
Arquivo base contendo definições de texto para Componentes monolíngues.
Editar o arquivo base¶
Permite a edição do arquivo base para Componentes monolíngues.
Arquivo de idioma intermediário¶
Arquivo de idioma intermediário para Componentes monolíngues. Na maioria dos casos, este é um arquivo de tradução fornecido por desenvolvedores e é usado ao criar strings de origem reais.
Quando definido, os textos fonte são baseados neste arquivo, mas todos os outros idiomas são baseados em Arquivo de idioma da base monolíngue. Caso o texto não seja traduzida para o idioma fonte, a tradução para outros idiomas é proibida. Isso fornece uma Rota de qualidade para os textos fonte.
Modelo para novas traduções¶
Arquivo base usado para gerar novas traduções, por exemplo, arquivo .pot
com gettext.
Dica
Em muitos formatos monolíngues, o Weblate começa com um arquivo em branco por padrão. Use-o no caso de desejar que todas os textos estejam presentes com um valor vazio ao criar uma nova tradução.
Formato de arquivo¶
Formato do arquivo de tradução, veja também Formatos de arquivos suportados.
Endereço do relatório de erros do texto fonte¶
Endereço de e-mail usado para relatar bugs upstream. Este endereço também receberá notificação sobre quaisquer comentários de texto fonte feitos no Weblate.
Permitir propagação de tradução¶
Você pode desativar a propagação de traduções para este componente de outros componentes dentro do mesmo projeto. Isso realmente depende do que você está traduzindo, à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 você esteja usando os mesmos IDs em todo o projeto.
O valor padrão pode ser alterado por DEFAULT_TRANSLATION_PROPAGATION
.
Habilitar sugestões¶
Se sugestões de tradução são aceitas para este componente.
Votação de sugestões¶
Ativa a emissão de votos para sugestões, veja Votação de sugestões.
Aceitar sugestões automaticamente¶
Aceita automaticamente sugestões votadas, veja Votação de sugestões.
Marcadores de tradução¶
Personalização de verificações de qualidade e outros comportamentos do Weblate, veja Personalizando comportamento usando marcadores.
Verificações forçadas¶
Lista de verificações que não podem ser ignoradas, veja Forçando verificações.
Nota
Forçar a verificação não a habilita automaticamente, você ainda deve habilitá-la Personalizando comportamento usando marcadores em Marcadores de tradução ou Informações adicionais sobre textos fonte.
Licença da tradução¶
Licença da tradução (não precisa ser igual à licença do código-fonte).
Acordo de colaborador¶
Acordo de usuário que precisa ser aprovado antes de um usuário poder traduzir este componente.
Adicionando nova tradução¶
Como lidar com solicitações de criação de novos idiomas. Opções disponíveis:
- Contatar os mantenedores
O usuário pode selecionar o idioma desejado e os mantenedores do projeto receberão uma notificação sobre isso. Cabe a eles adicionar (ou não) o idioma ao repositório.
- Apontar para a URL de instruções de tradução
É apresentado ao usuário um link 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 equipe antes de iniciar a tradução real).
- Criar novo arquivo de idioma
O usuário pode selecionar o idioma e o Weblate cria automaticamente o arquivo para ele e a tradução pode começar.
- Desabilitar adição de novas traduções
Não haverá a opção para o usuário iniciar uma nova tradução.
Dica
Os administradores do projeto podem adicionar novas traduções mesmo se estiver desabilitado aqui quando for possível (tanto Modelo para novas traduções ou o formato de arquivo tem suporte a partir de um arquivo vazio).
Gerenciar textos¶
Novo na versão 4.5.
Configura se os usuários 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 desabilitado (elas seriam descartadas na próxima vez que você atualizasse os arquivos de tradução). No Weblate, você pode gerenciar textos para cada tradução e não exige que os textos em todas as traduções sejam consistentes.
Para formatos monolíngues, os textos são gerenciados apenas no idioma fonte e são automaticamente adicionados ou removidos nas traduções. Os textos aparecem nos arquivos de tradução assim que são traduzidos.
Estilo de código de idioma¶
Personalize o código de idioma usado para gerar o nome do arquivo para traduções criado por Weblate.
Estilo de mesclagem¶
Você pode configurar como as atualizações do repositório upstream são tratadas. Isso pode não ser compatível com alguns VCSs. Veja Merge ou rebase para mais detalhes.
Valor padrão 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 padrão pode ser alterado por DEFAULT_ADD_MESSAGE
, DEFAULT_ADDON_MESSAGE
, DEFAULT_COMMIT_MESSAGE
, DEFAULT_DELETE_MESSAGE
, DEFAULT_MERGE_MESSAGE
.
Push ao fazer commit¶
Se as alterações confirmadas devem ser enviadas automaticamente para o repositório upstream. Quando habilitado, o push é iniciado assim que o Weblate confirma as alterações em seu repositório subjacente (veja Commits adiados). Para habilitar o push URL de push do repositório também deve ser configurado.
Idade das alterações para fazer commit¶
Define a idade (em horas) das alterações antes de ser feito commit pela tarefa em segundo plano ou pelo comando de gerenciamento commit_pending
. Todas as alterações em um componente tem commit feito quando houver pelo menos uma alteração anterior a esse período.
O valor padrão pode ser alterado por COMMIT_PENDING_HOURS
.
Dica
Existem outras situações onde mudanças pendentes podem ter seu commit feito, veja Commits adiados.
Bloquear em erro¶
Bloqueia o componente (e os componentes vinculados, consulte URLs internas do Weblate) no primeiro push ou mesclagem com falha em seu repositório upstream, 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 você estiver traduzindo de algo diferente do inglês.
Dica
Caso você esteja traduzindo arquivos bilíngues do inglês, mas também queira fazer correções na tradução para o inglês, escolha Inglês (Desenvolvedor) como idioma fonte para evitar conflito entre o nome do idioma fonte e a tradução existente.
Para traduções monolíngues, você pode usar tradução intermediária neste caso, veja Arquivo de idioma intermediário.
Filtro de idioma¶
Expressão regular usada para filtrar a tradução ao examinar por uma máscara de arquivo. Pode ser usada para limitar a lista de idiomas gerenciados pelo Weblate.
Nota
Você precisa listar os códigos de idioma conforme aparecem no nome do arquivo.
Alguns exemplos de filtragem:
Descrição do filtro |
Expressão regular |
---|---|
Apenas idiomas selecionados |
|
Exclui idiomas |
|
Filtra apenas códigos de duas letras |
|
Exclui arquivos que não são idiomas |
|
Inclui todos os arquivos (padrão) |
|
Expressão regular de variantes¶
Expressão regular usada para determinar as variantes de um texto, veja Variantes de textos.
Nota
A maioria dos campos pode ser editada por proprietários ou gerentes de projetos, na interface do Weblate.
Prioridade¶
Componentes com prioridade mais alta são oferecidos primeiro para os tradutores.
Acesso restrito¶
Por padrão, o componente é visível para qualquer pessoa que tenha 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 em um 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. Você terá que conceder acesso a ele explicitamente. Isso pode ser feito concedendo acesso a um novo grupo de usuários e colocando usuários nele, ou usando os grupos de controle de acesso padrão personalizado ou privado.
O valor padrão 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. Você pode configurar como ele será listado usando a Cor do glossário.
O glossário estará acessível em todos os projetos definidos por Compartilhar em projetos.
É recomendado habilitar Gerenciar textos em glossários para permitir adicionar novas palavras a eles.
Ver 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 arquivo 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 }}
Porcentagem de textos que precisam de revisão
{{ stats.translated }}
Contagem de textos traduzidos
{{ stats.translated_percent }}
Porcentagem de textos traduzidos
{{ stats.allchecks }}
Número de textos com falhas nas verificações
{{ stats.allchecks_percent }}
Porcentagem 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 arquivo
{{filename}}
nome do arquivo, você também pode remover as partes principais usando o filtro
parentdir
, por exemplo{{filename|parentdir}}
Você pode combiná-los com filtros:
{{ component|title }}
Você pode usar as condições:
{% if stats.translated_percent > 80 %}Well translated!{% endif %}
Há uma tag adicional disponível para substituir caracteres:
{% replace component "-" " " %}
Você pode combiná-lo com filtros:
{% replace component|capfirst "-" " " %}
Existem também filtros adicionais para manipular com nomes de arquivos:
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 para o Weblate pode ser um processo demorado, dependendo do tamanho de suas traduções. Aqui estão algumas dicas:
Otimizar a configuração¶
A configuração padrão é útil para testar e depurar o Weblate, enquanto para uma configuração de produção, você 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 usando Celery)
Verificar limites de recursos¶
Se você estiver importando 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 arquivos 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 usando Celery).
Desabilitar 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 arquivos de tradução (por exemplo, para diferentes domínios gettext ou partes de aplicativos Android), você 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 componente.
Para usar o complemento, primeiro você precisa criar um componente para um arquivo 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 gerenciamento, você precisa criar um projeto que conterá todos os componentes e então executar import_project
ou import_json
.
Ver 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.
Você pode ajustar ainda mais esse mapeamento no nível do projeto por Aliases de idioma.
Se nenhuma correspondência exata for encontrada, uma tentativa será feita para melhor encaixá-la em um 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 usando 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). Você pode querer mudar isso na interface administrativa mais tarde, (veja Alterando as definições de idioma) e relatar ao rastreador de problemas (veja Contribuindo para o Weblate), para que a definição apropriada possa ser adicionada ao próximo lançamento do Weblate.
Dica
No caso de você ver algo indesejado como idioma, você pode querer ajustar Filtro de idioma para ignorar tal arquivo ao analisar traduções.
Ver também
Alterando as definições de idioma¶
Você 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 desabilitado usando UPDATE_LANGUAGES
. Você também pode forçar a atualização do banco de dados para corresponder aos dados embutidos do Weblate usando setuplang
.
Ver também
As definições de idioma estão no repositório weblate-language-data repository.
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, dependendo da variante real. Para obter o comportamento correto no Weblate, é recomendável usar apenas códigos de idioma individuais e evitar macroidiomas.
Ver 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.
Nome do idioma¶
Nome visível do idioma. Os nomes dos idiomas incluídos no Weblate também estão sendo localizados dependendo do idioma da interface do usuário.
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.
Número de plurais¶
Número 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 arquivo.
Weblate pode iniciar automaticamente uma nova tradução para todos os formatos de arquivo.
Alguns formatos esperam começar com um arquivo vazio e apenas textos traduzidos para serem incluídas (por exemplo, Recurso de textos 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 você usa para lidar com a tradução (por exemplo, com Arquivos JSON).
Quando você especifica Modelo para novas traduções em Configuração de componente, Weblate usará este arquivo para iniciar novas traduções. Todas as traduções existentes serão removidas do arquivo ao fazer isso.
Quando Modelo para novas traduções está vazio e o formato de arquivo suporta, um arquivo vazio é criado onde novos textos serão adicionados assim que forem traduzidos.
O Estilo de código de idioma permite que você personalize o código de idioma usado nos nomes de arquivos gerados:
- Padrão baseado no formato de arquivo
Dependendo do formato do arquivo, para a maioria deles utiliza-se POSIX.
- Estilo POSIX usando sublinhado como um separador
Normalmente usado por gettext e ferramentas relacionadas, produz códigos de linguagem como
pt_BR
.- Estilo POSIX usando sublinhado como separador, incluindo código de 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 usando hífen como um separador
Normalmente usado em plataformas web, produz códigos de idioma como
pt-BR
.- Estilo BCP usando hífen como separador, incluindo código de 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 aplicativos 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 de idioma são aplicados ao contrário.
Nota
O Weblate reconhece qualquer um desses ao analisar arquivos de tradução; as configurações acima apenas influenciam como os novos arquivos são criados.
Ver também
Localização contínua¶
Há infraestrutura em vigor para que sua tradução acompanhe de perto o desenvolvimento. Desta forma, os tradutores podem trabalhar em traduções o tempo todo, em vez de trabalhar através de uma enorme quantidade de texto novo pouco antes do lançamento.
Ver também
Integrando com Weblate descreve maneiras básicas de integrar seu desenvolvimento com o Weblate.
Este é o processo:
Os desenvolvedores fazem alterações e fazem push delas para o repositório VCS.
Opcionalmente, os arquivos de tradução são atualizados (isso depende do formato do arquivo, consulte Por que é que o Weblate ainda mostra os textos de tradução antigos quando eu atualizei o modelo?).
O Weblate faz o pull das alterações do repositório VCS, consulte Atualizando repositórios.
Uma vez que o Weblate detecta alterações nas traduções, os tradutores são notificados com base em suas configurações de assinatura.
Os tradutores enviam traduções usando a interface web do Weblate ou enviam alterações feitas offline.
Uma vez que os tradutores tenham finalizado, 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).
Atualizando repositórios¶
Você deve configurar alguma maneira de atualizar repositórios de backend a partir de sua fonte.
Use Ganchos de notificação para integrar com a maioria dos serviços comuns de hospedagem de código:
Acione manualmente a atualização no gerenciamento do repositório ou usando API REST do Weblate ou Weblate Client
Habilite
AUTO_UPDATE
para atualizar automaticamente todos os componentes na sua instância WeblateExecute
updategit
(com a seleção de um projeto ou--all
para atualizar tudo)
Sempre que o Weblate atualizar o repositório, as extensões de pós-atualização serão acionadas, consulte Extensões.
Evitando conflitos de mesclagem¶
Os conflitos de mesclagem do Weblate surgem quando o mesmo arquivo 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 ele descarte alterações antes de atualizar os arquivos fora do Weblate.
A primeira abordagem é fácil com arquivos monolíngues - você pode adicionar novos textos no Weblate e deixar a edição completa dos arquivos lá. Para arquivos bilíngues, geralmente há algum tipo de processo de extração de mensagens para gerar arquivos traduzíveis a partir 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 usando xgettext) e, em seguida, o processo mais mescla-o em traduções reais (os arquivos GETTEXT PO são atualizados usando msgmerge). Você pode executar o segundo passo dentro do Weblate e ele garantirá que todas as alterações pendentes sejam incluídas antes desta operação.
A segunda abordagem pode ser alcançada usando API REST do Weblate para forçar o Weblate a fazer push de todas as alterações pendentes e bloquear a tradução enquanto você 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 você tiver vários componentes compartilhando o mesmo repositório, você precisa bloqueá-los todos separadamente:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Nota
O exemplo usa Weblate Client, que precisa de configuração (chaves de API) para ser capaz de controlar o Weblate remotamente. Você também pode conseguir isso usando qualquer cliente HTTP em vez de wlc, por exemplo, curl, ver API REST do Weblate.
Ver também
Recebendo automaticamente alterações do GitHub¶
O Weblate vem com suporte nativo ao GitHub.
Se você estiver usando o Hosted Weblate, a abordagem recomendada é instalar o aplicativo Weblate, dessa forma você terá a configuração correta sem ter que configurar muita coisa. 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/
.
Você pode deixar outros valores nas configurações padrão (o Weblate pode lidar com ambos os tipos de conteúdo e consome apenas o evento push).
Recebendo automaticamente alterações do Bitbucket¶
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/
).

Recebendo automaticamente alterações do GitLab¶
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/
).
Recebendo automaticamente alterações do Pagure¶
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:

Recebendo automaticamente alterações do Azure Repos¶
Novo na versão 3.8.
O Weblate tem suporte para webhooks do Azure Repos, adicione um webhook para 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.
Recebendo automaticamente alterações do Gitea Repos¶
Novo na versão 3.9.
Weblate tem suporte para webhooks do Gitea, adicione um Gitea Webhook para evento Push events com destino para a 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.
Recebendo automaticamente alterações de Gitee Repos¶
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.
Atualizando automaticamente repositórios nightly¶
O Weblate busca automaticamente repositórios remotos nightly para melhorar o desempenho ao mesclar alterações mais tarde. Você 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 push do repositório) e, nesse caso, o Weblate será capaz de fazer push de alteração para o repositório remoto. O Weblate também pode ser configurado para fazer push automaticamente das alterações em cada commit (isso é o padrão, veja Push ao fazer commit). Se você não quiser que seja feito push automático das alterações, você pode fazer isso manualmente em Manutenção do repositório ou usando API via wlc push
.
As opções de push diferem com base no Integração com controle de versão usado, mais detalhes são encontrados nesse capítulo.
No caso de você não querer pushes diretos pelo Weblate, há suporte para pull requests do GitHub, do GitLab e do Pagure ou revisões do Gerrit, você pode ativá-los escolhendo GitHub, GitLab, Gerrit ou Pagure, como Sistema de controle de versão 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 |
|
Fazer push para 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
Você também pode habilitar o push automático de alterações após o Weblate fazer commit, isso pode ser feito em Push ao fazer commit.
Ver também
Consulte Acessando repositórios para configurar chaves SSH e Commits adiados para obter informações sobre quando o Weblate decide fazer commit de alterações.
Ramos protegidos¶
Se você estiver usando o Weblate em ramo protegido, você 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 você não conhece). Uma abordagem alternativa é abrir mão desta limitação em favor do usuário de push no Weblate.
Por exemplo, no GitHub, isso pode ser feito na configuração do repositório:

Merge ou rebase¶
Por padrão, o Weblate mescla o repositório upstream em seu próprio. Esta é a maneira mais segura no caso de você também acessar o repositório subjacente por outros meios. Caso você não precise disso, você 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 você quer ou não habilitá-los.
Interagindo com os outros¶
O Weblate facilita a interação com outras pessoas usando sua API.
Ver também
Commits adiados¶
O comportamento do Weblate é agrupar commits do mesmo autor em um só commit, se possível. Isso reduz consideravelmente o número de commits, no entanto, você pode precisar dizer explicitamente para ele fazer os commits no caso de você querer deixar o repositório VCS em sincronia, por exemplo, para mesclagem (isso é por padrão permitido para o grupo Gerenciadores, consulte Lista de privilégios).
As alterações neste modo têm seu commit feito assim que qualquer uma das seguintes condições são cumpridas:
Outra pessoa altera um texto já alterado.
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 para fazer commit em Configuração de componente.
Dica
Os commits são criados para cada componente. Então, caso você tenha muitos componentes, você ainda verá muitos compromissos. Você pode utilizar a extensão Squash de commits git neste caso.
Se você quiser fazer commit das alterações com mais frequência e sem verificar a idade, você 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,
}
}
Processando 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.
Mantendo traduções iguais entre componentes¶
Uma vez que você tenha vários componentes de tradução, você pode querer garantir que os mesmos textos tenham a mesma tradução. Isso pode ser alcançado em vários níveis.
Propagação de tradução¶
Com a propagação de tradução habilitada (que é o padrão, consulte Configuração de componente), todas as novas traduções são feitas automaticamente em todos os componentes com textos correspondentes. Estas traduções são devidamente creditadas ao usuário que traduz atualmente em todos os componentes.
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 os textos são diferentes. Você pode usar isso para revisar 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. Você pode acioná-la manualmente (veja Tradução automática) ou fazê-la ser executada automaticamente na atualização do repositório usando uma extensão (veja Tradução automática).
Licenciando traduções¶
Você pode especificar sob quais traduções de licença são contribuídas. Isso é especialmente importante de se as traduções forem abertas ao público, para estipular para que elas possam ser usadas.
Você deve especificar as informações da licença da Configuração de componente. Você 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 seção de informações de tradução da respectiva 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, você provavelmente precisa de consentimento prévio.
Acordo de colaborador¶
Se você especificar um contrato de licença de colaborador, apenas os usuários 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 links externos podem ser incluídos. A marcação HTML não pode ser usada.
Licenças de usuário¶
Qualquer usuário pode revisar todas as licenças de tradução de todos os projetos públicos na instância a partir de seu perfil:

Processo de tradução¶
Votação de sugestões¶
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, usuários normais perdem o privilégio de salvar diretamente traduções ou aceitar sugestões. Isso pode ser sobrescrito pela permissão Editar texto quando as sugestões são forçadas.
Você pode combiná-las com :ref:`controle de acesso <access-control>`para uma das configurações a seguir:
Usuários 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 usuários salvarem traduções.
Usuários sugerem e votam em sugestões com aceitação automática uma vez que um número definido 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 usuários quando não têm certeza sobre uma tradução, marcando múltiplas sugestões.) - Apenas ativar a votação.
Informações adicionais sobre textos 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 arquivos 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 tela 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.
Ver 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 padrão de sinalizadores de tradução é determinado pela Configuração de componente de tradução e o arquivo de tradução. No entanto, você pode querer usá-lo para personalizar isso 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. Você pode usar Markdown para incluir links e outras marcações.
Contexto visual para textos¶
Novo na versão 2.9.
Você pode enviar uma captura de tela mostrando 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 tela enviada é mostrada na barra lateral de contexto de tradução:

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

Verificações e correções¶
Correções automáticas personalizadas¶
Você também pode implementar sua própria correção automática, além das padrão e incluí-las em AUTOFIX_LIST
.
As correções automáticas são poderosas, mas também podem causar danos; tenha cuidado ao escrever um.
Por exemplo, a correção automática a seguir iria substituir cada ocorrência do texto foo
, em uma 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 para a classe Python em AUTOFIX_LIST
, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
Personalizando comportamento usando marcadores¶
Você pode ajustar o comportamento de Weblate (principalmente de verificações) para cada texto fonte (na revisão de textos fontes, veja Informações adicionais sobre textos fonte) ou em Configuração de componente (Marcadores de tradução). Alguns formatos de arquivo também permitem especificar marcadores diretamente no formato (veja Formatos de arquivos suportados).
Os marcadores são separados por vírgulas, os parâmetros são separados por caracteres de dois pontos. Você pode usar aspas para incluir espaços em branco ou caracteres especiais no texto. Por exemplo:
placeholders:"special:value":"other value", regex:.*
Aqui está uma lista de marcadores atualmente aceitos:
rst-text
Trata um texto como um documento reStructuredText, afeta Tradução não alterada.
md-text
Trata o texto como um documento de Markdown.
dos-eol
Usa marcadores de ponta de linha do DOS em vez dos Unix (
\r\n
em vez de\n
).url
O texto deve consistir apenas em uma URL.
safe-html
O texto deve fazer uso seguro de HTML, veja HTML inseguro.
read-only
A texto é somente leitura e não deve ser editado no Weblate, veja Textos somente leitura.
priority:N
Prioridade do texto. Os textos de maior prioridade são apresentados primeiro para tradução. A prioridade padrão é 100, a maior prioridade que um texto tem, mais cedo é oferecido para tradução.
max-length:N
Limita o comprimento máximo de um texto a caracteres N, veja Comprimento máximo da tradução.
xml-text
Trata o texto como documento XML, afeta Sintaxe XML e Marcação XML.
font-family:NOME
Define a família de fontes para verificações da renderização, veja Gerenciando fontes.
font-weight:PESO
Define o peso da fonte para verificações da renderização, veja Gerenciando fontes.
font-size:TAMANHO
Define o tamanho da fonte para verificações da renderização, veja Gerenciando fontes.
font-spacing:ESPAÇAMENTO
Define o espaçamento de letras para verificações da renderização, veja Gerenciando fontes.
placeholders:NOME:NOME2:...
Textos 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 Comprimento 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 este texto como uma variante do texto com o fonte correspondente. Veja Variantes de textos.
regex:EXPRESSÃO REGULAR
Expressão regular para corresponder à tradução; veja Expressão regular.
forbidden
Indica tradução proibida em um glossário, veja Traduções proibidas.
python-format
,c-format
,object-pascal-format
,php-format
,python-brace-format
,javascript-format
,c-sharp-format
,java-format
,java-messageformat
,lua-format
,auto-java-messageformat
,qt-format
,qt-plural-format
,ruby-format
,scheme-format
,vue-format
Trata todos os textos como textos de formato, afeta Formato Python, Formato C, Formato de Object Pascal, Formato PHP, Formato Qt, Formato de plural Qt, Formato Ruby, Formatação Vue I18n, Formato de chaves Python, Formato JavaScript, Formato C#, Formato Java, MessageFormat do Java, Formato Lua, Formato Scheme, Tradução não alterada.
strict-same
Faz com que “Tradução não alterada” evite usar a lista negra de palavras embutidas, veja Tradução não alterada.
check-glossary
Habilita a verificação de qualidade “Não seguir glossário”.
ignore-bbcode
Ignora a verificação de qualidade “Marcação de BBcode”.
ignore-duplicate
Ignora a verificação de qualidade “Palavras consecutivas duplicadas”.
ignore-check-glossary
Ignora a verificação de qualidade “Não seguir glossário”.
ignore-double-space
Ignora a verificação de qualidade “Espaço duplo”.
ignore-angularjs-format
Ignora a verificação de qualidade “Texto de interpolação AngularJS”.
ignore-c-format
Ignora a verificação de qualidade “Formato C”.
ignore-c-sharp-format
Ignora a verificação de qualidade “Formato C#”.
ignore-es-format
Ignora a verificação de qualidade “Literais de modelo de ECMAScript”.
ignore-i18next-interpolation
Ignora a verificação de qualidade “Interpolação de i18next”.
ignore-java-format
Ignora a verificação de qualidade “Formato Java”.
ignore-java-messageformat
Ignora a verificação de qualidade “MessageFormat do Java”.
ignore-javascript-format
Ignora a verificação de qualidade “Formato JavaScript”.
ignore-lua-format
Ignora a verificação de qualidade “Formato Lua”.
ignore-object-pascal-format
Ignora a verificação de qualidade “Formato de Object Pascal”.
ignore-percent-placeholders
Ignora a verificação de qualidade “Espaços reservados de porcentagem”.
ignore-perl-format
Ignora a verificação de qualidade “Formato Perl”.
ignore-php-format
Ignora a verificação de qualidade “Formato PHP”.
ignore-python-brace-format
Ignora a verificação de qualidade “Formato de chaves Python”.
ignore-python-format
Ignora a verificação de qualidade “Formato Python”.
ignore-qt-format
Ignora a verificação de qualidade “Formato Qt”.
ignore-qt-plural-format
Ignora a verificação de qualidade “Formato de plural Qt”.
ignore-ruby-format
Ignora a verificação de qualidade “Formato Ruby”.
ignore-vue-format
Ignora a verificação de qualidade “Formatação Vue I18n”.
ignore-translated
Ignora a verificação de qualidade “Foi traduzido”.
ignore-inconsistent
Ignora a verificação de qualidade “Inconsistente”.
ignore-kashida
Ignora a verificação de qualidade “Letra Kashida usada”.
ignore-md-link
Ignora a verificação de qualidade “Links Markdown”.
ignore-md-reflink
Ignora a verificação de qualidade “Referências Markdown”.
ignore-md-syntax
Ignora a verificação de qualidade “Sintaxe Markdown”.
ignore-max-length
Ignora a verificação de qualidade “Comprimento máximo da tradução”.
ignore-max-size
Ignora a verificação de qualidade “Tamanho máximo da tradução”.
ignore-escaped-newline
Ignora a verificação de qualidade “n não correspondente”.
ignore-end-colon
Ignora a verificação de qualidade “Caractere de dois pontos não correspondente”.
ignore-end-ellipsis
Ignora a verificação de qualidade “Reticências não correspondentes”.
ignore-end-exclamation
Ignora a verificação de qualidade “Ponto de exclamação não correspondente”.
ignore-end-stop
Ignora a verificação de qualidade “Ponto final não correspondente”.
ignore-end-question
Ignora a verificação de qualidade “Ponto de interrogação não correspondente”.
ignore-end-semicolon
Ignora a verificação de qualidade “ponto e vírgula não correspondente”.
ignore-newline-count
Ignora a verificação de qualidade “Quebras de linha descasadas”.
ignore-plurals
Ignora a verificação de qualidade “Faltam plurais”.
ignore-placeholders
Ignora a verificação de qualidade “Espaços reservados”.
ignore-punctuation-spacing
Ignora a verificação de qualidade “Espaçamento de pontuação”.
ignore-regex
Ignora a verificação de qualidade “Expressão regular”.
ignore-same-plurals
Ignora a verificação de qualidade “Mesmos plurais”.
ignore-begin-newline
Ignora a verificação de qualidade “Nova linha no início”.
ignore-begin-space
Ignora a verificação de qualidade “Espaços no início”.
ignore-end-newline
Ignora a verificação de qualidade “Nova linha no final”.
ignore-end-space
Ignora a verificação de qualidade “Espaço no final”.
ignore-same
Ignora a verificação de qualidade “Tradução não alterada”.
ignore-safe-html
Ignora a verificação de qualidade “HTML inseguro”.
ignore-url
Ignora a verificação de qualidade “URL”.
ignore-xml-tags
Ignora a verificação de qualidade “Marcação XML”.
ignore-xml-invalid
Ignora a verificação de qualidade “Sintaxe XML”.
ignore-zero-width-space
Ignora a verificação de qualidade “Espaço com largura zero”.
ignore-ellipsis
Ignora a verificação de qualidade “Reticências”.
ignore-long-untranslated
Ignora a verificação de qualidade “Não traduzido a muito tempo”.
ignore-multiple-failures
Ignora a verificação de qualidade “Várias verificações com falha”.
ignore-unnamed-format
Ignora a verificação de qualidade “Várias variáveis sem nome”.
ignore-optional-plural
Ignora a verificação de qualidade “Não pluralizado”.
Nota
Geralmente, a regra é chamada de ignore-*
para qualquer verificação, usando seu identificador, para que você possa usá-la mesmo para suas verificações personalizadas.
Esses marcadores são entendidos tanto nas configurações de Configuração de componente, por configurações de textos fonte quanto no próprio arquivo de tradução (por exemplo, no GNU gettext).
Forçando verificações¶
Novo na versão 3.11.
Você pode configurar uma lista de verificações que não podem ser ignoradas definindo Verificações forçadas em Configuração de componente. Cada verificação listada não pode ser ignorada na interface do usuário e qualquer texto com falha nesta verificação é marcado como Precisa de edição (veja Estados de tradução).
Gerenciando fontes¶
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 usuário 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 usando um sinalizador de tradução (ver Personalizando comportamento usando marcadores).
Ferramenta de gerenciamento de fontes do Weblate em Fonts sob o menu Gerenciar do seu projeto de tradução fornece interface para carregar e gerenciar fontes. As fontes TrueType ou OpenType podem ser carregadas, configurar grupos de fontes e usá-los na verificação.
Os grupos de fontes permitem definir diferentes fontes para diferentes idiomas, o que é normalmente necessário para idiomas não-latinos:

O grupos de fontes 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 fontes e o estilo são automaticamente reconhecidos após carregá-los:

Você pode ter um número de fontes carregadas para Weblate:

Para usar as fontes para verificar o comprimento do texto, passe-o os marcadores apropriados (veja Personalizando comportamento usando marcadores). Você provavelmente precisará dos seguintes:
max-size:500
Define o máximo de largura.
font-family:ubuntu
Define o grupo de fontes para usar especificando seu identificador.
font-size:22
Define o tamanho da fonte.
Escrevendo as próprias verificações¶
Uma ampla gama de verificações de qualidade estão embutidas, (veja Verificações de qualidade), embora eles possam não cobrir tudo o que você deseja verificar. A lista de verificações realizadas pode ser ajustada usando CHECK_LIST
e você também pode adicionar verificações personalizadas.
Crie uma subclasse de weblate.checks.Check
Defina alguns atributos.
Implemente o método
check
(se você quiser lidar com plurais em seu código) ou o métodocheck_single
(que faz isso por você).
Alguns exemplos:
Para instalar verificações personalizadas, forneça um caminho totalmente qualificado para a classe Python em CHECK_LIST
, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
Verificando 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 o texto “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 de máquina¶
Suporte integrado para vários serviços de tradução automática e pode ser ativado pelo administrador usando 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 adicionando weblate.machinery.tmserver.AmagamaTranslation
a MT_SERVICES
.
Ver 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 seu próprio servidor Apertium-APy.
Ative este serviço adicionando weblate.machinery.apertium.ApertiumAPYTranslation
a MT_SERVICES
e defina MT_APERTIUM_APY
.
Ver 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 em uma 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 você precisa obter um ID e uma chave de API do Baidu para usá-lo.
Ative este serviço adicionando weblate.machinery.baidu.BaiduTranslation
a MT_SERVICES
e defina MT_BAIDU_ID
e MT_BAIDU_SECRET
.
Ver 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. Você precisa comprar a assinatura do DeepL API ou pode usar o plano legado :guilabel:`DeepL Pro (classic) `.
Ative este serviço adicionando weblate.machinery.deepl.DeepLTranslation
a MT_SERVICES
e definda MT_DEEPL_KEY
.
Dica
No caso de você ter uma assinatura para ferramentas CAT, você 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 vocẽ estar em um plano gratuito em vez de um plano pago, você tem que usar https://api-free.deepl.com/
em vez de https://api.deepl.com/
. Você pode ajustar os dois parâmetros com MT_DEEPL_API_URL
.
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 em um determinado período de tempo, para evitar abusos.
Ative este serviço adicionando weblate.machinery.glosbe.GlosbeTranslation
a MT_SERVICES
.
Ver 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 você 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
.
Ver 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 habilitar o serviço, adicione weblate.machinery.googlev3.GoogleV3Translation
para MT_SERVICES
e defina
Se location falhar, você 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 habilitar 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 você usa com a API V2 do Tradutor pode ser usada com API 3.
API V3 de texto do Tradutor¶
Você precisa se registrar no portal do Azure e usar a chave obtida lá. Com as novas chaves do Azure, você 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 você acesse programaticamente a terminologia, as definições e os textos da interface do usuário (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
.
Ver 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
.
Ver 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 você fornece um endereço de e-mail de contato em MT_MYMEMORY_EMAIL
. Você também pode pedir mais.
Ative este serviço adicionando weblate.machinery.mymemory.MyMemoryTranslation
em MT_SERVICES
e defina MT_MYMEMORY_EMAIL
.
Ver 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¶
Você pode executar 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. Você também pode usá-lo com um servidor amaGama, que é uma versão aprimorada do tmserver.
Primeiro, você vai querer 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 suas solicitações:
tmserver -d /var/lib/tm/db
Configure o Weblate para falar com ele:
MT_TMSERVER = "http://localhost:8888/tmserver/"
Ver 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
.
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.
Você precisa ter uma conta SAP (e o SAP Translation Hub habilitado 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, você precisa definir MT_SAP_BASE_URL
e MT_SAP_SANDBOX_APIKEY
.
Para acessar a API de produção, você precisa definir MT_SAP_BASE_URL
, MT_SAP_USERNAME
e MT_SAP_PASSWORD
.
Tradução da máquina personalizada¶
Você também pode implementar 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 em uma 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}
Você pode listar 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 gerenciar extensões a partir do menu Gerenciar ↓ Extensões dos respectivos componente de tradução.
Dica
Você 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ática
filter_type
Filtro de pesquisa
auto_source
Fonte da tradução automática
component
Componentes
Desativa contribuição para a memória de tradução compartilhada do projeto para obter acesso a componentes adicionais.
engines
Mecanismos de tradução de máquina
threshold
Limite de pontuação
Traduz automaticamente textos usando tradução de máquina ou outros componentes.
Ela é acionada:
Quando novos textos aparecem em um componente.
Uma vez por mês para cada componente, isso pode ser configurado usando
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 CSS
Seletor CSS para detectar elementos localizáveis.
cookie_name
Nome do cookie de idioma
Nome do cookie que armazena preferência de idioma.
files
Extrair textos de arquivos HTML
Lista de nomes de arquivos em URLs atuais ou remotos para analisar para textos traduzíveis.
Publica traduções para rede de entrega de conteúdo (CDN) para uso em localização 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 seu componente, que pode ser incluído em páginas HTML para localizá-los. Veja Traduzindo HTML e JavaScript usando CDN do Weblate para mais detalhes.
Remover textos vazios¶
Novo na versão 4.4.
- ID da extensão
weblate.cleanup.blank
- Configuração
Esta extensão não tem configuração.
Remove textos sem uma tradução dos arquivos de tradução.
Use isso para não ter textos vazios em arquivos de tradução (por exemplo, se sua biblioteca de localização os exibe como em falta em vez de recorrer ao texto fonte).
Limpar arquivos de tradução¶
- ID da extensão
weblate.cleanup.generic
- Configuração
Esta extensão não tem configuração.
Atualiza todos os arquivos de tradução para corresponder ao arquivo base monolíngue. Para a maioria dos formatos isto significa remover chaves de tradução obsoletas que não estão mais presentes no arquivo base.
Adiciona idiomas em falta¶
- ID da extensão
weblate.consistency.languages
- Configuração
Esta extensão não tem configuraçã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 automaticamente os textos recém-adicionadas com Tradução automática.
Descoberta de componente¶
- ID da extensão
weblate.discovery.discovery
- Configuração
match
Expressão regular para corresponder aos arquivos de tradução
file_format
Formato de arquivo
name_template
Personalizar o nome do componente
base_file_template
Defina o nome do arquivo base monolíngue
Deixe vazio para arquivos de tradução bilíngues.
new_base_template
Define o arquivo base para novas traduções
Nome do arquivo usado para criar novas traduções. Para gettext escolha o arquivo .pot.
language_regex
Filtro de idioma
Expressão regular para filtrar arquivos de tradução ao examinar por uma máscara de arquivo.
copy_addons
Clone extensões do componente principal para as recém-criadas
remove
Remova componentes para arquivos inexistentes
confirm
Confirmo que a correspondência acima parece correta
Adiciona ou remove automaticamente componentes do projeto com base nas alterações de arquivo no sistema de controle de versão.
Acionada toda vez que o VCS é atualizado, de outra forma semelhante ao comando de gerenciamento import_project
. Desta forma, você pode rastrear vários componentes de tradução dentro de um VCS.
A correspondência é feita usando expressões regulares que permitem uma configuração complexa, mas é necessário algum conhecimento para fazê-la. Alguns exemplos para casos de uso comum podem ser encontrados na seção de ajuda de extensões.
Uma vez que você acertar Salvar, uma prévia dos componentes correspondentes será apresentada, de onde você 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 preenchendo weblate://project/main-component
no campo Repositório do código-fonte (em Gerenciar ↓ Configurações ↓ Sistema de controle de versão) de cada componente. Isso economiza tempo com configuração e recursos do sistema também.
Ver também
Editor em massa¶
Novo na versão 3.11.
- ID da extensão
weblate.flags.bulk
- Configuração
q
Consulta
state
Estado a definir
add_flags
Marcadores de tradução a adicionar
remove_flags
Marcadores de tradução a remover
add_labels
Etiquetas a adicionar
remove_labels
Etiquetas para remover
Edição em massa de marcadores, etiquetas ou estados de cadeias.
Automatize o etiquetamento começando com a consulta de pesquisa NOT has:label
e adicione etiquetas até que todas os textos tenham todas as etiquetas necessárias. Outras operações automatizadas para metadados Weblate também podem ser feitas.
Exemplos:
Consulta de pesquisa |
|
---|---|
Etiquetas a adicionar |
recente |
Consulta de pesquisa |
|
---|---|
Marcadores de tradução a adicionar |
|
Marcar traduções não alteradas como “Necessita 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.
Sempre que um novo texto traduzível é importado do VCS e corresponde a um texto fonte, é sinalizado como necessitando de edição no Weblate. Especialmente útil para formatos de arquivo que incluem textos fonte para textos não traduzidas.
Dica
Você também pode querer reforçar a verificação Tradução não alterada adicionando o marcador strict-same
aos Marcadores de tradução.
Ver também
Marcar novos textos fonte como “Necessita edição”¶
- ID da extensão
weblate.flags.source_edit
- Configuração
Esta extensão não tem configuração.
Sempre que um novo texto fonte for importado do VCS, ele é marcado como necessita edição no Weblate. Desta forma você pode filtrar facilmente e editar os textos fontes escritos pelos desenvolvedores.
Ver também
Marcar novas traduções como “Necessita edição”¶
- ID da extensão
weblate.flags.target_edit
- Configuração
Esta extensão não tem configuração.
Sempre que um novo texto traduzível for importado do VCS, ele é marcado como necessita edição no Weblate. Desta forma você pode filtrar facilmente e editar as traduções criadas pelos desenvolvedores.
Ver também
Gerador de estatísticas¶
- ID da extensão
weblate.generate.generate
- Configuração
filename
Nome do arquivo gerado
template
Conteúdo do arquivo gerado
Gera um arquivo contendo as informações detalhadas sobre o status da tradução.
Você pode usar um modelo do Django, tanto de nome de arquivo e conteúdo, veja Markdown para uma descrição detalhada de marcação.
Por exemplo, a geração de um arquivo de resumo para cada tradução:
- Nome do arquivo 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 }}", }
Ver também
Geração de pseudolocalidade¶
- ID da extensão
weblate.generate.pseudolocale
- Configuração
source
Textos fonte
target
Tradução alvo
prefix
Prefixo do texto
suffix
Sufixo do texto
Gera uma tradução adicionando prefixo e sufixo de textos fonte automaticamente.
Pseudolocalidades são úteis para encontrar textos que não estão preparadas para localização. Isso é feito alterando todas os textos fonte traduzíveis para facilitar a descoberta de textos inalterados ao executar o aplicativo no idioma da pseudolocalidade.
Também é possível encontrar textos cujas contrapartes localizadas podem não se ajustar ao layout.
Dica
Você pode usar idiomas reais para teste, mas existem pseudolocalidades disponíveis no Weblate - en_XA e ar_XB.
Dica
Você 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 você 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.
Colaboradores nos comentários¶
- ID da extensão
weblate.gettext.authors
- Configuração
Esta extensão não tem configuração.
Atualiza a parte do comentário do cabeçalho do arquivo PO para incluir nomes de contribuidores e anos de contribuições.
O cabeçalho do arquivo 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 variável ALL_LINGUAS no arquivo “configure”¶
- ID da extensão
weblate.gettext.configure
- Configuração
Esta extensão não tem configuração.
Atualiza a variável ALL_LINGUAS em arquivos configure
, configure.in
ou configure.ac
, quando uma nova tradução é adicionada.
Personalizar saída do gettext¶
- ID da extensão
weblate.gettext.customize
- Configuração
width
Quebra de linhas longas
Por padrão, o gettext quebra as linhas em 77 caracteres e em novas linhas. Com o parâmetro –no-wrap a quebra é feita apenas em novas linhas.
Permite personalizar o comportamento de saída do gettext, por exemplo as quebra de linhas.
Ela oferece as seguintes opções:
Quebrar linhas em 77 caracteres e em novas linhas
Quebrar linhas apenas em 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 arquivo LINGUAS¶
- ID da extensão
weblate.gettext.linguas
- Configuração
Esta extensão não tem configuração.
Atualiza o arquivo LINGUAS quando uma nova tradução for adicionada.
Gerar arquivos MO¶
- ID da extensão
weblate.gettext.mo
- Configuração
path
Caminho do arquivo MO gerado
Se não for especificado, o local do arquivo PO será usado.
Gera automaticamente um arquivo MO para cada arquivo PO alterado.
O local do arquivo MO gerado pode ser personalizada e o campo para ele usa Marcação de modelo.
Atualizar arquivos PO para corresponder ao POT (msgmerge)¶
- ID da extensão
weblate.gettext.msgmerge
- Configuração
previous
Manter msgids anteriores de textos traduzidos
no_location
Remove localizações de textos traduzidos
fuzzy
Usar correspondência aproximada
Atualiza todos os arquivos PO (configurados por Máscara de arquivo) para corresponder ao arquivo 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
Squash de commits
append_trailers
Anexar linhas finalizadoras à mensagem do commit resultado de squash
As linhas finalizadoras são linhas semelhantes aos cabeçalhos de e-mail RFC 822, no final da parte livre de uma mensagem de commit, como “Co-authored-by: …’.
commit_message
Mensagem de commit
Esta mensagem de commit será usada em vez das mensagens de commit combinadas a partir de commits após squash.
Fazer squash de commits Git antes de fazer push das alterações.
Commits Git podem ter squash feito antes de fazer o push das alterações em um dos seguintes modos:
Novo na versão 3.4.
Todos os commits em um só
Por idioma
Por arquivo
Novo na versão 3.5.
Por autor
As mensagens de compromisso originais são mantidas, mas a autoria é perdida a menos que Por autor seja selecionada ou a mensagem de compromisso 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 saída JSON¶
- ID da extensão
weblate.json.customize
- Configuração
sort_keys
Ordenar chaves JSON
indent
Recuo do JSON
Permite ajustar o comportamento de saída do JSON, por exemplo recuo ou classificação.
Formatar o arquivo de propriedades Java¶
- ID da extensão
weblate.properties.sort
- Configuração
Esta extensão não tem configuração.
Ordena o arquivo de propriedades Java.
Remoção de comentário obsoleto¶
Novo na versão 3.7.
- ID da extensão
weblate.removal.comments
- Configuração
age
Dias para manter
Define um período de tempo até 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 sua importância.
Remoção de sugestão obsoleta¶
Novo na versão 3.7.
- ID da extensão
weblate.removal.suggestions
- Configuração
age
Dias para manter
votes
Limite de votação
Limite para remoção. Este campo não tem efeito com a votação desativada.
Define um período de tempo até 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 em um determinado período de tempo.
Atualizar arquivos RESX¶
Novo na versão 3.9.
- ID da extensão
weblate.resx.update
- Configuração
Esta extensão não tem configuração.
Atualiza todos os arquivos de tradução para corresponder ao arquivo base monolíngue do upstream. Textos não usados são removidos e novos são adicionados como cópias do texto fonte.
Dica
Use Limpar arquivos de tradução se você só quiser remover chaves de tradução obsoletas.
Personalizar saída YAML¶
Novo na versão 3.10.2.
- ID da extensão
weblate.yaml.customize
- Configuração
indent
Recuo do YAML
width
Quebra de linhas longas
line_break
Quebra de linhas
Permite ajustar o comportamento de saída do YAML, por exemplo comprimento de linha e 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¶
Você pode escrever suas próprias extensões também. 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.
Ver 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 você tem que escrever algum código para embrulhar 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.
O script é executado com o diretório atual definido para a raiz do repositório VCS para qualquer componente.
Além disso, estão disponíveis as seguintes variáveis de ambiente:
- WL_VCS¶
Sistema de controle de versão usado.
- WL_REPO¶
URL do repositório upstream.
- WL_PATH¶
Caminho absoluto para o repositório VCS.
- WL_BRANCH¶
Novo na versão 2.11.
Ramo do repositório configurado no componente atual.
- WL_FILEMASK¶
Máscara de arquivo para componente atual.
- WL_TEMPLATE¶
Nome de arquivo de modelo para traduções monolíngues (pode estar vazio).
- WL_NEW_BASE¶
Novo na versão 2.14.
Nome de arquivo do arquivo usado para criar novas traduções (pode estar vazio).
- WL_FILE_FORMAT¶
Formato de arquivo 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.
Ver também
Processamento de repositório pós-atualização¶
Pode ser usado para atualizar arquivos de tradução quando a fonte VCS do upstream alterar. Para conseguir isso, lembre-se que o Weblate só vê arquivos dos quais se fez commit com o VCS, então você precisa fazer commit das alterações como parte do script.
Por exemplo, com Gulp, você pode fazê-lo usando o seguinte código:
#! /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.
Ele é 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 usuário).
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 padrã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 arquivo 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 usuários e projetos.
Memória de tradução por usuário¶
Armazena todas as traduções do usuário automaticamente na memória de tradução pessoal de cada respectivo usuário.
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.
Gerenciando memória de tradução¶
Interface de usuário¶
Novo na versão 3.2.
Na interface de usuário básica, você pode gerenciar memórias de tradução por usuário e por projeto. Ela pode ser usada para baixar, limpar ou importar memória de tradução.
Dica
A memória de tradução em JSON pode ser importada para o Weblate, o TMX é fornecido para interoperabilidade com outras ferramentas.
Ver também

Interface de gerenciamento¶
Existem vários comandos de gerenciamento 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 arquivos 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, você precisa reiniciar o Weblate - tanto os processos WSGI quanto os Celery.
Caso seja executado como mod_wsgi:
, você precisa reiniciar o Apache para recarregar a configuração.
Ver também
Verifique também a documentação do Django para parâmetros de configuração do próprio Django.
AUDITLOG_EXPIRY¶
Novo na versão 3.6.
Quantos dias o Weblate deve manter registros de auditoria, que contêm informações sobre a atividade da conta.
O padrão é 180 dias.
AUTH_LOCK_ATTEMPTS¶
Novo na versão 2.14.
Número máximo de tentativas de autenticação com falha antes da aplicação da limitação de taxa.
Atualmente, isso é aplicado nos seguintes locais:
Logins. Exclui a senha da conta, impedindo que o usuário entre sem solicitar uma nova senha.
Redefinições de senha. Impede que novos e-mails sejam enviados, evitando o envio de spam aos usuários com muitas tentativas de redefinição de senha.
O padrão é 10.
Ver 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 textos são aceitos.
Atualiza todos repositórios diariamente.
Dica
Útil se você não estiver usando Ganchos de notificação para atualizar automaticamente os repositórios do Weblate.
Nota
Existem opções de ligar/desligar, além da seleção de textos para compatibilidade com versões anteriores.
As opções são:
"none"
Sem atualizações diárias.
"remote"
e tambémFalse
Atualiza apenas os repositórios remotos.
"full"
e tambémTrue
Atualiza os repositórios remotos e mescla os cópia de trabalho.
Nota
Isso requer que Tarefas de fundo usando Celery esteja funcionando 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 seguintes serviços funcionam:
- Gravatar (padrã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/'
Ver também
AUTH_TOKEN_VALID¶
Novo na versão 2.14.
Por quanto tempo o token de autenticação e a senha temporária dos e-mails de redefinição de senha são válidos. Definido em número de segundos, usando como padrão 172800 (2 dias).
AUTH_PASSWORD_DAYS¶
Novo na versão 2.15.
Quantos dias usando a mesma senha deve ser permitido.
Nota
Mudanças de senha feitas anteriormente ao Weblate 2.15 não serão consideradas para essa política.
O padrão é 180 dias.
AUTOFIX_LIST¶
Lista de correções automáticas para aplicar ao salvar um texto.
Nota
Forneça um caminho totalmente qualificado para a 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 do texto com a fonte.
weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis
umSubstitui pontos ao final (…) se o texto 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 dos textos sinalizados como
safe-html
(veja HTML inseguro).
Você 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 padrão:
Valor padrão: Diretório de nível superior de fontes do Weblate.
BASIC_LANGUAGES¶
Novo na versão 4.4.
Lista de idiomas para oferecer aos usuários 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 usuários 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"}
Ver 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 habilitadas com serviços de terceiros (Matomo, Google Analytics, Sentry, …).
Todos esses tem como padrão uma lista vazia.
Exemplo:
# Enable Cloudflare Javascript optimizations
CSP_SCRIPT_SRC = ["ajax.cloudflare.com"]
CHECK_LIST¶
Lista de verificações de qualidade para realizar em uma tradução.
Nota
Forneça um caminho totalmente qualificado para a classe Python implementando a interface de verificação.
Ajuste a lista de verificações para incluir as relevantes para você.
Todas as Verificações de qualidade embutidas estão ativadas por padrão, de onde você pode alterar essas configurações. Por padrão, eles são comentados em Amostra de configuração para que os valores padrão sejam usados. Novas verificações então realizadas para cada nova versão do Weblate.
Você pode desativar todas as verificações:
CHECK_LIST = ()
Você 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.
Exclui comentários após um determinado número de dias. O padrão é None
, ou seja, nenhuma exclusão.
COMMIT_PENDING_HOURS¶
Novo na versão 2.10.
Número 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á sendo 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. 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 links para repositórios VCS, um índice de texto e vários arquivos de configuração para ferramentas externas.
Os seguintes subdiretórios geralmente existem:
home
Diretório pessoal usado para invocar scripts.
ssh
Chaves e configuração de SSH.
static
Localização padrão para arquivos Django estáticos, especificados por
STATIC_ROOT
. Veja Servindo arquivos estáticos.O contêiner do Docker usa um volume separado para isso, veja Volumes de contêiner Docker.
media
Localização padrão para arquivos de mídia Django, especificado por
MEDIA_ROOT
. Contém capturas de tela enviadas, veja Contexto visual para textos.vcs
Repositórios de controle de versão para traduções.
backups
Dados de backup diário. Confira Dados despejados para os backups para detalhes.
celery
Dados do agendador Celery, consulte Tarefas de fundo usando Celery.
fonts
:Fontes enviadas pelo usuário, veja Gerenciando fontes.
Nota
Este diretório tem que ser escrito pelo Weblate. Executá-lo como uWSGI significa que o usuário www-data
deve ter acesso de escrita.
A maneira mais fácil de conseguir isso é fazer do usuário o proprietário do diretório:
sudo chown www-data:www-data -R $DATA_DIR
O padrã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"
Ver também
DEFAULT_ACCESS_CONTROL¶
Novo na versão 3.3.
A configuração padrão de controle de acesso para novos projetos:
0
Público
1
Protegido
100
Privado
200
Personalizado
Use Personalizado se você está gerenciando a ACL manualmente, o que significa não confiar no gerenciamento interno do Weblate.
Ver também
DEFAULT_AUTO_WATCH¶
Novo na versão 4.5.
Configura se Observar automaticamente projetos em contribuição deve ser ativado para novos usuários. O padrão é True
.
Ver também
DEFAULT_RESTRICTED_COMPONENT¶
Novo na versão 4.1.
O valor padrão para restrição de componentes.
Ver também
DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE¶
Enviar mensagens padrão para diferentes operações, consulte Configuração de componente para detalhes.
DEFAULT_ADDONS¶
Complementos padrão 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",
},
}
Ver 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
.
Ver 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.
Ver também
DEFAULT_MERGE_STYLE¶
Novo na versão 3.4.
Mescla o estilo para quaisquer novos componentes.
rebase - padrão
merge
Ver também
DEFAULT_TRANSLATION_PROPAGATION¶
Novo na versão 2.5.
Configuração padrão para propagação de tradução, sendo o padrão True
.
DEFAULT_PULL_MESSAGE¶
Título para novas pull requests, sendo o padrão 'Update from Weblate'
.
ENABLE_AVATARS¶
Se deve-se ativar avatares baseados em Gravatar para os usuários. Por padrã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 usuário.
Ver também
ENABLE_HTTPS¶
Se deve-se enviar links 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 habilita cookies seguros, ativa/desativa HSTSou habilita redirecionamento para URL HTTPS.
O redirecionamento HTTPS pode ser problemático em alguns casos e você pode ter problemas com o redirecionamento infinito no caso de estar usando um proxy reverso fazendo o encerramento SSL que não passa corretamente os cabeçalhos de protocolo para o Django. Ajuste 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 status SSL.
ENABLE_SHARING¶
Ativa/desativa o menu Compartilhar para que os usuários possam compartilhar o progresso da tradução nas redes sociais.
GET_HELP_URL¶
Novo na versão 4.5.2.
URL onde o suporte para sua instância do Weblate pode ser encontrado.
GITLAB_CREDENTIALS¶
Novo na versão 4.3.
Lista para credenciais para servidores GitLab.
Dica
Use isso no caso de você 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 usuário GitLab usado para enviar merge requests para atualizações de tradução.
Ver também
GITLAB_TOKEN¶
Novo na versão 4.3.
O token de acesso pessoal GitLab usado para fazer chamadas de API para atualizações de tradução.
Ver também
GITHUB_CREDENTIALS¶
Novo na versão 4.3.
Lista para credenciais para servidores GitHub.
Dica
Use isso no caso de você 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 usuário GitHub usado para enviar pull request para atualizações de tradução.
Ver também
GITHUB_TOKEN¶
Novo na versão 4.3.
O token de acesso pessoal GitHub usado para fazer chamadas de API para enviar pull requests para atualizações de tradução.
Ver também
GITHUB_CREDENTIALS
, GitHub, Criar um token de acesso pessoal
GOOGLE_ANALYTICS_ID¶
Google Analytics ID para ativar o monitoramento do Weblate usando o Google Analytics.
HIDE_REPO_CREDENTIALS¶
Oculta credenciais de repositório da interface web. No caso de você ter URL do repositório com usuário e senha, o Weblate irá ocultá-la quando as informações relacionadas são mostradas aos usuários.
Por exemplo, em vez de https://usuário:senha@git.example.com/repo.git
, ela vai mostrar apenas ‘’https://git.example.com/repo.git’’’. Ela tenta limpar mensagens de erro VCS também de forma semelhante.
Nota
Isso está ativado por padrão.
HIDE_VERSION¶
Novo na versão 4.3.1.
Esconde informação de versão de usuários não autenticados. Isso também faz todos os links de documentação apontar para a última versão, ao invés da versão de combinação da documentação instalada atualmente.
Ocultar versão é uma prática de segurança recomendada em algumas empresas, mas não prevê invasores de descobri a versão sondando o comportamento.
Nota
Isso está desligado por padrão.
IP_BEHIND_REVERSE_PROXY¶
Novo na versão 2.14.
Indica se o Weblate está sendo usado atrás de um proxy reverso.
Se definido como True
, o Weblate obtém endereço IP de um cabeçalho definido por IP_PROXY_HEADER
.
Aviso
Certifique-se de que você está realmente usando um proxy reverso e que ele define este cabeçalho, caso contrário, os usuários poderão falsificar o endereço IP.
Nota
Isso não está ativado por padrã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.
Padrã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 você pode configurar qual endereço do cabeçalho é usado como endereço IP do cliente aqui.
Aviso
Configurar isso afeta a segurança da sua instalação, então você só deve configurá-la para usar proxies confiáveis para determinar o endereço IP.
O padrão é 0.
LEGAL_URL¶
Novo na versão 3.5.
URL onde sua instância de Weblate mostra seus documentos legais.
Dica
Útil se você hospeda seus documentos legais fora do Weblate para incorporá-los ao Weblate, verifique Legal para obter detalhes.
Exemplo:
LEGAL_URL = "https://weblate.org/terms/"
LICENSE_EXTRA¶
Licenças adicionais para incluir nas opções de licença.
Nota
Cada definição de licença deve ser uma tupla de 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: Configurando este para valor em branco agora desabilita o alerta de licença.
Filtrar licenças da lista para mostrar. Isto também desabilita 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"}
A seguir, desativa o alerta de licença:
LICENSE_FILTER = set()
Ver também
LICENSE_REQUIRED¶
Define se o atributo de licença em Configuração de componente é necessário.
Nota
Isso está desativado por padrão.
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH¶
Se o comprimento de uma determinada tradução deve ser limitado. A restrição é o comprimento do texto fonte * 10 caracteres.
Dica
Defina isso como False
para permitir traduções mais longas (até 10.000 caracteres) independentemente do comprimento do texto fonte.
Nota
O padrã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 arquivos gerados que serão servidos em LOCALIZE_CDN_URL
.
Dica
No Hosted Weblate, é usada com https://weblate-cdn.com/
.
Ver também
LOGIN_REQUIRED_URLS¶
Uma lista de URLs para as quais você deseja exigir autenticação. (Além das regras padrão incorporadas ao Weblate).
Dica
Isso permite que você proteja com senha toda uma instalação usando:
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.
Ver também
LOGIN_REQUIRED_URLS_EXCEPTIONS¶
Lista de exceções para LOGIN_REQUIRED_URLS
. Se não especificado, os usuários podem acessar a página de autenticação.
Algumas das exceções que você pode querer 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 você quer rastrear.
Nota
Essa integração não tem suporte ao Matomo Tag Manager.
Ver também
MATOMO_URL¶
URL completa (incluindo barra ao final) de uma instalação Matomo (anteriormente Piwik) que você deseja usar para rastrear o uso do Weblate. Por favor, consulte <https://matomo.org/> para mais detalhes.
Dica
Essa integração não tem suporte ao Matomo Tag Manager.
Por exemplo:
MATOMO_SITE_ID = 1
MATOMO_URL = "https://example.matomo.cloud/"
Ver 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 habilitados para uso.
Nota
Muitos dos serviços precisam de configuração adicional, como chaves de API, consulte sua documentação Tradução de máquina para mais detalhes.
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",
)
Ver também
MT_APERTIUM_APY¶
URL do servidor Apertium-APy, https://wiki.apertium.org/wiki/Apertium-apy
Ver também
MT_BAIDU_ID¶
ID do cliente para a API do Baidu Zhiyun, você pode se registrar em https://api.fanyi.baidu.com/api/trans/product/index
MT_BAIDU_SECRET¶
Segredo do cliente para a API do Baidu Zhiyun, você pode se registrar 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 usuário.
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, seu padrão é v2, e você pode alterar isso para v1 no caso de você 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 em 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”, você tem a URL correta; se não, tente os outros três.
Ver também
MT_DEEPL_KEY¶
Chave de API para a API do DeepL, você pode se registrar em https://www.deepl.com/pro.html
Ver 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
Ver também
MT_LIBRETRANSLATE_KEY¶
Novo na versão 4.7.1.
API key for the LibreTranslate instance specified in MT_LIBRETRANSLATE_API_URL.
Ver também
MT_GOOGLE_KEY¶
Chave de API para a API v2 do Google Translate, você pode se registrar em https://cloud.google.com/translate/docs
Ver também
MT_GOOGLE_CREDENTIALS¶
Arquivo 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 a determinado projeto. 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 cobrança 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 um local. Altere conforme o caso, se o padrão global
não servir para você.
Consulte https://cloud.google.com/appengine/docs/locations para mais detalhes
Ver também
MT_MICROSOFT_BASE_URL¶
Domínio de URL base da região conforme definido na seção “URLs base”.
O padrã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 seção “Authenticating with a Multi-service resource” <https://docs.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-reference#authenticating-with-a-multi-service-resource>.
MT_MICROSOFT_ENDPOINT_URL¶
Domínio de URL de extremidade da região para token de acesso definido na seção “Autenticando com um token de acesso”.
O padrão é api.cognitive.microsoft.com
para Azure Global.
Para Azure China, use sua extremidade do Portal do Azure.
MT_MODERNMT_URL¶
URL de ModernMT. Seu padrão é https://api.modernmt.com/
para o serviço de nuvem.
Ver 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 usuário do MyMemory para memória de tradução privada. Use-o com MT_MYMEMORY_KEY
.
MT_NETEASE_KEY¶
Chave de aplicativo para API da NetEase Sight, você pode se registrar em https://sight.youdao.com/
MT_NETEASE_SECRET¶
Segredo de aplicativo para a API da NetEase Sight, você pode se registrar em https://sight.youdao.com/
MT_TMSERVER¶
URL onde o tmserver está funcionando.
Ver também
tmserver, Tradução de máquina, Sugestões automáticas, tmserver
MT_YANDEX_KEY¶
Chave de API para a API do Yandex Translate, você pode se registrar em https://yandex.com/dev/translate/
Ver também
Yandex Translate, Tradução de máquina, Sugestões automáticas
MT_YOUDAO_ID¶
ID do cliente para a API do Youdao Zhiyun, você pode se registrar em https://ai.youdao.com/product-fanyi-text.s.
MT_YOUDAO_SECRET¶
Segredo do cliente para a API do Youdao Zhiyun, você pode se registrar em https://ai.youdao.com/product-fanyi-text.s.
MT_SAP_BASE_URL¶
URL de API para o serviço SAP Translation Hub.
Ver também
SAP Translation Hub, Tradução de máquina, Sugestões automáticas
MT_SAP_SANDBOX_APIKEY¶
Chave de API para uso de API em caixa de proteção
Ver também
SAP Translation Hub, Tradução de máquina, Sugestões automáticas
MT_SAP_USERNAME¶
Seu nome de usuário SAP
Ver também
SAP Translation Hub, Tradução de máquina, Sugestões automáticas
MT_SAP_PASSWORD¶
Sua senha SAP
Ver também
SAP Translation Hub, Tradução de máquina, Sugestões automáticas
MT_SAP_USE_MT¶
Se deve também usar serviços de tradução de máquina, além do banco de dados de termos. Possíveis valores: True
ou False
Ver também
SAP Translation Hub, Tradução de máquina, Sugestões automáticas
NEARBY_MESSAGES¶
Quantos textos devem ser mostrados em torno do texto traduzido atualmente. Este é apenas um valor padrão, os usuários podem ajustar isso em Perfil do usuário.
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 Pagure.
Dica
Use isso no caso de você 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 usuário Pagure usado para enviar merge requests para atualizações de tradução.
Ver também
PAGURE_TOKEN¶
Novo na versão 4.3.2.
O token de acesso pessoal Pagure usado para fazer chamadas de API para atualizações de tradução.
Ver também
RATELIMIT_ATTEMPTS¶
Novo na versão 3.2.
O número máximo de tentativas de autenticação antes da limitação da taxa ser aplicada.
O padrão é 5.
Ver 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 tendo como padrão 300 (5 minutos).
Ver 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 tendo como padrão 600 (10 minutos).
Ver também
REGISTRATION_ALLOW_BACKENDS¶
Novo na versão 4.1.
A lista de backends de autenticação de onde permite o registro. Isso só limita novos registros, os usuários ainda podem autenticar e adicionar autenticação usando todos os backends de autenticação configurados.
É recomendado para manter REGISTRATION_OPEN
habilitado enquanto limita os backends de registro, caso contrário, os usuários poderão se registrar, mas o Weblate não mostrará links para se registrar na interface do usuário.
Exemplo:
REGISTRATION_ALLOW_BACKENDS = ["azuread-oauth2", "azuread-tenant-oauth2"]
Dica
Os nomes de backend correspondem aos nomes usados na URL para autenticação.
Ver também
REGISTRATION_CAPTCHA¶
Um valor de True
ou False
indicando se o registro de novas contas é protegido pelo CAPTCHA. Esta configuração é opcional, e um padrão de True
será presumido se não for fornecido.
Se ativado, um CAPTCHA é adicionado a todas as páginas onde um usuário digita seu endereço de e-mail:
Registro de nova conta.
Recuperação de senha.
Adição de e-mail a uma conta.
Formulário de contato para usuários 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 registrados.
O padrão e .*
, que permite que qualquer endereço de e-mail seja registrado.
Você pode usá-lo para restringir o registro a um único domínio de e-mail:
REGISTRATION_EMAIL_MATCH = r"^.*@weblate\.org$"
REGISTRATION_OPEN¶
Se o registro de novas contas é atualmente permitido. Essa configuração opcional pode permanecer com o padrão True
, ou pode ser alterada para Falsa
.
Essa configuração afeta a autenticação embutida por endereço de e-mail ou através do Python Social Auth (você pode listar certos back-ends usando REGISTRATION_ALLOW_BACKENDS
).
Nota
Se estiver usando métodos de autenticação de terceiros, como Autenticação por LDAP, ele apenas oculta o formulário de registro, mas novos usuários ainda conseguem se autenticar e criar contas.
REPOSITORY_ALERT_THRESHOLD¶
Novo na versão 4.0.2.
Limiar para acionar um alerta para repositórios desatualizados ou aqueles que contenham muitas alterações. O padrão é 25.
Ver também
REQUER_LOGIN¶
Novo na versão 4.1.
Isso habilita :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.
Ver também
IDADE_REGISTRO_SESSÃO_AUTENTICADO¶
Novo na versão 4.3.
Configura a expiração da sessão para usuário autenticados. Isso complementa IDADE_REGISTRO_SESSÃO
que é utilizado por usuários não autenticados.
Ver também
SIMPLIFY_LANGUAGES¶
Usa códigos de idioma simples para combinações padrão 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 padrão.
Desative isso se quiser traduções diferentes para cada variante.
SITE_DOMAIN¶
Configura o domínio do site. Isso é necessário para produzir links absolutos corretos em muitos escopos (por exemplo, ativação de e-mails, notificações ou feeds RSS).
No caso de o Weblate estar sendo executado em um 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 (habilitar e aplicar HTTPS), use ENABLE_HTTPS
e for alterar URL, use URL_PREFIX
.
Dica
Em um contêiner 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 padrão é:
SPECIAL_CHARS = ("\t", "\n", "…")
SINGLE_PROJECT¶
Novo na versão 3.8.
Redireciona os usuários diretamente para um projeto ou componente em vez de mostrar o painel. Você pode configurá-lo como True
e, neste caso, ele só funciona no caso de haver realmente apenas um único projeto no Weblate. Alternativamente, defina o projeto, e ele 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 sua instância de Weblate relata seu status.
SUGGESTION_CLEANUP_DAYS¶
Novo na versão 3.2.1.
Exclui automaticamente sugestões após um determinado número de dias. O padrã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
.
Ver também
URL_PREFIX¶
Esta configuração permite que você execute Weblate em algum caminho (caso contrário, ele depende de ser executado a partir da raiz do servidor web).
Nota
Para usar esta configuração, você também precisa configurar 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, você 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 usuários.
Dica
Você pode limitar escolhas ou adicionar back-ends VCS personalizados usando isso.
VCS_BACKENDS = ("weblate.vcs.git.GitRepository",)
Ver também
VCS_CLONE_DEPTH¶
Novo na versão 3.10.2.
Configura o quão profunda a clonagem de repositórios Weblate deve ir.
Nota
Atualmente, isso só é suportado em Git. Por padrão, o Weblate faz clones rasos dos repositórios para tornar a clonagem mais rápida e economizar espaço em disco. Dependendo do seu uso (por exemplo, ao usar o personalizado Extensões), você pode querer aumentar a profundidade ou desligar os clones rasos completamente definindo isso para 0.
Dica
No caso de você receber 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 habilitadas para um determinado componente de tradução. Por padrão, isso inclui todas as extensões embutidas, ao estender a lista, você provavelmente vai querer manter as existentes habilitadas, 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.
Ver também
WEBLATE_EXPORTERS¶
Novo na versão 4.2.
Lista de exportadores disponíveis que oferecem download de traduções ou glossários em vários formatos de arquivo.
Ver também
WEBLATE_FORMATS¶
Novo na versão 3.0.
Lista de formatos de arquivo disponíveis para uso.
Nota
A lista padrão já tem os formatos comuns.
Ver 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.
Ver também
WEBSITE_REQUIRED¶
Define se Site 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,
},
}
}
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 gerenciamento sob um usuário diferente daquele que executa seu servidor web pode resultar em arquivos recebendo permissões erradas, por favor, confira Permissões do sistema de arquivos para mais detalhes.
Você encontrará comandos básicos de gerenciamento (disponíveis como ./manage.py
nas fontes do Django ou como um conjunto estendido em um script chamado weblate instalável em cima do Weblate).
Invocando comandos de gerenciamento¶
Como mencionado anteriormente, sua invocação depende de como você instalou o Weblate.
Se estiver usando o virtualenv para Weblate, você 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 você estiver usando o código-fonte diretamente (de um tarball ou checkout Git), o script de gerenciamento é . /manage.py
disponível nos fontes do Weblate. Para executá-lo:
python ./manage.py list_versions
Se você instalou o Weblate usando o instalador pip ou pip3, ou usando o script . /setup.py
, o weblate é instalado em seu caminho (ou caminho virtualenv), de onde você pode usá-lo para controlar o Weblate:
weblate list_versions
Para a imagem Docker, o script é instalado como acima e você pode executá-lo usando docker exec:
docker exec --user weblate <container> weblate list_versions
Para docker-compose o processo é semelhante, você apenas tem que usar docker-compose exec:
docker-compose exec --user weblate weblate weblate list_versions
Caso precise passar um arquivo para ele, você 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 arquivo para usar como sugestão para a tradução fornecida. Ele pula traduções duplicadas; apenas os diferentes são adicionados.
- --author USER@EXAMPLE.COM¶
E-mail do autor para sugestões. Este usuário 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 usuário listado como autor das traduções. “Usuário 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, o padrã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
Ver 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.
Você 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.
Você 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.
Você 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.
Ver 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.
Ver também
createadmin¶
- weblate createadmin¶
Cria uma conta admin
com uma senha aleatória, a menos que seja especificada.
- --password PASSWORD¶
Fornece uma senha na linha de comando, para não gerar uma senha aleatória.
- --no-password¶
Não define a senha, 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 usuário existente (você pode usar isso para alterar as senhas).
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 arquivo JSON contendo conteúdo de memória de tradução do Weblate.
dumpuserdata¶
- weblate dumpuserdata <file.json>¶
Despeja dados de usuário em um arquivo 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 arquivo JSON importado corresponde basicamente ao objeto do componente (consulte GET /api/components/(string:project)/(string:component)/
). Você 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 arquivo 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"
}
]
Ver também
import_memory¶
- weblate import_memory <file>¶
Novo na versão 2.20.
Importa um arquivo 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 arquivo TMX não correspondam ao que você 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 componente, levando a algumas mudanças no comportamento e quais parâmetros são aceitos.
Executa importação em lote de componentes para o projeto com base na máscara de arquivo.
<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> para o <gitrepo>.
O <filemask> define a descoberta de arquivos 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 arquivos 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 arquivo base para traduções monolíngues.
Por exemplo:
{{ component }}/res/values/string.xml
- --new-base-template TEMPLATE¶
Personaliza o arquivo base para adicionar novas traduções.
Por exemplo:
{{ component }}/ts/en.ts
- --file-format FORMAT¶
Você também pode especificar o formato de arquivo a ser usado (veja Formatos de arquivos suportados), o padrão é a detecção automática.
- --language-regex REGEX¶
Você 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¶
Você 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 pode ser encontrada.
- --vcs NAME¶
Caso você precise especificar qual sistema de controle de versão usar, você pode fazê-lo aqui. O controle de versão padrão é 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 arquivo precisa ser especificado, junto com o modelo de arquivo base, e como todos os componentes e traduções estão localizados em uma ú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 arquivo para obter o componente correto e o idioma de um nome de arquivo 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 em um 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 arquivos:
$ 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 arquivos 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'
Ver também
Exemplos mais detalhados podem ser encontrados no capítulo Começando com a internacionalização, alternativamente você pode querer usar import_json
.
importuserdata¶
- weblate importuserdata <file.json>¶
Importa dados do usuário de um arquivo criado por dumpuserdata
importusers¶
- weblate importusers --check <file.json>¶
Importa usuários do despejo JSON do banco de dados auth_users do Django.
- --check¶
Com esta opção irá apenas verificar se determinado arquivo pode ser importado e reportar possíveis conflitos decorrentes de nomes de usuários ou e-mails.
Você pode descartar os usuários 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.
Você 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 saída do gettext para todos os componentes:
weblate install_addon --addon weblate.gettext.customize --config '{"width": -1}' --update --all
Ver 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 para o 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.
Você 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 você tenha feito algumas atualizações no repositório VCS).
- --force¶
Força a atualização, mesmo que os arquivos devam estar atualizados.
- --lang LANGUAGE¶
Limita o processamento a um único idioma.
Você pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Nota
Você raramente precisa invocar isso, o Weblate carregará automaticamente os arquivos alterados para cada atualização do VCS. Isso é necessário no caso de você 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 você queira fazer alguma manutenção no repositório subjacente.
Você pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Ver 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, você 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.
Você 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 Push ao fazer commit na Configuração de componente está ativada, que é o padrão.
unlock_translation¶
- weblate unlock_translation <project|project/component>¶
Desbloqueia um determinado componente, disponibilizando-o para tradução.
Dica
Útil caso você queira fazer alguma manutenção no repositório subjacente.
Você pode definir qual projeto ou componente atualizar (por exemplo, weblate/application
) ou usar --all
para atualizar todos os componentes existentes.
Ver também
setupgroups¶
- weblate setupgroups¶
Configura grupos padrão e, opcionalmente, atribui todos os usuários a esse grupo padrão.
- --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 Controle de acesso do projeto.
Ver 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.
Você 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.
Você 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 Ganchos 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, status ou especificar metas para tradução.
Os usuários receberão notificação sobre os anúncios de projetos assistidos (a menos que optem por não participar).
Isso 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, usando :guilabel:’Publicar anúncio’:

Ele também pode ser adicionado usando 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 suas traduções.
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 usuário, a partir do qual os usuários podem selecionar uma visualização como exibição padrão. Veja Painel para saber mais.
Alterado na versão 2.20: Um status 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 seção Component lists. Cada lista de componentes deve ter um nome que é exibido para o usuário e uma slug representando-a na URL.
Alterado na versão 2.13: Altera as configurações de painel para usuários anônimos a partir da interface administrativa, alterando qual painel é apresentado para usuários não autenticados.
Listas de componentes automáticas¶
Novo na versão 2.13.
Adicione componentes à lista automaticamente com base em suas slug criando regras Automatic component list assignment.
Útil para manutenção de listas de componentes para instalações de grandes dimensões, ou no caso de você querer uma lista de componentes com todos os componentes em sua instalação de 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
aos aplicativos instalados 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á habilitado) requer um token de API que pode ser obtido em seu perfil de usuário:
git clone 'https://user:KEY@example.org/git/weblate/main/'
Dica
Por padrão, os membros ou o grupo Usuários e usuário anônimo têm acesso aos repositórios para projetos públicos via Acessar repositório e funções de Usuário avançado.
Cobrança¶
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, você pode controlar a cobrança na interface de administração. Os usuários com cobrança habilitada obterão a nova aba Cobrança em seu Perfil do usuário.
O módulo de cobrança também permite que os administradores do projeto criem novos projetos e componentes sem serem superusuários (veja add-projects). Isso é possível quando as seguintes condições são atendidas:
A cobrança está em seus limites configurados (qualquer uso excessivo resulta no bloqueio da criação do projeto/componente) e pago (se seu preço for diferente de zero)
O usuário é administrador do projeto existente com cobrança ou o usuário é proprietário da cobrança (este último é necessário ao criar uma nova cobrança para que os usuários possam importar novos projetos).
Após a criação do projeto, o usuário 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 você 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 você, 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 usuário do Weblate.
Avatares¶
Os avatares são baixados e armazenados em cache no lado do servidor para reduzir o vazamento de informações para os sites que os servem por padrã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:
Ver também
Proteção contra spam¶
Você pode se proteger contra spam por usuários 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 usuário não autenticados
Descrições e links de projetos e componentes
Nota
Este (entre outras coisas) depende do endereço IP do cliente, veja Executando 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.
Você 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.
Ver 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 superusuários.
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 usuário é 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 |
Escopo |
Tentativas permitidas |
Janela de limite de tempo |
Período de bloqueio |
---|---|---|---|---|
Registro |
|
5 |
300 |
600 |
Enviando mensagem para administradores |
|
5 |
300 |
600 |
Autenticação de senha ao entrar |
|
5 |
300 |
600 |
Pesquisa em todo o site |
|
6 |
60 |
60 |
Traduzindo |
|
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 usuário falhar ao fazer o login AUTH_LOCK_ATTEMPTS
vezes, a autenticação da senha será desativada na conta até ter passado pelo processo de redefinição da senha.
As configurações também podem ser aplicadas no contêiner 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. Você 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.
Personalizando o Weblate¶
Amplie e personalize usando Django e Python. Contribua suas alterações para o upstream acima para que todos possam se beneficiar. Isso reduz 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 suas próprias personalizações para cada atualização, as interfaces ou sua semântica podem mudar sem aviso prévio.
Ver também
Criando um módulo Python¶
Se você não está familiarizado com Python, você pode querer olhar para Python For Beginners, explicando o básico e apontando para os 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 sua personalização em um pacote Python adequado:
Crie uma pasta para o seu pacote (usaremos weblate_customization).
Dentro dele, crie um arquivo
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 arquivo
__init__.py
para garantir que o Python possa importar o módulo.Este pacote agora pode ser instalado usando 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
Você pode encontrar um exemplo de personalização do Weblate em <https://github.com/WeblateOrg/customize-example>, ele abrange todos os tópicos descritos abaixo.
Alterando o logotipo¶
Crie um aplicativo Django simples contendo os arquivos estáticos que deseja substituir (veja Criando um módulo Python).
A marca aparece nos seguintes arquivos:
icons/weblate.svg
Logotipo mostrado na barra de navegação.
logo-*.png
Ícones web dependendo da resolução da tela e do navegador web.
favicon.ico
Ícone web usado por navegadores legados.
weblate-*.png
Avatares para bots ou usuários 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 arquivos estáticos servidos aos clientes.
Verificações de qualidade personalizadas, extensões e correções automáticas¶
Para instalar seu código para Correções automáticas personalizadas, Escrevendo as próprias verificações ou Escrevendo extensões no Weblate:
Coloque os arquivos em seu módulo Python contendo a personalização ao Weblate (veja Criando um módulo Python).
Adicione seu caminho totalmente qualificado à 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",)
Ver também
autocorreção-personalizada, verificações-próprias, extensão-própria, script-extensão
Interface de gerenciamento¶
A interface de gerenciamento oferece configurações de administração sob a URL /manage/
. Está disponível para usuários que se inscrevem com privilégios administrativos, acessíveis usando o ícone da chave inglesa no canto superior direito:

Ela inclui uma visão geral básica do seu Weblate:
Status de suporte, veja Obtendo suporte para o Weblate
Backups, veja Fazendo backup e movendo 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
Gerenciamento de chaves SSH, veja Repositórios SSH
Visão geral de alertas para todos os componentes, veja Alertas de componente de tradução
A interface administrativa do Django¶
Aviso
Será removido no futuro, pois seu uso é desencorajado — a maioria das funcionalidades podem ser gerenciadas diretamente no Weblate.
Aqui você pode gerenciar objetos armazenados no banco de dados, tais como usuários, traduções e outras configurações:

Na seção Relatórios, você pode verificar o status de seu site, ajustá-lo para produção ou gerenciar chaves SSH usadas para acessar Acessando repositórios.
Gerencie objetos de banco de dados sob qualquer uma das seções. A mais interessante é provavelmente Traduções do Weblate, onde você pode gerenciar 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.
Adicionando um projeto¶
A adição de um projeto serve como contêiner para todos os componentes. Normalmente você cria um projeto para um software, ou livro (Veja Configuração de projeto para informações sobre parâmetros individuais):

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

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

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

Dados enviados para a Weblate¶
URL onde sua instância do Weblate está configurada
Título do seu site
A versão do Weblate que você está executando
Contagem de alguns objetos em seu banco de dados Weblate (projetos, componentes, idiomas, textos fonte e usuários)
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 suporte ainda é válido
Dica
Os pacotes de suporte 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 em um beta inicial.
Descubra Weblate é um serviço opcional que facilita encontrar comunidades e servidores Weblate. Os usuários 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 para a Weblate.
Para listar o seu servidor com uma assinatura de suporte ativa (veja Integrando suporte) no Descubra Weblate tudo que você precisa fazer é ativar isso no painel de gerenciamento:

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

Personalizando a listagem¶
Você pode personalizar a lista fornecendo um texto e uma imagem (570 x 260 pixels) em <https://weblate.org/user/>.
Documentos legais¶
Nota
Aqui você encontrará várias informações legais que você 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, é sua responsabilidade garantir que 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 de 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 usuários finais são responsáveis por garantir tal conformidade.
Hosted Weblate serviço 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.
Controles 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, ele irá incluir todas 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 em um grupo multiplicativo de um campo finito de tamanho maior do que 512 bits para um algoritmo assimétrico
Logaritmos discretos em um 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 uma maneira onde nenhum código de criptografia estaria envolvido. Os recursos criptográficos incluem:
Acessar servidores remotos usando protocolos seguros (HTTPS)
Gerar assinaturas para commits de código (PGP)
Ver também
Controles de Exportação (EAR) em Software de Código Aberto (inglês)
Começando 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, você deve perceber que os idiomas ao redor do mundo são realmente diferentes e não deve fazer nenhuma suposição com base em sua experiência. Para a maioria dos idiomas, parecerá estranho se você tentar concatenar uma frase de segmentos traduzidos. Você também deve lidar adequadamente com formas plurais porque muitos idiomas têm regras complexas para isso e a estrutura de internacionalização que você acaba usando 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 o texto Sun
para traduzir. Sem contexto, a maioria das pessoas traduziria isso como 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 em sua plataforma, tente evitar reinventar a roda criando sua própria estrutura para lidar com localizações. Weblate tem suporte à maioria dos frameworks amplamente usados, veja Formatos de arquivos 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 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 seu lugar.
- 2
Você também pode usar Propriedades Java se os plurais não forem necessários.
- 3
Você também pode usar Arquivos 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:
Ver 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 arquivo traduzível (por exemplo, GNU gettext ou Recurso de textos de Android). Os projetos estão lá para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de um aplicativo).
Internamente, cada projeto tem traduções para textos comuns propagados em outros componentes dentro dele por padrão. Isso alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desabilitada por Configuração de componente usando Permitir propagação de tradução caso as traduções devam divergir.
Importando projeto de localização para o Weblate¶
O Weblate foi desenvolvido com a integração VCS em mente como seu recurso principal, então a maneira mais fácil é conceder ao Weblate o acesso ao seu repositório. O processo de importação o guiará pela configuração de suas traduções em componentes.
Alternativamente, você pode usar o Weblate para configurar um repositório local contendo todas as traduções sem integração.
Obtendo traduções atualizadas do Weblate¶
Para buscar textos atualizados do Weblate, você pode simplesmente buscar o repositório Git subjacente (tanto do sistema de arquivos, ou pode ser disponibilizado através de Exportador git). Antes disso, você pode querer submeter quaisquer alterações pendentes (veja Commits adiados). Você pode fazer isso na interface do usuário (em Manutenção do repositório) ou na linha de comando usando o Weblate Client.
Isso pode ser automatizado se você conceder acesso push do Weblate ao seu repositório e configurar URL de push do repositório na Configuração de componente. Veja Fazendo push das alterações do Weblate.
Alternativamente, você pode usar API REST do Weblate para atualizar as traduções para corresponder às suas versões mais recentes.
Buscando alterações remotas para o Weblate¶
Para buscar os textos recém-atualizados em seu repositório para o Weblate, apenas deixe-o fazer pull do repositório upstream. Isso pode ser feito na interface do usuário (em Manutenção do repositório) ou na linha de comando usando o Weblate Client.
Isso pode ser automatizado configurando um webhook em seu repositório para acionar o Weblate sempre que houver um novo commit. Veja Atualizando repositórios para mais detalhes.
Se você não estiver usando uma integração VCS, você pode usar a UI ou API REST do Weblate para atualizar as traduções para corresponder à sua base de código.
Ver também
Adicionando novos textos¶
No caso de seus arquivos de tradução serem armazenados em um VCS junto com o código, você provavelmente tem um fluxo de trabalho existente para os desenvolvedores introduzirem novos textos. Qualquer forma de adicionar textos será escolhida, mas considere usar Rota de qualidade para os textos fonte para evitar a introdução de erros.
Quando os arquivos de tradução são separados do código, existem as seguintes maneiras de introduzir novos textos no Weblate.
Manualmente, usando Adicionar novo texto de tradução do menu Ferramentas no idioma usado como fonte para as traduções.
Programaticamente, usando a API
POST /api/translations/(string:project)/(string:component)/(string:language)/units/
.Ao enviar o arquivo fonte como Substituir arquivo tradução existente (isso sobrescreve as strings existentes, portanto, certifique-se de que o arquivo inclua as strings antigas e novas) ou Adicionar novos textos. Veja Métodos de importação.
Nota
A disponibilidade de adicionar textos no Weblate depende de Gerenciar textos.
Atualizando arquivos de idioma de destino¶
Para arquivos monolíngues (veja Formatos de arquivos suportados), o Weblate pode adicionar novos textos de tradução não presentes no Arquivo de idioma da base monolíngue, e não nas traduções reais. No entanto, ele não executa nenhuma limpeza automática de strings obsoletas, pois isso pode ter resultados inesperados. Se você quiser fazer isso, instale a extensão Limpar arquivos de tradução que fará a limpeza de acordo com seus requisitos.
Weblate também não tentará atualizar arquivos bilíngues de nenhuma forma, então se você precisar que os arquivos po
sejam atualizados de pot
, você precisa fazer isso sozinho usando Métodos de importação de Atualizar textos fonte: ou usando a extensão Atualizar arquivos PO para corresponder ao POT (msgmerge).
Gerenciando repositório de controle de versão¶
O Weblate armazena todas as traduções no repositório de controle de versão. Ele pode ser conectado a um upstream ou apenas interno. O Manutenção do repositório permite que você manipule com o repositório.
Dica
Com Localização contínua o repositório é automaticamente empurrado sempre que houver mudanças e normalmente não há necessidade de manipulá-lo manualmente.

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 push do repositório.
Atualizar, Pull, Rebase
Atualiza o repositório Weblate com mudanças upstream. Ele usa Estilo de mesclagem 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 arquivos 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 arquivos de tradução. Use-o quando os arquivos do repositório ficarem fora de sincronia com o Weblate por algum motivo.
Traduzindo software usando 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 ao texto traduzido 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 arquivo GNU gettext).
Nota
Se você estiver prestes a usá-lo em um software proprietário, consulte o licenciamento primeiro. Ele pode não ser adequado para você.
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 seu uso realmente simples, ao invés de invocar manualmente o gettext descrito abaixo, você pode querer tentar um deles, por exemplo, o intltool.
Visão geral do fluxo de trabalho¶
O GNU gettext usa vários arquivos para gerenciar a localização:
PACKAGE.pot
contém textos extraídos de seu código-fonte, normalmente usando xgettext ou alguns wrappers de alto nível como intltool.LANGUAGE.po
contém textos com uma tradução para um único idioma. Ele deve ser atualizado por msgmerge uma vez que oPACKAGE.pot
seja atualizado. Você pode criar novos arquivos de idioma usando msginit ou dentro do Weblate.LANGUAGE.mo
contém a representação binária deLANGUAGE.po
e é usado no tempo de execução do aplicativo. Normalmente não é mantido em um controle de versão, mas gerado em tempo de compilação usando msgfmt. No caso de desejar tê-lo no controle de versão, pode gerá-lo no Weblate usando a extensão Gerar arquivos MO.
No geral, o fluxo de trabalho do GNU gettext é assim:
Ver também
Amostra de programa¶
O programa simples em C usando 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);
}
Extraindo textos traduzíveis¶
Assim que tiver o código usando as chamadas gettext, você pode usar xgettext para extrair mensagens dele e armazená-las em um .pot:
$ xgettext main.c -o po/hello.pot
Nota
Existem programas alternativos para extrair strings do código, por exemplo pybabel.
Isso cria um arquivo de modelo, que você pode usar para iniciar novas traduções (usando msginit) ou atualizar as existentes após a mudança de código (você usaria msgmerge para isso). O arquivo resultante é simplesmente um arquivo 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 um texto a ser traduzido, o texto vazio especial no início é o cabeçalho do arquivo contendo 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 você pode ver que o número 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 arquivo é compilado em um formato binário otimizado, o arquivo .mo usado pelas funções do GNU gettext em tempo de execução.
Atualizando textos¶
Depois de adicionar mais textos ou alterar alguns textos em seu programa, você executa novamente xgettext que gera novamente o arquivo de modelo:
$ xgettext main.c -o po/hello.pot
Em seguida, você pode atualizar arquivos de tradução individuais para corresponder aos modelos recém-criados (isso inclui reordenar os textos 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 você 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 seu projeto |
Máscara de arquivo |
|
Modelo para novas traduções |
|
Formato de arquivo |
Escolha arquivo PO gettext |
Novo idioma |
Escolha Criar novo arquivo de idioma |
E é isso. Agora você está pronto para começar a traduzir seu software!
Ver também
Você pode encontrar um exemplo de gettext com muitos idiomas no projeto Weblate Hello no GitHub: <https://github.com/WeblateOrg/hello>.
Traduzindo documentação usando Sphinx¶
Sphinx é uma ferramenta para criar documentação bonita. Ela usa a sintaxe reStructuredText simples e pode gerar saída em muitos formatos. Se você está procurando um exemplo, esta documentação também é construída usando-a. O companheiro muito útil para usar o Sphinx é o serviço Read the Docs, que irá construir e publicar sua documentação gratuitamente.
Não vou me concentrar em escrever documentação em si, se você precisar de orientação com isso, basta seguir as instruções no site do Sphinx. Assim que você tiver a documentação pronta, traduzi-la é bastante fácil, pois o Sphinx vem com suporte para isso e é muito bem abordado em sua Internacionalização. É uma questão de poucas diretivas de configuração e invocação da ferramenta sphinx-intl
.
Se estiver usando o serviço Read the Docs, você 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 você precisa - criar outro projeto, definir seu idioma e vinculá-lo do projeto principal como uma tradução.
Agora tudo que você precisa é traduzir o conteúdo da documentação. O Sphinx gera um arquivo PO para cada diretório ou arquivo de nível superior, o que pode levar a muitos arquivos para traduzir (dependendo das configurações de gettext_compact
). Você pode importar o index.po
no Weblate como um componente inicial e então configurar a extensão Descoberta de componente para descobrir automaticamente todos os outros.
|
|
|
|
|
|
arquivo PO gettext |
|
|
Expressão regular para corresponder aos arquivos de tradução |
|
Personalizar o nome do componente |
|
Define o arquivo base para novas traduções |
|
Dica
Você prefere que o Sphinx gere apenas um único arquivo PO? Desde o Sphinx 3.3.0, você pode fazer isso usando:
gettext_compact = "docs"
Você pode encontrar vários projetos de documentação sendo traduzidos usando esta abordagem:
Documentação do Weblate (você está lendo-a agora)
Traduzindo HTML e JavaScript usando CDN do Weblate¶
A partir do Weblate 4.2, é possível exportar a localização para um CDN usando a extensão CDN de localização JavaScript.
Nota
Este recurso está configurado no Hosted Weblate. Ela requer configuração adicional em sua instalação, veja LOCALIZE_CDN_URL
e LOCALIZE_CDN_PATH
.
Após a instalação em seu componente, ele enviará as traduções confirmadas (veja Commits adiados) para o CDN e elas podem ser usadas em suas páginas da web para localizá-las.
Criando componente¶
Primeiro, você precisa criar um componente monolíngue que manterá seus textos. Veja add-projects para instruções genéricas sobre isso.
Caso você tenha um repositório existente para começar (por exemplo, aquele que contém arquivos HTML), crie um arquivo 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 você pode começar com uma configuração adicional.
Dica
Caso você tenha traduções existentes, você pode colocá-las nos arquivos JSON de 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 arquivo JSON como formato de arquivo (pode escolher qualquer formato monolíngue este ponto).
Configurando extensão de CDN do Weblate¶
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 CSS
Configura quais textos dos documentos HTML são traduzíveis, veja Extração de texto para o CDN do Weblate e Localização de HTML usando CDN do Weblate.
- Nome do cookie de idioma
Nome do cookie que contém o idioma selecionado pelo usuário. Usado no trecho de JavaScript para Localização de HTML usando CDN do Weblate.
- Extrair textos de arquivos HTML
Lista de arquivos no repositório ou URLs onde Weblate irá procurar por textos traduzíveis e os oferecerá para uma tradução, veja Extração de texto para o CDN do Weblate.
Extração de texto para o CDN do Weblate¶
Os textos de tradução devem estar presentes no Weblate. Você pode gerenciá-los manualmente, usar API para criá-los ou listar arquivos ou URLs usando Extrair textos de arquivos HTML e o Weblate irá extraí-los automaticamente. Os arquivos devem apresentar no repositório ou conter URLs remotas que serão baixadas e analisadas regularmente pelo Weblate.
A configuração padrão para Seletor CSS extrai elementos com classe CSS l10n
. Por exemplo, extrairia dois textos 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, você 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 usando CDN do Weblate¶
Para localizar um documento HTML, você precisa carregar o script weblate.js
:
<script src="https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/weblate.js" async></script>
Ao carregar, isso encontrará automaticamente todos os elementos traduzíveis correspondentes (com base na configuração Seletor CSS ) e substituirá seu texto por uma tradução.
O idioma do usuário é detectado a partir do cookie configurado e, como reserva, recorre aos idiomas preferidos do usuário configurados no navegador.
O Nome do cookie de idioma pode ser útil para integração com outros aplicativos (por exemplo, escolha django_language
ao usar Django).
Localização de JavaScript¶
As traduções individuais são expostas como arquivos JSON bilíngues sob o CDN. Para buscar um, você 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 de 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:
Textos fonte duplicados em arquivos de tradução
Idiomas duplicados nas traduções
Falhas de mesclagem, atualização ou envio no repositório
Erros de análise nos arquivos de tradução
Limites de cobrança (consulte Cobrança)
Repositório contendo muitos commits para serem enviados ou em falta
Licenças faltantes
Erros ao executar extensão (veja Extensões)
Tradução monolingual mal configurado.
Configuração de componente quebrada
URLs quebradas
Capturas de tela não usadas
Código do idioma ambíguo
Nova base não utilizada nas configurações de componente
Máscara de arquivo 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 faltando, 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 textos e idiomas duplicados tem a seguinte aparência:

Construindo uma comunidade de tradutores¶
Checklist de localização comunitária¶
Novo na versão 3.9.
O Checklist de localização comunitária, que pode ser encontrada no menu de cada componente, pode fornecer orientações para facilitar o processo de localização para os tradutores da comunidade.

Gerenciando traduções¶
Adicionando novas traduções¶
Novos textos podem ser disponibilizados para tradução quando aparecem no arquivo base, chamado Modelo para novas traduções (veja Configuração de componente). Se o seu formato de arquivo não exige esse tipo de arquivo, como é o caso da maioria dos fluxos de tradução monolíngues, você pode começar com arquivos em branco).
Novos idiomas podem ser adicionados imediatamente quando solicitados por um usuário no Weblate, ou uma notificação será enviada aos administradores do projeto para aprovação e adição manual. Isso pode ser feito usando Adicionando nova tradução em Configuração de componente.
Nota
Se você adicionar um arquivo 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 Atualizando repositórios.
Ver também
Removendo traduções existentes¶
Idiomas, componentes, ou os projetos em que estão, podem ser removidos (excluídos do Weblate e do repositório remoto se usado) do menu Gerenciar ↓ Remoção de cada projeto, componente ou idioma.
Iniciar a ação Remoção mostra a lista de componentes a serem removidos. Você 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 você deseja remover apenas alguns textos específicos, existem as seguintes maneiras:
Manualmente no arquivo 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 o texto. Isso tem diferenças entre os formatos de arquivo. Veja Gerenciar textos
Nota
Se você excluir um arquivo de idioma no repositório remoto conectado, a tradução respectiva 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 Atualizando repositórios.
Variantes de textos¶
As variantes são úteis para agrupar vários textos, de modo que os tradutores possam ver todas as variantes do texto em um 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.
Você pode definir uma expressão regular para agrupar os textos com base na chave das traduções monolíngues 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, todos os textos com a mesma chave raiz tornam-se parte de um único grupo de variantes, incluindo também o texto 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.
Você pode vincular manualmente textos específicos usando o marcador variant:SOURCE
. Isso pode ser útil para traduções bilíngues que não possuem chaves para agrupar textos automaticamente, ou para agrupar textos cujas chaves não são correspondentes, mas devem ser consideradas juntas durante a tradução.
A variante adicional para um texto também pode ser adicionada usando Ferramentas durante a tradução (quando Gerenciar textos está ativado):

Nota
Nesse caso, o texto fonte da variante tem, no máximo, 768 caracteres. Esta é uma limitação técnica devido à compatibilidade com o banco de dados MySQL.
Etiquetas de texto¶
Divide os textos 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 textos fonte por edição em massa, ou usando a extensão Editor em massa.
Revisando textos¶
Relatórios de atividade¶
Os relatórios de atividades verificam as alterações das traduções, para projetos, componentes ou usuários individuais.
Os relatórios de atividades de um projeto ou componente podem ser acessados em seu painel, na aba Info.

Mais relatórios estão acessíveis na aba Insights, selecionando Relatórios de tradução.
A atividade do usuário atualmente conectado pode ser vista clicando em Perfil no menu do usuário no canto superior direito.
Verificações de texto fonte¶
Existem muitas Verificações de qualidade, algumas delas focam em melhorar a qualidade dos textos fonte. Muitas verificações com falha sugerem uma dica para tornar os textos fonte mais fáceis de traduzir. Todos os tipos de verificação de fonte com falha são exibidos na aba Fonte de cada componente.
Verificações de texto de tradução¶
Verificações de texto de tradução com falha errônea indicam que o problema é com o texto 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 fornecer um feedback valioso para melhorar seus textos fonte. 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 com falha – ela é acionada sempre que há falha em várias traduções de um determinado texto. Normalmente, é algo a se procurar, pois é um texto que os tradutores têm problemas para traduzir corretamente.
A lista detalhada é uma visão geral por idioma:

Recebendo feedback de texto fonte¶
Os tradutores podem comentar tanto sobre a tradução quanto sobre os textos fonte. Cada Configuração de componente pode ser configurada para receber tais comentários em um endereço de e-mail (veja Endereço do relatório de erros do texto fonte), e usar a lista de discussão de desenvolvedores é geralmente a melhor abordagem. Dessa forma, você pode ficar de olho quando surgirem problemas na tradução, cuidar deles e corrigi-los rapidamente.
Ver também
Promovendo a tradução¶
O Weblate fornece widgets para compartilhar em 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, fornecendo informações básicas sobre a tradução. Além disso, você pode compartilhar informações sobre tradução usando o Facebook ou Twitter. Todas essas possibilidades podem ser encontradas na aba Compartilhar:

Todos esses emblemas são fornecidos com um link para uma página simples que explica aos usuários como traduzir usando o Weblate:

Relatório de progresso de tradução¶
Os recursos de relatório fornecem uma visão de como uma tradução progride em um determinado período. É fornecido um resumo das contribuições para qualquer componente ao longo do tempo. 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 o número de contribuições em determinado período.
Estatísticas do colaborador¶
Gera o número de palavras e textos 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 você paga 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
Número geral de textos editados.
- New
Textos recentemente traduzidos que não tinham tradução antes.
- Approved
Contagem para aprovações de textos no fluxo de trabalho de revisão (consulte Revisores dedicados).
- Edited
Textos editados que tiveram tradução antes.
As seguintes métricas estão disponíveis para cada um:
- Count
Número de textos.
- Edits
Número de edições no texto, medido na distância Damerau–Levenshtein.
- Source words
Número de palavras na texto fonte.
- Source characters
Número de caracteres no texto fonte.
- Target words
Número de palavras no texto traduzido.
- Target characters
Número de caracteres no texto traduzido.
Contribuindo para o Weblate¶
Há dezenas de maneiras de melhorar o Weblate. Você pode escolher uma com a qual você se sente confortável, seja codificação, design gráfico, documentação, patrocínio ou uma ideia:
Traduzindo o Weblate¶
O Weblate está sendo continuamente traduzido usando o próprio Weblate. Sinta-se à vontade para participar do esforço de disponibilizar o Weblate no maior número possível de idiomas humanos. Isso traz o Weblate para mais perto de seus usuários!
Se você encontrar um possível erro no texto fonte, pode marcá-lo com um comentário no editor Weblate. Dessa forma, pode ser discutido e corrigido. Se você tiver certeza, também pode clicar no link na seção Localização do texto fonte e enviar um PR com sua correção.
Contribua para a documentação do Weblate¶
Você é bem-vindo para melhorar a página de documentação de sua escolha. Faça isso facilmente clicando 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. Você está escrevendo 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 você não tem certeza. Se você tiver que perguntar sobre algum recurso durante a edição, não altere seus documentos antes de ter a resposta. Isso significa: você muda ou pergunta. Não faça os dois ao mesmo tempo.
Verifique suas alterações executando 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 você 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
Você pode traduzir os documentos.
Discussões do Weblate¶
Se você tiver uma ideia e não tiver certeza se ela é adequada para um problema, não se preocupe. Você pode entrar na comunidade de discussões do GitHub.
Financiando o desenvolvimento do Weblate¶
Você 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 você 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 no Doar para o Weblate.
Começando a contribuir código para o Weblate¶
Entenda o código-fonte do Weblate passando por Código-fonte do Weblate, Frontend do Weblate e Componentes internos do Weblate.
Começando com a base de código¶
Familiarize-se com a base de código do Weblate, dando uma olhada nos bugs etiquetados como good first issue.
Executando Weblate localmente¶
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, você 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, você também pode querer inciar workers do Celery:
./weblate/examples/celery start
Para executar um teste (veja Teste local para mais detalhes):
. scripts/test-database ./manage.py test
Ver também
Executando Weblate localmente no Docker¶
Se você tiver Docker e docker-compose instalados, você pode colocar para funcionar o ambiente de desenvolvimento simplesmente executando:
./rundev.sh
Isso irá criar uma imagem do Docker de desenvolvimento e iniciá-lo. Weblate está sendo executado em <http://127.0.0.1:8080/> e você pode entrar como o usuário admin
, usando admin
como a senha. A nova instalação está vazia, então você pode querer seguir Adicionando projetos e componentes de tradução.
Os arquivos 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 contêineres Docker estejam prontos e em execução antes de fazer os testes. Você pode verificar isso executando o comando docker ps
.
Para exibir os logs:
./rundev.sh logs
Para parar os contêineres em segundo fundo, execute:
./rundev.sh stop
A execução do script sem argumentos vai recriar o contêiner 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 seu projeto Weblate nele.
Considerando que você 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 você deseja:

Você pode optar por deixar PyCharm criar o virtualenv para você, 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, você precisa especificar o caminho raiz do projeto Django e o caminho para 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, você poderia usar o weblate/settings_test.py
do repositório, mas você pode criar sua própria configuração e configurá-la lá.
O último passo é executar o servidor e colocar pontos de interrupção no código para poder depurá-lo. Isto é feito criando uma nova configuração do Django Server:


Dica
Tenha cuidado com a propriedade chamada No reload: ela evita do servidor ser recarregado automaticamente quando você modificar os arquivos. Isso permite que os pontos de interrupção de depuração existentes persistam, quando eles normalmente seriam descartados no recarregamento do servidor.
Inicializando sua instância de desenvolvimento¶
Você pode querer usar import_demo
para criar traduções de demonstração e createadmin
para criar um usuário administrador.
Código-fonte do Weblate¶
O Weblate é desenvolvido no GitHub. Você é bem-vindo para criar um fork do código e abrir pull requests. Patches em qualquer outra forma são bem-vindos também.
Ver 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 usando o formatador de código black.
Para verificar a qualidade do código, você pode usar flake8, os plugins recomendados estão listados em .pre-commit-config.yaml
e sua configuração é colocada 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 arquivos 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.
Você também pode acionar a verificação manualmente, para verificar todos os arquivos executados:
pre-commit run --all
Depuração do Weblate¶
Os bugs podem se comportar como falhas no aplicativo ou como um mau comportamento. Você é bem-vindo a coletar informações sobre qualquer problema desse tipo e enviá-las para o rastreador 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.
Ver também
Logs do Weblate¶
Weblate pode produzir registros (logs) detalhados do que está acontecendo 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
(dependendo da configuração do seu daemon syslog).
O processo de Celery (veja Tarefas de fundo usando Celery) normalmente produz também registros próprios. O exemplo de configurações de todo o sistema registra em vários arquivos em /var/log/celery/
.
Os contêineres Docker registram a sua saída (como é habitual no mundo Docker), por isso pode olhar para os logs utilizando docker-compose logs
.
Ver também
Amostra de configuração contém uma configuração de LOGGING
.
Não processando 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 usando Celery
Verifique o status da fila do Celery em Interface de gerenciamento ou use
celery_queues
Procure erros nos registros do Celery (veja Logs do Weblate)
Não recebendo e-mails do Weblate¶
Você pode verificar se o e-mail de saída está funcionando corretamente usando o comando de gerenciamento sendtestemail
(veja Invocando comandos de gerenciamento para instruções sobre como invocá-lo em diferentes ambientes) ou usando Interface de gerenciamento sob a aba 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 processando tarefas de segundo plano para depuração disso.
Analisando falhas de aplicativo¶
Caso o aplicativo falhe, é útil recolher o máximo de informação possível sobre a falha. A maneira mais fácil de conseguir isso é usando serviços de terceiros que podem coletar tais informações automaticamente. Você 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 usuário, 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 mostrando 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, você 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 de sua estrutura de código 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 usando 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 um aplicativo Django, veja Componentes internos do Weblate.
weblate/static
Arquivos de cliente (CSS, Javascript e imagens), veja Frontend do Weblate.
Módulos¶
O Weblate consiste em vários aplicativos Django (alguns opcionais, veja Módulos opcionais do Weblate):
accounts
Conta de usuário, 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 Cobrança.
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 arquivo 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
Gerenciamento de capturas de tela e módulo OCR.
trans
Módulo principal que trata das traduções.
utils
Vários utilitários auxiliares.
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 seu commit feito 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 seu commit feito para o repositório.
- pre_push(component)¶
Gancho acionado antes do repositório ter seu push feito 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 arquivo ser analisado.
Ele recebe uma instância de uma classe de formato de arquivo como um argumento.
Isso é útil para modificar os parâmetros de classe de formato de arquivo, por exemplo, ajustar como o arquivo 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 usando 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.
Gerenciamento de dependências¶
O gerenciador de pacotes yarn é usado para atualizar bibliotecas de terceiros. A configuração reside em scripts/yarn
e há um script wrapper scripts/yarn-update
para atualizar as bibliotecas, construí-las e copiá-las para os locais corretos em weblate/static/vendor
, onde todo o terceiro código parcialmente frontend está localizado.
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 arquivos JavaScript e CSS.
Também usamos ESLint para verificar o código JavaScript.
Localização¶
Se você precisar de qualquer texto visível para o usuário no código do frontend, ele deve ser localizável. Na maioria dos casos, tudo que você precisa é envolver 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'
Ícones¶
Weblate atualmente usa ícones de design de material. Caso você esteja procurando 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 você 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 você encontrou é um problema de segurança no Weblate, consulte a seção Problemas de segurança abaixo.
Se você não tem certeza sobre seu relatório de bug ou solicitação de recurso, você pode tentar Discussões do Weblate.
Problemas de segurança¶
A fim de dar à comunidade tempo para responder e fazer upgrade, recomendamos enfaticamente que você 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 você não quiser usar o HackerOne, por qualquer motivo, você pode enviar o relatório por e-mail para michal@cihar.com. Você pode optar por criptografá-lo usando esta chave PGP 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D. Você também pode obter a chave PGP em Keybase.
Nota
O Weblate depende de componentes de terceiros para muitas coisas. Caso você encontre uma vulnerabilidade afetando 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 adicionando casos de teste para qualquer nova funcionalidade e verifique se funciona.
Integração contínua¶
Os resultados do teste atual podem ser encontrados 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 links externos
Testes de migração de todas as versões com suporte
Linting de código
Verificação de configuração (garante que os arquivos 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 definindo o arquivo 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
Você 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 de 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 usando 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, você deve coletar arquivos estáticos, pois alguns testes contam com a presença deles:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Você 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 contêiner Docker do desenvolvedor, consulte Executando Weblate localmente no Docker.
Ver 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 arquivos JSON externos.
Esquema de memória de tradução do Weblate¶
tipo |
array |
||
items |
O item da memória de tradução |
||
tipo |
objeto |
||
propriedades |
|||
|
A Categoria do Fio da Meada |
||
1 is global, 2 is shared, 10000000+ are project specific, 20000000+ are user specific |
|||
tipo |
integer |
||
exemplos |
1 |
||
minimum |
0 |
||
padrão |
1 |
||
|
The String Origin |
||
Nome do arquivo ou nome de componente |
|||
tipo |
Fio da Meada |
||
exemplos |
test.tmx |
||
projeto/componente |
|||
padrão |
|||
|
O Fio da Meada fonte |
||
tipo |
Fio da Meada |
||
exemplos |
Olá |
||
minLength |
1 |
||
padrão |
|||
|
O Idioma Fonte |
||
ISO 639-1 / ISO 639-2 / IETF BCP 47 |
|||
tipo |
Fio da Meada |
||
exemplos |
Inglês |
||
pattern |
^[^ ]+$ |
||
padrão |
|||
|
O Fio da Meada alvo |
||
tipo |
Fio da Meada |
||
exemplos |
Ahoj |
||
minLength |
1 |
||
padrão |
|||
|
O Idioma Alvo |
||
ISO 639-1 / ISO 639-2 / IETF BCP 47 |
|||
tipo |
Fio da Meada |
||
exemplos |
cs |
||
pattern |
^[^ ]+$ |
||
padrão |
|||
additionalProperties |
False |
||
definições |
Ver também
Exportação de dados de usuário do Weblate¶
tipo |
objeto |
|||
propriedades |
||||
|
Básico |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Nome de usuário |
|||
tipo |
Fio da Meada |
|||
exemplos |
admin |
|||
padrão |
||||
|
Nome completo |
|||
tipo |
Fio da Meada |
|||
exemplos |
Administração Weblate |
|||
padrão |
||||
|
||||
tipo |
Fio da Meada |
|||
exemplos |
||||
padrão |
||||
|
Data juntado |
|||
tipo |
Fio da Meada |
|||
exemplos |
2019-11-18T18:53:54.862Z |
|||
padrão |
||||
|
Perfil |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Idioma |
|||
tipo |
Fio da Meada |
|||
exemplos |
cs |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Número de Fios da Meada sugeridos |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
padrão |
0 |
|||
|
Número de Fios da Meada traduzidos |
|||
tipo |
integer |
|||
exemplos |
24 |
|||
padrão |
0 |
|||
|
Número de prints de tela upados |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
padrão |
0 |
|||
|
Ocultar as traduções concluídas no painel |
|||
tipo |
boolean |
|||
exemplos |
False |
|||
padrão |
True |
|||
|
Mostrar as traduções secundárias no modo Zen |
|||
tipo |
boolean |
|||
exemplos |
True |
|||
padrão |
True |
|||
|
Ocultar a fonte caso uma tradução secundária exista |
|||
tipo |
boolean |
|||
exemplos |
False |
|||
padrão |
True |
|||
|
Link do editor |
|||
tipo |
Fio da Meada |
|||
exemplos |
||||
pattern |
^.*$ |
|||
padrão |
||||
|
Modo do editor de tradução |
|||
tipo |
integer |
|||
exemplos |
0 |
|||
padrão |
0 |
|||
|
Modo editor Zen |
|||
tipo |
integer |
|||
exemplos |
0 |
|||
padrão |
0 |
|||
|
Caracteres especiais |
|||
tipo |
Fio da Meada |
|||
exemplos |
||||
pattern |
^.*$ |
|||
padrão |
||||
|
Visão do painel |
|||
tipo |
integer |
|||
exemplos |
1 |
|||
padrão |
0 |
|||
|
Lista de componentes padrão |
|||
padrão |
null |
|||
anyOf |
tipo |
null |
||
tipo |
integer |
|||
|
Idiomas traduzidos |
|||
tipo |
array |
|||
padrão |
||||
items |
Código do idioma |
|||
tipo |
Fio da Meada |
|||
exemplos |
cs |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Idiomas secundários |
|||
tipo |
array |
|||
padrão |
||||
items |
Código do idioma |
|||
tipo |
Fio da Meada |
|||
exemplos |
sk |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Projetos observados |
|||
tipo |
array |
|||
padrão |
||||
items |
Projeto Lesma |
|||
tipo |
Fio da Meada |
|||
exemplos |
Weblate |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Registro de auditoria |
|||
tipo |
array |
|||
padrão |
||||
items |
Items |
|||
tipo |
objeto |
|||
propriedades |
||||
|
Endereço de IP |
|||
tipo |
Fio da Meada |
|||
exemplos |
127.0.0.1 |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Agente de usuário |
|||
tipo |
Fio da Meada |
|||
exemplos |
PC / Linux / Firefox 70.0 |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Timestamp |
|||
tipo |
Fio da Meada |
|||
exemplos |
2019-11-18T18:58:30.845Z |
|||
pattern |
^.*$ |
|||
padrão |
||||
|
Atividade |
|||
tipo |
Fio da Meada |
|||
exemplos |
entrar |
|||
pattern |
^.*$ |
|||
padrão |
||||
definições |
Ver 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 - você sempre deve atualizar para x.0 antes de atualizar para versões x.y superiores.
Ver também
Planejamento de lançamento¶
Os recursos para os próximos lançamentos são coletados usando marcos do GitHub, você 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 usando ./scripts/list-translated-languages.
Definir a versão final usando ./scripts/prepare-release.
Certificar-se de que as capturas de tela estejam atualizadas usando make -C docs update-screenshots.
Junte todas as traduções pendentes usando wlc push; git remote update; git merge origin/weblate
Fazer o lançamento:
Criar um lançamento usando ./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 nos links de download do site.
Incrementar a versão no repositório usando ./scripts/set-version.
Para criar tags usando o script ./scripts/create-release, você 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 download Weblate (os downloads do site são copiados lá)
Segurança e privacidade¶
Dica
Na Weblate, a segurança mantém um ambiente que valoriza a privacidade de nossos usuários.
O desenvolvimento do Weblate segue as Melhores Práticas da Core Infrastructure Initiative da Linux Foundation.
Ver também
Rastreamento de dependências para vulnerabilidades¶
Problemas de segurança em nossas dependências são monitorados usando Dependabot. Isso cobre as bibliotecas Python e JavaScript, e a versão estável mais recente tem suas dependências atualizadas 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 contêiner Docker¶
Os contêineres Docker são verificados usando Anchore e Trivy.
Isso nos permite detectar vulnerabilidades antecipadamente e lançar melhorias rapidamente.
Você 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).
Ver também
Sobre o Weblate¶
Objetivos do projeto¶
Ferramenta de localização contínua baseada na web com Integração com controle de versão suportando uma ampla gama de Formatos de arquivos suportados, facilitando a contribuição dos tradutores.
Nome do projeto¶
“Weblate” é uma palavra-valise das palavras “web” e “translate”.
Site 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 sua criação, em 2012, milhares de pessoas contribuíram.
Licença¶
Copyright (C) 2012 - 2021 Michal Čihař <michal@cihar.com>
Este programa é um software livre: você 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 (a 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.
Você 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.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 addon for Windows RC files.
Fixed possible crash on 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 de Object Pascal.Renamed Nearby keys to Similar keys to better describe the purpose.
Adicionado suporte para Arquivos 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 usuários quando a autenticação por e-mail está desabilitada.
Melhoradas as definições de idioma.
Adicionado suporte para bloquear usuários 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 usuário 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 arquivos de propriedades vazios.
Fixed copy icon alignment in RTL languages.
Estendidas as estatísticas de texto na aba de Informações.
Corrigido o tratamento de arquivos 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 Arquivos 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 superusuários.
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 senhas agora usa Argon2 por padrão.
Barras de progresso simplificadas indicando o status da tradução.
Renamed Adiciona idiomas em falta to clarify the purpose.
Corrigido o salvamento do estado de texto 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 Há palavras duplicadas de forma consecutiva 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 glossaries.
Melhoradas verificações de links 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 downloads de arquivos 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 arquivos TermBase eXchange.
Adicionado suporte para definir manualmente variantes de texto usando 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.
Habilita 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 em um 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 usuário 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 usuários.
Melhorado o tratamento de contexto em arquivos PO monolíngues.
Fixed cleanup add-on behavior with HTML, ODF, IDML and Windows RC formats.
Corrigida a análise do local de arquivos CSV.
Use content compression for file downloads.
Improved user experience on importing from ZIP file.
Melhorada a detecção do formato de arquivo 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 gerenciamento.
Fixed read-only state handling in bulk edit.
Integração com CodeMirror melhorada.
Adicionada extensão para remover textos vazios de arquivos 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.
O componente contém arquivo de tradução para o idioma fonte.
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 aba “outras traduções” ao traduzir.
Added tasks API.
Melhorado o desempenho do envio de arquivo.
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.
Adicionado suporte a pull requests do Pagure.
Melhoradas as mensagens de erro para registros 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 de sessão fixa para usuários autenticados.
Adicionar suporte para ocultar informação de versão.
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 usuário 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.
Corrigidas a contagem das estatísticas após remoção de sugestão.
Estendido perfil público de usuário.
Fixed configuration of enforced checks.
Improve documentation about built-in backups.
Moved source language attribute from project to a component.
Adicionada verificação de formatação Vue I18n.
Generic placeholders check now supports regular expressions.
Melhorado o visual do modo Matriz.
Maquinaria agora é chamada de 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.
Melhorado o rastreamento de textos fontes.
Improved JSON, YAML and CSV formats compatibility.
Suporte adicionado para remover Fios da Meada.
Improved performance of file downloads.
Improved repository management view.
Automatically enable java-format for Android.
Suporte adicionado para prints da tela localizados.
Suporte adicionado para Pyton 3.9.
Fixed translating HTML files under certain conditions.
Weblate 4.2.2¶
Released on September 2nd 2020.
Corrigido correspondência de textos fonte para formatos JSON.
Fixed login redirect for some authentication configurations.
Corrigida autenticação por LDAP com sincronização de grupo.
Corrigida falha em relatar progresso das traduções automáticas.
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 arquivos 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.
Adicionar suporte para bloquear componentes que sofrem erros de 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.
Adicionada verificação para literais de modelo de ECMAScript.
Adicionada opção para observar um componente.
Removed leading dot from JSON unit keys.
Removida fila separada de Celery para memória de tradução.
Permite traduzir todos os componentes um idioma 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
.Adiciona suporte para pesquisar 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: Textos do PHP de Laravel, Arquivos HTML, Formato OpenDocument, Formato IDML, Arquivos RC do Windows, Traduções de INI, Traduções de Inno Setup INI, Propriedades GWT, Arquivos JSON go-i18n, Arquivo ARB.
Consistently use dismissed as state of dismissed checks.
Adiciona suporte para configurar extensões padrão para habilitar.
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 a muito tempo, Há palavras duplicadas de forma consecutiva.
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 usando 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.
Improved translation memory performance.
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.
Exibe verificações com falha em 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 não alterada 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.
Adicionado suporte para agrupar formas de textos.
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 texto.
Adicionada extensão de edição em massa.
Added option for Forçando 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.
Improved application user interface.
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 necessitando 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 em um 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.
Included per project and component stats.
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.
Removed Google web translate machine translation.
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.
Corrigida a pesquisa 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.
Improved quality checks processing.
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 textos contendo 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.
Various code cleanups.
Documentation improvements.
Changed file layout.
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
Several new translations.
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 sua documentação para as instruções de configuração genéricas em Django Framework.
Nota
Por padrã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 você deseja usar não suportarem isso, por favor, aplique a validação de e-mail no lado Weblate configurando FORCE_EMAIL_VALIDATION para eles. Por exemplo:
Ver 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 usuário por padrão, você tem que solicitá-lo explicitamente, caso contrário o Weblate não será capaz de pagar corretamente as contribuições que os usuários fazem.Dica
A maioria dos backends de autenticação exige HTTPS. Assim que o HTTPS estiver habilitado em seu servidor web, configure o Weblate para relatá-lo corretamente usando
ENABLE_HTTPS
ou, no contêiner Docker,WEBLATE_ENABLE_HTTPS
.Ver também
Backend de Python Social Auth
Autenticação por OpenID¶
Para serviços baseados em OpenID, geralmente é apenas uma questão de habilitá-los. A seção a seguir permite a autenticação OpenID para OpenSUSE, Fedora e Ubuntu:
Ver também
OpenID
Autenticação por GitHub¶
Você precisa registrar um aplicativo 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
GitHub
Autenticação por Bitbucket¶
Você precisa registrar um aplicativo no Bitbucket e, em seguida, dizer ao Weblate todos os seus segredos:
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Bitbucket
OAuth 2 do Google¶
Para usar o OAuth 2 do Google, você precisa se registrar em um aplicativo 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Google
OAuth 2 do Facebook¶
Como de costume com os serviços OAuth 2, você precisa registrar seu aplicativo no Facebook. Uma vez feito isso, você 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Facebook
OAuth 2 do GitLab¶
Para usar o OAuth 2 do GitLab, você precisa registrar um aplicativo em <https://gitlab.com/profile/applications>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/gitlab/
e garantir que você 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
GitLab
Active Directory do Microsoft Azure¶
Weblate pode ser configurado para usar inquilinos comuns ou específicos para autenticação.
A 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Microsoft Azure Active Directory
Slack¶
Para usar o OAuth 2 do Slack, você precisa cadastrar um aplicativo 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Slack
Substituindo nomes e ícones de métodos de autenticação¶
Você pode substituir o nome de exibição do método de autenticação e o ícone usando configurações como
SOCIAL_AUTH_<NOME>_IMAGE
eSOCIAL_AUTH_<NOME>_TITLE
. Por exemplo, substituir a nomenclatura para Auth0 ficaria assim:Desativando autenticação por senha¶
Autenticação por e-mail e senha pode ser desativada através da remoção de
social_core.backends.email.EmailAuth
deAUTHENTICATION_BACKENDS
. Mantenha sempreweblate.accounts.auth.WeblateUserBackend
lá, ele é necessário para a funcionalidade central do Weblate.Dica
Você ainda pode usar autenticação por senha para a interface administrativa, para usuários que você cria manualmente lá. Basta navegar para
/admin/
.Por exemplo, a autenticação usando apenas o provedor Open ID do openSUSE pode ser alcançada usando o seguinte: