Weblate

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.

Site Estado da tradução CII Best Practices https://img.shields.io/pypi/v/weblate.svg https://readthedocs.org/projects/weblate/badge/ Licença

Apoio

Weblate é um software livre com suporte profissional opcional e ofertas de hospedagem em nuvem. Confira https://weblate.org/hosting/ para mais informações.

Documentação

Encontra-se no diretório docs do código-fonte ou visualizado online em https://docs.weblate.org/

Instalação

Instruções de instalação:

https://docs.weblate.org/pt_BR/latest/admin/install.html

Bugs

Por favor, relate as solicitações de recursos e os problemas em:

https://github.com/WeblateOrg/weblate/issues

Licença

Copyright © 2012–2021 Michal Čihař michal@cihar.com

Este programa é um software livre: pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicado pela Free Software Foundation, seja a versão 3 da Licença, ou (ao seu critério) qualquer versão posterior.

Este programa é distribuído na esperança de que ele seja útil, mas sem qualquer garantia; sem sequer a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO ESPECÍFICO. Consulte a Licença Pública Geral GNU para obter mais detalhes.

Deve ter recebido uma cópia da Licença Pública Geral GNU junto a este programa. Caso contrário, veja https://www.gnu.org/licenses/.

Básico do Weblate

Estrutura de projetos e componentes

No Weblate, as traduções são organizadas em projetos e componentes. Cada projeto pode conter vários componentes, os quais contêm traduções para idiomas individuais. O componente corresponde a um ficheiro traduzível (por exemplo, GNU gettext ou Recurso de cadeias de Android). Os projetos existem para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de uma aplicação).

Internamente, cada projeto tem traduções para cadeias comuns propagadas em outros componentes dentro dele por predefinição. Isso alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desativada por Configuração de componente a utilizar Permitir propagação da tradução caso as traduções devam divergir.

Veja também

Integrando com Weblate

Registo e perfil de utilizador

Registo

Todos podem procurar projetos, visualizar traduções ou sugerir traduções por predefinição. Somente utilizadores registados têm permissão para realmente gravar as alterações e são creditados para cada tradução feita.

Pode registar-se seguindo alguns passos simples:

  1. Preencha o formulário de registo com as suas credenciais.

  2. Ative o registo seguindo a hiperligação no e-mail que receber.

  3. Ajuste opcionalmente o seu perfil para escolher quais idiomas conhece.

Painel

Ao fazer login verá uma visão geral de projetos e componentes, bem como a respetiva progressão de tradução deles.

Novo na versão 2.5.

Os componentes dos projetos que está a observar são mostrados por predefinição e cruzados com os idiomas da sua preferência.

Dica

Pode mudar para visualizações diferentes a usar as guias de navegação.

_images/dashboard-dropdown.png

O menu tem estas opções:

  • Projetos > Visualizar todos os projetos no menu principal mostra o estado da tradução, para cada projeto, na instância do Weblate.

  • Selecionar um idioma no menu principal de Idiomas irá mostrar o estado da tradução de todos os projetos, filtrado por um dos seus idiomas primários.

  • Traduções observadas no Painel vai mostrar o estado da tradução apenas dos projetos que está observando, filtradas por os seus idiomas primários.

Além disso, o menu suspenso também pode mostrar qualquer quantidade de listas de componentes, conjuntos de componentes do projeto pré-configurados pelo administrador da Weblate, veja Lista de componentes.

Pode configurar a sua exibição de painel predefinido pessoal na secção Preferências das configurações do perfil do utilizador.

Nota

Quando o Weblate estiver configurado para um único projeto a usar SINGLE_PROJECT no ficheiro settings.py (veja Configuração), o painel não será mostrado, pois o utilizador será redirecionado para um único projeto ou componente.

Perfil do utilizador

O perfil do utilizador é acessível clicando no ícone do utilizador no topo direito do menu superior e depois no menu Configurações.

O perfil do utilizador contém as suas preferências. Nome e endereço de e-mail são usados em commits de VCS, por isso mantenha essas informações precisas.

Nota

Todas as seleções de idiomas só oferecem idiomas traduzidos atualmente.

Dica

Solicite ou adicione outros idiomas que deseja traduzir clicando no botão para torná-los também disponíveis.

Idiomas

Idioma da interface

Escolha o idioma que deseja exibir na UI.

Idiomas traduzidos

Escolha quais idiomas prefere traduzir e eles serão oferecidos na página principal de projetos assistidos, para que tenha acesso mais fácil a todas essas traduções em cada um desses idiomas.

_images/your-translations.png

Idiomas secundários

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

_images/secondary-language.png

Preferências

Visualização predefinida do painel

Na guia Preferências, pode escolher qual das visualizações disponíveis do painel de instrumentos deve-se apresentar por predefinição. Se escolher a lista de Lista de componentes, terá que selecionar qual lista de componentes será exibida a partir da Lista de componentes predefinida suspensa.

Veja também

Lista de componentes

Notificações

Inscreva-se em várias notificações da guia Notificações. As notificações para eventos selecionados em projetos assistidos ou administrados serão lhe enviadas por e-mail.

Algumas das notificações são enviadas apenas para eventos nos seus idiomas (por exemplo, sobre novas cadeias para traduzir), enquanto algumas acionam no nível de componente (por exemplo, erros de fusão). Esses dois grupos de notificações são visualmente separados nas configurações.

Pode alternar notificações para projetos assistidos e projetos administrados e pode ser mais ajustado (ou silenciado) por projeto e componente. Visite a página de visão geral de componentes e selecione a escolha apropriada no menu Observando.

No caso de Observar automaticamente projetos em contribuição estar ativado, começará automaticamente a ver os projetos ao traduzir uma cadeia. O valor padrão depende de DEFAULT_AUTO_WATCH.

Nota

Não receberá notificações para as suas próprias ações.

_images/profile-subscriptions.png

Conta

A guia Conta permite configurar detalhes básicos da conta, conectar vários serviços que pode usar para entrar no Weblate, remover a sua conta completamente ou descarregar os seus dados de utilizador (veja Exportação de dados de utilizadores do Weblate).

Nota

A lista de serviços depende da configuração do Weblate, mas pode ser feita para incluir sites populares como GitLab, GitHub, Google, Facebook ou Bitbucket ou outros provedores de OAuth 2.0.

_images/authentication.png

Perfil

Todos os campos desta página são opcionais e podem ser apagados a qualquer momento, e ao preenchê-los, dá-nos o seu consentimento para compartilhar esses dados onde quer que o seu perfil de utilizador apareça.

Um avatar pode ser mostrado para cada utilizador (dependendo de ENABLE_AVATARS). Estas imagens são obtidas utilizando https://gravatar.com/.

Licenças

Acesso API

Pode obter ou redefinir o seu token API de acesso aqui.

Registo de auditoria

O registo de auditoria rastreia as ações realizadas com a sua conta. Ele regista o endereço IP e o navegador para cada ação importante com a sua conta. As ações críticas também desencadeiam uma notificação a um endereço de e-mail principal.

Traduzir a usar o Weblate

Obrigado pelo interesse em traduzir a usar o Weblate. Os projetos podem ser configurados para tradução direta ou por meio de sugestões feitas por utilizadores sem contas.

No geral, há dois modos de tradução:

  • O projeto aceita traduções diretas

  • O projeto aceita apenas sugestões, que são validadas automaticamente uma vez que uma quantidade definida de votos é alcançado

Por favor, veja Fluxos de trabalho de tradução para obter mais informações sobre fluxo de trabalho de tradução.

Opções para a visibilidade do projeto de tradução:

  • Publicamente visível e todos podem contribuir

  • Visível apenas para um certo grupo de tradutores

Projetos de tradução

Os projetos de tradução possuem componentes; recursos para o mesmo software, livro ou projeto.

_images/project-overview.png

Sugestões

Nota

As permissões podem variar de acordo com a configuração da sua instância do Weblate.

Utilizadores anônimos só podem (por padrão) encaminhar sugestões. Isso ainda está disponível para os utilizadores autenticados, nos casos em que surge a incerteza sobre a tradução, a levar outros tradutores a revisá-la.

As sugestões são verificadas diariamente para remover as duplicatas e sugestões a corresponder à tradução atual.

Comentários

Três tipos de comentários podem ser publicados: para traduções, cadeias fonte ou para relatar erros de cadeias fonte quando esta funcionalidade é ativada a utilizar Ativar revisões de fontes. Escolha o adequado para o tópico que deseja discutir. Os comentários de cadeia fonte são, em qualquer caso, bons para fornecer feedback sobre a cadeia original, por exemplo, que ele deve ser reformulado ou para fazer perguntas sobre ele.

Pode usar a sintaxe do Markdown em todos os comentários e mencionar outros utilizadores a usar @menção.

Variantes

As variantes são usadas para agrupar variantes de diferentes comprimentos da cadeia. O frontend do seu projeto pode, então, usar cadeias diferentes a depender do ecrã ou do tamanho da janela.

Etiquetas

As etiquetas são usadas para categorizar cadeias dentro de um projeto para personalizar ainda mais o fluxo de trabalho de localização (por exemplo, para definir categorias de cadeias).

Veja também

Etiquetas de cadeia

Traduzir

Na página de tradução, a cadeia fonte e uma área de edição para tradução dela são mostrados. Caso a tradução seja plural, são mostradas múltiplas cadeia fonte e áreas de edição, cada um descrito e rotulado em na quantidade de formas de plural que o idioma traduzido tem.

Todos os caracteres especiais de espaço em branco são sublinhados em vermelho e indicados com símbolos cinzentos. Mais de um espaço subsequente também é sublinhado em vermelho para alertar o tradutor para um possível problema de formatação.

Vários pedaços de informações extras podem ser mostrados nesta página, a maioria proveniente do código-fonte do projeto (como contexto, comentários ou onde a mensagem está a ser usada). Campos de tradução para quaisquer idiomas secundários, que os tradutores venham a selecionar nas preferências, serão mostrados (veja Idiomas secundários) acima da cadeia fonte.

Below the translation, translators will find suggestion made by others, to be accepted (✓), accepted with changes (✏️), or deleted (🗑).

Plurais

Palavras a mudar a forma para levar em conta sua designação numérica são chamadas de plurais. Cada idioma tem uma própria definição de plurais. O inglês, por exemplo, tem suporte a uma. Na definição singular de, por exemplo, «car» (carro), implicitamente um carro é referenciado, enquanto na definição plural, «carros» significa dois ou mais carros (ou o conceito de carros como substantivo). Idiomas como, por exemplo, tcheco ou árabe têm mais plurais e também as regras dele para os plurais são diferentes.

O Weblate tem total suporte a cada uma dessas formas, em cada respectivo idioma (a traduzir cada plural separadamente). A quantidade de campos e como ele é usado na aplicação ou projeto traduzido depende da forma de plural configurada. Weblate mostra as informações básicas e Language Plural Rules do Unicode Consortium tem informações mais detalhadas.

Veja também

Fórmula de plural

_images/plurals.png

Atalhos de teclado

Alterado na versão 2.18: Os atalhos do teclado foram renovados em 2.18 para reduzir a possibilidade de colidir com o atalhos predefinidos de navegadores ou sistemas.

Os seguintes atalhos de teclado podem ser utilizados durante a tradução:

Atalho de teclado

Descrição

Alt+Home

De momento, esta tradução está bloqueada.

Alt+End

De momento, esta tradução está bloqueada.

Alt+PageUp ou

Ctrl ↑ ou

Alt ↑ ou

Cmd ↑

De momento, esta tradução está bloqueada.

Alt+PageDown ou

Ctrl+↓ ou

Alt+↓ ou

Cmd+↓

De momento, esta tradução está bloqueada.

Alt+Enter ou

Ctrl+Enter ou

Cmd+Enter

Gravar tradução atual.

Ctrl+Shift+Enter ou

Cmd+Shift+Enter

Desmarca a tradução como a precisar de edição e a envia.

Ctrl+E ou

Cmd+E

Muda o foco ao editor de tradução.

Ctrl+U ou

Cmd+U

Muda o foco ao editor de comentários.

Ctrl+M ou

Cmd+M

Mostra a guia Sugestões automáticas, consulte Sugestões automáticas.

Ctrl+1 até Ctrl+9 ou

Cmd+1 até Cmd+9

Copia objetos colocáveis de determinada quantidade da cadeia fonte.

Ctrl+M+1 até 9 ou

Cmd+M+1 até 9

É passado como um parâmetro único que consiste o nome de uma tradução atual.

Ctrl+I+1 até 9 ou

Cmd+I+1 até 9

Ignore um item na lista de verificações falhadas.

Ctrl+J ou

Cmd+J

Mostra a guia de Cadeias próximas.

Ctrl+S ou

Cmd+S

Muda o foco para o campo de pesquisa.

Ctrl+O ou

Cmd+O

Copia a cadeia fonte.

Ctrl+Y ou

Cmd+Y

Marca ou desmarca o marcador Necessita edição.

Teclado visual

Uma pequena linha de teclado visual é mostrada logo acima do campo de tradução. Isto pode ser útil para manter a pontuação local em mente (pois a linha é local para cada idioma) ou ter caracteres que seriam de difícil digitação.

Os símbolos mostrados são apresentados em três categorias:

  • Caracteres configurados pelo utilizador definidos em Perfil do utilizador

  • Caracteres por idioma fornecidos pelo Weblate (por exemplo, citações ou caracteres específicos RTL)

  • Caracteres configurados a usar SPECIAL_CHARS

_images/visual-keyboard.png

Contexto da tradução

Esta descrição contextual fornece informações relacionadas sobre a cadeia atual.

Atributos da cadeia

Coisas como ID da mensagem, contexto (msgctxt) ou localização no código-fonte.

Capturas de ecrã

Capturas de ecrã podem ser enviadas ao Weblate para melhor informar os tradutores sobre onde e como a cadeia é usada, veja Contexto visual para cadeias.

Cadeias próximas

Exibe mensagens próximas do ficheiro de tradução. Estas também são geralmente usadas num contexto semelhante e se mostram úteis para manter a tradução consistente.

Outras ocorrências

No caso de uma mensagem aparecer em vários lugares (por exemplo, vários componentes), esta guia mostra todos eles se forem considerados inconsistentes (veja Inconsistente). Pode escolher qual usar.

Memória de tradução

Veja cadeias semelhantes traduzidas no passado, veja Memória de Tradução.

Glossário

Exibe termos do glossário do projeto usados na mensagem atual.

Alterações recentes

Lista de pessoas que modificaram esta mensagem recentemente a usar Weblate.

Projeto

Informações do projeto, como instruções para tradutores ou um diretório, ou ligação para a cadeia no repositório do sistema de controlo de versão que o projeto usa.

Se quiser ligações diretos, o formato da tradução tem que ter suporte.

Histórico de tradução

Cada alteração é por predefinição (a menos que desativada nas configurações dos componentes) gravada no banco de dados e pode ser revertida. Opcionalmente, ainda se pode reverter qualquer coisa no sistema de controle de versão subjacente.

Comprimento da cadeia traduzida

Weblate pode limitar o comprimento de uma tradução em várias formas para garantir a cadeia traduzida não é muito longa:

  • A limitação padrão para tradução é dez vezes maior do que a cadeia fonte. Isso pode ser desativado em LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH. Caso esteja a atingir isso, ele também pode ser causado por uma tradução monolingue ser erroneamente configurada como bilingue, a fazer o Weblate errar a chave de tradução para o texto fonte em vez da cadeia fonte. Veja Formatos bilíngues e monolíngues para obter mais informações.

  • Comprimento máximo em caracteres definidos por ficheiro de tradução ou um sinalizador, consulte Tamanho máximo da tradução.

  • Tamanho máximo renderizado em pixels definido por sinalizadores, veja Tamanho máximo da tradução.

Sugestões automáticas

Baseado na configuração e o seu idioma traduzido, o Weblate fornece sugestões de várias ferramentas de tradução e memoria-tradução. Todas as traduções de máquina estão disponíveis numa única guia de cada página de tradução.

Veja também

Encontra a lista de ferramentas suportadas em Tradução automática.

Tradução automática

Pode usar a tradução automática para a iniciar a tradução com base em fontes externas. Esta ferramenta se chama Tradução automática, acessível no menu Ferramentas, uma vez que tenha selecionado um componente e um idioma:

_images/automatic-translation.png

Dois modos de operação são possíveis:

  • Usar outros componentes do Weblate como fonte para traduções.

  • Usar serviços selecionados de tradução automática com traduções acima de um certo limite de qualidade.

Também pode escolher quais cadeias devem ser traduzidas automaticamente.

Aviso

Tenha em mente que isso substituirá as traduções existentes se empregadas com filtros amplos, como Todos as cadeias.

Útil em várias situações, como a consolidação da tradução entre diferentes componentes (por exemplo, a aplicação e o site dela) ou quando estiver a iniciar uma tradução para um novo componente a usar traduções existentes (memória de tradução).

Limitação de taxa

Para evitar abusos na interface, uma limitação de taxa é aplicada a várias operações como pesquisa, envio de formulários de contato ou tradução. Se afetado por isto, fica bloqueado por um certo período até que possa executar a operação novamente.

Os limites predefinidos e o ajuste fino estão descritos no manual administrativo, veja Limitação de taxa.

Procurar e substituir

Altere a terminologia efetivamente ou execute a correção em massa das cadeias a usar Pesquisar e substituir no menu Ferramentas.

Dica

Não se preocupe em estragar as cadeias. Este é um processo de dois passos que mostra uma pré-visualização das cadeias editados antes que a alteração real seja confirmada.

Edição em massa

A edição em massa permite realizar uma operação sobre a quantidade de cadeias. Define os textos a procurar por eles e configura algo a ser feito para corresponder-lhes. As seguintes operações são suportadas:

Dica

Esta ferramenta é chamada Editor em massa, acessível no menu Ferramentas de cada projeto, componente ou tradução.

Descarregar e enviar traduções

Pode exportar ficheiros de uma tradução, fazer alterações e importá-los novamente. Isso permite trabalhar off-line e depois mesclar mudanças de volta na tradução existente. Isso funciona mesmo que tenha sido alterado entretanto.

Nota

As opções disponíveis podem ser limitadas por configurações de controle de acesso.

Descarregar traduções

A partir do painel do projeto ou componente, ficheiros traduzíveis podem ser descarregados no menu Ficheiros.

A primeira opção é descarregar o ficheiro no formato original, uma vez que ele é armazenado no repositório. Neste caso, quaisquer alterações pendentes na tradução estão a ser comprometidas e o ficheiro atualizado é produzido sem nenhuma conversão.

Pode também descarregar a tradução convertida num dos formatos de localização amplamente utilizados. Os ficheiros convertidos serão enriquecidos com dados fornecidos no Weblate, como contexto adicional, comentários ou marcadores. Vários formatos de ficheiro estão disponíveis através do menu FicheirosPersonalizar a descarrega:

  • gettext PO

  • XLIFF com extensões gettext

  • XLIFF 1.1

  • TermBase eXchange

  • Translation Memory eXchange

  • gettext MO (disponível apenas quando a tradução está usando gettext PO)

  • CSV

  • Excel Open XML

  • JSON (disponível apenas para traduções monolíngues)

  • Recurso de textos de Android (disponível apenas para traduções monolíngues)

  • Textos do iOS (disponível apenas para traduções monolíngues)

Dica

O conteúdo disponível nos ficheiros convertidos difere com base nos recursos de formato de arquivo, pode encontrar uma visão geral em Capacidades dos tipos de tradução.

_images/file-download.png

Enviar traduções

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

_images/file-upload.png

Formatos de ficheiros suportados

Todos ficheiros num formato de ficheiro suportado pode ser enviado, mas ainda é recomendado usar o mesmo formato de ficheiro como o para a tradução, caso contrário, alguns recursos podem não ser traduzidos corretamente.

O ficheiro enviado é mesclado para atualizar a tradução, substituindo as entradas existentes por predefinição (pode ser desativado ou ativado na caixa de diálogo de envio).

Métodos de importação

Estas são as opções apresentadas ao enviar ficheiros de tradução:

Adicionar como tradução (translate)

Traduções importadas são adicionadas como traduções. Este é o caso de uso mais comum e o comportamento predefinido.

Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.

Adicionar como sugestão (suggest)

As traduções importadas são adicionadas como sugestões, faça isso quando quiser ter as suas cadeias enviadas serem revisadas.

Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.

Adicionar como tradução que necessita de edição («fuzzy»)

As traduções importadas são adicionadas como traduções que necessitam de edição. Isso pode ser útil quando quer que as traduções sejam usadas, mas também revisadas.

Apenas traduções são usadas do ficheiro carregado e nenhum conteúdo adicional.

Substituir ficheiro de tradução existente («replace»)

O ficheiro existente é substituído por novo conteúdo. Isso pode levar à perda de traduções existentes, use com cuidado.

Atualizar cadeias fonte («source»)

Atualiza cadeias fonte em ficheiro de tradução bilíngue. Isso é semelhante ao que Atualizar ficheiros PO para coincidir com POT (msgmerge) faz.

Esta opção é suportada apenas para alguns formatos de ficheiro.

Adicionar cadeias (add)

Adiciona cadeias à tradução. Pula a que já existe.

Caso queira adicionar cadeias e atualizar traduções existentes, envie do ficheiro pela segunda vez com Adicionar como tradução.

Esta opção está disponível apenas com Gerir cadeias ativado.

Apenas fonte, tradução e chave (contexto) são usados do ficheiro enviado.

Gestão de conflitos

Define como lidar com cadeias enviadas que já são traduzidas.

Cadeias necessitando de edição

Há também uma opção de como lidar com cadeias que necessitam de edição no ficheiro importado. Tais cadeias podem ser manuseados de uma das três maneiras seguintes: «Não importar», «Importar como cadeia que necessita edição» ou «Importar como traduzido».

Substituindo autoria

Com permissões administrativas, também pode especificar a autoria do ficheiro enviado. Isso pode ser útil no caso de ter recebido o ficheiro de outra maneira e quiser mesclá-lo em traduções existentes enquanto credita corretamente o autor real.

Glossário

Cada projeto pode incluir um ou mais glossários como um atalho para armazenar terminologia. O glossário facilita a manutenção da consistência da tradução.

Um glossário para cada idioma pode ser gerido sozinho, mas eles são armazenados juntos como um único componente que ajuda os administradores de projeto e tradutores multilingues a manter alguma consistência entre os idiomas também. Os termos do glossário que contêm palavras da cadeia atualmente traduzida são exibidos na barra lateral do editor de tradução.

Gestão de glossários

Alterado na versão 4.5: Glossários são agora componentes de tradução comuns e pode usar todos os recursos da Weblate neles — a comentar, a armazenar num repositório remoto ou a adicionar explicações.

Use qualquer componente como um glossário a ligar Usar como um glossário. Pode criar vários glossários para um projeto.

Um glossário vazio para um determinado projeto é criado automaticamente com o projeto. Os glossários são compartilhados entre todos os componentes de um mesmo projeto e opcionalmente com outros projetos a utilizar Compartilhar em projetos do respectivo componente do glossário.

O componente do glossário se parece com qualquer outro componente da Weblate com etiqueta colorida adicionada:

_images/glossary-component.png

Pode navegar por todos os termos do glossário:

_images/glossary-browse.png

ou edite-os como qualquer tradução.

Termos de glossário

Os termos de glossário são traduzidos da mesma forma que as cadeias comuns. Pode alternar recursos adicionais a utilizar o menu Ferramenta para cada termo.

_images/glossary-tools.png

Untranslatable terms

Novo na versão 4.5.

Sinalizar certas traduções de termos do glossário como read-only editando em massa, digitando o marcador ou usando FerramentasMarcar 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 FerramentasMarcar 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 FerramentasMarcar 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 cadeias. Todas as variantes do termo são listadas no glossário lateral ao traduzir.

Dica

Pode usar isso para adicionar abreviações ou expressões mais curtas para um termo.

Veja também

Variantes de cadeias

Verificações e correções

As verificações de qualidade ajudam a apanhar erros comuns do tradutor, garantindo que a tradução esteja em boa forma. As verificações podem ser ignoradas em caso de falsos positivos.

Quando enviar uma tradução com uma verificação a falhar será imediatamente mostrada ao utilizador:

_images/checks.png

Correções automáticas

Além de Verificações de qualidade, o Weblate pode corrigir automaticamente alguns erros comuns em cadeias traduzidas. Use-o com cuidado para não causar erros por meio disto.

Veja também

AUTOFIX_LIST

Verificações de qualidade

O Weblate emprega uma ampla gama de verificações de qualidade em cadeias. A secção a seguir descreve todos eles em mais detalhe. Há também verificações específicas de idiomas. Por favor, preencha um relatório de erro se alguma verificação for relatada por engano.

Verificações de tradução

Executado a cada alteração da tradução, ajuda os tradutores a manter traduções de boa qualidade.

Markup BBcode

Summary

O BBcode na tradução não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.markup.BBCodeCheck

Flag to ignore

ignore-bbcode

BBCode representa marcação simples, como, por exemplo, destacar partes importantes de uma mensagem em fonte em negrito ou itálico.

Esta verificação garante que eles também estejam na tradução.

Nota

O método para detetar BBcode é atualmente bastante simples, então esta verificação pode produzir falsos positivos.

Palavras consecutivas duplicadas

Novo na versão 4.1.

Summary

O texto contém a mesma palavra duas vezes seguidas:

Âmbito

translated strings

Check class

weblate.checks.duplicate.DuplicateCheck

Flag to ignore

ignore-duplicate

Verifica se não há palavras duplicadas consecutivas numa tradução. Isso geralmente indica um erro na tradução.

Dica

Esta verificação inclui regras específicas do idioma para evitar falsos positivos. Caso seja falso no seu caso, avise-nos. Veja Relatando problemas no Weblate.

Não segue o glossário

Novo na versão 4.5.

Summary

A tradução não segue os termos definidos num glossário.

Âmbito

translated strings

Check class

weblate.checks.glossary.GlossaryCheck

Sinalize para ativar

check-glossary

Flag to ignore

ignore-check-glossary

Esta verificação tem de ser ligada a usar o sinalizador check-glossary (veja Personalizando comportamento a usar marcadores). Por favor, considere seguir antes de ativá-lo:

  • Ele faz a correspondência exata das cadeias, espera-se que o glossário contenha termos em todas as variantes.

  • A verificação de cada cadeia em relação ao glossário é dispendiosa, ela irá retardar qualquer operação na Weblate que envolva a execução de verificações como a importação de textos ou a tradução.

Espaço duplo

Summary

A tradução contém espaço duplo

Âmbito

translated strings

Check class

weblate.checks.chars.DoubleSpaceCheck

Flag to ignore

ignore-double-space

Verifica se espaços duplos estão presentes na tradução para evitar falsos positivos em outras verificações relacionadas ao espaço.

A verificação é falsa quando espaços duplos são encontrados na fonte, o que significa que os espaços duplos são intencionais.

Cadeias formatadas

Verifica se a formatação em cadeias é replicada entre a fonte e a tradução. Omitir cadeias de formato na tradução geralmente causa problemas graves, de modo que a formatação em cadeias geralmente deve coincidir com a fonte.

O Weblate tem suporte a verificar cadeias de formato em vários idiomas. A verificação não é ativada automaticamente, somente se uma cadeia for sinalizada adequadamente (por exemplo, «c-format” para formato C). O Gettext adiciona-o automaticamente, mas provavelmente terá que adicioná-lo manualmente para outros formatos de ficheiro ou se os seus ficheiros PO não forem gerados por xgettext.

Isso pode ser feito por unidade (ver Informações adicionais sobre cadeias fonte) na Configuração de componente. Tê-lo definido por componente é mais simples, mas pode levar a falsos positivos no caso de a cadeia não ser interpretada como uma cadeia de formatação, mas a sintaxe de textos de formato passa a ser usada.

Dica

Caso a verificação de formato específico não esteja disponível no Weblate, pode usar Espaços reservados genéricos.

Além de verificar, isso também destacará as cadeias de formatação para inseri-los facilmente em cadeias traduzidas:

_images/format-highlight.png
Cadeia de interpolação AngularJS
Summary

As cadeias de interpolação AngularJS não correspondem à fonte

Âmbito

translated strings

Check class

weblate.checks.angularjs.AngularJSInterpolationCheck

Sinalize para ativar

angularjs-format

Flag to ignore

ignore-angularjs-format

Named format string example

O seu saldo é {{amount}} {{ currency }}

Formato C
Summary

O formato C da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.CFormatCheck

Sinalize para ativar

c-format

Flag to ignore

ignore-c-format

Simple format string example

%d maçãs

Position format string example

O seu saldo é %1$d %2$s

Formato C#
Summary

O formato C# da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.CSharpFormatCheck

Sinalize para ativar

c-sharp-format

Flag to ignore

ignore-c-sharp-format

Position format string example

{0} maçãs

Literais de modelo de ECMAScript
Summary

As literais de modelo ECMAScript não correspondem com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.ESTemplateLiteralsCheck

Sinalize para ativar

es-format

Flag to ignore

ignore-es-format

Interpolation example

${number} maçãs

Interpolação de i18next

Novo na versão 4.0.

Summary

A interpolação de i18next não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.I18NextInterpolationCheck

Sinalize para ativar

i18next-interpolation

Flag to ignore

ignore-i18next-interpolation

Interpolation example

{{number}} maçãs

Nesting example

$t(number) maçãs

Formato Java
Summary

O formato Java da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.JavaFormatCheck

Sinalize para ativar

java-format

Flag to ignore

ignore-java-format

Simple format string example

%d maçãs

Position format string example

O seu saldo é %1$d %2$s

Formato de Mensagem Java
Summary

O MessageFormat Java da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.JavaMessageFormatCheck

Flag to enable uncodintionally

java-messageformat

Flag to enable autodetection

auto-java-messageformat enables check only if there is a format string in the source

Flag to ignore

ignore-java-messageformat

Position format string example

{0} maçãs

Formato JavaScript
Summary

O formato JavaScript da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.JavaScriptFormatCheck

Sinalize para ativar

javascript-format

Flag to ignore

ignore-javascript-format

Simple format string example

%d maçãs

Formato Lua
Summary

O formato de cadeia Lua não corresponde com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.LuaFormatCheck

Sinalize para ativar

lua-format

Flag to ignore

ignore-lua-format

Simple format string example

%d maçãs

Formato Object Pascal
Summary

O formato Object Pascal da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.ObjectPascalFormatCheck

Sinalize para ativar

object-pascal-format

Flag to ignore

ignore-object-pascal-format

Simple format string example

%d maçãs

Espaços reservados de percentagem

Novo na versão 4.0.

Summary

Os símbolos de percentagem não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.PercentPlaceholdersCheck

Sinalize para ativar

percent-placeholders

Flag to ignore

ignore-percent-placeholders

Simple format string example

%number% maçãs

Veja também

Cadeias formatadas,

Formato Perl
Summary

O formato Perl da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.PerlFormatCheck

Sinalize para ativar

perl-format

Flag to ignore

ignore-perl-format

Simple format string example

%d maçãs

Position format string example

O seu saldo é %1$d %2$s

Formato PHP
Summary

O formato PHP da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.PHPFormatCheck

Sinalize para ativar

php-format

Flag to ignore

ignore-php-format

Simple format string example

%d maçãs

Position format string example

O seu saldo é %1$d %2$s

Formato de chaveta Python
Summary

O formato de chaveta Python da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.PythonBraceFormatCheck

Sinalize para ativar

python-brace-format

Flag to ignore

ignore-python-brace-format

Cadeia de formato simples

{} maçãs

Named format string example

O seu saldo é {amount} {currency}

Formato Python
Summary

O formato Python da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.PythonFormatCheck

Sinalize para ativar

python-format

Flag to ignore

ignore-python-format

Cadeia de formato simples

%d maçãs

Named format string example

Your balance is %(amount)d %(currency)s

Formato Qt
Summary

O formato Qt da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.qt.QtFormatCheck

Sinalize para ativar

qt-format

Flag to ignore

ignore-qt-format

Position format string example

%1 maçãs

Forma plural Qt
Summary

O formato plural Qt da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.qt.QtPluralCheck

Sinalize para ativar

qt-plural-format

Flag to ignore

ignore-qt-plural-format

Plural format string example

%Ln maçã(s)

Formato Ruby
Summary

O formato Ruby da cadeia não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.ruby.RubyFormatCheck

Sinalize para ativar

ruby-format

Flag to ignore

ignore-ruby-format

Simple format string example

%d maçãs

Position format string example

O seu saldo é %1$f %2$s

Named format string example

O seu saldo é %+.2<amount>f %<currency>s

Cadeia de modelo nomeado

O seu saldo é %{amount} %{currency}

Formato Scheme
Summary

O formato de cadeia Scheme não corresponde com a fonte

Âmbito

translated strings

Check class

weblate.checks.format.SchemeFormatCheck

Sinalize para ativar

scheme-format

Flag to ignore

ignore-scheme-format

Simple format string example

~d maçãs

Formatação vue I18n
Summary

A formatação vue I18n não corresponde à fonte

Âmbito

translated strings

Check class

weblate.checks.format.VueFormattingCheck

Sinalize para ativar

vue-format

Flag to ignore

ignore-vue-format

Formatação nomeada

{count} maçãs

Formatação i18n de Rails

%{count} maçãs

Mensagens de localidade vinculadas

@:message.dio @:message.the_world!

Foi traduzido

Summary

Esta cadeia foi traduzida anteriormente

Âmbito

all strings

Check class

weblate.checks.consistency.TranslatedCheck

Flag to ignore

ignore-translated

Significa que uma cadeia já foi traduzida. Isso pode acontecer quando as traduções foram revertidas no VCS ou perdidas de outra forma.

Inconsistente

Summary

Esta cadeia tem mais de uma tradução neste projeto ou não está traduzida em alguns componentes.

Âmbito

all strings

Check class

weblate.checks.consistency.ConsistencyCheck

Flag to ignore

ignore-inconsistent

O Weblate verifica traduções da mesma cadeia em todas as traduções de um projeto para ajudar a manter traduções consistentes.

A verificação falha em traduções diferentes de uma cadeia dentro de um projeto. Isso também pode levar a inconsistências nas verificações exibidas. Pode encontrar outras traduções desta cadeia na guia Outras ocorrências.

Dica

For performance reasons, the check might not find all inconsistencies, it limits number of matches.

Nota

Esta verificação também é disparada no caso de a cadeia estar traduzida num componente e não em outro. Ela pode ser usada como uma maneira rápida de manusear manualmente cadeias que não estão traduzidas em alguns componentes apenas clicando no botão Usar esta tradução exibido em cada linha na guia Outras ocorrências.

Pode usar Tradução automática para automatizar a tradução de cadeias recém-adicionadas que já são traduzidas em outro componente.

Letra Kashida utilizada

Novo na versão 3.5.

Summary

As letras decorativas kashida não deverão ser utilizadas

Âmbito

translated strings

Check class

weblate.checks.chars.KashidaCheck

Flag to ignore

ignore-kashida

As letras Kashida decorativas não devem ser usadas na tradução. Estas também são conhecidas como Tatweel.

Veja também

Kashida na Wikipédia

Referências de Markdown

Novo na versão 3.5.

Summary

As referências de hiperligação de marcação não correspondem à fonte

Âmbito

translated strings

Check class

weblate.checks.markup.MarkdownRefLinkCheck

Sinalize para ativar

md-text

Flag to ignore

ignore-md-reflink

As referências de ligação Markdown não correspondem à fonte.

Veja também

Ligações Markdown

Sintaxe de Markdown

Novo na versão 3.5.

Summary

A sintaxe de Markdown não coincide com a fonte

Âmbito

translated strings

Check class

weblate.checks.markup.MarkdownSyntaxCheck

Sinalize para ativar

md-text

Flag to ignore

ignore-md-syntax

A sintaxe de Markdown não coincide com a fonte

Tamanho máximo da tradução

Summary

A tradução não deve exceder o tamanho dado

Âmbito

translated strings

Check class

weblate.checks.chars.MaxLengthCheck

Sinalize para ativar

max-length

Flag to ignore

ignore-max-length

Verifica se as traduções são de comprimento aceitável para caber no espaço disponível. Isto apenas verifica o comprimento dos caracteres de tradução.

Ao contrário das outras verificações, o sinalizador deve ser definido como um par «chave:valor», como max-length:100.

Dica

Esta verificação analisa a quntidade de carácteres, o que pode não ser a melhor métrica ao utilizar fontes proporcionais para renderizar o texto. A verificação Tamanho máximo da tradução verifica a renderização real do texto.

O sinalizador replacements: também pode ser útil para expandir os objetos colocáveis antes de verificar a cadeia.

Tamanho máximo da tradução

Summary

A tradução não deve exceder o tamanho dado

Âmbito

translated strings

Check class

weblate.checks.render.MaxSizeCheck

Sinalize para ativar

max-size

Flag to ignore

ignore-max-size

Novo na versão 3.7.

O texto traduzido não deve exceder o tamanho determinado. Ele renderiza o texto com quebra de linhas e verifica se ele se encaixa nos limites determinados.

Esta verificação necessita de um ou dois parâmetros - largura máxima e quantidade máximo de linhas. Caso a quantidade de linhas não seja fornecida, um texto de uma linha é considerado .

Também pode configurar a fonte utilizada pelas diretivas font-* (veja Personalizando comportamento a usar marcadores), por exemplo, após os marcadores de tradução dizer que o texto renderizado com fonte ubuntu tamanho 22 deve caber em duas linhas e 500 pixels:

max-size:500:2, font-family:ubuntu, font-size:22

Dica

Queria definir as diretivas font-* na Configuração de componente para ter a mesma fonte configurada para todas as cadeias dentro de um componente. Pode sobrescrever esses valores por cadeia, caso precise personalizá-la por cadeia.

O sinalizador replacements: também pode ser útil para expandir os objetos colocáveis antes de verificar a cadeia.

\n não correspondente

Summary

Number of \n in translation does not match source

Âmbito

translated strings

Check class

weblate.checks.chars.EscapedNewlineCountingCheck

Flag to ignore

ignore-escaped-newline

Normalmente as novas linhas escapadas são importantes para a formatação da saída do programa. A verificação falha se a quantidade de literais \n na tradução não corresponder à fonte.

Dois pontos não correspondentes

Summary

A fonte e a tradução não terminam ambas com uma vírgula

Âmbito

translated strings

Check class

weblate.checks.chars.EndColonCheck

Flag to ignore

ignore-end-colon

Verifica se os dois pontos são replicados entre a fonte e a tradução. A presença de dois pontos também é verificada para vários idiomas onde eles não pertencem (chinês ou japonês).

Reticências não correspondentes

Summary

A fonte e a tradução não terminam ambas com reticências

Âmbito

translated strings

Check class

weblate.checks.chars.EndEllipsisCheck

Flag to ignore

ignore-end-ellipsis

Verifica se as reticências ao final são replicadas entre a fonte e a tradução. Isto só verifica se há reticências reais () e não três pontos (...).

Uma reticência é normalmente mais agradável do que três pontos na impressão e soa melhor com o texto para a fala.

Ponto de exclamação não correspondente

Summary

A fonte e a tradução não terminam ambas com um ponto de exclamação

Âmbito

translated strings

Check class

weblate.checks.chars.EndExclamationCheck

Flag to ignore

ignore-end-exclamation

Verifica se as exclamações são replicadas entre a fonte e a tradução. A presença de pontos de exclamação também é verificada para vários idiomas onde eles não pertencem (chinês, japonês, coreano, armênio, limbu, mianmar ou Nko).

Ponto final não correspondente

Summary

A fonte e a tradução não terminam ambas com ponto

Âmbito

translated strings

Check class

weblate.checks.chars.EndStopCheck

Flag to ignore

ignore-end-stop

Verifica se os pontos finais são replicados entre a fonte e a tradução. A presença de pontos finais é verificada para vários idiomas onde eles não pertencem (chinês, japonês, devanágari ou urdu).

Ponto de interrogação não correspondente

Summary

A fonte e a tradução não terminam ambas com um ponto de interrogação

Âmbito

translated strings

Check class

weblate.checks.chars.EndQuestionCheck

Flag to ignore

ignore-end-question

Verifica se os pontos de interrogação são replicados entre a fonte e a tradução. A presença de pontos de interrogação também é verificada para vários idiomas onde eles não pertencem (armênio, árabe, chinês, coreano, japonês, etíope, vai ou copta).

Ponto e vírgula não correspondente

Summary

A fonte e a tradução não terminam ambas com ponto e vírgula

Âmbito

translated strings

Check class

weblate.checks.chars.EndSemicolonCheck

Flag to ignore

ignore-end-semicolon

Verifica se os caracteres de ponto e vírgula no final das frases são replicados entre a fonte e a tradução. Isto pode ser útil para manter a formatação das entradas, como ficheiros de desktop.

Quebras de linha não coincidentes

Summary

A quantidade de novas linhas na tradução não corresponde ao da fonte

Âmbito

translated strings

Check class

weblate.checks.chars.NewLineCountCheck

Flag to ignore

ignore-newline-count

Geralmente, as novas linhas são importantes para formatar a saída do programa. A verificação falha se a quantidade de literais \n na tradução não corresponder à fonte.

Faltam plurais

Summary

Alguns plurais não estão traduzidos

Âmbito

translated strings

Check class

weblate.checks.consistency.PluralsCheck

Flag to ignore

ignore-plurals

Verifica se todas as formas plurais de uma cadeia fonte foram traduzidas. Especificações sobre como cada forma plural é usada encontram-se na definição da cadeia.

O não preenchimento correto das formas de plural vai levar, em alguns casos, a exibir nada quando a forma do plural está em uso.

Espaços reservados

Novo na versão 3.9.

Summary

Faltam alguns espaços reservados na tradução

Âmbito

translated strings

Check class

weblate.checks.placeholders.PlaceholderCheck

Sinalize para ativar

placeholders

Flag to ignore

ignore-placeholders

Alterado na versão 4.3: Pode usar expressões regulares como espaço reservado.

A tradução não contém alguns espaços reservados. Estes são extraídos do ficheiro de tradução ou definidos manualmente a usar o sinalizador placeholders, outros podem ser separados com ponto e vírgula, cadeias com o espaço podem ser postos entre aspas:

placeholders:$URL$:$TARGET$:"some long text"

Caso tenha alguma sintaxe para os espaços reservados, pode usar uma expressão regular:

placeholders:r"%[^% ]%"

Espaçamento da pontuação

Novo na versão 3.9.

Summary

Falta de espaço não quebrável antes do sinal de pontuação duplo

Âmbito

translated strings

Check class

weblate.checks.chars.PunctuationSpacingCheck

Flag to ignore

ignore-punctuation-spacing

Verifica se há espaço rígido antes do sinal de pontuação dupla (ponto de exclamação, ponto de interrogação, ponto e vírgula e dois pontos). Esta regra é usada apenas em alguns idiomas selecionados, como o francês ou o bretão, onde o espaço antes do sinal de pontuação dupla é uma regra tipográfica.

Expressão regular

Novo na versão 3.9.

Summary

A tradução não corresponde à expressão regular:

Âmbito

translated strings

Check class

weblate.checks.placeholders.RegexCheck

Sinalize para ativar

regex

Flag to ignore

ignore-regex

A tradução não corresponde à expressão regular. A expressão é extraída do ficheiro de tradução ou definida manualmente a usar o sinalizador regex:

regex:^foo|bar$

Mesmos plurais

Summary

Alguns plurais estão traduzidos da mesma maneira

Âmbito

translated strings

Check class

weblate.checks.consistency.SamePluralsCheck

Flag to ignore

ignore-same-plurals

Verifica que falha se algumas formas de plural estiverem duplicadas na tradução. Na maioria dos idiomas, elas têm que ser diferentes.

Nova linha no início

Summary

A fonte e a tradução não iniciam ambas com uma nova linha

Âmbito

translated strings

Check class

weblate.checks.chars.BeginNewlineCheck

Flag to ignore

ignore-begin-newline

As novas linhas costumam aparecer nas cadeias fonte por uma boa razão, de forma que omissões ou adições podem levar a problemas de formatação quando o texto traduzido é posto em uso.

Veja também

Nova linha no final

Espaços no início

Summary

A fonte e a tradução não iniciam ambas com a mesma quantidade de espaços

Âmbito

translated strings

Check class

weblate.checks.chars.BeginSpaceCheck

Flag to ignore

ignore-begin-space

Um espaço no início de uma cadeia é normalmente usado para recuo na interface, portanto, importante manter.

Nova linha no final

Summary

A fonte e a tradução não terminam ambas com uma nova linha

Âmbito

translated strings

Check class

weblate.checks.chars.EndNewlineCheck

Flag to ignore

ignore-end-newline

As novas linhas costumam aparecer nas cadeias fonte por uma boa razão, de forma que omissões ou adições podem levar a problemas de formatação quando o texto traduzido é posto em uso.

Veja também

Nova linha no início

Espaço no final

Summary

A fonte e a tradução não terminam ambas com um espaço

Âmbito

translated strings

Check class

weblate.checks.chars.EndSpaceCheck

Flag to ignore

ignore-end-space

Verifica se os espaços no final são replicados entre a fonte e a tradução.

O espaço ao final é normalmente utilizado para espaçar os elementos vizinhos, de forma que a sua remoção pode quebrar a disposição.

Tradução inalterada

Summary

Fonte e tradução são iguais

Âmbito

translated strings

Check class

weblate.checks.same.SameCheck

Flag to ignore

ignore-same

Acontece se as cadeias fonte e a tradução correspondente forem idênticos, até pelo menos uma das formas de plural. Algumas cadeias normalmente encontrados em todos os idiomas são ignorados e várias marcações são ignoradas. Isto reduz a quantidade de falsos positivos.

Esta verificação pode ajudar a encontrar cadeias erroneamente não traduzidos.

O comportamento padrão desta verificação é excluir palavras da lista negra embutida da verificação. Estas são palavras que frequentemente não estão a ser traduzidas. Isto é útil para evitar falsos positivos em cadeias curtas, que consistem apenas numa única palavra que é a mesma em vários idiomas. Esta lista negra pode ser desativada a adicionar strict-same à cadeia ou componente.

HTML inseguro

Novo na versão 3.9.

Summary

A tradução usa marcação HTML insegura

Âmbito

translated strings

Check class

weblate.checks.markup.SafeHTMLCheck

Sinalize para ativar

safe-html

Flag to ignore

ignore-safe-html

A tradução utiliza uma marcação HTML insegura. Esta verificação tem que ser ativada a utilizar o sinalizador safe-html (veja Personalizando comportamento a usar marcadores). Há também o autocorretor acompanhado que pode automaticamente corrigir a marcação.

Veja também

A verificação HTML é feita pela biblioteca Bleach desenvolvida pela Mozilla.

URL

Novo na versão 3.5.

Summary

A tradução não contém um URL

Âmbito

translated strings

Check class

weblate.checks.markup.URLCheck

Sinalize para ativar

url

Flag to ignore

ignore-url

A tradução não contém uma URL. Isso só é acionado caso a unidade esteja marcada como a conter uma URL. Nesse caso, a tradução tem de ser uma URL válido.

Markup XML

Summary

Etiquetas XML na tradução não coincidem com a fonte

Âmbito

translated strings

Check class

weblate.checks.markup.XMLTagsCheck

Flag to ignore

ignore-xml-tags

Isso geralmente significa que a saída resultante terá uma aparência diferente. Na maioria dos casos, este não é o resultado desejado de alterar a tradução, mas ocasionalmente é.

Verifica se as tags XML são replicadas entre a fonte e a tradução.

Nota

This check is disabled by the safe-html flag as the HTML cleanup done by it can produce HTML markup which is not valid XML.

Sintaxe XML

Novo na versão 2.8.

Summary

A tradução não é XML válido

Âmbito

translated strings

Check class

weblate.checks.markup.XMLValidityCheck

Flag to ignore

ignore-xml-invalid

A marcação XML não é válida.

Nota

This check is disabled by the safe-html flag as the HTML cleanup done by it can produce HTML markup which is not valid XML.

Espaçamento nulo

Summary

A tradução contém carateres extra de espaço nulo

Âmbito

translated strings

Check class

weblate.checks.chars.ZeroWidthSpaceCheck

Flag to ignore

ignore-zero-width-space

Os caracteres de largura zero (<U+200B>) são usados para quebrar mensagens dentro das palavras (word wrapping).

Como geralmente são inseridas por engano, esta verificação é acionada uma vez que estão presentes na tradução. Alguns programas podem ter problemas quando este caractere é usado.

Verificações de texto fonte

Estas verificações podem ajudar os programadores a melhorar a qualidade das cadeias fonte.

Reticências

Summary

A cadeia utiliza três pontos (…) em vez do carácter de reticências (…)

Âmbito

entradas fonte

Check class

weblate.checks.source.EllipsisCheck

Flag to ignore

ignore-ellipsis

Isto falha quando a cadeia usa três pontos (...) quando deveria usar um caractere de reticências ().

O uso do caractere Unicode é, na maioria dos casos, a melhor abordagem e parece melhor renderizado e pode soar melhor com texto para fala (text-to-speech).

Não traduzido há muito tempo

Novo na versão 4.1.

Summary

A cadeia não foi traduzida há muito tempo

Âmbito

entradas fonte

Check class

weblate.checks.source.LongUntranslatedCheck

Flag to ignore

ignore-long-untranslated

Quando a cadeia não é traduzida há muito tempo, pode indicar um problema numa cadeia fonte, a dificultar a tradução.

Várias verificações falhadas

Summary

As traduções em várias línguas têm verificações falhadas

Âmbito

entradas fonte

Check class

weblate.checks.source.MultipleFailingCheck

Flag to ignore

ignore-multiple-failures

Várias traduções desta cadeia têm falhas nas verificações de qualidade. Isto é normalmente uma indicação de que algo poderia ser feito para melhorar a cadeia fonte.

Esta falha na verificação pode muitas vezes ser causada por um ponto final de uma frase, ou por questões menores similares que os tradutores tendem a corrigir na tradução, enquanto seria melhor corrigi-la na cadeia fonte.

Várias variáveis sem nome

Novo na versão 4.1.

Summary

Há várias variáveis sem nome na cadeia, o que faz impossível aos tradutores reordená-las

Âmbito

entradas fonte

Check class

weblate.checks.format.MultipleUnnamedFormatsCheck

Flag to ignore

ignore-unnamed-format

Há várias variáveis sem nome na cadeia, o que impossibilita aos tradutores reordená-las.

Considere usar variáveis nomeadas para permitir que os tradutores as reordenem.

Não pluralizado

Summary

A cadeia é utilizada como plural, mas não tem plural

Âmbito

entradas fonte

Check class

weblate.checks.source.OptionalPluralCheck

Flag to ignore

ignore-optional-plural

A cadeia é usado como um plural, mas não usa formas de plural. Caso o seu sistema de tradução tenha suporte a isso, deve usar a variante que reconheça o plural.

Por exemplo, com o Gettext em Python poderia ser:

from gettext import ngettext

print ngettext("Selected %d file", "Selected %d files", files) % files

Pesquisando

Novo na versão 3.9.

Consultas avançadas a usar operações booleanas, parênteses ou pesquisas específicas de campo podem ser usadas para encontrar as cadeias que deseja.

Quando nenhum campo é definido, a pesquisa acontece nos campos Fonte, Tradução e Contexto.

_images/search.png

Campos

source:TEXTO

Pesquisa na cadeia fonte sem diferenciar maiúscula de minúscula.

target:TEXTO

Pesquisa na cadeia de destino sem diferenciar maiúscula de minúscula.

context:TEXTO

Pesquisa na cadeia de contexto sem diferenciar maiúscula de minúscula.

key:TEXTO

Pesquisa na cadeia chave sem diferenciar maiúscula de minúscula.

note:TEXTO

Pesquisa na cadeia de comentário sem diferenciar maiúscula de minúscula.

location:TEXTO

Pesquisa na cadeia de localização sem diferenciar maiúscula de minúscula.

priority:NÚMERO

Prioridade da cadeia.

added:DATA E HORA

Data e hora de quando a cadeia foi adicionada ao Weblate.

state:TEXTO

Pesquisa de estado (approved, translated, needs-editing, empty, read-only), suporta Operações de campo.

pending:BOOLEANO

Cadeia pendente para descarga para o VCS.

has:TEXTO

Pesquisa por texto com atributos - plural, context, suggestion, comment, check, dismissed-check, translation, variant, screenshot, flags, explanation, glossary, note.

is:TEXTO

Pesquisa por estados de cadeia (pending, translated, untranslated).

language:TEXTO

Idioma de destino da cadeia.

component:TEXTO

URL amigável de componente ou pesquisa que não diferencia maiúsculas de minúsculas, veja URL amigável do componente e Nome do componente.

project:TEXTO

Slug do projeto, veja URL amigável.

changed_by:TEXTO

A cadeia foi alterada pelo autor com o nome de utilizador fornecido.

changed:DATA E HORA

O conteúdo da cadeia foi alterado na data, suporta operadores de pesquisa.

change_time:DATA E HORA

A cadeia foi alterada na data, suporta Operações de campo; ao contrário de changed, isso inclui eventos que não alteram o conteúdo e pode aplicar uma filtragem de ação personalizada a utilizar change_action.

change_action:TEXTO

Filtros em ação de alteração, útil juntamente com change_time. Aceita o nome em inglês da ação de alteração, seja entre aspas e com espaços ou letras minúsculas e espaços substituídos por um hífen. Veja Pesquisando por alterações para exemplos.

check:TEXTO

A cadeia tem verificação com falha.

dismissed_check:TEXTO

A cadeia tem verificação dispensada.

comment:TEXTO

Pesquisa nos comentários de utilizadores.

comment_author:TEXTO

Filtra por autor do comentário.

suggestion:TEXTO

Pesquisa nas sugestões.

suggestion_author:TEXTO

Filtra por autor da sugestão.

explanation:TEXTO

Pesquisa em explicações.

Operadores booleanos

Pode combinar pesquisas a usar AND, OR, NOT e parênteses para formar consultas complexas. Por exemplo: state:translated AND (source:hello OR source:bar)

Operações de campo

Pode especificar operadores, intervalos ou pesquisas parciais para pesquisas de data ou numéricas:

state:>=translated

Estado é translated ou melhor (approved).

changed:2019

Alterado no ano de 2019.

changed:[2019-03-01 to 2019-04-01]

Alterado entre as duas datas dadas.

Operadores exatos

Pode fazer uma consulta de correspondência exata em diferentes campos de texto a usar o operador =. Por exemplo, para procurar por todas as cadeias fonte que correspondem exatamente a hello world, use: source:="hello world". Para pesquisar por expressões de uma única palavra, não precisa de aspas. Por exemplo, para procurar por todos as cadeias fonte que correspondam a hello, pode utilizar: source:=hello.

Pesquisando por alterações

Novo na versão 4.4.

A pesquisa por eventos do histórico pode ser feita a utilizar os operadores change_action e change_time.

Por exemplo, uma pesquisa por cadeias marcadas para edição em 2018 pode ser inserida como change_time:2018 AND change_action:marked-for-edit ou change_time:2018 AND change_action:"Marked for edit".

Expressões regulares

Em qualquer lugar que o texto seja aceito, também pode especificar uma expressão regular como r "regexp".

Por exemplo, para pesquisar por todas as cadeias que contenham qualquer dígito entre 2 e 5, utilize source:r"[2-5]".

Consultas predefinidas

Pode selecionar entre as consultas predefinidas na página de pesquisa, o que lhe permite acessar rapidamente as pesquisas mais frequentes:

_images/query-dropdown.png

Ordenando os resultados

Há muitas opções para ordenar as cadeias conforme as suas necessidades:

_images/query-sort.png

Fluxos de trabalho de tradução

Usar o Weblate é um processo que lhe aproxima os seus utilizadores, a aproximar-o dos seus tradutores. Depende de decidir quantos recursos deseja usar.

A lista a seguir não é uma lista completa de maneiras de configurar o Weblate. Pode basear outros fluxos de trabalho nos exemplos mais usuais listados aqui.

Acesso à tradução

O controle de acesso não é discutido em detalhe como um todo nos fluxos de trabalho, pois a maioria das opções dele pode ser aplicada a qualquer fluxo de trabalho. Consulte a respectiva documentação sobre como gerir o acesso às traduções.

Nos capítulos a seguir, qualquer utilizador significa um utilizador que tenha acesso à tradução. Pode ser qualquer utilizador autenticado se o projeto for público ou um utilizador que tenha uma permissão Traduzir para o projeto.

Estados de tradução

Cada cadeia traduzida pode estar num dos seguintes estados:

Não traduzido

A tradução está vazia, pode ou não estar armazenada no ficheiro, dependendo do formato do ficheiro.

Precisa de edição

A tradução precisa ser editada, isso geralmente é o resultado de uma alteração de cadeias fonte, correspondência aproximada ou ação de um tradutor. A tradução está armazenada no ficheiro, a depender do formato do ficheiro que pode ser marcado como necessidade de edição (por exemplo, da mesma forma que receberia uma sinalização fuzzy no ficheiro de Gettext).

A aguardar por revisão

A tradução está feita, mas não revisada. É armazenada no ficheiro como uma tradução válida.

Aprovadas

A tradução foi aprovada na revisão. Já não pode ser alterada por tradutores, mas apenas por revisores. Tradutores só podem adicioná-las sugestões.

Sugestões

As sugestões estão armazenadas apenas no Weblate e não no ficheiro de tradução.

Os estados são representados nos ficheiros de tradução quando possível.

Dica

In case file format you use does not support storing states, you might want to use Marcar as traduções inalteradas como «Precisa de edição» addon to flag unchanged strings as needing editing.

Tradução direta

Esta é a configuração mais usual para equipas menores, qualquer um pode traduzir diretamente. Esta também é a configuração predefinida no Weblate.

  • Qualquer utilizador pode editar traduções.

  • Sugestões são formas opcionais de sugerir alterações, quando os tradutores não têm certeza sobre a alteração.

Configuração

Valor

Nota

Activar revisões

inativo

Configurado a nível de projeto.

Ativar sugestões

ativo

É útil para os utilizadores serem capazes de sugerir quando não têm certeza.

Votação de sugestão

inativo

Aceitar sugestões automaticamente

0

Grupo de tradutores

Utilizadores

Ou Traduzir com controle de acesso por projeto.

Grupo de revisores

N/D

Não usado.

Revisão por pares

Com este fluxo de trabalho, qualquer pessoa pode adicionar sugestões e precisa da aprovação de um ou mais membros adicionais antes de ser aceite como tradução.

  • Qualquer utilizador pode adicionar sugestões.

  • Qualquer utilizador pode votar em sugestões.

  • Sugestões tornam-se traduções quando dado uma quantidade predeterminada de votos.

Configuração

Valor

Nota

Activar revisões

inativo

Configurado a nível de projeto.

Ativar sugestões

ativo

Votação de sugestão

inativo

Aceitar sugestões automaticamente

1

Pode definir um valor mais alto para exibir mais revisões por pares.

Grupo de tradutores

Utilizadores

Ou Traduzir com controle de acesso por projeto.

Grupo de revisores

N/D

Não usado, todos os tradutores revisam.

Revisores dedicados

Novo na versão 2.18: O fluxo de trabalho adequado de revisão é suportado desde o Weblate 2.18.

Com revisores dedicados tem dois grupos de utilizadores, um capaz de enviar traduções e outro capaz de revisá-los para garantir que as traduções sejam consistentes e que a qualidade seja boa.

  • Qualquer utilizador pode editar traduções não aprovadas.

  • Revisor pode aprovar / retirar a aprovação de cadeias.

  • Revisor pode editar todas as traduções (incluindo as aprovadas).

  • Sugestões também podem ser usadas para sugerir alterações para cadeias aprovadas.

Configuração

Valor

Nota

Activar revisões

ativo

Configurado a nível de projeto.

Ativar sugestões

inativo

É útil para os utilizadores serem capazes de sugerir quando não têm certeza.

Votação de sugestão

inativo

Aceitar sugestões automaticamente

0

Grupo de tradutores

Utilizadores

Ou Traduzir com controle de acesso por projeto.

Grupo de revisores

Revisores

Ou Revisar com controle de acesso por projeto.

Ativar revisões

As revisões podem ser ativadas na configuração do projeto, a partir da subpágina Fluxo de trabalho das configurações do projeto (pode ser encontrada no menu GerirConfigurações):

_images/project-workflow.png

Nota

Dependendo da configuração do Weblate, a configuração pode não estar-lhe disponível. Por exemplo, no Hosted Weblate, isso não está disponível para projetos hospedados gratuitamente.

Portal de qualidade para cadeias fonte

Em muitos casos, as cadeias fonte do idioma de origem vêm de programadores, porque eles escrevem o código e fornecem cadeias iniciais. No entanto, os programadores muitas vezes não são falantes nativos do idioma de origem e não fornecem a qualidade desejada das cadeias fonte. A tradução intermediária pode ajudá-los a lidar com isso - há uma rota de qualidade adicional para as cadeias entre programadores e tradutores e utilizadores.

Ao definir um Ficheiro de idioma intermédio, este ficheiro será usado como fonte para as cadeias, mas será editado para o idioma de origem para poli-lo. Uma vez que o texto esteja pronto no idioma de origem, também estará disponível para os tradutores traduzirem em idiomas adicionais.

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0, style=filled, fillcolor=white, shape=note]; edge [fontname = "sans-serif", fontsize=10]; subgraph cluster_dev { style=filled; color=lightgrey; label = "Development process"; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Developers" -> "Intermediate file"; } subgraph cluster_l10n { style=filled; color=lightgrey; label = "Localization process"; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Editors" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Editors" -> "Monolingual base language file"; "Translators" -> "Translation language file"; } "Intermediate file" -> "Monolingual base language file" [constraint=false]; "Monolingual base language file" -> "Translation language file" [constraint=false]; }

Revisões de cadeias fonte

Com o Ativar revisões de fontes ativado, o processo de revisão pode ser aplicado em cadeias fonte. Uma vez ativado, os utilizadores podem relatar problemas nas cadeias fonte. O processo real depende se usa formatos bilíngues ou monolíngues.

Para formatos monolíngues, a revisão de cadeias fonte se comporta da mesma forma que com Revisores dedicados - uma vez que o problema é relatado na cadeia fonte, é marcado como Necessita edição.

Os formatos bilíngues não permitem a edição direta de cadeias fonte (estes são normalmente extraídos diretamente do código-fonte). Neste caso, o rótulo Fonte precisa de revisão é anexado às cadeias relatadas por tradutores. Deve revisar esses textos e editá-los na fonte ou remover o rótulo.

Perguntas frequentes

Configuração

Como criar um fluxo de trabalho automatizado?

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

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

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

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

Como acessar os repositórios por SSH?

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

Como resolver conflitos de mesclagem nas traduções?

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

If you’ve already encountered a merge conflict, the easiest way to solve all conflicts locally on your machine, is to add Weblate as a remote repository, merge it into upstream and fix any conflicts. Once you push changes back, Weblate will be able to use the merged version without any other special actions.

Nota

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

# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/

# Update weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

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

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

# Open Weblate for translation:
wlc unlock

Se estiver a usar vários ramos na Weblate, pode fazer o mesmo com todos eles:

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

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

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

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

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

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

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

# Update Weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

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

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

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

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

Uma vez mescladas as mudanças do Weblate, pode ter que mesclar esses ramos (a depender do seu fluxo de trabalho de desenvolvimento) a descartar as diferenças:

git merge -s ours origin/maintenance

Como traduzir projetos multiplataforma?

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

Dado que tenha adicionado todos os ficheiros de tradução da plataforma como componentes num projeto (veja Adicionando projetos e componentes de tradução), pode utilizar o recurso de propagação de tradução (ligado por padrão, e pode ser desligado na Configuração de componente) para traduzir cadeias para todas as plataformas ao mesmo tempo.

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

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

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

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

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

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

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

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

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

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

Claro que é livre para misturar tudo isso como quiser.

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

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

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

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

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

  4. Pode atualizar o repositório principal com traduções do Weblate a executar:

    git submodule update --remote path/to/translations
    

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

Como posso verificar se a minha Weblate está configurada corretamente?

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

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

Este é o nome padrão do «committer», configurado quando cria um componente de tradução. Pode alterá-lo na administração a qualquer momento.

O autor de cada commit (se o VCS subjacente o suportar) ainda é registado corretamente como o utilizador que fez a tradução.

Uso

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

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

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

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

Como posso fornecer feedback sobre uma cadeia fonte?

Nas abas de contexto abaixo da tradução, pode utilizar a guia Comentários para fornecer feedback sobre uma cadeia fonte, ou discuti-lo com outros tradutores.

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

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

  • Pode importar ficheiros de memória de tradução existentes para o Weblate.

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

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

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

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

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

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

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

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

Veja também

Definições de idioma

Weblate pode destacar alterações numa cadeia aproximada?

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

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

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

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

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

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

Nota

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

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

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

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

Soluções de problemas

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

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

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

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

Veja também

DATA_DIR

Ao acessar ao site recebo um erro de «Bad Request (400)»

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

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

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

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

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

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

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

Dica

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

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

Funcionalidades

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

Weblate atualmente não tem suporte nativo para nada além de Git (com suporte estendido para GitHub, vcs-gerrit” e :ref:`vcs-git-svn) e Mercurial, mas é possível escrever backends para outros VCSs.

Também pode usar Auxiliares de remotos do Git no Git para acessar outros VCSs.

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

Nota

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

Como o Weblate credita os tradutores?

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

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

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

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

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

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

These are language codes defined by RFC 5646 to better indicate that they are really different languages instead previously wrongly used modifiers (for @latin variants) or country codes (for Chinese).

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

Nota

Weblate defaults to POSIX style language codes with underscore, see Definições de idioma for more details.

Formatos de ficheiros suportados

O Weblate tem suporte à maioria dos formatos de tradução compreendidos pelo translate-toolkit, porém cada formato a ser ligeiramente diferente, alguns problemas com formatos que não são bem testados podem surgir.

Nota

Ao escolher um formato de ficheiro para a sua aplicação, é melhor pôr algum formato bem estabelecido no kit de ferramentas/plataforma que usa. Dessa forma, os seus tradutores podem usar adicionalmente todas as ferramentas que estão acostumados e provavelmente contribuirão para o seu projeto.

Formatos bilíngues e monolíngues

Ambos os formatos monolingual e bilingual são suportados. Formatos bilingues armazenam dois idiomas num único ficheiro e tradução (exemplos típicos são GNU gettext, XLIFF ou Cadeias de Apple iOS). Por outro lado, formatos monolingues identificam a cadeia por ID e cada ficheiro de idioma contém apenas o mapeamento desses para qualquer idioma (tipicamente Recurso de cadeias de Android). Alguns formatos de ficheiro são utilizados em ambas as variantes, veja a descrição detalhada abaixo.

Para o uso correto de ficheiros monolingues, Weblate requer acesso a um ficheiro a conter uma lista completa de cadeias para traduzir com a fonte dele – este ficheiro é chamado de Ficheiro de idioma base monolingue dentro do Weblate, embora a nomenclatura possa variar no seu paradigma.

Além disso, este fluxo de trabalho pode ser estendido a usar Ficheiro de idioma intermédio para incluir cadeias fornecidas pelos programadores, mas não para ser usado como está nos textos finais.

Deteção automática

O Weblate pode detetar automaticamente vários formatos de ficheiros generalizados, mas essa detecção pode prejudicar o seu desempenho e limitará recursos específicos para o formato de ficheiro dado (por exemplo, a adição automática de novas traduções).

Capacidades dos tipos de tradução

Capacidades de todos os formatos suportados:

Formato

Lingualidade 1

Plurais 2

Comentários 3

Contexto 4

Localização 5

Marcadores 8

Estados adicionais 6

GNU gettext

bilíngue

sim

sim

sim

sim

sim 9

necessita edição

Gettext monolíngue

mono

sim

sim

sim

sim

sim 9

necessita edição

XLIFF

ambos

sim

sim

sim

sim

sim 10

necessita edição, aprovado

Propriedades Java

ambos

não

sim

não

não

não

Ficheiros lang mi18n

mono

não

sim

não

não

não

Propriedades GWT

mono

sim

sim

não

não

não

Traduções para Joomla

mono

não

sim

não

sim

não

.ts de Qt Linguist

ambos

sim

sim

não

sim

sim 10

necessita edição

Recurso de cadeias de Android

mono

sim

sim 7

não

não

sim 10

Cadeias de Apple iOS

bilíngue

não

sim

não

não

não

Cadeias de PHP

mono

não 11

sim

não

não

não

Ficheiro JSON

mono

não

não

não

não

não

Ficheiros i18next do JSON

mono

sim

não

não

não

não

Ficheiros JSON go-i18n

mono

sim

não

não

não

não

Ficheiro ARB

mono

sim

sim

não

não

não

JSON WebExtension

mono

sim

sim

não

não

não

Ficheiros de recursos .XML

mono

não

sim

não

não

sim 10

Ficheiros CSV

ambos

não

sim

sim

sim

não

necessita edição

Ficheiros YAML

mono

não

sim

não

não

não

Ficheiros Ruby YAML

mono

sim

sim

não

não

não

Ficheiros DTD

mono

não

não

não

não

não

Ficheiro XML simples

mono

não

não

não

não

sim 10

Ficheiros RC do Windows

mono

não

sim

não

não

não

Excel Open XML

mono

não

sim

sim

sim

não

necessita edição

Ficheiros de metadados da App Store

mono

não

não

não

não

não

Ficheiros de legenda

mono

não

não

não

sim

não

Ficheiro HTML

mono

não

não

não

não

não

Formato OpenDocument

mono

não

não

não

não

não

Formato IDML

mono

não

não

não

não

não

Traduções de INI

mono

não

não

não

não

não

Traduções Inno Setup INI

mono

não

não

não

não

não

Formato TermBase eXchange

bilíngue

não

sim

não

não

sim 10

Ficheiros de texto

mono

não

não

não

não

não

Stringsdict format

mono

sim

sim

não

não

não

Fluent format

mono

no 12

sim

não

não

não

1

Veja Formatos bilíngues e monolíngues

2

Os plurais são necessários para localizar adequadamente as cadeias com contagem variável.

3

Os comentários podem ser usados para passar informações adicionais sobre a cadeia a traduzir.

4

O contexto é usado para diferenciar cadeias idênticas usadas em diferentes escopos (por exemplo, Sun pode ser usado como um nome abreviado do dia «Sunday» ou como o nome da nossa estrela mais próxima).

5

A localização de uma cadeia no código-fonte pode ajudar tradutores proficientes a descobrir como a cadeia é usada.

6

Estados adicionais suportados pelo formato do ficheiro, além de «Não traduzido» e «Traduzido».

7

Comentário XML posto antes do elemento <string>, analisado como um comentário do programador.

8

Veja Personalizando comportamento a usar marcadores

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, o max-length:N é suportado através do atributo maxwidth como definido no padrão XLIFF, veja Especificação de bandeiras de tradução.

11

Os plurais são suportados apenas para Laravel, que usa em sintaxe de cadeias para defini-las, veja Localização em Laravel`_.

12

Plurals are handled in the syntax of the strings and not exposed as plurals in Weblate.

Cadeias somente leitura

Novo na versão 3.10.

Cadeias de somente leitura dos ficheiros de tradução serão incluídos, mas não podem ser editadas no Weblate. Esse recurso é suportado nativamente por poucos formatos (XLIFF e Recurso de cadeias de Android), mas pode ser emulado em outros a adicionar um marcador read-only, consulte Personalizando comportamento a usar marcadores.

GNU gettext

O formato mais usado para traduzir software livre.

As informações contextuais armazenadas no ficheiro são suportadas a ajustar os cabeçalhos dele ou a vincular-se a ficheiros fonte correspondentes.

O ficheiro de PO de texto bilíngue normalmente parece-se com este:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"

Configuração de componente típica do Weblate

Máscara de ficheiro

po/*.po

Ficheiro de idioma base monolingue

Vazio

Modelo para novas traduções

po/messages.pot

Formato de ficheiro

Ficheiro Gettext PO

Gettext monolíngue

Alguns projetos decidem usar o gettext como formatos monolingues – eles codificam apenas os IDs no código-fonte deles e a cadeia então precisa ser traduzido para todos os idiomas, que inclui o inglês. É suportado, embora tenha que escolher este formato de ficheiro explicitamente ao importar componentes para o Weblate.

O ficheiro gettext PO monolíngue normalmente se parece com este:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"

Enquanto o ficheiro de idioma base será:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"

Configuração de componente típica do Weblate

Máscara de ficheiro

po/*.po

Ficheiro de idioma base monolingue

po/en.po

Modelo para novas traduções

po/messages.pot

Formato de ficheiro

Ficheiro Gettext PO (monolíngue)

XLIFF

Formato baseado em XML criado para padronizar ficheiros de tradução, mas no final é um dos muitos padrões, nesta área.

XML Localization Interchange File Format (XLIFF) é normalmente utilizado como bilíngue, mas Weblate também o suporta como monolíngue.

Veja também

Especificação do `XML Localization Interchange File Format (XLIFF)

Estados de tradução

Alterado na versão 3.3: Weblate ignorava o atributo state antes da versão 3.3.

O atributo state no ficheiro é parcialmente processado e mapeado para o estado «Necessita edição» no Weblate (os seguintes estados são utilizados para marcar a cadeia como a necessitar editar se houver um alvo presente: new, needs-translation, needs-adaptation, needs-l10n). Caso o atributo state esteja a faltar, uma cadeia é considerada traduzida assim que um elemento <target> existir.

Se a cadeia de tradução tiver approved="yes", ela também será importada para a Weblate como «Aprovado», qualquer outra coisa será importada como «A aguardar revisão» (que corresponde à especificação XLIFF).

Ao gravar, o Weblate não adiciona esses atributos a menos que seja necessário:

  • O atributo state só é adicionado no caso da cadeia ser marcada como a necessitar de edição.

  • O atributo approved só é adicionado no caso da cadeia ter sido revista.

  • Em outros casos os atributos não são adicionados, mas são atualizados no caso de estarem presentes.

Isso significa que, ao utilizar o formato XLIFF, é fortemente recomendado ativar o processo de revisão do Weblate, de modo a ver e alterar o estado aprovado de cadeias.

Da mesma forma, ao importar tais ficheiros (no formulário de envio), deve escolher Importador como traduzido em A processar as cadeias que necessitam edição.

Veja também

Revisores dedicados

Espaços em branco e novas linhas em XLIFF

Geralmente os tipos ou quantidades de espaços em branco não são diferenciados entre si nos formatos XML. Se quiser mantê-los, tem que adicionar o marcador xml:space="preserve" à cadeia.

Por exemplo:

    <trans-unit id="10" approved="yes">
        <source xml:space="preserve">hello</source>
        <target xml:space="preserve">Hello, world!
</target>
    </trans-unit>

Especificação de bandeiras de tradução

Pode especificar marcadores de tradução adicionais (veja Personalizando comportamento a usar marcadores) a utilizar o atributo weblate-flags. Weblate também entende os atributos maxwidth e font da especificação XLIFF:

<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
   <source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
   <source>Hello %s</source>
</trans-unit>

O atributo fonte é analisado para a família de fontes, tamanho e peso, o exemplo acima mostra tudo isso, embora apenas a família de fontes seja necessária. Qualquer espaço em branco na família de fontes é convertido para sublinhado, então Source Sans Pro torna-se Source_Sans_Pro, por favor tenha isso em mente ao nomear o grupo de fontes (veja Gerir letras).

Chaves de cadeias

Weblate identifica as unidades no ficheiro XLIFF pelo atributo resname no caso de estar presente e, do contrário, recorre a id (junto com a tag file se presente).

O atributo resname deveria ser um identificador humanamente amigável da unidade, a tornar-a mais adequada para a exibição de Weblate em vez de id. O resname tem de ser único em todo o ficheiro XLIFF. Isto é exigido pelo Weblate e não é coberto pelo padrão XLIFF – não coloca nenhuma restrição de exclusividade neste atributo.

Configuração de componente típica do Weblate para XLIFF bilíngue

Máscara de ficheiro

localizations/*.xliff

Ficheiro de idioma base monolingue

Vazio

Modelo para novas traduções

localizations/en-US.xliff

Formato de ficheiro

Ficheiro de tradução XLIFF

Configuração de componente típica do Weblate para XLIFF monolíngue

Máscara de ficheiros

localizations/*.xliff

Ficheiro de idioma base monolingue

localizations/en-US.xliff

Modelo para novas traduções

localizations/en-US.xliff

Formato de ficheiro

Ficheiro de tradução XLIFF

Propriedades Java

Formato nativo do Java para traduções.

As propriedades Java são geralmente usadas como traduções monolíngues.

Weblate é compatível com as variantes ISO-8859-1, UTF-8 e UTF-16 deste formato. Todos eles suportam o armazenamento de todos os caracteres Unicode, mas são codificados de forma diferente. No ISO-8859-1, as sequências de escape Unicode são usadas (por exemplo, zkou\u0161ka), todas as outras codificam caracteres diretamente em UTF-8 ou UTF-16.

Nota

Carregar sequências de escape também funciona no modo UTF-8, por isso, tenha cuidado ao escolher o conjunto de codificação correto para corresponder às necessidades da aplicação.

Configuração de componente típica do Weblate

Máscara de ficheiro

src/app/Bundle_*.properties

Ficheiro de idioma base monolingue

src/app/Bundle.properties

Modelo para novas traduções

Vazio

Formato de ficheiro

Propriedades Java (ISO-8859-1)

Ficheiros lang mi18n

Novo na versão 4.7.

File format used for JavaScript localization by mi18n. Syntactically it matches Propriedades Java.

Configuração de componente típica do Weblate

Máscara de ficheiro

*.lang

Ficheiro de idioma base monolingue

en-US.lang

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro lang mi18n

Propriedades GWT

Formato nativo de GWT para traduções.

As propriedades GWT são geralmente usadas como traduções monolíngues.

Configuração de componente típica do Weblate

Máscara de ficheiro

src/app/Bundle_*.properties

Ficheiro de idioma base monolingue

src/app/Bundle.properties

Modelo para novas traduções

Vazio

Formato de ficheiro

Propriedades GWT

Traduções de INI

Novo na versão 4.1.

Formato de aplicação INI para traduções.

As traduções de INI são geralmente usadas como traduções monolíngues.

Configuração de componente típica do Weblate

Máscara de ficheiro

language/*.ini

Ficheiro de idioma base monolingue

language/en.ini

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro INI

Nota

O Weblate só extrai chaves de seções dentro de um ficheiro INI. Caso o seu ficheiro INI não tenha seções, quereria usar Traduções para Joomla ou Propriedades Java.

Traduções Inno Setup INI

Novo na versão 4.1.

Formato de ficheirio Inno Setup INI para traduções.

As traduções Inno Setup INI são normalmente usadas como traduções monolingues.

Nota

A única diferença notável para Traduções de INI é ter suporte aos espaços reservados %n and %t para quebra de linha e tabulação.

Configuração de componente típica do Weblate

Máscara de ficheiro

language/*.islu

Ficheiro de idioma base monolingue

language/en.islu

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro Inno Setup INI

Nota

Apenas ficheiros Unicode (.islu) são suportados atualmente, a variante ANSI (.isl) não é suportada atualmente.

Traduções para Joomla

Novo na versão 2.12.

Formato nativo de Joomla para traduções.

As traduções de Joomla são geralmente usadas como traduções monolíngues.

Configuração de componente típica do Weblate

Máscara de ficheiro

language/*/com_foobar.ini

Ficheiro de idioma base monolingue

language/en-GB/com_foobar.ini

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro de idioma Joomla

.ts de Qt Linguist

Formato de tradução usado em aplicações baseados em Qt.

Os ficheiros Qt Linguist são usados como traduções bilíngues e monolíngues.

Configuração de componente típica do Weblate ao usar como bilíngue

Máscara de ficheiro

i18n/app.*.ts

Ficheiro de idioma base monolingue

Vazio

Modelo para novas traduções

i18n/app.de.ts

Formato de ficheiro

Ficheiro de tradução Qt Linguist

Configuração de componente típica do Weblate ao usar como monolíngue

Máscara de ficheiro

i18n/app.*.ts

Ficheiro de idioma base monolingue

i18n/app.en.ts

Modelo para novas traduções

i18n/app.en.ts

Formato de ficheiro

Ficheiro de tradução Qt Linguist

Recurso de cadeias de Android

Formato de ficheiro específico do Android para traduzir aplicações.

Os recursos de cadeias do Android são monolingues, o Ficheiro de idioma base monolingue é armazenado num local diferente dos outros res/values/strings.xml.

Configuração de componente típica do Weblate

Máscara de ficheiro

res/values-*/strings.xml

Ficheiro de idioma base monolingue

res/values/strings.xml

Modelo para novas traduções

Vazio

Formato de ficheiro

Recurso de cadeias de Android

Nota

As estruturas de `string-array`do Android não são atualmente suportadas. Para contornar isso, pode quebrar os seus vetores de cadeias:

<string-array name="several_strings">
    <item>First string</item>
    <item>Second string</item>
</string-array>

se torna:

<string-array name="several_strings">
    <item>@string/several_strings_0</item>
    <item>@string/several_strings_1</item>
</string-array>
<string name="several_strings_0">First string</string>
<string name="several_strings_1">Second string</string>

O string-array que aponta para os elementos string deve ser armazenado num ficheiro diferente e não ser disponibilizado para tradução.

Este script pode ajudar a pré-processar os seus ficheiros strings.xml e traduções existentes: https://gist.github.com/paour/11291062

Cadeias de Apple iOS

Formato de ficheiro específico da Apple para traduzir aplicações, utilizado tanto para traduções de aplicações de iOS quanto de iPhone/iPad.

As cadeias de Apple iOS geralmente são usadas como traduções bilingues.

Configuração de componente típica do Weblate

Máscara de ficheiro

Resources/*.lproj/Localizable.strings

Ficheiro de idioma base monolingue

Resources/en.lproj/Localizable.strings ou Resources/Base.lproj/Localizable.strings

Modelo para novas traduções

Vazio

Formato de ficheiro

Cadeias do iOS (UTF-8)

Cadeias de PHP

As traduções do PHP são geralmente monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.

Exemplo de ficheiro:

<?php
$LANG['foo'] = 'bar';
$LANG['foo1'] = 'foo bar';
$LANG['foo2'] = 'foo bar baz';
$LANG['foo3'] = 'foo bar baz bag';

Configuração de componente típica do Weblate

Máscara de ficheiro

lang/*/texts.php

Ficheiro de idioma base monolingue

lang/en/texts.php

Modelo para novas traduções

lang/en/texts.php

Formato de ficheiro

Cadeias do PHP

Cadeias de PHP Laravel

Alterado na versão 4.1.

Os ficheiros de localização do PHP de Laravel também são suportados com plurais:

<?php
return [
    'welcome' => 'Welcome to our application',
    'apples' => 'There is one apple|There are many apples',
];

Ficheiro JSON

Novo na versão 2.0.

Alterado na versão 2.16: Desde o Weblate 2.16 e com translate-toolkit pelo menos 2.2.4, os ficheiros JSON de estrutura aninhada também são suportados.

Alterado na versão 4.3: A estrutura de ficheiros JSON é devidamente preservada mesmo para situações complexas que foram quebradas em versões anteriores.

O formato JSON é usado principalmente para traduzir aplicações implementades em JavaScript.

O Weblate atualmente suporta várias variantes das traduções JSON:

As traduções JSON são geralmente monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.

Exemplo de ficheiro:

{
  "Hello, world!\n": "Ahoj světe!\n",
  "Orangutan has %d banana.\n": "",
  "Try Weblate at https://demo.weblate.org/!\n": "",
  "Thank you for using Weblate.": ""
}

Os ficheiros aninhados também são suportados (veja acima para os requisitos), tal ficheiro pode parecer:

{
  "weblate": {
    "hello": "Ahoj světe!\n",
    "orangutan": "",
    "try": "",
    "thanks": ""
  }
}

Dica

O ficheiro JSON e Ficheiro de estrutura JSON aninhada podem ambos lidar com o mesmo tipo de ficheiros. Ambos preservam a estrutura JSON existente ao traduzir.

A única diferença entre eles é ao adicionar textos ao usar Weblate. O formato de estrutura aninhada analisa a tecla recém-adicionada e insere a cadeia na estrutura de correspondência. Por exemplo, a tecla app.name está inserida como:

{
   "app": {
      "name": "Weblate"
   }
}

Configuração de componente típica do Weblate

Máscara de ficheiro

langs/translation-*.json

Ficheiro de idioma base monolingue

langs/translation-en.json

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro de estrutura JSON aninhada

Ficheiros i18next do JSON

Alterado na versão 2.17: Desde o Weblate 2.17 e com translate-toolkit pelo menos 2.2.5, os ficheiros I18next do JSON com plurais também são suportados.

i18next é uma estrutura de internacionalização escrita dentro e para JavaScript. O Weblate suporta os ficheiros de localização dele com recursos como plurais.

As traduções i18next são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.

Nota

Weblate suporta o formato v3 de I18next do JSON. As variantes V2 e V1 são na maioria compatíveis, com exceção de como os plurais são manuseados.

Exemplo de ficheiro:

{
  "hello": "Hello",
  "apple": "I have an apple",
  "apple_plural": "I have {{count}} apples",
  "apple_negative": "I have no apples"
}

Configuração de componente típica do Weblate

Máscara de ficheiro

langs/*.json

Ficheiro de idioma base monolingue

langs/en.json

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro JSON i18next

Ficheiros JSON go-i18n

Novo na versão 4.1.

As traduções go-i18n são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.

Nota

Weblate tem suporte ao formato go-i18n JSON v1, para formatos JSON simples, use Ficheiro JSON. O formato v2 com hash não é suportado no momento.

Configuração de componente típica do Weblate

Máscara de ficheiro

langs/*.json

Ficheiro de idioma base monolingue

langs/en.json

Modelo para novas traduções

Vazio

Formato de ficheiro

ficheiro JSON go-i18n

Ficheiro ARB

Novo na versão 4.1.

As traduções ARB são monolingues, por isso é recomendável especificar um ficheiro base com (o que é mais frequentemente os) cadeias em inglês.

Configuração de componente típica do Weblate

Máscara de ficheiro

lib/l10n/intl_*.arb

Ficheiro de idioma base monolingue

lib/l10n/intl_en.arb

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro ARB

JSON WebExtension

Novo na versão 2.16: Isto é suportado desde Weblate 2.16 e com o translate-toolkit pelo menos 2.2.4.

Formato de ficheiro usado ao traduzir extensões para Mozilla Firefox ou Google Chromium.

Nota

Embora este formato se chame JSON, a especificação dele permite incluir comentários, que não fazem parte da especificação JSON. O Weblate atualmente não suporta ficheiro com comentários.

Exemplo de ficheiro:

{
  "hello": {
    "message": "Ahoj světe!\n",
    "description": "Description",
    "placeholders": {
      "url": {
        "content": "$1",
        "example": "https://developer.mozilla.org"
      }
    }
  },
  "orangutan": {
    "message": "",
    "description": "Description"
  },
  "try": {
    "message": "",
    "description": "Description"
  },
  "thanks": {
    "message": "",
    "description": "Description"
  }
}

Configuração de componente típica do Weblate

Máscara de ficheiro

_locales/*/messages.json

Ficheiro de idioma base monolingue

_locales/en/messages.json

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro JSON WebExtension

Ficheiros de recursos .XML

Novo na versão 2.3.

Um ficheiro de rescurso .XML (.resx) emprega um formato de ficheiro XML monolíngue usado nas aplicações Microsoft .NET. É intercambiável com .resw, quando usa sintaxe idêntica ao .resx.

Configuração de componente típica do Weblate

Máscara de ficheiro

Resources/Language.*.resx

Ficheiro de idioma base monolingue

Resources/Language.resx

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro de recursos .NET

Ficheiros CSV

Novo na versão 2.4.

Os ficheiros CSV podem conter uma simples lista de origem e tradução. O Weblate suporta os seguintes ficheiros:

  • Ficheiros com campos de definição de cabeçalho (location, source, target, ID, fuzzy, context, translator_comments, developer_comments). Esta é a abordagem recomendada, pois é a menos sujeita a erros. Escolha Ficheiro CSV como um formato de ficheiro.

  • Ficheiros com dois campos – fonte e tradução (nesta ordem). Escolha Ficheiro CSV simples como um formato de ficheiro.

  • Ficheiros sem cabeçalhos com campos na ordem definida pelo translate-toolkit: location, source, target, ID, fuzzy, context, translator_comments, developer_comments. Escolha Arquivo CSV como formato de ficheiro.

  • Lembre-se de definir o Ficheiro de idioma base monolingue quando os seus ficheiros são monolíngues (veja Formatos bilíngues e monolíngues).

Aviso

O formato CSV detecta automaticamente o dialeto do ficheiro CSV. Em alguns casos, a detecção automática pode falhar e terá resultados mistos. Isso é especialmente verdadeiro para ficheiros CSV com linhas novas nos valores. Como solução alternativa, recomenda-se omitir caracteres entre aspas.

Exemplo de ficheiro:

Thank you for using Weblate.,Děkujeme za použití Weblate.

Configuração de componente típica do Weblate para CSV bilíngue

Máscara de ficheiro

locale/*.csv

Ficheiro de idioma base monolingue

Vazio

Modelo para novas traduções

locale/en.csv

Formato de ficheiro

Ficheiro CSV

Configuração de componente típica do Weblate para CSV monolíngue

Máscara de ficheiro

locale/*.csv

Ficheiro de idioma base monolingue

locale/en.csv

Modelo para novas traduções

locale/en.csv

Formato de ficheiro

Ficheiro CSV simples

Veja também

CSV

Ficheiros YAML

Novo na versão 2.9.

Os ficheiros YAML simples com chaves de cadeias e valores. Weblate também extrai cadeias de listas ou dicionários.

Exemplo de um ficheiro YAML:

weblate:
  hello: ""
  orangutan": ""
  try": ""
  thanks": ""

Configuração de componente típica do Weblate

Máscara de ficheiro

translations/messages.*.yml

Ficheiro de idioma base monolingue

translations/messages.en.yml

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro YAML

Veja também

YAML, Ficheiros Ruby YAML

Ficheiros Ruby YAML

Novo na versão 2.9.

Ficheiros YAML de i18n do Ruby com idioma como nó raiz.

Exemplo de ficheiro YAML de i18n do Ruby:

cs:
  weblate:
    hello: ""
    orangutan: ""
    try: ""
    thanks: ""

Configuração de componente típica do Weblate

Máscara de ficheiro

translations/messages.*.yml

Ficheiro de idioma base monolingue

translations/messages.en.yml

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro Ruby YAML

Veja também

YAML, Ficheiros YAML

Ficheiros DTD

Novo na versão 2.18.

Exemplo de ficheiro DTD:

<!ENTITY hello "">
<!ENTITY orangutan "">
<!ENTITY try "">
<!ENTITY thanks "">

Configuração de componente típica do Weblate

Máscara de ficheiro

locale/*.dtd

Ficheiro de idioma base monolingue

locale/en.dtd

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro DTD

Veja também

Mozilla DTD format

Ficheiro XML simples

Novo na versão 3.9.

Exemplo de um ficheiro XML simples:

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <str key="hello_world">Hello World!</str>
  <str key="resource_key">Translated value.</str>
</root>

Configuração de componente típica do Weblate

Máscara de ficheiro

locale/*.xml

Ficheiro de idioma base monolingue

locale/en.xml

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro XML simples

Veja também

Flat XML

Ficheiros RC do Windows

Alterado na versão 4.1: O suporte para ficheiros RC do Windows foi reescrito.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

Exemplo de ficheiro RC do Windows:

LANGUAGE LANG_CZECH, SUBLANG_DEFAULT

STRINGTABLE
BEGIN
    IDS_MSG1                "Hello, world!\n"
    IDS_MSG2                "Orangutan has %d banana.\n"
    IDS_MSG3                "Try Weblate at http://demo.weblate.org/!\n"
    IDS_MSG4                "Thank you for using Weblate."
END

Configuração de componente típica do Weblate

Máscara de ficheiro

lang/*.rc

Ficheiro de idioma base monolingue

lang/en-US.rc

Modelo para novas traduções

lang/en-US.rc

Formato de ficheiro

Ficheiro RC

Veja também

Windows RC files

Ficheiros de metadados da App Store

Novo na versão 3.5.

Metadados usados para publicar aplicações em várias lojas de aplicações podem ser traduzidos. Atualmente, as seguintes ferramentas são compatíveis:

Os metadados consistem em vários ficheiros de texto, que o Weblate apresentará como cadeias separados para traduzir.

Configuração de componente típica do Weblate

Máscara de ficheiro

fastlane/android/metadata/*

Ficheiro de idioma base monolingue

fastlane/android/metadata/en-US

Modelo para novas traduções

fastlane/android/metadata/en-US

Formato de ficheiro

Ficheiros de metadados de loja de aplicações

Dica

Caso não queira traduzir certas cadeias (por exemplo, changelogs), marque-as como somente leitura (veja Personalizando comportamento a usar marcadores). Isto pode ser automatizado por Edição em massa.

Ficheiros de legenda

Novo na versão 3.7.

Weblate pode traduzir vários ficheiros de legenda:

  • Ficheiros de legenda SubRip (*.srt)

  • Ficheiro de legenda MicroDVD (*.sub)

  • Ficheiro de legenda Advanced Substation Alpha (*.ass)

  • Ficheiro de legenda Substation Alpha (*.ssa)

Configuração de componente típica do Weblate

Máscara de ficheiro

path/*.srt

Ficheiro de idioma base monolingue

path/en.srt

Modelo para novas traduções

path/en.srt

Formato de ficheiro

Ficheiro de legenda SubRip

Veja também

Subtitles

Excel Open XML

Novo na versão 3.2.

Os ficheiros Excel Open XML (.xlsx) podem ser importados e exportados.

Ao enviar ficheiros XLSX para a tradução, esteja ciente que apenas a planilha ativa é considerada e deve haver pelo menos uma coluna chamada source (que contém a cadeia fonte) e uma coluna chamada target (que contém a tradução). Além disso, deve haver a coluna chamada context (que contém o caminho de contexto da cadeia de tradução). Se usar a descarrega XLSX para exportar as traduções numa pasta de trabalho do Excel, já terá um ficheiro com o formato de ficheiro correto.

Ficheiro HTML

Novo na versão 4.1.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

O conteúdo traduzível é extraído dos ficheiros HTML e oferecido para a tradução.

Veja também

HTML

Ficheiros de texto

Novo na versão 4.6.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

O conteúdo traduzível é extraído dos ficheiros de texto simples e oferecido para a tradução. Cada parágrafo é traduzido como um texto separado.

Há três sabores desse formato:

  • Ficheiros de texto simples

  • Ficheiros de texto DokuWiki

  • Ficheiro de texto MediaWiki

Veja também

Simple Text Documents

Formato OpenDocument

Novo na versão 4.1.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

O conteúdo traduzível é extraído dos ficheiros OpenDocument e oferecido para a tradução.

Veja também

OpenDocument Format

Formato IDML

Novo na versão 4.1.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

O conteúdo traduzível é extraído dos ficheiros Adobe InDesign Markup Language e oferecido para a tradução.

Formato TermBase eXchange

Novo na versão 4.5.

TBX é um formato XML para a troca de dados de terminologia.

Configuração de componente típica do Weblate

Máscara de ficheiro

tbx/*.tbx

Ficheiro de idioma base monolingue

Vazio

Modelo para novas traduções

Vazio

Formato de ficheiro

Ficheiro TermBase eXchange

Stringsdict format

Novo na versão 4.8.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

XML based format used by Apple which is able to store plural forms of a string.

Configuração de componente típica do Weblate

Máscara de ficheiro

Resources/*.lproj/Localizable.stringsdict

Ficheiro de idioma base monolingue

Resources/en.lproj/Localizable.stringsdict or Resources/Base.lproj/Localizable.stringsdict

Modelo para novas traduções

Vazio

Formato de ficheiro

Stringsdict file

Fluent format

Novo na versão 4.8.

Nota

O suporte para este formato está atualmente em beta, feedback de testes é bem-vindo.

Fluent is a monolingual text format that focuses on asymmetric localization: a simple string in one language can map to a complex multi-variant translation in another language.

Configuração de componente típica do Weblate

Máscara de ficheiro

locales/*/messages.ftl

Ficheiro de idioma base monolingue

locales/en/messages.ftl

Modelo para novas traduções

Vazio

Formato de ficheiro

Fluent file

Veja também

Project Fluent website

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.

Integração de controlo de versões

Weblate atualmente tem suporte a Git (com suporte estendido a GitHub, Gerrit e Subversion) e Mercurial como back-ends de controle de versão.

Acessando repositórios

O repositório VCS que deseja usar tem que ser acessível ao Weblate. Com um repositório disponível publicamente, só precisa inserir a URL correta (por exemplo https://github.com/WeblateOrg/weblate.git), mas para repositórios privados ou para URLs de push a configuração é mais complexa e requer autenticação.

Acessando repositórios do Hosted Weblate

Para Hosted Weblate há um utilizador dedicado para fazer push registado no GitHub, Bitbucket, Codeberg e GitLab (com o nome de utilizador weblate, e-mail hosted@weblate.org e chamado Weblate push user). Precisa adicionar esse utilizador como colaborador e dar a permissão apropriada ao seu repositório (somente leitura está bom para clonagem, escrita é necessária para fazer push). Dependendo do serviço e das configurações da sua organização, isso acontece imediatamente, ou requer confirmação do lado do Weblate.

O utilizador weblate no GitHub aceita convites automaticamente dentro de cinco minutos. O processamento manual pode ser necessário nos outros serviços, por isso, por favor, seja paciente.

Uma vez adicionado o utilizador weblate, pode configurar o Repositório do código-fonte e a URL de submissão do repositório a utilizar o protocolo SSH (por exemplo, git@github.com:WeblateOrg/weblate.git).

Repositórios SSH

O método mais usado para acessar repositórios privados é baseado no SSH. Autorize a chave pública SSH do Weblate (veja Chave SSH do Weblate) para acessar o repositório upstream desta forma.

Aviso

No GitHub, cada chave só pode ser utilizada uma vez, veja vcs-repos-github`e :ref:`hosted-push.

Weblate também armazena a impressão digital da chave do host na primeira conexão e não se conecta ao host caso ele seja alterado posteriormente (veja Verificando chaves SSH do host).

Caso o ajuste seja necessário, faça-o a partir da interface de administração Weblate:

_images/ssh-keys.png
Chave SSH do Weblate

A chave pública do Weblate está visível para todos os utilizadores que navegam na página Sobre.

Os administradores podem gerar ou exibir a chave pública usada atualmente pelo Weblate na conexão (a partir de Chaves SSH) na página inicial da interface administrativa.

Nota

A chave SSH privada correspondente não pode ter uma palavra-passe no momento, por isso certifique-se de que ela está bem protegida.

Dica

Faça um backup da chave SSH privada gerada do Weblate.

Verificando chaves SSH do host

O Weblate armazena automaticamente as chaves SSH do host no primeiro acesso e lembra-se delas para uso posterior.

Caso queira verificar a impressão digital da chave antes de se conectar ao repositório, adicione as chaves SSH dos servidores que vai acessar em Adicionar chave de host, a partir da mesma secção da interface de administração. Digite o nome do host que vai acessar (por exemplo, gitlab.com) e pressione Enviar. Verifique se a sua impressão digital corresponde ao servidor que adicionou.

As chaves adicionadas com impressões digitais são mostradas na mensagem de confirmação:

_images/ssh-keys-added.png

Repositórios do GitHub

O acesso via SSH é possível (veja Repositórios SSH), mas caso precise acessar mais de um repositório, atingirá uma limitação do GitHub no uso permitido da chave SSH (já que cada chave pode ser usada apenas uma vez).

Caso o Ramo do push não seja definido, é criado um fork do projeto e feito um push das alterações através do fork. Caso seja definido, os pushes são feitos para o repositório upstream e para o ramo escolhido.

Para implantações menores, use autenticação HTTPS com um token de acesso pessoal e a sua conta no GitHub, veja Criando um token de acesso para uso em linha de comando.

Para configurações maiores, geralmente é melhor criar um utilizador dedicado para o Weblate, atribuir-lhe a chave SSH pública gerada no Weblate (ver Chave SSH do Weblate) e concedê-lo acesso a todos os repositórios que deseja traduzir. Essa abordagem também é usada para o Hosted Weblate, há utilizador dedicado weblate para isso.

URLs internas do Weblate

Compartilhe uma configuração de repositório entre diferentes componentes, a fazer referência à sua colocação como weblate://projeto/componente em outros componentes (vinculados). Desta forma, os componentes vinculados utilizam a configuração do repositório VCS do componente principal (referenciado).

Aviso

A remoção do componente principal também remove componentes vinculados.

O Weblate ajusta automaticamente a URL do repositório ao criar um componente se encontrar um componente com uma configuração de repositório correspondente. Pode anular isso na última etapa da configuração do componente.

Motivos para usar isso:

  • Economiza espaço em disco no servidor, o repositório é armazenado apenas uma vez.

  • Torna as atualizações mais rápidas, apenas um repositório é atualizado.

  • Há apenas um repositório exportado com traduções do Weblate (ver Exportador git).

  • Algumas extensões podem operar em vários componentes a compartilhar um repositório; por exemplo, Squash de commits git.

Repositórios HTTPS

Para acessar repositórios HTTPS protegidos, inclua o nome de utilizador e a palavra-passe na URL. Não se preocupe, o Weblate irá remover essas informações quando a URL for mostrada aos utilizadores (se mesmo permitido ver a URL do repositório).

Por exemplo, a URL do GitHub com autenticação adicionada pode parecer: https://usuario:seu_token_de_acesso@github.com/WeblateOrg/weblate.git.

Nota

Se o seu nome de utilizador ou palavra-passe contiver caracteres especiais, eles devem ser codificados para URL; por exemplo, https://usuario%40example.com:%24senha%23@bitbucket.org/….

Usando proxy

Se precisar acessar repositórios VCS por HTTP/HTTPS a usar um servidor proxy, configure o VCS para usá-lo.

Isto pode ser feito a utilizar as variáveis de ambiente http_proxy, https_proxy e all_proxy (como descrito na documentação do cURL) ou a aplicar-a na configuração do VCS, por exemplo:

git config --global http.proxy http://user:password@proxy.example.com:80

Nota

A configuração do proxy precisa ser feita com o utilizador a executar Weblate (veja também Permissões do sistema de ficheiros) e com HOME=$DATA_DIR/home (veja DATA_DIR), caso contrário o Git executado pelo Weblate não o utilizará.

Git

Dica

Weblate needs Git 2.12 or newer.

Veja também

Consulte Acessando repositórios para obter informações sobre como acessar diferentes tipos de repositórios.

Git com push forçado

Ele se comporta exatamente como o próprio Git, a única diferença é que ele sempre força pushes. Isso se destina apenas no caso de usar um repositório separado para traduções.

Aviso

Use com cautela, pois isso facilmente leva a commits perdidos no seu repositório upstream.

Personalizando a configuração do Git

Weblate invoca todos os comandos VCS com HOME=$DATA_DIR/home (veja :set:`DATA_DIR`), portanto a edição da configuração do utilizador precisa ser feita em DATA_DIR/home/.git.

Auxiliares de remotos do Git

Também pode usar os auxiliares de remotos do Git para ter suporte adicionalmente a outros sistemas de controle de versão, mas esteja preparado para depurar problemas que isso pode levar.

Neste momento, os auxiliares de Bazaar e Mercurial estão disponíveis em repositórios separados no GitHub: git-remote-hg e git-remote-bzr. Baixe-os manualmente e ponha em algum lugar no seu caminho de pesquisa (por exemplo, :file:`~/bin `). Certifique-se de ter os sistemas de controle de versão correspondentes instalados.

Uma vez instalados, esses controles podem ser usados para especificar um repositório no Weblate.

Para clonar o projeto gnuhello do Launchpad a usar Bazaar:

bzr::lp:gnuhello

Para o repositório hello de selenic.com a usar Mercurial:

hg::http://selenic.com/repo/hello

Aviso

O inconveniente de usar auxiliares de remotos Git é, por exemplo, com o Mercurial, o auxiliar de remoto às vezes cria uma nova dica ao fazer push das mudanças de volta.

GitHub

Novo na versão 2.3.

Isto adiciona uma camada fina sobre o Git a utilizar a API do GitHub para permitir fazer push de alterações de tradução como pull requests, ao invés de fazer push diretamente para o repositório.

Git faz push das alterações diretamente para um repositório, enquanto GitHub cria pull requests. Este último não é necessário para apenas acessar repositórios Git.

Fazendo push de alterações para o GitHub como pull requests

Se não quiser fazer push das traduções para um repositório do GitHub, elas podem ser enviadas como uma ou várias pull requests.

Precisa configurar credenciais de API para fazer isso funcionar.

GitLab

Novo na versão 3.9.

Isto apenas adiciona uma camada fina sobre o Git a usar a API do GitLab para permitir fazer push de alterações de tradução como merge requests, ao invés de fazer push diretamente para o repositório.

Não há necessidade de usá-lo para acessar repositórios de Git, o Git comum funciona da mesma forma, a ser a única diferença como o push para um repositório é manipulado. Com Git, o push das alterações é feito diretamente para o repositório, enquanto GitLab cria merge request.

Fazendo push de alterações para o GitLab como merge requests

Se não quiser fazer push das traduções para um repositório do GitLab, elas podem ser enviadas como uma ou várias merge requests.

Precisa configurar credenciais de API para fazer isso funcionar.

Pagure

Novo na versão 4.3.2.

Isto apenas adiciona uma camada fina sobre o Git a usar a API do Pagure para permitir fazer push de alterações de tradução como merge requests, ao invés de fazer push diretamente para o repositório.

Não há necessidade de usá-lo para acessar repositórios de Git, o Git comum funciona da mesma forma, a ser a única diferença como o push para um repositório é manipulado. Com Git, o push das alterações é feito diretamente para o repositório, enquanto Pagure cria merge request.

Enviar alterações para o Pagure como solicitações de mesclagem

Se não quiser fazer push das traduções para um repositório do Pagure, elas podem ser enviadas como uma ou várias merge requests.

Precisa configurar credenciais de API para fazer isso funcionar.

Gerrit

Novo na versão 2.2.

Adiciona uma camada fina sobre o Git a usar a ferramenta git-review para permitir fazer push de alterações de tradução como review requests do Gerrit, ao invés de fazer push diretamente para o repositório.

A documentação Gerrit tem os detalhes sobre a configuração necessária para configurar tais repositórios.

Mercurial

Novo na versão 2.1.

Mercurial é outro VCS que pode usar diretamente no Weblate.

Nota

Ele deve funcionar com qualquer versão Mercurial, mas às vezes há alterações incompatíveis na interface de linha de comando que quebra a integração Weblate.

Veja também

Consulte Acessando repositórios para obter informações sobre como acessar diferentes tipos de repositórios.

Subversion

Novo na versão 2.8.

O Weblate usa git-svn para interagir com repositórios subversion. É um script Perl que permite que o subversion seja usado por um cliente Git, a permitir que os utilizadores mantenham um clone completo do repositório interno e façam commit localmente.

Nota

O Weblate tenta detetar o layout do repositório Subversion automaticamente – ele tem suporta a URLs diretas para remos ou repositórios com layout padrão (branches/, tags/ e trunk/). Mais informações sobre isso podem ser encontradas na documentação do git-svn. Se o repositório não tiver um layout padrão e encontrar erros, tente incluir o nome do ramo na URL do repositório e deixar a ramo vazia.

Alterado na versão 2.19: Antes disso, apenas repositórios a usar o layout padrão eram suportados.

Credenciais de Subversion

Weblate espera que tenha aceito o certificado com antecedência (e as suas credenciais, se necessário). Ele procurará inseri-las no diretório :set:`DATA_DIR`. Aceite o certificado a utilizar svn uma vez com a variável de ambiente $HOME definida como DATA_DIR:

# Use DATA_DIR as configured in Weblate settings.py, it is /app/data in the Docker
HOME=${DATA_DIR}/home svn co https://svn.example.com/example

Veja também

DATA_DIR

Ficheiros locais

Git

Dica

Underneath, this uses Git. It requires Git installed and allows you to switch to using Git natively with full history of your translations.

Novo na versão 3.8.

O Weblate também pode operar sem um VCS remoto. As traduções iniciais são importadas a carrega-las. Mais tarde, pode substituir ficheiros individuais a enviar ficheiros ou a adicionar cadeias de tradução diretamente do Weblate (atualmente disponível apenas para traduções monolíngues).

No fundo, o Weblate cria um repositório de Git para si e todas as alterações são rastreadas. Caso decida mais tarde usar um VCS para armazenar as traduções, já tem um repositório dentro do Weblate pode basear na sua integração.

API REST do Weblate

Novo na versão 2.6: A API REST está disponível desde o Weblate 2.6.

A API é acessível na URL /api/ e é baseada em framework Django REST. Pode utilizá-la diretamente ou por Cliente Weblate.

Autenticação e parâmetros genéricos

A API do projeto público está disponível sem autenticação, embora as solicitações não autenticadas sejam fortemente limitadas (por padrão a 100 solicitações por dia), por isso é recomendado usar autenticação. A autenticação usa um token, que pode obter no seu perfil. Use-o no cabeçalho Authorization:

ANY /

O comportamento de solicitação genérico para a API, os cabeçalhos, códigos de estado e parâmetros aqui aplicam-se a todos os pontos finais também.

Parâmetros de consulta
  • format – Formato de resposta (substitui Accept). Os valores possíveis dependem da configuração do quadro REST, por padrão json e api são suportados. Este último fornece uma interface de navegador web para API.

  • page – Returns given page of paginated results (use next and previous fields in response to automate the navigation).

Cabeçalhos de solicitação
  • Accept – o tipo de conteúdo de resposta depende do cabeçalho Accept

  • Authorization – token opcional para se autenticar como Authorization: Token SEU-TOKEN

Cabeçalhos de resposta
  • Content-Type – isso depende de cabeçalho Accept da solicitação

  • Allow – lista de métodos HTTP permitidos no objeto

Objeto JSON de resposta
  • detail (string) – descrição detalhada do resultado (para códigos de estado HTTP diferentes de 200 OK)

  • count (int) – contagem total de itens para listas de objetos

  • next (string) – URL da próxima página para listas de objetos

  • previous (string) – URL da página anterior para listas de objetos

  • results (array) – resultados para listas de objetos

  • url (string) – URL para acessar esse recurso a usar API

  • web_url (string) – URL para acessar esse recurso a usar navegador web

Códigos de estado

Exemplos de autenticação

Exemplo de solicitação:

GET /api/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript
Authorization: Token YOUR-TOKEN

Exemplo de resposta:

HTTP/1.0 200 OK
Date: Fri, 25 Mar 2016 09:46:12 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, HEAD, OPTIONS

{
    "projects":"http://example.com/api/projects/",
    "components":"http://example.com/api/components/",
    "translations":"http://example.com/api/translations/",
    "languages":"http://example.com/api/languages/"
}

Exemplo de CURL:

curl \
    -H "Authorization: Token TOKEN" \
    https://example.com/api/

Exemplos de passagem de parâmetros

Para o método POST os parâmetros podem ser especificados como envio de formulário (application/x-www-form-urlencoded) ou como JSON (application/json).

Exemplo de solicitação de formulário:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Token TOKEN

operation=pull

Exemplo de solicitação JSON:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplo de CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Exemplo de CURL JSON:

curl \
    --data-binary '{"operation":"pull"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Limitação de taxa da API

As solicitações de API são limitadas; a configuração padrão limita-a a 100 solicitações por dia para utilizadores anônimos e 5000 solicitações por hora para utilizadores autenticados.

A limitação da taxa pode ser ajustada no settings.py. Consulte Throttling na documentação do framework Django REST para obter mais detalhes sobre como configurá-la.

O estado de limitação de taxa é relatado nos seguintes cabeçalhos:

X-RateLimit-Limit

Limite de limitação de taxa de solicitações para realizar

X-RateLimit-Remaining

Limite restante de solicitações

X-RateLimit-Reset

Quantidade de segundos até que a janela de «ratelimit» seja reiniciada

Alterado na versão 4.1: Adicionados cabeçalhos de estado de limitação de taxa.

Ponto de entrada da API

GET /api/

O ponto de entrada raiz da API.

Exemplo de solicitação:

GET /api/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript
Authorization: Token YOUR-TOKEN

Exemplo de resposta:

HTTP/1.0 200 OK
Date: Fri, 25 Mar 2016 09:46:12 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, HEAD, OPTIONS

{
    "projects":"http://example.com/api/projects/",
    "components":"http://example.com/api/components/",
    "translations":"http://example.com/api/translations/",
    "languages":"http://example.com/api/languages/"
}

Utilizadores

Novo na versão 4.0.

GET /api/users/

Retorna uma lista de utilizadores se tiver permissões para ver utilizadores geridos. Se não, então pode ver apenas os seus próprios detalhes.

Veja também

Os atributos do objeto dos utilizadores estão documentados em GET /api/users/(str:username)/.

POST /api/users/

Cria um novo utilizador.

Parâmetros
  • username (string) – Nome de utilizador

  • full_name (string) – Nome completo do utilizador

  • email (string) – E-mail do utilizador

  • is_superuser (boolean) – O utilizador é superutilizador? (opcional)

  • is_active (boolean) – O utilizador está ativo? (opcional)

GET /api/users/(str: username)/

Retorna informações sobre os utilizadores.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Objeto JSON de resposta
  • username (string) – nome de utilizador de um utilizador

  • full_name (string) – nome completo de um utilizador

  • email (string) – email de um utilizador

  • is_superuser (boolean) – se o utilizador é um superutilizador

  • is_active (boolean) – se o utilizador está ativo

  • date_joined (string) – data de criação do utilizador

  • groups (array) – ligações para grupos associados; veja GET /api/groups/(int:id)/

Exemplo de dados JSON:

{
    "email": "user@example.com",
    "full_name": "Example User",
    "username": "exampleusername",
    "groups": [
        "http://example.com/api/groups/2/",
        "http://example.com/api/groups/3/"
    ],
    "is_superuser": true,
    "is_active": true,
    "date_joined": "2020-03-29T18:42:42.617681Z",
    "url": "http://example.com/api/users/exampleusername/",
    "statistics_url": "http://example.com/api/users/exampleusername/statistics/"
}
PUT /api/users/(str: username)/

Altera os parâmetros do utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Objeto JSON de resposta
  • username (string) – nome de utilizador de um utilizador

  • full_name (string) – nome completo de um utilizador

  • email (string) – email de um utilizador

  • is_superuser (boolean) – se o utilizador é um superutilizador

  • is_active (boolean) – se o utilizador está ativo

  • date_joined (string) – data de criação do utilizador

PATCH /api/users/(str: username)/

Altera os parâmetros do utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Objeto JSON de resposta
  • username (string) – nome de utilizador de um utilizador

  • full_name (string) – nome completo de um utilizador

  • email (string) – email de um utilizador

  • is_superuser (boolean) – se o utilizador é um superutilizador

  • is_active (boolean) – se o utilizador está ativo

  • date_joined (string) – data de criação do utilizador

DELETE /api/users/(str: username)/

Apaga todas as informações do utilizador e marca o utilizador como inativo.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

POST /api/users/(str: username)/groups/

Associa grupos a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Parâmetros de formulário
  • string group_id – O ID de grupo único

GET /api/users/(str: username)/statistics/

Lista as estatísticas de um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Objeto JSON de resposta
  • translated (int) – Quantidade de traduções por utilizador

  • suggested (int) – Quantidade de sugestões por utilizador

  • uploaded (int) – Quantidade de envios por utilizador

  • commented (int) – Quantidade de comentários por utilizador

  • languages (int) – Quantidade de idiomas que o utilizador pode traduzir

GET /api/users/(str: username)/notifications/

Lista de subscrições de um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

POST /api/users/(str: username)/notifications/

Associar subscrições a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

Objeto JSON da solicitação
  • notification (string) – Nome da notificação registada

  • scope (int) – Escopo de notificação a partir das opções disponíveis

  • frequency (int) – Escolha de frequência para notificações

GET /api/users/(str: username)/notifications/(int: subscription_id)/

Obtém uma assinatura associada a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

  • subscription_id (int) – ID da notificação registada

PUT /api/users/(str: username)/notifications/(int: subscription_id)/

Edita uma assinatura associada a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

  • subscription_id (int) – ID da notificação registada

Objeto JSON da solicitação
  • notification (string) – Nome da notificação registada

  • scope (int) – Escopo de notificação a partir das opções disponíveis

  • frequency (int) – Escolha de frequência para notificações

PATCH /api/users/(str: username)/notifications/(int: subscription_id)/

Edita uma assinatura associada a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

  • subscription_id (int) – ID da notificação registada

Objeto JSON da solicitação
  • notification (string) – Nome da notificação registada

  • scope (int) – Escopo de notificação a partir das opções disponíveis

  • frequency (int) – Escolha de frequência para notificações

DELETE /api/users/(str: username)/notifications/(int: subscription_id)/

Apaga uma assinatura associada a um utilizador.

Parâmetros
  • username (string) – Nome de utilizador do utilizador

  • subscription_id – Nome da notificação registada

  • subscription_id – int

Grupos

Novo na versão 4.0.

GET /api/groups/

Retorna uma lista de grupos se tiver permissões para ver grupos geridos. Se não, então pode ver apenas os grupos dos quais o utilizador faz parte.

Veja também

Os atributos de objeto de grupo estão documentados em GET /api/groups/(int:id)/.

POST /api/groups/

Cria um novo grupo.

Parâmetros
  • name (string) – Nome do grupo

  • project_selection (int) – Grupo de seleção de projetos a partir de opções dadas

  • language_selection (int) – Grupo de idiomas selecionados a partir de opções dadas

GET /api/groups/(int: id)/

Devolve informação sobre o grupo.

Parâmetros
  • id (int) – ID do grupo

Objeto JSON de resposta

Exemplo de dados JSON:

{
    "name": "Guests",
    "project_selection": 3,
    "language_selection": 1,
    "url": "http://example.com/api/groups/1/",
    "roles": [
        "http://example.com/api/roles/1/",
        "http://example.com/api/roles/2/"
    ],
    "languages": [
        "http://example.com/api/languages/en/",
        "http://example.com/api/languages/cs/",
    ],
    "projects": [
        "http://example.com/api/projects/demo1/",
        "http://example.com/api/projects/demo/"
    ],
    "componentlist": "http://example.com/api/component-lists/new/",
    "components": [
        "http://example.com/api/components/demo/weblate/"
    ]
}
PUT /api/groups/(int: id)/

Altera os parâmetros do grupo.

Parâmetros
  • id (int) – ID do grupo

Objeto JSON de resposta
  • name (string) – nome de um grupo

  • project_selection (int) – inteiro correspondente ao grupo de projetos

  • language_selection (int) – inteiro correspondente ao grupo de idiomas

PATCH /api/groups/(int: id)/

Altera os parâmetros do grupo.

Parâmetros
  • id (int) – ID do grupo

Objeto JSON de resposta
  • name (string) – nome de um grupo

  • project_selection (int) – inteiro correspondente ao grupo de projetos

  • language_selection (int) – inteiro correspondente ao grupo de idiomas

DELETE /api/groups/(int: id)/

Apaga o grupo.

Parâmetros
  • id (int) – ID do grupo

POST /api/groups/(int: id)/roles/

Associar funções a um grupo.

Parâmetros
  • id (int) – ID do grupo

Parâmetros de formulário
  • string role_id – O ID de função único

POST /api/groups/(int: id)/components/

Associa componentes a um grupo.

Parâmetros
  • id (int) – ID do grupo

Parâmetros de formulário
  • string component_id – O ID de componente único

DELETE /api/groups/(int: id)/components/(int: component_id)

Eliminar componente de um grupo.

Parâmetros
  • id (int) – ID do grupo

  • component_id (int) – O ID de componente único

POST /api/groups/(int: id)/projects/

Associa projetos a um grupo.

Parâmetros
  • id (int) – ID do grupo

Parâmetros de formulário
  • string project_id – O ID do projeto único

DELETE /api/groups/(int: id)/projects/(int: project_id)

Eliminar projeto de um grupo.

Parâmetros
  • id (int) – ID do grupo

  • project_id (int) – O ID do projeto único

POST /api/groups/(int: id)/languages/

Associar línguas a um grupo.

Parâmetros
  • id (int) – ID do grupo

Parâmetros de formulário
  • string language_code – O código de idioma único

DELETE /api/groups/(int: id)/languages/(string: language_code)

Eliminar língua de um grupo.

Parâmetros
  • id (int) – ID do grupo

  • language_code (string) – O código de idioma único

POST /api/groups/(int: id)/componentlists/

Associa listas de componentes a um grupo.

Parâmetros
  • id (int) – ID do grupo

Parâmetros de formulário
  • string component_list_id – O ID de lista de componentes único

DELETE /api/groups/(int: id)/componentlists/(int: component_list_id)

Apaga a lista de componentes de um grupo.

Parâmetros
  • id (int) – ID do grupo

  • component_list_id (int) – O ID de lista de componentes único

Funções

GET /api/roles/

Retorna uma lista de todas as funções associadas ao utilizador. Se o utilizador for superutilizador, então a lista de todas as funções existentes será retornada.

Veja também

Os atributos de objeto de funções estão documentados em GET /api/roles/(int:id)/.

POST /api/roles/

Cria uma nova função.

Parâmetros
  • name (string) – Nome da função

  • permissions (array) – Lista de codinomes de permissões

GET /api/roles/(int: id)/

Retorna informações sobre uma função.

Parâmetros
  • id (int) – ID da função

Objeto JSON de resposta
  • name (string) – Nome da função

  • permissions (array) – lista de codinomes de permissões

Exemplo de dados JSON:

{
    "name": "Access repository",
    "permissions": [
        "vcs.access",
        "vcs.view"
    ],
    "url": "http://example.com/api/roles/1/",
}
PUT /api/roles/(int: id)/

Altera os parâmetros da função.

Parâmetros
  • id (int) – ID da função

Objeto JSON de resposta
  • name (string) – Nome da função

  • permissions (array) – lista de codinomes de permissões

PATCH /api/roles/(int: id)/

Altera os parâmetros da função.

Parâmetros
  • id (int) – ID da função

Objeto JSON de resposta
  • name (string) – Nome da função

  • permissions (array) – lista de codinomes de permissões

DELETE /api/roles/(int: id)/

Apaga a função.

Parâmetros
  • id (int) – ID da função

Idiomas

GET /api/languages/

Retorna uma lista de todos os idiomas.

Veja também

Os atributos do objeto de idioma estão documentados em GET /api/languages/(string:language)/.

POST /api/languages/

Cria uma nova língua.

Parâmetros
  • code (string) – Nome do idioma

  • name (string) – Nome do idioma

  • direction (string) – Direção do texto

  • plural (object) – Fórmula e quantidade de plural do idioma

GET /api/languages/(string: language)/

Devolve informação sobre uma língua.

Parâmetros
  • language (string) – Código do idioma

Objeto JSON de resposta
  • code (string) – Código do idioma

  • direction (string) – Direção do texto

  • plural (object) – Objeto de informações de plurais do idioma

  • aliases (array) – vetor de codinomes para o idioma

Exemplo de dados JSON:

{
    "code": "en",
    "direction": "ltr",
    "name": "English",
    "plural": {
        "id": 75,
        "source": 0,
        "number": 2,
        "formula": "n != 1",
        "type": 1
    },
    "aliases": [
        "english",
        "en_en",
        "base",
        "source",
        "eng"
    ],
    "url": "http://example.com/api/languages/en/",
    "web_url": "http://example.com/languages/en/",
    "statistics_url": "http://example.com/api/languages/en/statistics/"
}
PUT /api/languages/(string: language)/

Altera os parâmetros linguísticos.

Parâmetros
  • language (string) – Código do idioma

Objeto JSON da solicitação
  • name (string) – Nome do idioma

  • direction (string) – Direção do texto

  • plural (object) – Detalhes de plural do idioma

PATCH /api/languages/(string: language)/

Altera os parâmetros linguísticos.

Parâmetros
  • language (string) – Código do idioma

Objeto JSON da solicitação
  • name (string) – Nome do idioma

  • direction (string) – Direção do texto

  • plural (object) – Detalhes de plural do idioma

DELETE /api/languages/(string: language)/

Apaga o idioma.

Parâmetros
  • language (string) – Código do idioma

GET /api/languages/(string: language)/statistics/

Devolve estatísticas para uma língua.

Parâmetros
  • language (string) – Código do idioma

Objeto JSON de resposta
  • total (int) – quantidade total de cadeias

  • total_words (int) – número total de palavras

  • last_change (timestamp) – últimas alterações na língua

  • recent_changes (int) – número total de alterações

  • translated (int) – quantidade de cadeias traduzidas

  • translated_percent (float) – percentagem de cadeia traduzidas

  • translated_words (int) – número de palavras traduzidas

  • translated_words_percent (int) – percentagem de palavras traduzidas

  • translated_chars (int) – número de caracteres traduzidos

  • translated_chars_percent (int) – percentagem de caracteres traduzidos

  • total_chars (int) – número total de caracteres

  • fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)

  • fuzzy_percent (int) – percentagem de cadeias aproximadas (marcados para edição)

  • failing (int) – quantidade de cadeias com falha

  • failing – percentagem de cadeias com falha

Projetos

GET /api/projects/

Retorna uma lista de todos os projetos.

Veja também

Os atributos do objeto do projeto estão documentados em GET /api/projects/(string:project)/.

POST /api/projects/

Novo na versão 3.9.

Cria um novo projeto.

Parâmetros
  • name (string) – Nome do projeto

  • slug (string) – URL amigável do projeto

  • web (string) – Site da Web do Projeto

GET /api/projects/(string: project)/

Devolve informação sobre um projecto.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta

Exemplo de dados JSON:

{
    "name": "Hello",
    "slug": "hello",
    "url": "http://example.com/api/projects/hello/",
    "web": "https://weblate.org/",
    "web_url": "http://example.com/projects/hello/"
}
PATCH /api/projects/(string: project)/

Novo na versão 4.3.

Edita um projeto por uma solicitação PATCH.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

PUT /api/projects/(string: project)/

Novo na versão 4.3.

Edita um projeto por uma solicitação :http:method:PUT`.

Parâmetros
  • project (string) – URL semântico do projeto

DELETE /api/projects/(string: project)/

Novo na versão 3.9.

Apaga um projeto.

Parâmetros
  • project (string) – URL semântico do projeto

GET /api/projects/(string: project)/changes/

Retorna uma lista de alterações no projeto. Este é essencialmente um GET /api/changes/ no escopo do projeto a aceitar os mesmos parâmetros.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta
GET /api/projects/(string: project)/repository/

Retorna informações sobre o estado do repositório VCS. Este contém apenas um resumo geral de todos os repositórios para o projeto. Para obter um estado mais detalhado, use http:get:/api/components/(string:project)/(string:component)/repository/.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta
  • needs_commit (boolean) – se há alguma alteração pendente de commit

  • needs_merge (boolean) – se há alguma alteração do upstream para mesclar

  • needs_push (boolean) – se há alguma alteração local para fazer push

Exemplo de dados JSON:

{
    "needs_commit": true,
    "needs_merge": false,
    "needs_push": true
}
POST /api/projects/(string: project)/repository/

Realiza a operação dada no repositório VCS.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON da solicitação
  • operation (string) – Operação para realizar: uma de push, pull, commit, reset, cleanup, file-sync

Objeto JSON de resposta
  • result (boolean) – resultado da operação

Exemplo de CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/repository/

Exemplo de solicitação JSON:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"result":true}
GET /api/projects/(string: project)/components/

Retorna uma lista de componentes de tradução no projeto dado.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta
POST /api/projects/(string: project)/components/

Novo na versão 3.9.

Alterado na versão 4.3: Os parâmetros `` zipfile`` e `` docfile`` agora são aceitos para componentes sem VCS, veja Ficheiros locais.

Alterado na versão 4.6: The cloned repositories are now automatically shared within a project using URLs internas do Weblate. Use disable_autoshare to turn off this.

Cria componentes de tradução no projeto dado.

Dica

Use URLs internas do Weblate ao criar vários componentes a partir de um único repositório VCS.

Nota

A maior parte da criação de componentes acontece em segundo plano. Verifique o atributo task_url do componente criado e siga o progresso por lá.

Parâmetros
  • project (string) – URL semântico do projeto

Parâmetros de formulário
  • file zipfile – Ficheiro ZIP para enviar ao Weblate para inicialização de traduções

  • file docfile – Documento para traduzir

  • boolean disable_autoshare – Disables automatic repository sharing via URLs internas do Weblate.

Objeto JSON de resposta

JSON não pode ser usado ao enviar os ficheiros a usar os parâmetros zipfile e docfile. Os dados devem ser enviados como multipart/form-data.

Exemplo de solicitação de formulário com CURL:

curl \
    --form docfile=@strings.html \
    --form name=Weblate \
    --form slug=weblate \
    --form file_format=html \
    --form new_lang=add \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplo de solicitação JSON com CURL:

curl \
    --data-binary '{
        "branch": "main",
        "file_format": "po",
        "filemask": "po/*.po",
        "git_export": "",
        "license": "",
        "license_url": "",
        "name": "Weblate",
        "slug": "weblate",
        "repo": "file:///home/nijel/work/weblate-hello",
        "template": "",
        "new_base": "",
        "vcs": "git"
    }' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplo de solicitação JSON:

POST /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "vcs": "git"
}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
GET /api/projects/(string: project)/languages/

Retorna estatísticas paginadas para todos os idiomas num projeto.

Novo na versão 3.8.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta
  • results (array) – vetor de objetos de estatísticas de tradução

  • language (string) – nome de idioma

  • code (string) – código de idioma

  • total (int) – quantidade total de cadeias

  • translated (int) – quantidade de cadeias traduzidas

  • translated_percent (float) – percentagem de cadeia traduzidas

  • total_words (int) – número total de palavras

  • translated_words (int) – número de palavras traduzidas

  • words_percent (float) – percentagem de palavras traduzidas

GET /api/projects/(string: project)/statistics/

Retorna estatísticas para um projeto.

Novo na versão 3.8.

Parâmetros
  • project (string) – URL semântico do projeto

Objeto JSON de resposta
  • total (int) – quantidade total de cadeias

  • translated (int) – quantidade de cadeias traduzidas

  • translated_percent (float) – percentagem de cadeia traduzidas

  • total_words (int) – número total de palavras

  • translated_words (int) – número de palavras traduzidas

  • words_percent (float) – percentagem de palavras traduzidas

Componentes

GET /api/components/

Retorna uma lista de componentes de tradução.

Veja também

Os atributos do objeto componente estão documentados em GET /api/components/(string:project)/(string:component)/.

GET /api/components/(string: project)/(string: component)/

Retorna informações sobre o componente de tradução.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta

Exemplo de dados JSON:

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "source_language": {
        "code": "en",
        "direction": "ltr",
        "name": "English",
        "url": "http://example.com/api/languages/en/",
        "web_url": "http://example.com/languages/en/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
PATCH /api/components/(string: project)/(string: component)/

Edita uma componente por uma solicitação PATCH.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • source_language (string) – Código de idioma fonte do projeto (opcional)

Objeto JSON da solicitação
  • name (string) – nome do componente

  • slug (string) – URL amigável do componente

  • repo (string) – URL do repositório VCS

Exemplo de CURL:

curl \
    --data-binary '{"name": "new name"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    PATCH http://example.com/api/projects/hello/components/

Exemplo de solicitação JSON:

PATCH /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{
    "name": "new name"
}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "new name",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
PUT /api/components/(string: project)/(string: component)/

Edita um componente por uma solicitação PUT.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON da solicitação
  • branch (string) – Ramo do repositório VCS

  • file_format (string) – formato de ficheiro de traduções

  • filemask (string) – máscara dos ficheiros de tradução no repositório

  • name (string) – nome do componente

  • slug (string) – URL amigável do componente

  • repo (string) – URL do repositório VCS

  • template (string) – ficheiro base para traduções monolíngues

  • new_base (string) – ficheiro base para adicionar novas traduções

  • vcs (string) – sistema de controle de versão

DELETE /api/components/(string: project)/(string: component)/

Novo na versão 3.9.

Apaga um componente.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

GET /api/components/(string: project)/(string: component)/changes/

Retorna uma lista de alterações de componentes. Este é essencialmente um componente com escop GET /api/changes/ a aceitar os mesmos parâmetros.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
GET /api/components/(string: project)/(string: component)/screenshots/

Retorna uma lista de capturas de ecrã do componente.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
GET /api/components/(string: project)/(string: component)/lock/

Retorna o estado do bloqueio do componente.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
  • locked (boolean) – se o componente está bloqueado para atualizações

Exemplo de dados JSON:

{
    "locked": false
}
POST /api/components/(string: project)/(string: component)/lock/

Define o estado de bloqueio do componente.

A resposta é a mesma que GET /api/components/(string:project)/(string:component)/lock/.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON da solicitação
  • lock – Booleano se deve ser bloqueado ou não.

Exemplo de CURL:

curl \
    -d lock=true \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Exemplo de solicitação JSON:

POST /api/components/hello/weblate/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"lock": true}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"locked":true}
GET /api/components/(string: project)/(string: component)/repository/

Retorna informações sobre o estado do repositório VCS.

A resposta é a mesma para GET /api/projects/(string:project)/repository/.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
  • needs_commit (boolean) – se há alguma alteração pendente de commit

  • needs_merge (boolean) – se há alguma alteração do upstream para mesclar

  • needs_push (boolean) – se há alguma alteração local para fazer push

  • remote_commit (string) – Informações do commit remoto

  • status (string) – Estado do repositório VCS como relatado pelo VCS

  • merge_failure – Texto a descrever uma falha de mesclagem ou nulo se houver nenhuma

POST /api/components/(string: project)/(string: component)/repository/

Executa a operação fornecida num repositório VCS.

Veja POST /api/projects/(string:project)/repository/ para a documentação.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON da solicitação
  • operation (string) – Operação para executar: um de push, pull, commit, reset, cleanup

Objeto JSON de resposta
  • result (boolean) – resultado da operação

Exemplo de CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Exemplo de solicitação JSON:

POST /api/components/hello/weblate/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"result":true}
GET /api/components/(string: project)/(string: component)/monolingual_base/

Descarrega o ficheiro base para traduções monolíngues.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

GET /api/components/(string: project)/(string: component)/new_template/

Descarrega o ficheiro de modelo para novas traduções.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

GET /api/components/(string: project)/(string: component)/translations/

Retorna uma lista de objetos de tradução no componente fornecido.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
POST /api/components/(string: project)/(string: component)/translations/

Cria uma nova tradução no componente fornecido.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON da solicitação
Objeto JSON de resposta
  • result (object) – novo objecto de tradução criado

Exemplo de CURL:

curl \
    -d language_code=cs \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplo de solicitação JSON:

POST /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"language_code": "cs"}

Exemplo de resposta JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "failing_checks": 0,
    "failing_checks_percent": 0,
    "failing_checks_words": 0,
    "filename": "po/cs.po",
    "fuzzy": 0,
    "fuzzy_percent": 0.0,
    "fuzzy_words": 0,
    "have_comment": 0,
    "have_suggestion": 0,
    "is_template": false,
    "is_source": false,
    "language": {
        "code": "cs",
        "direction": "ltr",
        "name": "Czech",
        "url": "http://example.com/api/languages/cs/",
        "web_url": "http://example.com/languages/cs/"
    },
    "language_code": "cs",
    "id": 125,
    "last_author": null,
    "last_change": null,
    "share_url": "http://example.com/engage/hello/cs/",
    "total": 4,
    "total_words": 15,
    "translate_url": "http://example.com/translate/hello/weblate/cs/",
    "translated": 0,
    "translated_percent": 0.0,
    "translated_words": 0,
    "url": "http://example.com/api/translations/hello/weblate/cs/",
    "web_url": "http://example.com/projects/hello/weblate/cs/"
}
GET /api/components/(string: project)/(string: component)/statistics/

Retorna estatísticas paginadas para todas as traduções dentro do componente.

Novo na versão 2.7.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta

Retorna projetos vinculados a um componente.

Novo na versão 4.5.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Objeto JSON de resposta
POST /api/components/(string: project)/(string: component)/links/

Associa projeto a um componente.

Novo na versão 4.5.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

Parâmetros de formulário
  • string project_slug – URL amigável do projeto

Remove associação de um projeto com um componente.

Novo na versão 4.5.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • project_slug (string) – Slug do projeto para remover

Traduções

GET /api/translations/

Devolve uma lista de traduções.

Veja também

Atributos de objeto de tradução estão documentados em GET /api/translations/(string:project)/(string:component)/(string:language)/.

GET /api/translations/(string: project)/(string: component)/(string: language)/

Devolve informação sobre uma tradução.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON de resposta
  • component (object) – objeto do componente; veja GET /api/components/(string:project)/(string:component)/

  • failing_checks (int) – quantidade de cadeias com verificações falhadas

  • failing_checks_percent (float) – Cadeias traduzidas com quaisquer verificações falhadas

  • failing_checks_words (int) – quantidade de verificações falhadas

  • filename (string) – Nome do ficheiro da tradução

  • fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)

  • fuzzy_percent (float) – percentagem de cadeias aproximadas (marcados para edição)

  • fuzzy_words (int) – quantidade de palavras em cadeias aproximadas (marcados para edição)

  • have_comment (int) – quantidade de cadeias com comentário

  • have_suggestion (int) – quantidade de cadeias com sugestão

  • is_template (boolean) – se a tradução tem uma base monolingue

  • language (object) – objeto do idioma fonte; veja GET /api/languages/(string:language)/

  • language_code (string) – código de idioma usado no repositório; isso pode ser diferente do código de idioma no objeto de linguagem

  • last_author (string) – nome do úlitmo autor

  • last_change (timestamp) – data e hora da última alteração

  • revision (string) – hash de revisão para o ficheiro

  • share_url (string) – URL para compartilhar a levar à página de engajamento

  • total (int) – quantidade total de cadeias

  • total_words (int) – número total de palavras

  • translate_url (string) – URL para tradução

  • translated (int) – quantidade de cadeias traduzidas

  • translated_percent (float) – percentagem de cadeia traduzidas

  • translated_words (int) – número de palavras traduzidas

  • repository_url (string) – URL para estado do repositório; veja GET /api/translations/(string:project)/(string:component)/(string:language)/repository/

  • file_url (string) – URL para objeto ficheiro; veja GET /api/translations/(string:project)/(string:component)/(string:language)/file/

  • changes_list_url (string) – URL para lista de alterações; veja GET /api/translations/(string:project)/(string:component)/(string:language)/changes/

  • units_list_url (string) – URL para lista de cadeias; veja GET /api/translations/(string:project)/(string:component)/(string:language)/units/

Exemplo de dados JSON:

{
    "component": {
        "branch": "main",
        "file_format": "po",
        "filemask": "po/*.po",
        "git_export": "",
        "license": "",
        "license_url": "",
        "name": "Weblate",
        "new_base": "",
        "project": {
            "name": "Hello",
            "slug": "hello",
            "source_language": {
                "code": "en",
                "direction": "ltr",
                "name": "English",
                "url": "http://example.com/api/languages/en/",
                "web_url": "http://example.com/languages/en/"
            },
            "url": "http://example.com/api/projects/hello/",
            "web": "https://weblate.org/",
            "web_url": "http://example.com/projects/hello/"
        },
        "repo": "file:///home/nijel/work/weblate-hello",
        "slug": "weblate",
        "template": "",
        "url": "http://example.com/api/components/hello/weblate/",
        "vcs": "git",
        "web_url": "http://example.com/projects/hello/weblate/"
    },
    "failing_checks": 3,
    "failing_checks_percent": 75.0,
    "failing_checks_words": 11,
    "filename": "po/cs.po",
    "fuzzy": 0,
    "fuzzy_percent": 0.0,
    "fuzzy_words": 0,
    "have_comment": 0,
    "have_suggestion": 0,
    "is_template": false,
    "language": {
        "code": "cs",
        "direction": "ltr",
        "name": "Czech",
        "url": "http://example.com/api/languages/cs/",
        "web_url": "http://example.com/languages/cs/"
    },
    "language_code": "cs",
    "last_author": "Weblate Admin",
    "last_change": "2016-03-07T10:20:05.499",
    "revision": "7ddfafe6daaf57fc8654cc852ea6be212b015792",
    "share_url": "http://example.com/engage/hello/cs/",
    "total": 4,
    "total_words": 15,
    "translate_url": "http://example.com/translate/hello/weblate/cs/",
    "translated": 4,
    "translated_percent": 100.0,
    "translated_words": 15,
    "url": "http://example.com/api/translations/hello/weblate/cs/",
    "web_url": "http://example.com/projects/hello/weblate/cs/"
}
DELETE /api/translations/(string: project)/(string: component)/(string: language)/

Novo na versão 3.9.

Apaga uma tradução.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

GET /api/translations/(string: project)/(string: component)/(string: language)/changes/

Retorna uma lista de alterações de tradução. Este é essencialmente um GET /api/changes/ no escopo de tradução a aceitar os mesmos parâmetros.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON de resposta
GET /api/translations/(string: project)/(string: component)/(string: language)/units/

Retorna uma lista de unidades de tradução.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

  • q (string) – Texto de consulta de pesquisa; veja Pesquisando (opcional)

Objeto JSON de resposta
POST /api/translations/(string: project)/(string: component)/(string: language)/units/

Adiciona uma nova unidade monolíngue.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON da solicitação
  • key (string) – Nome da unidade de tradução

  • value (array) – O valor da unidade de tradução

POST /api/translations/(string: project)/(string: component)/(string: language)/autotranslate/

Aciona a tradução automática.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON da solicitação
  • mode (string) – Modo de tradução automático

  • filter_type (string) – Tipo de filtro de tradução automática

  • auto_source (string) – Fonte da tradução automática – mt ou others

  • component (string) – Ativar a contribuição para a memória de tradução compartilhada para que o projeto tenha acesso a componentes adicionais.

  • engines (array) – Motores de tradução automática

  • threshold (string) – Limite de pontuação

GET /api/translations/(string: project)/(string: component)/(string: language)/file/

Descarrega o ficheiro de tradução atual como está armazenado no VCS (sem o parâmetro format) ou convertido para outro formato (veja Descarregar traduções).

Nota

Este ponto de extremidade da API usa uma lógica diferente para a saída do resto da API, pois opera no ficheiro inteiro em vez de nos dados. O conjunto de parâmetros aceitos no format difere e sem tal parâmetro obtém o ficheiro de tradução armazenado no VCS.

Parâmetros de consulta
  • format – Formato de ficheiro a usar; se não for especificado nenhuma conversão de formato acontecerá; formatos de ficheiro suportados: po, mo, xliff, xliff11, tbx, csv, xlsx, json, aresource, strings

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

POST /api/translations/(string: project)/(string: component)/(string: language)/file/

Envia um novo ficheiro com traduções.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Parâmetros de formulário
  • string conflict – Como lidar com conflitos (ignore, replace-translated ou replace-approved)

  • file file – Ficheiro enviado

  • string email – E-mail do autor

  • string author – Nome do autor

  • string method – Método de envio (translate, approve, suggest, fuzzy, replace, source, add), veja Métodos de importação

  • string fuzzy – Processamento de cadeia aproximadas (marcados para edição) (vazio, process, approve)

Exemplo de CURL:

curl -X POST \
    -F file=@strings.xml \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/translations/hello/android/cs/file/
GET /api/translations/(string: project)/(string: component)/(string: language)/repository/

Retorna informações sobre o estado do repositório VCS.

A resposta é a mesma que para GET /api/components/(string:project)/(string:component)/repository/.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

POST /api/translations/(string: project)/(string: component)/(string: language)/repository/

Realiza a operação dada no repositório VCS.

Veja POST /api/projects/(string:project)/repository/ para a documentação.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON da solicitação
  • operation (string) – Operação para executar: um de push, pull, commit, reset, cleanup

Objeto JSON de resposta
  • result (boolean) – resultado da operação

GET /api/translations/(string: project)/(string: component)/(string: language)/statistics/

Devolve estatísticas detalhadas da tradução.

Novo na versão 2.7.

Parâmetros
  • project (string) – URL semântico do projeto

  • component (string) – URL semântico do componente

  • language (string) – Código de idioma de tradução

Objeto JSON de resposta
  • code (string) – código de idioma

  • failing (int) – número de verificações falhadas

  • failing_percent (float) – percentagem de verificações com falha

  • fuzzy (int) – quantidade de cadeias aproximadas (marcados para edição)

  • fuzzy_percent (float) – percentagem de cadeias aproximadas (marcados para edição)

  • total_words (int) – número total de palavras

  • translated_words (int) – número de palavras traduzidas

  • last_author (string) – nome do úlitmo autor

  • last_change (timestamp) – data da última alteração

  • name (string) – nome de idioma

  • total (int) – quantidade total de cadeias

  • translated (int) – quantidade de cadeias traduzidas

  • translated_percent (float) – percentagem de cadeia traduzidas

  • url (string) – URL para acesso à tradução (URL de engajamento)

  • url_translate (string) – URL para acesso à tradução (URL real da tradução)

Unidades

Uma unidade é uma única parte de uma tradução que forma o par de um texto fonte com uma cadeia traduzida correspondente e também contém alguns metadados relacionados. O termo é derivado do Translate Toolkit e do XLIFF.

Novo na versão 2.10.

GET /api/units/

Retorna uma lista de unidades de tradução.

Veja também

Os atributos do objeto da unidade estão documentados em GET /api/units/(int:id)/.

GET /api/units/(int: id)/

Alterado na versão 4.3: O target e source agora são vetores para lidar apropriadamente com cadeias plurais.

Devolve informação sobre a unidade de tradução.

Parâmetros
  • id (int) – ID da unidade

Objeto JSON de resposta
  • translation (string) – URL de um objeto de tradução relacionado

  • source (array) – cadeia fonte

  • previous_source (string) – cadeia fonte anterior usado para correspondência aproximada

  • target (array) – cadeia alvo

  • id_hash (string) – identificador único da unidade

  • content_hash (string) – identificador único da cadeia fonte

  • location (string) – local da unidade no código-fonte

  • context (string) – contexto da unidade de tradução

  • note (string) – nota da unidade de tradução

  • flags (string) – marcadores da unidade de tradução

  • state (int) – estado da unidade, 0 - não traduzida, 10 - necessita tradução, 20 - traduzida, 30 - aprovada, 100 - somente leitura

  • fuzzy (boolean) – se a unidade está confusa ou marcada para revisão

  • translated (boolean) – Percentagem traduzido

  • approved (boolean) – Tradução aprovada

  • position (int) – posição da unidade no ficheiro de tradução

  • has_suggestion (boolean) – Cadeia tem sugestão

  • has_comment (boolean) – Cadeia tem comentário

  • has_failing_check (boolean) – Cadeia tem verificação falhada

  • num_words (int) – número de palavras de origem

  • priority (int) – prioridade de tradução. 100 é o padrão

  • id (int) – identificador da unidade

  • explanation (string) – Explicação de cadeia, disponível em unidades fonte, veja Informações adicionais sobre cadeias fonte

  • extra_flags (string) – Sinalizadores de cadeias adicionais, disponíveis nas unidades de fonte, veja Personalizando comportamento a usar marcadores

  • web_url (string) – URL onde a unidade pode ser editada

  • souce_unit (string) – Ligação da unidade fonte; veja GET /api/units/(int:id)/

PATCH /api/units/(int: id)/

Novo na versão 4.3.

Realiza uma atualização parcial na unidade de tradução.

Parâmetros
  • id (int) – ID da unidade

Objeto JSON da solicitação
PUT /api/units/(int: id)/

Novo na versão 4.3.

Realiza a atualização completa da unidade de tradução.

Parâmetros
  • id (int) – ID da unidade

Objeto JSON da solicitação
DELETE /api/units/(int: id)/

Novo na versão 4.3.

Apaga a unidade de tradução.

Parâmetros
  • id (int) – ID da unidade

Alterações

Novo na versão 2.10.

GET /api/changes/

Alterado na versão 4.1: A filtragem de alterações foi introduzida na versão 4.1.

Retorna uma lista de alterações de tradução.

Veja também

Os atributos do objeto de alteração estão documentados em GET /api/changes/(int:id)/.

Parâmetros de consulta
  • user (string) – Nome de utilizador do utilizador para filtros

  • action (int) – Ação para filtrar, pode ser usada várias vezes

  • timestamp_after (timestamp) – Data e hora no formato ISO 8601 para listar as alterações após

  • timestamp_before (timestamp) – Data e hora no formato ISO 8601 para listar as alterações antes

GET /api/changes/(int: id)/

Devolve informação sobre mudanças na tradução.

Parâmetros
  • id (int) – ID da alteração

Objeto JSON de resposta
  • unit (string) – URL de um objeto de unidade relacionado

  • translation (string) – URL de um objeto de tradução relacionado

  • component (string) – URL de um objeto de componente relacionado

  • user (string) – URL de um objeto de utilizador relacionado

  • author (string) – URL de um objeto de autor relacionado

  • timestamp (timestamp) – data e hora do evento

  • action (int) – identificação numérica da ação

  • action_name (string) – descrição textual da ação

  • target (string) – texto ou detalhe alterado de evento

  • id (int) – identificador da alteração

Capturas de ecrã

Novo na versão 2.14.

GET /api/screenshots/

Retorna uma lista de informações de cadeias de capturas de ecrã.

Veja também

Os atributos do objeto de captura de ecrã estão documentados em GET /api/screenshots/(int:id)/.

GET /api/screenshots/(int: id)/

Retorna informações sobre dados de captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Objeto JSON de resposta
  • name (string) – nome de um screenshot

  • component (string) – URL de um objeto de componente relacionado

  • file_url (string) – URL para descarregar um ficheiro; veja GET /api/screenshots/(int:id)/file/

  • units (array) – ligação para associar informações sobre cadeia fonte; veja GET /api/units/(int:id)/

GET /api/screenshots/(int: id)/file/

Descarrega a imagem de captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

POST /api/screenshots/(int: id)/file/

Substitui a imagem de captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Parâmetros de formulário
  • file image – Ficheiro enviado

Exemplo de CURL:

curl -X POST \
    -F image=@image.png \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/screenshots/1/file/
POST /api/screenshots/(int: id)/units/

Associa cadeias fonte com uma captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Parâmetros de formulário
  • string unit_id – ID da unidade

Objeto JSON de resposta
  • name (string) – nome de um screenshot

  • translation (string) – URL de um objeto de tradução relacionado

  • file_url (string) – URL para descarregar um ficheiro; veja GET /api/screenshots/(int:id)/file/

  • units (array) – ligação para associar informações sobre cadeia fonte; veja GET /api/units/(int:id)/

DELETE /api/screenshots/(int: id)/units/(int: unit_id)

Remove a associação da cadeia fonte com captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

  • unit_id – ID da unidade da cadeia fonte

POST /api/screenshots/

Cria uma nova captura de ecrã.

Parâmetros de formulário
  • file image – Ficheiro enviado

  • string name – Nome da captura do ecrã

  • string project_slug – URL amigável do projeto

  • string component_slug – URL amigável do componente

  • string language_code – Código do idioma

Objeto JSON de resposta
  • name (string) – nome de um screenshot

  • component (string) – URL de um objeto de componente relacionado

  • file_url (string) – URL para descarregar um ficheiro; veja GET /api/screenshots/(int:id)/file/

  • units (array) – ligação para associar informações sobre cadeia fonte; veja GET /api/units/(int:id)/

PATCH /api/screenshots/(int: id)/

Edita informações parciais sobre captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Objeto JSON de resposta
  • name (string) – nome de um screenshot

  • component (string) – URL de um objeto de componente relacionado

  • file_url (string) – URL para descarregar um ficheiro; veja GET /api/screenshots/(int:id)/file/

  • units (array) – ligação para associar informações sobre cadeia fonte; veja GET /api/units/(int:id)/

PUT /api/screenshots/(int: id)/

Edita informações completas sobre captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Objeto JSON de resposta
  • name (string) – nome de um screenshot

  • component (string) – URL de um objeto de componente relacionado

  • file_url (string) – URL para descarregar um ficheiro; veja GET /api/screenshots/(int:id)/file/

  • units (array) – ligação para associar informações sobre cadeia fonte; veja GET /api/units/(int:id)/

DELETE /api/screenshots/(int: id)/

Apagar captura de ecrã.

Parâmetros
  • id (int) – ID da captura de ecrã

Extensões

Novo na versão 4.4.1.

GET /api/addons/

Retorna uma lista de extensões.

Veja também

Os atributos do objeto de extensão estão documentados em GET /api/addons/(int:id)/.

GET /api/addons/(int: id)/

Retorna informações sobre dados da extensão.

Parâmetros
  • id (int) – ID da extensão

Objeto JSON de resposta
  • name (string) – nome de uma extensão

  • component (string) – URL de um objeto de componente relacionado

  • configuration (object) – Configuração opcional da extensão

Veja também

Extensões

POST /api/components/(string: project)/(string: component)/addons/

Cria uma nova extensão.

Parâmetros
  • project_slug (string) – URL amigável do projeto

  • component_slug (string) – URL amigável do componente

Objeto JSON da solicitação
  • name (string) – nome de uma extensão

  • configuration (object) – Configuração opcional da extensão

PATCH /api/addons/(int: id)/

Edita informações parciais sobre extensão.

Parâmetros
  • id (int) – ID da extensão

Objeto JSON de resposta
  • configuration (object) – Configuração opcional da extensão

PUT /api/addons/(int: id)/

Edita informações completas sobre extensão.

Parâmetros
  • id (int) – ID da extensão

Objeto JSON de resposta
  • configuration (object) – Configuração opcional da extensão

DELETE /api/addons/(int: id)/

Apaga extensão.

Parâmetros
  • id (int) – ID da extensão

Listas de componentes

Novo na versão 4.0.

GET /api/component-lists/

Retorna uma lista de listas de componentes.

Veja também

Os atributos do objeto da lista de componentes estão documentados em GET /api/component-lists/(str:slug)/.

GET /api/component-lists/(str: slug)/

Retorna informações sobre a lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

Objeto JSON de resposta
  • name (string) – nome de uma lista de componentes

  • slug (string) – URL amigável de uma lista de componentes

  • show_dashboard (boolean) – se deve mostrar num painel

  • components (array) – ligação para componentes associados; veja GET /api/components/(string:project)/(string:component)/

  • auto_assign (array) – regras de atribuição automáticas

PUT /api/component-lists/(str: slug)/

Altera os parâmetros da lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

Objeto JSON da solicitação
  • name (string) – nome de uma lista de componentes

  • slug (string) – URL amigável de uma lista de componentes

  • show_dashboard (boolean) – se deve mostrar num painel

PATCH /api/component-lists/(str: slug)/

Altera os parâmetros da lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

Objeto JSON da solicitação
  • name (string) – nome de uma lista de componentes

  • slug (string) – URL amigável de uma lista de componentes

  • show_dashboard (boolean) – se deve mostrar num painel

DELETE /api/component-lists/(str: slug)/

Apaga a lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

POST /api/component-lists/(str: slug)/components/

Associa um componente a uma lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

Parâmetros de formulário
  • string component_id – ID do componente

DELETE /api/component-lists/(str: slug)/components/(str: component_slug)

Desassocia um componente da lista de componentes.

Parâmetros
  • slug (string) – URL amigável da lista de componentes

  • component_slug (string) – URL amigável do componente

Glossário

Alterado na versão 4.5: Glossários agora são armazenados como componentes, traduções e cadeias comuns. Use a respetiva API.

Tarefas

Novo na versão 4.4.

GET /api/tasks/

A listagem de tarefas não está disponível no momento.

GET /api/tasks/(str: uuid)/

Retorna informações sobre uma tarefa

Parâmetros
  • uuid (string) – UUID da tarefa

Objeto JSON de resposta
  • completed (boolean) – Se a tarefa foi concluída

  • progress (int) – Progresso da tarefa em percentagem

  • result (object) – Resultado da tarefa ou detalhes do progresso

  • log (string) – Registos da tarefa

Metrics

GET /api/metrics/

Returns server metrics.

Objeto JSON de resposta
  • units (int) – Quantidade de unidades

  • units_translated (int) – Quantidade de unidades traduzidas

  • users (int) – Quantidade de utilizadores

  • changes (int) – Quantidade de alterações

  • projects (int) – Quantidade de projetos

  • components" (int) – Quantidade de componentes

  • translations" (int) – Quantidade de traduções

  • languages" (int) – Quantidade de idiomas usados

  • checks" (int) – Quantidade de verificações de qualidade acionadas

  • configuration_errors" (int) – Quantidade de erros de configuração

  • suggestions" (int) – Quantidade de sugestões pendentes

  • celery_queues (object) – Comprimento das filas de Celery, veja Tarefas de fundo a usar o Celery

  • name (string) – Nome do servidor configurado

Hooks de notificação

Os ganchos de notificação permitem que aplicações externos notifiquem o Weblate que o repositório VCS foi atualizado.

Pode usar terminais de repositório para projetos, componentes e traduções para atualizar repositórios individuais; veja POST /api/projects/(string:project)/repository/ para a documentação.

GET /hooks/update/(string: project)/(string: component)/

Obsoleto desde a versão 2.6: Use POST /api/components/(string:project)/(string:component)/repository/ em vez disso, que funciona corretamente com autenticação para projetos limitados por ACL.

Aciona a atualização de um componente (a buscar do VCS e a procurar por alterações de tradução).

GET /hooks/update/(string: project)/

Obsoleto desde a versão 2.6: Use POST /api/projects/(string:project)/repository/, que funciona corretamente com autenticação para projetos limitados por ACL.

Aciona a atualização de todos os componentes num projeto (a descarregar do VCS e a procurar por alterações de tradução).

POST /hooks/github/

Gancho especial para lidar com notificações do GitHub e atualizar automaticamente os componentes correspondentes.

Nota

O GitHub inclui suporte direto para notificar o Weblate: ative o gancho do serviço Weblate nas configurações do repositório e defina a URL para a URL da sua instalação do Weblate.

Veja também

Receber alterações do GitHub automaticamente

Para instruções sobre como configurar integração com GitHub

https://docs.github.com/pt/github/extending-github/about-webhooks

Informações genéricas sobre Webhooks do GitHub

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/gitlab/

Gancho especial para lidar com notificações do GitLab e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações do GitLab automaticamente

Para instrução sobre configurar integração com GitLab

https://docs.gitlab.com/ee/user/project/integrations/webhooks.html

Informações genéricas sobre Webhooks do GitLab

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/bitbucket/

Gancho especial para lidar com notificações do Bitbucket e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações do Bitbucket automaticamente

Para instruções sobre como configurar integração com Bitbucket

https://support.atlassian.com/bitbucket-cloud/docs/manage-webhooks/

Informações genéricas sobre Webhooks do Bitbucket

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/pagure/

Novo na versão 3.3.

Gancho especial para lidar com notificações do Pagure e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações do Pagure automaticamente

Para instruções sobre como configurar integração com Pagure

https://docs.pagure.org/pagure/usage/using_webhooks.html

Informações genéricas sobre Webhooks do Pagure

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/azure/

Novo na versão 3.8.

Gancho especial para lidar com notificações do Azure Repos e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações dos Azure Repos automaticamente

Para instruções sobre como configurar integração com Azure

https://docs.microsoft.com/pt-br/azure/devops/service-hooks/services/webhooks?view=azure-devops

Informações genéricas sobre Web Hooks do Azure Repos

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/gitea/

Novo na versão 3.9.

Gancho especial para lidar com notificações de Webhook do Gitea e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações dos Gitea Repos automaticamente

Para instruções sobre como configurar integração com Gitea

https://docs.gitea.io/pt-br/webhooks/

Informações genéricas sobre Webhooks do Gitea

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

POST /hooks/gitee/

Novo na versão 3.9.

Gancho especial para lidar com notificações de Webhook do Gitee e atualizar automaticamente os componentes correspondentes.

Veja também

Receber alterações de Gitee Repos automaticamente

Para instruções sobre como configurar integração com Gitee

https://gitee.com/help/categories/40

Informações genéricas sobre Webhooks do Gitee

ENABLE_HOOKS

Para ativar ganchos para todo o Weblate

Exportações

O Weblate fornece várias exportações para permitir que processe ainda mais os dados.

GET /exports/stats/(string: project)/(string: component)/
Parâmetros de consulta
  • format (string) – Formato de saída: json ou csv

Obsoleto desde a versão 2.6: Use GET /api/components/(string:project)/(string:component)/statistics/ e GET /api/translations/(string:project)/(string:component)/(string:language)/statistics/ em vez disso; ele também permite acesso a projetos controlados por ACL.

Recupera estatísticas para determinado componente em determinado formato.

Exemplo de solicitação:

GET /exports/stats/weblate/main/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript

Exemplo de resposta:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

[
    {
        "code": "cs",
        "failing": 0,
        "failing_percent": 0.0,
        "fuzzy": 0,
        "fuzzy_percent": 0.0,
        "last_author": "Michal Čihař",
        "last_change": "2012-03-28T15:07:38+00:00",
        "name": "Czech",
        "total": 436,
        "total_words": 15271,
        "translated": 436,
        "translated_percent": 100.0,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/cs/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/cs/"
    },
    {
        "code": "nl",
        "failing": 21,
        "failing_percent": 4.8,
        "fuzzy": 11,
        "fuzzy_percent": 2.5,
        "last_author": null,
        "last_change": null,
        "name": "Dutch",
        "total": 436,
        "total_words": 15271,
        "translated": 319,
        "translated_percent": 73.2,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/nl/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/nl/"
    },
    {
        "code": "el",
        "failing": 11,
        "failing_percent": 2.5,
        "fuzzy": 21,
        "fuzzy_percent": 4.8,
        "last_author": null,
        "last_change": null,
        "name": "Greek",
        "total": 436,
        "total_words": 15271,
        "translated": 312,
        "translated_percent": 71.6,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/el/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/el/"
    }
]

Feeds RSS

As alterações nas traduções são exportadas em feeds RSS.

GET /exports/rss/(string: project)/(string: component)/(string: language)/

Recupera o feed RSS com as alterações recentes de uma tradução.

GET /exports/rss/(string: project)/(string: component)/

Recupera feed RSS com alterações recentes para um componente.

GET /exports/rss/(string: project)/

Recupera feed RSS com alterações recentes para um projeto.

GET /exports/rss/language/(string: language)/

Recupera feed RSS com alterações recentes para um idioma.

GET /exports/rss/

Recupera feed RSS com alterações recentes para a instância Weblate.

Veja também

RSS na Wikipédia

Cliente Weblate

Novo na versão 2.7: Há suporte total do utilitário wlc desde o Weblate 2.7. Se estiver a usar uma versão mais antiga, algumas incompatibilidades com a API podem ocorrer.

Instalação

O cliente Weblate é enviado separadamente e inclui o módulo Python. Para usar os comandos abaixo, precisa instalar wlc:

pip3 install wlc

Uso do Docker

O Weblate Client também está disponível como uma imagem Docker.

A imagem está publicada no Docker Hub: https://hub.docker.com/r/weblate/wlc

Instalar:

docker pull weblate/wlc

O contentor Docker usa as configurações padrão do Weblate e se conecta à API implementada no localhost. A URL da API e API_KEY podem ser configuradas através dos argumentos aceitos pelo Weblate.

O comando para iniciar o contentor usa a seguinte sintaxe:

docker run --rm weblate/wlc [WLC_ARGS]

Exemplo:

docker run --rm weblate/wlc --url https://hosted.weblate.org/api/ list-projects

Quereria passar o seu Ficheiros de configuração para o contentor Docker, a abordagem mais fácil é adicionar o seu diretório atual como o volume /home/weblate:

docker run --volume $PWD:/home/weblate --rm weblate/wlc show

Primeiros Passos

A configuração do wlc é armazenada em ``~/.config/weblate``(veja Ficheiros de configuração para outros locais), por favor, crie-a para corresponder ao seu ambiente:

[weblate]
url = https://hosted.weblate.org/api/

[keys]
https://hosted.weblate.org/api/ = APIKEY

Depois pode invocar comandos no servidor predefinido:

wlc ls
wlc commit sandbox/hello-world

Sinopse

wlc [arguments] <command> [options]

Os comandos indicam, na verdade, qual operação deve ser realizada.

Descrição

O cliente Weblate é uma biblioteca Python e utilitário de linha de comando para gerir o Weblate remotamente a usar a API REST do Weblate. O utilitário de linha de comando pode ser invocado como wlc e está embutido em wlc.

Argumentos

O programa aceita os seguintes argumentos que definem o formato de saída ou qual a instância do Weblate a utilizar. Estes devem ser introduzidos antes de qualquer comando.

--format {csv,json,text,html}

Especifica o formato de saída.

--url URL

Especifica a URL da API. Substitui qualquer valor encontrado no ficheiro de configuração, consulte Ficheiros de configuração. A URL deve terminar com /api/, por exemplo, https://hosted.weblate.org/api/.

--key KEY

Especifica a chave do utilizador de API a ser usada. Substitui qualquer valor encontrado no ficheiro de configuração, consulte Ficheiros de configuração. Pode encontrar a sua chave no seu perfil no Weblate.

--config PATH

Substitui o caminho do ficheiro de configuração, consulte Ficheiros de configuração.

--config-section SECTION

Substitui a secção de ficheiros de configuração em uso, consulte Ficheiros de configuração.

Comandos

Os comandos seguintes estão disponíveis:

version

Imprime a versão atual.

list-languages

Lista os idiomas usados no Weblate.

list-projects

Lista os projetos no Weblate.

list-components

Lista os componentes no Weblate.

list-translations

Lista as traduções no Weblate.

show

Mostra o objeto do Weblate (tradução, componente ou projeto).

ls

Lista o objeto do Weblate (tradução, componente ou projeto).

commit

Faz um commit das alterações feitas num objeto Weblate (tradução, componente ou projeto).

pull

Faz um pull das alterações remotas do repositório no objeto Weblate (tradução, componente ou projeto).

push

Faz um push das alterações do objeto Weblate ao repositório remoto (tradução, componente ou projeto).

reset

Novo na versão 0.7: Suportado desde o wlc 0.7.

Redefine as alterações no objeto Weblate para corresponder ao repositório remoto (tradução, componente ou projeto).

cleanup

Novo na versão 0.9: Suportado desde o wlc 0.9.

Remove todas as alterações não rastreadas num objeto Weblate para corresponder ao repositório remoto (tradução, componente ou projeto).

repo

Exibe o estado do repositório para um determinado objeto do Weblate (tradução, componente ou projeto).

statistics

Exibe estatísticas detalhadas para um determinado objeto Weblate (tradução, componente ou projeto).

lock-status

Novo na versão 0.5: Suportado desde o wlc 0.5.

Exibe o estado do bloqueio.

lock

Novo na versão 0.5: Suportado desde o wlc 0.5.

Bloqueia o componente de tradução posterior no Weblate.

unlock

Novo na versão 0.5: Suportado desde o wlc 0.5.

Desbloqueia a tradução do componente Weblate.

changes

Novo na versão 0.7: Suportado desde o wlc 0.7 e o Weblate 2.10.

Exibe alterações para um determinado objeto.

download

Novo na versão 0.7: Suportado desde o wlc 0.7.

Descarrega um ficheiro de tradução.

--convert

Converte o formato do ficheiro, se nenhuma conversão não especificada for feita no servidor e o ficheiro for descarregado como está no repositório.

--output

Especifica o ficheiro para gravar a saída e se não for especificado é impresso na stdout (saída predefinida).

upload

Novo na versão 0.9: Suportado desde o wlc 0.9.

Descarrega um ficheiro de tradução.

--overwrite

Substitua as traduções existentes ao enviar.

--input

Ficheiro a partir do qual o conteúdo é lido, se não for especificado é lido de stdin (entrada predefinida).

Dica

Pode obter informações mais detalhadas sobre como invocar comandos individuais a passar --help, por exemplo: wlc ls --help.

Ficheiros de configuração

.weblate, .weblate.ini, weblate.ini

Alterado na versão 1.6: Os ficheiros com extensão .ini também são aceitos.

Por ficheiro de configuração de projeto

C:\Users\NAME\AppData\weblate.ini

Novo na versão 1.6.

Ficheiro de configuração do utilizador no Windows.

~/.config/weblate

Ficheiro de configuração do utilizador

/etc/xdg/weblate

Ficheiro de configuração para todo o sistema

O programa segue a especificação XDG, para que possa ajustar a colocação de ficheiros de configuração por variáveis de ambiente XDG_CONFIG_HOME ou XDG_CONFIG_DIRS. No diretório do Windows APPDATA` é o local preferido para o ficheiro de configuração.

As configurações seguintes podem ser configuradas na secção [weblate] (pode personalizar-lo por --config-section):

key

Chave de API para acessar o Weblate.

url

URL de API do servidor, a predefinição é http://127.0.0.1:8000/api/.

translation

Caminho à tradução predefinida - componente ou projeto.

O ficheiro de configuração é um ficheiro INI, por exemplo:

[weblate]
url = https://hosted.weblate.org/api/
key = APIKEY
translation = weblate/application

Além disso, as chaves de API podem ser armazenadas na secção [keys]:

[keys]
https://hosted.weblate.org/api/ = APIKEY

Isso permite que armazene chaves nas suas configurações pessoais, enquanto usa a configuração do .weblate no repositório VCS para que o wlc saiba com qual servidor ele deve comunicar.

Exemplos

Imprimir a versão atual do programa:

$ wlc version
version: 0.1

Listar todos os projetos:

$ wlc list-projects
name: Hello
slug: hello
url: http://example.com/api/projects/hello/
web: https://weblate.org/
web_url: http://example.com/projects/hello/

Também pode designar em qual projeto o wlc deve trabalhar:

$ cat .weblate
[weblate]
url = https://hosted.weblate.org/api/
translation = weblate/application

$ wlc show
branch: main
file_format: po
source_language: en
filemask: weblate/locale/*/LC_MESSAGES/django.po
git_export: https://hosted.weblate.org/git/weblate/application/
license: GPL-3.0+
license_url: https://spdx.org/licenses/GPL-3.0+
name: Application
new_base: weblate/locale/django.pot
project: weblate
repo: git://github.com/WeblateOrg/weblate.git
slug: application
template:
url: https://hosted.weblate.org/api/components/weblate/application/
vcs: git
web_url: https://hosted.weblate.org/projects/weblate/application/

Com esta configuração é fácil fazer um commit de alterações pendentes no projeto atual:

$ wlc commit

API Python do Weblate

Instalação

A API Python é distribuída separadamente, precisa instalar o Cliente Weblate: (wlc) para tê-la.

pip install wlc

wlc

WeblateException

exception wlc.WeblateException

Classe base para todas as exceções.

Weblate

class wlc.Weblate(key='', url=None, config=None)
Parâmetros
  • key (str) – Chave do utilizador

  • url (str) – URL da API do servidor; se não especificado, o padrão é usado

  • config (wlc.config.WeblateConfig) – Objeto de configuração, substitui quaisquer outros parâmetros.

Acessa a classe para a API, define a chave da API e, opcionalmente, a URL da API.

get(path)
Parâmetros

path (str) – Caminho da solicitação

Tipo de retorno

object

Executa uma única chamada de API GET.

post(path, **kwargs)
Parâmetros

path (str) – Caminho da solicitação

Tipo de retorno

object

Executa uma única chamada de API GET.

wlc.config

WeblateConfig

class wlc.config.WeblateConfig(section='wlc')
Parâmetros

section (str) – Seção de configuração para uso

Analisador de ficheiro de configuração a seguir a especificação XDG.

load(path=None)
Parâmetros

path (str) – Caminho a partir do qual carregar a configuração.

Carrega a configuração de um ficheiro. Se nenhuma for especificada, carrega do ficheiro de configuração wlc (~/.config/wlc) posto no seu caminho de configuração XDG (/etc/xdg/wlc).

wlc.main

wlc.main.main(settings=None, stdout=None, args=None)
Parâmetros
  • settings (list) – Configurações para substituir como lista de tuplas

  • stdout (object) – objeto de ficheiro stdout para saída de impressão, usa sys.stdout como padrão

  • args (list) – Argumentos de linha de comando para processar, usa sys.args como padrão

Ponto de entrada principal para interface de linha de comando.

@wlc.main.register_command(command)

Decorador para registar a classe Command no analisador principal usado por main().

Command

class wlc.main.Command(args, config, stdout=None)

Classe principal para invocação de comandos.

Instruções de configuração

Instalar o Weblate

Instalando a usar Docker

Com a implantação do Weblate dockerizada, pode pôr a sua instância Weblate pessoal em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão.

Requisitos de hardware

O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):

  • 2 GB de RAM

  • 2 núcleos de CPU

  • 1 GB de espaço de armazenamento

Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).

Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.

O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.

Nota

Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.

Instalação

Os exemplos a seguir presumem que tem um ambiente Docker funcional, com docker-compose instalado. Verifique a documentação do Docker para obter instruções.

  1. Clone o repositório weblate-docker:

    git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
    cd weblate-docker
    
  2. Crie um ficheiro docker-compose.override.yml com as suas configurações. Veja Variáveis de ambiente do Docker para uma lista completa das variáveis de ambiente.

    version: '3'
    services:
      weblate:
        ports:
          - 80:8080
        environment:
          WEBLATE_EMAIL_HOST: smtp.example.com
          WEBLATE_EMAIL_HOST_USER: user
          WEBLATE_EMAIL_HOST_PASSWORD: pass
          WEBLATE_SERVER_EMAIL: weblate@example.com
          WEBLATE_DEFAULT_FROM_EMAIL: weblate@example.com
          WEBLATE_SITE_DOMAIN: weblate.example.com
          WEBLATE_ADMIN_PASSWORD: password for the admin user
          WEBLATE_ADMIN_EMAIL: weblate.admin@example.com
    

    Nota

    Se WEBLATE_ADMIN_PASSWORD não estiver definida, o utilizador admin é criado com uma palavra-passe aleatória mostrada na primeira inicialização.

    O exemplo fornecido faz o Weblate escutar na porta 80. Edite o mapeamento da porta no ficheiro docker-compose.override.yml para alterar isso.

  3. Inicie os contentores do Weblate:

    docker-compose up
    

Aproveite a implantação do Weblate, ele está acessível na porta 80 do contentor weblate.

Alterado na versão 2.15-2: A configuração foi alterada recentemente, antes havia um contentor de servidor web separado, desde 2.15-2 o servidor web está embutido no contentor do Weblate.

Alterado na versão 3.7.1-6: Em julho de 2019 (a começar com a tag 3.7.1-6), os contentores não estão a ser executados como um utilizador root. Isso mudou a porta exposta de 80 para 8080.

Choosing Docker hub tag

You can use following tags on Docker hub, see https://hub.docker.com/r/weblate/weblate/tags/ for full list of available ones.

Tag name

Descrição

Caso de uso

latest

Weblate stable release, matches latest tagged release

Rolling updates in a production environment

<VERSION>-<PATCH>

Weblate stable release

Well defined deploy in a production environment

edge

Weblate stable release with development changes in the Docker container (for example updated dependencies)

Rolling updates in a staging environment

edge-<DATE>-<SHA>

Weblate stable release with development changes in the Docker container (for example updated dependencies)

Well defined deploy in a staging environment

bleeding

Development version Weblate from Git

Rollling updates to test upcoming Weblate features

bleeding-<DATE>-<SHA>

Development version Weblate from Git

Well defined deploy to test upcoming Weblate features

Every image is tested by our CI before it gets published, so even the bleeding version should be quite safe to use.

Contentor Docker com suporte a HTTPS

Por favor, veja Instalação para instruções genéricas de implantação, esta secção apenas menciona diferenças em comparação a ela.

Usando os seus próprios certificados SSL

Novo na versão 3.8-3.

No caso de ter o seu próprio certificado SSL que deseja usar, basta pôr os ficheiros no volume de dados Weblate (veja Volumes de contentor Docker):

  • ssl/fullchain.pem a conter o certificado, incluindo quaisquer certificados CA necessários

  • ssl/privkey.pem a conter a chave privada

Ambos os ficheiros devem pertencer ao mesmo utilizador que inicia o contentor do docker e ter a máscara de ficheiro definida como 600 (legível e gravável apenas pelo utilizador dono).

Além disso, o contentor Weblate agora aceitará conexões SSL na porta 4443. Ainda quererá incluir o encaminhamento de porta para HTTPS na substituição de composição do docker:

version: '3'
services:
  weblate:
    ports:
      - 80:8080
      - 443:4443

Se já hospeda outros sites no mesmo servidor, é provável que as portas 80 e 443 sejam usadas por um proxy reverso, como NGINX. Para passar a conexão HTTPS do NGINX para o contentor do docker, pode usar a seguinte configuração:

server {
    listen 443;
    listen [::]:443;

    server_name <SITE_URL>;
    ssl_certificate /etc/letsencrypt/live/<SITE>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<SITE>/privkey.pem;

    location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_pass https://127.0.0.1:<EXPOSED_DOCKER_PORT>;
    }
}

Substitua <SITE_URL>, <SITE> e <EXPOSED_DOCKER_PORT> por valores reais do seu ambiente.

Certificados SSL automáticos a usar Let’s Encrypt

Caso queira usar certificados SSL Let’s Encrypt gerados automaticamente na instalação pública, precisa adicionar um proxy HTTPS reverso num contentor Docker adicional, https-portal será usado para isso. Isso é usado no ficheiro docker-compose-https.yml. Em seguida, crie um ficheiro docker-compose-https.override.yml com as suas configurações:

version: '3'
services:
  weblate:
    environment:
      WEBLATE_EMAIL_HOST: smtp.example.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: pass
      WEBLATE_SITE_DOMAIN: weblate.example.com
      WEBLATE_ADMIN_PASSWORD: password for admin user
  https-portal:
    environment:
      DOMAINS: 'weblate.example.com -> http://weblate:8080'

Sempre que invocar docker-compose, precisa passar os dois ficheios a ele e então fazer:

docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml build
docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml up
Atualizando o contentor Docker

Normalmente, é uma boa ideia atualizar apenas o contentor Weblate e manter o contentor PostgreSQL na versão que possui, já que atualizar o PostgreSQL é muito doloroso e na maioria dos casos não traz muitos benefícios.

Pode fazer isso a manter o docker-compose existente e apenas obter as imagens mais recentes e reiniciar:

docker-compose stop
docker-compose pull
docker-compose up

O banco de dados do Weblate deve ser migrado automaticamente na primeira inicialização e não deve haver necessidade de ações manuais adicionais.

Nota

Atualizações na 3.0 não são suportadas pelo Weblate. Se estiver na série 2.x e quiser atualizar para 3.x, primeiro atualize para a imagem 3.0.1-x mais recente (no momento em que escrevo esta é a imagem 3.0.1-7), que faça a migração e, em seguida, continue a atualizar para as versões mais recentes.

Também quererá atualizar o repositório docker-compose, embora não seja necessário na maioria dos casos. Cuidado com as mudanças de versão do PostgreSQL neste caso, pois não é simples atualizar o banco de dados, consulte este issue do GitHub para mais informações.

Autenticação como administrador

Após a configuração do contentor, pode entrar como utilizador admin com a palavra-passe fornecida em WEBLATE_ADMIN_PASSWORD, ou uma palavra-passe aleatória gerada na primeira inicialização se não tiver sido definida.

Para redefinir a palavra-passe do admin, reinicie o contentor com WEBLATE_ADMIN_PASSWORD definido com a nova palavra-passe.

Quantidade de processos e consumo de memória

A quantidade de processos de trabalho para uWSGI e Celery é determinado automaticamente com base no quantidade de CPUs. Isso funciona bem para a maioria das máquinas virtuais em nuvem, pois normalmente têm poucas CPUs e boa quantidade de memória.

Caso tenha muitos núcleos de CPU e tenha problemas de memória insuficiente, tente reduzir a quantidade de workers:

environment:
  WEBLATE_WORKERS: 2

Também pode ajustar as categorias de workers individuais:

environment:
  UWSGI_WORKERS: 4
  CELERY_MAIN_OPTIONS: --concurrency 2
  CELERY_NOTIFY_OPTIONS: --concurrency 1
  CELERY_TRANSLATE_OPTIONS: --concurrency 1
Dimensionando horizontalmente

Novo na versão 4.6.

Aviso

Este recurso é uma prévia da tecnologia.

Pode executar vários contentores Weblate para dimensionar o serviço horizontalmente. O volume /app/data deve ser compartilhado por todos os contentores, é recomendado usar um sistema de ficheiros de cluster como o GlusterFS para isso. O volume /app/cache deve ser separado para cada contentor.

Cada contentor Weblate tem um papel definido a usar a variável de ambiente WEBLATE_SERVICE. Siga atentamente a documentação, pois alguns dos serviços devem ser executados apenas uma vez no cluster e a ordem dos serviços também é importante.

Pode encontrar configuração de exemplo no repositório docker-compose como docker-compose-split.yml.

Variáveis de ambiente do Docker

Muitas das Configurações do Weblate podem ser definidas no contentor Docker a usar variáveis de ambiente:

Configurações genéricas
WEBLATE_DEBUG

Configura o modo de depuração do Django a usar DEBUG.

Exemplo:

environment:
  WEBLATE_DEBUG: 1
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.

WEBLATE_ADMIN_NAME
WEBLATE_ADMIN_EMAIL

Configura o nome e o e-mail do administrador do site. É usado para ADMINS e para criar o utilizador admin (veja WEBLATE_ADMIN_PASSWORD para mais informações).

Exemplo:

environment:
  WEBLATE_ADMIN_NAME: Weblate admin
  WEBLATE_ADMIN_EMAIL: noreply@example.com
WEBLATE_ADMIN_PASSWORD

Define a palavra-passe para o utilizador admin.

  • Se não for definido e o utilizador admin não existir, ele será criado com uma palavra-passe aleatória mostrada na primeira inicialização do contentor.

  • Se não for definido e o utilizador admin existir, nenhuma ação será executada.

  • Se definido, o utilizador admin é ajustado em cada inicialização do contentor para corresponder a WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME e WEBLATE_ADMIN_EMAIL.

Aviso

Pode ser um risco de segurança armazenar a palavra-passe no ficheiro de configuração. Considere usar essa variável apenas para configuração inicial (ou deixe o Weblate gerar uma palavra-passe aleatória na inicialização) ou para recuperação de palavra-passe.

WEBLATE_ADMIN_PASSWORD_FILE

Define o caminho para um ficheiro que contém a palavra-passe para o utilizador admin.

Veja também

WEBLATE_ADMIN_PASSWORD

WEBLATE_SERVER_EMAIL
WEBLATE_DEFAULT_FROM_EMAIL

Configura o endereço para e-mails de saída.

WEBLATE_CONTACT_FORM

Configura o comportamento do formulário de contato, veja CONTACT_FORM.

WEBLATE_ALLOWED_HOSTS

Configura os nomes de host HTTP permitidos a usar ALLOWED_HOSTS.

O padrão é `` * `` que permite todos os nomes de host.

Exemplo:

environment:
  WEBLATE_ALLOWED_HOSTS: weblate.example.com,example.com
WEBLATE_REGISTRATION_OPEN

Configura se os registos são abertos a alternar REGISTRATION_OPEN.

Exemplo:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
WEBLATE_REGISTRATION_ALLOW_BACKENDS

Configura quais métodos de autenticação podem ser usados para criar uma nova conta via REGISTRATION_ALLOW_BACKENDS.

Exemplo:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
  WEBLATE_REGISTRATION_ALLOW_BACKENDS: azuread-oauth2,azuread-tenant-oauth2
WEBLATE_TIME_ZONE

Configura o fuso horário usado no Weblate, veja TIME_ZONE.

Nota

Para alterar o fuso horário do próprio contentor do Docker, use a variável de ambiente `` TZ``.

Exemplo:

environment:
  WEBLATE_TIME_ZONE: Europe/Prague
WEBLATE_ENABLE_HTTPS

Faz com que o Weblate presuma que é operado por trás de um proxy HTTPS reverso, faz com que o Weblate use HTTPS em e-mail e ligações de API ou defina sinalizadores seguros em cookies.

Dica

Por favor, consulte a documentação de ENABLE_HTTPS para possíveis advertências.

Nota

Isso não faz com que o contentor Weblate aceite conexões HTTPS, precisa configurar isso também, consulte Contentor Docker com suporte a HTTPS para exemplos.

Exemplo:

environment:
  WEBLATE_ENABLE_HTTPS: 1
WEBLATE_IP_PROXY_HEADER

Permite que o Weblate obtenha o endereço IP de qualquer cabeçalho HTTP fornecido. Use isso ao usar um proxy reverso na frente do contentor Weblate.

Ativa IP_BEHIND_REVERSE_PROXY e define IP_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 para HTTP_X_FORWARDED_FOR.

Exemplo:

environment:
  WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
WEBLATE_SECURE_PROXY_SSL_HEADER

Uma tupla que representa uma combinação de cabeçalho/valor HTTP que significa que uma solicitação é segura. Isso é necessário quando o Weblate está a ser executado por trás de um proxy reverso a fazer a terminação SSL que não passa cabeçalhos HTTPS padrão.

Exemplo:

environment:
  WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
WEBLATE_REQUIRE_LOGIN

Ativa REQUIRE_LOGIN para impor autenticação em todo o Weblate.

Exemplo:

environment:
  WEBLATE_REQUIRE_LOGIN: 1
WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS

Adiciona exceções de URL para autenticação necessária para toda a instalação do Weblate a usar LOGIN_REQUIRED_URLS_EXCEPTIONS.

Pode substituir configurações inteiras ou modificar o valor padrão a usar as variáveis ADD e REMOVE.

WEBLATE_GOOGLE_ANALYTICS_ID

Configura o ID para o Google Analytics a alterar GOOGLE_ANALYTICS_ID.

WEBLATE_GITHUB_USERNAME

Configura o nome de utilizador do GitHub para pull requests do GitHub a alterar GITHUB_USERNAME.

Veja também

GitHub

WEBLATE_GITHUB_TOKEN

Novo na versão 4.3.

Configura o token de acesso pessoal do GitHub para pull requests do GitHub via API a alterar GITHUB_TOKEN.

Veja também

GitHub

WEBLATE_GITLAB_USERNAME

Configura o nome de utilizador do GitLab para merge requests do GitLab a alterar GITLAB_USERNAME

Veja também

GitLab

WEBLATE_GITLAB_TOKEN

Configura o token de acesso pessoal do GitLab para merge requests do GitLab via API a alterar GITLAB_TOKEN

Veja também

GitLab

WEBLATE_PAGURE_USERNAME

Configura o nome de utilizador do Pagure para merge requests do Pagure a alterar PAGURE_USERNAME

Veja também

Pagure

WEBLATE_PAGURE_TOKEN

Configura o token de acesso pessoal do Pagure para merge requests do Pagure via API a alterar PAGURE_TOKEN

Veja também

Pagure

WEBLATE_SIMPLIFY_LANGUAGES

Configura a política de simplificação de idioma, veja SIMPLIFY_LANGUAGES.

WEBLATE_DEFAULT_ACCESS_CONTROL

Configura o padrão Controlo de acesso para novos projetos, veja DEFAULT_ACCESS_CONTROL.

WEBLATE_DEFAULT_RESTRICTED_COMPONENT

Configura o valor padrão para Acesso restrito para novos componentes, veja DEFAULT_RESTRICTED_COMPONENT.

WEBLATE_DEFAULT_TRANSLATION_PROPAGATION

Configura o valor padrão para Permitir propagação da tradução para novos componentes, veja DEFAULT_TRANSLATION_PROPAGATION.

WEBLATE_DEFAULT_COMMITER_EMAIL

Configura DEFAULT_COMMITER_EMAIL.

WEBLATE_DEFAULT_COMMITER_NAME

Configura DEFAULT_COMMITER_NAME.

WEBLATE_DEFAULT_SHARED_TM

Configura DEFAULT_SHARED_TM.

WEBLATE_AKISMET_API_KEY

Configura a chave API do Akismet, veja AKISMET_API_KEY.

WEBLATE_GPG_IDENTITY

Configura a assinatura GPG de commits, veja WEBLATE_GPG_IDENTITY.

WEBLATE_URL_PREFIX

Configura o prefixo da URL onde o Weblate está a ser executado, veja URL_PREFIX.

WEBLATE_SILENCED_SYSTEM_CHECKS

Configura verificações que não deseja que sejam mostradas, veja SILENCED_SYSTEM_CHECKS.

WEBLATE_CSP_SCRIPT_SRC
WEBLATE_CSP_IMG_SRC
WEBLATE_CSP_CONNECT_SRC
WEBLATE_CSP_STYLE_SRC
WEBLATE_CSP_FONT_SRC

Permite personalizar o cabeçalho HTTP Content-Security-Policy.

WEBLATE_LICENSE_FILTER

Configura LICENSE_FILTER.

WEBLATE_LICENSE_REQUIRED

Configura LICENSE_REQUIRED

WEBLATE_WEBSITE_REQUIRED

Configura WEBSITE_REQUIRED

WEBLATE_HIDE_VERSION

Configura HIDE_VERSION.

WEBLATE_BASIC_LANGUAGES

Configura BASIC_LANGUAGES.

WEBLATE_DEFAULT_AUTO_WATCH

Configura DEFAULT_AUTO_WATCH.

WEBLATE_RATELIMIT_ATTEMPTS
WEBLATE_RATELIMIT_LOCKOUT
WEBLATE_RATELIMIT_WINDOW

Novo na versão 4.6.

Configura o limitador de taxa.

Dica

Pode definir a configuração para qualquer escopo do limitador de taxa. Para fazer isso, adicione o prefixo WEBLATE_ a qualquer uma das configurações descritas em Limitação de taxa.

WEBLATE_ENABLE_AVATARS

Novo na versão 4.6.1.

Configura ENABLE_AVATARS.

Configurações de tradução automática

Dica

Configuring API key for a service automatically configures it in MT_SERVICES.

WEBLATE_MT_APERTIUM_APY

Ativa tradução automática do Apertium e define MT_APERTIUM_APY

WEBLATE_MT_AWS_REGION
WEBLATE_MT_AWS_ACCESS_KEY_ID
WEBLATE_MT_AWS_SECRET_ACCESS_KEY

Configura tradução automática da AWS.

environment:
  WEBLATE_MT_AWS_REGION: us-east-1
  WEBLATE_MT_AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE
  WEBLATE_MT_AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
WEBLATE_MT_DEEPL_KEY

Ativa tradução de máquina do DeepL e define MT_DEEPL_KEY

WEBLATE_MT_DEEPL_API_URL

Configura a versão da API do DeepL para usar, veja MT_DEEPL_API_URL.

WEBLATE_MT_LIBRETRANSLATE_KEY

Enables LibreTranslate machine translation and sets MT_LIBRETRANSLATE_KEY

WEBLATE_MT_LIBRETRANSLATE_API_URL

Configures LibreTranslate API instance to use, see MT_LIBRETRANSLATE_API_URL.

WEBLATE_MT_GOOGLE_KEY

Ativa Google Tradutor e define MT_GOOGLE_KEY

WEBLATE_MT_MICROSOFT_COGNITIVE_KEY

Ativa Tradutor dos Serviços Cognitivos da Microsoft e define MT_MICROSOFT_COGNITIVE_KEY

WEBLATE_MT_MICROSOFT_ENDPOINT_URL

Define MT_MICROSOFT_ENDPOINT_URL. Note que isto deve conter apenas o nome de domínio.

WEBLATE_MT_MICROSOFT_REGION

Defina MT_MICROSOFT_REGION

WEBLATE_MT_MICROSOFT_BASE_URL

Defina MT_MICROSOFT_BASE_URL

WEBLATE_MT_MODERNMT_KEY

Ativa ModernMT e define MT_MODERNMT_KEY.

WEBLATE_MT_MYMEMORY_ENABLED

Ativa tradução de máquina do MyMemory e define MT_MYMEMORY_EMAIL para WEBLATE_ADMIN_EMAIL.

Exemplo:

environment:
  WEBLATE_MT_MYMEMORY_ENABLED: 1
WEBLATE_MT_GLOSBE_ENABLED

Ativa tradução de máquina do Glosbe.

environment:
  WEBLATE_MT_GLOSBE_ENABLED: 1
WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED

Ativa tradução de máquina do Serviço de Terminologia Microsoft.

environment:
  WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED: 1
WEBLATE_MT_SAP_BASE_URL
WEBLATE_MT_SAP_SANDBOX_APIKEY
WEBLATE_MT_SAP_USERNAME
WEBLATE_MT_SAP_PASSWORD
WEBLATE_MT_SAP_USE_MT

Configura tradução de máquina do SAP Translation Hub.

environment:
    WEBLATE_MT_SAP_BASE_URL: "https://example.hana.ondemand.com/translationhub/api/v1/"
    WEBLATE_MT_SAP_USERNAME: "user"
    WEBLATE_MT_SAP_PASSWORD: "password"
    WEBLATE_MT_SAP_USE_MT: 1
Configurações de autenticação
LDAP
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_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)
GitHub
WEBLATE_SOCIAL_AUTH_GITHUB_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_SECRET

Ativa Autenticação por GitHub.

Bitbucket
WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET

Ativa Autenticação por Bitbucket.

Facebook
WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY
WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET

Ativa OAuth 2 do Facebook.

Google
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS

Ativa OAuth 2 do Google.

GitLab
WEBLATE_SOCIAL_AUTH_GITLAB_KEY
WEBLATE_SOCIAL_AUTH_GITLAB_SECRET
WEBLATE_SOCIAL_AUTH_GITLAB_API_URL

Ativa OAuth 2 do GitLab.

Active Directory do Azure
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET

Ativa autenticação por Active Directory do Azure, veja Active Directory do Microsoft Azure.

Active Directory do Azure com suporte a Tenant
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

Ativa autenticação por Active Directory do Azure com suporte a Tenant, veja Active Directory do Microsoft Azure.

Keycloak
WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET
WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM
WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL

Ativa autenticação com Keycloak, veja a documentação.

Fornecedores Linux

Pode ativar a autenticação a usar serviços de autenticação de fornecedores Linux, a definir as seguintes variáveis para qualquer valor.

WEBLATE_SOCIAL_AUTH_FEDORA
WEBLATE_SOCIAL_AUTH_OPENSUSE
WEBLATE_SOCIAL_AUTH_UBUNTU
Slack
WEBLATE_SOCIAL_AUTH_SLACK_KEY
SOCIAL_AUTH_SLACK_SECRET

Ativa a autenticação Slack, veja Slack.

SAML

Chaves SAML autoassinadas são geradas automaticamente na primeira inicialização do contentor. Caso queira usar chaves próprias, ponha o certificado e a chave privada em /app/data/ssl/saml.crt e /app/data/ssl/saml.key.

WEBLATE_SAML_IDP_ENTITY_ID
WEBLATE_SAML_IDP_URL
WEBLATE_SAML_IDP_X509CERT

Configurações do provedor de identidade SAML, consulte Autenticação por SAML.

Outras configurações de autenticação
WEBLATE_NO_EMAIL_AUTH

Desativa autenticação por e-mail quando definido com algum valor.

Configuração de banco de dados PostgreSQL

O banco de dados é criado por docker-compose.yml, então essas configurações afetam os contentores Weblate e PostgreSQL.

POSTGRES_PASSWORD

Palavra-passe do PostgreSQL.

POSTGRES_PASSWORD_FILE

Caminho para o ficheiro que contém a palavra-passe do PostgreSQL. Use como uma alternativa para POSTGRES_PASSWORD.

POSTGRES_USER

Nome de utilizador do PostgreSQL.

POSTGRES_DATABASE

Nome do banco de dados PostgreSQL.

POSTGRES_HOST

Nome de host ou endereço IP do servidor PostgreSQL. O padrão é database.

POSTGRES_PORT

Porta do servidor PostgreSQL. O padrão é nenhum (usa o valor padrão).

POSTGRES_SSL_MODE

Configura como o PostgreSQL lida com SSL em conexão com o servidor, para as opções possíveis, consulte SSL Mode Descriptions

POSTGRES_ALTER_ROLE

Configura o nome da função para alterar durante as migrações, consulte Configurar Weblate para usar PostgreSQL.

POSTGRES_CONN_MAX_AGE

Novo na versão 4.8.1.

The lifetime of a database connection, as an integer of seconds. Use 0 to close database connections at the end of each request (this is the default behavior).

Enabling connection persistence will typically, cause more open connection to the database. Please adjust your database configuration prior enabling.

Aviso

This is currently experimental, not widely tested and not supported by the Weblate team.

Configurações de backup de base de dados
WEBLATE_DATABASE_BACKUP

Configura o despejo diário do banco de dados a usar DATABASE_BACKUP. O padrão é plain.

Configuração do servidor de cache

O uso do Redis é altamente recomendado pelo Weblate e deve fornecer uma instância do Redis ao executar o Weblate no Docker.

Veja também

Ativar o cache

REDIS_HOST

O nome de host ou endereço IP do servidor Redis. O padrão é cache.

REDIS_PORT

A porta do servidor Redis. O padrão é 6379.

REDIS_DB

O número do banco de dados Redis, o padrão é 1.

REDIS_PASSWORD

A palavra-passe do servidor Redis, não usada por padrão.

REDIS_TLS

Ativa o uso de SSL para conexão Redis.

REDIS_VERIFY_SSL

Pode ser usado para desativar a verificação de certificado SSL para conexão Redis.

Configuração do servidor de e-mail

Para fazer com que o e-mail de saída funcione, precisa fornecer um servidor de e-mail.

Exemplo de configuração TLS:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass

Exemplo de configuração SSL:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_PORT: 465
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass
    WEBLATE_EMAIL_USE_TLS: 0
    WEBLATE_EMAIL_USE_SSL: 1
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.

Veja também

EMAIL_PORT

WEBLATE_EMAIL_HOST_USER

Utilizador da autenticação por e-mail.

Veja também

EMAIL_HOST_USER

WEBLATE_EMAIL_HOST_PASSWORD

Palavra-passe da autenticação por e-mail.

Veja também

EMAIL_HOST_PASSWORD

WEBLATE_EMAIL_HOST_PASSWORD_FILE

Caminho para o ficheiro que contém a palavra-passe da autenticação por e-mail.

WEBLATE_EMAIL_USE_SSL

Se deve usar uma conexão TLS (segura) implícita ao falar com o servidor SMTP. Na maioria das documentações de e-mail, esse tipo de conexão TLS é conhecido como SSL. Geralmente é usado na porta 465. Se estiver a ter problemas, consulte a configuração TLS explícita WEBLATE_EMAIL_USE_TLS.

WEBLATE_EMAIL_USE_TLS

Se deve usar uma conexão TLS (segura) ao falar com o servidor SMTP. Isso é usado para conexões TLS explícitas, geralmente na porta 587 ou 25. Se estiver a ter conexões travadas, consulte a configuração TLS implícita WEBLATE_EMAIL_USE_SSL.

WEBLATE_EMAIL_BACKEND

Configura o back-end do Django para usar no envio de e-mails.

Integração do site
WEBLATE_GET_HELP_URL

Configura GET_HELP_URL.

WEBLATE_STATUS_URL

Configura STATUS_URL.

Configura LEGAL_URL.

WEBLATE_PRIVACY_URL

Configures PRIVACY_URL.

Relatório de erro

É recomendado coletar erros da instalação sistematicamente, veja Coletando relatórios de erros.

Para ativar o suporte para Rollbar, defina o seguinte:

ROLLBAR_KEY

O seu token de acesso ao servidor de postagem Rollbar.

ROLLBAR_ENVIRONMENT

O seu ambiente Rollbar, o padrão é production.

Para ativar o suporte para Sentry, defina o seguinte:

SENTRY_DSN

O seu DSN no Sentry.

SENTRY_ENVIRONMENT

O seu ambiente no Sentry (opcional).

CDN de localização
WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

Novo na versão 4.2.1.

Configuração para CDN de localização JavaScript.

O WEBLATE_LOCALIZE_CDN_PATH é o caminho dentro do contentor. Ele deve ser armazenado no volume persistente e não no armazenamento temporário.

Uma das possibilidades é armazenar isso dentro do diretório de dados do Weblate:

environment:
  WEBLATE_LOCALIZE_CDN_URL: https://cdn.example.com/
  WEBLATE_LOCALIZE_CDN_PATH: /app/data/l10n-cdn

Nota

É responsável por configurar o serviço dos ficheiros gerados pelo Weblate, ele só armazena os ficheiros no local configurado.

Alterando apps, verificações, complementos ou correções automáticas ativados

Novo na versão 3.8-5.

A configuração embutida de verificações, complementos ou correções automática ativados pode ser ajustada pelas seguintes variáveis:

WEBLATE_ADD_APPS
WEBLATE_REMOVE_APPS
WEBLATE_ADD_CHECK
WEBLATE_REMOVE_CHECK
WEBLATE_ADD_AUTOFIX
WEBLATE_REMOVE_AUTOFIX
WEBLATE_ADD_ADDONS
WEBLATE_REMOVE_ADDONS

Exemplo:

environment:
  WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace
  WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon
Configurações do contentor
WEBLATE_WORKERS

Novo na versão 4.6.1.

Quantidade base de processos de trabalho em execução no contentor. Quando não definido, é determinado automaticamente na inicialização do contentor com base na quantidade de núcleos de CPU disponíveis.

É usado para determinar CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS e UWSGI_WORKERS. Pode usar essas configurações para fazer o ajuste fino.

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

Essas variáveis permitem que ajuste as opções do worker do Celery. Pode ser útil ajustar a simultaneidade (--concurrency 16) ou usar diferentes implementações de pool (--pool=gevent).

Por padrão, a quantidade de workers simultâneos é baseado em WEBLATE_WORKERS.

Exemplo:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16
UWSGI_WORKERS

Configura quantos workers uWSGI devem ser executados.

O padrão é WEBLATE_WORKERS.

Exemplo:

environment:
  UWSGI_WORKERS: 32
WEBLATE_SERVICE

Define quais serviços devem ser executados dentro do contentor. Use isto para Dimensionando horizontalmente.

Os seguintes serviços são definidos:

celery-beat

Agendador de tarefas do Celery, apenas uma instância deve estar em execução. Este contentor também é responsável pelas migrações da estrutura do banco de dados e deve ser iniciado antes dos demais.

celery-backup

Worker do Celery para backups, apenas uma instância deve estar em execução.

celery-celery

Worker genérico do Celery.

celery-memory

Worker do Celery para memória de tradução.

celery-notify

Worker do Celery para notificações.

celery-translate

Worker do Celery para tradução automática.

web

Servidor web.

Volumes de contentor Docker

Há dois volumes (dados e cacho) exportados pelo contentor Weblate. Os outros contentores de serviço (PostgreSQL ou Redis) também têm os volumes de dados deles, mas eles não são cobertos por este documento.

O volume de dados é usado para armazenar dados persistentes do Weblate, como repositórios clonados ou para personalizar a instalação do Weblate.

O posicionamento do volume Docker no sistema hospedeiro depende da configuração do Docker, mas geralmente é armazenado em /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ (o caminho consiste no nome de seu diretório docker-compose, contentor e nomes de volume). No contentor, ele é montado como /app/data.

O volume do cache é montado como /app/cache e é usado para armazenar ficheiros estáticos. O conteúdo deles é recriado na inicialização do contentor e o volume pode ser montado a usar um sistema de ficheiros efêmero como tmpfs.

Ao criar os volumes manualmente, os diretórios devem pertencer ao UID 1000, pois é o utilizador usado dentro do contentor.

Personalização adicional da configuração

Pode personalizar ainda mais a instalação do Weblate no volume de dados, veja Volumes de contentor Docker.

Ficheiros de configuração personalizados

Também pode sobrescrever a configuração em /app/data/settings-override.py (veja Volumes de contentor Docker). Isso é executado no final das configurações embutidas, depois que todas as configurações de ambiente são carregadas e pode ajustá-las ou substituí-las.

Substituindo o logotipo e outros ficheiros estáticos

Novo na versão 3.8-5.

Os ficheiros estáticos que vêm com Weblate podem ser sobrescritos a colocar em /app/data/python/customize/static (veja Volumes de contentor Docker). Por exemplo, criar /app/data/python/customize/static/favicon.ico substituirá o favicon.

Dica

Os ficheiros são copiados para o local correspondente na inicialização do contentor, portanto, é necessário reiniciar o Weblate após alterar o conteúdo do volume.

Como alternativa, também pode incluir o próprio módulo (veja ../ customize) e adicioná-lo como um volume separado ao contentor do Docker, por exemplo:

weblate:
  volumes:
    - weblate-data:/app/data
    - ./weblate_customization/weblate_customization:/app/data/python/weblate_customization
  environment:
    WEBLATE_ADD_APPS: weblate_customization
Adicionando os seus próprios módulos Python

Novo na versão 3.8-5.

Pode pôr os próprios módulos Python em /app/data/python/ (veja Volumes de contentor Docker) e eles podem ser carregados pelo Weblate, provavelmente a usar docker-custom -config.

Veja também

Personalizar o Weblate

Instalando no Debian e Ubuntu

Requisitos de hardware

O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):

  • 2 GB de RAM

  • 2 núcleos de CPU

  • 1 GB de espaço de armazenamento

Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).

Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.

O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.

Nota

Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.

Instalação
Requisitos do sistema

Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):

apt install \
   libxml2-dev libxslt-dev libfreetype6-dev libjpeg-dev libz-dev libyaml-dev \
   libcairo-dev gir1.2-pango-1.0 libgirepository1.0-dev libacl1-dev libssl-dev \
   build-essential python3-gdbm python3-dev python3-pip python3-virtualenv virtualenv git

Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):

apt install tesseract-ocr libtesseract-dev libleptonica-dev

Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.

As instruções de instalação local:

# Web server option 1: NGINX and uWSGI
apt install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
apt install apache2 libapache2-mod-wsgi-py3

# Caching backend: Redis
apt install redis-server

# Database server: PostgreSQL
apt install postgresql postgresql-contrib

# SMTP server
apt install exim4
Módulos do Python

Dica

Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.

  1. Crie o virtualenv para Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Ative o virtualenv para Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instale o Weblate incluindo todas as dependências:

    pip install Weblate
    
  4. Instale o driver do banco de dados:

    pip install psycopg2-binary
    
  5. Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):

    pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
    
Configurando o Weblate

Nota

Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate.

  1. Copie o ficheiro ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py para ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Adjust the values in the new settings.py file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.

  3. Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):

    weblate migrate
    
  4. Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:

    weblate createadmin
    
  5. Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic
    
  6. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  7. Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):

    weblate runserver
    
Após a instalação

Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.

  • Agora pode acessar o Weblate em http://localhost:8000/.

  • Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.

  • Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.

  • Pode parar o servidor de teste com Ctrl+C.

  • Revise os possíveis problemas com sua instalação na URL /manage/performance/ ou a usar weblate check --deploy, veja Configuração de produção.

Adicionando tradução
  1. Abra a interface de administração (http://localhost:8000/create/project/) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.

    Tudo que precisa especificar aqui é o nome do projeto e seu site.

  2. Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.

    Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.

  3. Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.

Instalando no SUSE e openSUSE

Requisitos de hardware

O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):

  • 2 GB de RAM

  • 2 núcleos de CPU

  • 1 GB de espaço de armazenamento

Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).

Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.

O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.

Nota

Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.

Instalação
Requisitos do sistema

Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):

zypper install \
   libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
   cairo-devel typelib-1_0-Pango-1_0 gobject-introspection-devel libacl-devel \
   python3-pip python3-virtualenv python3-devel git

Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):

zypper install tesseract-ocr tesseract-devel leptonica-devel

Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.

As instruções de instalação local:

# Web server option 1: NGINX and uWSGI
zypper install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
zypper install apache2 apache2-mod_wsgi

# Caching backend: Redis
zypper install redis-server

# Database server: PostgreSQL
zypper install postgresql postgresql-contrib

# SMTP server
zypper install postfix
Módulos do Python

Dica

Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.

  1. Crie o virtualenv para Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Ative o virtualenv para Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instale o Weblate incluindo todas as dependências:

    pip install Weblate
    
  4. Instale o driver do banco de dados:

    pip install psycopg2-binary
    
  5. Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):

    pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
    
Configurando o Weblate

Nota

Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate.

  1. Copie o ficheiro ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py para ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Adjust the values in the new settings.py file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.

  3. Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):

    weblate migrate
    
  4. Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:

    weblate createadmin
    
  5. Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic
    
  6. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  7. Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):

    weblate runserver
    
Após a instalação

Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.

  • Agora pode acessar o Weblate em http://localhost:8000/.

  • Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.

  • Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.

  • Pode parar o servidor de teste com Ctrl+C.

  • Revise os possíveis problemas com sua instalação na URL /manage/performance/ ou a usar weblate check --deploy, veja Configuração de produção.

Adicionando tradução
  1. Abra a interface de administração (http://localhost:8000/create/project/) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.

    Tudo que precisa especificar aqui é o nome do projeto e seu site.

  2. Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.

    Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.

  3. Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.

Instalando no RedHat, Fedora e CentOS

Requisitos de hardware

O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):

  • 2 GB de RAM

  • 2 núcleos de CPU

  • 1 GB de espaço de armazenamento

Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).

Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.

O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.

Nota

Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.

Instalação
Requisitos do sistema

Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):

dnf install \
   libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
   cairo-devel pango-devel gobject-introspection-devel libacl-devel \
   python3-pip python3-virtualenv python3-devel git

Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):

dnf install tesseract-langpack-eng tesseract-devel leptonica-devel

Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.

As instruções de instalação local:

# Web server option 1: NGINX and uWSGI
dnf install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
dnf install apache2 apache2-mod_wsgi

# Caching backend: Redis
dnf install redis

# Database server: PostgreSQL
dnf install postgresql postgresql-contrib

# SMTP server
dnf install postfix
Módulos do Python

Dica

Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.

  1. Crie o virtualenv para Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Ative o virtualenv para Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instale o Weblate incluindo todas as dependências:

    pip install Weblate
    
  4. Instale o driver do banco de dados:

    pip install psycopg2-binary
    
  5. Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):

    pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
    
Configurando o Weblate

Nota

Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate.

  1. Copie o ficheiro ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py para ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Adjust the values in the new settings.py file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.

  3. Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):

    weblate migrate
    
  4. Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:

    weblate createadmin
    
  5. Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic
    
  6. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  7. Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):

    weblate runserver
    
Após a instalação

Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.

  • Agora pode acessar o Weblate em http://localhost:8000/.

  • Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.

  • Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.

  • Pode parar o servidor de teste com Ctrl+C.

  • Revise os possíveis problemas com sua instalação na URL /manage/performance/ ou a usar weblate check --deploy, veja Configuração de produção.

Adicionando tradução
  1. Abra a interface de administração (http://localhost:8000/create/project/) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.

    Tudo que precisa especificar aqui é o nome do projeto e seu site.

  2. Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.

    Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.

  3. Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.

Instalando no macOS

Requisitos de hardware

O Weblate deve funcionar em qualquer hardware contemporâneo sem problemas. A seguir está a configuração mínima necessária para executar o Weblate num único host (Weblate, banco de dados e servidor web):

  • 2 GB de RAM

  • 2 núcleos de CPU

  • 1 GB de espaço de armazenamento

Quanto mais memória melhor – ele é usada para cache em todos os níveis (sistema de ficheiros, banco de dados e Weblate).

Muitos utilizadores simultâneos aumentam a quantidade de núcleos de CPU necessários. Para centenas de componentes de tradução é recomendado pelo menos 4 GB de RAM.

O uso típico de armazenamento de banco de dados é de cerca de 300 MB por 1 milhão de palavras hospedadas. O espaço de armazenamento necessário para repositórios clonados varia, mas o Weblate tenta manter o tamanho mínimo deles a fazer clones rasos.

Nota

Os requisitos reais para a sua instalação do Weblate variam fortemente com base no tamanho das traduções geridas nele.

Instalação
Requisitos do sistema

Instale as dependências necessárias para construir os módulos Python (veja Requisitos de software):

brew install python pango cairo gobject-introspection libffi glib libyaml
pip3 install virtualenv

Certifique-se de que o pip será capaz de encontrar a versão do libffi fornecida pelo homebrew – isso será necessário durante a etapa de compilação da instalação.

export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"

Instale as dependências opcionais desejadas, a depender dos recursos que pretende usar (veja Dependências opcionais):

brew install tesseract

Opcionalmente, instale o software para executar o servidor de produção, veja Executar o servidor, Configuração de banco de dados para o Weblate, Tarefas de fundo a usar o Celery. Dependendo do tamanho da sua instalação, poderá executar esses componentes em servidores dedicados.

As instruções de instalação local:

# Web server option 1: NGINX and uWSGI
brew install nginx uwsgi

# Web server option 2: Apache with ``mod_wsgi``
brew install httpd

# Caching backend: Redis
brew install redis

# Database server: PostgreSQL
brew install postgresql
Módulos do Python

Dica

Estamos a usar o virtualenv para instalar o Weblate num ambiente separado do seu sistema. Se não estiver familiarizado com ele, verifique virtualenv user_guide.

  1. Crie o virtualenv para Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Ative o virtualenv para Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instale o Weblate incluindo todas as dependências:

    pip install Weblate
    
  4. Instale o driver do banco de dados:

    pip install psycopg2-binary
    
  5. Instale as dependências opcionais desejadas a depender dos recursos que pretende usar (alguns podem exigir bibliotecas de sistema adicionais, confira Dependências opcionais):

    pip install ruamel.yaml aeidon boto3 zeep chardet tesserocr
    
Configurando o Weblate

Nota

Os passos seguintes assumem que o virtualenv usado pelo Weblate está ativo (o que pode ser feito por . ~/weblate-env/bin/activate). Caso isso não seja verdade, terá que especificar o caminho completo para o comando weblate como ~/weblate-env/bin/weblate.

  1. Copie o ficheiro ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py para ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Adjust the values in the new settings.py file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.

  3. Crie o banco de dados e a estrutura dele para Weblate (as configurações de exemplo usam PostgreSQL, confira Configuração de banco de dados para o Weblate para configuração pronta para produção):

    weblate migrate
    
  4. Crie a conta de utilizador do administrador e copie a palavra-passe de saída para a área de transferência e salve-a para uso posterior:

    weblate createadmin
    
  5. Colete ficheiros estáticos para o servidor web (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic
    
  6. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  7. Inicie workers de Celery. Isso não é necessário para fins de desenvolvimento, mas é altamente recomendado caso contrário. Veja Tarefas de fundo a usar o Celery para mais informações:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Inicie o servidor de desenvolvimento (veja Executar o servidor para configuração de produção):

    weblate runserver
    
Após a instalação

Parabéns, o seu servidor Weblate agora está a funcionar e pode começar a usá-lo.

  • Agora pode acessar o Weblate em http://localhost:8000/.

  • Autentique-se com as credenciais de administrador obtidas durante a instalação ou registe-se com novos utilizadores.

  • Agora pode executar comandos Weblate a usar o comando weblate quando virtualenv do Weblate está ativo, veja Comandos de gerência.

  • Pode parar o servidor de teste com Ctrl+C.

  • Revise os possíveis problemas com sua instalação na URL /manage/performance/ ou a usar weblate check --deploy, veja Configuração de produção.

Adicionando tradução
  1. Abra a interface de administração (http://localhost:8000/create/project/) e crie o projeto que deseja traduzir. Veja Configuração de projeto para mais detalhes.

    Tudo que precisa especificar aqui é o nome do projeto e seu site.

  2. Crie um componente que é o objeto real para tradução – ele aponta ao repositório VCS e seleciona quais ficheiros traduzir. Veja Configuração de componente para mais detalhes.

    Os campos importantes aqui são: nome do componente, endereço do repositório VCS e máscara para localizar ficheiros traduzíveis. Weblate suporta uma ampla gama de formatos, a incluir ficheiros PO gettext, cadeias de recursos Android, propriedades de cadeias iOS, propriedades Java ou ficheiros de Qt Linguist, consulte Formatos de ficheiros suportados para mais detalhes.

  3. Depois que o acima for concluído (pode ser um processo demorado a depender do tamanho do seu repositório VCS e da quantidade de mensagens a serem traduzidas), pode começar a traduzir.

Instalando a partir do código-fonte

  1. Siga as instruções de instalação do seu sistema primeiro:

  2. Pegue o código-fonte mais recente do Weblate a usar Git (ou baixe um tarball e descompacte-o):

    git clone https://github.com/WeblateOrg/weblate.git weblate-src
    

    Alternativamente, pode usar ficheiros lançados. Pode descarregá-los no nosso site <https://weblate.org/>. Essas descarregas são assinadas criptograficamente, consulte Verificar assinaturas de lançamento.

  3. Instale o código atual do Weblate no virtualenv:

    . ~/weblate-env/bin/activate
    pip install -e weblate-src
    
  4. Copie weblate/settings_example.py para weblate/settings.py.

  5. Adjust the values in the new settings.py file to your liking. You will need to provide at least the database credentials and Django secret key, but you will want more changes for production setup, see Ajustar a configuração.

  6. Crie o banco de dados usado pelo Weblate, veja Configuração de banco de dados para o Weblate.

  7. Construa tabelas Django, ficheiros estáticos e dados iniciais (veja Preencher o banco de dados e Servir ficheiros estáticos):

    weblate migrate
    weblate collectstatic
    weblate compress
    weblate compilemessages
    

    Nota

    Esta etapa deve ser repetida sempre que atualizar o repositório.

Instalando no OpenShift

Com o modelo OpenShift Weblate, pode pôr a sua instância pessoal do Weblate em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão e declarações de volume persistentes são usadas.

Pode encontrar o modelo em <https://github.com/WeblateOrg/openshift/>.

Instalação

Os exemplos a seguir presumem que tem um ambiente OpenShift v3.x funcional, com a ferramenta cliente oc instalada. Confira a documentação do OpenShift para obter instruções.

O template.yml é adequado para executar todos os componentes em OpenShift. Existe também template-external-postgresql.yml que não inicia um servidor PostgreSQL e permite que configure um servidor PostgreSQL externo.

Console web

Copie o conteúdo bruto de template.yml e importe-o ao seu projeto, então use o botão Create no console web do OpenShift para criar a sua aplicação. O console web solicitará os valores de todos os parâmetros usados pelo modelo.

CLI

Para enviar o modelo Weblate para a biblioteca de modelos do seu projeto atual, passe o ficheiro template.yml com o seguinte comando:

$ oc create -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
   -n <PROJECT>

O modelo agora está disponível para seleção a usar o console web ou o CLI.

Parâmetros

Os parâmetros que pode substituir estão listados na secção de parâmetros do modelo. Pode listá-los com a CLI a usar o seguinte comando e a especificar o ficheiro a ser usado:

$ oc process --parameters -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml

# If the template is already uploaded
$ oc process --parameters -n <PROJECT> weblate
Provisionamento

Também pode usar a CLI para processar modelos e usar a configuração gerada para criar objetos imediatamente.

$ oc process -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
    -p APPLICATION_NAME=weblate \
    -p WEBLATE_VERSION=4.3.1-1 \
    -p WEBLATE_SITE_DOMAIN=weblate.app-openshift.example.com \
    -p POSTGRESQL_IMAGE=docker-registry.default.svc:5000/openshift/postgresql:9.6 \
    -p REDIS_IMAGE=docker-registry.default.svc:5000/openshift/redis:3.2 \
    | oc create -f

A instância do Weblate deve estar disponível após a migração e implantação com sucesso no parâmetro WEBLATE_SITE_DOMAIN especificado.

Após a configuração do contentor, pode entrar como utilizador admin com a palavra-passe fornecida em WEBLATE_ADMIN_PASSWORD, ou uma palavra-passe aleatória gerada na primeira inicialização se não tiver sido definida.

Para redefinir a palavra-passe do admin, reinicie o contentor com WEBLATE_ADMIN_PASSWORD definido para a nova palavra-passe no respectivo Secret.

Eliminar
$ oc delete all -l app=<APPLICATION_NAME>
$ oc delete configmap -l app= <APPLICATION_NAME>
$ oc delete secret -l app=<APPLICATION_NAME>
# ATTTENTION! The following command is only optional and will permanently delete all of your data.
$ oc delete pvc -l app=<APPLICATION_NAME>

$ oc delete all -l app=weblate \
    && oc delete secret -l app=weblate \
    && oc delete configmap -l app=weblate \
    && oc delete pvc -l app=weblate
Configuração

Ao processar o modelo, um respectivo ConfigMap será criado e poderá ser usado para personalizar a imagem Weblate. O ConfigMap é montado diretamente como variáveis de ambiente e dispara uma nova implantação toda vez que é alterado. Para mais opções de configuração, consulte Variáveis de ambiente do Docker para uma lista completa de variáveis de ambiente.

Instalando no Kubernetes

Nota

Este guia procura colaboradores experientes com o Kubernetes para abordar a configuração com mais detalhes.

Com o chart de Kubernetes Helm, pode pôr a sua instância pessoal do Weblate em funcionamento em segundos. Todas as dependências do Weblate já estão incluídas. PostgreSQL é configurado como o banco de dados padrão e declarações de volume persistentes são usadas.

Pode encontrar o chart em <https://github.com/WeblateOrg/helm/> e pode ser exibido em <https://artifacthub.io/packages/helm/weblate/weblate>.

Instalação
helm repo add weblate https://helm.weblate.org
helm install my-release weblate/weblate
Configuração

Para mais opções de configuração, consulte Variáveis de ambiente do Docker para uma lista completa de variáveis de ambiente.

Dependendo da sua configuração e experiência, escolha um método de instalação apropriado para si:

Requisitos de software

Sistema operacional

Weblate é conhecido por funcionar no Linux, FreeBSD e macOS. Outros sistemas como o Unix provavelmente funcionarão também.

O Weblate não é suportado no Windows. Mas ainda pode funcionar e patches são aceitos alegremente.

Outros serviços

Weblate está a usar outros serviços para a operação dele. Precisará pelo menos os seguintes serviços em execução:

Dependências Python

Weblate é escrito em Python e tem suporte de Python 3.6 ou mais novo. Pode instalar dependências a usar pip ou dos pacotes de distribuição deles, a lista completa está disponível em requirements.txt.

As dependências mais notáveis:

Django

https://www.djangoproject.com/

Celery

https://docs.celeryproject.org/

Translate Toolkit

https://toolkit.translatehouse.org/

translation-finder

https://github.com/WeblateOrg/translation-finder

Python Social Auth

https://python-social-auth.readthedocs.io/

Django REST Framework

https://www.django-rest-framework.org/

Dependências opcionais

Os módulos seguintes são necessários para alguns recursos do Weblate. Pode encontrar todos em requirements-optional.txt.

Mercurial (opcional para suporte de repositórios Mercurial)

https://www.mercurial-scm.org/

phply (opcional para suporte de PHP)

https://github.com/viraptor/phply

tesserocr (opcional para OCR de capturas de ecrã)

https://github.com/sirfz/tesserocr

akismet (opcional para a sugestão de proteção de spam)

https://github.com/ubernostrum/akismet

ruamel.yaml (opcional para Ficheiros YAML)

https://pypi.org/project/ruamel.yaml/

Zeep (opcional para Serviço de Terminologia Microsoft)

https://docs.python-zeep.org/

aeidon (opcional para Ficheiros de legenda)

https://pypi.org/project/aeidon/

Dependências de backend de banco de dados

O Weblate tem suporte de PostgreSQL, MySQL e MariaDB, consulte Configuração de banco de dados para o Weblate e a documentação dos backends para mais detalhes.

Outros requisitos do sistema

As dependências seguintes devem ser instaladas no sistema:

Git

https://git-scm.com/

Pango, Cairo e ficheiros de cabeçalho relacionados e dados de introspecção gir

https://cairographics.org/, https://pango.gnome.org/, veja Pango e Cairo

git-review (opcional para suporte de Gerrit)

https://pypi.org/project/git-review/

git-svn (opcional para suporte de Subversion)

https://git-scm.com/docs/git-svn

tesseract e os dados dele (opcional para OCR de capturas de ecrã)

https://github.com/tesseract-ocr/tesseract

licensee (opcional para detetar a licença ao criar o componente)

https://github.com/licensee/licensee

Dependências de tempo de compilação

Para compilar alguns das dependências Python, pode precisar instalar as dependências deles. Isso depende de como instala-as, por isso consulte pacotes individuais para obter documentação. Não precisará deles se usar Wheels pré-compilado durante a instalação a usar pip ou quando usar pacotes de distribuição.

Pango e Cairo

Alterado na versão 3.7.

O Weblate usa Pango e Cairo para renderizar widgets de bitmap (ver Promovendo a tradução) e verificações de renderização (ver Gerir letras). Para instalar as ligações Python corretamente para esses, precisa de instalar bibliotecas de sistemas primeiro - precisa tanto do Cairo quanto do Pango, que por sua vez precisam de GLib. Todos esses devem ser instalados com ficheiros de desenvolvimento e dados de introspecção GObject.

Verificar assinaturas de lançamento

Os lançamentos do Weblate são criptograficamente assinados pelo programador que os lançou. Atualmente é Michal Čihař. A impressão digital da chave PGP é:

63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D

e pode obter mais informações de identificação de <https://keybase.io/nijel>.

Deve verificar se a assinatura corresponde ao ficheiro que descarregou. Desta forma, pode ter certeza de que está a usar o mesmo código que foi lançado. Também deve verificar a data da assinatura para ter certeza de que descarregou a versão mais recente.

Cada arquivo é acompanhado de ficheiros .asc, os quais contêm a assinatura PGP para ele. Uma vez que tenha ambos na mesma pasta, pode verificar a assinatura:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Can't check signature: public key not found

Como pode ver, o GPG reclama que não conhece a chave pública. Neste ponto deve fazer um dos seguintes passos:

  • Use wkd para descarregar a chave:

$ gpg --auto-key-locate wkd --locate-keys michal@cihar.com
pub   rsa4096 2009-06-17 [SC]
      63CB1DF1EF12CF2AC0EE5A329C27B31342B7511D
uid           [ultimate] Michal Čihař <michal@cihar.com>
uid           [ultimate] Michal Čihař <nijel@debian.org>
uid           [ultimate] [jpeg image of size 8848]
uid           [ultimate] Michal Čihař (Braiins) <michal.cihar@braiins.cz>
sub   rsa4096 2009-06-17 [E]
sub   rsa4096 2015-09-09 [S]
$ gpg --import wmxth3chu9jfxdxywj1skpmhsj311mzm
  • Descarregue e importe a chave de um dos servidores principais:

$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: key 9C27B31342B7511D: "Michal Čihař <michal@cihar.com>" imported
gpg: Total number processed: 1
gpg:              unchanged: 1

Isso vai melhorar a situação um pouco - neste momento pode verificar que a assinatura da chave dada está correta, mas ainda não pode confiar no nome usado na chave:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg:                 aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg:                 aka "[jpeg image of size 8848]" [ultimate]
gpg:                 aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 63CB 1DF1 EF12 CF2A C0EE  5A32 9C27 B313 42B7 511D

O problema aqui é que qualquer um poderia emitir a chave com este nome. Precisa garantir que a chave é realmente a propriedade da pessoa mencionada. O Manual de Privacidade do GNU aborda este tópico no capítulo Validating other keys on your public keyring. O método mais confiável é de conhecer o programador pessoalmente e trocar impressões digitais importantes, no entanto também pode confiar na rede de confiança. Dessa forma, pode confiar na chave transitivamente através de assinaturas de outros, que conheceram o programador pessoalmente.

Uma vez que a chave seja confiável, o aviso não ocorrerá:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Sun Mar  3 16:43:15 2019 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg:                 aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg:                 aka "[jpeg image of size 8848]" [ultimate]
gpg:                 aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]

Se a assinatura for inválida (o ficheiro foi alterado), obteria um erro claro, independentemente do fato de que a chave é confiável ou não:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: Signature made Sun Mar  3 16:43:15 2019 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: BAD signature from "Michal Čihař <michal@cihar.com>" [ultimate]

Permissões do sistema de ficheiros

O processo Weblate precisa ser capaz de ler e escrever para o diretório onde mantém os dados – DATA_DIR. Todos os ficheiros dentro deste diretório devem ser de propriedade e graváveis pelo utilizador que executa todos os processos do Weblate (geralmente WSGI e Celery, veja Executar o servidor e Tarefas de fundo a usar o Celery).

A configuração predefinida põe-os na mesma árvore que as fontes do Weblate, no entanto, pode preferir movê-los para um local melhor, como /var/lib/weblate.

O Weblate tenta criar esses diretórios automaticamente, mas ele falhará quando não tiver permissões para fazê-lo.

Também deve tomar cuidado ao executar Comandos de gerência, pois eles devem ser executados sob o mesmo utilizador que o Weblate em si está a ser executado, caso contrário, permissões em alguns ficheiros podem estar erradas.

No contentor Docker, todos os ficheiros no volume /app/data tem de ter como dono o utilizador weblate dentro do contentor (UID 1000).

Configuração de banco de dados para o Weblate

Recomenda-se a executar o Weblate com um servidor de banco de dados PostgreSQL.

PostgreSQL

PostgreSQL é geralmente a melhor escolha para sites baseados em Django. É o banco de dados de referência usado para implementar a camada de banco de dados Django.

Nota

O Weblate usa a extensão trigram que deve ser instalada separadamente em alguns casos. Procure por postgresql-contrib ou um pacote com nome similar.

Veja também

PostgreSQL notes

Criar um banco de dados no PostgreSQL

Geralmente é uma boa ideia executar o Weblate num banco de dados separado e separar a conta do utilizador:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser --superuser --pwprompt weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Dica

Se não quiser fazer do utilizador do Weblate um superutilizador no PostgreSQL, pode omiti-lo. Nesse caso, terá que executar algumas das etapas de migração manualmente como um superutilizador do PostgreSQL no esquema Weblate usará:

CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA weblate;
Configurar Weblate para usar PostgreSQL

O trecho settings.py para PostgreSQL:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.postgresql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Name of role to alter to set parameters in PostgreSQL,
        # use in case role name is different than user used for authentication.
        # "ALTER_ROLE": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
    }
}

A migração do banco de dados executa ALTER ROLE na função de banco de dados usada pelo Weblate. Na maioria dos casos, o nome da função corresponde ao nome de utilizador. Em configurações mais complexas, o nome da função é diferente do nome de utilizador e obterá um erro sobre a função não existente durante a migração do banco de dados (psycopg2.errors.UndefinedObject: role "weblate@hostname" does not exist). Isso é conhecido por acontecer com o Azure Database para PostgreSQL, mas não está limitado a este ambiente. Defina ALTER_ROLE para alterar o nome da função que o Weblate deve alterar durante a migração do banco de dados.

MySQL e MariaDB

Dica

Alguns recursos do Weblate terão melhor desempenho com PostgreSQL. Isso inclui a memória de pesquisa e tradução, que ambos utilizam recursos de texto completo no banco de dados e a implementação do PostgreSQL é superior.

Weblate também pode ser usado com MySQL ou MariaDB, consulte MySQL notes e MariaDB notes para ressalvas ao uso do Django com elas. or causa das limitações, é recomendado usar PostgreSQL para novas instalações.

O Weblate requer MySQL pelo menos 5.7.8 ou MariaDB pelo menos 10.2.7.

A configuração seguinte é recomendada para Weblate:

  • Use o conjunto de caracteres utf8mb4 para permitir a representação de planos Unicode mais altos (por exemplo, emojis).

  • Configure o servidor com innodb_large_prefix para permitir índices mais longos em campos de texto.

  • Defina o nível de isolamento para READ COMMITTED.

  • O modo SQL deve ser definido como STRICT_TRANS_TABLES.

MySQL 8.x, MariaDB 10.5.x ou mais recente têm uma configuração padrão razoável, de modo que nenhum ajuste de servidor deve ser necessário e tudo o que é necessário pode ser configurado no lado do cliente.

Abaixo está um exemplo /etc/my.cnf.d/server.cnf para um servidor com 8 GB de RAM. Essas configurações devem ser suficientes para a maioria das instalações. MySQL e MariaDB têm ajustáveis que irão aumentar o desempenho do seu servidor que são considerados desnecessários, a menos que esteja a planejar ter uma grande quantidade de utilizadores simultâneos a acessar o sistema. Consulte a documentação de vários fornecedores sobre esses detalhes.

É absolutamente crítico para reduzir problemas durante a instalação que a configuração innodb_file_per_table esteja configurada corretamente e o MySQL/MariaDB reiniciado antes de iniciar a instalação do Weblate.

[mysqld]
character-set-server = utf8mb4
character-set-client = utf8mb4
collation-server = utf8mb4_unicode_ci

datadir=/var/lib/mysql

log-error=/var/log/mariadb/mariadb.log

innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_file_per_table=1
innodb_buffer_pool_size=2G
sql_mode=STRICT_TRANS_TABLES

Dica

No caso de estar a receber o erro #1071 - Specified key was too long; max key length is 767 bytes, atualize a sua configuração para incluir as configurações innodb acima e reinicie a sua instalação.

Dica

No caso de estar a receber o erro #2006 - MySQL server has gone away, configurar CONN_MAX_AGE pode ajudar.

Configurando Weblate para usar MySQL/MariaDB

O trecho de settings.py para MySQL e MariaDB:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.mysql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "127.0.0.1",
        # Set to empty string for default
        "PORT": "3306",
        # In case you wish to use additional
        # connection options
        "OPTIONS": {},
    }
}

Também deve criar a conta de utilizador weblate no MySQL ou MariaDB antes de iniciar a instalação. Use os comandos abaixo para fazer isso:

GRANT ALL ON weblate.* to 'weblate'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Outras configurações

Configuração de e-mail de saída

O Weblate envia e-mails em várias ocasiões - para a ativação de contas e sobre várias notificações configuradas pelos utilizadores. Para isso, precisa de acesso a um servidor de SMTP.

A configuração do servidor de e-mail é configurada a usar essas configurações: EMAIL_HOST, EMAIL_HOST_PASSWORD, EMAIL_USE_SSL, EMAIL_USE_TLS, EMAIL_HOST_USER e EMAIL_PORT. Os nomes deles são bastante autoexplicativos, mas pode encontrar mais informações na documentação do Django.

Dica

Caso tenha erro sobre autenticação não suportada (por exemplo, SMTP AUTH extension not supported by server), é provavelmente causada pelo uso de conexão insegura e o servidor se recusa a autenticar dessa forma. Tente ativar EMAIL_USE_TLS nesse caso.

Executar por trás de um proxy reverso

Vários recursos no Weblate dependem de ser capaz de obter o endereço IP do cliente. Isso inclui Limitação de taxa, Proteção contra spam ou Registo de auditoria.

Na configuração predefinida, o Weblate analisa o endereço IP de REMOTE_ADDR que é definido pelo manipulador WSGI.

Se estiver a usar um proxy reverso, este campo provavelmente conterá o seu endereço. Precisa configurar o Weblate para confiar em cabeçalhos HTTP adicionais e analisar o endereço IP destes. Isso não pode ser ativado por predefinição, porque permitiria a falsificação de endereços IP para instalações que não usam um proxy reverso. Ativar IP_BEHIND_REVERSE_PROXY pode ser suficiente para as configurações mais usuais, mas podia precisar de ajustar IP_PROXY_HEADER e IP_PROXY_OFFSET também.

Proxy HTTP

O Weblate executa comandos VCS e esses que aceitam a configuração proxy do ambiente. A abordagem recomendada é definir configurações de proxy em settings.py:

import os

os.environ["http_proxy"] = "http://proxy.example.com:8080"
os.environ["HTTPS_PROXY"] = "http://proxy.example.com:8080"

Ajustar a configuração

Copie weblate/settings_example.py para weblate/settings.py e ajuste-o para corresponder à configuração. Provavelmente irá ajustar as opções a seguir:

ADMINS

Lista de administradores de sites para receber notificações quando algo dá errado, por exemplo, notificações em mesclagens fracassadas ou erros de Django.

Veja também

ADMINS

ALLOWED_HOSTS

Precisa definir isso para listar os hosts que o seu site deve servir. Por exemplo:

ALLOWED_HOSTS = ["demo.weblate.org"]

Alternativamente, pode incluir curinga:

ALLOWED_HOSTS = ["*"]

SESSION_ENGINE

Configure como as suas sessões serão armazenadas. Caso mantenha o mecanismo de backend do banco de dados predefinido, deve agendar: weblate clearsessions para remover dados de sessão obsoletos do banco de dados.

Se estiver a usar o Redis como cache (veja Ativar o cache) é recomendado também usá-lo para sessões:

SESSION_ENGINE = "django.contrib.sessions.backends.cache"

DATABASES

Conetividade ao servidor de banco de dados, verifique a documentação do Django para obter mais detalhes.

DEBUG

Desative isto para qualquer servidor de produção. Com o modo de depuração ativado, o Django mostrará backtraces em caso de erro aos utilizadores, quando desativá-lo, erros serão enviados por e-mail para ADMINS (veja acima).

O modo de depuração também desacelera o Weblate, já que o Django armazena muito mais informações internamente neste caso.

Veja também

DEBUG

DEFAULT_FROM_EMAIL

Endereço de remetente de e-mail para e-mail de saída, por exemplo, e-mails de registo.

Veja também

DEFAULT_FROM_EMAIL

SECRET_KEY

Chave usada por Django para assinar informações em cookies, consulte Chave secreta do Django para obter mais informações.

Veja também

SECRET_KEY

SERVER_EMAIL

E-mail usado como endereço de remetente para envio de e-mails ao administrador, por exemplo, notificações em mesclagens falhadas.

Veja também

SERVER_EMAIL

Preencher o banco de dados

Depois que a sua configuração estiver pronta, pode executar weblate migrate para criar a estrutura do banco de dados. Agora deve ser capaz de criar projetos de tradução a usar a interface administrativa.

Caso quere executar uma instalação não interativamente, pode usar weblate migrate --noinput e depois criar um utilizador administrativo pelo comando createadmin.

Uma vez feito, também deve verificar o Relatório de desempenho na interface administrativa, o que lhe dará dicas de configuração potencial não ideal no seu site.

Configuração de produção

Para uma configuração de produção, deve realizar ajustes descritos nas seções a seguir. As configurações mais críticas acionarão um aviso, que é indicado por um ponto de exclamação na barra superior se esitver conectado como um superutilizador:

_images/admin-wrench.png

Também é recomendado inspecionar verificações desencadeadas por Django (embora possa não precisar corrigir todas):

weblate check --deploy

Também pode revisar a mesma lista de verificação na Interface de gestão.

Veja também

Deployment checklist

Desativar o modo de depuração

Desative o modo de depuração do Django (DEBUG) com:

DEBUG = False

Com o modo de depuração ativado, o Django armazena todas as consultas executadas e mostra aos utilizadores backtraces de erros, o que não é desejado numa configuração de produção.

Configurar administradores corretamente

Defina os endereços de administração corretos à configuração ADMINS para definir quem receberá e-mails caso algo dê errado no servidor, por exemplo:

ADMINS = (("Your Name", "your_email@example.com"),)

Definir domínio correto do site

Ajuste o nome e o domínio do site na interface administrativa, caso contrário, ligações no RSS ou e-mails de registo não funcionarão. Isto é configurado usando SITE_DOMAIN que deve conter o nome de domínio do site.

Alterado na versão 4.2: Antes da versão 4.2, a estrutura de sites do Django era usada em vez disso, consulte The “sites” framework.

Configurar HTTPS corretamente

É fortemente recomendado executar Weblate a com o protocolo criptografado HTTPS. Depois de ativá-lo, deve definir ENABLE_HTTPS nas configurações:

ENABLE_HTTPS = True

Dica

Pode também configurar o HSTS, consulte SSL/HTTPS para obter mais detalhes.

Definir SECURE_HSTS_SECONDS corretamente

Se o seu site for servido sobre SSL, deve considerar definir um valor para :django:`SECURE_HSTS_SECONDS` no settings.py para ativar HTTP Strict Transport Security. Por padrão, ele está definido para 0 como mostrado abaixo.

SECURE_HSTS_SECONDS = 0

Se for definido como um valor inteiro não-zero, o cabeçalho django.middleware.security.SecurityMiddleware define o cabeçalho HTTP Strict Transport Security em todas as respostas que ainda não o possuem.

Aviso

Definir isto incorretamente pode quebrar irreversivelmente (por algum tempo) o seu site. Leia primeiro a documentação HTTP Strict Transport Security.

Usar um poderoso mecanismo de banco de dados

  • Por favor, use PostgreSQL para um ambiente de produção, consulte Configuração de banco de dados para o Weblate para obter mais informações.

  • Use um local adjacente para executar o servidor de banco de dados, caso contrário, o desempenho ou confiabilidade da rede podem arruinar a sua experiência com o Weblate.

  • Verifique o desempenho do servidor de banco de dados ou ajuste a sua configuração, por exemplo, usando PGTune.

Ativar o cache

Se for possível, use Redis do Django e ajuste a variável de configuração CACHES, por exemplo:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        # If redis is running on same host as Weblate, you might
        # want to use unix sockets instead:
        # 'LOCATION': 'unix:///var/run/redis/redis.sock?db=0',
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
        },
    }
}

Dica

Caso altere as configurações do Redis para o cache, pode ser necessário ajustá-las também para o Celery, consulte Tarefas de fundo a usar o Celery.

Cache de avatares

Além do cache de Django, Weblate realiza cache de avatares. Recomenda-se usar um cache separado, baseado em ficheiros para este fim:

CACHES = {
    "default": {
        # Default caching backend setup, see above
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "unix:///var/run/redis/redis.sock?db=0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
        },
    },
    "avatar": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
        "TIMEOUT": 604800,
        "OPTIONS": {
            "MAX_ENTRIES": 1000,
        },
    },
}

Configurar envio de e-mail

O Weblate precisa enviar e-mails em várias ocasiões e esses e-mails devem ter um endereço de remetente correto, por favor, configure :configuração:`SERVER_EMAIL` e DEFAULT_FROM_EMAIL para combinar com o seu ambiente, por exemplo:

SERVER_EMAIL = "admin@example.org"
DEFAULT_FROM_EMAIL = "weblate@example.org"

Nota

Para desativar o envio de e-mails pelo Weblate, defina EMAIL_BACKEND a django.core.mail.backends.dummy.EmailBackend.

Isso desativará toda a entrega de e-mail, incluindo e-mails de registo ou redefinição de palavra-passe.

Configuração de hosts permitidos

Django requer ALLOWED_HOSTS para manter uma lista de nomes de domínio que o seu site pode servir, deixá-lo vazio bloqueará todas solicitações.

Caso isso não esteja configurado para corresponder ao seu servidor HTTP, terá erros como Invalid HTTP_HOST header: '1.1.1.1'. Pode ter que adicionar '1.1.1.1' ao ALLOWED_HOSTS.

Dica

No contentor Docker, isso está disponível como WEBLATE_ALLOWED_HOSTS.

Chave secreta do Django

A configuração SECRET_KEY é usada pelo Django para assinar cookies e você deve realmente gerar o seu próprio valor em vez de usar o da configuração do exemplo.

Pode gerar uma nova chave por weblate/examples/generate-secret-key, que vem com o Weblate.

Veja também

SECRET_KEY

Directório inicial

Alterado na versão 2.1: Isso não é mais necessário, agora o Weblate armazena todos os seus dados em DATA_DIR.

O diretório home do utilizador que executa o Weblate deve existir e ser gravável por este utilizador. Isso é especialmente necessário se quiser usar o SSH para acessar repositórios privados, mas o Git pode precisar acessar este diretório também (dependendo da versão git que usa).

Pode alterar o diretório usado pelo Weblate em settings.py, por exemplo, para defini-lo como diretório configuration na árvore do Weblate:

os.environ["HOME"] = os.path.join(BASE_DIR, "configuration")

Nota

No Linux e em outros sistemas como UNIX, o caminho ao diretório home do utilizador é definido em /etc/passwd. Muitas distribuições usam um diretório sem permissão de escrita como predefinição para utilizadores para servir conteúdo web (como apache, www-data ou wwwrun), então tem que executar o Weblate sob um utilizador diferente ou alterar essa configuração.

Carregar modelos

Recomenda-se usar um carregador de modelo em cache para Django. Armazena modelos analisados e evita a necessidade de analizar cada solicitação. Pode configurá-lo a usar o trecho a seguir (a configuração loaders é importante aqui):

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [
            os.path.join(BASE_DIR, "templates"),
        ],
        "OPTIONS": {
            "context_processors": [
                "django.contrib.auth.context_processors.auth",
                "django.template.context_processors.debug",
                "django.template.context_processors.i18n",
                "django.template.context_processors.request",
                "django.template.context_processors.csrf",
                "django.contrib.messages.context_processors.messages",
                "weblate.trans.context_processors.weblate_context",
            ],
            "loaders": [
                (
                    "django.template.loaders.cached.Loader",
                    [
                        "django.template.loaders.filesystem.Loader",
                        "django.template.loaders.app_directories.Loader",
                    ],
                ),
            ],
        },
    },
]

Executar tarefas de manutenção

Para um desempenho ideal, é uma boa ideia executar algumas tarefas de manutenção em segundo plano. Isso agora é feito automaticamente por Tarefas de fundo a usar o Celery e abrange as seguintes tarefas:

  • Verificação de saúde da configuração (de hora em hora).

  • Realização de commits de alterações pendentes (de hora em hora), consulte Commits adiados e commit_pending.

  • Atualização de alertas de componentes (dialy).

  • Atualização dos ramos remotos (nightly), consulte AUTO_UPDATE.

  • Backup de memória de tradução para JSON (diariamente), consulte dump_memory.

  • Tarefas de manutenção de texto completo e banco de dados (tarefas diárias e semanais), consulte cleanuptrans.

Alterado na versão 3.2: Desde a versão 3.2, a maneira predefinida de executar essas tarefas é usar o Celery e o Weblate já vem com a configuração adequada, consulte Tarefas de fundo a usar o Celery.

Codificação e localidades do sistema

As localidades do sistema devem ser configuradas para UTF-8. Na maioria das distribuições Linux, esta é a configuração predefinida. Se não é o caso no seu sistema, altere as localidades para a variante UTF-8.

Por exemplo, a editar /etc/default/locale e a definir lá LANG="C.UTF-8".

Em alguns casos, os serviços individuais têm configuração separada para locais. Isso varia entre a distribuição e os servidores da web, portanto, verifique a documentação dos pacotes do servidor da web para isso.

Apache no Ubuntu usa /etc/apache2/envvars:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

Apache no CentOS usa /etc/sysconfig/httpd (ou /opt/rh/httpd24/root/etc/sysconfig/httpd):

LANG='en_US.UTF-8'

Usar uma autoridade certificadora personalizada

O Weblate verifica os certificados SSL durante as solicitações HTTP. Caso esteja a usar uma autoridade de certificação personalizada que não seja confiável em maços predefinidos, terá que adicionar o seu certificado como confiável.

A abordagem preferida é fazer isso no nível do sistema. Consulte a documentação da sua distro para mais detalhes (por exemplo, no Debian isso pode ser feito a por o certificado da AC em /usr/local/share/ca-certificates/ e executando update-ca-certificates).

Uma vez feito isso, as ferramentas do sistema confiarão no certificado e isso inclui o Git.

Para código em Python, precisará configurar solicitações para usar o pacote de AC do sistema em vez do fornecido . Isso pode ser conseguido pondo os seguintes trechos em settings.py (o caminho é específico do Debian):

import os

os.environ["REQUESTS_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt"

Comprimir os ativos do cliente

O Weblate vem com um monte de ficheiros JavaScript e CSS. Por razões de desempenho, é bom comprimi-los antes de enviar para um cliente. Na configuração predefinida isso é feito rapidamente ao custo de pouca sobrecarga. Em grandes instalações, recomenda-se ativar o modo de compressão offline. Isso precisa ser feito na configuração e a compressão tem que ser acionada em cada atualização do Weblate.

A mudança da configuração é simples ao ativar django.conf.settings.COMPRESS_OFFLINE e configuração django.conf.settings.COMPRESS_OFFLINE_CONTEXT (este último já está incluído na configuração do exemplo):

COMPRESS_OFFLINE = True

Em cada implantação precisa compactar os ficheiros para corresponder à versão atual:

weblate compress

Dica

A imagem oficial do Docker já tem este recurso ativado.

Executar o servidor

Dica

No caso de não ter experiência com os serviços descritos abaixo, pode tentar seguir Instalando a usar Docker.

Precisará de vários serviços para executar o Weblate, a configuração recomendada consiste em:

Nota

Existem algumas dependências entre os serviços, por exemplo, o cache e o banco de dados devem estar em execução ao iniciar os processos de Celery ou uwsgi.

Na maioria dos casos, executará todos os serviços num único servidor (virtual), mas se a sua instalação estar muito carregada, pode dividir os serviços. A única limitação disso é que os servidores Celery e Wsgi precisam acessar DATA_DIR.

Nota

O processo de WSGI deve ser executado sob o mesmo utilizador que o processo do Celery, caso contrário, os ficheiros em DATA_DIR serão armazenados com propriedade mista, a levar a problemas de tempo de execução.

Veja também Permissões do sistema de ficheiros e Tarefas de fundo a usar o Celery.

Executar um servidor web

Executar o Weblate não é diferente de executar qualquer outro programa baseado em Django. Django é geralmente executado como uWSGI ou fcgi (consulte exemplos para diferentes servidores web abaixo).

Para fins de teste, pode usar o servidor web incorporado no Django:

weblate runserver

Aviso

NÃO USE ESTE SERVIDOR NUMA CONFIGURAÇÃO DE PRODUÇÃO. Não passou por auditorias de segurança ou testes de desempenho. Veja também a documentação de Django no runserver.

Dica

O servidor embutido do Django serve apenas ficheiros estáticos com DEBUG ativado, pois é destinado apenas ao desenvolvimento. Para uso em produção, consulte as configurações de wsgi em Configuração de amostra para NGINX e uWSGI, Configuração de amostra para Apache, Configuração de amostra para Apache and Gunicorn e Servir ficheiros estáticos.

Servir ficheiros estáticos

Alterado na versão 2.4: Antes da versão 2.4, o Weblate não usava a estrutura de ficheiros estáticos do Django corretamente e a configuração era mais complexa.

Django precisa coletar os ficheiros estáticos dele num único diretório. Para isso, execute weblate collectstatic --noinput. Isso copiará os ficheiros estáticos num diretório especificado pela configuração STATIC_ROOT (isso é a predefinição para um diretório static dentro de DATA_DIR).

Recomenda-se servir ficheiros estáticos diretamente do seu servidor web. Deve usá-los para os seguintes caminhos:

/static/

Serve ficheiros estáticos para Weblate e a interface de administração (definida por STATIC_ROOT).

/media/

Usado para o envio de mídia pelo utilizador (por exemplo, capturas de ecrã).

/favicon.ico

Deve ser reescrito para reescrever uma regra para servir /static/favicon.ico.

Política de segurança de conteúdo

A configuração predefinida do Weblate ativa o middleware weblate.middleware.SecurityMiddleware que define cabeçalhos HTTP relacionados à segurança como Content-Security-Policy ou X-XSS-Protection. São configurados por predefinição para funcionar com o Weblate e a configuração dele, mas isso pode precisar de personalização no seu ambiente.

Configuração de amostra para NGINX e uWSGI

Para executar o servidor web de produção, use o wrapper wsgi instalado com Weblate (no caso de ambiente virtual é instalado como ~/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py). Também não se esqueça de definir o caminho de pesquisa Python para o seu virtualenv (por exemplo, usando virtualenv = /home/user/weblate-env` no uWSGI).

A configuração a seguir executa o Weblate como uWSGI sob o servidor web NGINX.

A configuração para NGINX (também disponível como weblate/examples/weblate.nginx.conf):

# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
server {
    listen 80;
    server_name weblate;
    # Not used
    root /var/www/html;

    location ~ ^/favicon.ico$ {
        # DATA_DIR/static/favicon.ico
        alias /home/weblate/data/static/favicon.ico;
        expires 30d;
    }

    location /static/ {
        # DATA_DIR/static/
        alias /home/weblate/data/static/;
        expires 30d;
    }

    location /media/ {
        # DATA_DIR/media/
        alias /home/weblate/data/media/;
        expires 30d;
    }

    location / {
        include uwsgi_params;
        # Needed for long running operations in admin interface
        uwsgi_read_timeout 3600;
        # Adjust based to uwsgi configuration:
        uwsgi_pass unix:///run/uwsgi/app/weblate/socket;
        # uwsgi_pass 127.0.0.1:8080;
    }
}

Configuração para uWSGI (também disponível como weblate/examples/weblate.uwsgi.ini):

# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
[uwsgi]
plugins       = python3
master        = true
protocol      = uwsgi
socket        = 127.0.0.1:8080
wsgi-file     = /home/weblate/weblate-env/lib/python3.9/site-packages/weblate/wsgi.py

# Add path to Weblate checkout if you did not install
# Weblate by pip
# python-path   = /path/to/weblate

# In case you're using virtualenv uncomment this:
virtualenv = /home/weblate/weblate-env

# Needed for OAuth/OpenID
buffer-size   = 8192

# Reload when consuming too much of memory
reload-on-rss = 250

# Increase number of workers for heavily loaded sites
workers       = 8

# Enable threads for Sentry error submission
enable-threads = true

# Child processes do not need file descriptors
close-on-exec = true

# Avoid default 0000 umask
umask = 0022

# Run as weblate user
uid = weblate
gid = weblate

# Enable harakiri mode (kill requests after some time)
# harakiri = 3600
# harakiri-verbose = true

# Enable uWSGI stats server
# stats = :1717
# stats-http = true

# Do not log some errors caused by client disconnects
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true

Configuração de amostra para Apache

Recomenda-se o uso de prefork de MPM ao usar WSGI com Weblate.

A configuração a seguir executa o Weblate como WSGI. Precisa ter ativado mod_wsgi (disponível como weblate/examples/apache.conf):

#
# VirtualHost for Weblate
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    # Path to your Weblate virtualenv
    WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias / /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
        <Files wsgi.py>
        Require all granted
        </Files>
    </Directory>

</VirtualHost>

Nota

Weblate precisa do Python 3, então, por favor se certifique que está a executar a variante do Python 3 do modwsgi. Usualmente, está disponível como um pacote separado, por exemplo libapache2-mod-wsgi-py3.

Configuração de amostra para Apache and Gunicorn

A configuração seguinte executa o Weblate em Gunicorn and Apache 2.4 (disponível como weblate/examples/apache.gunicorn.conf):

#
# VirtualHost for Weblate using gunicorn on localhost:8000
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:443>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/https_cert.cert
    SSLCertificateKeyFile /etc/apache2/ssl/https_key.pem
    SSLProxyEngine On

    ProxyPass /favicon.ico !
    ProxyPass /static/ !
    ProxyPass /media/ !

    ProxyPass / http://localhost:8000/
    ProxyPassReverse / http://localhost:8000/
    ProxyPreserveHost On
</VirtualHost>

A executar o Weblate sob o caminho

Novo na versão 1.3.

Recomenda-se o uso de prefork de MPM ao usar WSGI com Weblate.

Uma configuração do Apache de amostra para servir o Weblate sob /weblate. Novamente, a usar mod_wsgi (também disponível como weblate/examples/apache-path.conf):

#
# VirtualHost for Weblate, running under /weblate path
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /weblate/favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /weblate/static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /weblate/media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    # Path to your Weblate virtualenv
    WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias /weblate /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
        <Files wsgi.py>
        Require all granted
        </Files>
    </Directory>

</VirtualHost>

Adicionalmente, irá ter de ajustar o weblate/settings.py:

URL_PREFIX = "/weblate"

Tarefas de fundo a usar o Celery

Novo na versão 3.2.

O Weblate usa Celery para processar tarefas em segundo plano. Uma configuração típica a usar redis como backend se parece com isso:

CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL

Para o desenvolvimento, pode usar uma configuração ansiosa, que processa todas as tarefas no local, mas isso terá impacto no desempenho do Weblate:

CELERY_TASK_ALWAYS_EAGER = True
CELERY_BROKER_URL = "memory://"
CELERY_TASK_EAGER_PROPAGATES = True

Também deve iniciar o worker do Celery para processar as tarefas e iniciar tarefas programadas, isso pode ser feito diretamente na linha de comando (o que é mais útil ao depurar ou desenvolver):

./weblate/examples/celery start
./weblate/examples/celery stop

Nota

O processo de Celery deve ser executado sob o mesmo utilizador que o Weblate e o processo do WSGI, caso contrário, os ficheiros em DATA_DIR serão armazenados com propriedade mista, a levar a problemas de tempo de execução.

Veja também Permissões do sistema de ficheiros e Executar o servidor.

Executando Celery como serviço do sistema

Provavelmente vai querer executar o Celery como um daemon e que é coberto por Daemonization. Para as configurações Linux mais comuns a usar systemd, pode usar os ficheiros de exemplo disponibilizados na pasta examples listado abaixo.

Unidade do systemd a ser posta como /etc/systemd/system/celery-weblate.service:

[Unit]
Description=Celery Service (Weblate)
After=network.target

[Service]
Type=forking
User=weblate
Group=weblate
EnvironmentFile=/etc/default/celery-weblate
WorkingDirectory=/home/weblate
RuntimeDirectory=celery
RuntimeDirectoryPreserve=restart
LogsDirectory=celery
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
  --pidfile=${CELERYD_PID_FILE}'
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'

[Install]
WantedBy=multi-user.target

Configuração do ambiente a ser posta como /etc/default/celery-weblate:

# Name of nodes to start
CELERYD_NODES="celery notify memory backup translate"

# Absolute or relative path to the 'celery' command:
CELERY_BIN="/home/weblate/weblate-env/bin/celery"

# App instance to use
# comment out this line if you don't use an app
CELERY_APP="weblate.utils"

# Extra command-line arguments to the worker,
# increase concurency if you get weblate.E019
CELERYD_OPTS="--beat:celery --queues:celery=celery --prefetch-multiplier:celery=4 \
    --queues:notify=notify --prefetch-multiplier:notify=10 \
    --queues:memory=memory --prefetch-multiplier:memory=10 \
    --queues:translate=translate --prefetch-multiplier:translate=4 \
    --concurrency:backup=1 --queues:backup=backup  --prefetch-multiplier:backup=2"

# Logging configuration
# - %n will be replaced with the first part of the nodename.
# - %I will be replaced with the current child process index
#   and is important when using the prefork pool to avoid race conditions.
CELERYD_PID_FILE="/run/celery/weblate-%n.pid"
CELERYD_LOG_FILE="/var/log/celery/weblate-%n%I.log"
CELERYD_LOG_LEVEL="INFO"

# Internal Weblate variable to indicate we're running inside Celery
CELERY_WORKER_RUNNING="1"

Configuração adicional para alternar os logs do Celery a usar logrotate a ser posta como /etc/logrotate.d/celery:

/var/log/celery/*.log {
        weekly
        missingok
        rotate 12
        compress
        notifempty
}

Tarefas periódicas a usar a batida do Celery

O Weblate vem com configuração embutida para tarefas programadas. No entanto, pode definir tarefas adicionais em settings.py. Por exemplo, veja Commits adiados.

As tarefas deveriam ser executadas por daemons de batidas do Celery. Caso não esteja a funcionar corretamente, pode não estar a funcionar ou o seu banco de dados foi corrompido. Verifique os registos de inicialização do Celery nesse caso para descobrir a causa raiz.

Monitorar o estado do Celery

Pode usar celery_queues para ver o comprimento atual das filas de tarefas do Celery. Caso a fila fique muito longa, também terá erro de configuração na interface administrativa.

Aviso

Os erros do Celery são por padrão apenas conectados ao log do Celery e não são visíveis ao utilizador. Caso queira ter uma visão geral sobre tais falhas, recomenda-se ajustar a configuração para ir Coletando relatórios de erros.

Monitorando o Weblate

O Weblate fornece a URL /healthz/ a ser usada em verificações de saúde simples, por exemplo, usando Kubernetes. O contentor Docker tem verificação de saúde embutida usando esta URL.

Para monitorar as métricas do Weblate, pode usar o ponto final GET /api/metrics/ da API.

Coletando relatórios de erros

Weblate, como qualquer outro software, pode falhar. Para coletar estados de falha úteis, recomendamos usar serviços de terceiros para coletar tais informações. Isso é especialmente útil no caso de falhas nas tarefas do Celery, que de outra forma só relatariam erro nos logs e não será notificado sobre eles. O Weblate tem suporte para os seguintes serviços:

Sentry

O Weblate possui suporte embutido para Sentry. Para usá-lo, é suficiente definir SENTRY_DSN no settings.py:

SENTRY_DSN = "https://id@your.sentry.example.com/"

Rollbar

O Weblate tem suporte embutido para Rollbar. Para usá-lo, basta seguir instruções para o notificador de Rollbar para Python.

Em suma, precisa ajustar settings.py:

# Add rollbar as last middleware:
MIDDLEWARE = [
    # … other middleware classes …
    "rollbar.contrib.django.middleware.RollbarNotifierMiddleware",
]

# Configure client access
ROLLBAR = {
    "access_token": "POST_SERVER_ITEM_ACCESS_TOKEN",
    "client_token": "POST_CLIENT_ITEM_ACCESS_TOKEN",
    "environment": "development" if DEBUG else "production",
    "branch": "main",
    "root": "/absolute/path/to/code/root",
}

Todo o resto é integrado automaticamente, agora coletará erros do lado do servidor e do cliente.

Migrando Weblate para outro servidor

Migrar o Weblate para outro servidor deve ser muito fácil, porém armazena dados em poucos locais que deve migrar cuidadosamente. A melhor abordagem é parar o Weblate para a migração.

Migrando banco de dados

Dependendo do backend do seu banco de dados, pode ter várias opções para migrar o banco de dados. O mais simples é despejar o banco de dados num servidor e importá-lo no novo. Alternativamente, pode usar a replicação no caso do seu banco de dados ter suporte a isso.

A melhor abordagem é usar ferramentas nativas de banco de dados, pois geralmente são as mais eficazes (por exemplo, mysqldump ou pg_dump). Se quiser migrar entre diferentes bancos de dados, a única opção pode ser usar a gestão do Django para despejar e importar o banco de dados:

# Export current data
weblate dumpdata > /tmp/weblate.dump
# Import dump
weblate loaddata /tmp/weblate.dump

Migrando repositórios VCS

Os repositórios VCS armazenados em DATA_DIR também precisam ser migrados. Pode simplesmente copiá-los ou usar rsync para fazer a migração de forma mais eficaz.

Outras notas

Não se esqueça de mover outros serviços que o Weblate pode ter usado como Redis, tarefas do cron ou backends de autenticação personalizada.

Implantações de Weblate

O Weblate pode ser facilmente instalado na sua nuvem. Encontre um guia detalhado para sua plataforma:

Implantações de terceiros para Weblate

Nota

As seguintes implantações não são desenvolvidas ou suportadas pela equipa Weblate. Partes da configuração podem variar do que está descrito nesta documentação.

Pilha Weblate para Bitnami

Bitnami fornece uma pilha Weblate para muitas plataformas em <https://bitnami.com/stack/weblate>. A configuração será ajustada durante a instalação, consulte <https://bitnami.com/stack/weblate/README.txt> para mais documentação.

Pacote de Weblate para Cloudron

Cloudron é uma plataforma para auto-hospedagem de aplicações da web. Weblate instalado com Cloudron será automaticamente atualizado. O pacote é mantido pela equipa Cloudron no seu repositório de pacotes Weblate <https://git.cloudron.io/cloudron/weblate-app> _.

Instalar Weblate com Cloudron

Weblate no YunoHost

O projeto de hospedagem própria YunoHost fornece um pacote para Weblate. Uma vez que tenha a sua instalação YunoHost, pode instalar o Weblate como qualquer outra aplicação. Ele fornecerá uma pilha de trabalho completo com backup e restauração, mas ainda pode ter que editar seu ficheiro de configurações para usos específicos.

Pode usar a sua interface de administração ou este botão (vai levá-lo ao seu servidor):

Instalar Weblate com YunoHost

Também é possível usar a interface da linha de comando:

yunohost app install https://github.com/YunoHost-Apps/weblate_ynh

Atualizando o Weblate

Atualizações de imagem Docker

A imagem Docker oficial (veja Instalando a usar Docker) possui todas as etapas de atualização integradas. Não há nenhuma etapa manual além de buscar a versão mais recente.

Instruções genéricas de atualização

Antes de atualizar, verifique os atuais Requisitos de software, pois eles podem ter mudado. Uma vez que todos os requisitos estejam instalados ou atualizados, ajuste o seu settings.py para corresponder às mudanças na configuração (consulte settings_example.py para os valores corretos).

Always check Instruções específicas de versão before upgrade. In case you are skipping some versions, please follow instructions for all versions you are skipping in the upgrade. Sometimes it’s better to upgrade to some intermediate version to ensure a smooth migration. Upgrading across multiple releases should work, but is not as well tested as single version upgrades.

Nota

It is recommended to perform a full database backup prior to upgrade so that you can roll back the database in case upgrade fails, see Fazer backup e mover o Weblate.

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

  2. Upgrade Weblate code.

    Para instalações pip, isso pode ser alcançado da seguinte forma:

    pip install -U Weblate
    

    Com um checkout do Git, precisa obter o novo código-fonte e atualizar a sua instalação:

    cd weblate-src
    git pull
    # Update Weblate inside your virtualenv
    . ~/weblate-env/bin/pip install -e .
    # Install dependencies directly when not using virtualenv
    pip install --upgrade -r requirements.txt
    
  3. Atualize o ficheiro de configuração, consulte o settings_example.py ou :ref:`version-specific-instructions`para os passos necessários.

  4. Atualize estrutura do banco de dados:

    weblate migrate --noinput
    
  5. Colete ficheiros estáticos atualizados (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic --noinput
    
  6. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  7. Se está a usar uma versão do Git, também deve gerar novamente ficheiros locais toda vez que estiver atualizando. Pode fazer isso a invocar:

    weblate compilemessages
    
  8. Verifique que a sua configuração é sana (ver também Configuração de produção):

    weblate check --deploy
    
  9. Restart Celery worker (see Tarefas de fundo a usar o Celery).

Instruções específicas de versão

Atualizar de 2.x

Se está a atualizar da versão 2.x, sempre atualize para a 3.0.1 antes e depois continue atualizando na série 3.x. Atualizações pulando esse passo não são suportadas e não funcionarão corretamente.

Upgrade from 3.x

If you are upgrading from 3.x release, always first upgrade to 4.0.4 or 4.1.1 and then continue upgrading in the 4.x series. Upgrades skipping this step are not supported and will break.

Upgrade from 4.0 to 4.1

Please follow Instruções genéricas de atualização in order to perform update.

Notable configuration or dependencies changes:

  • There are several changes in settings_example.py, most notable middleware changes, please adjust your settings accordingly.

  • There are new file formats, you might want to include them in case you modified the WEBLATE_FORMATS.

  • There are new quality checks, you might want to include them in case you modified the CHECK_LIST.

  • There is change in DEFAULT_THROTTLE_CLASSES setting to allow reporting of rate limiting in the API.

  • There are some new and updated requirements.

  • There is a change in INSTALLED_APPS.

  • The MT_DEEPL_API_VERSION setting has been removed in Version 4.7. The DeepL machine translation now uses the new MT_DEEPL_API_URL instead. You might need to adjust MT_DEEPL_API_URL to match your subscription.

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 and CELERY_TASK_ROUTES setting.

  • The Weblate domain is now configured in the settings, see SITE_DOMAIN (or WEBLATE_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.

Upgrade from 4.2 to 4.3

Please follow Instruções genéricas de atualização in order to perform update.

Notable configuration or dependencies changes:

  • There are some changes in quality checks, you might want to include them in case you modified the CHECK_LIST.

  • The source language attribute was moved from project to a component what is exposed in the API. You will need to update Cliente Weblate in case you are using it.

  • The database migration to 4.3 might take long depending on number of strings you are translating (expect around one hour of migration time per 100,000 source strings).

  • There is a change in INSTALLED_APPS.

  • There is a new setting SESSION_COOKIE_AGE_AUTHENTICATED which complements SESSION_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 and GITLAB_CREDENTIALS.

Alterado na versão 4.3.1:

  • The Celery configuration was changed to add memory queue. Please adjust your startup scripts and CELERY_TASK_ROUTES setting.

Alterado na versão 4.3.2:

  • The post_update method of addons now takes extra skip_push parameter.

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 and msgctxt 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 using loadpo.

  • Increased minimal required version of translate-toolkit to address several file format issues.

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.

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:

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. The MT_DEEPL_API_VERSION setting is no longer used.

  • Django 3.2 is now required.

Upgrade from 4.7 to 4.8

Please follow Instruções genéricas de atualização in order to perform update.

There are no additional upgrade steps needed in this release.

Upgrading from Python 2 to Python 3

Weblate no longer supports Python older than 3.5. In case you are still running on older version, please perform migration to Python 3 first on existing version and upgrade later. See Upgrading from Python 2 to Python 3 in the Weblate 3.11.1 documentation.

Migrando de outros bancos de dados para o PostgreSQL

If you are running Weblate on other dabatase than PostgreSQL, you should consider migrating to PostgreSQL as Weblate performs best with it. The following steps will guide you in migrating your data between the databases. Please remember to stop both web and Celery servers prior to the migration, otherwise you might end up with inconsistent data.

Criar um banco de dados no PostgreSQL

Geralmente é uma boa ideia executar o Weblate num banco de dados separado e separar a conta do utilizador:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Migrating using Django JSON dumps

The simplest approach for migration is to utilize Django JSON dumps. This works well for smaller installations. On bigger sites you might want to use pgloader instead, see Migrating to PostgreSQL using pgloader.

  1. 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": "",
    },
}
  1. Run migrations and drop any data inserted into the tables:

weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
  1. Dump legacy database and import to PostgreSQL

weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
  1. 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.

  1. Adjust your settings.py to use PostgreSQL as a database.

  2. Migrate the schema in the PostgreSQL database:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Run the pgloader to transfer the data. The following script can be used to migrate the database, but you might want to learn more about pgloader to understand what it does and tweak it to match your setup:

    LOAD DATABASE
         FROM      mysql://weblate:password@localhost/weblate
         INTO postgresql://weblate:password@localhost/weblate
    
    WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only
    
    ALTER SCHEMA 'weblate' RENAME TO 'public'
    ;
    

Migrating from Pootle

As Weblate was originally written as replacement from Pootle, it is supported to migrate user accounts from Pootle. You can dump the users from Pootle and import them using importusers.

Fazer backup e mover o Weblate

Backup automatizado pelo BorgBackup

Novo na versão 3.9.

O Weblate tem suporte embutido para criação de backups de serviços a usar BorgBackup. Borg cria backups criptografados eficazes em termos de espaço que podem ser armazenados com segurança na nuvem. Os backups podem ser controlados na interface de gestão da guia Backups.

Alterado na versão 4.4.1: Os bancos de dados PostgreSQL e MySQL/MariaDB estão incluídos nos backups automatizados.

Os backups que usam o Borg são incrementais e o Weblate é configurado para manter os seguintes backups:

  • Backups diários para 14 dias

  • Backups semanais por 8 semanas atrás

  • Backups mensais por 6 meses atrás

_images/backups.png

Chave de criptografia do Borg

BorgBackup cria backups criptografados e não conseguiria restaurá-los sem a palavra-passe. A palavra-passe é gerada ao adicionar novo serviço de backup e deve copiá-lo e mantê-lo num lugar seguro.

Se estiver a usar Armazenamento de backup provisionado do Weblate, faça backup da sua chave SSH privada também, pois ela é usada para acessar os seus backups.

Veja também

borg init

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:

  1. Compre o Serviço de backup em https://weblate.org/support/#backup.

  2. Insira a chave obtida na interface de gestão, veja Integrando o apoio.

  3. Weblate se conecta ao serviço de nuvem e obtém informações de acesso para os backups.

  4. Ative a nova configuração de backup a partir da guia Backups.

  5. Faça backup das suas credenciais do Borg para conseguir restaurar os backups, veja Chave de criptografia do Borg.

Dica

O passo manual para ativar tudo está lá para sua segurança. Sem o seu consentimento, nenhum dado é enviado ao repositório de backup obtido através do processo de registo.

Usar armazenamento de backup personalizado

Também pode usar o seu próprio armazenamento para backups. SSH pode ser usado para armazenar cópias de segurança no destino remoto, o servidor de destino precisa do BorgBackup instalado.

Veja também

General na documentação do Borg

Sistema de ficheiros local

Recomenda-se especificar o caminho absoluto para o backup local, por exemplo /caminho/para/backup. O diretório deve poder ser escrito pelo utilizador a executar o Weblate (veja Permissões do sistema de ficheiros). Se ele não existir, o Weblate tenta criá-lo, mas precisa das permissões apropriadas para fazê-lo.

Dica

Ao executar o Weblate no Docker, certifique-se de que o local de backup seja exposto como um volume do contentor Weblate. Caso contrário, os backups serão descartados pelo Docker na reinicialização do seu contentor.

Uma opção é pôr backups num volume existente. Por exemplo, /app/data/borgbackup. Este é um volume existente no contentor.

Também pode adicionar um novo contentor para os backups no ficheiro de composição do Docker, por exemplo, a usar /borgbackup:

services:
  weblate:
    volumes:
      - /home/weblate/data:/app/data
      - /home/weblate/borgbackup:/borgbackup

O diretório onde os backups serão armazenados para serem possuídos por UID 1000, caso o contrário, Weblate não será capaz de escrever os backups lá.

Backups remotos

Para criar os backups remotos, terá que instalar o BorgBackup em outro servidor que seja acessível para sua implantação de Weblate via SSH a usar a chave SSH do Weblate:

  1. Prepare um servidor onde os seus backups serão armazenados.

  2. Instale o servidor SSH nele (receberá-o por padrão com a maioria das distribuições Linux).

  3. Instale o BorgBackup nesse servidor; a maioria das distribuições Linux tem pacotes disponíveis (veja Installation).

  4. Escolha um utilizador existente ou crie um novo que será usado para backup.

  5. Adicione a chave SSH do Weblate ao utilizador para que o Weblate possa usar o SSH para o servidor sem uma palavra-passe (veja Chave SSH do Weblate).

  6. Configure o local de backup no Weblate como user@host:/caminho/para/backups.

Dica

Armazenamento de backup provisionado do Weblate fornece backups remotos automatizados sem qualquer esforço.

Veja também

Chave SSH do Weblate

Restaurar do BorgBackup

  1. Restaurar o acesso ao repositório de backup e preparar a sua palavra-passe de backup.

  2. Liste todos os backups no servidor a usar borg list REPOSITÓRIO.

  3. Restaure o backup desejado para o diretório atual a usar borg extract REPOSITÓRIO::PACOTE.

  4. Restaure o banco de dados do despejo de SQL posto no diretório backup no diretório de dados do Weblate (veja :ref:”backup-dumps”).

  5. Copie a configuração do Weblate (backups/settings.py, veja Dados despejados para backups) até o local correto, veja Ajustar a configuração.

    Ao usar o contentor Docker, o ficheiro de configurações já está incluído no contentor e deve restaurar as variáveis de ambiente originais. O ficheiro environment.yml pode ajudá-lo com isso (veja Dados despejados para backups).

  6. Copie todo o diretório de dados restaurados para o local configurado por DATA_DIR.

    Ao usar contentores do Docker, coloque os dados num volume de dados, veja Volumes de contentor Docker.

    Por favor, assegurar que os ficheiros têm o proprietário e as permissões corretas, veja :ref: file-permissions.

A sessão dos Borg pode parecer com isso:

$ borg list /tmp/xxx
Enter passphrase for key /tmp/xxx:
2019-09-26T14:56:08                  Thu, 2019-09-26 14:56:08 [de0e0f13643635d5090e9896bdaceb92a023050749ad3f3350e788f1a65576a5]
$ borg extract /tmp/xxx::2019-09-26T14:56:08
Enter passphrase for key /tmp/xxx:

Veja também

borg list, borg extract

Backup manual

Dependendo do que deseja gravar, faça backup do tipo de dados que o Weblate armazena em cada lugar.

Dica

Se estiver a fazer os backups manualmente, pode silenciar os avisos do Weblate sobre a falta de backups a adicionar weblate.I028 para SILENCED_SYSTEM_CHECKS em settings.py ou WEBLATE_SILENCED_SYSTEM_CHECKS para o Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Banco de dados

O local de armazenamento real depende da configuração do seu banco de dados.

Dica

O banco de dados é o armazenamento mais importante. Configure backups regulares do seu banco de dados. Sem o banco de dados, todas as traduções são perdidas.

Backup nativo do banco de dados

A abordagem recomendada é gravar um despejo do banco de dados a usar ferramentas nativas, tais como pg_dump ou msqldump. Esta abordagem normalmente tem um desempenho melhor do que o backup do Django e restaura tabelas completas com todos os seus dados.

Pode restaurar esse backup numa versão mais nova do Weblate, ele executará todas as migrações necessárias ao executar em migrate. Consulte Atualizando o Weblate sobre informações mais detalhadas sobre como a atualizar entre as versões.

Backup do banco de dados do Django

Alternativamente, pode fazer backup do seu banco de dados a utilizar o comando dumpdata do Django. Dessa forma o backup é agnóstico de banco de dados e pode ser usado caso queira alterar o backend do banco de dados.

Antes de restaurar o banco de dados, precisa estar a usar exatamente a mesma versão do Weblate na qual o backup foi feito. Isso é necessário, pois a estrutura do banco de dados muda entre as versões e acabaria a corromper os dados de alguma forma. Depois de instalar a mesma versão, execute todas as migrações do banco de dados a usar migrate.

Depois disso, algumas entradas já serão criadas no banco de dados e as terá no backup do banco de dados também. A abordagem recomendada é apagar essas entradas manualmente a usar o shell de gestão (veja Invocando comandos de gestão):

weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()

Ficheiros

Se tiver espaço de backup suficiente, basta fazer backup de todo o DATA_DIR. Esta é uma aposta segura, mesmo que inclua alguns ficheiro que não quer. As seções a seguir descrevem o que deve fazer backup e o que pode pular em detalhes.

Dados despejados para backups

Alterado na versão 4.7: O despejo do ambiente foi adicionado como environment.yml para ajudar na restauração nos ambientes Docker.

Armazenados em DATA_DIR /backups.

O Weblate despeja vários dados aqui e pode incluir esses ficheiros para backups mais completos. Os ficheiros são atualizados diariamente (requer um servidor de «beats» do Celery em execução, consulte Tarefas de fundo a usar o Celery). Atualmente, isto inclui:

  • Configurações do Weblate como settings.py (existe também a versão expandida em settings-expanded.py).

  • Backup de banco de dados PostgreSQL como database.sql.

  • Despejo do ambiente como environment.yml.

Os backups do banco de dados são salvos como texto simples por padrão, mas eles também podem ser comprimidos ou totalmente ignorados a usar DATABASE_BACKUP.

Para restaurar o backup do banco de dados, carregue-o usando ferramentas de banco de dados, por exemplo:

psql --file=database.sql weblate
Repositórios de controle de versão

Armazenados em DATA_DIR /vcs.

Os repositórios de controle de versão contêm uma cópia dos seus repositórios upstream com alterações do Weblate. Se tiver o Enviar ao submeter ativado para todos os seus componentes de tradução, todas as alterações do Weblate são incluídas no upstream. Não há necessidade de fazer backup dos repositórios no lado do Weblate, pois eles podem ser clonados novamente a partir dos upstream locais sem perda de dados.

Chaves SSH e GPG

Armazenados em DATA_DIR /ssh e DATA_DIR /home.

Se está a usar chaves SSH ou GPG geradas pelo Weblate, deve fazer backup destes locais. Caso contrário, vai perder as chaves privadas e terá que gerar novamente as novas.

Ficheiros enviados pelo utilizador

Armazenados em DATA_DIR /media.

Deve fazer o backup de todos os ficheiros enviados pelo utilizador (por exemplo, Contexto visual para cadeias).

Tarefas do Celery

A fila de tarefas do Celery pode conter algumas informações, mas geralmente não é necessária para um backup. No máximo, perderá atualizações ainda não processadas para a memória de tradução. Recomenda-se realizar a atualização de texto completo ou repositório ao restaurar de qualquer maneira, de modo que não há problema em perdê-las.

Linha de comando para backup manual

Usando uma tarefa de cron, pode configurar um comando do Bash para ser executado diariamente, por exemplo:

$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret

A cadeia entre as aspas após XZ_OPT permite que escolha as suas opções do xz, por exemplo, a quantidade de memória utilizada para compressão; veja https://linux.die.net/man/1/xz

Pode ajustar a lista de pastas e ficheiros às suas necessidades. Para evitar gravar a memória de tradução (na pasta backups), pode usar:

$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups/database.sql backups/settings.py vcs ssh home media fonts secret

Restaurar backup manual

  1. Restaure todos os dados dos quais tenha feito backup.

  2. Atualize todos repositórios a usar o updategit.

    weblate updategit --all
    

Mover uma instalação do Weblate

Realoque a instalação de um sistema diferente, a seguir as instruções de backup e restauração acima.

Autenticação

Registo de utilizador

A configuração predefinida para Weblate é usar python-social-auth, um formulário no site para lidar com o registo de novos utilizadores. Depois de confirmar o seu e-mail, um novo utilizador pode contribuir ou autenticar a usar um dos serviços de terceiros.

Também pode desativar o registo de novos utilizadores configurando REGISTRATION_OPEN.

As tentativas de autenticação estão sujeitas a Limitação de taxa.

Backends de autenticação

A solução embutida do Django é utilizada para autenticação, incluindo várias opções sociais para fazê-lo. Utilizando-a, pode importar o banco de dados de utilizadores de outros projetos baseados no Django (veja Migrating from Pootle).

Django pode, adicionalmente, ser configurado para autenticar em outros meios também.

Veja também

Configurações de autenticação descreve como configurar a autenticação na imagem oficial do Docker.

Autenticação social

Graças ao Welcome to Python Social Auth’s documentation!, o Weblate tem suporte a autenticação utilizando muitos serviços de terceiros, tais como GitLab, Ubuntu, Fedora, etc.

Por favor, verifique a documentação deles por instruções de configuração genéricas em Django Framework.

Nota

Por predefinição, o Weblate conta com serviços de autenticação de terceiros para fornecer um endereço de e-mail validado. Se alguns dos serviços que deseja usar não suportarem isto, por favor aplique a validação de e-mail no lado Weblate configurando FORCE_EMAIL_VALIDATION para eles. Por exemplo:

SOCIAL_AUTH_OPENSUSE_FORCE_EMAIL_VALIDATION = True

Veja também

Pipeline

Permitir backends individuais é bastante fácil, é apenas uma questão de adicionar uma entrada à configuração AUTHENTICATION_BACKENDS e possivelmente adicionar chaves necessárias para um determinado método de autenticação. Por favor, note que alguns backends não fornecem e-mails do utilizador por predefinição, tem que solicitá-lo explicitamente, caso contrário o Weblate não será capaz de corretamente dar mérito às contribuições que os utilizadores fazem.

Dica

A maioria dos backends de autenticação exige HTTPS. Assim que o HTTPS estiver ativado no seu servidor web, configure o Weblate para relatá-lo corretamente usando ENABLE_HTTPS ou, no contentor Docker, WEBLATE_ENABLE_HTTPS.

Autenticação por OpenID

Para serviços baseados em OpenID, geralmente é apenas uma questão de ativá-los. A secção a seguir permite a autenticação OpenID para OpenSUSE, Fedora e Ubuntu:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    "social_core.backends.suse.OpenSUSEOpenId",
    "social_core.backends.ubuntu.UbuntuOpenId",
    "social_core.backends.fedora.FedoraOpenId",
    "weblate.accounts.auth.WeblateUserBackend",
)

Veja também

OpenID

Autenticação por GitHub

Precisa registar uma aplicação de OAuth no GitHub e, em seguida, dizer ao Weblate todos os seus segredos:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.github.GithubOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GITHUB_KEY = "GitHub Client ID"
SOCIAL_AUTH_GITHUB_SECRET = "GitHub Client Secret"
SOCIAL_AUTH_GITHUB_SCOPE = ["user:email"]

O GitHub deve ser configurado para ter URL de um retorno de chamada como https://example.com/accounts/complete/github/.

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

GitHub

Autenticação por Bitbucket

Precisa registar uma aplicação no Bitbucket e dar todos os segredos dele ao Weblate:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.bitbucket.BitbucketOAuth",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_BITBUCKET_KEY = "Bitbucket Client ID"
SOCIAL_AUTH_BITBUCKET_SECRET = "Bitbucket Client Secret"
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

Bitbucket

OAuth 2 do Google

Para usar o OAuth 2 do Google, precisa registar-se numa aplicação em <https://console.developers.google.com/> e ativar a API do Google+.

A URL de redirecionamento é https://SERVIDOR WEBLATE/accounts/complete/google-oauth2/

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.google.GoogleOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = "Client ID"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = "Client secret"

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

Google

OAuth 2 do Facebook

Como de costume com os serviços OAuth 2, precisa registar a sua aplicação no Facebook. Uma vez feito, pode configurar o Weblate para usá-lo:

A URL de redirecionamento é https://SERVIDOR WEBLATE/accounts/complete/facebook/

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.facebook.FacebookOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_FACEBOOK_KEY = "key"
SOCIAL_AUTH_FACEBOOK_SECRET = "secret"
SOCIAL_AUTH_FACEBOOK_SCOPE = ["email", "public_profile"]

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

Facebook

OAuth 2 do GitLab

Para usar o OAuth 2 do GitLab, precisa registar uma aplicação em <https://gitlab.com/profile/applications>.

A URL de redirecionamento é https://SERVIDOR WEBLATE/accounts/complete/gitlab/ e garantir que marque o escopo read_user.

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.gitlab.GitLabOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GITLAB_KEY = "Application ID"
SOCIAL_AUTH_GITLAB_SECRET = "Secret"
SOCIAL_AUTH_GITLAB_SCOPE = ["read_user"]

# If you are using your own GitLab
# SOCIAL_AUTH_GITLAB_API_URL = 'https://gitlab.example.com/'

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

GitLab

Active Directory do Microsoft Azure

Weblate pode ser configurado para usar inquilinos comuns ou específicos para autenticação.

O URL de redirecionamento é https://SERVIDOR WEBLATE/accounts/complete/azuread-oauth2/ para autenticação comum e https://SERVIDOR WEBLATE/accounts/complete/azuread-tenant-oauth2/ para autenticação específica do inquilino.

# Azure AD common

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.azuread.AzureADOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# OAuth2 keys
SOCIAL_AUTH_AZUREAD_OAUTH2_KEY = ""
SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET = ""
# Azure AD Tenant

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.azuread_tenant.AzureADTenantOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# OAuth2 keys
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY = ""
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET = ""
# Tenant ID
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID = ""

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Slack

Para usar o OAuth 2 do Slack, precisa registar uma aplicação em <https://api.slack.com/apps>.

A URL de redirecionamento é https://SERVIDOR WEBLATE/accounts/complete/slack/.

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.slack.SlackOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_SLACK_KEY = ""
SOCIAL_AUTH_SLACK_SECRET = ""

Nota

O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.

Veja também

Slack

A substituir nomes e ícones de métodos de autenticação

Pode substituir o nome de exibição do método de autenticação e o ícone a usar configurações como SOCIAL_AUTH_<NOME>_IMAGE e SOCIAL_AUTH_<NOME>_TITLE. Por exemplo, substituir a nomenclatura para Auth0 ficaria assim:

SOCIAL_AUTH_AUTH0_IMAGE = "custom.svg"
SOCIAL_AUTH_AUTH0_TITLE = "Custom auth"

Desativar autenticação por palavra-passe

Autenticação por e-mail e palavra-passe pode ser desativada através da remoção de social_core.backends.email.EmailAuth de AUTHENTICATION_BACKENDS. Mantenha sempre weblate.accounts.auth.WeblateUserBackend lá, pois é necessário para a funcionalidade central do Weblate.

Dica

Ainda pode usar autenticação por palavra-passe para a interface administrativa, para utilizadores que lá cria manualmente. Basta navegar para /admin/.

Por exemplo, a autenticação a usar apenas o provedor Open ID do openSUSE pode ser alcançada a usar o seguinte:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.suse.OpenSUSEOpenId",
    "weblate.accounts.auth.WeblateUserBackend",
)

Autenticação por palavra-passe

A predefinição settings.py vem com um razoável conjunto de AUTH_PASSWORD_VALIDATORS:

  • As palavras-passe não podem ser muito similares com as suas outras informações pessoais.

  • As palavras-passe devem conter no mínimo de 10 caracteres.

  • As palavras-passe não podem ser palaras-passe comumente usadas.

  • As palavras-passe não podem ser inteiramente numéricas.

  • As palavras-passe não podem consistir num único caractere ou apenas espaço em branco.

  • As palavras-passe não podem corresponder a uma palavra-passe que já usou no passado.

Pode personalizar esta configuração para corresponder à sua política de palavra-passe.

Além disso, também pode instalar o django-zxcvbn-password o que dá bastante estimativas realistas de complexidade da palavra-passe e permite rejeitar palavras-passe abaixo de um determinado limite.

Autenticação por SAML

Novo na versão 4.1.1.

Siga as instruções do Python Social Auth para configuração. Diferenças notáveis:

  • Weblate tem suporte a único IDP que tem de ser chamado de weblate em SOCIAL_AUTH_SAML_ENABLED_IDPS.

  • A URL de metadados XML de SAML é /accounts/metadata/saml/.

  • As configurações a seguir são preenchidas automaticamente: SOCIAL_AUTH_SAML_SP_ENTITY_ID, SOCIAL_AUTH_SAML_TECHNICAL_CONTACT, SOCIAL_AUTH_SAML_SUPPORT_CONTACT

Exemplo de configuração:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    "social_core.backends.saml.SAMLAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_SAML_SP_ENTITY_ID = f"https://{SITE_DOMAIN}/accounts/metadata/saml/"
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "-----BEGIN CERTIFICATE-----"
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----"
SOCIAL_AUTH_SAML_ENABLED_IDPS = {
    "weblate": {
        "entity_id": "https://idp.testshib.org/idp/shibboleth",
        "url": "https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO",
        "x509cert": "MIIEDjCCAvagAwIBAgIBADA ... 8Bbnl+ev0peYzxFyF5sQA==",
        "attr_name": "full_name",
        "attr_username": "username",
        "attr_email": "email",
    }
}
SOCIAL_AUTH_SAML_ORG_INFO = {
    "en-US": {
        "name": "example",
        "displayname": "Example Inc.",
        "url": "http://example.com"
    }
}
SOCIAL_AUTH_SAML_TECHNICAL_CONTACT = {
    "givenName": "Tech Gal",
    "emailAddress": "technical@example.com"
}
SOCIAL_AUTH_SAML_SUPPORT_CONTACT = {
    "givenName": "Support Guy",
    "emailAddress": "support@example.com"
}

A configuração padrão extrai detalhes do utilizador dos seguintes atributos, configure o seu IDP para fornecê-los:

Atributo

Referência de URI SAML

Nome completo

urn:oid:2.5.4.3

Primeiro nome

urn:oid:2.5.4.42

Nome familiar

urn:oid:2.5.4.4

E-mail

urn:oid:0.9.2342.19200300.100.1.3

Nome de utilizador

urn:oid:0.9.2342.19200300.100.1.1

Dica

O exemplo acima e a imagem do Docker definem um IDP rotulado como weblate. Pode precisar configurar este texto como Relay no seu IDP.

Autenticação por LDAP

A autenticação por LDAP pode ser melhor alcançada utilizando o pacote django-auth-ldap. Pode instalá-lo através dos meios habituais:

# Using PyPI
pip install django-auth-ldap>=1.3.0

# Using apt-get
apt-get install python-django-auth-ldap

Dica

Este pacote está incluído no contentor Docker, veja Instalando a usar Docker.

Nota

Há algumas incompatibilidades no módulo Python LDAP 3.1.0, o que o pode impedir de usar essa versão. Se obter o erro AttributeError: “module” object has no attribute “_trace_level”, fayendo o downgrade para python-ldap 3.0.0 pode ajudar.

Uma vez que tenha o pacote instalado, pode ligá-lo à autenticação do Django:

# Add LDAP backed, keep Django one if you want to be able to sign in
# even without LDAP for admin account
AUTHENTICATION_BACKENDS = (
    "django_auth_ldap.backend.LDAPBackend",
    "weblate.accounts.auth.WeblateUserBackend",
)

# LDAP server address
AUTH_LDAP_SERVER_URI = "ldaps://ldap.example.net"

# DN to use for authentication
AUTH_LDAP_USER_DN_TEMPLATE = "cn=%(user)s,o=Example"
# Depending on your LDAP server, you might use a different DN
# like:
# AUTH_LDAP_USER_DN_TEMPLATE = 'ou=users,dc=example,dc=com'

# List of attributes to import from LDAP upon sign in
# Weblate stores full name of the user in the full_name attribute
AUTH_LDAP_USER_ATTR_MAP = {
    "full_name": "name",
    # Use the following if your LDAP server does not have full name
    # Weblate will merge them later
    # 'first_name': 'givenName',
    # 'last_name': 'sn',
    # Email is required for Weblate (used in VCS commits)
    "email": "mail",
}

# Hide the registration form
REGISTRATION_OPEN = False

Nota

Deve remover 'social_core.backends.email.EmailAuth' da configuração AUTHENTICATION_BACKENDS, caso contrário, os utilizadores poderão definir a palavra-passe deles no Weblate e autenticar a usar-a. Manter 'weblate.accounts.auth.WeblateUserBackend' ainda é necessário para fazer permissões e facilitar utilizadores anónimos. Também permitirá que faça login a usar uma conta administrativa local, se a criou (por exemplo, a usar createadmin).

Usando palavra-passe associada

Se não puder usar a associação direta para autenticação, precisará usar a pesquisa e fornecer um utilizador para associar à pesquisa. Por exemplo:

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)

Integração com o Active Directory

import ldap
from django_auth_ldap.config import LDAPSearch, NestedActiveDirectoryGroupType

AUTH_LDAP_BIND_DN = "CN=ldap,CN=Users,DC=example,DC=com"
AUTH_LDAP_BIND_PASSWORD = "password"

# User and group search objects and types
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
)

# Make selected group a superuser in Weblate
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    # is_superuser means user has all permissions
    "is_superuser": "CN=weblate_AdminUsers,OU=Groups,DC=example,DC=com",
}

# Map groups from AD to Weblate
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    "OU=Groups,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)"
)
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()
AUTH_LDAP_FIND_GROUP_PERMS = True

# Optionally enable group mirroring from LDAP to Weblate
# AUTH_LDAP_MIRROR_GROUPS = True

Autenticação por CAS

A autenticação por CAS pode ser alcançada a usar um pacote como o django-cas-ng.

O primeiro passo é divulgar o campo de e-mail do utilizador via CAS. Isso tem que ser configurado no próprio servidor CAS e requer que utilize pelo menos CAS v2, já que o CAS v1 não tem suporte a atributos.

O segundo passo é atualizar a Weblate para utilizar o seu servidor CAS e os seus atributos.

Para instalar django-cas-ng:

pip install django-cas-ng

Uma vez que o pacote está instalado, pode conectá-lo ao sistema de autenticação do Django a modificar o ficheiro settings.py:

# Add CAS backed, keep the Django one if you want to be able to sign in
# even without LDAP for the admin account
AUTHENTICATION_BACKENDS = (
    "django_cas_ng.backends.CASBackend",
    "weblate.accounts.auth.WeblateUserBackend",
)

# CAS server address
CAS_SERVER_URL = "https://cas.example.net/cas/"

# Add django_cas_ng somewhere in the list of INSTALLED_APPS
INSTALLED_APPS = (..., "django_cas_ng")

Finalmente, um sinal pode ser usado para mapear o campo de e-mail para o objeto do utilizador. Para que isso funcione, tem que importar o sinal do pacote django-cas-ng e conectar o seu código com este sinal. Fazer isto em configurações de ficheiro pode causar problemas, portanto, é sugerido pôr-lo:

from django_cas_ng.signals import cas_user_authenticated
from django.dispatch import receiver


@receiver(cas_user_authenticated)
def update_user_email_address(sender, user=None, attributes=None, **kwargs):
    # If your CAS server does not always include the email attribute
    # you can wrap the next two lines of code in a try/catch block.
    user.email = attributes["email"]
    user.save()

Veja também

Django CAS NG

Configurando autenticação por Django de terceiros

Geralmente, qualquer extensão de autenticação Django deve funcionar com Weblate. Basta seguir as instruções da extensão, lembrando de manter o backend do utilizador Weblate instalado.

Normalmente, a instalação consiste em adicionar uma autenticação de backend a AUTHENTICATION_BACKENDS`e a instalar uma app de autenticação (se houver) no :setting:`django:INSTALLED_APPS:

AUTHENTICATION_BACKENDS = (
    # Add authentication backend here
    "weblate.accounts.auth.WeblateUserBackend",
)

INSTALLED_APPS += (
    # Install authentication app here
)

Controlo de acesso

O Weblate vem com um sistema de privilégios fino para atribuir permissões ao utilizador para toda a instância ou num escopo limitado.

Alterado na versão 3.0: Antes do Weblate 3.0, o sistema de privilégios era baseado apenas no sistema de privilégios do Django, mas é agora especificamente construído para Weblate. Se for usado algo mais antigo, consulte a documentação para a versão específica que está a usar.

Controle de acesso personalizado

Se não está a administrar toda a instalação do Weblate e apenas tem acesso para gerir certos projetos (como no Hosted Weblate), as suas opções de gestão de controle de acesso são limitadas às seguintes configurações. Se não precisa de nenhuma configuração complexa, elas são suficientes para si.

Controlo de acesso ao projeto

Nota

Este recurso está indisponível para os projetos que executam o plano Libre no Hosted Weblate.

Pode limitar o acesso do utilizador a projetos individuais a selecionar uma configuração diferente de Controle de acesso. As opções disponíveis são:

Pública

Visível publicamente, traduzível para todos os utilizadores autenticados.

Protegido

Publicamente visível, mas somente traduzível por utilizadores selecionados.

Privado

Visível e traduzível apenas por utilizadores selecionados.

Personalizado

Os recursos de Gestão de utilizadores serão desativados; por padrão, todos os utilizadores estão proibidos de realizar qualquer ação no projeto. Terá que configurar todas as permissões a usar Controle de acesso personalizado.

O Controle de acesso pode ser alterado na guia Acesso da configuração (GerirConfigurações) de cada projeto.

_images/project-access.png

O valor padrão pode ser alterado por DEFAULT_ACCESS_CONTROL.

Nota

Mesmo para projetos Privados, algumas informações sobre o seu projeto serão expostas: estatísticas e resumo de linguagem para toda a instância incluirão contagens para todos os projetos, apesar da configuração de controle de acesso. O nome do seu projeto e outras informações não podem ser revelados por meio disso.

Nota

O conjunto real de permissões disponíveis para utilizadores por padrão em projetos Públicos, Protegidos e Privados pode ser redefinido pelo administrador da instância de Weblate a usar configurações personalizadas.

Aviso

Ao ativar o controle de acesso Personalizado, o Weblate removerá todos os grupos especiais que ele criou para um projeto selecionado. Se estiver a fazer isso sem permissão administrativa para toda a instância de Weblate, perderá instantaneamente o seu acesso para gerir o projeto.

Veja também

Controlo de acesso

A gerir controle de acesso por projeto

Os utilizadores com o privilégio Gerir acesso ao projeto (veja a Lista de privilégios) podem gerir utilizadores em projetos com controle de acesso não Personalizado. Eles podem atribuir os utilizadores a um dos seguintes grupos.

Para projetos Públicos, Protegidos e Privados:

Administração

Inclui todas as permissões disponíveis para o projeto.

Revisar (somente se fluxo de trabalho de revisão estiver ativado)

Pode aprovar traduções durante a revisão.

Para projetos Protegidos e Privados apenas:

Traduzir

Pode traduzir o projeto e enviar traduções feitas offline.

Fontes

Pode editar cadeias fonte (se permitido nas configurações do projeto) e informações de cadeias fonte.

Idiomas

Pode gerir idiomas traduzidos (adicionar ou remover traduções).

Glossário

Pode gerir glossário (adicionar ou remover entradas e também enviar).

Memória

Pode gerir memória de tradução.

Capturas de ecrã

Pode gerir capturas de ecrã (adicioná-las ou removê-las e associá-las a cadeias fonte).

VCS

Pode gerir VCS e acessar o repositório exportado.

Faturação

Pode acessar informações de cobrança e configurações (consulte Faturação).

Infelizmente, não é possível alterar este conjunto predefinido de grupos por enquanto. Além disso, dessa forma não é possível dar apenas algumas permissões adicionais a todos os utilizadores.

Nota

Para controle de acesso não-Customizado, uma instância de cada grupo descrito acima é na verdade definida para cada projeto. O nome real destes grupos será Projeto@Grupo, também exibido na interface de administração do Django desta forma. Embora eles não possam ser editados a partir da interface de utilizador do Weblate.

_images/manage-users.png

Esses recursos estão disponíveis na página Controle de acesso, que pode ser acessada no projeto a partir do menu GerirUtilizadores.

Novo convite de utilizador

Além de adicionar um utilizador existente ao projeto, também é possível convidar novos. Qualquer novo utilizador será criado imediatamente, mas a conta permanecerá inativa até que entre com uma ligação no convite enviado por e-mail. Não é necessário ter nenhum privilégio de todo o site para fazer isso, a permissão de gestão de acesso no escopo do projeto (por exemplo, uma associação no grupo Administração) seria suficiente.

Dica

Se o utilizador convidado perdeu a validade do convite, ele pode definir a sua palavra-passe a usar o endereço de e-mail convidado no formulário de redefinição de palavra-passe, pois a conta já foi criada.

Novo na versão 3.11: É possível reenviar o e-mail para convites de utilizador (a invalidar qualquer convite enviado anteriormente).

O mesmo tipo de convite está disponível em todo o site a partir da interface de gestão na guia Utilizadores.

A bloquear utilizadores

Novo na versão 4.7.

No caso de alguns utilizadores se comportarem mal no seu projeto, tem a opção de bloqueá-los de contribuir. O utilizador bloqueado ainda poderá ver o projeto se tiver permissão para isso, mas não poderá contribuir.

Gestão de permissões por projeto

Pode definir os seus projetos para Protegido ou Privado e gerir utilizadores por projeto na interface de utilizador do Weblate.

Por padrão, isso impede que o Weblate conceda acesso fornecido por grupos padrão Utilizadores e Visualizadores devido à própria configuração desses grupos. Isso não impede que conceda permissões a esses projetos em todo o site, a alterar grupos padrão, a criar um novo ou a criar configurações personalizadas adicionais para componentes individuais, conforme descrito em Controle de acesso personalizado abaixo.

Um dos principais benefícios de gerir permissões por meio da interface de utilizador do Weblate é que pode delegá-las a outros utilizadores sem dar a eles o privilégio de superutilizador. Para isso, adicione-os ao grupo Administração do projeto.

Controle de acesso personalizado

Nota

Este recurso está indisponível para os projetos que executam o plano Libre no Hosted Weblate.

O sistema de permissão é baseado em grupos e funções, onde as funções de definir um conjunto de permissões e grupos vinculam-nas aos utilizadores e traduções. Veja Utilizadores, papéis, grupos e permissões para mais detalhes.

Os recursos mais poderosos do sistema de controle de acesso do Weblate por enquanto estão disponíveis apenas através da interface administrativa do Django. Pode usá-la para gerir as permissões de qualquer projeto. Não precisa necessariamente definir o controle de acesso para Personalizado para utilizá-lo. No entanto, deve ter privilégios de superutilizador para usá-lo.

Se não está interessado em detalhes de implementação e apenas deseja criar uma configuração simples o suficiente com base nos padrões, ou não tem um acesso de todo o site para toda a instalação do Weblate (como em Hosted Weblate), consulte a secção Controle de acesso personalizado.

Configurações comuns

Esta secção contém uma visão geral de algumas configurações comuns nas quais pode estar interessado.

Gestão de permissões para todo o site

Para gerir permissões para uma instância inteira de uma vez, adicione utilizadores aos grupos padrão:

Deve manter todos os projetos configurados como Públicos (veja Controlo de acesso ao projeto), caso contrário as permissões de todo o site fornecidas pela participação nos grupos Utilizadores e Revisores não terão nenhum efeito.

Também pode conceder algumas permissões adicionais de sua escolha aos grupos padrão. Por exemplo, pode dar permissão para gerir capturas de ecrã para todos os Utilizadores.

Também pode definir alguns novos grupos personalizados. Se deseja continuar a gerir as suas permissões em todo o site para esses grupos, escolha um valor apropriado para Seleção de projeto (por exemplo Todos os projetos ou Todos os projetos públicos).

Permissões personalizadas a idiomas, componentes ou projetos

Pode criar os seus próprios grupos dedicados para gerir permissões para objetos distintos, como linguagens, componentes e projetos. Embora esses grupos só possam conceder privilégios adicionais, não pode revogar qualquer permissão concedida por grupos de todo o site ou por projeto a adicionar outro grupo personalizado.

Exemplo:

Se quiser (por qualquer motivo) permitir a tradução para um idioma específico (digamos, tcheco) apenas para um conjunto fechado de tradutores confiáveis, a manter as traduções para outros idiomas públicos, terá que:

  1. Remover a permissão para traduzir Tcheco de todos os utilizadores. Na configuração padrão, isso pode ser feito a alterar o grupo padrão Utilizadores.

    Grupo Utilizadores

    Seleção de idioma

    Como definido

    Idiomas

    Todos, exceto Tcheco

  1. Adicionar um grupo dedicado para tradutores(as) de Tcheco.

    Grupo Tradutores(as) de tcheco

    Funções

    Utilizadores(as) avançados(as)

    Seleção de projeto

    Todos os projetos públicos

    Seleção de idioma

    Como definido

    Idiomas

    Tcheco

  1. Adicionar utilizadores aos quais deseja conceder permissões a este grupo.

Como pode ver, a gestão de permissões dessa maneira é poderosa, mas pode ser um trabalho tedioso. Não pode delegá-lo a outro utilizador, a menos que conceda permissões de superutilizador.

Utilizadores, papéis, grupos e permissões

Os modelos de autenticação consistem em vários objetos:

Permissão

Permissão individual definida pelo Weblate. Permissões não podem ser atribuídas a utilizadores. Isso só pode ser feito através da atribuição de papéis.

Função

Um papel define um conjunto de permissões. Isso permite a reutilização desses conjuntos em vários lugares, a facilitar a administração.

Utilizador

Utilizador pode pertencer a vários grupos.

Grupo

Grupo conecta papéis, utilizadores e objetos de autenticação (projetos, idiomas e listas de componentes).

graph auth { "User" -- "Group"; "Group" -- "Role"; "Role" -- "Permission"; "Group" -- "Project"; "Group" -- "Language"; "Group" -- "Components"; "Group" -- "Component list"; }

Nota

Um grupo não pode ter papéis lhe atribuídos; nesse caso, o acesso para navegar no projeto por qualquer pessoa é presumido (veja abaixo).

Acesso para navegar até um projeto

Um utilizador tem que ser um membro de um grupo vinculado ao projeto ou qualquer componente dentro daquele projeto. Ser membro é suficiente, não são necessárias permissões específicas para navegar o projeto (isso é usado no grupo padrão Visualizadores, consulte Lista de grupos).

Acesso para navegar até um componente

Um utilizador pode acessar componentes irrestritos assim que for possível acessar o projeto dos componentes (e terá todas as permissões que foram concedidas ao utilizador para o projeto). Com o Acesso restrito ativado, o acesso ao componente requer permissões explícitas para o componente (ou uma lista de componentes na qual o componente está contido).

Escopo de grupos

O escopo da permissão atribuída pelas funções nos grupos é aplicado pelas seguintes regras:

  • Se o grupo especificar qualquer Lista de componentes, todas as permissões dadas aos membros desse grupo serão concedidas para todos os componentes nas listas de componentes anexadas ao grupo e um acesso sem permissões adicionais é concedido para todos os projetos estes componentes estão contidos. Componentes e Projetos são ignorados.

  • Se o grupo especificar quaisquer Componentes, todas as permissões dadas aos membros desse grupo são concedidas para todos os componentes anexados ao grupo e um acesso sem permissões adicionais é concedido para todos os projetos nos quais que esses componentes estão. Projetos são ignorados.

  • Caso contrário, se o grupo especificar Projetos, seja a listar-os diretamente ou a ter Seleção de projetos definida com um valor como Todos os projetos públicos, todas essas permissões são aplicadas a todos os projetos, que efetivamente concede as mesmas permissões para acessar todos os componentes irrestritos dos projetos.

  • As restrições impostas pelos Idiomas de um grupo são aplicadas separadamente, quando é verificado se um utilizador tem acesso para realizar determinadas ações. Ou seja, é aplicado apenas a ações diretamente relacionadas ao próprio processo de tradução, como revisar, gravar traduções, adicionar sugestões, etc.

Dica

Use Seleção de idioma ou Seleção de projeto para automatizar a inclusão de todos os idiomas ou projetos.

Exemplo:

Digamos que haja um projeto foo com os componentes foo/bar e foo/baz e o seguinte grupo:

Grupo Revisores-admins de espanhol

Funções

Rever cadeias, Gerir repositório

Componentes

foo/bar

Idiomas

Espanhol

Membros deste grupo terão as seguintes permissões (a presumir as configurações padrão de papeis):

  • Acesso geral (navegação) para todo o projeto foo incluindo ambos componentes nele: foo/bar e foo/baz.

  • Rever cadeias na tradução para espanhol de foo/bar (não em outro lugar).

  • Gerir VCS para todo o repositório foo/bar, por exemplo, fazer commit de alterações pendentes feitas por tradutores de todos os idiomas.

Atribuições de grupo automáticas

Na parte inferior da página de edição Grupo na interface administrativa do Django, pode especificar Associações automáticas de grupo, que é uma lista de expressões regulares usadas para atribuir automaticamente utilizadores recém-criados a um grupo com base nos endereços de e-mail deles. Esta associação só acontece após a criação da conta.

O caso de uso mais comum para o recurso é atribuir todos os novos utilizadores a algum grupo padrão. Para fazer isso, provavelmente desejará manter o valor padrão (^.*$) No campo da expressão regular. Outro caso de uso para essa opção pode ser conceder alguns privilégios adicionais aos funcionários da sua empresa por padrão. Supondo que todos eles usem endereços de e-mail corporativos no seu domínio, isso pode ser feito com uma expressão como ^.*@minhaempresa.com.

Nota

Associação automática de grupo para Utilizadores e Visualizadores sempre será recriada ao atualizar de uma versão anterior do Weblate para outra. Se deseja desativá-los, defina a expressão regular para ^$ (que nunca corresponderá).

Nota

Por enquanto, não há como adicionar em massa utilizadores já existentes a algum grupo por meio da interface do utilizador. Para isso, pode recorrer ao uso da API REST.

Grupos e funções predefinidos

Após a instalação, um conjunto padrão de grupos é criado (veja Lista de grupos).

Esses funções e grupos são criados após a instalação. As funções embutidas são sempre mantidas atualizadas pela migração do banco de dados ao atualizar. Não pode alterá-las. Defina uma nova função caso queira definir o seu próprio conjunto de permissões.

Lista de privilégios
Faturamento (consulte Faturação)

Visualizar informações de faturamento [Administração, Faturamento]

Alterações

Descarrgar alterações [Administração]

Comentários

Publicar comentário [Administração, Editar fonte, Utiliyador avançado, Revisar cadeias, Traduzir]

Apagar comentário [Administração]

Componente

Editar configurações do componente [Administração]

Bloquear componente, a evitar traduções [Administração]

Glossário

Adicionar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]

Editar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]

Apagar entrada do glossário [Administração, Gerir glossário, Utilizador avançado]

Enviar entradas do glossário [Administração, Gerir glossário, Utilizador avançado]

Sugestões automáticas

Usar sugestões automáticas [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

Memória de tradução

Editar memória de tradução [Administração, Gerir memória de tradução]

Apagar memória de tradução [Administração, Gerir memória de tradução]

Projetos

Editar configurações do projeto [Administração]

Gerir acesso do projeto [Administração]

Relatórios

Descarragar relatórios [Administração]

Capturas de ecrã

Adicionar captura de ecrã [Administração, Gerir capturas de ecrã]

Editar captura de ecrã [Administração, Gerir capturas de ecrã]

Apagar captura de ecrã [Administração, Gerir capturas de ecrã]

Cadeias fonte

Editar informações adicionais da cadeia [Administração, Editar fonte]

Cadeias

Adicionar nova cadeia [Administração]

Remover uma cadeia [Administração]

Descartar verificação com falha [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

Editar cadeias [Administração, Editar fonte, Utilizador avançado, Revisar cadeias, Traduzir]

Revisar cadeias [Administração, Revisar cadeias]

Editar cadeia quando as sugestões são forçadas [Administração, Rever cadeias]

Editar cadeias fonte [Administração, Editar fonte, Utilizador avançado]

Sugestões

Aceitar sugestão [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

Adicionar sugestão [Administração, Editar fonte, ``Adicionar sugestão, Utilizador avançado, Rever cadeias, Traduzir]

Apagar sugestão [Administração, Utilizador avançado]

Votar em sugestão [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

Traduções

Adicionar idioma para tradução [Administração, Utilizador avançado, Gerir idiomas]

Efetuar tradução automática [Administração, Gerir idiomas]

Apagar tradução existente [Administração, Gerir idiomas]

Adicionar idiomas para tradução [Administração, Gerir idiomas]

Envios

Definir autor da tradução enviada [Administração]

Sobrescrever cadeias existentes com envio [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

Enviar traduções [Administração, Editar fonte, Utilizador avançado, Rever cadeias, Traduzir]

VCS

Acessar o repositório interno [Administração, Acessar repositório, Utilizador avançado, Gerir repositório]

Submeter as alterações ao repositório interno [Administração, Geriar repositório]

Fazer push das alterações do repositório interno [Administração, Gerir repositório]

Redefinir as alterações no repositório interno [Administração, Gerir repositório]

Ver o local do repositório upstream [Administração, Acessar repositório, Utilizador avançado, Gerir repositório]

Atualizar o repositório interno [Administração, Gerir repositório]

Privilégios para todo o site

Utilizar a interface de gestão

Adicionar novos projetos

Adicionar definições de idioma

Gerir definições de idioma

Gerir grupos

Gerir utilizadores

Gerir funções

Gerir anúncios

Gerir a memória de tradução

Gerir as listas de componentes

Nota

Privilégios para todo o site não são concedidos a nenhuma função padrão. Eles são poderosos e muito próximos do estado de superutilizador. A maioria deles afetam todos os projetos da sua instalação do Weblate.

Lista de grupos

Os seguintes grupos são criados após a instalação (ou após a execução de setupgroups) e está livre a modificá-los. A migração irá, no entanto, recriá-los se apagá-los ou renomeá-los.

Convidados

Define permissões para utilizadores não autenticados.

Este grupo contém apenas utilizadores anônimos (consulte ANONYMOUS_USER_NAME).

Pode remover funções deste grupo para limitar as permissões para utilizadores não autenticados.

Funções predefinidas: Adicionar sugestão, Acessar repositório

Visualizadores

Essa função garante a visibilidade de projetos públicos para todos os utilizadores. Por padrão, todos os utilizadores são membros deste grupo.

Por padrão, associação automática de grupo faz com que todos os novos membros de contas deste grupo quando eles entram.

Funções predefinidas: nenhuma

Utilizadores

Grupo predefinido para todos os utilizadores.

Por padrão, associação automática de grupo faz com que todos os novos membros de contas deste grupo quando eles entram.

Funções predefinidas: Utilizador avançado

Revisores

Grupo para revisores (consulte Fluxos de trabalho de tradução).

Funções predefinidas: Revisar cadeias

Gestores

Grupo pra administradores.

Funções predefinidas: Administração

Aviso

Nunca remova os grupos e utilizadores predefinidos do Weblate, pois isso pode levar a problemas inesperados! Se não tiver uso para eles, pode remover todos os privilégios deles.

Restrições adicionais de acesso

Se quiser usar a instalação do Weblate de uma maneira menos pública, ou seja, permitir novos utilizadores apenas por convite, isso pode ser feito a configurar o Weblate de forma que apenas utilizadores conhecidos tenham acesso a ele. Para fazer isso, pode definir REGISTRATION_OPEN para False para prevenir registos de quaisquer novos utilizadores e definir REQUIRE_LOGIN para /.* para exigir login para acessar todas as páginas do site. Esta é basicamente a forma de bloquear a instalação do Weblate.

Dica

Pode usar os convites embutidos para adicionar novos utilizadores.

Projetos de tradução

Organização de tradução

O Weblate organiza o conteúdo VCS traduzível do projeto/componentes numa estrutura semelhante a uma árvore.

  • O objeto de nível inferior é Configuração de projeto, que deve conter todas as traduções pertencentes a um conjunto (por exemplo, tradução de uma aplicação em várias versões e/ou documentação que o acompanha).

  • No nível acima, Configuração de componente, que é na verdade o componente a ser traduzido, define o repositório VCS a ser usado e a máscara dos ficheiros a serem traduzidos.

  • Acima da Configuração de componente existem traduções individuais, manipuladas automaticamente pelo Weblate como ficheiros de tradução (que correspondem a Máscara de ficheiros definido em Configuração de componente) aparecem no repositório VCS.

O Weblate tem suporte a uma ampla gama de formatos de tradução (bilíngues e monolíngues) suportados pelo Translate Toolkit, veja Formatos de ficheiros suportados.

Nota

Pode compartilhar repositórios VCS clonados a usar URLs internas do Weblate. Usar este recurso é altamente recomendado quando tem muitos componentes a compartilhar o mesmo VCS. Ele melhora o desempenho e diminui o espaço em disco necessário.

Adicionando projetos e componentes de tradução

Alterado na versão 3.2: Uma interface para adicionar projetos e componentes está incluída e não precisa mais usar A interface administrativa do Django.

Alterado na versão 3.4: O processo de adição de componentes agora tem vários estágios, com descoberta automatizada da maioria dos parâmetros.

Com base nas suas permissões, novos projetos e componentes de tradução podem ser criados. É sempre permitido para utilizadores com a permissão Adicionar novos projetos e se a sua instância usa cobrança (por exemplo, como https://hosted.weblate.org/, veja Faturação), também pode criar aqueles com base na permissão dos seus planos da conta de utilizador que gere a cobrança.

Pode visualizar o seu plano de cobrança atual numa página separada:

_images/user-billing.png

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

_images/user-add-project.png

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

_images/user-add-project-done.png

A criação de um novo componente de tradução pode ser iniciada com um único clique lá. O processo de criação de um componente possui vários estágios e detecta automaticamente a maioria dos parâmetros de tradução. Existem várias abordagens para a criação de componentes:

Do controle de versão

Cria um componente do repositório de controle de versão remoto.

Do componente existente

Cria um componente adicional ao existente, a escolher ficheiros diferentes.

Ramo adicional

Cria um componente adicional ao existente, apenas para um ramo diferente.

Enviar ficheiros de tradução

Envia os ficheiros de tradução para o Weblate caso não tenha controle de versão ou não queira integrá-lo ao Weblate. Pode atualizar o conteúdo posteriormente a usar a interface web ou API REST do Weblate.

Traduzir documento

Upload single document or translation file and translate that.

Começar do zero

Cria um projeto de tradução vazio e adiciona cadeias manualmente.

Depois de ter os componentes de tradução existentes, também pode adicionar facilmente novos para ficheiros adicionais ou ramos a usar o mesmo repositório.

Primeiro precisa preencher o nome e a localização do repositório:

_images/user-add-component-init.png

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

_images/user-add-component-discovery.png

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

_images/user-add-component.png

Configuração de projeto

Cria um projeto de tradução e, em seguida, adiciona um novo componente para tradução nele. O projeto é como uma estante, na qual as traduções reais estão empilhadas. Todos os componentes no mesmo projeto compartilham sugestões e o dicionário deles; as traduções também são propagadas automaticamente por todos os componentes num único projeto (a menos que desligado na configuração do componente), veja Memória de Tradução.

Veja também

Integrando com Weblate

Esses atributos básicos configuram e informam os tradutores de um projeto:

Nome do projeto

Nome detalhado do projeto, usado para exibir o nome do projeto.

URL amigável

Nome do projeto adequado para URLs.

Site da Web do Projeto

URL onde os tradutores podem encontrar mais informações sobre o projeto.

Este é um parâmetro obrigatório, a menos que seja desligado por WEBSITE_REQUIRED.

Instruções para tradução

URL para mais sites com instruções mais detalhadas para tradutores.

Definir cabeçalho «Language-Team»

Se o Weblate deve gerir o cabeçalho Language-Team (este é um recurso apenas do GNU gettext no momento).

Utilizar memória de tradução partilhada

Para usar memória de tradução compartilhada, veja Memória de tradução compartilhada para mais detalhes.

O valor padrão é determinado por DEFAULT_SHARED_TM.

Contribuir à memória de tradução compartilhada

Para contribuir com a memória de tradução compartilhada, veja Memória de tradução compartilhada para mais detalhes.

O valor padrão é determinado por DEFAULT_SHARED_TM.

Controlo de acesso

Configura o controle de acesso por projeto, veja Controlo de acesso ao projeto para mais detalhes.

O valor padrão pode ser alterado por DEFAULT_ACCESS_CONTROL.

Activar revisões

Ativa o fluxo de trabalho de revisão para traduções, veja Revisores dedicados.

Ativar revisões de fontes

Ativa o fluxo de trabalho de revisão para cadeia fonte, veja Revisões de cadeias fonte.

Aliases do idioma

Define o mapeamento dos códigos de idioma ao importar traduções para o Weblate. Use isso quando os códigos de idioma forem inconsistentes nos seus repositórios e quiser obter uma visualização consistente no Weblate ou no caso de desejar usar uma nomenclatura fora do padrão dos seus ficheiros de tradução.

O caso de uso típico pode ser mapear inglês americano para inglês: en_US:en

Vários mapeamentos devem ser separados por vírgula: en_GB:en,en_US:en

Usando código não padrão: ia_FOO:ia

Dica

Os códigos de idioma são mapeados ao combinar os ficheiros de tradução e as correspondências diferenciam maiúsculas de minúsculas, por isso certifique-se de usar os códigos de idioma fonte na mesma forma usada nos nomes dos ficheiros.

Configuração de componente

Um componente é um agrupamento de algo para tradução. Insere um local de repositório VCS e uma máscara de ficheiros para os ficheiros que deseja traduzir e o Weblate busca automaticamente neste VCS e encontra todos os ficheiros traduzíveis correspondentes.

Veja também

Integrando com Weblate

Pode encontrar alguns exemplos de configurações típicas nos Formatos de ficheiros suportados.

Nota

Recomenda-se manter os componentes de tradução num tamanho razoável – divida a tradução por qualquer coisa que faça sentido no seu caso (apps ou complementos individuais, capítulos de livros ou sites).

O Weblate lida facilmente com traduções com 10000s de cadeias, mas é mais difícil dividir o trabalho e coordenar entre os tradutores com componentes de tradução tão grandes.

Se a definição do idioma de uma tradução estiver a faltar, uma definição vazia é criada e nomeada como «cs_CZ (generated)». Deve ajustar a definição e relatar isso aos autores do Weblate, para que os idiomas em falta possam ser incluídos na próxima versão.

O componente contém todos os parâmetros importantes para trabalhar com o VCS e para obter traduções dele:

Nome do componente

Nome detalhado do componente, usado para exibir o nome do componente.

URL amigável do componente

Nome do componente adequado para URLs.

Projeto do componente

Configuração de projeto ao qual o componente pertence.

Sistema de controlo de versões

VCS para usar, veja Integração de controlo de versões para detalhes.

Repositório do código-fonte

Repositório VCS usado para fazer pull das alterações.

Veja também

Veja Acessando repositórios para mais detalhes sobre especificar URLs.

Dica

Pode ser uma URL VCS real ou weblate://projeto/componente a indicar que o repositório deve ser compartilhado com outro componente. Veja URLs internas do Weblate para mais detalhes.

URL de submissão do repositório

URL do repositório usado para fazer push. Esta configuração é usada apenas para Git e Mercurial e o suporte a push é desativado para estes quando está vazio.

Veja também

Veja Acessando repositórios para mais detalhes sobre como especificar uma URL de repositório e Fazendo push das alterações do Weblate para mais detalhes sobre como fazer push de mudanças do Weblate.

Navegador do repositório

URL de navegação do repositório usada para exibir os ficheiros fonte (localização das mensagens usadas). Quando vazio, nenhuma dessas ligações será gerado. Pode usar Marcação de modelo.

Por exemplo, no GitHub, use algo como: https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}

In case your paths are relative to different folder (path contains ..), you might want to strip leading directory by parentdir filter (see Marcação de modelo): https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}}

URL do repositório exportado

URL para onde as alterações feitas pelo Weblate são exportadas. Isso é importante quando Tradução contínua não é usada, ou quando há a necessidade de mesclar manualmente as alterações. Pode usar Exportador git para automatizar isso para repositórios Git.

Ramo do repositório

De qual ramo fazer checkout do VCS e onde procurar traduções.

Ramo do push

Ramo para fazer push de alterações, deixe vazio para usar Ramo do repositório.

Nota

Atualmente, isso é compatível apenas com Git, GitLab e GitHub, mas é ignorado para outras integrações VCS.

Máscara de ficheiros

Máscara de ficheiros a traduzir, incluindo caminho. Deve incluir um «*» a substituir o código de idioma (veja Definições de idioma para informações sobre como isso é processado). Caso seu repositório contenha mais de um ficheiro de tradução (por exemplo, mais domínios gettext), precisa criar um componente para cada um deles.

Por exemplo, po/*.po ou locale/*/LC_MESSAGES/django.po.

No caso do seu nome de ficheiro conter caracteres especiais como [, ], eles precisam ser escapados como [[] ou []].

Ficheiro de idioma base monolingue

Ficheiro base a conter definições de cadeias para Componentes monolínguas.

Editar ficheiro base

Permite a edição do ficheiro base para Componentes monolínguas.

Ficheiro de idioma intermédio

Ficheiro de idioma intermediário para Componentes monolínguas. Na maioria dos casos, este é um ficheiro de tradução fornecido por programadores e é usado ao criar cadeias de origem reais.

Quando definido, as cadeias fonte são baseados neste ficheiro, mas todos os outros idiomas são baseados em Ficheiro de idioma base monolingue. Caso a cadeia não seja traduzida para o idioma fonte, a tradução para outros idiomas é proibida. Isso fornece uma Portal de qualidade para cadeias fonte.

Modelo para novas traduções

Ficheiro base usado para gerar novas traduções, por exemplo, um ficheiro .pot com gettext.

Dica

Em muitos formatos monolíngues, o Weblate começa com um ficheiro em branco por padrão. Use-o no caso de desejar que todas as cadeias estejam presentes com um valor vazio ao criar uma tradução.

Formato de ficheiro

Formato do ficheiro de tradução, veja também Formatos de ficheiros suportados.

Endereço para reportar erros na cadeia fonte

Endereço de e-mail usado para relatar bugs upstream. Este endereço também receberá notificação sobre quaisquer comentários da cadeia fonte feitos no Weblate.

Permitir propagação da tradução

Pode desativar a propagação de traduções para este componente de outros componentes dentro do mesmo projeto. Isso realmente depende do que está a traduzir, às vezes é desejável ter feito uso de uma tradução mais de uma vez.

Normalmente, é uma boa ideia desligar isso para traduções monolíngues, a menos que esteja a usar os mesmos IDs em todo o projeto.

O valor padrão pode ser alterado por DEFAULT_TRANSLATION_PROPAGATION.

Ativar sugestões

Se sugestões de tradução são aceitas para este componente.

Votação de sugestão

Ativa a emissão de votos para sugestões, veja Votação de sugestão.

Aceitar sugestões automaticamente

Aceita automaticamente sugestões votadas, veja Votação de sugestão.

Marcadores de tradução

Personalização de verificações de qualidade e outros comportamentos do Weblate, veja Personalizando comportamento a usar marcadores.

Verificações impostas

Lista de verificações que não podem ser ignoradas, veja Forçar verificações.

Nota

Forçar a verificação não a ativa automaticamente, ainda deve ativá-la Personalizando comportamento a usar marcadores em Marcadores de tradução ou Informações adicionais sobre cadeias fonte.

Licença da tradução

Licença da tradução (não precisa ser igual à licença do código-fonte).

Acordo de contribuidor

Acordo do utilizador que tem de ser aprovado antes do utilizador poder traduzir este componente.

Adicionar nova tradução

Como lidar com solicitações de criação de novos idiomas. Opções disponíveis:

Contactar gestores

O utilizador pode selecionar o idioma desejado e os mantenedores do projeto receberão uma notificação sobre isso. Cabe adiciona-los (ou não) o idioma ao repositório.

Apontar para URL com instruções de tradução

É apresentado ao utilizador uma ligação para a página que descreve o processo de iniciar novas traduções. Use-o caso deseje um processo mais formal (por exemplo, formar uma equipa antes de iniciar a tradução real).

Criar novo ficheiro de idioma

O utilizador pode selecionar o idioma e o Weblate cria automaticamente o ficheiro para ele e a tradução pode começar.

Desativar adição de novas traduções

Não haverá a opção para o utilizador iniciar uma nova tradução.

Dica

Os administradores do projeto podem adicionar novas traduções mesmo se estiver desativado aqui quando for possível (tanto Modelo para novas traduções ou o formato de ficheiro tem suporte a partir de um ficheiro vazio).

Gerir cadeias

Novo na versão 4.5.

Configura se os utilizadores no Weblate terão permissão para adicionar novos textos e remover os existentes. Ajuste isso para corresponder ao seu fluxo de trabalho de localização – como os novos textos devem ser introduzidos.

Para formatos bilíngues, os textos são normalmente extraídos do código-fonte (por exemplo, usando xgettext) e adicionar novas strings no Weblate deve ser desativado (elas seriam descartadas na próxima vez que atualizasse os ficheiros de tradução). No Weblate, pode gerir textos para cada tradução e não exige que os textos em todas as traduções sejam consistentes.

Para formatos monolingues, as cadeias são geridas apenas no idioma fonte e são automaticamente adicionadas ou removidas nas traduções. As cadeias aparecem nos ficheiros de tradução assim que são traduzidas.

Estilo de código de idioma

Personalizar o código de idioma usado para gerar o nome do ficheiro para traduções criadas por Weblate.

Estilo de união

Pode configurar como as atualizações do repositório upstream são tratadas. Isso pode não ser compatível com alguns VCSs. Veja Mesclar ou rebase para mais detalhes.

Valor predefindo pode ser alterado por DEFAULT_MERGE_STYLE.

Mensagens de commit, add, merge e extensão

Mensagem usada ao fazer commit uma tradução, veja Marcação de modelo.

O valor predefinido pode ser alterado por DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE.

Enviar ao submeter

Se as alterações confirmadas devem ser enviadas automaticamente para o repositório upstream. Quando ativado, o push é iniciado assim que o Weblate confirma as alterações no repositório subjacente dele (veja Commits adiados). Para ativar o push URL de push do repositório também deve ser configurado.

Idade das alterações a fazer commit

Define a idade (em horas) das alterações antes de ser feito commit pela tarefa em segundo plano ou pelo comando de gestão commit_pending. Todas as alterações num componente tem commit feito quando houver pelo menos uma alteração anterior a esse período.

O valor predefinido pode ser alterado por COMMIT_PENDING_HOURS.

Dica

Existem outras situações onde mudanças pendentes podem ter o commit feito, veja Commits adiados.

Bloquear com erro

Bloqueia o componente (e os componentes vinculados, consulte URLs internas do Weblate) no primeiro push ou mesclagem com falha no repositório upstream dele, ou extraia dele. Isso evita adicionar outros conflitos, que teriam que ser resolvidos manualmente.

O componente será desbloqueado automaticamente quando não houver mais erros de repositório.

Idioma fonte

Linguagem usada para textos fonte. Altere isso se estiver a traduzir de algo diferente do inglês.

Dica

Caso esteja a traduzir ficheiros bilíngues do inglês, mas também queira fazer correções na tradução para o inglês, escolha Inglês (Programador) como idioma fonte para evitar conflito entre o nome do idioma fonte e a tradução existente.

Para traduções monolíngues, pode usar tradução intermediária neste caso, veja Ficheiro de idioma intermédio.

Filtro de idioma

Expressão regular usada para filtrar a tradução ao examinar por uma máscara de ficheiro. Pode ser usada para limitar a lista de idiomas geridos pelo Weblate.

Nota

Precisa listar os códigos de idioma conforme aparecem no nome do ficheiro.

Alguns exemplos de filtragem:

Descrição do filtro

Expressão regular

Apenas idiomas selecionados

^(cs|de|es)$

Exclui idiomas

^(?!(it|fr)$).+$

Filtra apenas códigos de duas letras

^..$

Exclui ficheiros que não são idiomas

^(?!(blank)$).+$

Inclui todos os ficheiros (predfinição)

^[^.]+$

Expressão regular das variantes

Expressão regular usada para determinar as variantes de um texto, veja Variantes de cadeias.

Nota

A maioria dos campos pode ser editada por proprietários ou gerentes de projetos, na interface do Weblate.

Prioridade

Componentes de prioridade mais elevada são oferecidos primeiro aos tradutores.

Acesso restrito

Por predefinição, o componente é visível para todos que tenham acesso ao projeto, mesmo se a pessoa não puder realizar nenhuma alteração no componente. Isso torna mais fácil manter a consistência da tradução dentro do projeto.

Restringir o acesso num componente ou nível de lista de componentes assume a permissão de acesso a um componente, independentemente das permissões de nível de projeto. Terá que conceder-lhe acesso explicitamente. Isso pode ser feito concedendo acesso a um novo grupo de utilizadores e colocando utilizadores nele, ou usando os grupos de controle de acesso predefinido personalizado ou privado.

O valor predefinido pode ser alterado em DEFAULT_RESTRICTED_COMPONENT.

Dica

Isso se aplica aos administradores do projeto também – certifique-se de não perder o acesso ao componente após alternar o status.

Compartilhar em projetos

Pode escolher projetos adicionais onde o componente ficará visível. Útil para bibliotecas compartilhadas que usa em vários projetos.

Nota

Compartilhar um componente não altera o controle de acesso dele. Só o torna visível ao navegar em outros projetos. Os utilizadores ainda precisam acessar o componente real para navegar ou traduzi-lo.

Usar como um glossário

Novo na versão 4.5.

Permite usar este componente como glossário. Pode configurar como ele será listado a usar a Cor do glossário.

O glossário estará acessível em todos os projetos definidos por Compartilhar em projetos.

É recomendado ativar Gerir cadeias em glossários para permitir adicionar-lhes novas palavras.

Veja também

Glossário

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:

As seguintes variáveis estão disponíveis nos modelos de componentes:

{{ language_code }}

Código do idioma

{{ language_name }}

Nome do idioma

{{ component_name }}

Nome do componente

{{ component_slug }}

URL amigável do componente

{{ project_name }}

Nome do projeto

{{ project_slug }}

URL amigável do projeto

{{ url }}

URL de tradução

{{ filename }}

Nome do ficheiro de tradução

{{ stats }}

Estatísticas de tradução, isso tem outros atributos, exemplos abaixo.

{{ stats.all }}

Contagem total de textos

{{ stats.fuzzy }}

Contagem de textos que precisam de revisão

{{ stats.fuzzy_percent }}

Percentagem de textos que precisam de revisão

{{ stats.translated }}

Contagem de textos traduzidos

{{ stats.translated_percent }}

Percentagem de textos traduzidos

{{ stats.allchecks }}

Quantidade de textos com falhas nas verificações

{{ stats.allchecks_percent }}

Percentagem de textos com falhas nas verificações

{{ author }}

Autor do commit atual, disponível apenas no escopo do commit.

{{ addon_name }}

Nome da extensão atualmente em execução, disponível apenas na mensagem de commit da extensão.

As seguintes variáveis estão disponíveis nos modelos de navegador ou editor de repositório:

{{branch}}

ramo atual

{{line}}

linha no ficheiro

{{filename}}

nome do ficheiro, também pode remover as partes principais usando o filtro parentdir, por exemplo {{filename|parentdir}}

Pode combiná-los com filtros:

{{ component|title }}

Pode usar as condições:

{% if stats.translated_percent > 80 %}Well translated!{% endif %}

Há uma tag adicional disponível para substituir caracteres:

{% replace component "-" " " %}

Pode combiná-lo com filtros:

{% replace component|capfirst "-" " " %}

Existem também filtros adicionais para manipular com nomes de ficheiros:

Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times:  {{ filename|parentdir|parentdir }}

…e outros recursos de modelos do Django.

Velocidade de importação

Obter o repositório VCS e importar traduções ao Weblate pode ser um processo demorado, dependendo do tamanho das suas traduções. Aqui estão algumas dicas:

Otimizar a configuração

A configuração predefinida é útil para testar e depurar o Weblate, enquanto para uma configuração de produção, deve fazer alguns ajustes. Muitas delas têm um grande impacto no desempenho. Por favor, confira Configuração de produção para mais detalhes, especialmente:

Verificar limites de recursos

Se estiver a importar grandes traduções ou repositórios, pode ser atingido por limitações de recursos do seu servidor.

  • Verifique a quantidade de memória livre, pois os ficheiros de tradução armazenados em cache pelo sistema operacional melhorará muito o desempenho.

  • As operações de disco podem ser um gargalo se houver muitos textos a serem processadas – o disco é enviado pelo Weblate e pelo banco de dados.

  • Núcleos de CPU adicionais podem ajudar a melhorar o desempenho de tarefas em segundo plano (veja Tarefas de fundo a usar o Celery).

Desativar verificações desnecessárias

Algumas verificações de qualidade podem ser bastante custosas e, se não forem necessárias, podem economizar algum tempo durante a importação, se omitidas. Veja CHECK_LIST para informações sobre configuração.

Criação automática de componentes

Caso seu projeto tenha dezenas de ficheiros de tradução (por exemplo, para diferentes domínios gettext ou partes de apps Android), pode querer importá-los automaticamente. Isso pode ser feito na linha de comando usando import_project ou import_json, ou instalando a extensão Descoberta de componentes.

Para usar o complemento, primeiro precisa criar um componente para um ficheiro de tradução (escolha aquele que tem menos probabilidade de ser renomeado ou removido no futuro) e instalar o complemento neste componente.

Para os comandos de gestão, precisa criar um projeto que conterá todos os componentes e então executar import_project ou import_json.

Definições de idioma

Para apresentar diferentes traduções corretamente, são necessárias informações sobre nome do idioma, direção de texto, definições plurais e código de idioma.

Analisando códigos de idioma

Ao analisar as traduções, o Weblate tenta mapear o código de idioma (geralmente o ISO 639-1) para qualquer objeto de idioma existente.

Pode ajustar ainda mais esse mapeamento no nível do projeto por Aliases do idioma.

Se nenhuma correspondência exata for encontrada, uma tentativa será feita para melhor encaixá-la num idioma existente. São testadas etapas a seguir:

  • Procuras sem diferenciar maiúsculo de minúsculo.

  • Normalizar sublinhados e traços.

  • Procurar aliases de idioma embutido.

  • Procurar por nome de idioma.

  • Ignorar o código de país padrão para o idioma dado – escolher cs em vez de cs_CZ.

Se isso também falhar, uma nova definição de idioma será criada a usar seu padrão (direção do texto da esquerda para a direita, um plural). A linguagem criada automaticamente com o código xx_XX será nomeada como xx_XX (generated). Podia mudar isso na interface administrativa mais tarde, (veja Alterando as definições de idioma) e relatar ao rastreador de problemas (veja Contribuir ao Weblate), para que a definição apropriada possa ser adicionada ao próximo lançamento do Weblate.

Dica

No caso de ver algo indesejado como idioma, podia ajustar Filtro de idioma para ignorar tal ficheiro ao analisar traduções.

Alterando as definições de idioma

Pode alterar as definições de idioma na interface de idiomas (URL /languages/).

Durante a edição, certifique-se de que todos os campos estejam corretos (especialmente os plurais e a direção do texto), caso contrário, os tradutores não poderão editar adequadamente essas traduções.

Definições embutidas de idioma

Definições para cerca de 600 idiomas estão incluídas no Weblate e a lista é estendida a cada versão. Sempre que o Weblate é atualizado (mais especificamente sempre que weblate migrate é executado, veja Instruções genéricas de atualização) o banco de dados de idiomas é atualizado para incluir todas as definições de idioma enviadas no Weblate.

Este recurso pode ser desativado a usar UPDATE_LANGUAGES. Também pode forçar a atualização do banco de dados para corresponder aos dados embutidos do Weblate a usar setuplang.

Códigos de idioma ambíguos e macrolinguagens

Em muitos casos, não é uma boa ideia usar código de idioma macro para uma tradução. O caso típico problemático pode ser a língua curda, que pode ser escrita em árabe ou latim, a depender da variante real. Para obter o comportamento correto no Weblate, é recomendável usar apenas códigos de idioma individuais e evitar macroidiomas.

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 a ser localizados a depender do idioma da interface do utilizador.

Direção do texto

Determina se o idioma é escrito da direita para a esquerda ou da esquerda para a direita. Esta propriedade é autodetectada corretamente para a maioria dos idiomas.

Quantidade de plurais

Quantidade de plurais usados no idioma.

Fórmula de plural

Fórmula de plural compatível com Gettext usada para determinar qual forma de plural é usada para determinada contagem.

Adicionando novas traduções

Alterado na versão 2.18: Nas versões anteriores a 2.18, o comportamento de adicionar novas traduções era específico do formato de ficheiro.

Weblate pode iniciar automaticamente uma nova tradução para todos os formatos de ficheiro.

Alguns formatos esperam começar com um ficheiro vazio e apenas cadeias traduzidas a serem incluídas (por exemplo, Recurso de cadeias de Android), enquanto outros esperam ter todas as chaves presentes (por exemplo, GNU gettext). Em algumas situações, isso realmente não depende do formato, mas sim do framework que usa para lidar com a tradução (por exemplo, com Ficheiro JSON).

Quando especifica Modelo para novas traduções em Configuração de componente, Weblate usará este ficheiro para iniciar novas traduções. Todas as traduções existentes serão removidas do ficheiro ao fazer isso.

Quando Modelo para novas traduções está vazio e o formato de ficheiro suporta, um ficheiro vazio é criado onde novas cadeias serão adicionadas assim que forem traduzidos.

O Estilo de código de idioma permite que personalize o código de idioma usado nos nomes de ficheiros gerados:

Predefinição baseada no formato do ficheiro

Dependendo do formato do ficheiro, para a maioria deles utiliza-se POSIX.

Estilo POSIX utilizando o sublinhado como um separador

Normalmente usado por gettext e ferramentas relacionadas, produz códigos de linguagem como pt_BR.

Estilo de POSIX utilizando o sublinhado como um separador, incluindo o código do país

Código de idioma do estilo POSIX incluindo o código do país mesmo quando não necessário (por exemplo, cs_CZ).

Estilo BCP utilizando o hífen como um separador

Normalmente usado em plataformas web, produz códigos de idioma como pt-BR.

Estilo de BCP utilizando o hífen como um separador, incluindo o código do país

Código de idioma do estilo BCP, incluindo o código do país, mesmo quando não necessário (por exemplo, cs-CZ).

Estilo Android

Usado apenas em apps Android, produz códigos de idioma como pt-rBR.

Estilo Java

Usado por Java – principalmente BCP com códigos legados para chinês.

Além disso, quaisquer mapeamentos definidos em Aliases do idioma são aplicados ao contrário.

Nota

O Weblate reconhece qualquer um desses ao analisar ficheiros de tradução; as configurações acima apenas influenciam como os novos ficheiros são criados.

Tradução contínua

Há infraestrutura em vigor para que a sua tradução acompanhe o desenvolvimento de perto . Desta forma, os tradutores podem trabalhar em traduções o tempo todo, em vez de trabalhar com uma enorme quantidade de texto novo pouco antes do lançamento.

Veja também

Integrando com Weblate descreve maneiras básicas de integrar o seu desenvolvimento com o Weblate.

O processo é o seguinte:

  1. Os programadores fazem alterações e fazem push delas so repositório VCS.

  2. Opcionalmente, os ficheiros de tradução são atualizados (isso depende do formato do ficheiro, consulte Por que é que o Weblate ainda mostra as cadeias de tradução antigas quando atualizei o modelo?).

  3. O Weblate faz o pull das alterações do repositório VCS, consulte Atualizar repositórios.

  4. Uma vez que o Weblate deteta alterações nas traduções, os tradutores são notificados com base na configurações de assinatura deles.

  5. Os tradutores enviam traduções a usar a interface web do Weblate ou enviam alterações feitas offline.

  6. Uma vez que os tradutores acabaram, o Weblate faz commit das alterações no repositório local (veja Commits adiados) e faz push delas de volta se tiver permissões para fazê-lo (veja Fazendo push das alterações do Weblate).

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0]; edge [fontname = "sans-serif", fontsize=10]; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> "Weblate" [label=" 3. Pull "]; "Weblate" -> "Translators" [label=" 4. Notification "]; "Translators" -> "Weblate" [label=" 5. Translate "]; "Weblate" -> "VCS repository" [label=" 6. Push "]; }

Atualizar repositórios

Deve configurar alguma maneira de atualizar repositórios de backend a partir da fonte dele.

Sempre que o Weblate atualiza o repositório, as extensões de pós-atualização serão acionadas, consulte Extensões.

Evitar conflitos de mesclagem

Os conflitos de mesclagem do Weblate surgem quando o mesmo ficheiro foi alterado tanto no Weblate quanto fora dele. Existem duas abordagens para lidar com isso - evitar edições fora do Weblate ou integrar o Weblate no seu processo de atualização, de modo que descarte alterações antes de atualizar os ficheiros fora do Weblate.

A primeira abordagem é fácil com ficheiros monolingues - pode adicionar novas cadeias no Weblate e deixar a edição completa dos ficheiros lá. Para ficheiros bilíngues, geralmente há algum tipo de processo de extração de mensagens para gerar ficheiros traduzíveis do código-fonte. Em alguns casos, isso pode ser dividido em duas partes - uma para a extração gera modelo (por exemplo, o GETTEXT POT é gerado a usar xgettext) e depois o processo a seguir mescla-o em traduções reais (os ficheiros GETTEXT PO são atualizados a usar msgmerge). Pode executar o segundo passo dentro do Weblate e garantirá que todas as alterações pendentes sejam incluídas antes desta operação.

A segunda abordagem pode ser alcançada a usar o API REST do Weblate para forçar o Weblate a fazer push de todas as alterações pendentes e bloquear a tradução enquanto está fazendo alterações do seu lado.

O script para fazer atualizações pode ser assim:

# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock

Se tiver vários componentes compartilhando o mesmo repositório, deve bloqueá-los todos separadamente:

wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj

Nota

O exemplo usa Cliente Weblate, que precisa de configuração (chaves de API) para ser capaz de controlar o Weblate remotamente. Também pode conseguir isso a usar qualquer cliente HTTP em vez de wlc, por exemplo, curl, ver API REST do Weblate.

Veja também

Cliente Weblate

Receber alterações do GitHub automaticamente

O Weblate vem com suporte nativo ao GitHub.

Se estiver a usar o Hosted Weblate, a abordagem recomendada é instalar o app Weblate, dessa forma terá a configuração correta sem ter que configurar muito. Também pode ser usado para fazer push de mudanças de volta.

Para receber notificações em cada push a um repositório do GitHub, adicione o webhook do Weblate nas configurações do repositório (Webhooks) como mostrado na imagem abaixo:

_images/github-settings.png

Para a URL de carga útil, anexar /hooks/github/ à URL do Weblate, por exemplo, para o serviço Hosted Weblate, este é https://hosted.weblate.org/hooks/github/.

Pode deixar outros valores nas configurações predefinidas (o Weblate pode lidar com ambos os tipos de conteúdo e consome apenas o evento push).

Receber alterações do Bitbucket automaticamente

O Weblate tem suporte para webhooks do Bitbucket, adicione um webhook que aciona no push do repositório, com destino a URL /hooks/bitbucket/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/bitbucket/).

_images/bitbucket-settings.png

Receber alterações do GitLab automaticamente

O Weblate tem suporte para ganchos do GitLab, adiciona um webhook de projeto com destino a URL /hooks/gitlab/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitlab/).

Receber alterações do Pagure automaticamente

Novo na versão 3.3.

O Weblate tem suporte para ganchos Pagure. Adicione um webhook com destino a URL /hooks/pagure/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/pagure/). Isso pode ser feito em Web-hooks em Project options:

_images/pagure-webhook.png

Receber alterações dos Azure Repos automaticamente

Novo na versão 3.8.

O Weblate tem suporte para webhooks dos Azure Repos, adicione um webhook para o evento Code pushed com destino para URL /ganchos/azure/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/azure/). Isso pode ser feito em Service hooks ` em :guilabel:`Project settings.

Receber alterações dos Gitea Repos automaticamente

Novo na versão 3.9.

Weblate tem suporte para webhooks do Gitea, adicione um Gitea Webhook para o evento Push events com destino ao URL /hooks/gitea/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitea/). Isso pode ser feito no Webhooks em Settings do repositório.

Receber alterações de Gitee Repos automaticamente

Novo na versão 3.9.

O Weblate tem suporte para webhooks Gitee, adicione um WebHook para o evento Push com destino para URL /hooks/gitee/ na instalação do Weblate (por exemplo, https://hosted.weblate.org/hooks/gitee/). Isso pode ser feito em WebHooks sob Management do repositório.

Atualizar repositórios nightly automaticamente

O Weblate busca automaticamente repositórios remotos nightly para melhorar o desempenho ao mesclar alterações mais tarde. Pode opcionalmente transformar isso em fazer mesclagens noturnas também, ativando AUTO_UPDATE.

Fazendo push das alterações do Weblate

Cada componente de tradução pode ter uma URL de push configurada (veja URL de submissão do repositório) e, nesse caso, o Weblate será capaz de fazer push da alteração ao repositório remoto. O Weblate também pode ser configurado para fazer push automaticamente das alterações em cada commit (isso é a predefinição, veja Enviar ao submeter). Se não quiser que seja feito push automático das alterações, pode fazer-lo manualmente em Manutenção do repositório ou a usar API via wlc push.

As opções de push diferem com base no Integração de controlo de versões usado, mais detalhes são encontrados nesse capítulo.

No caso de não querer pushes diretos pelo Weblate, há suporte para pull requests do GitHub, do GitLab e do Pagure ou revisões do Gerrit, pode ativá-los a escolher GitHub, GitLab, Gerrit ou Pagure, como Sistema de controlo de versões em Configuração de componente.

No geral, as opções a seguir estão disponíveis com Git, GitHub e GitLab:

Configuração desejada

Sistema de controlo de versões

URL de submissão do repositório

Ramo do push

Sem push

Git

vazio

vazio

Push diretamente

Git

URL de SSH

vazio

Empurrar para um ramo separado

Git

URL de SSH

Nome do ramo

Pull request de GitHub do fork

GitHub

vazio

vazio

Pull request de GitHub do ramo

GitHub

URL de SSH 1

Nome do ramo

Merge request de GitLab do fork

GitLab

vazio

vazio

Merge request de GitLab do ramo

GitLab

URL de SSH 1

Nome do ramo

Merge request de Pagure do fork

Pagure

vazio

vazio

Merge request de Pagure do ramo

Pagure

URL de SSH 1

Nome do ramo

1(1,2,3)

Pode estar vazia caso o Repositório do código-fonte tenha suporte a push.

Nota

Também pode ativar o push automático de alterações após o Weblate fazer commit, isso pode ser feito em Enviar ao submeter.

Veja também

Consulte Acessando repositórios para configurar chaves de SSH e Commits adiados para obter informações sobre quando o Weblate decide fazer commit de alterações.

Ramos protegidos

Se estiver a usar o Weblate em ramo protegido, pode configurá-lo para usar pull requests e executar revisão real sobre as traduções (o que pode ser problemático para idiomas que não conhece). Uma abordagem alternativa é abrir mão desta limitação em favor do utilizador de push no Weblate.

Por exemplo, no GitHub, isso pode ser feito na configuração do repositório:

_images/github-protected.png

Mesclar ou rebase

Por predefinição, o Weblate mescla o repositório upstream para dentro do seu próprio. Esta é a maneira mais segura no caso de também acessar o repositório subjacente por outros meios. Caso não precise disso, pode permitir fazer rebase de alterações em upstream, o que produzirá um histórico com menos compromissos de mesclagem.

Nota

Rebasing pode causar problemas em caso de mesclagens complicadas, então considere cuidadosamente se quer ou não ativá-los.

Interagir com os outros

O Weblate facilita a interação com outras pessoas a usar a API dele.

Veja também

API REST do Weblate

Commits adiados

O comportamento do Weblate é de agrupar commits do mesmo autor num só commit, se for possível. Isso reduz a quantidade de commits consideravelmente, no entanto, pode precisar de dizer explicitamente para fazer os commits no caso de querer deixar o repositório VCS em sincronia, por exemplo, para mesclarem (isso é por predefinição permitido para o grupo Managers, consulte Lista de privilégios).

As alterações neste modo têm o commit delas feitas assim que qualquer uma das seguintes condições são cumpridas:

Dica

Os commits são criados para cada componente. Então, caso tenha muitos componentes, ainda verá muitos commits. Pode utilizar a extensão Squash de commits git neste caso.

Se quiser fazer commit das alterações com mais frequência e sem verificar a idade, pode agendar uma tarefa regular para realizar um commit:

CELERY_BEAT_SCHEDULE = {
    # Unconditionally commit all changes every 2 minutes
    "commit": {
        "task": "weblate.trans.tasks.commit_pending",
        # Ommiting hours will honor per component settings,
        # otherwise components with no changes older than this
        # won't be committed
        "kwargs": {"hours": 0},
        # How frequently to execute the job in seconds
        "schedule": 120,
    }
}

Processar repositório com scripts

A maneira de personalizar como o Weblate interage com o repositório é com Extensões. Consulte Escrevendo scripts para extensões para obter informações sobre como executar scripts externos através de extensões.

Manter traduções iguais entre componentes

Uma vez que tenha vários componentes de tradução, pode garantir que as mesmas cadeias tenham a mesma tradução. Isso pode ser alcançado em vários níveis.

Propagação de tradução

With Permitir propagação da tradução enabled (what is the default, see Configuração de componente), all new translations are automatically done in all components with matching strings. Such translations are properly credited to currently translating user in all components.

Nota

A propagação de tradução requer a chave para ser compatível com formatos de tradução monolíngue, por isso tenha isso em mente ao criar chaves de tradução.

Verificação de consistência

A verificação check-inconsistente é acionada sempre que as cadeias são diferentes. Pode usar isso para rever tais diferenças manualmente e escolher a tradução certa.

Tradução automática

A tradução automática com base em diferentes componentes pode ser uma maneira de sincronizar as traduções entre os componentes. Pode acioná-la manualmente (veja Tradução automática) ou fazê-la ser executada automaticamente na atualização do repositório a usar uma extensão (veja Tradução automática).

Licenciar traduções

Pode especificar sob quais traduções de licença são contribuídas. Isto é especialmente importante se as traduções forem abertas ao público, para estipular para que elas possam ser usadas.

Deve especificar as informações da licença da Configuração de componente. Deve evitar exigir um contrato de licença de colaborador, embora seja possível.

Informações de licença

Ao especificar informações de licenças (nome da licença e URL), essas informações são mostradas na secção de informações de tradução do respetivo Configuração de componente.

Normalmente este é o melhor lugar para publicar informações de licenciamento se nenhum consentimento explícito for necessário. Se o seu projeto ou tradução não for livre, provavelmente precisa de consentimento prévio.

Acordo de contribuidor

Se especificar um contrato de licença de colaborador, apenas os utilizadores que concordaram com ele poderão contribuir. Este é um passo claramente visível ao acessar a tradução:

_images/contributor-agreement.png

O texto inserido é formatado em parágrafos e ligações externas podem ser incluídas. A marcação HTML não pode ser usada.

Licenças de utilizador

Todos utilizadores podem rever todas as licenças de tradução de todos os projetos públicos na instância do seu perfil:

_images/profile-licenses.png

Processo de tradução

Votação de sugestão

Everyone can add suggestions by default, to be accepted by signed in users. Suggestion voting can be used to make use of a string when more than one signed-in user agrees, by setting up the Configuração de componente with Suggestion voting to turn on voting, and Autoaccept suggestions to set a threshold for accepted suggestions (this includes a vote from the user making the suggestion if it is cast).

Nota

Uma vez que a aceitação automática está configurada, utilizadores normais perdem o privilégio de gravar diretamente traduções ou aceitar sugestões. Isso pode ser sobrescrito pela permissão Editar texto quando as sugestões são forçadas.

Pode combiná-las com :ref:`controle de acesso <access-control>`para uma das configurações a seguir:

  • Utilizadores sugerem e votam por sugestões e um grupo limitado controla o que é aceito. - Ativar votação. - Desativar aceitação automática. - Não deixar utilizadores gravarem traduções.

  • Utilizadores sugerem e votam em sugestões com aceitação automática uma vez que a quantidade definida deles concorda. - Ativar votação. - Definir o numero desejado de votos para aceitação automática.

  • Voto opcional para sugestões. (Pode ser usado opcionalmente pelos utilizadores quando não têm certeza sobre uma tradução, marcando múltiplas sugestões.) - Apenas ativar a votação.

Informações adicionais sobre cadeias fonte

Melhore o processo de tradução adicionando informações extra para os textos incluindo explicações, prioridades dos textos, marcadores de verificações e contexto visual. Algumas dessas informações podem ser extraídas dos ficheiros de tradução e podem ser adicionadas ao editar as informações adicionais do texto:

_images/source-review-edit.png

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

_images/source-information.png

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.

Marcadores de tradução

Novo na versão 2.4.

Alterado na versão 3.3: Anteriormente chamado de Marcadores de verificações de qualidade, ele já não configura apenas verificações.

O conjunto predefinido de sinalizadores de tradução é determinado pela Configuração de componente de tradução e o ficheiro de tradução. No entanto, pode usá-lo para o personalizar por texto fonte.

Explicação

Alterado na versão 4.1: Nas versões anteriores, isso era chamado de Contexto extra.

Use a explicação para esclarecer o escopo ou uso da tradução. Pode usar Markdown para incluir ligações e outras marcações.

Contexto visual para cadeias

Novo na versão 2.9.

Pode enviar uma captura de ecrã que mostram um determinado texto fonte em uso no seu programa. Isso ajuda os tradutores a entender onde é usado e como deve ser traduzido.

A captura de ecrã enviada é mostrada na barra lateral de contexto de tradução:

_images/screenshot-context.png

Além de Informações adicionais sobre cadeias fonte, as capturas de ecrã têm uma interface de gestão separada no menu Ferramentas. Envie capturas de ecrã, atribua-as a textos fonte manualmente ou use o reconhecimento ótico de caracteres para fazer isso.

Depois que uma captura de ecrã é carregada, esta interface lida com a gestão e a associação de texto fonte:

_images/screenshot-ocr.png

Verificações e correções

Correções automáticas personalizadas

Também pode implementar a sua própria correção automática, além das predefinidas e incluí-las em AUTOFIX_LIST.

As correções automáticas são poderosas, mas também podem causar danos; tenha cuidado ao escrever uma.

Por exemplo, a correção automática a seguir iria substituir cada ocorrência da cadeia foo, numa tradução com bar:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

from django.utils.translation import gettext_lazy as _

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    name = _("Foobar")

    def fix_single_target(self, target, source, unit):
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

Para instalar verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em AUTOFIX_LIST, veja Verificações de qualidade personalizadas, extensões e correções automáticas.

Personalizando comportamento a usar marcadores

Pode ajustar o comportamento de Weblate (principalmente de verificações) para cada cadeia fonte (na revisão de cadeias fonte, veja Informações adicionais sobre cadeias fonte) ou em Configuração de componente (Marcadores de tradução). Alguns formatos de ficheiro também permitem especificar sinalizadores diretamente no formato (veja Formatos de ficheiros suportados).

As etiquetas são separadas por vírgulas, os parâmetros são separados por caracteres de dois pontos. Pode usar aspas para incluir espaços em branco ou caracteres especiais na cadeia. Por exemplo:

placeholders:"special:value":"other value", regex:.*

Aqui está uma lista de sinalizadores atualmente aceitos:

rst-text

Trata um texto como um documento reStructuredText, afeta Tradução inalterada.

dos-eol

Usa marcadores de ponta de linha do DOS em vez dos Unix (\r\n em vez de \n).

read-only

A cadeia é somente leitura e não deve ser editada no Weblate, veja Cadeias somente leitura.

priority:N

Prioridade da cadeia. As cadeias de maior prioridade são apresentados primeiro para tradução. A prioridade predefinida é 100, quanto maior prioridade que um texto tem, mais cedo é oferecido para tradução.

max-length:N

Limita o comprimento máximo de uma cadeia a N caracteres, veja Tamanho máximo da tradução.

xml-text

Trata o texto como documento XML, afeta Sintaxe XML e Markup XML.

font-family:NOME

Define a família de letras para verificações da renderização, veja Gerir letras.

font-weight:PESO

Define o peso da letra para verificações da renderização, veja Gerir letras.

font-size:SIZE

Define o tamanho da letra para verificações da renderização, veja Gerir letras.

font-spacing:ESPAÇAMENTO

Define o espaçamento de letras para verificações da renderização, veja Gerir letras.

placeholders:NOME:NOME2:...

Cadeias de espaço reservado esperados na tradução, veja Espaços reservados.

replacements:DE:PARA:DE2:PARA2...

Substituições para realizar ao verificar parâmetros de texto resultantes (por exemplo, em Tamanho máximo da tradução ou Tamanho máximo da tradução). O caso de uso típico para isso é expandir objetos colocáveis (placeables) para garantir que o texto se encaixe mesmo com valores longos, por exemplo: replacements:%s:"John Doe".

variants:FONTE

Marca esta cadeia como uma variante do texto com a fonte correspondente. Veja Variantes de cadeias.

regex:EXPRESSÃO REGULAR

Expressão regular para corresponder à tradução; veja Expressão regular.

forbidden

Indica tradução proibida num glossário, veja Traduções proibidas.

strict-same

Faz com que «Tradução não alterada» evite usar a lista negra de palavras embutidas, veja Tradução inalterada.

check-glossary

Ative a verificação de qualidade Não segue o glossário.

angularjs-format

Ative a verificação de qualidade Cadeia de interpolação AngularJS.

c-format

Ative a verificação de qualidade Formato C.

c-sharp-format

Ative a verificação de qualidade Formato C#.

es-format

Ative a verificação de qualidade :ref: check-es-format.

i18next-interpolation

Ative a verificação de qualidade Interpolação de i18next.

java-format

Ative a verificação de qualidade Formato Java.

java-messageformat

Ative a verificação de qualidade Formato de Mensagem Java.

javascript-format

Ative a verificação de qualidade :ref:”check-javascript-format”.

lua-format

Ative a verificação de qualidade Formato Lua.

object-pascal-format

Ative a verificação de qualidade Formato Object Pascal.

percent-placeholders

Enable the Espaços reservados de percentagem quality check.

perl-format

Enable the Formato Perl quality check.

php-format

Enable the Formato PHP quality check.

python-brace-format

Enable the Formato de chaveta Python quality check.

python-format

Enable the Formato Python quality check.

qt-format

Enable the Formato Qt quality check.

qt-plural-format

Enable the Forma plural Qt quality check.

ruby-format

Enable the Formato Ruby quality check.

scheme-format

Enable the Formato Scheme quality check.

vue-format

Enable the Formatação vue I18n quality check.

md-text

Treat text as a Markdown document. Enable Hiperligações de marcação, Referências de Markdown, and Sintaxe de Markdown quality checks.

safe-html

Enable the HTML inseguro quality check.

url

The string should consist of only a URL. Enable the URL quality check.

ignore-bbcode

Skip the Markup BBcode quality check.

ignore-duplicate

Skip the Palavras consecutivas duplicadas quality check.

ignore-check-glossary

Skip the Não segue o glossário quality check.

ignore-double-space

Skip the Espaço duplo quality check.

ignore-angularjs-format

Skip the Cadeia de interpolação AngularJS quality check.

ignore-c-format

Skip the Formato C quality check.

ignore-c-sharp-format

Skip the Formato C# quality check.

ignore-es-format

Skip the Literais de modelo de ECMAScript quality check.

ignore-i18next-interpolation

Skip the Interpolação de i18next quality check.

ignore-java-format

Skip the Formato Java quality check.

ignore-java-messageformat

Skip the Formato de Mensagem Java quality check.

ignore-javascript-format

Skip the Formato JavaScript quality check.

ignore-lua-format

Skip the Formato Lua quality check.

ignore-object-pascal-format

Skip the Formato Object Pascal quality check.

ignore-percent-placeholders

Skip the Espaços reservados de percentagem quality check.

ignore-perl-format

Skip the Formato Perl quality check.

ignore-php-format

Skip the Formato PHP quality check.

ignore-python-brace-format

Skip the Formato de chaveta Python quality check.

ignore-python-format

Skip the Formato Python quality check.

ignore-qt-format

Skip the Formato Qt quality check.

ignore-qt-plural-format

Skip the Forma plural Qt quality check.

ignore-ruby-format

Skip the Formato Ruby quality check.

ignore-scheme-format

Skip the Formato Scheme quality check.

ignore-vue-format

Skip the Formatação vue I18n quality check.

ignore-translated

Skip the Foi traduzido quality check.

ignore-inconsistent

Skip the Inconsistente quality check.

ignore-kashida

Skip the Letra Kashida utilizada quality check.

ignore-md-link

Skip the Hiperligações de marcação quality check.

ignore-md-reflink

Skip the Referências de Markdown quality check.

ignore-md-syntax

Skip the Sintaxe de Markdown quality check.

ignore-max-length

Skip the Tamanho máximo da tradução quality check.

ignore-max-size

Skip the Tamanho máximo da tradução quality check.

ignore-escaped-newline

Skip the \n não correspondente quality check.

ignore-end-colon

Skip the Dois pontos não correspondentes quality check.

ignore-end-ellipsis

Skip the Reticências não correspondentes quality check.

ignore-end-exclamation

Skip the Ponto de exclamação não correspondente quality check.

ignore-end-stop

Skip the Ponto final não correspondente quality check.

ignore-end-question

Skip the Ponto de interrogação não correspondente quality check.

ignore-end-semicolon

Skip the Ponto e vírgula não correspondente quality check.

ignore-newline-count

Skip the Quebras de linha não coincidentes quality check.

ignore-plurals

Skip the Faltam plurais quality check.

ignore-placeholders

Skip the Espaços reservados quality check.

ignore-punctuation-spacing

Skip the Espaçamento da pontuação quality check.

ignore-regex

Skip the Expressão regular quality check.

ignore-same-plurals

Skip the Mesmos plurais quality check.

ignore-begin-newline

Skip the Nova linha no início quality check.

ignore-begin-space

Skip the Espaços no início quality check.

ignore-end-newline

Skip the Nova linha no final quality check.

ignore-end-space

Skip the Espaço no final quality check.

ignore-same

Skip the Tradução inalterada quality check.

ignore-safe-html

Skip the HTML inseguro quality check.

ignore-url

Skip the URL quality check.

ignore-xml-tags

Skip the Markup XML quality check.

ignore-xml-invalid

Skip the Sintaxe XML quality check.

ignore-zero-width-space

Skip the Espaçamento nulo quality check.

ignore-ellipsis

Skip the Reticências quality check.

ignore-long-untranslated

Skip the Não traduzido há muito tempo quality check.

ignore-multiple-failures

Skip the Várias verificações falhadas quality check.

ignore-unnamed-format

Skip the Várias variáveis sem nome quality check.

ignore-optional-plural

Skip the Não pluralizado quality check.

Nota

Geralmente, a regra é chamada ignore-* para qualquer verificação, a usar o identificador dele, para que possa usá-la mesmo para as suas verificações personalizadas.

Essas etiquetas são entendidas tanto nas configurações de Configuração de componente, por configurações de cadeias fonte quanto no próprio ficheiro de tradução (por exemplo, no GNU gettext).

Forçar verificações

Novo na versão 3.11.

Pode configurar uma lista de verificações que não podem ser ignoradas a definir Verificações impostas em Configuração de componente. Cada verificação listada não pode ser ignorada na interface do utilizador e qualquer cadeia com falha nesta verificação é marcada como Precisa de edição (veja Estados de tradução).

Gerir letras

Novo na versão 3.7.

Dica

As fontes carregadas no Weblate são usadas puramente para fins de verificação Tamanho máximo da tradução, elas não têm efeito na interface de utilizador do Weblate.

A verificação Tamanho máximo da tradução usada para calcular as dimensões do texto renderizado precisa ser carregada no Weblate e selecionada a usar um sinalizador de tradução (ver Personalizando comportamento a usar marcadores).

Ferramenta de gestão de fontes do Weblate em Fonts sob o menu Gerir do seu projeto de tradução fornece interface para carregar e gerir fontes. As fontes TrueType ou OpenType podem ser carregadas, configurar grupos de fontes e usá-los na verificação.

Os grupos de letras permitem definir letras diferentes para idiomas diferentes, o que é normalmente necessário para idiomas não-latinos:

_images/font-group-edit.png

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

_images/font-group-list.png

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

_images/font-edit.png

Pode ter muitas letras carregadas para Weblate:

_images/font-list.png

Para usar as letras para verificar o comprimento da cadeia, passe-a os sinalizadores apropriados (veja Personalizando comportamento a usar marcadores). Provavelmente precisará dos seguintes:

max-size:500

Define o máximo de largura.

font-family:ubuntu

Define o grupo de letras para usar especificando seu identificador.

font-size:22

Define o tamanho da letra.

Escrever próprias verificações

Uma ampla gama de verificações de qualidade são incorporadas, (veja Verificações de qualidade), embora eles possam não cobrir tudo o que deseja verificar. A lista de verificações realizadas pode ser ajustada a usar CHECK_LIST e também pode adicionar verificações personalizadas.

  1. Crie uma subclasse de weblate.checks.Check

  2. Define alguns atributos.

  3. Implemente o método check (se quiser lidar com plurais no seu código) ou o método check_single (que faz isso por si).

Alguns exemplos:

Para instalar verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em CHECK_LIST, veja Verificações de qualidade personalizadas, extensões e correções automáticas.

Verificar se o texto de tradução não contém «foo»

Esta é uma verificação bastante simples que apenas verifica se a tradução não possui a cadeia «foo».

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class FooCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

Verificando se os plurais de texto de tradução tcheca são diferentes

Usa as informações de idioma para verificar se as duas formas plurais no idioma tcheco não são os mesmos.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class PluralCzechCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_target_unit(self, sources, targets, unit):
        if self.is_language(unit, ("cs",)):
            return targets[1] == targets[2]
        return False

    def check_single(self, source, target, unit):
        """We don't check target strings here."""
        return False

Tradução automática

Suporte integrado para vários serviços de tradução automática e pode ser ativado pelo administrador a usar MT_SERVICES para cada um. Eles estão sujeitos aos seus termos de uso, portanto, certifique-se de ter permissão para usá-los como desejar.

O idioma fonte pode ser configurado na Configuração de projeto.

amaGama

Instalação especial do tmserver executado pelos autores do Virtaal.

Ative este serviço a adicionar weblate.machinery.tmserver.AmagamaTranslation a MT_SERVICES.

Apertium

Uma plataforma de tradução de máquina de software livre que fornece traduções para um conjunto limitado de idiomas.

A maneira recomendada de usar o Apertium é executar o seu próprio servidor Apertium-APy.

Ative este serviço a adicionar weblate.machinery.apertium.ApertiumAPYTranslation a MT_SERVICES e defina MT_APERTIUM_APY.

AWS

Novo na versão 3.1.

O Amazon Translate é um serviço de tradução de máquina neural para traduzir textos de e para o inglês numa variedade de idiomas compatíveis.

  1. Turn on this service by adding weblate.machinery.aws.AWSTranslation to MT_SERVICES.

  2. Instale o módulo boto3.

  3. Configure o Weblate.

Tradução de máquina do Baidu API

Novo na versão 3.2.

Serviço de tradução de máquina fornecido pelo Baidu.

Este serviço usa uma API e precisa obter um ID e uma chave de API do Baidu para usá-lo.

Ative este serviço a adicionar weblate.machinery.baidu.BaiduTranslation a MT_SERVICES e defina MT_BAIDU_ID e MT_BAIDU_SECRET.

DeepL

Novo na versão 2.20.

DeepL é um serviço pago que fornece boa tradução de máquina para alguns idiomas. Precisa comprar a assinatura do DeepL API ou pode usar o plano legado :guilabel:`DeepL Pro (classic) `.

Ative este serviço a adicionar weblate.machinery.deepl.DeepLTranslation a MT_SERVICES e definda MT_DEEPL_KEY.

Dica

No caso de ter uma assinatura para ferramentas CAT, deve usar a «API v1» em vez da «v2» padrão usada pelo Weblate (não é realmente uma versão da API neste caso). No caso de estar num plano gratuito em vez de um plano pago, tem que usar https://api-free.deepl.com/ em vez de https://api.deepl.com/. Pode ajustar os dois parâmetros com MT_DEEPL_API_URL.

LibreTranslate

Novo na versão 4.7.1.

LibreTranslate is a free and open-source service for machine translations. The public instance requires an API key, but LibreTranslate can be self-hosted and there are several mirrors available to use the API for free.

Turn on this service by adding weblate.machinery.libretranslate.LibreTranslateTranslation to MT_SERVICES and set MT_LIBRETRANSLATE_API_URL. If your instance requires an API key, you must also set MT_LIBRETRANSLATE_KEY.

Glosbe

Dicionário gratuito e memória de tradução para quase todos os idiomas vivos.

O uso da API é gratuito, mas está sujeito à licença da fonte de dados usada. Existe um limite de chamadas que podem ser feitas de um IP num determinado período de tempo, para evitar abusos.

Ative este serviço a adicionar weblate.machinery.glosbe.GlosbeTranslation a MT_SERVICES.

Veja também

Site do Glosbe

Google Tradutor

Serviço de tradução de máquina fornecido pelo Google.

Este serviço usa a API do Google Tradutor e precisa obter uma chave de API e ativar a cobrança no console da API do Google.

Para ativar este serviço, adicione weblate.machinery.google.GoogleTranslation em MT_SERVICES e defina MT_GOOGLE_KEY.

API V3 do Google Tradutor (Avançado)

Serviço de tradução de máquina fornecido pelos serviços do Google Cloud.

Este serviço difere do anterior na forma como autentica. Para ativar o serviço, adicione weblate.machinery.googlev3.GoogleV3Translation para MT_SERVICES e defina

Se location falhar, também pode precisar especificar MT_GOOGLE_LOCATION.

Tradutor dos Serviços Cognitivos da Microsoft

Novo na versão 2.10.

Serviço de tradução de máquina fornecido pela Microsoft no portal do Azure como um dos Serviços Cognitivos.

Weblate implementa API V3 do Tradutor.

Para ativar este serviço, adicione weblate.machinery.microsoft.MicrosoftCognitiveTranslation a MT_SERVICES e defina MT_MICROSOFT_COGNITIVE_KEY.

API V2 de texto do Tradutor

A chave que usa com a API V2 do Tradutor pode ser usada com API 3.

API V3 de texto do Tradutor

Precisa registar-se no portal do Azure e usar a chave obtida lá. Com as novas chaves do Azure, também precisa definir MT_MICROSOFT_REGION para a localidade do seu serviço.

Serviço de Terminologia Microsoft

Novo na versão 2.19.

A API do Serviço de Terminologia Microsoft permite que acesse programaticamente a terminologia, as definições e os textos da interface do utilizador (UI) disponíveis no Portal de Idiomas por meio de um serviço da web.

Ative este serviço adicionando weblate.machinery.microsoftterminology.MicrosoftTerminologyService a MT_SERVICES.

ModernMT

Novo na versão 4.2.

Ligue este serviço adicionando weblate.machinery.modernmt.ModernMTTranslation para MT_SERVICES e configure MT_MODERNMT_KEY.

MyMemory

Grande memória de tradução com tradução de máquina.

O uso gratuito e anônimo está atualmente limitado a 100 solicitações/dia ou a 1000 solicitações/dia quando fornece um endereço de e-mail de contato em MT_MYMEMORY_EMAIL. Também pode pedir mais.

Ative este serviço adicionando weblate.machinery.mymemory.MyMemoryTranslation em MT_SERVICES e defina MT_MYMEMORY_EMAIL.

Tradução de máquina do NetEase Sight API

Novo na versão 3.3.

Serviço de tradução de máquina fornecido por NetEase.

Este serviço usa uma API e você precisa obter uma chave e um segredo de NetEase.

Ative este serviço adicionando weblate.machinery.youdao.NeteaseSightTranslation em MT_SERVICES e defina MT_NETEASE_KEY e MT_NETEASE_SECRET.

tmserver

Pode executar o seu próprio servidor de memória de tradução usando aquele que vem com o Translate-toolkit e deixar que o Weblate converse com ele. Também pode usá-lo com um servidor amaGama, que é uma versão aprimorada do tmserver.

  1. Primeiro, vai importar alguns dados para a memória de tradução:

2. Turn on this service by adding weblate.machinery.tmserver.TMServerTranslation to MT_SERVICES.

build_tmdb -d /var/lib/tm/db -s en -t cs locale/cs/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t de locale/de/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t fr locale/fr/LC_MESSAGES/django.po
  1. Inicie o tmserver para ouvir as suas solicitações:

tmserver -d /var/lib/tm/db
  1. Configure o Weblate para falar com ele:

MT_TMSERVER = "http://localhost:8888/tmserver/"

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.

Precisa ter uma conta SAP (e o SAP Translation Hub ativado na SAP Cloud Platform) para usar este serviço.

Ative este serviço adicionando weblate.machinery.saptranslationhub.SAPTranslationHub a MT_SERVICES e defina o acesso apropriado para o sandbox ou a API de produção.

Nota

Para acessar a API Sandbox, precisa definir MT_SAP_BASE_URL e MT_SAP_SANDBOX_APIKEY.

Para acessar a API de produção, precisa definir MT_SAP_BASE_URL, MT_SAP_USERNAME e MT_SAP_PASSWORD.

Tradução da máquina personalizada

Também pode implementar os seus próprios serviços de tradução automática usando algumas linhas de código Python. Este exemplo implementa a tradução automática numa lista fixa de idiomas usando o módulo Python dictionary:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Machine translation example."""

import dictionary

from weblate.machinery.base import MachineTranslation


class SampleTranslation(MachineTranslation):
    """Sample machine translation interface."""

    name = "Sample"

    def download_languages(self):
        """Return list of languages your machine translation supports."""
        return {"cs"}

    def download_translations(
        self,
        source,
        language,
        text: str,
        unit,
        user,
        search: bool,
        threshold: int = 75,
    ):
        """Return tuple with translations."""
        for t in dictionary.translate(text):
            yield {"text": t, "quality": 100, "service": self.name, "source": text}

Pode listar a sua própria classe em MT_SERVICES e o Weblate vai começar a usar isso.

Extensões

Novo na versão 2.19.

Extensões fornecem maneiras para personalizar e automatizar o fluxo de trabalho de tradução. Administradores podem gerir extensões a partir do menu GerirExtensões dos respectivos componente de tradução.

Dica

Também pode configurar extensões usando API, DEFAULT_ADDONS ou install_addon.

_images/addons.png

Extensões embutidas

Tradução automática

Novo na versão 3.9.

ID da extensão

weblate.autotranslate.autotranslate

Configuração

mode

Modo de tradução automático

Available choices:

suggest – Add as suggestion

translate – Add as translation

fuzzy – Add as needing edit

filter_type

Filtro de procura

Available choices:

all – All strings

nottranslated – Not translated strings

todo – Strings needing action

fuzzy – Strings marked for edit

check:inconsistent – Failed check: Inconsistent

auto_source

Fonte da tradução automática

Available choices:

others – Other translation components

mt – Machine translation

component

Componentes

Ativar a contribuição para a memória de tradução compartilhada para que o projeto tenha acesso a componentes adicionais.

engines

Motores de tradução automática

threshold

Limite de pontuação

Triggers

Atualização de componente, diária

Traduz automaticamente as cadeias utilizando a tradução automática ou outros componentes.

Ela é acionada:

  • Quando novas cadeias aparecem num componente.

  • Uma vez por mês para cada componente, isso pode ser configurado a usar BACKGROUND_TASKS.

CDN de localização JavaScript

Novo na versão 4.2.

ID da extensão

weblate.cdn.cdnjs

Configuração

threshold

Limiar de tradução

Limiar para inclusão de traduções.

css_selector

Seletor de CSS

Seletor CSS para detectar elementos localizáveis.

cookie_name

Nome do cookie do idioma

Nome do cookie que armazena a preferência de idioma.

files

Extrair cadeias de ficheiros de HTML

Lista de nomes de ficheiros no repositório atual ou URLs remotas a serem analisados para obter cadeias traduzíveis.

Triggers

diário, pós-compromisso do repositório, pós-atualização do repositório

Publica traduções na rede de distribuição de conteúdo para o uso na localização de JavaScript ou HTML.

Pode ser usado para localizar páginas HTML estáticas ou para carregar a localização no código JavaScript.

Gera um URL exclusivo para o seu componente, que pode ser incluído em páginas HTML para localizá-los. Veja Traduzir HTML e JavaScript a usar CDN Weblate para mais detalhes.

Remover cadeias em branco

Novo na versão 4.4.

ID da extensão

weblate.cleanup.blank

Configuração

Esta extensão não tem configuração.

Triggers

repositório pós-confirmação, repositório pós-atualização

Remove cadeias não traduzidas dos ficheiros de tradução.

Use isso para não ter cadeias vazias em ficheiros de tradução (por exemplo, se a sua biblioteca de localização os exibe como em falta em vez de recorrer ao texto fonte).

Limpeza de ficheiros de tradução

ID da extensão

weblate.cleanup.generic

Configuração

Esta extensão não tem configuração.

Triggers

repositório pré-compromisso, repositório pós-atualização

Atualize todos os ficheiros de tradução para coincidirem com o ficheiro monolingue base. Para a maioria dos formatos de ficheiro, significa remover as chaves de tradução obsoletas que já não existem no ficheiro base.

Adiciona idiomas em falta

ID da extensão

weblate.consistency.languages

Configuração

Esta extensão não tem configuração.

Triggers

diário, repositório pós-adição

Garante que um conjunto consistente de idiomas seja usado para todos os componentes de um projeto.

Os idiomas ausentes são verificados uma vez a cada 24 horas e quando novos idiomas são adicionados no Weblate.

Ao contrário da maioria dos outros, esta extensão afeta todo o projeto.

Dica

Traduza as cadeias recém-adicionadas automaticamente com Tradução automática.

Descoberta de componentes

ID da extensão

weblate.discovery.discovery

Configuração

match

Expressão regular para corresponder ficheiros de tradução

file_format

Formato de ficheiro

name_template

Personalizar nome do componente

base_file_template

Definir nome do ficheiro base monolingue

Manter vazio para ficheiros de tradução bilingue.

new_base_template

Defina o ficheiro base para as novas traduções

Nome do ficheiro utilizado para criar as novas traduções. Para gettext, escolher o ficheiro «.pot».

language_regex

Filtro de idioma

Expressão regular utilizada para filtrar ficheiros de tradução quando procurar pela máscara de ficheiro.

copy_addons

Clonar extensões do componente principal para os recém-criados

remove

Remover componentes para os ficheiros inexistentes

confirm

Confirmo que as correspondências acima parecem correctas

Triggers

Pós-atualização do repositório

Adiciona ou remove automaticamente componentes do projeto com base em alterações de ficheiros no sistema de controlo de versão.

Acionada toda vez que o VCS é atualizado, de outra forma semelhante ao comando de gestão import_project. Desta forma, pode rastrear vários componentes de tradução dentro de um VCS.

A correspondência é feita a usar expressões regulares que permitem uma configuração complexa, mas é necessário algum conhecimento para fazê-la. Alguns exemplos para casos de uso comum encontram-se na secção de ajuda de extensões.

Uma vez que acertar Gravar, uma prévia dos componentes correspondentes será apresentada, de onde pode verificar se a configuração realmente corresponde às suas necessidades:

_images/addon-discovery.png

Dica

A extensão de descoberta de componentes usa URLs internas do Weblate. É uma maneira conveniente de compartilhar a configuração do VCS entre vários componentes. Os componentes vinculados usam o repositório local do componente principal configurado a preencher weblate://project/main-component no campo Repositório do código-fonte (em GerirConfiguraçõesSistema de controle de versão) de cada componente. Isso economiza tempo com configuração e recursos do sistema também.

Veja também

Marcação de modelo

Edição em massa

Novo na versão 3.11.

ID da extensão

weblate.flags.bulk

Configuração

q

Consulta

state

Estado a definir

Available choices:

-1 – Do not change

10 – Needs editing

20 – Translated

30 – Approved

add_flags

Bandeiras de tradução para adicionar

remove_flags

Bandeiras de tradução para remover

add_labels

Etiqueta a adicionar

remove_labels

Etiquetas a remover

Triggers

atualização de componente

Edição em série de marcadores, etiquetas, ou estados de cadeias.

Automatize o etiquetação a começar com a consulta de pesquisa NOT has:label e adicione etiquetas até que todas as cadeias tenham todas as etiquetas necessárias. Outras operações automatizadas para metadados Weblate também podem ser feitas.

Exemplos::

Rotula novas cadeias automaticamente

Consulta de pesquisa

NOT has:label

Etiqueta a adicionar

recente

Marcar como somente leitura todas as entradas do changelog de Ficheiros de metadados da App Store

Consulta de pesquisa

language:en AND key:changelogs/

Bandeiras de tradução para adicionar

read-only

Marcar as traduções inalteradas como «Precisa de edição»

Novo na versão 3.1.

ID da extensão

weblate.flags.same_edit

Configuração

Esta extensão não tem configuração.

Triggers

unidade pós-criação

Sempre que uma nova cadeia traduzível é importada de VCS e corresponde a uma cadeia fonte, esta é marcada como precisa de edição no Weblate. Isto é especialmente útil para os formatos de ficheiro que incluem cadeias não traduzidas.

Dica

Também pode reforçar a verificação Tradução inalterada a adicionar o marcador strict-same aos Marcadores de tradução.

Veja também

Estados de tradução

Marcar as novas cadeias fonte como «Precisa de edição»

ID da extensão

weblate.flags.source_edit

Configuração

Esta extensão não tem configuração.

Triggers

unidade pós-criação

Sempre que uma nova cadeia é importada de VCS, esta é marcada como precisa de edição no Weblate. Deste modo pode filtrar e editar facilmente as cadeias fonte escritas pelos programadores.

Veja também

Estados de tradução

Marcar as novas traduções como «Precisa de edição»

ID da extensão

weblate.flags.target_edit

Configuração

Esta extensão não tem configuração.

Triggers

unidade pós-criação

Sempre que uma nova cadeia de tradução é importada de VCS, esta é marcada como precisa de edição no Weblate. Deste modo pode filtrar e editar facilmente as traduções criadas pelos programadores.

Veja também

Estados de tradução

Gerador de estatísticas

ID da extensão

weblate.generate.generate

Configuração

filename

Nome do ficheiro gerado

template

Conteúdo do ficheiro gerado

Triggers

repositório pré-compromisso

Gera um ficheiro que contêm a informação detalhada sobre o estado da tradução.

Pode usar um modelo do Django, tanto de nome de ficheiro e conteúdo, veja Markdown para uma descrição detalhada de marcação.

Por exemplo, a geração de um ficheiro de resumo para cada tradução:

Nome do ficheiro gerado

locale/{{ language_code }}.json

Conteúdo
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

Veja também

Marcação de modelo

Geração da pseudolocalidade

ID da extensão

weblate.generate.pseudolocale

Configuração

source

Cadeias fonte

target

Tradução de destino

prefix

Prefixo da cadeia

suffix

Sufixo da cadeia

Triggers

Atualização de componente, diária

Gera uma tradução a adicionar um prefixo e sufixo às cadeias de origem automaticamente.

Pseudolocalidades são úteis para encontrar textos que não estão preparadas para localização. Isso é feito a alterar todas as cadeias fonte traduzíveis para facilitar a descoberta de textos inalterados ao executar a aplicação no idioma da pseudolocalidade.

Também é possível encontrar cadeias cujas contrapartes localizadas podem não se ajustar ao layout.

Dica

Pode usar idiomas reais para teste, mas existem pseudolocalidades disponíveis no Weblate - en_XA e ar_XB.

Dica

Pode usar esta extensão para iniciar a tradução para uma nova localidade de um idioma existente ou idioma semelhante. Depois de adicionar a tradução ao componente, siga para a extensão. Exemplo: Se tem fr e deseja iniciar a tradução fr_CA, simplesmente defina fr como fonte,` fr_CA` como o destino e deixe o prefixo e o sufixo em branco.

Desinstale a extensão depois de preencher a nova tradução para evitar que o Weblate altere as traduções feitas após a cópia.

Contribuintes em comentários

ID da extensão

weblate.gettext.authors

Configuração

Esta extensão não tem configuração.

Triggers

repositório pré-compromisso

Atualiza a parte do comentário no cabeçalho do ficheiro PO para incluir nomes de colaboradores e anos de contribuições.

O cabeçalho do ficheiro PO terá a seguinte aparência:

# Michal Čihař <michal@cihar.com>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

Atualizar a variável ALL_LINGUAS no ficheiro «configure»

ID da extensão

weblate.gettext.configure

Configuração

Esta extensão não tem configuração.

Triggers

repositório pós-adição, diário

Atualiza a variável ALL_LINGUAS em ficheiros configure, configure.in ou configure.ac, quando uma nova tradução é adicionada.

Personalizar a saída gettext

ID da extensão

weblate.gettext.customize

Configuração

width

Ajuste de linhas longas

Por predefinição, o gettext quebra as linhas a 77 carateres e novas linhas. Com o parâmetro –no-wrap, quebra apenas em novas linhas.

Available choices:

77 – Wrap lines at 77 characters and at newlines

65535 – Only wrap lines at newlines

-1 – No line wrapping

Triggers

storage post-load

Permite personalizar o comportamento da saída gettext, por exemplo, a quebra de linhas.

Oferece as seguintes opções:

  • Quebrar linhas em 77 caracteres e em novas linhas

  • Quebrar as linhas apenas nas novas linhas

  • Sem quebra de linhas

Nota

Por padrão, o gettext quebra as linhas em 77 caracteres e em novas linhas. Com o parâmetro --no-wrap, a quebra só é feita em novas linhas.

Atualizar ficheiro LINGUAS

ID da extensão

weblate.gettext.linguas

Configuração

Esta extensão não tem configuração.

Triggers

repositório pós-adição, diário

Atualiza o ficheiro LINGUAS quando é adicionada uma nova tradução.

Gerar ficheiros MO

ID da extensão

weblate.gettext.mo

Configuração

path

Caminho do ficheiro MO gerado

Se não especificado, será utilizada a localização do ficheiro PO.

Triggers

repositório pré-compromisso

Gera automaticamente um ficheiro MO para cada ficheiro PO alterado.

O local do ficheiro MO gerado pode ser personalizada e o campo para ele usa Marcação de modelo.

Atualizar ficheiros PO para coincidir com POT (msgmerge)

ID da extensão

weblate.gettext.msgmerge

Configuração

previous

Manter «msgids» anteriores das cadeias traduzidas

no_location

Remover localizações das cadeias traduzidas

fuzzy

Utilizar correspondência de imprecisa

Triggers

Pós-atualização do repositório

Atualiza todos os ficheiros PO (configurados por Máscara de ficheiros) para corresponder ao ficheiro POT (configurado por Modelo para novas traduções) usando msgmerge.

Acionada sempre que novas alterações forem trazidas do repositório upstream. A maioria das opções de linha de comando do msgmerge podem ser definidas por meio da configuração da extensão.

Squash de commits git

ID da extensão

weblate.git.squash

Configuração

squash

Submeter com squash

Available choices:

all – All commits into one

language – Per language

file – Per file

author – Per author

append_trailers

Anexar linhas finalizadoras à mensagem do commit de squash

As linhas finalizadoras são linhas semelhantes aos cabeçalhos de e-mail RFC 822, no final de uma mensagem de commit de outra forma livre, como «Co-authored-by: …”.

commit_message

Mensagem de commit

Esta mensagem de commit será usada em vez das mensagens de commit combinadas dos commits após squash.

Triggers

repositório pós-compromisso

Comprimir as submissões Git antes de enviar as alterações.

Commits Git podem ter squash feito antes de fazer o push das alterações num dos seguintes modos:

Novo na versão 3.4.

  • Todos os commits num só

  • Por idioma

  • Por ficheiro

Novo na versão 3.5.

  • Por autor

As mensagens de commit originais são mantidas, mas a autoria é perdida a menos que Por autor seja selecionada ou a mensagem de commit, seja personalizada para incluí-la.

Novo na versão 4.1.

As mensagens de commit originais podem opcionalmente ser substituídas por uma mensagem de commit personalizada.

Linhas finalizadoras (linhas de commits como Co-authored-by: ) podem opcionalmente ser removidas das mensagens de commit originais e anexadas ao final da mensagem de compromisso após um squash. Isso também gera crédito próprio Co-authored-by: para cada tradutor.

Personalizar a saída JSON

ID da extensão

weblate.json.customize

Configuração

sort_keys

Ordenar chaves JSON

indent

Indentação JSON

style

Estilo de indentação JSON

Available choices:

spaces – Spaces

tabs – Tabs

Triggers

storage post-load

Permite ajustar o comportamento da saída JSON, por exemplo, a indentação ou a ordenação.

Formata as propriedades do ficheiro Java

ID da extensão

weblate.properties.sort

Configuração

Esta extensão não tem configuração.

Triggers

repositório pré-compromisso

Ordena o ficheiro de propriedades Java.

Purga de comentários obsoletos

Novo na versão 3.7.

ID da extensão

weblate.removal.comments

Configuração

age

Dias para manter

Triggers

diário

Definir um prazo para a remoção de comentários.

Isso pode ser útil para remover comentários antigos que podem ter ficado desatualizados. Use com cuidado, pois comentários ficarem velhos não significam que eles perderam importância.

Purga de sugestões obsoletas

Novo na versão 3.7.

ID da extensão

weblate.removal.suggestions

Configuração

age

Dias para manter

votes

Limites de votação

Limite para a remoção. Este campo não tem efeito com os votos desativados.

Triggers

diário

Definir um prazo para a remoção de sugestões.

Pode ser muito útil em relação à votação em sugestão (vej Revisão por pares) para remover sugestões que não recebem votos positivos suficientes num determinado período de tempo.

Atualizar ficheiros RESX

Novo na versão 3.9.

ID da extensão

weblate.resx.update

Configuração

Esta extensão não tem configuração.

Triggers

Pós-atualização do repositório

Atualize todos os ficheiros de tradução para que correspondam ao ficheiro base monolingue original. As cadeias não utilizadas são removidas e as cadeias novas são adicionadas como cópias da cadeia fonte.

Dica

Use Limpeza de ficheiros de tradução se só quiser remover chaves de tradução obsoletas.

Personalizar a saída YAML

Novo na versão 3.10.2.

ID da extensão

weblate.yaml.customize

Configuração

indent

Indentação de YAML

width

Ajuste de linhas longas

Available choices:

80 – Wrap lines at 80 chars

100 – Wrap lines at 100 chars

120 – Wrap lines at 120 chars

180 – Wrap lines at 180 chars

65535 – No line wrapping

line_break

Quebras de linha

Available choices:

dos – DOS (\r\n)

unix – UNIX (\n)

mac – MAC (\r)

Triggers

storage post-load

Permite ajustar o comportamento da saída YAML, por exemplo, o comprimento de linha ou novas linhas.

Personalizando a lista de extensões

A lista de extensões é configurada por WEBLATE_ADDONS. Para adicionar outra extensão, basta incluir o nome absoluto da classe nesta configuração.

Escrevendo extensões

Também pode escrever as suas próprias extensões. Crie uma subclasse de weblate.addons.base.BaseAddon para definir os metadados da extensão e, então, implemente uma função de retorno que vai fazer o processamento.

Escrevendo scripts para extensões

Extensões também podem ser usadas para executar scripts externos. Isso costumava estar integrado no Weblate, mas agora tem que escrever algum código para embrulhar o seu script com uma extensão.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Example pre commit script."""


from django.utils.translation import gettext_lazy as _

from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events = (EVENT_PRE_COMMIT,)
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long descrption
    verbose = _("Execute script before commit")
    description = _("This addon executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

Para instruções de instalação, veja Verificações de qualidade personalizadas, extensões e correções automáticas.

repositório VCS para qualquer componente.

Além disso, as seguintes variáveis de ambiente estão disponíveis:

WL_VCS

Sistema de controle de versão usado.

WL_REPO

URL do repositório upstream.

WL_PATH

Caminho absoluto ao repositório VCS.

WL_BRANCH

Novo na versão 2.11.

Ramo do repositório configurado no componente atual.

WL_FILEMASK

Máscara de ficheiro para componente atual.

WL_TEMPLATE

Nome de ficheiro de modelo para traduções monolínguas (pode estar vazio).

WL_NEW_BASE

Novo na versão 2.14.

Nome do ficheiro usado para criar novas traduções (pode estar vazio).

WL_FILE_FORMAT

Formato de ficheiro usado no componente atual.

WL_LANGUAGE

Idioma da tradução processada atualmente (não disponível para ganchos de nível de componente).

WL_PREVIOUS_HEAD

HEAD anterior após atualização (disponível apenas ao executar o gancho de pós-atualização).

WL_COMPONENT_SLUG

Novo na versão 3.9.

Slug do componente usado para construir a URL.

WL_PROJECT_SLUG

Novo na versão 3.9.

Slug de projeto usado para construir a URL.

WL_COMPONENT_NAME

Novo na versão 3.9.

Nome de componente.

WL_PROJECT_NAME

Novo na versão 3.9.

Nome do projeto.

WL_COMPONENT_URL

Novo na versão 3.9.

URL do componente.

WL_ENGAGE_URL

Novo na versão 3.9.

URL de engajamento do projeto.

Processamento de repositório pós-atualização

Pode ser usado para atualizar ficheiros de tradução quando a fonte VCS do upstream alterar. Para conseguir isso, lembre-se que o Weblate só vê fcheiros dos quais se fez commit com o VCS, então precisa fazer commit das alterações como parte do script.

Por exemplo, com Gulp, pode fazê-lo a usar o código seguinte:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

Processamento pré-commit de traduções

Use o script de commit para alterar automaticamente uma tradução antes de fazer commit dela para o repositório.

É passado como um parâmetro único que consiste o nome de uma tradução atual.

Memória de Tradução

Novo na versão 2.20.

O Weblate vem com uma memória de tradução integrada que consiste no seguinte:

O conteúdo da memória de tradução pode ser aplicado de duas maneiras:

Para dicas de instalação, veja Weblate Translation Memory, que está ativado por predefinição.

Escopos de memória de tradução

Novo na versão 3.2: Em versões anteriores, a memória de tradução só podia ser carregada de um ficheiro correspondente ao atual escopo da memória de tradução importada.

Os escopos de memória de tradução existem para permitir privacidade e compartilhamento de traduções, de acordo com o comportamento desejado.

Memória de tradução importada

Importar dados de memória de tradução arbitrários usando o comando import_memory torna o conteúdo da memória disponível para todos os utilizadores e projetos.

Memória de tradução por utilizador

Armazena todas as traduções do utilizador automaticamente na memória de tradução pessoal de cada respectivo utilizador.

Memória de tradução por projeto

Todas as traduções dentro de um projeto são automaticamente armazenadas em uma memória de tradução de projeto disponível apenas para este projeto.

Memória de tradução compartilhada

Todas as traduções dentro de projetos com memória de tradução compartilhada ativada são armazenadas numa memória de tradução compartilhada disponível para todos os projetos.

Considere cuidadosamente se deve ativar esse recurso para instalações compartilhadas do Weblate, pois pode ter implicações graves:

  • As traduções podem ser usadas por qualquer outra pessoa.

  • Isso pode levar à divulgação de informações secretas.

A gerir memória de tradução

Interface de utilizador

Novo na versão 3.2.

Na interface de utilizador básica, pode gerir memórias de tradução por utilizador e por projeto. Ela pode ser usada para descarregar, limpar ou importar memória de tradução.

Dica

A memória de tradução em JSON pode ser importada ao Weblate, o TMX é fornecido para interoperabilidade com outras ferramentas.

_images/memory.png

Interface de gestão

Existem vários comandos de gestão para manipular o conteúdo da memória de tradução. Eles operam na memória de tradução como um todo, não filtrados por escopos (a menos que solicitados por parâmetros):

dump_memory

Exporta a memória para JSON

import_memory

Importa ficheiros TMX ou JSON para a memória de tradução

Configuração

Todas as configurações estão armazenadas em settings.py (como é habitual no Django).

Nota

Após alterar qualquer uma dessas configurações, precisa reiniciar o Weblate - tanto os processos WSGI quanto os Celery.

Caso seja executado como mod_wsgi:, precisa reiniciar o Apache para recarregar a configuração.

Veja também

Verifique também :doc:`Django’s documentation <django:ref/settings>`para parâmetros de configuração do próprio Django.

AKISMET_API_KEY

O Weblate pode usar o Akismet para procurar sugestões recebidas anonimamente por spam. Visite akismet.com para comprar uma chave API e associá-la a um site.

ANONYMOUS_USER_NAME

O nome de utilizadores não autenticados.

Veja também

Controlo de acesso

AUDITLOG_EXPIRY

Novo na versão 3.6.

Quantos dias o Weblate deve manter registos de auditoria, que contêm informações sobre a atividade da conta.

A predefinição é de 180 dias.

AUTH_LOCK_ATTEMPTS

Novo na versão 2.14.

Quantidade máxima de tentativas de autenticação que falharam antes da aplicação da limitação de taxa.

Atualmente, isto é aplicado nos locais seguintes:

  • Logins. Apaga a palavra-passe da conta, impedindo que o utilizador entre sem solicitar uma nova palavra-passe.

  • Redefinições de palavra-passe. Impede que novos e-mails sejam enviados, evitando o envio de spam aos utilizadores com muitas tentativas de redefinição de palavra-passe.

A predefinição é 10.

Veja também

Limitação de taxa,

AUTO_UPDATE

Novo na versão 3.2.

Alterado na versão 3.11: A opção original de ligar/desligar foi alterada para diferenciar quais cadeias são aceites.

Atualiza todos repositórios diariamente.

Dica

Útil se não estiver a user Hooks de notificação para atualizar os repositórios do Weblate automaticamente.

Nota

Existem opções de ligar/desligar, além da seleção de cadeias para compatibilidade com versões anteriores.

As opções são:

"none"

Sem atualizações diárias.

"remote" e também False

Atualizar apenas os repositórios remotos.

"full" e também True

Atualizar repositórios remotos e mesclar a cópia de trabalho.

Nota

Isto requer que Tarefas de fundo a usar o Celery esteja a funcionar e entrará em vigor após ser reiniciado.

AVATAR_URL_PREFIX

Prefixo para construção de URLs de avatars: ${AVATAR_URL_PREFIX}/avatar/${MAIL_HASH}?${PARAMS}. Os serviços seguintes funcionam:

Gravatar (predefinição), conforme https://gravatar.com/

AVATAR_URL_PREFIX = 'https://www.gravatar.com/'

Libravatar, conforme https://www.libravatar.org/

AVATAR_URL_PREFIX = 'https://www.libravatar.org/'

AUTH_TOKEN_VALID

Novo na versão 2.14.

Por quanto tempo o token de autenticação e a palavra-passe temporária dos e-mails de redefinição de palavra-passe são válidos. Definido em número de segundos, usando 172800 (2 dias) como predefinição.

AUTH_PASSWORD_DAYS

Novo na versão 2.15.

Quantos dias a usar a mesma palavra-passe deve ser permitido.

Nota

Mudanças de palavra-passe feitas anteriormente ao Weblate 2.15 não serão consideradas para essa política.

A predefinição é de 180 dias.

AUTOFIX_LIST

Lista de correções automáticas para aplicar ao gravar uma cadeia.

Nota

Forneça um caminho totalmente qualificado à classe Python que implementa a interface de correção automática.

Correções disponíveis:

weblate.trans.autofixes.whitespace.SameBookendingWhitespace

Corresponde o espaço em branco no início e no fim da cadeia com a fonte.

weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis

Substitui pontos ao final (…) se a cadeia fonte tiver um caractere de reticências (…) correspondente.

weblate.trans.autofixes.chars.RemoveZeroSpace

Remove caracteres de espaço de largura zero se a fonte não contiver nenhum.

weblate.trans.autofixes.chars.RemoveControlChars

Remove caracteres de controle se a fonte não contiver nenhum.

weblate.trans.autofixes.html.BleachHTML

Remove a marcação HTML insegura das cadeias sinalizadas como safe-html (veja HTML inseguro).

Pode selecionar quais usar:

AUTOFIX_LIST = (
    "weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
    "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
)

BACKGROUND_TASKS

Novo na versão 4.5.2.

Define com que frequência as tarefas de manutenção demoradas devem ser acionadas para um componente.

No momento, isso controla:

Escolhas possíveis:

  • monthly (este é o padrão)

  • weekly

  • daily

  • never

Nota

O aumento da frequência não é recomendado quando o Weblate contém milhares de componentes.

BASE_DIR

Diretório base onde as fontes do Weblate estão localizadas. Usado para derivar vários outros caminhos por predefinição:

Valor predefinido: Diretório de nível superior de fontes do Weblate.

BASIC_LANGUAGES

Novo na versão 4.4.

Lista de idiomas para oferecer aos utilizadores para iniciar uma nova tradução. Quando não especificado, a lista embutida é usada, o que inclui todos os idiomas comumente usados, mas sem variantes específicas de país.

Isso só limita utilizadores não privilegiados a adicionar idiomas indesejados. Os administradores do projeto ainda são apresentados com seleção completa de idiomas definidos no Weblate.

Nota

Isso não define novos idiomas para Weblate, ele filtra apenas os existentes no banco de dados.

Exemplo:

BASIC_LANGUAGES = {"cs", "it", "ja", "en"}

Veja também

Definições de idioma

CSP_SCRIPT_SRC, CSP_IMG_SRC, CSP_CONNECT_SRC, CSP_STYLE_SRC, CSP_FONT_SRC

Personaliza o cabeçalho Content-Security-Policy para Weblate. O cabeçalho é gerado automaticamente com base em integrações ativadas com serviços de terceiros (Matomo, Google Analytics, Sentry, …).

Todos esses tem uma lista vazia como predefinição.

Exemplo:

# Enable Cloudflare Javascript optimizations
CSP_SCRIPT_SRC = ["ajax.cloudflare.com"]

CHECK_LIST

Lista de verificações de qualidade para realizar numa tradução.

Nota

Forneça um caminho totalmente qualificado à classe Python que implementa a interface de verificação.

Ajuste a lista de verificações para incluir as relevantes para si.

Todas as Verificações de qualidade embutidas estão ativadas por predefinição, de onde pode alterar essas configurações. Por predefinição, eles são comentados em Amostra de configuração para que os valores predefinidos sejam usados. Novas verificações são realizadas para cada versão nova do Weblate.

Pode desativar todas as verificações:

CHECK_LIST = ()

Pode ativar apenas algumas:

CHECK_LIST = (
    "weblate.checks.chars.BeginNewlineCheck",
    "weblate.checks.chars.EndNewlineCheck",
    "weblate.checks.chars.MaxLengthCheck",
)

Nota

Alterar esta configuração afeta apenas as traduções recém-alteradas, as verificações existentes ainda serão armazenadas no banco de dados. Para também aplicar alterações nas traduções armazenadas, execute updatechecks.

COMMENT_CLEANUP_DAYS

Novo na versão 3.6.

Apaga comentários após uma determinada quantidade de dias. A predefinição é None, ou seja, nada apagado.

COMMIT_PENDING_HOURS

Novo na versão 2.10.

Quantidade de horas entre fazer o commit de alterações pendentes por meio da tarefa de segundo plano.

CONTACT_FORM

Novo na versão 4.6.

Configura como o e-mail do formulário de contato está a ser enviado. Escolha uma configuração que corresponda à configuração do seu servidor de e-mail.

"reply-to"

O remetente é usado como Reply-To, este é o comportamento padrão.

"from"

O remetente é usado como From. O seu servidor de e-mail precisa permitir o envio de tais e-mails.

DATA_DIR

A pasta na qual Weblate armazena todos os dados. Ela contém ligações para repositórios VCS, um índice de texto e vários ficheiros de configuração para ferramentas externas.

Os subdiretórios seguintes geralmente existem:

home

O diretório pessoal usado para invocar scripts.

ssh

Chaves e configuração de SSH.

static

Localização padrão para ficheiros de Django estáticos, especificados por STATIC_ROOT. Veja Servir ficheiros estáticos.

O contentor do Docker usa um volume separado para isso, veja Volumes de contentor Docker.

media

Localização padrão para ficheiros de mídia Django, especificado por MEDIA_ROOT. Contém capturas de ecrã enviadas, veja Contexto visual para cadeias.

vcs

Repositórios de controle de versão para traduções.

backups

Dados de backup diário. Confira Dados despejados para backups para detalhes.

celery

Dados do agendador Celery, consulte Tarefas de fundo a usar o Celery.

fonts:

Fontes enviadas pelo utilizador, veja Gerir letras.

Nota

Este diretório tem que ser escrito pelo Weblate. Executá-lo como uWSGI significa que o utilizador www-data deve ter acesso de escrita.

A maneira mais fácil de conseguir isto é fazer do utilizador o proprietário do diretório:

sudo chown www-data:www-data -R $DATA_DIR

A predefinição é $BASE_DIR/data.

DATABASE_BACKUP

Novo na versão 3.1.

Se os backups de banco de dados devem ser armazenados como texto simples, compactado ou ignorado. Os valores autorizados são:

  • "plain"

  • "compressed"

  • "none"

DEFAULT_ACCESS_CONTROL

Novo na versão 3.3.

A configuração predefinida de controle de acesso para novos projetos:

0

Público

1

Protegido

100

Privado

200

Personalizado

Use Personalizado se está a gerir a ACL manualmente, o que significa não confiar na gestão interna do Weblate.

DEFAULT_AUTO_WATCH

Novo na versão 4.5.

Configura se Observar automaticamente projetos em contribuição deve ser ativado para novos utilizadores. O padrão é True.

Veja também

Notificações

DEFAULT_RESTRICTED_COMPONENT

Novo na versão 4.1.

O valor predefinido para a restrição de componentes.

DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE

Enviar mensagens predefinidas para diferentes operações, consulte Configuração de componente para detalhes.

DEFAULT_ADDONS

Complementos predefinidos para instalar em cada componente criado.

Nota

Essa configuração afeta apenas componentes recém-criados.

Exemplo:

DEFAULT_ADDONS = {
    # Add-on with no parameters
    "weblate.flags.target_edit": {},
    # Add-on with parameters
    "weblate.autotranslate.autotranslate": {
        "mode": "suggest",
        "filter_type": "todo",
        "auto_source": "mt",
        "component": "",
        "engines": ["weblate-translation-memory"],
        "threshold": "80",
    },
}

DEFAULT_COMMITER_EMAIL

Novo na versão 2.4.

Endereço de e-mail do committer com o padrão noreply@weblate.org.

Veja também

DEFAULT_COMMITER_NAME

DEFAULT_COMMITER_NAME

Novo na versão 2.4.

Nome do committer com o padrão Weblate.

Veja também

DEFAULT_COMMITER_EMAIL

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.

DEFAULT_MERGE_STYLE

Novo na versão 3.4.

Mescla o estilo para quaisquer componentes novos.

  • rebase - predefinição

  • merge

DEFAULT_SHARED_TM

Novo na versão 3.2.

Configura o valor padrão de Utilizar memória de tradução partilhada e project-contrib_shared_tm.

DEFAULT_TRANSLATION_PROPAGATION

Novo na versão 2.5.

Configuração predefinida para propagação de tradução, a predefinição é True.

DEFAULT_PULL_MESSAGE

Título para pull requests novas, a predefinição é 'Update from Weblate'.

ENABLE_AVATARS

Se se deve ativar avatares baseados em Gravatar para os utilizadores. Por predefinição, isto está ativado.

Avatares são buscados e armazenados em cache no servidor, diminuindo o risco de vazamento de informações privadas, acelerando a experiência do utilizador.

ENABLE_HOOKS

Se se deve ativar ganchos remotos anônimos.

Veja também

Hooks de notificação

ENABLE_HTTPS

Se se deve enviar ligações para Weblate como HTTPS ou HTTP. Esta configuração afeta os e-mails enviados e as URLs absolutas geradas.

Na configuração padrão, este também é usado para várias configurações de Django relacionadas ao HTTPS - ele ativa cookies seguros, ativa/desativa HSTSou ativa redirecionamento para URL HTTPS.

O redirecionamento HTTPS pode ser problemático em alguns casos e pode ter problemas com o redirecionamento infinito no caso de estar a usar um proxy reverso a fazer o encerramento SSL que não passa corretamente os cabeçalhos de protocolo para o Django. Ajuste a sua configuração de proxy reverso para emitir cabeçalhos X-Forwarded-Proto ou Forwarded, ou configure SECURE_PROXY_SSL_HEADER para permitir que o Django detecte corretamente o estado SSL.

ENABLE_SHARING

Ativa/desativa o menu Compartilhar para que os utilizadores possam compartilhar o progresso da tradução nas redes sociais.

GET_HELP_URL

Novo na versão 4.5.2.

URL onde o suporte para sua instância do Weblate encontra-se.

GITLAB_CREDENTIALS

Novo na versão 4.3.

Lista para credenciais para servidores de GitLab.

Dica

Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do GitLab com GITLAB_USERNAME e GITLAB_TOKEN.

GITLAB_CREDENTIALS = {
    "gitlab.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "gitlab.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITLAB_USERNAME

O nome de utilizador GitLab para enviar merge requests para atualizações de tradução.

Veja também

GITLAB_CREDENTIALS, GitLab

GITLAB_TOKEN

Novo na versão 4.3.

Token de acesso pessoal do GitLab usado para fazer chamadas API para atualizações de tradução.

Veja também

GITLAB_CREDENTIALS,:ref:vcs-gitlab, GitLab: Ficha de acesso pessoal

GITHUB_CREDENTIALS

Novo na versão 4.3.

Lista para credenciais para servidores GitHub.

Dica

Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do GitHub com GITHUB_USERNAME e GITHUB_TOKEN.

GITHUB_CREDENTIALS = {
    "api.github.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "github.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITHUB_USERNAME

O nome de utilizador GitHub para enviar pull request para atualizações de tradução.

Veja também

GITHUB_CREDENTIALS, GitHub

GITHUB_TOKEN

Novo na versão 4.3.

Token de acesso pessoal GitHub usado para fazer chamadas API para enviar pull requests de tradução.

GOOGLE_ANALYTICS_ID

ID do Google Analytics para ativar o monitoramento do Weblate a usar o Google Analytics.

HIDE_REPO_CREDENTIALS

Oculta credenciais de repositório da interface web. No caso de ter URL do repositório com utilizador e palavra-passe, o Weblate irá ocultá-la quando as informações relacionadas são mostradas aos utilizadores.

Por exemplo, em vez de https://utilizador:palavra-passe@git.example.com/repo.git, vai mostrar apenas “”https://git.example.com/repo.git”””. Tenta limpar mensagens de erro VCS também de forma semelhante.

Nota

Isso está ativado por predefinição.

HIDE_VERSION

Novo na versão 4.3.1.

Esconde informação de versão de utilizadores não autenticados. Isso também faz todos as ligacões de documentação apontar para a última versão, ao invés da versão de combinação da documentação instalada atualmente.

Ocultar a versão é uma prática de segurança recomendada em algumas empresas, mas não prevê invasores de descobrir a versão a sondar o comportamento.

Nota

Isto está desativado por predefinição.

IP_BEHIND_REVERSE_PROXY

Novo na versão 2.14.

Indica se o Weblate está a ser usado através de um proxy reverso.

Se for definido como True, o Weblate obtém o endereço IP de um cabeçalho definido por IP_PROXY_HEADER.

Aviso

Certifique-se de que está realmente a usar um proxy reverso e que ele define este cabeçalho, caso contrário, os utilizadores poderão falsificar o endereço IP.

Nota

Isto está ligado por predefinição.

IP_PROXY_HEADER

Novo na versão 2.14.

Indica de qual cabeçalho o Weblate deve obter o endereço IP quando IP_BEHIND_REVERSE_PROXY está ativado.

A predefinição é HTTP_X_FORWARDED_FOR.

IP_PROXY_OFFSET

Novo na versão 2.14.

Indica qual parte de IP_PROXY_HEADER é usada como endereço IP do cliente.

Dependendo da configuração, este cabeçalho pode consistir em vários endereços IP (por exemplo, X-Forwarded-For: a, b, client-ip) e pode configurar qual endereço do cabeçalho é usado como endereço IP do cliente aqui.

Aviso

Configurar isto afeta a segurança da sua instalação, por isso deve configurá-la só para usar proxies confiáveis para determinar o endereço IP.

A predefinição é 0.

LICENSE_EXTRA

Licenças adicionais para incluir nas opções de licença.

Nota

Cada definição de licença deve ser uma tupla do seu nome curto, um nome longo e uma URL.

Por exemplo:

LICENSE_EXTRA = [
    (
        "AGPL-3.0",
        "GNU Affero General Public License v3.0",
        "https://www.gnu.org/licenses/agpl-3.0-standalone.html",
    ),
]

LICENSE_FILTER

Alterado na versão 4.3: A configurar este para valor em branco desativa o alerta de licença.

Filtrar licenças da lista para mostrar. Isto também desativa o alerta de licença quando configurado para vazio.

Nota

Este filtro usa os nomes de licença curtos.

Por exemplo:

LICENSE_FILTER = {"AGPL-3.0", "GPL-3.0-or-later"}

O seguinte desativa o alerta de licença:

LICENSE_FILTER = set()

LICENSE_REQUIRED

Define se o atributo de licença em Configuração de componente é necessário.

Nota

Isto está desativado por predefinição.

LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

Se o comprimento de uma determinada tradução deve ser limitado. A restrição é o comprimento da cadeia fonte * 10 caracteres.

Dica

Define isto como False para permitir traduções mais longas (até 10.000 caracteres) independentemente do comprimento da cadeia fonte.

Nota

A predefinição é «True».

LOCALIZE_CDN_URL e LOCALIZE_CDN_PATH

Essas configurações definem a extensão CDN de localização JavaScript. LOCALIZE_CDN_URL define a URL raiz onde o CDN de localização está disponível e LOCALIZE_CDN_PATH define o caminho onde o Weblate deve armazenar ficheiros gerados que serão servidos em LOCALIZE_CDN_URL.

Dica

O Hosted Weblate usa o https://weblate-cdn.com/.

LOGIN_REQUIRED_URLS

Uma lista de URLs para as quais deseja exigir autenticação. (Além das regras predefinidas incorporadas ao Weblate).

Dica

Isto permite que proteja toda a instalação com uma palavra-passe a usar:

LOGIN_REQUIRED_URLS = (r"/(.*)$",)
REST_FRAMEWORK["DEFAULT_PERMISSION_CLASSES"] = [
    "rest_framework.permissions.IsAuthenticated"
]

Dica

É desejável bloquear o acesso à API também, como mostrado no exemplo acima.

Veja também

REQUIRE_LOGIN

LOGIN_REQUIRED_URLS_EXCEPTIONS

Lista de exceções para LOGIN_REQUIRED_URLS. Se não especificado, os utilizadores podem acessar a página de autenticação.

Algumas das exceções que pode incluir:

LOGIN_REQUIRED_URLS_EXCEPTIONS = (
    r"/accounts/(.*)$",  # Required for sign in
    r"/static/(.*)$",  # Required for development mode
    r"/widgets/(.*)$",  # Allowing public access to widgets
    r"/data/(.*)$",  # Allowing public access to data exports
    r"/hooks/(.*)$",  # Allowing public access to notification hooks
    r"/api/(.*)$",  # Allowing access to API
    r"/js/i18n/$",  # JavaScript localization
)

MATOMO_SITE_ID

ID de um site em Matomo (anteriormente Piwik) que quer rastrear.

Nota

Esta integração não suporta o Matomo Tag Manager.

Veja também

MATOMO_URL

MATOMO_URL

URL completa (incluindo barra ao final) de uma instalação Matomo (anteriormente Piwik) que deseja usar para rastrear o uso do Weblate. Por favor, consulte <https://matomo.org/> para mais detalhes.

Dica

Esta integração não suporta o Matomo Tag Manager.

Por exemplo:

MATOMO_SITE_ID = 1
MATOMO_URL = "https://example.matomo.cloud/"

Veja também

MATOMO_SITE_ID

MT_SERVICES

Alterado na versão 3.0: A configuração foi renomeada de MACHINE_TRANSLATION_SERVICES para MT_SERVICES para ser consistente com outras configurações de tradução de máquina.

Lista de serviços de tradução de máquina ativados para uso.

Nota

Muitos dos serviços precisam de configuração adicional, como chaves de API, consulte a sua documentação Tradução automática para mais detalhes.

Dica

When using Docker container, this configuration is automatically generated based on provided API keys, see Configurações de tradução automática.

MT_SERVICES = (
    "weblate.machinery.apertium.ApertiumAPYTranslation",
    "weblate.machinery.deepl.DeepLTranslation",
    "weblate.machinery.glosbe.GlosbeTranslation",
    "weblate.machinery.google.GoogleTranslation",
    "weblate.machinery.libretranslate.LibreTranslateTranslation",
    "weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
    "weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
    "weblate.machinery.mymemory.MyMemoryTranslation",
    "weblate.machinery.tmserver.AmagamaTranslation",
    "weblate.machinery.tmserver.TMServerTranslation",
    "weblate.machinery.yandex.YandexTranslation",
    "weblate.machinery.weblatetm.WeblateTranslation",
    "weblate.machinery.saptranslationhub.SAPTranslationHub",
    "weblate.memory.machine.WeblateMemory",
)

MT_APERTIUM_APY

URL do servidor Apertium-APy, https://wiki.apertium.org/wiki/Apertium-apy

MT_AWS_ACCESS_KEY_ID

ID da chave de acesso para Amazon Translate.

MT_AWS_SECRET_ACCESS_KEY

Chave secreta da API para o Amazon Translate.

MT_AWS_REGION

Nome da região para usar no Amazon Translate.

MT_BAIDU_ID

ID do cliente para a API do Baidu Zhiyun, pode registar-se em https://api.fanyi.baidu.com/api/trans/product/index

MT_BAIDU_SECRET

Segredo do cliente para a API do Baidu Zhiyun, pode registar-se em https://api.fanyi.baidu.com/api/trans/product/index

MT_DEEPL_API_URL

Alterado na versão 4.7: A URL completa da API agora está configurada para permitir o uso do plano gratuito. Antes, só era possível configurar a versão da API usando MT_DEEPL_API_VERSION.

A URL da API para usar com o serviço DeepL. No momento em que este artigo foi escrito, existe a API v1, bem como uma versão gratuita e uma versão paga da API v2.

https://api.deepl.com/v2/ (padrão no Weblate)

Destina-se ao uso da API no plano pago e a assinatura é baseada em uso.

https://api-free.deepl.com/v2/

Destina-se ao uso da API no plano gratuito e a assinatura é baseada em uso.

https://api.deepl.com/v1/

Destina-se a ferramentas CAT e é utilizável com assinatura por utilizador.

Anteriormente, o Weblate era classificado como uma ferramenta CAT pelo DeepL, por isso deveria usar a API v1, mas agora é entendido que deve usar a API v2. Portanto, a predefinição é v2 e pode alterar-lo para v1 no caso de ter uma assinatura CAT existente e querer que o Weblate use isso.

A maneira mais fácil de descobrir qual usar é abrir uma URL como a seguinte no seu navegador:

https://api.deepl.com/v2/translate?text=Hello&target_lang=FR&auth_key=XXX

Substitua o XXX pela sua auth_key. Se receber um objeto JSON que contém «Bonjour», tem a URL correta; se não, tente os outros três.

MT_DEEPL_KEY

Chave de API ao API do DeepL, pode registar-se em https://www.deepl.com/pro.html

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

MT_LIBRETRANSLATE_KEY

Novo na versão 4.7.1.

API key for the LibreTranslate instance specified in MT_LIBRETRANSLATE_API_URL.

MT_GOOGLE_KEY

Chave de API para a API v2 do Google Translate, pode registar-se em https://cloud.google.com/translate/docs

MT_GOOGLE_CREDENTIALS

Ficheiro de credenciais da API v3 do JSON obtido no console de nuvem do Google. Por favor, forneça um caminho completo do sistema operacional. As credenciais são por conta de serviço afiliada ao projeto determinado . Por favor, verifique https://cloud.google.com/docs/authentication/getting-started para mais detalhes.

MT_GOOGLE_PROJECT

ID de projeto da API v3 do Google Cloud com serviço de tradução ativado e faturamento ativado. Por favor consulte https://cloud.google.com/appengine/docs/standard/nodejs/building-app/creating-project para mais detalhes

MT_GOOGLE_LOCATION

A API v3 do App Engine do Google Cloud pode ser específica para uma localidade. Altere conforme o caso, se a predefinição``global`` não lhe servir.

Consulte https://cloud.google.com/appengine/docs/locations para mais detalhes

MT_MICROSOFT_BASE_URL

Domínio de URL base da região conforme definido na secção «URLs base».

A predefinição é api.cognitive.microsofttranslator.com para o Azure Global.

Para Azure China use api.translator.azure.cn.

MT_MICROSOFT_COGNITIVE_KEY

Chave do cliente para a API do Microsoft Cognitive Services Translator.

MT_MICROSOFT_REGION

Prefixo da região conforme definido na secção «Autenticar com um recurso de vários serviços».

MT_MICROSOFT_ENDPOINT_URL

Domínio de URL de extremidade da região para token de acesso definido na secção «Autenticando com um token de acesso».

A predefinição é api.cognitive.microsoft.com para Azure Global.

Para Azure China, use o desfecho do Portal do Azure.

MT_MODERNMT_KEY

Chave API ao motor de tradução automática ModernMT.

Veja também

ModernMT MT_MODERNMT_URL

MT_MODERNMT_URL

URL de ModernMT. A predefinição é https://api.modernmt.com/ para o serviço de nuvem.

Veja também

ModernMT MT_MODERNMT_KEY

MT_MYMEMORY_EMAIL

Endereço de e-mail de identificação do myMemory. Permite 1000 solicitações por dia.

MT_MYMEMORY_KEY

Chave de acesso do MyMemory para memória de tradução privada. Use-a com MT_MYMEMORY_USER.

MT_MYMEMORY_USER

ID de utilizador do MyMemory para a memória de tradução privada. Use-o com MT_MYMEMORY_KEY.

MT_NETEASE_KEY

Chave de app para API da NetEase Sight, pode se registar em https://sight.youdao.com/

MT_NETEASE_SECRET

Segredo de app para a API da NetEase Sight, pode se registar em https://sight.youdao.com/

MT_TMSERVER

URL onde o tmserver está funcionando.

MT_YANDEX_KEY

Chave de API para a API do Yandex Translate, pode registar-se em https://yandex.com/dev/translate/

MT_YOUDAO_ID

ID do cliente para a API do Youdao Zhiyun, pode registar-se em https://ai.youdao.com/product-fanyi-text.s.

MT_YOUDAO_SECRET

Segredo do cliente para a API do Youdao Zhiyun, pode registar-se em https://ai.youdao.com/product-fanyi-text.s.

MT_SAP_BASE_URL

URL de API ao serviço SAP Translation Hub.

MT_SAP_SANDBOX_APIKEY

Chave de API para uso de API em caixa de proteção

MT_SAP_USERNAME

O seu nome de utilizador da SAP

MT_SAP_PASSWORD

A sua palavra-passe da SAP

MT_SAP_USE_MT

Se se deve também usar serviços de tradução de máquina, além do banco de dados de termos. Valores possíveis: True ou False

NEARBY_MESSAGES

Quantas cadeia devem ser mostradas em torno da cadeia atualmente traduzida. Este é apenas um valor predefinido, os utilizadores podem ajustar-lo em Perfil do utilizador.

DEFAULT_PAGE_LIMIT

Novo na versão 4.7.

Número padrão de elementos a serem exibidos quando a paginação está ativa.

PAGURE_CREDENTIALS

Novo na versão 4.3.2.

Lista para credenciais para servidores de Pagure.

Dica

Use isto no caso de querer que o Weblate interaja com mais deles, para um único ponto final do Pagure com PAGURE_USERNAME e PAGURE_TOKEN.

PAGURE_CREDENTIALS = {
    "pagure.io": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "pagure.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

PAGURE_USERNAME

Novo na versão 4.3.2.

O nome de utilizador no Pagure para enviar merge requests para atualizações de tradução.

Veja também

PAGURE_CREDENTIALS, Pagure

PAGURE_TOKEN

Novo na versão 4.3.2.

Token de acesso pessoal do Pagure usado para fazer chamadas API para atualizações de tradução.

PRIVACY_URL

Novo na versão 4.8.1.

URL where your Weblate instance shows its privacy policy.

Dica

Útil se hospeda os seus documentos legais fora do Weblate para incorporá-los ao Weblate, verifique Legal para obter detalhes.

Exemplo:

PRIVACY_URL = "https://weblate.org/terms/"

Veja também

LEGAL_URL

RATELIMIT_ATTEMPTS

Novo na versão 3.2.

A quantidade máxima de tentativas de autenticação antes da limitação da taxa ser aplicada.

A predefinição é 5.

RATELIMIT_WINDOW

Novo na versão 3.2.

Por quanto tempo a autenticação é aceita após a limitação da taxa ser aplicada.

Uma quantidade de segundos com a predefinição de 300 (5 minutos).

RATELIMIT_LOCKOUT

Novo na versão 3.2.

Por quanto tempo a autenticação é bloqueada após a limitação da taxa ser aplicada.

Uma quantidade de segundos com a predefinição de 600 (10 minutos).

REGISTRATION_ALLOW_BACKENDS

Novo na versão 4.1.

A lista de backends de autenticação de onde permite o registo. Isso só limita novos registos, os utilizadores ainda se podem autenticar e adicionar autenticação por todos os backends de autenticação configurados.

É recomendado para manter REGISTRATION_OPEN ativado enquanto limita os backends de registo, caso contrário, os utilizadores poderão se registar, mas o Weblate não mostrará ligações para se registar na interface do utilizador.

Exemplo:

REGISTRATION_ALLOW_BACKENDS = ["azuread-oauth2", "azuread-tenant-oauth2"]

Dica

Os nomes de backend correspondem aos nomes usados na URL para autenticação.

REGISTRATION_CAPTCHA

Um valor de True ou False indicando se o registo de contas novas é protegido pelo CAPTCHA. Esta configuração é opcional e uma predifinição de True será presumido se não for fornecido.

Se for ativado, um CAPTCHA é adicionado a todas as páginas onde um utilizador digita o endereço de e-mail dele:

  • Registo de uma conta nova.

  • Recuperação de palavra-passe.

  • Adição de uma e-mail a uma conta.

  • Formulário de contacto para utilizadores que não estão autenticados.

REGISTRATION_EMAIL_MATCH

Novo na versão 2.17.

Permite filtrar quais endereços de e-mail podem ser registados.

A predefinição é .*, que permite que registar qualquer endereço de e-mail.

Pode usá-lo para restringir o registo a um único domínio de e-mail:

REGISTRATION_EMAIL_MATCH = r"^.*@weblate\.org$"

REGISTRATION_OPEN

Se o registo de contas novas é atualmente permitido. Esta configuração opcional pode permanecer com a predefinição True ou pode ser alterada para Falsa.

Esta configuração afeta a autenticação embutida por endereço de e-mail ou através do Python Social Auth (pode listar certos back-ends a usar REGISTRATION_ALLOW_BACKENDS).

Nota

Se estiver a usar métodos de autenticação de terceiros, como Autenticação por LDAP, ele apenas oculta o formulário de registo, mas novos utilizadores ainda conseguem se autenticar e criar contas.

REPOSITORY_ALERT_THRESHOLD

Novo na versão 4.0.2.

Limiar para acionar um alerta para repositórios desatualizados ou aqueles que contêm muitas alterações. A predefinçao é 25.

REQUIRE_LOGIN

Novo na versão 4.1.

Isso ativa :configuração`URLS_DE_LOGIN_NECESSÁRIOS` e configura o framework REST a requisitar autenticação para todos os pontos finais da API.

Nota

Isto é implementado no Amostra de configuração. Para Docker, use WEBLATE_REQUIRE_LOGIN.

SENTRY_DSN

Novo na versão 3.9.

DSN do Sentry para usar para Coletando relatórios de erros.

SIMPLIFY_LANGUAGES

Use códigos de idioma simples para combinações predfinidas de idioma/país. Por exemplo, uma tradução de fr_FR usará o código de idioma fr. Este é geralmente o comportamento desejado, pois simplifica a lista de idiomas para essas combinações predefinidas.

Desative isto se quiser traduções diferentes para cada variante.

SITE_DOMAIN

Configura o domínio do site. Isso é necessário para produzir ligações absolutas corretas em muitos escopos (por exemplo, ativação de e-mails, notificações ou feeds RSS).

No caso de o Weblate estar a ser executado num porte fora do padrão, inclua-a aqui também.

Exemplos::

# Production site with domain name
SITE_DOMAIN = "weblate.example.com"

# Local development with IP address and port
SITE_DOMAIN = "127.0.0.1:8000"

Nota

Esta configuração deve conter apenas o nome de domínio. Para configurar o protocolo (ativar e aplicar HTTPS), use ENABLE_HTTPS e para alterar o URL, use URL_PREFIX.

Dica

Num contentor Docker, o domínio do site é configurado através de WEBLATE_ALLOWED_HOSTS.

SITE_TITLE

Título do site a ser usado para o site e e-mails enviados.

SPECIAL_CHARS

Caracteres adicionais para incluir no teclado visual, Teclado visual.

O valor predefinido é:

SPECIAL_CHARS = ("\t", "\n", "\u00a0", "…")

SINGLE_PROJECT

Novo na versão 3.8.

Redireciona os utilizadores diretamente para um projeto ou componente em vez de mostrar o painel. Pode configurá-lo como True e, neste caso, só funciona no caso de haver realmente apenas um único projeto no Weblate. Alternativamente, define o projeto e redirecionará incondicionalmente para este projeto.

Alterado na versão 3.11: A configuração agora também aceita um slug de projeto, para forçar a exibição desse único projeto.

Exemplo:

SINGLE_PROJECT = "test"

STATUS_URL

A URL onde a sua instância de Weblate relata o estado dela.

SUGGESTION_CLEANUP_DAYS

Novo na versão 3.2.1.

Apaga sugestões automaticamente após uma determinada quantidade de dias. A predefinição é None, ou seja, sem exclusões.

UPDATE_LANGUAGES

Novo na versão 4.3.2.

Controla se o banco de dados de idiomas deve ser atualizado ao executar a migração do banco de dados e está ativado por padrão. Esta configuração não tem efeito na invocação de setuplang.

URL_PREFIX

Esta configuração permite que execute Weblate em algum caminho (caso contrário, depende de ser executado a partir da raiz do servidor web).

Nota

Para usar esta configuração, também precisa configurar o seu servidor para remover este prefixo. Por exemplo, com o WSGI, isso pode ser alcançado definindo WSGIScriptAlias.

Dica

O prefixo deve iniciar com um /.

Exemplo:

URL_PREFIX = "/translations"

Nota

Esta configuração não funciona com o servidor embutido do Django, teria que ajustar urls.py para conter este prefixo.

VCS_BACKENDS

Configuração de backends VCS disponíveis.

Nota

Weblate tenta usar todos os back-ends suportados para os seus utilizadores.

Dica

Pode limitar escolhas ou adicionar back-ends VCS personalizados a usar isto.

VCS_BACKENDS = ("weblate.vcs.git.GitRepository",)

VCS_CLONE_DEPTH

Novo na versão 3.10.2.

Configura a profundidade a clonagem de repositórios Weblate deve ter.

Nota

Atualmente, isto só é suportado em Git. Por predefinição, o Weblate faz clones rasos dos repositórios para tornar a clonagem mais rápida e economizar espaço no disco. Dependendo do seu uso (por exemplo, ao usar o personalizado Extensões), pode aumentar a profundidade ou desligar os clones rasos completamente definindo isso para 0.

Dica

No caso de receber o erro fatal: protocol error: expected old/new/ref, got 'shallow <hash de commit>' ao fazer push do Weblate, desative clones rasos completamente configurando:

VCS_CLONE_DEPTH = 0

WEBLATE_ADDONS

Lista de extensões disponíveis para uso. Para usá-las, elas devem ser ativadas para um determinado componente de tradução. Por predefinição, isto inclui todas as extensões embutidas, ao estender a lista, provavelmente vai manter as existentes ativadas, por exemplo:

WEBLATE_ADDONS = (
    # Built-in addons
    "weblate.addons.gettext.GenerateMoAddon",
    "weblate.addons.gettext.UpdateLinguasAddon",
    "weblate.addons.gettext.UpdateConfigureAddon",
    "weblate.addons.gettext.MsgmergeAddon",
    "weblate.addons.gettext.GettextCustomizeAddon",
    "weblate.addons.gettext.GettextAuthorComments",
    "weblate.addons.cleanup.CleanupAddon",
    "weblate.addons.consistency.LangaugeConsistencyAddon",
    "weblate.addons.discovery.DiscoveryAddon",
    "weblate.addons.flags.SourceEditAddon",
    "weblate.addons.flags.TargetEditAddon",
    "weblate.addons.flags.SameEditAddon",
    "weblate.addons.flags.BulkEditAddon",
    "weblate.addons.generate.GenerateFileAddon",
    "weblate.addons.json.JSONCustomizeAddon",
    "weblate.addons.properties.PropertiesSortAddon",
    "weblate.addons.git.GitSquashAddon",
    "weblate.addons.removal.RemoveComments",
    "weblate.addons.removal.RemoveSuggestions",
    "weblate.addons.resx.ResxUpdateAddon",
    "weblate.addons.autotranslate.AutoTranslateAddon",
    "weblate.addons.yaml.YAMLCustomizeAddon",
    "weblate.addons.cdn.CDNJSAddon",
    # Add-on you want to include
    "weblate.addons.example.ExampleAddon",
)

Nota

A remoção da extensão da lista não a desinstala dos componentes. Weblate vai travar nesse caso. Por favor, desinstale a extensão de todos os componentes antes de removê-la desta lista.

Veja também

Extensões, DEFAULT_ADDONS

WEBLATE_EXPORTERS

Novo na versão 4.2.

Lista de exportadores disponíveis que oferecem descarregar traduções ou glossários em vários formatos de ficheiro.

WEBLATE_FORMATS

Novo na versão 3.0.

Lista de formatos de ficheiro disponíveis para uso.

Nota

A lista predfinida já tem os formatos comuns.

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.

WEBSITE_REQUIRED

Define se Site da Web do Projeto deve ser especificado ao criar um projeto. Ativado por padrão, pois se adapta às configurações do servidor público.

Amostra de configuração

O exemplo a seguir é enviado como weblate/settings_example.py com Weblate:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#


import os
import platform
from logging.handlers import SysLogHandler

# Title of site to use
SITE_TITLE = "Weblate"

# Site domain
SITE_DOMAIN = ""

# Whether site uses https
ENABLE_HTTPS = False

#
# Django settings for Weblate project.
#

DEBUG = True

ADMINS = (
    # ("Your Name", "your_email@example.com"),
)

MANAGERS = ADMINS

DATABASES = {
    "default": {
        # Use "postgresql" or "mysql".
        "ENGINE": "django.db.backends.postgresql",
        # Database name.
        "NAME": "weblate",
        # Database user.
        "USER": "weblate",
        # Name of role to alter to set parameters in PostgreSQL,
        # use in case role name is different than user used for authentication.
        # "ALTER_ROLE": "weblate",
        # Database password.
        "PASSWORD": "",
        # Set to empty string for localhost.
        "HOST": "127.0.0.1",
        # Set to empty string for default.
        "PORT": "",
        # Customizations for databases.
        "OPTIONS": {
            # In case of using an older MySQL server,
            # which has MyISAM as a default storage
            # "init_command": "SET storage_engine=INNODB",
            # Uncomment for MySQL older than 5.7:
            # "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
            # Set emoji capable charset for MySQL:
            # "charset": "utf8mb4",
            # Change connection timeout in case you get MySQL gone away error:
            # "connect_timeout": 28800,
        },
        # Persistent connections
        "CONN_MAX_AGE": 0,
    }
}

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Data directory
DATA_DIR = os.path.join(BASE_DIR, "data")

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = "UTC"

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = "en-us"

LANGUAGES = (
    ("ar", "العربية"),
    ("az", "Azərbaycan"),
    ("be", "Беларуская"),
    ("be@latin", "Biełaruskaja"),
    ("bg", "Български"),
    ("br", "Brezhoneg"),
    ("ca", "Català"),
    ("cs", "Čeština"),
    ("da", "Dansk"),
    ("de", "Deutsch"),
    ("en", "English"),
    ("el", "Ελληνικά"),
    ("en-gb", "English (United Kingdom)"),
    ("es", "Español"),
    ("fi", "Suomi"),
    ("fr", "Français"),
    ("gl", "Galego"),
    ("he", "עברית"),
    ("hu", "Magyar"),
    ("hr", "Hrvatski"),
    ("id", "Indonesia"),
    ("is", "Íslenska"),
    ("it", "Italiano"),
    ("ja", "日本語"),
    ("kab", "Taqbaylit"),
    ("kk", "Қазақ тілі"),
    ("ko", "한국어"),
    ("nb", "Norsk bokmål"),
    ("nl", "Nederlands"),
    ("pl", "Polski"),
    ("pt", "Português"),
    ("pt-br", "Português brasileiro"),
    ("ro", "Română"),
    ("ru", "Русский"),
    ("sk", "Slovenčina"),
    ("sl", "Slovenščina"),
    ("sq", "Shqip"),
    ("sr", "Српски"),
    ("sr-latn", "Srpski"),
    ("sv", "Svenska"),
    ("th", "ไทย"),
    ("tr", "Türkçe"),
    ("uk", "Українська"),
    ("zh-hans", "简体字"),
    ("zh-hant", "正體字"),
)

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Type of automatic primary key, introduced in Django 3.2
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

# URL prefix to use, please see documentation for more details
URL_PREFIX = ""

# Absolute filesystem path to the directory that will hold user-uploaded files.
MEDIA_ROOT = os.path.join(DATA_DIR, "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
MEDIA_URL = f"{URL_PREFIX}/media/"

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
STATIC_ROOT = os.path.join(DATA_DIR, "static")

# URL prefix for static files.
STATIC_URL = f"{URL_PREFIX}/static/"

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "compressor.finders.CompressorFinder",
)

# Make this unique, and don't share it with anybody.
# You can generate it using weblate/examples/generate-secret-key
SECRET_KEY = ""

_TEMPLATE_LOADERS = [
    "django.template.loaders.filesystem.Loader",
    "django.template.loaders.app_directories.Loader",
]
if not DEBUG:
    _TEMPLATE_LOADERS = [("django.template.loaders.cached.Loader", _TEMPLATE_LOADERS)]
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "OPTIONS": {
            "context_processors": [
                "django.contrib.auth.context_processors.auth",
                "django.template.context_processors.debug",
                "django.template.context_processors.i18n",
                "django.template.context_processors.request",
                "django.template.context_processors.csrf",
                "django.contrib.messages.context_processors.messages",
                "weblate.trans.context_processors.weblate_context",
            ],
            "loaders": _TEMPLATE_LOADERS,
        },
    }
]


# GitHub username and token for sending pull requests.
# Please see the documentation for more details.
GITHUB_USERNAME = None
GITHUB_TOKEN = None

# GitLab username and token for sending merge requests.
# Please see the documentation for more details.
GITLAB_USERNAME = None
GITLAB_TOKEN = None

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    # "social_core.backends.google.GoogleOAuth2",
    # "social_core.backends.github.GithubOAuth2",
    # "social_core.backends.bitbucket.BitbucketOAuth",
    # "social_core.backends.suse.OpenSUSEOpenId",
    # "social_core.backends.ubuntu.UbuntuOpenId",
    # "social_core.backends.fedora.FedoraOpenId",
    # "social_core.backends.facebook.FacebookOAuth2",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Custom user model
AUTH_USER_MODEL = "weblate_auth.User"

# Social auth backends setup
SOCIAL_AUTH_GITHUB_KEY = ""
SOCIAL_AUTH_GITHUB_SECRET = ""
SOCIAL_AUTH_GITHUB_SCOPE = ["user:email"]

SOCIAL_AUTH_BITBUCKET_KEY = ""
SOCIAL_AUTH_BITBUCKET_SECRET = ""
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True

SOCIAL_AUTH_FACEBOOK_KEY = ""
SOCIAL_AUTH_FACEBOOK_SECRET = ""
SOCIAL_AUTH_FACEBOOK_SCOPE = ["email", "public_profile"]
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {"fields": "id,name,email"}

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ""
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ""

# Social auth settings
SOCIAL_AUTH_PIPELINE = (
    "social_core.pipeline.social_auth.social_details",
    "social_core.pipeline.social_auth.social_uid",
    "social_core.pipeline.social_auth.auth_allowed",
    "social_core.pipeline.social_auth.social_user",
    "weblate.accounts.pipeline.store_params",
    "weblate.accounts.pipeline.verify_open",
    "social_core.pipeline.user.get_username",
    "weblate.accounts.pipeline.require_email",
    "social_core.pipeline.mail.mail_validation",
    "weblate.accounts.pipeline.revoke_mail_code",
    "weblate.accounts.pipeline.ensure_valid",
    "weblate.accounts.pipeline.remove_account",
    "social_core.pipeline.social_auth.associate_by_email",
    "weblate.accounts.pipeline.reauthenticate",
    "weblate.accounts.pipeline.verify_username",
    "social_core.pipeline.user.create_user",
    "social_core.pipeline.social_auth.associate_user",
    "social_core.pipeline.social_auth.load_extra_data",
    "weblate.accounts.pipeline.cleanup_next",
    "weblate.accounts.pipeline.user_full_name",
    "weblate.accounts.pipeline.store_email",
    "weblate.accounts.pipeline.notify_connect",
    "weblate.accounts.pipeline.password_reset",
)
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
    "social_core.pipeline.disconnect.allowed_to_disconnect",
    "social_core.pipeline.disconnect.get_entries",
    "social_core.pipeline.disconnect.revoke_tokens",
    "weblate.accounts.pipeline.cycle_session",
    "weblate.accounts.pipeline.adjust_primary_mail",
    "weblate.accounts.pipeline.notify_disconnect",
    "social_core.pipeline.disconnect.disconnect",
    "weblate.accounts.pipeline.cleanup_next",
)

# Custom authentication strategy
SOCIAL_AUTH_STRATEGY = "weblate.accounts.strategy.WeblateStrategy"

# Raise exceptions so that we can handle them later
SOCIAL_AUTH_RAISE_EXCEPTIONS = True

SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION = "weblate.accounts.pipeline.send_validation"
SOCIAL_AUTH_EMAIL_VALIDATION_URL = f"{URL_PREFIX}/accounts/email-sent/"
SOCIAL_AUTH_LOGIN_ERROR_URL = f"{URL_PREFIX}/accounts/login/"
SOCIAL_AUTH_EMAIL_FORM_URL = f"{URL_PREFIX}/accounts/email/"
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = f"{URL_PREFIX}/accounts/profile/#account"
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ("email",)
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
SOCIAL_AUTH_SLUGIFY_FUNCTION = "weblate.accounts.pipeline.slugify_username"

# Password validation configuration
AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"  # noqa: E501, pylint: disable=line-too-long
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
        "OPTIONS": {"min_length": 10},
    },
    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
    {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
    {"NAME": "weblate.accounts.password_validation.CharsPasswordValidator"},
    {"NAME": "weblate.accounts.password_validation.PastPasswordsValidator"},
    # Optional password strength validation by django-zxcvbn-password
    # {
    #     "NAME": "zxcvbn_password.ZXCVBNValidator",
    #     "OPTIONS": {
    #         "min_score": 3,
    #         "user_attributes": ("username", "email", "full_name")
    #     }
    # },
]

# Password hashing (prefer Argon)
PASSWORD_HASHERS = [
    "django.contrib.auth.hashers.Argon2PasswordHasher",
    "django.contrib.auth.hashers.PBKDF2PasswordHasher",
    "django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
    "django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
]

# Allow new user registrations
REGISTRATION_OPEN = True

# Shortcut for login required setting
REQUIRE_LOGIN = False

# Middleware
MIDDLEWARE = [
    "weblate.middleware.RedirectMiddleware",
    "weblate.middleware.ProxyMiddleware",
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "weblate.accounts.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "social_django.middleware.SocialAuthExceptionMiddleware",
    "weblate.accounts.middleware.RequireLoginMiddleware",
    "weblate.api.middleware.ThrottlingMiddleware",
    "weblate.middleware.SecurityMiddleware",
    "weblate.wladmin.middleware.ManageMiddleware",
]

ROOT_URLCONF = "weblate.urls"

# Django and Weblate apps
INSTALLED_APPS = [
    # Weblate apps on top to override Django locales and templates
    "weblate.addons",
    "weblate.auth",
    "weblate.checks",
    "weblate.formats",
    "weblate.glossary",
    "weblate.machinery",
    "weblate.trans",
    "weblate.lang",
    "weblate_language_data",
    "weblate.memory",
    "weblate.screenshots",
    "weblate.fonts",
    "weblate.accounts",
    "weblate.configuration",
    "weblate.utils",
    "weblate.vcs",
    "weblate.wladmin",
    "weblate.metrics",
    "weblate",
    # Optional: Git exporter
    "weblate.gitexport",
    # Standard Django modules
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "django.contrib.admin.apps.SimpleAdminConfig",
    "django.contrib.admindocs",
    "django.contrib.sitemaps",
    "django.contrib.humanize",
    # Third party Django modules
    "social_django",
    "crispy_forms",
    "compressor",
    "rest_framework",
    "rest_framework.authtoken",
    "django_filters",
]

# Custom exception reporter to include some details
DEFAULT_EXCEPTION_REPORTER_FILTER = "weblate.trans.debug.WeblateExceptionReporterFilter"

# Default logging of Weblate messages
# - to syslog in production (if available)
# - otherwise to console
# - you can also choose "logfile" to log into separate file
#   after configuring it below

# Detect if we can connect to syslog
HAVE_SYSLOG = False
if platform.system() != "Windows":
    try:
        handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2)
        handler.close()
        HAVE_SYSLOG = True
    except OSError:
        HAVE_SYSLOG = False

if DEBUG or not HAVE_SYSLOG:
    DEFAULT_LOG = "console"
else:
    DEFAULT_LOG = "syslog"
DEFAULT_LOGLEVEL = "DEBUG" if DEBUG else "INFO"

# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/stable/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
    "version": 1,
    "disable_existing_loggers": True,
    "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}},
    "formatters": {
        "syslog": {"format": "weblate[%(process)d]: %(levelname)s %(message)s"},
        "simple": {"format": "[%(asctime)s: %(levelname)s/%(process)s] %(message)s"},
        "logfile": {"format": "%(asctime)s %(levelname)s %(message)s"},
        "django.server": {
            "()": "django.utils.log.ServerFormatter",
            "format": "[%(server_time)s] %(message)s",
        },
    },
    "handlers": {
        "mail_admins": {
            "level": "ERROR",
            "filters": ["require_debug_false"],
            "class": "django.utils.log.AdminEmailHandler",
            "include_html": True,
        },
        "console": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "formatter": "simple",
        },
        "django.server": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "django.server",
        },
        "syslog": {
            "level": "DEBUG",
            "class": "logging.handlers.SysLogHandler",
            "formatter": "syslog",
            "address": "/dev/log",
            "facility": SysLogHandler.LOG_LOCAL2,
        },
        # Logging to a file
        # "logfile": {
        #     "level":"DEBUG",
        #     "class":"logging.handlers.RotatingFileHandler",
        #     "filename": "/var/log/weblate/weblate.log",
        #     "maxBytes": 100000,
        #     "backupCount": 3,
        #     "formatter": "logfile",
        # },
    },
    "loggers": {
        "django.request": {
            "handlers": ["mail_admins", DEFAULT_LOG],
            "level": "ERROR",
            "propagate": True,
        },
        "django.server": {
            "handlers": ["django.server"],
            "level": "INFO",
            "propagate": False,
        },
        # Logging database queries
        # "django.db.backends": {
        #     "handlers": [DEFAULT_LOG],
        #     "level": "DEBUG",
        # },
        "weblate": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Logging VCS operations
        "weblate.vcs": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Python Social Auth
        "social": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Django Authentication Using LDAP
        "django_auth_ldap": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # SAML IdP
        "djangosaml2idp": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
    },
}

# Remove syslog setup if it's not present
if not HAVE_SYSLOG:
    del LOGGING["handlers"]["syslog"]

# List of machine translations
MT_SERVICES = (
    #     "weblate.machinery.apertium.ApertiumAPYTranslation",
    #     "weblate.machinery.baidu.BaiduTranslation",
    #     "weblate.machinery.deepl.DeepLTranslation",
    #     "weblate.machinery.glosbe.GlosbeTranslation",
    #     "weblate.machinery.google.GoogleTranslation",
    #     "weblate.machinery.googlev3.GoogleV3Translation",
    #     "weblate.machinery.libretranslate.LibreTranslateTranslation",
    #     "weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
    #     "weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
    #     "weblate.machinery.modernmt.ModernMTTranslation",
    #     "weblate.machinery.mymemory.MyMemoryTranslation",
    #     "weblate.machinery.netease.NeteaseSightTranslation",
    #     "weblate.machinery.tmserver.AmagamaTranslation",
    #     "weblate.machinery.tmserver.TMServerTranslation",
    #     "weblate.machinery.yandex.YandexTranslation",
    #     "weblate.machinery.saptranslationhub.SAPTranslationHub",
    #     "weblate.machinery.youdao.YoudaoTranslation",
    "weblate.machinery.weblatetm.WeblateTranslation",
    "weblate.memory.machine.WeblateMemory",
)

# Machine translation API keys

# URL of the Apertium APy server
MT_APERTIUM_APY = None

# DeepL API key
MT_DEEPL_KEY = None

# LibreTranslate
MT_LIBRETRANSLATE_API_URL = None
MT_LIBRETRANSLATE_KEY = None

# Microsoft Cognitive Services Translator API, register at
# https://portal.azure.com/
MT_MICROSOFT_COGNITIVE_KEY = None
MT_MICROSOFT_REGION = None

# ModernMT
MT_MODERNMT_KEY = None

# MyMemory identification email, see
# https://mymemory.translated.net/doc/spec.php
MT_MYMEMORY_EMAIL = None

# Optional MyMemory credentials to access private translation memory
MT_MYMEMORY_USER = None
MT_MYMEMORY_KEY = None

# Google API key for Google Translate API v2
MT_GOOGLE_KEY = None

# Google Translate API3 credentials and project id
MT_GOOGLE_CREDENTIALS = None
MT_GOOGLE_PROJECT = None

# Baidu app key and secret
MT_BAIDU_ID = None
MT_BAIDU_SECRET = None

# Youdao Zhiyun app key and secret
MT_YOUDAO_ID = None
MT_YOUDAO_SECRET = None

# Netease Sight (Jianwai) app key and secret
MT_NETEASE_KEY = None
MT_NETEASE_SECRET = None

# API key for Yandex Translate API
MT_YANDEX_KEY = None

# tmserver URL
MT_TMSERVER = None

# SAP Translation Hub
MT_SAP_BASE_URL = None
MT_SAP_SANDBOX_APIKEY = None
MT_SAP_USERNAME = None
MT_SAP_PASSWORD = None
MT_SAP_USE_MT = True

# Use HTTPS when creating redirect URLs for social authentication, see
# documentation for more details:
# https://python-social-auth-docs.readthedocs.io/en/latest/configuration/settings.html#processing-redirects-and-urlopen
SOCIAL_AUTH_REDIRECT_IS_HTTPS = ENABLE_HTTPS

# Make CSRF cookie HttpOnly, see documentation for more details:
# https://docs.djangoproject.com/en/1.11/ref/settings/#csrf-cookie-httponly
CSRF_COOKIE_HTTPONLY = True
CSRF_COOKIE_SECURE = ENABLE_HTTPS
# Store CSRF token in session
CSRF_USE_SESSIONS = True
# Customize CSRF failure view
CSRF_FAILURE_VIEW = "weblate.trans.views.error.csrf_failure"
SESSION_COOKIE_SECURE = ENABLE_HTTPS
SESSION_COOKIE_HTTPONLY = True
# SSL redirect
SECURE_SSL_REDIRECT = ENABLE_HTTPS
# Sent referrrer only for same origin links
SECURE_REFERRER_POLICY = "same-origin"
# SSL redirect URL exemption list
SECURE_REDIRECT_EXEMPT = (r"healthz/$",)  # Allowing HTTP access to health check
# Session cookie age (in seconds)
SESSION_COOKIE_AGE = 1000
SESSION_COOKIE_AGE_AUTHENTICATED = 1209600
SESSION_COOKIE_SAMESITE = "Lax"
# Increase allowed upload size
DATA_UPLOAD_MAX_MEMORY_SIZE = 50000000

# Apply session coookie settings to language cookie as ewll
LANGUAGE_COOKIE_SECURE = SESSION_COOKIE_SECURE
LANGUAGE_COOKIE_HTTPONLY = SESSION_COOKIE_HTTPONLY
LANGUAGE_COOKIE_AGE = SESSION_COOKIE_AGE_AUTHENTICATED * 10
LANGUAGE_COOKIE_SAMESITE = SESSION_COOKIE_SAMESITE

# Some security headers
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
SECURE_CONTENT_TYPE_NOSNIFF = True

# Optionally enable HSTS
SECURE_HSTS_SECONDS = 31536000 if ENABLE_HTTPS else 0
SECURE_HSTS_PRELOAD = ENABLE_HTTPS
SECURE_HSTS_INCLUDE_SUBDOMAINS = ENABLE_HTTPS

# HTTPS detection behind reverse proxy
SECURE_PROXY_SSL_HEADER = None

# URL of login
LOGIN_URL = f"{URL_PREFIX}/accounts/login/"

# URL of logout
LOGOUT_URL = f"{URL_PREFIX}/accounts/logout/"

# Default location for login
LOGIN_REDIRECT_URL = f"{URL_PREFIX}/"

# Anonymous user name
ANONYMOUS_USER_NAME = "anonymous"

# Reverse proxy settings
IP_PROXY_HEADER = "HTTP_X_FORWARDED_FOR"
IP_BEHIND_REVERSE_PROXY = False
IP_PROXY_OFFSET = 0

# Sending HTML in mails
EMAIL_SEND_HTML = True

# Subject of emails includes site title
EMAIL_SUBJECT_PREFIX = f"[{SITE_TITLE}] "

# Enable remote hooks
ENABLE_HOOKS = True

# By default the length of a given translation is limited to the length of
# the source string * 10 characters. Set this option to False to allow longer
# translations (up to 10.000 characters)
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH = True

# Use simple language codes for default language/country combinations
SIMPLIFY_LANGUAGES = True

# Render forms using bootstrap
CRISPY_TEMPLATE_PACK = "bootstrap3"

# List of quality checks
# CHECK_LIST = (
#     "weblate.checks.same.SameCheck",
#     "weblate.checks.chars.BeginNewlineCheck",
#     "weblate.checks.chars.EndNewlineCheck",
#     "weblate.checks.chars.BeginSpaceCheck",
#     "weblate.checks.chars.EndSpaceCheck",
#     "weblate.checks.chars.DoubleSpaceCheck",
#     "weblate.checks.chars.EndStopCheck",
#     "weblate.checks.chars.EndColonCheck",
#     "weblate.checks.chars.EndQuestionCheck",
#     "weblate.checks.chars.EndExclamationCheck",
#     "weblate.checks.chars.EndEllipsisCheck",
#     "weblate.checks.chars.EndSemicolonCheck",
#     "weblate.checks.chars.MaxLengthCheck",
#     "weblate.checks.chars.KashidaCheck",
#     "weblate.checks.chars.PunctuationSpacingCheck",
#     "weblate.checks.format.PythonFormatCheck",
#     "weblate.checks.format.PythonBraceFormatCheck",
#     "weblate.checks.format.PHPFormatCheck",
#     "weblate.checks.format.CFormatCheck",
#     "weblate.checks.format.PerlFormatCheck",
#     "weblate.checks.format.JavaScriptFormatCheck",
#     "weblate.checks.format.LuaFormatCheck",
#     "weblate.checks.format.ObjectPascalFormatCheck",
#     "weblate.checks.format.SchemeFormatCheck",
#     "weblate.checks.format.CSharpFormatCheck",
#     "weblate.checks.format.JavaFormatCheck",
#     "weblate.checks.format.JavaMessageFormatCheck",
#     "weblate.checks.format.PercentPlaceholdersCheck",
#     "weblate.checks.format.VueFormattingCheck",
#     "weblate.checks.format.I18NextInterpolationCheck",
#     "weblate.checks.format.ESTemplateLiteralsCheck",
#     "weblate.checks.angularjs.AngularJSInterpolationCheck",
#     "weblate.checks.qt.QtFormatCheck",
#     "weblate.checks.qt.QtPluralCheck",
#     "weblate.checks.ruby.RubyFormatCheck",
#     "weblate.checks.consistency.PluralsCheck",
#     "weblate.checks.consistency.SamePluralsCheck",
#     "weblate.checks.consistency.ConsistencyCheck",
#     "weblate.checks.consistency.TranslatedCheck",
#     "weblate.checks.chars.EscapedNewlineCountingCheck",
#     "weblate.checks.chars.NewLineCountCheck",
#     "weblate.checks.markup.BBCodeCheck",
#     "weblate.checks.chars.ZeroWidthSpaceCheck",
#     "weblate.checks.render.MaxSizeCheck",
#     "weblate.checks.markup.XMLValidityCheck",
#     "weblate.checks.markup.XMLTagsCheck",
#     "weblate.checks.markup.MarkdownRefLinkCheck",
#     "weblate.checks.markup.MarkdownLinkCheck",
#     "weblate.checks.markup.MarkdownSyntaxCheck",
#     "weblate.checks.markup.URLCheck",
#     "weblate.checks.markup.SafeHTMLCheck",
#     "weblate.checks.placeholders.PlaceholderCheck",
#     "weblate.checks.placeholders.RegexCheck",
#     "weblate.checks.duplicate.DuplicateCheck",
#     "weblate.checks.source.OptionalPluralCheck",
#     "weblate.checks.source.EllipsisCheck",
#     "weblate.checks.source.MultipleFailingCheck",
#     "weblate.checks.source.LongUntranslatedCheck",
#     "weblate.checks.format.MultipleUnnamedFormatsCheck",
#     "weblate.checks.glossary.GlossaryCheck",
# )

# List of automatic fixups
# AUTOFIX_LIST = (
#     "weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
#     "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
#     "weblate.trans.autofixes.chars.RemoveZeroSpace",
#     "weblate.trans.autofixes.chars.RemoveControlChars",
# )

# List of enabled addons
# WEBLATE_ADDONS = (
#     "weblate.addons.gettext.GenerateMoAddon",
#     "weblate.addons.gettext.UpdateLinguasAddon",
#     "weblate.addons.gettext.UpdateConfigureAddon",
#     "weblate.addons.gettext.MsgmergeAddon",
#     "weblate.addons.gettext.GettextCustomizeAddon",
#     "weblate.addons.gettext.GettextAuthorComments",
#     "weblate.addons.cleanup.CleanupAddon",
#     "weblate.addons.cleanup.RemoveBlankAddon",
#     "weblate.addons.consistency.LangaugeConsistencyAddon",
#     "weblate.addons.discovery.DiscoveryAddon",
#     "weblate.addons.autotranslate.AutoTranslateAddon",
#     "weblate.addons.flags.SourceEditAddon",
#     "weblate.addons.flags.TargetEditAddon",
#     "weblate.addons.flags.SameEditAddon",
#     "weblate.addons.flags.BulkEditAddon",
#     "weblate.addons.generate.GenerateFileAddon",
#     "weblate.addons.generate.PseudolocaleAddon",
#     "weblate.addons.json.JSONCustomizeAddon",
#     "weblate.addons.properties.PropertiesSortAddon",
#     "weblate.addons.git.GitSquashAddon",
#     "weblate.addons.removal.RemoveComments",
#     "weblate.addons.removal.RemoveSuggestions",
#     "weblate.addons.resx.ResxUpdateAddon",
#     "weblate.addons.yaml.YAMLCustomizeAddon",
#     "weblate.addons.cdn.CDNJSAddon",
# )

# E-mail address that error messages come from.
SERVER_EMAIL = "noreply@example.com"

# Default email address to use for various automated correspondence from
# the site managers. Used for registration emails.
DEFAULT_FROM_EMAIL = "noreply@example.com"

# List of URLs your site is supposed to serve
ALLOWED_HOSTS = ["*"]

# Configuration for caching
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        # If redis is running on same host as Weblate, you might
        # want to use unix sockets instead:
        # "LOCATION": "unix:///var/run/redis/redis.sock?db=1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
            # If you set password here, adjust CELERY_BROKER_URL as well
            "PASSWORD": None,
            "CONNECTION_POOL_KWARGS": {},
        },
        "KEY_PREFIX": "weblate",
    },
    "avatar": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
        "TIMEOUT": 86400,
        "OPTIONS": {"MAX_ENTRIES": 1000},
    },
}

# Store sessions in cache
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# Store messages in session
MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"

# REST framework settings for API
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    "DEFAULT_PERMISSION_CLASSES": [
        # Require authentication for login required sites
        "rest_framework.permissions.IsAuthenticated"
        if REQUIRE_LOGIN
        else "rest_framework.permissions.IsAuthenticatedOrReadOnly"
    ],
    "DEFAULT_AUTHENTICATION_CLASSES": (
        "rest_framework.authentication.TokenAuthentication",
        "weblate.api.authentication.BearerAuthentication",
        "rest_framework.authentication.SessionAuthentication",
    ),
    "DEFAULT_THROTTLE_CLASSES": (
        "weblate.api.throttling.UserRateThrottle",
        "weblate.api.throttling.AnonRateThrottle",
    ),
    "DEFAULT_THROTTLE_RATES": {"anon": "100/day", "user": "5000/hour"},
    "DEFAULT_PAGINATION_CLASS": ("rest_framework.pagination.PageNumberPagination"),
    "PAGE_SIZE": 20,
    "VIEW_DESCRIPTION_FUNCTION": "weblate.api.views.get_view_description",
    "UNAUTHENTICATED_USER": "weblate.auth.models.get_anonymous",
}

# Fonts CDN URL
FONTS_CDN_URL = None

# Django compressor offline mode
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = [
    {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": True},
    {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": False},
]

# Require login for all URLs
if REQUIRE_LOGIN:
    LOGIN_REQUIRED_URLS = (r"/(.*)$",)

# In such case you will want to include some of the exceptions
# LOGIN_REQUIRED_URLS_EXCEPTIONS = (
#    rf"{URL_PREFIX}/accounts/(.*)$",  # Required for login
#    rf"{URL_PREFIX}/admin/login/(.*)$",  # Required for admin login
#    rf"{URL_PREFIX}/static/(.*)$",  # Required for development mode
#    rf"{URL_PREFIX}/widgets/(.*)$",  # Allowing public access to widgets
#    rf"{URL_PREFIX}/data/(.*)$",  # Allowing public access to data exports
#    rf"{URL_PREFIX}/hooks/(.*)$",  # Allowing public access to notification hooks
#    rf"{URL_PREFIX}/healthz/$",  # Allowing public access to health check
#    rf"{URL_PREFIX}/api/(.*)$",  # Allowing access to API
#    rf"{URL_PREFIX}/js/i18n/$",  # JavaScript localization
#    rf"{URL_PREFIX}/contact/$",  # Optional for contact form
#    rf"{URL_PREFIX}/legal/(.*)$",  # Optional for legal app
# )

# Silence some of the Django system checks
SILENCED_SYSTEM_CHECKS = [
    # We have modified django.contrib.auth.middleware.AuthenticationMiddleware
    # as weblate.accounts.middleware.AuthenticationMiddleware
    "admin.E408"
]

# Celery worker configuration for testing
# CELERY_TASK_ALWAYS_EAGER = True
# CELERY_BROKER_URL = "memory://"
# CELERY_TASK_EAGER_PROPAGATES = True
# Celery worker configuration for production
CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL

# Celery settings, it is not recommended to change these
CELERY_WORKER_MAX_MEMORY_PER_CHILD = 200000
CELERY_BEAT_SCHEDULE_FILENAME = os.path.join(DATA_DIR, "celery", "beat-schedule")
CELERY_TASK_ROUTES = {
    "weblate.trans.tasks.auto_translate*": {"queue": "translate"},
    "weblate.accounts.tasks.notify_*": {"queue": "notify"},
    "weblate.accounts.tasks.send_mails": {"queue": "notify"},
    "weblate.utils.tasks.settings_backup": {"queue": "backup"},
    "weblate.utils.tasks.database_backup": {"queue": "backup"},
    "weblate.wladmin.tasks.backup": {"queue": "backup"},
    "weblate.wladmin.tasks.backup_service": {"queue": "backup"},
    "weblate.memory.tasks.*": {"queue": "memory"},
}

# Enable plain database backups
DATABASE_BACKUP = "plain"

# Enable auto updating
AUTO_UPDATE = False

# PGP commits signing
WEBLATE_GPG_IDENTITY = None

# Third party services integration
MATOMO_SITE_ID = None
MATOMO_URL = None
GOOGLE_ANALYTICS_ID = None
SENTRY_DSN = None
SENTRY_ENVIRONMENT = SITE_DOMAIN
AKISMET_API_KEY = None

Comandos de gerência

Nota

Executar comandos de gestão sob um utilizador diferente daquele que executa o seu servidor web pode resultar em ficheiros a receber permissões erradas, por favor, confira Permissões do sistema de ficheiros para mais detalhes.

Encontrará comandos básicos de gestão (disponíveis como ./manage.py nas fontes do Django ou como um conjunto estendido num script chamado weblate instalável em cima do Weblate).

Invocando comandos de gestão

Como mencionado anteriormente, a invocação depende de como instalou o Weblate.

Se estiver a usar o virtualenv para Weblate, pode especificar o caminho completo para weblate ou ativar o virtualenv antes de invocá-lo:

# Direct invocation
~/weblate-env/bin/weblate

# Activating virtualenv adds it to search path
. ~/weblate-env/bin/activate
weblate

Se estiver a usar o código-fonte diretamente (de um tarball ou checkout Git), o script de gestão é . /manage.py disponível nos fontes do Weblate. Para executá-lo:

python ./manage.py list_versions

Se instalou o Weblate a usar o instalador pip ou pip3, ou a usar o script . /setup.py, o weblate é instalado no seu caminho (ou caminho virtualenv), de onde pode usá-lo para controlar o Weblate:

weblate list_versions

Para a imagem Docker, o script é instalado como acima e pode executá-lo usando docker exec:

docker exec --user weblate <container> weblate list_versions

Para docker-compose o processo é semelhante, apenas tem que usar docker-compose exec:

docker-compose exec --user weblate weblate weblate list_versions

Caso precise passar-le um ficheiro, pode adicionar temporariamente um volume:

docker-compose exec --user weblate /tmp:/tmp weblate weblate importusers /tmp/users.json

add_suggestions

weblate add_suggestions <project> <component> <language> <file>

Novo na versão 2.5.

Importa uma tradução do fcheiro para usar como sugestão para a tradução fornecida. Pula traduções duplicadas; apenas os diferentes são adicionados.

--author USER@EXAMPLE.COM

E-mail do autor para sugestões. Este utilizador deve existir antes da importação (você pode criar um na interface administrativa, se necessário).

Exemplo:

weblate --author michal@cihar.com add_suggestions weblate application cs /tmp/suggestions-cs.po

auto_translate

weblate auto_translate <project> <component> <language>

Novo na versão 2.5.

Alterado na versão 4.6: Adicionado parâmetro para o modo de tradução.

Executa tradução automática com base em outras traduções de componentes.

--source PROJECT/COMPONENT

Especifica o componente a ser usado como fonte disponível para tradução. Se não for especificado, todos os componentes do projeto serão usados.

--user USERNAME

Especifica o nome de utilizador listado como autor das traduções. «Utilizador anônimo» é usado se não for especificado.

--overwrite

Se deve sobrescrever as traduções existentes.

--inconsistent

Se deve substituir as traduções existentes que são inconsistentes (veja Inconsistente).

--add

Adiciona automaticamente o idioma se uma determinada tradução não existir.

--mt MT

Use a tradução automática em vez de outros componentes como traduções de máquina.

--threshold THRESHOLD

Limite de similaridade para tradução de máquina, a predefinição é 80.

--mode MODE

Especifica o modo de tradução tendo como o padrão translate, mas fuzzy ou suggest pode ser usado.

Exemplo:

weblate auto_translate --user nijel --inconsistent --source weblate/application weblate website cs

Veja também

Tradução automática

celery_queues

weblate celery_queues

Novo na versão 3.7.

Exibe o tamanho das filas de tarefas do Celery.

checkgit

weblate checkgit <project|project/component>

Imprime o estado atual do repositório Git de backend.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

commitgit

weblate commitgit <project|project/component>

Faz commit de todas as alterações pendentes possíveis para o repositório Git de backend.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

commit_pending

weblate commit_pending <project|project/component>

Faz commit de alterações pendentes anteriores a uma determinada idade.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

--age HOURS

Idade em horas para fazer commit. Se não for especificado, o valor configurado em Configuração de componente é usado.

Nota

Isso é realizado automaticamente em segundo plano pelo Weblate, de modo que não há necessidade real de invocar isso manualmente, além de forçar um commit anterior do que o especificado por Configuração de componente.

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.

createadmin

weblate createadmin

Cria uma conta admin com uma palavra-passe aleatória, a menos que seja especificada.

--password PASSWORD

Fornece uma palavra-passe na linha de comando, para não gerar uma palavra-passe aleatória.

--no-password

Não define a palavra-passe, isso pode ser útil com –update.

--username USERNAME

Use o nome dado em vez de admin.

--email USER@EXAMPLE.COM

Especifica o endereço de e-mail do administrador.

--name

Especifica o nome (visível) do administrador.

--update

Atualiza o utilizador existente (pode usar isto para alterar palavras-passe).

Alterado na versão 2.9: Adicionados os parâmetros --username, --email, --name e --update.

dump_memory

weblate dump_memory

Novo na versão 2.20.

Exporta um ficheiro JSON que contem o conteúdo de memória de tradução do Weblate.

dumpuserdata

weblate dumpuserdata <file.json>

Despeja dados de utilizador num ficheiro para uso posterior por importuserdata

Dica

Isso é útil ao migrar ou mesclar instâncias do Weblate.

import_demo

weblate import_demo

Novo na versão 4.1.

Cria um projeto de demonstração com componentes baseados em <https://github.com/WeblateOrg/demo>.

Isso pode ser útil ao desenvolver Weblate.

import_json

weblate import_json <json-file>

Novo na versão 2.7.

Importação em lote de componentes com base em dados JSON.

A estrutura do ficheiro JSON importado corresponde basicamente ao objeto do componente (consulte GET /api/components/(string:project)/(string:component)/). Deve incluir os campos name e filemask.

--project PROJECT

Especifica de onde os componentes serão importados.

--main-component COMPONENT

Usa o repositório VCS fornecido deste componente para todos eles.

--ignore

Pula os componentes (já) importados.

--update

Atualiza os componentes (já) importados.

Alterado na versão 2.9: Os parâmetros --ignore e --update existem para lidar com componentes já importados.

Exemplo de ficheiro JSON:

[
  {
    "slug": "po",
    "name": "Gettext PO",
    "file_format": "po",
    "filemask": "po/*.po",
    "new_lang": "none"
  },
  {
    "name": "Android",
    "filemask": "android/values-*/strings.xml",
    "template": "android/values/strings.xml",
    "repo": "weblate://test/test",
    "file_format": "aresource"
  }
]

Veja também

import_memory

import_memory

weblate import_memory <file>

Novo na versão 2.20.

Importa um ficheiro TMX ou JSON para a memória de tradução do Weblate.

--language-map LANGMAP

Permite mapear idiomas no TMX para a memória de tradução do Weblate. Os códigos de idioma são mapeados após a normalização geralmente feita pelo Weblate.

--language-map en_US:en vai, por exemplo, importar todos os textos en_US como en.

Isso pode ser útil caso as localidades do seu ficheiro TMX não correspondam ao que usa no Weblate.

import_project

weblate import_project <project> <gitrepo> <branch> <filemask>

Alterado na versão 3.0: O comando import_project agora é baseado na extensão Descoberta de componentes, levando a algumas mudanças no comportamento e quais parâmetros são aceitos.

Executa a importação em lote de componentes para o projeto com base na máscara de ficheiro.

<project> é o nome de um projeto existente, para o qual os componentes devem ser importados.

O <gitrepo> define a URL do repositório Git a ser usada e <branch> significa o ramo Git. Para importar componentes de tradução adicionais de um componente Weblate existente, use uma URL weblate://<project>/<component> ao <gitrepo>.

O <filemask> define a descoberta de ficheiro para o repositório. Pode ser simplificado usando curingas ou pode usar todo o poder das expressões regulares.

A correspondência simples usa ** para o nome do componente e * para o idioma, por exemplo: **/*.po

A expressão regular deve conter grupos chamados component e language. Por exemplo: (?P<language>[^/]*)/(?P<component>[^-/]*)\.po

A importação corresponde aos componentes existentes com base em ficheiros e adiciona aqueles que não existem. Isso não altera os já existentes.

--name-template TEMPLATE

Personaliza o nome de um componente usando a sintaxe do modelo Django.

Por exemplo: Documentation: {{ component }}

--base-file-template TEMPLATE

Personaliza o ficheiro base para traduções monolíngues.

Por exemplo: {{ component }}/res/values/string.xml

--new-base-template TEMPLATE

Personaliza o ficheiro base para adicionar novas traduções.

Por exemplo: {{ component }}/ts/en.ts

--file-format FORMAT

Também pode especificar o formato de ficheiro a ser usado (veja Formatos de ficheiros suportados), a predefinição é a detecção automática.

--language-regex REGEX

Pode especificar a filtragem de idioma (veja Configuração de componente) com este parâmetro. Tem que ser uma expressão regular válida.

--main-component

Pode especificar qual componente será escolhido como o principal – aquele que realmente contém o repositório VCS.

--license NAME

Especifica a licença de tradução geral, projeto ou componente.

--license-url URL

Especifica a URL onde a licença de tradução encontra-se.

--vcs NAME

Caso precise especificar qual sistema de controle de versão usar, pode fazê-lo aqui. O controle de versão predefinido é Git.

Para dar alguns exemplos, vamos tentar importar dois projetos.

Primeiro as traduções do Manual do Debian, onde cada idioma separou uma pasta com as traduções de cada capítulo:

weblate import_project \
    debian-handbook \
    git://anonscm.debian.org/debian-handbook/debian-handbook.git \
    squeeze/master \
    '*/**.po'

Em seguida, a ferramenta Tanaguru, onde o formato do ficheiro precisa ser especificado, junto com o modelo de ficheiro base e como todos os componentes e traduções estão localizados numa única pasta:

weblate import_project \
    --file-format=properties \
    --base-file-template=web-app/tgol-web-app/src/main/resources/i18n/%s-I18N.properties \
    tanaguru \
    https://github.com/Tanaguru/Tanaguru \
    master \
    web-app/tgol-web-app/src/main/resources/i18n/**-I18N_*.properties

Um exemplo mais complexo de análise de nomes de ficheiro para obter o componente correto e o idioma de um nome de ficheiro como src/security/Numerous_security_holes_in_0.10.1.de.po:

weblate import_project \
    tails \
    git://git.tails.boum.org/tails master \
    'wiki/src/security/(?P<component>.*)\.(?P<language>[^.]*)\.po$'

Filtrando apenas traduções num idioma escolhido:

./manage import_project \
    --language-regex '^(cs|sk)$' \
    weblate \
    https://github.com/WeblateOrg/weblate.git \
    'weblate/locale/*/LC_MESSAGES/**.po'

Importando a documentação do Sphinx dividida em vários ficheiros:

$ weblate import_project --name-template 'Documentation: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/**.po'

A documentação de importação do Sphinx dividida em vários ficheiros e diretórios:

$ weblate import_project --name-template 'Directory 1: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir1/**.po'
$ weblate import_project --name-template 'Directory 2: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir2/**.po'

Veja também

Exemplos mais detalhados encontram-se no capítulo Comea çar com a internacionalização, alternativamente quererá usar import_json.

importuserdata

weblate importuserdata <file.json>

Importa dados do utilizador de um ficheiro criado por dumpuserdata

importusers

weblate importusers --check <file.json>

Importa utilizadores do despejo JSON do banco de dados auth_users do Django.

--check

Com esta opção irá apenas verificar se determinado ficheiro pode ser importado e reportar possíveis conflitos decorrentes de nomes de utilizadores ou e-mails.

Pode descartar os utilizadores da instalação existente do Django usando:

weblate dumpdata auth.User > users.json

install_addon

Novo na versão 3.2.

weblate install_addon --addon ADDON <project|project/component>

Instala uma extensão para um conjunto de componentes.

--addon ADDON

Nome do complemento a ser instalado. Por exemplo, weblate.gettext.customize.

--configuration CONFIG

Configuração codificada em JSON de uma extensão.

--update

Atualiza a configuração existente da extensão.

Pode definir em qual projeto ou componente instalar a extensão (por exemplo, weblate/application) ou usar --all para incluir todos os componentes existentes.

Para instalar Personalizar a saída gettext para todos os componentes:

weblate install_addon --addon weblate.gettext.customize --config '{"width": -1}' --update --all

Veja também

Extensões

list_languages

weblate list_languages <locale>

Lista os idiomas suportados na marcação MediaWiki – códigos de idioma, nomes em inglês e nomes localizados.

Isso é usado para gerar <https://wiki.l10n.cz/Slovn%C3%ADk_s_n%C3%A1zvy_jazyk%C5%AF>.

list_translators

weblate list_translators <project|project/component>

Lista tradutores por idioma contribuído ao projeto em questão:

[French]
Jean Dupont <jean.dupont@example.com>
[English]
John Doe <jd@example.com>
--language-code

Lista os nomes pelo código do idioma em vez do nome do idioma.

Pode definir qual projeto ou componente usar (por exemplo, weblate/application) ou usar --all para listar os tradutores de todos os componentes existentes.

list_versions

weblate list_versions

Lista todas as dependências do Weblate e as versões deles.

loadpo

weblate loadpo <project|project/component>

Recarrega traduções de disco (por exemplo, caso tenha feito algumas atualizações no repositório VCS).

--force

Força a atualização, mesmo que os ficheiros devam estar atualizados.

--lang LANGUAGE

Limita o processamento a um único idioma.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

Nota

Raramente precisa invocar isso, o Weblate carregará automaticamente os ficheiros alterados para cada atualização do VCS. Isso é necessário no caso de alterar manualmente um repositório Weblate VCS subjacente ou em alguns casos especiais após uma atualização.

lock_translation

weblate lock_translation <project|project/component>

Impede outras traduções de um componente.

Dica

Útil caso queira fazer alguma manutenção no repositório subjacente.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

Veja também

unlock_translation

move_language

weblate move_language source target

Novo na versão 3.0.

Permite mesclar o conteúdo do idioma. Isso é útil ao atualizar para uma nova versão que contém apelidos para idiomas anteriormente desconhecidos que foram criados com o sufixo (generated). Ele move todo o conteúdo do idioma fonte source para o de destino`target`.

Exemplo:

weblate move_language cze cs

Depois de mover o conteúdo, deve verificar se sobrou algo (isto está sujeito a condições de corrida quando alguém atualiza o repositório enquanto isso) e remover o idioma (generated).

pushgit

weblate pushgit <project|project/component>

Faz um push das alterações com commit feito para o repositório VCS upstream.

--force-commit

Força o commit de todas as alterações pendentes, antes de fazer o push.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

Nota

O Weblate faz o push das mudanças automaticamente se Enviar ao submeter na Configuração de componente está ativada, que é a predefinição.

unlock_translation

weblate unlock_translation <project|project/component>

Desbloqueia um determinado componente, disponibilizando-o para tradução.

Dica

Útil caso queira fazer alguma manutenção no repositório subjacente.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

Veja também

lock_translation

setupgroups

weblate setupgroups

Configura grupos predefinidos e, opcionalmente, atribui todos os utilizadores a esse grupo predefinido.

--no-privs-update

Desativa a atualização automática de grupos existentes (apenas adiciona novos).

--no-projects-update

Impede atualizações automáticas de grupos para projetos existentes. Isso permite adicionar grupos recém-adicionados a projetos existentes, consulte Controlo de acesso ao projeto.

Veja também

Lista de privilégios

setuplang

weblate setuplang

Atualiza a lista de idiomas definidos no Weblate.

--no-update

Desativa as atualizações automáticas de idiomas existentes (apenas adiciona novos).

updatechecks

weblate updatechecks <project|project/component>

Atualiza todas as verificações para todos os textos.

Dica

Útil para atualizações que fazem grandes mudanças nas verificações.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

updategit

weblate updategit <project|project/component>

Busca repositórios VCS remotos e atualiza o cache interno.

Pode definir qual projeto ou componente atualizar (por exemplo, weblate/application) ou usar --all para atualizar todos os componentes existentes.

Nota

Normalmente é melhor configurar os ganchos no repositório para acionar Hooks de notificação, ao invés da pesquisa regular por updategit.

Anúncios

Alterado na versão 4.0: Em versões anteriores, esse recurso era chamado de mensagens de quadro de comunicações.

Forneça informações aos seus tradutores postando anúncios, em todo o site, por projeto, componente ou idioma.

Anuncie o propósito, prazos, estados ou especificar metas para tradução.

Os utilizadores receberão notificação sobre os anúncios de projetos assistidos (a menos que optem por não participar).

Isto pode ser útil para várias coisas, desde anunciar o propósito do site até especificar alvos para traduções.

Os anúncios podem ser publicados em cada nível no menu Manage, a usar :guilabel:”Publicar anúncio”:

Imagem a mostrar uma mensagem que diz: "Translations will be used only if they reach 60%" (em português: "As traduções serão usadas apenas se atingirem 60%") no topo da visão do painel.

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

_images/announcement.png

Os anúncios são então mostrados com base no seu contexto específico:

Nenhum contexto especificado

Mostrado no painel (página de chegada).

Projeto especificado

Mostrado dentro do projeto, incluindo todos os seus componentes e traduções.

Componente especificado

Mostrado para um determinado componente e todas as traduções dele.

Idioma especificado

Mostrado na visão geral do idioma e todas as traduções nesse idioma.

Esta é a aparência na página de visão geral do idioma:

Imagem a mostrar uma mensagem que diz: "Czech translators rock!" (em português: "Tradutores tchecos são demais!") no topo da visão geral do idioma tcheco.

Lista de componentes

Especifique múltiplas listas de componentes para aparecer como opções no painel do utilizador, a partir do qual os utilizadores podem selecionar uma visualização como a visão predefinida. Veja Painel para saber mais.

Alterado na versão 2.20: Um estado vai ser apresentado para cada componente listado no painel.

Os nomes e conteúdos das listas de componentes podem ser especificados na interface administrativa, na secção Component lists. Cada lista de componentes deve ter um nome que é exibido ao utilizador e uma slug representando-a na URL.

Alterado na versão 2.13: Altera as configurações de painel para utilizadores anônimos da interface administrativa, a alterar qual painel é apresentado para utilizadores não autenticados.

Listas de componentes automáticas

Novo na versão 2.13.

Adicione componentes à lista automaticamente com base nas suas slugs criando regras Automatic component list assignment.

  • Útil para atualizar listas de componentes para grandes instalações, ou no caso de querer ter uma lista de componentes com todos os componentes na sua instalação do Weblate.

Dica

Faça uma lista de componentes contendo todos os componentes da sua instalação Weblate.

1. Define Automatic component list assignment with ^.*$ as regular expression in both the project and the component fields, as shown on this image:

Imagem mostrando o painel de administração do Weblate com a configuração acima preenchida.

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

  1. Adicione weblate.gitexport às apps instaladas em settings.py:

INSTALLED_APPS += ("weblate.gitexport",)
  1. Exporte repositórios existentes migrando seu banco de dados após a instalação:

weblate migrate

Uso

O módulo conecta-se automaticamente ao Weblate e define a URL do repositório exportado na Configuração de componente. Os repositórios são acessíveis na parte /git/ da URL do Weblate, por exemplo, https://example.org/git/weblate/main/.

Repositórios para projetos disponíveis publicamente podem ser clonados sem autenticação:

git clone 'https://example.org/git/weblate/main/'

O acesso para navegar nos repositórios com acesso restrito (com controle de acesso Privado ou quando REQUIRE_LOGIN está ativado) requer um token de API que pode ser obtido no seu perfil de utilizador:

git clone 'https://user:KEY@example.org/git/weblate/main/'

Dica

Por predefinição, os membros ou o grupo Utilizadores e utilizador anônimo têm acesso aos repositórios para projetos públicos via Acessar repositório e funções de Utilizador avançado.

Faturação

Novo na versão 2.4.

Isso é usado no Hosted Weblate para definir planos de cobrança, rastrear faturas e limites de uso.

Instalação

1. Add weblate.billing to installed apps in settings.py:

INSTALLED_APPS += ("weblate.billing",)
  1. Execute a migração do banco de dados para instalar opcionalmente estruturas de banco de dados adicionais para o módulo:

weblate migrate

Uso

Após a instalação, pode controlar a cobrança na interface de administração. Os utilizadores com cobrança ativada obterão a nova guia Cobrança no Perfil do utilizador deles.

O módulo de cobrança também permite que os administradores do projeto criem novos projetos e componentes sem serem superutilizadores (veja add-projects). Isso é possível quando as seguintes condições são atendidas:

  • A cobrança está nos limites configurados dele (qualquer uso excessivo resulta no bloqueio da criação do projeto/componente) e pago (se o preço dele for diferente de zero)

  • O utilizador é administrador do projeto existente com cobrança ou o utilizador é proprietário da cobrança (este último é necessário ao criar uma nova cobrança para que os utilizadores possam importar novos projetos).

Após a criação do projeto, o utilizador pode escolher qual faturamento deve ser cobrado pelo projeto, caso tenha acesso a mais deles.

Avatares

Os avatares são descarredaos e armazenados em cache no lado do servidor para reduzir o vazamento de informações para os sites que os servem por predefinição. O suporte embutido para buscar avatares de endereços de e-mail configurados para isso pode ser desligado usando ENABLE_AVATARS.

Atualmente, o Weblate oferece suporte a:

Proteção contra spam

Pode se proteger contra spam por utilizadores usando o serviço Akismet.

  1. Instale o módulo Python akismet (ele já está incluído na imagem Docker oficial).

  2. Obtenha a chave de API do Akismet.

  3. Armazene-a como AKISMET_API_KEY ou WEBLATE_AKISMET_API_KEY no Docker.

O seguinte conteúdo é enviado ao Akismet para verificação:

  • Sugestões de utilizador não autenticados

  • Descrições e ligações de projetos e componentes

Nota

Este (entre outras coisas) depende do endereço IP do cliente, veja Executar por trás de um proxy reverso para configurá-lo apropriadamente.

Assinando commits do Git com GnuPG

Novo na versão 3.1.

Todos os commits podem ser assinados pela chave GnuPG da instância Weblate.

1. Turn on WEBLATE_GPG_IDENTITY. (Weblate will generate a GnuPG key when needed and will use it to sign all translation commits.)

Este recurso precisa do GnuPG 2.1 ou mais recente instalado.

Pode encontrar a chave em DATA_DIR e a chave pública é mostrada na página «Sobre»:

_images/about-gpg.png

2. Alternatively you can also import existing keys into Weblate, just set HOME=$DATA_DIR/home when invoking gpg.

Veja também

WEBLATE_GPG_IDENTITY

Limitação de taxa

Alterado na versão 3.2: A limitação de taxa agora aceita uma configuração mais refinada.

Alterado na versão 4.6: A limitação de taxa não se aplica mais a superutilizadores.

Várias operações no Weblate são limitadas por taxas. No máximo RATELIMIT_ATTEMPTS tentativas são permitidas dentro de RATELIMIT_WINDOW segundos. O utilizador é bloqueado por RATELIMIT_LOCKOUT. Há também configurações específicas para escopos como, por exemplo, RATELIMIT_CONTACT_ATTEMPTS ou RATELIMIT_TRANSLATE_ATTEMPTS. A tabela abaixo é uma lista completa de escopos disponíveis.

As seguintes operações estão sujeitas a limitação de taxa:

Nome

Âmbito

Tentativas permitidas

Janela de limite de tempo

Período de bloqueio

Registo

REGISTRATION

5

300

600

Enviando mensagem para administradores

MESSAGE

5

300

600

Autenticação de palavra-passe ao entrar

LOGIN

5

300

600

Pesquisa em todo o site

SEARCH

6

60

60

Traduzir

TRANSLATE

30

60

600

Adicionando ao glossário

GLOSSARY

30

60

600

Iniciando a tradução para um novo idioma

LANGUAGE

2

300

600

Creating new project

PROJECT

5

600

600

Se um utilizador falhar ao fazer o login AUTH_LOCK_ATTEMPTS vezes, a autenticação da palavra-passe será desativada na conta até ter passado pelo processo de redefinição da palavra-passe.

As configurações também podem ser aplicadas no contentor do Docker adicionando o prefixo WEBLATE_ ao nome da configuração, por exemplo RATELIMIT_ATTEMPTS torna-se WEBLATE_RATELIMIT_ATTEMPTS.

A API possui configurações separadas de limitação de taxa, consulte Limitação de taxa da API.

Integração com Fedora Messaging

Fedora Messaging é um editor baseado em AMQP para todas as mudanças que acontecem no Weblate. Pode conectar serviços adicionais nas mudanças que acontecem no Weblate usando isso.

A integração com Fedora Messaging está disponível como um módulo Python separado weblate-fedora-messaging. Consulte <https://github.com/WeblateOrg/fedora_messaging/> para obter instruções de configuração.

Personalizar o Weblate

Amplie e personalize a usar Django e Python. Contribua as suas alterações para o upstream acima para que todos possam se beneficiar. Isso reduz os seus custos de manutenção; código no Weblate é cuidado ao alterar interfaces internas ou refatorar o código.

Aviso

Nem interfaces internas nem modelos são considerados uma API estável. Por favor, revise as suas próprias personalizações para cada atualização, as interfaces ou a semântica deles podem mudar sem aviso prévio.

Veja também

Contribuir ao Weblate

Criar um módulo Python

Se não conheçe o Python, pode olhar para Python For Beginners, que explica o básico e aponta aos tutoriais adicionais.

Para escrever algum código Python personalizado (chamado de módulo), é necessário um lugar para armazená-lo, seja no caminho do sistema (geralmente algo como /usr/lib/python3.7/site-packages/) ou no diretório Weblate, que também é adicionado ao caminho de pesquisa do interpretador.

Melhor ainda, transforme a sua personalização num pacote Python adequado:

  1. Crie uma pasta para o seu pacote (usaremos weblate_customization).

  2. Dentro dele, crie um ficheiro setup.py para descrever o pacote:

    from setuptools import setup
    
    setup(
        name="weblate_customization",
        version="0.0.1",
        author="Your name",
        author_email="yourname@example.com",
        description="Sample Custom check for Weblate.",
        license="GPLv3+",
        keywords="Weblate check example",
        packages=["weblate_customization"],
    )
    
  3. Crie uma pasta para o módulo Python (também chamado de weblate_customization) para o código de personalização.

  4. Dentro dele, crie um ficheiro __init__.py para garantir que o Python possa importar o módulo.

  5. Este pacote agora pode ser instalado a usar pip install -e. Mais informações a serem encontradas em “Editable” Installs.

  6. Uma vez instalado, o módulo pode ser usado na configuração Weblate (por exemplo, weblate_customization.checks.FooCheck).

Sua estrutura de módulo deve ser assim:

weblate_customization
├── setup.py
└── weblate_customization
    ├── __init__.py
    ├── addons.py
    └── checks.py

Pode encontrar um exemplo de personalização do Weblate em <https://github.com/WeblateOrg/customize-example>, ele abrange todos os tópicos descritos abaixo.

Verificações de qualidade personalizadas, extensões e correções automáticas

Para instalar o seu código para Correções automáticas personalizadas, Escrever próprias verificações ou Escrevendo extensões no Weblate:

  1. Ponha os ficheiros no seu módulo Python a conter a personalização ao Weblate (veja Criar um módulo Python).

  2. Adicione o caminho totalmente qualificado dele à classe Python nas configurações dedicadas (WEBLATE_ADDONS, CHECK_LIST ou AUTOFIX_LIST):

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)

Interface de gestão

A interface de gestão oferece configurações de administração sob a URL /manage/. Está disponível para utilizadores que se inscrevem com privilégios administrativos, acessíveis a usar o ícone da chave inglesa no canto superior direito:

_images/support.png

Ela inclui uma visão geral básica do seu Weblate:

A interface administrativa do Django

Aviso

Será removido no futuro, pois o uso dele é desencorajado — a maioria das funcionalidades pode ser geridas diretamente no Weblate.

Aqui pode gerir objetos armazenados no banco de dados, tais como utilizadores, traduções e outras configurações:

_images/admin.png

Na secção Relatórios pode verificar o estado do seu site, ajustá-lo para produção ou gerir chaves SSH usadas para acessar Acessando repositórios.

Gerir objetos de banco de dados em qualquer uma das secções abaixo. A mais interessante é provavelmente Traduções do Weblate, onde pode gerir projetos traduzíveis, veja Configuração de projeto e Configuração de componente.

Idiomas do Weblate detém as definições de idiomas, explicado melhor em Definições de idioma.

Adicionar um projeto

A adição de um projeto serve como contentor para todos os componentes. Normalmente cria um projeto para um software, ou livro (Veja Configuração de projeto para informações sobre parâmetros individuais):

_images/add-project.png

Componentes bilíngues

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

_images/add-component.png

Componentes monolínguas

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

_images/add-component-mono.png

Obter suporte para o Weblate

Weblate é um software livre protegido por copyleft e com apoio comunitário. Os assinantes recebem apoio prioritário sem custo adicional. Pacotes de ajuda pré-pago estão disponíveis para todos. Pode encontrar mais informações sobre as ofertas de apoio atuais em <https://weblate.org/support/>.

Integrando o apoio

Novo na versão 3.8.

Os pacotes de apoio adquiridos podem ser integrados opcionalmente à sua gestão de assinatura do Weblate, de onde encontrará uma ligação a ele. Detalhes básicos da instância sobre a sua instalação também são relatados de volta ao Weblate desta forma.

_images/support.png

Dados enviados ao Weblate

  • URL onde a sua instância do Weblate está configurada

  • Título do seu site

  • A versão do Weblate que está a executar

  • Contagem de alguns objetos no seu banco de dados Weblate (projetos, componentes, idiomas, cadeias fonte e utilizadores)

  • A chave pública SSH da sua instância

Além disso, quando Descubra Weblate está ativado:

  • Lista de projetos públicos (nome, URL e site)

Nenhum outro dado é enviado.

Serviços de integração

Dica

Os pacotes de apoio adquiridos já estão ativados no momento da compra e podem ser usados sem integrá-los.

Descubra Weblate

Novo na versão 4.5.2.

Nota

Este recurso está atualmente num beta inicial.

Descubra Weblate é um serviço opcional que facilita encontrar comunidades e servidores Weblate. Os utilizadores podem navegar por serviços cadastrados em <https://weblate.org/discover/> e lá encontrar projetos para contribuir.

Como fazer para ser listado

Dica

Participar do Descubra Weblate faz com que o Weblate envie algumas informações sobre o seu servidor, veja Dados enviados ao Weblate.

Para listar o seu servidor com uma assinatura de suporte ativa (veja Integrando o apoio) no Descubra Weblate tudo que precisa fazer é ativar isso no painel de gestão:

_images/support-discovery.png

Listando seu servidor sem uma assinatura de suporte no Descubra Weblate:

  1. Registe-se em <https://weblate.org/user/>

  2. Registe o seu servidor Weblate no banco de dados de descoberta em <https://weblate.org/subscription/discovery/>

  3. Confirme a ativação do serviço no seu Weblate e ative a lista de descoberta na sua página de gestão do Weblate usando o botão Ativar descoberta:

_images/support-discovery.png

Personalizando a listagem

Pode personalizar a lista fornecendo um texto e uma imagem (570 x 260 pixels) em <https://weblate.org/user/>.

Comea çar com a internacionalização

Tem um projeto e quer traduzi-lo para vários idiomas? Este guia o ajudará a fazer isso. Várias situações típicas são apresentadas, mas a maioria dos exemplos são genéricos e podem ser aplicados a outros cenários também.

Antes de traduzir qualquer software, deve perceber que os idiomas ao redor do mundo são realmente diferentes e não deve fazer nenhuma suposição com base na sua experiência. Para a maioria dos idiomas, parecerá estranho se tentar concatenar uma frase de segmentos traduzidos. Também deve lidar adequadamente com formas plurais porque muitos idiomas têm regras complexas para isso e a estrutura de internacionalização que acaba a usar deve oferecer suporte a isso.

Por último, mas não menos importante, às vezes pode ser necessário adicionar algum contexto ao texto traduzido. Imagine que um tradutor receberia a cadeia Sun para traduzir. Sem contexto, a maioria das pessoas traduziria isso como a nossa estrela mais próxima, mas pode ser usado como uma abreviatura para domingo.

Escolhendo a estrutura de internacionalização

Escolha o que for padrão na sua plataforma, tente evitar reinventar a roda a criar a sua própria estrutura para lidar com localizações. Weblate tem suporte à maioria dos frameworks amplamente usados, veja Formatos de ficheiros suportados para mais informações (especialmente Capacidades dos tipos de tradução).

Nossa recomendação pessoal para algumas plataformas está na tabela a seguir. Isso se baseia em nossa experiência, mas não pode abranger todos os casos de uso, portanto, sempre considere o seu ambiente ao fazer a escolha.

Plataforma

Formato recomendado

Android

Recurso de cadeias de Android

iOS

Cadeias de Apple iOS

Qt

.ts de Qt Linguist

Python

GNU gettext

PHP

GNU gettext 1

C/C++

GNU gettext

C#

Ficheiros de recursos .XML

Perl

GNU gettext

Ruby

Ficheiros Ruby YAML

Extensões web

JSON WebExtension

Java

XLIFF 2

JavaScript

Ficheiros i18next do JSON 3

1

O suporte nativo a Gettext no PHP é problemático e frequentemente está ausente nas compilações do Windows, é recomendado usar a biblioteca de terceiros motranslator em vey disso.

2

Também pode usar Propriedades Java se os plurais não forem necessários.

3

Também pode usar Ficheiro JSON simples se os plurais não forem necessários.

O fluxo de trabalho mais detalhado para alguns formatos é descrito nos capítulos a seguir:

Integrando com Weblate

Básico do Weblate

Estrutura de projetos e componentes

No Weblate, as traduções são organizadas em projetos e componentes. Cada projeto pode conter vários componentes, os quais contêm traduções para idiomas individuais. O componente corresponde a um ficheiro traduzível (por exemplo, GNU gettext ou Recurso de cadeias de Android). Os projetos existem para ajudá-lo a organizar componentes em conjuntos lógicos (por exemplo, para agrupar todas as traduções usadas dentro de uma aplicação).

Internamente, cada projeto tem traduções para cadeias comuns propagadas em outros componentes dentro dele por predefinição. Isso alivia o fardo da tradução repetitiva e de várias versões. A propagação da tradução pode ser desativada por Configuração de componente a utilizar Permitir propagação da tradução caso as traduções devam divergir.

Importar projeto de localização para o Weblate

O Weblate foi desenvolvido com a integração VCS em mente como seu recurso principal, então a maneira mais fácil é conceder ao Weblate o acesso ao seu repositório. O processo de importação o guiará pela configuração das suas traduções em componentes.

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

Obtendo traduções atualizadas do Weblate

Para buscar cadeias atualizadas do Weblate, pode simplesmente buscar o repositório Git subjacente (tanto do sistema de ficheiros ou pode ser disponibilizado através de Exportador git). Antes disso, pode querer submeter quaisquer alterações pendentes (veja Commits adiados). Pode fazer isso na interface do utilizador (em Manutenção do repositório) ou na linha de comando a usar o Cliente Weblate.

Isso pode ser automatizado se conceder acesso push do Weblate ao seu repositório e configurar URL de submissão do repositório na Configuração de componente. Veja Fazendo push das alterações do Weblate.

Alternativamente, pode usar API REST do Weblate para atualizar as traduções para corresponder às suas versões mais recentes.

Buscando alterações remotas para o Weblate

Para buscar as cadeias recém-atualizados no seu repositório para o Weblate, apenas deixe-o fazer pull do repositório upstream. Isso pode ser feito na interface do utilizador (em Manutenção do repositório) ou na linha de comando a usar o Cliente Weblate.

Isso pode ser automatizado a configurar um webhook no seu repositório para acionar o Weblate sempre que houver um novo commit. Veja Atualizar repositórios para mais detalhes.

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

A adicionar novas cadeias

No caso que os seus ficheiros de tradução serem armazenados num VCS com o código, provavelmente tem um fluxo de trabalho existente para os programadores introduzirem novos textos. Qualquer forma de adicionar cadeias será escolhida, mas considere usar Portal de qualidade para cadeias fonte para evitar a introdução de erros.

Quando os ficheiros de tradução são separados do código, existem as seguintes maneiras de introduzir novas cadeias no Weblate.

Nota

A disponibilidade de adicionar cadeias no Weblate depende de Gerir cadeias.

Atualizar ficheiro de idioma de destino

Para ficheiros monolingues (veja Formatos de ficheiros suportados), o Weblate pode adicionar novas cadeias de tradução não presentes no Ficheiro de idioma base monolingue e não nas traduções reais. No entanto, ele não executa nenhuma limpeza automática de cadeias obsoletas, pois isso pode ter resultados inesperados. Se quiser fazê-lo, instale a extensão Limpeza de ficheiros de tradução que fará a limpeza conforme os seus requisitos.

Weblate também não tentará atualizar ficheiros bilíngues de nenhuma forma, então se precisar que os ficheiros po sejam atualizados de pot, precisa fazer isso sozinho a usar Métodos de importação de Atualizar cadeias fonte: ou a usar a extensão Atualizar ficheiros PO para coincidir com POT (msgmerge).

A gerir repositório de controle de versão

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

Dica

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

_images/component-repository.png

As seguintes operações estão disponíveis:

Commit

Faz commit de quaisquer alterações pendentes que estejam presentes no banco de dados do Weblate, mas não no repositório, veja Commits adiados.

Push

Faz um push das alterações para o repositório upstream, se configurado pela URL de submissão do repositório.

Atualizar, Pull, Rebase

Atualiza o repositório Weblate com mudanças upstream. Ele usa Estilo de união ao escolher Atualizar ou você pode escolher um diferente no menu suspenso.

Bloquear

O bloqueio impede que os tradutores façam alterações

Redefinir de Manutenção

Redefine todas as alterações feitas no Weblate para corresponder ao repositório upstream. Isso descartará todas as traduções feitas no Weblate e não presentes no repositório upstream.

Limpar de Manutenção

Remove ficheiros não rastreados do repositório. Isso pode ser resultado de bugs ou extensões com comportamento incorreto.

Forçar sincronização de Manutenção

Força a escrita de todos os textos nos ficheiros de tradução. Use-o quando os ficheiros do repositório ficarem fora de sincronia com o Weblate por algum motivo.

Traduzindo software a usar GNU gettext

GNU gettext é uma das ferramentas mais utilizadas para internacionalização de software livre. Ele fornece uma maneira simples, mas flexível, de localizar o software. Ele tem um ótimo suporte para plurais, pode adicionar mais contexto à cadeia traduzida e há várias ferramentas construídas em torno dele. Claro que tem um ótimo suporte no Weblate (veja a descrição do formato de ficheiro GNU gettext).

Nota

Se estiver prestes a usá-lo num software proprietário, consulte o licenciamento primeiro. Ele pode não ser adequado para si.

GNU gettext pode ser usado a partir de uma variedade de linguagens (C, Python, PHP, Ruby, JavaScript e muitos mais) e geralmente os frameworks de UI já vêm com algum suporte para isso. O uso padrão é através da chamada de função gettext(), que geralmente é apelidada de _() para tornar o código mais simples e fácil de ler.

Além disso, ele fornece a chamada pgettext() para fornecer contexto adicional para tradutores e ngettext() que pode lidar com tipos plurais conforme definido para o idioma alvo.

Como uma ferramenta amplamente difundida, ela possui muitos wrappers que tornam o uso dele realmente simples, ao invés de invocar manualmente o gettext descrito abaixo, quererá tentar um deles, por exemplo, o intltool.

Visão geral do fluxo de trabalho

O GNU gettext usa vários ficheiros para gerir a localização:

  • PACKAGE.pot contém cadeias extraídas do seu código-fonte, normalmente a usar xgettext ou alguns wrappers de alto nível como intltool.

  • LANGUAGE.po contém cadeias com uma tradução para um único idioma. Ele deve ser atualizado por msgmerge uma vez que o PACKAGE.pot seja atualizado. Pode criar novos ficheiros de idioma a usar msginit ou dentro do Weblate.

  • LANGUAGE.mo contém a representação binária de LANGUAGE.po e é usado no tempo de execução da aplicação. Normalmente não é mantido num controle de versão, mas gerado em tempo de compilação a usar msgfmt. No caso de desejar tê-lo no controle de versão, pode gerá-lo no Weblate a usar a extensão Gerar ficheiros MO.

No geral, o fluxo de trabalho do GNU gettext é assim:

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, shape=note, margin=0.1, height=0]; edge [fontname = "monospace", fontsize=10]; "Source code" -> "PACKAGE.pot" [label=" xgettext "]; "PACKAGE.pot" -> "LANGUAGE.po" [label=" msgmerge "]; "LANGUAGE.po" -> "LANGUAGE.mo" [label=" msgfmt "]; }

Amostra de programa

O programa simples em C a usar gettext pode ter a seguinte aparência:

#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int count = 1;
    setlocale(LC_ALL, "");
    bindtextdomain("hello", "/usr/share/locale");
    textdomain("hello");
    printf(
        ngettext(
            "Orangutan has %d banana.\n",
            "Orangutan has %d bananas.\n",
            count
        ),
        count
    );
    printf("%s\n", gettext("Thank you for using Weblate."));
    exit(0);
}

A extrair cadeias traduzíveis

Assim que tiver o código a usar as chamadas gettext, pode usar xgettext para extrair mensagens dele e armazená-las num .pot:

$ xgettext main.c -o po/hello.pot

Nota

Existem programas alternativos para extrair cadeias do código, por exemplo pybabel.

Isso cria um ficheiro de modelo, que pode usar para iniciar novas traduções (a usar msginit) ou atualizar as existentes após a mudança de código (usaria msgmerge para isso). O ficheiro resultante é simplesmente um ficheiro texto estruturado:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""

#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""

Cada linha msgid define uma cadeia a ser traduzido, a cadeia vazia especial no início é o cabeçalho do ficheiro a conter metadados sobre a tradução.

Iniciando nova tradução

Com o modelo no lugar, podemos começar nossa primeira tradução:

$ msginit -i po/hello.pot -l cs --no-translator -o po/cs.po
Created cs.po.

O recém-criado cs.po já tem algumas informações preenchidas. Mais importante ainda, ele obteve a definição de formas plurais apropriada para o idioma escolhido e pode ver que a quantidade de plurais mudou de acordo com isso:

# Czech translations for PACKAGE package.
# Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: 2015-10-23 11:02+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"

#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""

#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""

Este ficheiro é compilado num formato binário otimizado, o ficheiro .mo usado pelas funções do GNU gettext em tempo de execução.

A atualizar cadeias

Depois de adicionar mais textos ou alterar algumas cadeias no seu programa, executa novamente xgettext que gera novamente o ficheiro de modelo:

$ xgettext main.c -o po/hello.pot

Em seguida, pode atualizar ficheiros de tradução individuais para corresponder aos modelos recém-criados (isso inclui reordenar as cadeias para corresponder ao novo modelo):

$ msgmerge --previous --update po/cs.po po/hello.pot

Importando para o Weblate

Para importar tal tradução para o Weblate, tudo que precisa definir são os seguintes campos ao criar o componente (veja Configuração de componente para uma descrição detalhada dos campos):

Campo

Valor

Repositório do código-fonte

URL do repositório VCS com o seu projeto

Máscara de ficheiros

po/*.po

Modelo para novas traduções

po/hello.pot

Formato de ficheiro

Escolha ficheiro PO gettext

Novo idioma

Escolha Criar novo ficheiro de idioma

E é isso. Agora está pronto para começar a traduzir o seu software!

Veja também

Pode encontrar um exemplo de gettext com muitos idiomas no projeto Weblate Hello no GitHub: <https://github.com/WeblateOrg/hello>.

Traduzindo documentação a usar Sphinx

Sphinx é uma ferramenta para criar documentação bonita. Ela usa a sintaxe reStructuredText simples e pode gerar saída em muitos formatos. Se está a procurar um exemplo, esta documentação também é construída a usar-a. O companheiro muito útil para usar o Sphinx é o serviço Read the Docs, que irá construir e publicar a sua documentação gratuitamente.

Não vou me concentrar em escrever documentação em si, se precisar de orientação com isso, basta seguir as instruções no site do Sphinx. Assim que tiver a documentação pronta, traduzi-la é bastante fácil, pois o Sphinx vem com suporte para isso e é muito bem abordado na sua Internationalization. É uma questão de poucas diretivas de configuração e invocação da ferramenta sphinx-intl.

Se estiver a usar o serviço Read the Docs, pode começar a construir a documentação traduzida no Read the Docs. Localization of Documentation (localização de documentação) deles cobre praticamente tudo que precisa - criar outro projeto, definir o seu idioma e vinculá-lo do projeto principal como uma tradução.

Agora tudo que precisa é traduzir o conteúdo da documentação. O Sphinx gera um ficheiro PO para cada diretório ou ficheiro de nível superior, o que pode levar a muitos ficheiros para traduzir (a depender das configurações de gettext_compact). Pode importar o index.po no Weblate como um componente inicial e então configurar a extensão Descoberta de componentes para descobrir automaticamente todos os outros.

Configuração de componente

Nome do componente

Documentação

Máscara de ficheiros

docs/locales/*/LC_MESSAGES/index.po

Modelo para novas traduções

docs/locales/index.pot

Formato de ficheiro

ficheiro gettext PO

Marcadores de tradução

rst-text

Configuração da descoberta de componentes

Expressão regular para corresponder ficheiros de tradução

docs/locales/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

Personalizar nome do componente

Documentation: {{ component|title }}

Defina o ficheiro base para as novas traduções

docs/locales/{{ component }}.pot

Dica

Prefere que o Sphinx gere apenas um único ficheiro PO? Desde o Sphinx 3.3.0, pode fazer isso a usar:

gettext_compact = "docs"

Pode encontrar vários projetos de documentação a ser traduzidos a usar esta abordagem:

Traduzir HTML e JavaScript a usar CDN Weblate

A partir do Weblate 4.2, é possível exportar a localização para um CDN a usar a extensão CDN de localização JavaScript.

Nota

Este recurso é configurado no Hosted Weblate. Requer configuração adicional na sua instalação, veja LOCALIZE_CDN_URL e LOCALIZE_CDN_PATH.

Após a instalação no seu componente, ele enviará as traduções confirmadas (veja Commits adiados) para o CDN e elas podem ser usadas nas suas páginas da web para localizá-las.

Criar componente

Primeiro, precisa criar um componente monolingue que manterá as suas cadeias. Veja add-projects para instruções genéricas sobre isso.

Caso tenha um repositório existente para começar (por exemplo, aquele que contém ficheiro HTML), crie um ficheiro JSON vazio no repositório para o idioma de origem (consulte Idioma fonte), por exemplo locales/en.json. O conteúdo deve ser {} para indicar um objeto vazio. Depois de fazer isso, o repositório pode ser importado para o Weblate e pode começar com uma configuração adicional.

Dica

Caso tenha traduções existentes, pode colocá-las nos ficheiros JSON do idioma e esses serão usados no Weblate.

Para aqueles que não querem usar o repositório existente (ou não tem um), escolha Iniciar do zero ao criar o componente e escolher ficheiro JSON como formato de ficheiro (pode escolher qualquer formato monolíngue este ponto).

Configurar extensão de Weblate CDN

A extensão CDN de localização JavaScript fornece algumas opções de configuração.

Limiar de tradução

As traduções traduzidas acima desse limite serão incluídas no CDN.

Seletor de CSS

Configura quais cadeias dos documentos HTML são traduzíveis, veja Extração de cadeias para CDN Weblate e Localização de HTML a usar CDN Weblate.

Nome do cookie do idioma

Nome do cookie que contém o idioma selecionado pelo utilizador. Usado no trecho de JavaScript para Localização de HTML a usar CDN Weblate.

Extrair cadeias de ficheiros de HTML

Lista de ficheiros no repositório ou URLs onde Weblate irá procurar por cadeias traduzíveis e os oferecerá para uma tradução, veja Extração de cadeias para CDN Weblate.

Extração de cadeias para CDN Weblate

As cadeias de tradução devem estar presentes no Weblate. Pode gerí-los manualmente, usar API para criá-los ou listar ficheiros ou URLs a usar Extrair cadeias de ficheiros HTML e o Weblate irá extraí-los automaticamente. Os ficheiros devem apresentar no repositório ou conter URLs remotas que serão descarregadas e analisadas regularmente pelo Weblate.

A configuração predefinida para Seletor CSS extrai elementos com classe CSS l10n. Por exemplo, extrairia duas cadeias dos seguintes trechos:

<section class="content">
    <div class="row">
        <div class="wrap">
            <h1 class="section-title min-m l10n">Maintenance in progress</h1>
            <div class="page-desc">
                <p class="l10n">We're sorry, but this site is currently down for maintenance.</p>
            </div>
        </div>
    </div>
</section>

Caso não deseje modificar o código existente, também pode usar * como um seletor para processar todos os elementos.

Nota

No momento, apenas o texto dos elementos é extraído. Este complemento não suporta a localização de atributos de elementos ou elementos com filhos.

Localização de HTML a usar CDN Weblate

Para localizar um documento HTML, precisa carregar o script weblate.js:

<script src="https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/weblate.js" async></script>

Ao carregar, isto encontrará todos os elementos traduzíveis correspondentes automaticamente (com base na configuração Seletor CSS ) e substituirá o texto deles por uma tradução.

O idioma do utilizador é detetado do cookie configurado e volta aos idiomas preferidos do utilizador configurados no navegador.

O Nome do cookie de idioma pode ser útil para integração com outras aplicações (por exemplo, escolha django_language ao usar Django).

Localização de JavaScript

As traduções individuais são expostas como ficheiros JSON bilingues sob o CDN. Para buscar um, pode usar o seguinte código:

fetch(("https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/cs.json")
  .then(response => response.json())
  .then(data => console.log(data));

A lógica de localização real precisa ser implementada neste caso.

Alertas da componente de tradução

Mostra erros na configuração do Weblate ou no projeto de tradução de qualquer componente de tradução. Orientação sobre como resolver os problemas encontrados também é oferecida.

Atualmente, o seguinte é coberto:

  • Cadeias fonte duplicadas em ficheiros de tradução

  • Idiomas duplicados nas traduções

  • Falhas de mesclagem, atualização ou envio no repositório

  • Erros de análise nos ficheiros de tradução

  • Limites de cobrança (consulte Faturação)

  • Repositório contendo muitos commits para serem enviados ou em falta

  • Licenças ausentes

  • Erros ao executar extensão (veja Extensões)

  • Tradução monolingue mal configurada.

  • Configuração de componente quebrada

  • URLs quebradas

  • Capturas de ecrã não usadas

  • Código do idioma ambíguo

  • Nova base não utilizada nas configurações de componente

  • Máscara de ficheiro duplicada usada para componentes vinculados

Os alertas são atualizados diariamente, ou sobre mudanças relacionadas (por exemplo, quando Configuração de componente é alterada ou quando o repositório é atualizado).

Os alertas são listados em cada página do respectivo componente como Alertas. Se estiver a faltar, o componente limpa todas as verificações atuais. Os alertas não podem ser ignorados, mas desaparecerão assim que o problema subjacente for corrigido.

Um componente com cadeias e idiomas duplicados tem a seguinte aparência:

_images/alerts.png

Construir comunidade de tradutores

Lista de verificação de localização da comunidade

Novo na versão 3.9.

O Checklist de localização comunitária, que encontra-se no menu de cada componente, pode fornecer orientações para facilitar o processo de localização para os tradutores da comunidade.

_images/guide.png

A gerir traduções

Adicionando novas traduções

Novas cadeias podem ser disponibilizadas para tradução quando aparecem no ficheiro base, chamado Modelo para novas traduções (veja Configuração de componente). Se o seu formato de ficheiro não exige esse tipo de ficheiro, como é o caso da maioria dos fluxos de tradução monolingues, pode começar com ficheiros em branco).

Novos idiomas podem ser adicionados imediatamente quando solicitados por um utilizador no Weblate, ou uma notificação será enviada aos administradores do projeto para aprovação e adição manual. Isso pode ser feito a usar Adicionar nova tradução em Configuração de componente.

Nota

Se adicionar um ficheiro de idioma no repositório remoto conectado, a respectiva tradução será adicionada ao componente quando o Weblate atualizar o repositório local.

Mais informações sobre as configurações de atualização do repositório podem ser encontradas em Atualizar repositórios.

Removendo traduções existentes

Idiomas, componentes, ou os projetos em que estão, podem ser removidos (apagados do Weblate e do repositório remoto se usado) do menu GerirRemoção de cada projeto, componente ou idioma.

Iniciar a ação Remoção mostra a lista de componentes a serem removidos. Deve inserir o slug do objeto para confirmar a remoção. O slug, ou URL amigável, é o nome do caminho do projeto, da linguagem ou do componente conforme pode ser visto na URL.

Se deseja remover apenas algumas cadeias específicas, existem as seguintes maneiras:

  • Manualmente no ficheiro fonte. Eles também serão removidos do projeto de tradução após a atualização do repositório do Weblate.

Novo na versão 4.5.

  • Na UI do Weblate através do botão FerramentasRemover ao editar a cadeia. Isso tem diferenças entre os formatos de ficheiro. Veja Gerir cadeias

Nota

Se apagar um ficheiro de idioma no repositório remoto conectado, a tradução respetiva será removida do componente quando o Weblate atualizar o repositório local.

Mais informações sobre as configurações de atualização do repositório podem ser encontradas em Atualizar repositórios.

Variantes de cadeias

As variantes são úteis para agrupar várias cadeias, de modo que os tradutores possam ver todas as variantes do texto num só lugar.

Dica

Abreviaturas (formas abreviadas, contrações) são um bom exemplo de variantes.

Variantes baseadas em chaves automatizadas

Novo na versão 3.11.

Pode definir uma expressão regular para agrupar as cadeias com base na chave das traduções monolingues no Configuração de componente:

_images/variants-settings.png

No caso de Chave corresponder à expressão, a parte correspondente é removida para gerar a chave raiz da variante. Então, todas as cadeias com a mesma chave raiz tornam-se parte de um único grupo de variantes, a incluir também a cadeia com a chave que corresponde exatamente à chave raiz.

A tabela a seguir lista alguns exemplos de uso:

Caso de uso

Variante de expressão regular

Chaves de tradução correspondentes

Identificação de sufixo

(Short|Min)$

monthShort, monthMin, month

Identificação em linha

#[SML]

dial#S.key, dial#M.key, dial.key

Variantes manuais

Novo na versão 4.5.

Pode vincular manualmente cadeias específicas a usar o marcador variant:SOURCE. Isso pode ser útil para traduções bilingues que não possuem chaves para agrupar cadeias automaticamente, ou para agrupar cadeias cujas chaves não são correspondentes, mas devem ser consideradas juntas durante a tradução.

A variante adicional para uma cadeia também pode ser adicionada a usar Ferramentas durante a tradução (quando Gerir cadeias está ativado):

_images/glossary-tools.png

Nota

Nesse caso, a cadeia fonte da variante tem, no máximo, 768 caracteres. Esta é uma limitação técnica devido à compatibilidade com o banco de dados MySQL.

Variantes durante a tradução

A variante é agrupada posteriormente ao traduzir:

_images/variants-translate.png

Etiquetas de cadeia

Divide as cadeias de tradução do componente em categorias por texto e cor na configuração do projeto.

_images/labels.png

Dica

As etiquetas podem ser atribuídas a unidades em Informações adicionais sobre cadeias fonte por edição em massa, ou a usar a extensão Edição em massa.

A rever cadeias

Relatórios de atividade

Os relatórios de atividades verificam as alterações das traduções, para projetos, componentes ou utilizadores individuais.

Os relatórios de atividades de um projeto ou componente podem ser acessados em seu painel, na guia Info.

_images/activity.png

Mais relatórios estão acessíveis na guia Insights, a selecionar Relatórios de tradução.

A atividade do utilizador atualmente conectado pode ser vista a clicar em Perfil no menu do utilizador no canto superior direito.

Verificações de cadeia fonte

Existem muitas Verificações de qualidade, algumas delas focam em melhorar a qualidade dos cadeias fonte. Muitas verificações com falha sugerem uma dica para tornar as cadeias fonte mais fáceis de traduzir. Todos os tipos de verificação de fonte com falha são exibidos na guia Fonte de cada componente.

Verificações da cadeia de tradução

Verificações de cadeia de tradução com falha errónea indicam que o problema é com a cadeia fonte. Os tradutores às vezes corrigem erros na tradução em vez de relatá-los - um exemplo típico é a falta de um ponto final no final de uma frase.

A revisão de todas as verificações com falha pode dar um feedback valioso para melhorar as cadeias fonte dele. Para tornar a revisão dos textos fonte mais fácil, o Weblate cria automaticamente uma tradução para o idioma fonte e mostra as verificações de nível de fonte lá:

_images/source-review.png

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

A lista detalhada é uma visão geral por idioma:

_images/source-review-detail.png

A receber feedback sobre a cadeia fonte

Os tradutores podem comentar tanto sobre a tradução quanto sobre as cadeias fonte. Cada Configuração de componente pode ser configurada para receber tais comentários num endereço de e-mail (veja Endereço para reportar erros na cadeia fonte) e usar a lista de discussão de programadores é geralmente a melhor abordagem. Dessa forma, pode ficar de olho quando surgirem problemas na tradução, cuidar deles e corrigi-los rapidamente.

Veja também

Comentários

Promovendo a tradução

O Weblate fornece widgets para compartilhar no seu site ou outras fontes para promover o projeto de tradução. Ele também tem uma bela página de boas-vindas para novos colaboradores, a fornecer informações básicas sobre a tradução. Além disso, pode compartilhar informações sobre tradução a usar o Facebook ou Twitter. Todas essas possibilidades podem ser encontradas na guia Compartilhar:

_images/promote.png

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

_images/engage.png

Relatório de progresso da tradução

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

_images/reporting.png

Várias ferramentas de relatório estão disponíveis nesta página e todas podem produzir saída em HTML, reStructuredText ou JSON. Os primeiros dois formatos são adequados para incorporar estatísticas na documentação existente, enquanto JSON é útil para processamento posterior dos dados.

Créditos do tradutor

Gera um documento utilizável para creditar tradutores – classificado por idioma e lista todos os colaboradores para um determinado idioma:

* Czech

    * John Doe <john@example.com> (5)
    * Jane Doe <jane@example.com> (1)

* Dutch

    * Jane Doe <jane@example.com> (42)

Dica

O número entre parênteses indica a quantidade de contribuições em determinado período.

Estatísticas do colaborador

Gera a quantidade de palavras e cadeias traduzidos por nome do tradutor:

======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
Name                                     Email                                    Count total              Source words total       Source chars total       Target words total       Target chars total       Count new                Source words new         Source chars new         Target words new         Target chars new         Count approved           Source words approved    Source chars approved    Target words approved    Target chars approved    Count edited             Source words edited      Source chars edited      Target words edited      Target chars edited
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
John Done                                john@example.com                                                1                        3                       24                        3                       21                        1                        3                       24                        3                       21                        0                        0                        0                        0                        0                        0                        0                        0                        0                        0
Jane Done                                jane@example.com                                                2                        5                       25                        4                       28                        2                        3                       24                        3                       21                        0                        0                        0                        0                        0                        0                        0                        0                        0                        0
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================

Isso pode ser útil se paga os seus tradutores com base na quantidade de trabalho, pois fornece várias estatísticas sobre o trabalho dos tradutores.

Todas as estatísticas estão disponíveis em três variantes:

Total

Quantidade geral de cadeias editados.

New

Cadeias recentemente traduzidos que não tinham tradução antes.

Approved

Contagem para aprovações de cadeias no fluxo de trabalho de revisão (consulte Revisores dedicados).

Edited

Cadeias editadas que tiveram tradução antes.

As seguintes métricas estão disponíveis para cada um:

Count

Quantidade de cadeias.

Edits

Quantidade de edições na cadeia, medido na distância Damerau–Levenshtein.

Source words

Quantidade de palavras na cadeia fonte.

Source characters

Quantidade de caracteres na cadeia fonte.

Target words

Quantidade de palavras na cadeia traduzida.

Target characters

Quantidade de caracteres na cadeia traduzida.

Contribuir ao Weblate

Há dezenas de maneiras de melhorar o Weblate. Pode escolher uma com a qual se sente confortável, seja codificação, design gráfico, documentação, patrocínio ou uma ideia:

Traduzir o Weblate

O Weblate está a ser continuamente traduzido a usar o próprio Weblate. Sinta-se à vontade para participar do esforço de disponibilizar o Weblate na maior quantidade possível de idiomas humanos. Isso traz o Weblate para mais perto dos utilizadores deles!

Se encontrar um possível erro na cadeia fonte, pode marcá-lo com um comentário no editor Weblate. Dessa forma, pode ser discutido e corrigido. Se tiver certeza, também pode clicar na ligação na secção Localização do texto fonte e enviar um PR com a sua correção.

Contribua à documentação do Weblate

É bem-vindo para melhorar a página de documentação de sua escolha. Faça isso facilmente a clicar no botão Editar no GitHub no canto superior direito da página.

Respeite essas diretrizes ao escrever:

  1. Não remova parte da documentação se ela for válida.

  2. Use uma linguagem clara e de fácil compreensão. Está a escrever documentos técnicos, não um poema. Nem todos os leitores de documentos são falantes nativos, fique atento.

  3. Não tenha medo de perguntar se não tem certeza. Se tiver que perguntar sobre algum recurso durante a edição, não altere os documentos dele antes de ter a resposta. Isso significa: muda ou pergunta. Não faça os dois ao mesmo tempo.

  4. Verifique as suas alterações a executar as ações descritas ao seguir os documentos.

  5. Envie PR com alterações em pequenos pedaços para tornar mais fácil e rápido revisar e mesclar.

  6. Se quiser reescrever e alterar a estrutura de um grande artigo, faça isso em duas etapas:

    1. Reescreva

    2. Depois que a reescrita for revisada, polida e mesclada, altere a estrutura dos parágrafos em outro PR.

Extending built-in language definitions

As definições de idioma estão no repositório weblate-language-data repository.

You are welcome to add missing language definitions to languages.csv, other files are generated from that file.

Discussões do Weblate

Se tiver uma ideia e não tiver certeza se ela é adequada para um problema, não se preocupe. Pode entrar na comunidade de discussões do GitHub.

Financiar o desenvolvimento do Weblate

Pode impulsionar o desenvolvimento do Weblate na página de doação. Os fundos coletados lá são usados para permitir hospedagem de grátis para projetos de software livre e o desenvolvimento adicional do Weblate. Por favor, verifique a página de doação para obter opções, como metas de financiamento e as recompensas que obtém como um financiador orgulhoso.

Apoiadores que financiaram o Weblate

Lista de apoiadores do Weblate:

Gostaria de estar na lista? Veja as opções em Doar ao Weblate.

Comea çar a contribuir código para o Weblate

Entenda o código-fonte do Weblate a passar por Código-fonte do Weblate, Frontend do Weblate e Componentes internos do Weblate.

Comea çar com a base de código

Familiarize-se com a base de código do Weblate, a dar uma olhada nos bugs etiquetados como good first issue.

Execução local de Weblate

A abordagem mais confortável para começar a desenvolver Weblate é seguir …/admin/install/source. Isso lhe dará um virtualenv com fontes editáveis do Weblate.

  1. Clone o código-fonte do Weblate:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. Crie um virtualenv:

    virtualenv .venv
    .venv/bin/activate
    
  3. Instale Weblate (para isso, vai precisar de algumas dependências do sistema, veja …/admin/install/source):

    pip install -e .
    
  1. Instale todas as dependências úteis para o desenvolvimento:

    pip install -r requirements-dev.txt
    
  2. Inicie um servidor de desenvolvimento:

    weblate runserver
    
  3. Dependendo da sua configuração, também quereria inciar workers do Celery:

    ./weblate/examples/celery start
    
  4. Para executar um teste (veja Teste local para mais detalhes):

    . scripts/test-database
    ./manage.py test
    

Executando Weblate localmente no Docker

Se tiver Docker e docker-compose instalados, pode pôr para funcionar o ambiente de desenvolvimento simplesmente a executar:

./rundev.sh

Isso irá criar uma imagem do Docker de desenvolvimento e iniciá-lo. Weblate está a ser executado em <http://127.0.0.1:8080/> e pode entrar como o utilizador admin, a usar admin como a palavra-passe. A nova instalação está vazia, então quererá seguir Adicionando projetos e componentes de tradução.

Os ficheiros Dockerfile e docker-compose.yml para isso estão localizados no diretório dev-docker.

The script also accepts some parameters, to execute tests, run it with the test parameter and then specify any test parameters, for example running only tests in the weblate.machine module:

./rundev.sh test --failfast weblate.machine

Nota

Tenha cuidado para que os seus contentores Docker estejam prontos e em execução antes de fazer os testes. Pode verificar isso a executar o comando docker ps.

Para exibir os logs:

./rundev.sh logs

Para parar os contentores em segundo fundo, execute:

./rundev.sh stop

A execução do script sem argumentos vai recriar o contentor Docker e reiniciá-lo.

Nota

Esta não é uma configuração adequada para a produção, pois inclui vários hacks que são inseguros, mas que tornam o desenvolvimento mais fácil.

Codificando Weblate com PyCharm

PyCharm é uma IDE conhecida para Python, aqui estão algumas diretrizes para lhe ajudar a configurar o seu projeto Weblate nele.

Considerando que acabou de clonar o repositório GitHub, para uma pasta, basta abri-la com o PyCharm. Assim que a IDE estiver aberta, o primeiro passo é especificar o interpretador que deseja:

_images/pycharm-1.png

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

_images/pycharm-2.png

Não se esqueça de instalar as dependências quando o interpretador estiver configurado: faça isso através do console (o console do IDE vai usar diretamente o seu virtualenv por padrão, ou através da interface quando receber um aviso sobre dependências em falta.

O segundo passo é definir a informação certa para usar o Django nativo dentro do PyCharm: a ideia é ser capaz de acionar imediatamente os testes unitários no IDE. Para isso, precisa especificar o caminho raiz do projeto Django e o caminho para as suas configurações:

_images/pycharm-3.png

Tenha cuidado, Django project root é a raiz real do repositório, não o subdiretório do Weblate. Sobre as configurações, poderia usar o weblate/settings_test.py do repositório, mas pode criar a sua própria configuração e configurá-la lá.

O último passo é executar o servidor e pôr pontos de interrupção no código para poder depurá-lo. Isto é feito a criar uma nova configuração do Django Server:

_images/pycharm-4.png _images/pycharm-5.png

Dica

Tenha cuidado com a propriedade chamada No reload: ela evita do servidor ser recarregado automaticamente quando modificar os ficheiros. Isso permite que os pontos de interrupção de depuração existentes persistam, quando eles normalmente seriam descartados no recarregamento do servidor.

Inicializar a sua instância de desenvolvimento

Quererá usar import_demo para criar traduções de demonstração e createadmin para criar um utilizador administrador.

Código-fonte do Weblate

O Weblate é desenvolvido no GitHub. É bem-vindo para criar um fork do código e abrir pull requests. Patches em qualquer outra forma também são bem-vindos.

Veja também

Confira Componentes internos do Weblate para ver como o Weblate se parece por dentro.

Princípios de Segurança por Design

Qualquer código para Weblate deve ser escrito com Princípios de Segurança por Design (inglês) em mente.

Padrão de codificação

O código deve seguir as diretrizes de codificação PEP-8 e deve ser formatado a usar o formatador de código black.

Para verificar a qualidade do código, pode usar o :programa:`flake8`, os plugins recomendados estão listados em .pre-commit-config.yaml e a configuração dele está em setup.cfg.

A abordagem mais fácil para impor tudo isso é instalar pre-commit. O repositório do Weblate contém a configuração para verificar se os ficheiros do commit estão sãos. Depois de instalá-lo (ele já está incluído no requirements-lint.txt), ative-o executando pré-commit install na sua cópia do Weblate. Desta forma, todas as suas alterações serão verificadas automaticamente.

Também pode acionar a verificação manualmente, para verificar todos os ficheiros execute:

pre-commit run --all

Depuração do Weblate

Os bugs podem se comportar como falhas na aplicação ou como um mau comportamento. É bem-vindo a coletar informações sobre qualquer problema desse tipo e enviá-las para o rasteador de problemas.

Modo de depuração

Ao ligar o modo de depuração, as exceções serão mostradas no navegador. Isto é útil para problemas de depuração na interface web, mas não é adequado para o ambiente de produção, pois tem consequências de desempenho e pode vazar dados privados.

Logs do Weblate

Weblate pode produzir registos (logs) detalhados do que está a acontecer em segundo fundo. Na configuração padrão, ele usa syslog e isso faz o log aparecer em /var/log/messages ou /var/log/syslog (a depender da configuração do seu daemon syslog).

O processo de Celery (veja Tarefas de fundo a usar o Celery) normalmente produz também registos próprios. O exemplo de configurações de todo o sistema regista em vários ficheiros em /var/log/celery/.

Os contentores Docker registam a sua saída (como é habitual no mundo Docker), por isso pode olhar para os logs a utilizar docker-compose logs.

Veja também

Amostra de configuração contém uma configuração de LOGGING.

Não a processar tarefas de segundo plano

Muitas coisas acontecem em segundo plano, workers do Celery. Caso coisas como o envio de e-mails ou remoção de componentes não funcionem, pode haver algum problema com isso.

Coisas a verificar neste caso:

Não a receber e-mails do Weblate

Pode verificar se o e-mail de saída está a funcionar corretamente a usar o comando de gestão sendtestemail (veja Invocando comandos de gestão para instruções sobre como invocá-lo em diferentes ambientes) ou a usar Interface de gestão sob a guia Ferramentas.

Estes enviam e-mails diretamente, para que isto verifique se a sua configuração SMTP está correta (veja Configuração de e-mail de saída). A maioria dos e-mails da Weblate são, no entanto, enviados em segundo plano e pode haver alguns problemas com o Celery envolvido também, veja Não a processar tarefas de segundo plano para depuração disso.

Análise de falhas de aplicação

Caso o aplicação falhar, é útil recolher o máximo de informação possível sobre a falha. A maneira mais fácil de conseguir isso é a usar serviços de terceiros que podem coletar tais informações automaticamente. Pode encontrar informações sobre como configurar isso em Coletando relatórios de erros.

Falhas silenciosas

Muitas tarefas são descarregadas para o Celery para processamento em segundo plano. As falhas não são exibidas na interface do utilizador, mas aparecem nos logs do Celery. A configuração em Coletando relatórios de erros ajuda a perceber essas falhas mais facilmente.

Problemas de desempenho

Caso o Weblate tenha um mau desempenho em alguma situação, por favor recolha os registos relevantes a mostrar o problema e qualquer coisa que possa ajudar a descobrir onde o código pode ser melhorado.

Caso alguns pedidos demorem muito tempo sem nenhuma indicação, pode querer instalar dogslow juntamente com Coletando relatórios de erros e obter tracebacks detalhados na ferramenta de coleta de erros.

Componentes internos do Weblate

Nota

Este capítulo lhe dará uma visão geral básica dos componentes internos do Weblate.

Weblate deriva a maior parte da estrutura de código dele e é baseado no Django.

Estrutura de diretórios

Visão geral rápida da estrutura de diretórios do repositório principal Weblate:

docs

Código-fonte desta documentação, que pode ser construída a usar Sphinx.

dev-docker

Código do Docker para executar o servidor de desenvolvimento, veja Executando Weblate localmente no Docker.

weblate

Código-fonte do Weblate como uma aplicação Django, veja Componentes internos do Weblate.

weblate/static

Ficheiro de cliente (CSS, Javascript e imagens), veja Frontend do Weblate.

Módulos

O Weblate consiste em vários aplicações Django (alguns opcionais, veja Módulos opcionais do Weblate):

accounts

Conta de utilizador, perfis e notificações.

addons

Extensões para ajustar o comportamento do Weblate, veja Extensões.

api

API baseada no framework Django REST.

auth

Autenticação e permissões.

billing

O módulo opcional de Faturação.

checks

Módulo de Verificações de qualidade de texto de tradução.

fonts

Módulo de verificações de renderização de fonte.

formats

Camada de abstração de formato de ficheiro baseada no translate-toolkit.

gitexport

O módulo opcional Exportador git.

lang

Módulo que define idioma e modelos plurais.

legal

O módulo opcional Legal.

machinery

Integração de serviços de tradução de máquina.

memory

Memória de tradução embutida, veja Memória de Tradução.

screenshots

Gestão de capturas de ecrã e módulo OCR.

trans

Módulo principal que trata das traduções.

utils

Várias utilidades de ajuda.

vcs

Abstração do sistema de controle de versão.

wladmin

Personalização da interface administrativa do Django.

Desenvolvendo extensões

Extensões são uma forma de personalizar o fluxo de trabalho de localização no Weblate.

class weblate.addons.base.BaseAddon(storage=None)
classmethod can_install(component, user)

Verifica se a extensão é compatível com o componente dado.

configure(settings)

Salva a configuração.

daily(component)

Gancho acionado diariamente.

classmethod get_add_form(user, component, **kwargs)

Retorna um formulário de configuração para adicionar uma nova extensão.

get_settings_form(user, **kwargs)

Retorna um formulário de configuração para esta extensão.

post_add(translation)

Gancho acionado após nova tradução ser adicionada.

post_commit(component)

Gancho acionado após alterações terem feito um commit para o repositório.

post_push(component)

Gancho acionado após repositório ter o push feito para o upstream.

post_update(component, previous_head: str, skip_push: bool)

Gancho acionado após o repositório ser atualizado a partir do upstream.

Parâmetros
  • previous_head (str) – HEAD do repositório antes da atualização, pode estar vazio na clonagem inicial.

  • skip_push (bool) – Se a operação de extensão deve ignorar o push de alterações para o upstream. Normalmente você pode passar isso para métodos subjacentes como commit_and_push ou commit_pending.

pre_commit(translation, author)

Gancho acionado antes das alterações terem feito um commit para o repositório.

pre_push(component)

Gancho acionado antes do repositório ter feito push para o upstream.

pre_update(component)

Hook acionado antes do repositório ser atualizado a partir do upstream.

save_state()

Salva informações do estado da extensão.

stay_on_create = False

Classe base para as extensões do Weblate.

store_post_load(translation, store)

Gancho acionado após um ficheiro ser analisado.

Ele recebe uma instância de uma classe de formato de ficheiro como um argumento.

Isso é útil para modificar os parâmetros de classe de formato de ficheiro, por exemplo, ajustar como o ficheiro será salvo.

unit_pre_create(unit)

Gancho acionado antes que a nova unidade seja criada.

Aqui está um exemplo de extensão:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#


from django.utils.translation import gettext_lazy as _

from weblate.addons.base import BaseAddon
from weblate.addons.events import EVENT_PRE_COMMIT


class ExampleAddon(BaseAddon):
    # Filter for compatible components, every key is
    # matched against property of component
    compat = {"file_format": {"po", "po-mono"}}
    # List of events add-on should receive
    events = (EVENT_PRE_COMMIT,)
    # Add-on unique identifier
    name = "weblate.example.example"
    # Verbose name shown in the user interface
    verbose = _("Example add-on")
    # Detailed add-on description
    description = _("This add-on does nothing it is just an example.")

    # Callback to implement custom behavior
    def pre_commit(self, translation, author):
        return

Frontend do Weblate

O frontend atualmente é construído a usar Bootstrap, jQuery e algumas bibliotecas de terceiros.

Navegadores suportados

Weblate oferece suporte às versões mais recentes e estáveis de todos os principais navegadores e plataformas.

Navegadores alternativos que usam a versão mais recente do WebKit, Blink ou Gecko, seja diretamente ou por meio da API de visualização da web da plataforma, não são explicitamente suportados. No entanto, o Weblate deve (na maioria dos casos) ser exibido e funcionar corretamente nesses navegadores também.

Navegadores mais antigos podem funcionar, mas alguns recursos podem ser limitados.

Gestão de dependências

The yarn package manager is used to update third party libraries. The configuration lives in scripts/yarn and there is a wrapper script scripts/yarn-update to upgrade the libraries, build them and copy to correct locations in weblate/static/vendor, where all third partly frontend code is located. The Weblate specific code should be placed directly in weblate/static or feature specific subdirectories (for example weblate/static/editor).

Adicionar uma nova biblioteca de terceiros geralmente consiste em:

# Add a yarn package
yarn --cwd scripts/yarn add PACKAGE
# Edit the script to copy package to the static folder
edit scripts/yarn-update
# Run the update script
./scripts/yarn-update
# Add files to git
git add .

Estilo de codificação

Weblate depende do Prettier para a formatação do código para ficheiros JavaScript e CSS.

Também usamos ESLint para verificar o código JavaScript.

Tradução

Se precisar de qualquer texto visível para o utilizador no código do frontend, ele deve ser localizável. Na maioria dos casos, tudo que precisa é envolver o seu texto dentro da função gettext, mas existem recursos mais complexos disponíveis:

document.write(gettext('this is to be translated'));

var object_count = 1 // or 0, or 2, or 3, ...
s = ngettext('literal for the singular case',
        'literal for the plural case', object_count);

fmts = ngettext('There is %s object. Remaining: %s',
        'There are %s objects. Remaining: %s', 11);
s = interpolate(fmts, [11, 20]);
// s is 'There are 11 objects. Remaining: 20'

Ícones

Weblate atualmente usa ícones de design de material. Caso esteja a procurar por um novo símbolo, verifique Material Design Icons ou Material Design Resources.

Além disso, existe scripts/optimize-svg para reduzir o tamanho do SVG, já que a maioria dos ícones são embutidos no HTML para permitir estilização dos caminhos.

Relatando problemas no Weblate

O rastreador de problemas do Weblate está hospedado no GitHub.

Sinta-se à vontade para relatar quaisquer problemas que tenha ou sugerir melhorias para o Weblate lá. Existem vários modelos preparados para lhe orientar confortavelmente durante o relatório de problemas.

Se o que encontrou é um problema de segurança no Weblate, consulte a secção Problemas de segurança abaixo.

Se não tem certeza sobre o seu relatório de bug ou solicitação de recurso, pode tentar Discussões do Weblate.

Problemas de segurança

A fim de dar à comunidade tempo para responder e fazer upgrade, recomendamos enfaticamente que relate todos os problemas de segurança em particular. O HackerOne é usado para lidar com problemas de segurança e pode ser relatado diretamente em HackerOne. Depois de enviá-lo lá, a comunidade terá tempo limitado, mas suficiente para resolver o incidente.

Como alternativa, relate para security@weblate.org, que termina no HackerOne também.

Se não quiser usar o HackerOne, por qualquer motivo, pode enviar o relatório por e-mail para michal@cihar.com. Pode optar por criptografá-lo a usar esta chave PGP 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D. Também pode obter a chave PGP em Keybase.

Nota

O Weblate depende de componentes de terceiros para muitas coisas. Caso encontre uma vulnerabilidade a afetar um desses componentes em geral, relate-o diretamente ao respectivo projeto.

Alguns deles são:

Conjunto de testes e integração contínua do Weblate

Existem conjuntos de teste para a maior parte do código atual, aumente a cobertura a adicionar casos de teste para qualquer nova funcionalidade e verifique se funciona.

Integração contínua

Os resultados do teste atual encontram-se em GitHub Actions e a cobertura é relatada em Codecov.

Existem vários trabalhos para verificar diferentes aspectos:

  • Testes de unidade

  • Construção de documentação e ligações externas

  • Testes de migração de todas as versões com suporte

  • Linting de código

  • Verificação de configuração (garante que os ficheiros dist gerados não percam nada e possam ser testados)

A configuração do CI está no diretório .github/workflows. Ele usa muito scripts auxiliares armazenados no diretório ci. Os scripts também podem ser executados manualmente, mas eles requerem várias variáveis de ambiente, principalmente a definir o ficheiro de configurações do Django para usar e conexão com o banco de dados. A definição de exemplo disso está em scripts/test-database:

# Simple way to configure test database from environment

# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}

# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1

# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test

A execução simples pode ser semelhante a:

. scripts/test-database
./ci/run-migrate
./ci/run-test
./ci/run-docs

Teste local

Para executar um conjunto de testes localmente, use:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

Dica

Precisará de um servidor de banco de dados (PostgreSQL) a ser usado para os testes. Por padrão, o Django cria um banco de dados separado para executar testes com o prefixo test_, então no caso que as suas configurações estarem configuradas para usar weblate, os testes usarão o banco de dados test_weblate. Veja Configuração de banco de dados para o Weblate para instruções de configuração.

O weblate/settings_test.py é usado no ambiente CI também (veja Integração contínua) e pode ser ajustado a usar variáveis de ambiente:

# Simple way to configure test database from environment

# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}

# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1

# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test

Antes de executar os testes, deve coletar ficheiros estáticos, pois alguns testes contam com a presença deles:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic

Também pode especificar testes individuais para executar:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport

Dica

Os testes também podem ser executados dentro de um contentor Docker do programador, consulte Executando Weblate localmente no Docker.

Veja também

Veja :doc:`django:topics/testing/index`para mais informações sobre a execução e escrita de testes para Django.

Esquemas de dados

Weblate usa JSON Schema para definir o layout de ficheiros JSON externos.

Esquema de memória de tradução Weblate

https://weblate.org/schemas/weblate-memory.schema.json

tipo

array

items

O item de memória de tradução

tipo

objeto

propriedades

  • categoria

A categoria de cadeia

1 is global, 2 is shared, 10000000+ are project specific, 20000000+ are user specific

tipo

integer

exemplos

1

minimum

0

predefinido

1

  • origem

The String Origin

Nome do ficheiro ou componente

tipo

cadeia

exemplos

test.tmx

projeto/componente

predefinido

  • source

A cadeia fonte

tipo

cadeia

exemplos

Olá

minLength

1

predefinido

  • idioma_ fonte

O idioma fonte

ISO 639-1 / ISO 639-2 / IETF BCP 47

tipo

cadeia

exemplos

en

pattern

^[^ ]+$

predefinido

  • target

A cadeia de destino

tipo

cadeia

exemplos

Ahoj

minLength

1

predefinido

  • idioma_de_destino

O idioma de destino

ISO 639-1 / ISO 639-2 / IETF BCP 47

tipo

cadeia

exemplos

cs

pattern

^[^ ]+$

predefinido

additionalProperties

False

definições

Exportação de dados de utilizadores do Weblate

https://weblate.org/schemas/weblate-userdata.schema.json

tipo

objeto

propriedades

  • basic

Básico

tipo

objeto

propriedades

  • nome do utilizador

Nome do utilizador

tipo

cadeia

exemplos

administrador

predefinido

  • nome_completo

Nome completo

tipo

cadeia

exemplos

Admin Weblate

predefinido

  • email

E-mail

tipo

cadeia

exemplos

noreply@example.com

predefinido

  • data_de_adesão

Data de adesão

tipo

cadeia

exemplos

2019-11-18T18:53:54.862Z

predefinido

  • perfil

Perfil

tipo

objeto

propriedades

  • idioma

Idioma

tipo

cadeia

exemplos

cs

pattern

^.*$

predefinido

  • sugerido

Quantidade de cadeias fonte

tipo

integer

exemplos

1

predefinido

0

  • traduzido

Quantidade de cadeias traduzidas

tipo

integer

exemplos

24

predefinido

0

  • enviado

Quantidade de capturas de ecrã enviadas

tipo

integer

exemplos

1

predefinido

0

  • hide_completed

Ocultar as traduções completas no painel

tipo

boolean

exemplos

False

predefinido

True

  • secondary_in_zen

Mostrar traduções secundárias no modo Zen

tipo

boolean

exemplos

True

predefinido

True

  • hide_source_secondary

Ocultar a fonte se existir uma tradução secundária

tipo

boolean

exemplos

False

predefinido

True

  • hiperligação_do_editor

Hiperligação_do_editor

tipo

cadeia

exemplos

pattern

^.*$

predefinido

  • modo_de_tradução

Modo do editor de tradução

tipo

integer

exemplos

0

predefinido

0

  • zen_mode

Modo de editor Zen

tipo

integer

exemplos

0

predefinido

0

  • carateres_especiais

Carateres especiais

tipo

cadeia

exemplos

pattern

^.*$

predefinido

  • vista_do_painel

Vista predefinida do painel

tipo

integer

exemplos

1

predefinido

0

  • dashboard_component_list

Lista predefinida de componentes

predefinido

null

anyOf

tipo

null

tipo

integer

  • idiomas

Idiomas traduzidos

tipo

array

predefinido

items

Código do idioma

tipo

cadeia

exemplos

cs

pattern

^.*$

predefinido

  • idiomas_secundários

Idiomas secundários

tipo

array

predefinido

items

Código do idioma

tipo

cadeia

exemplos

sk

pattern

^.*$

predefinido

  • observado

Projetos vigiados

tipo

array

predefinido

items

Slug do projeto

tipo

cadeia

exemplos

weblate

pattern

^.*$

predefinido

  • registo de auditoria

Registo de auditoria

tipo

array

predefinido

items

Items

tipo

objeto

propriedades

  • endereço

Endereço IP

tipo

cadeia

exemplos

127.0.0.1

pattern

^.*$

predefinido

  • agente_do_utilizador

Agente do utilizador

tipo

cadeia

exemplos

PC / Linux / Firefox 70.0

pattern

^.*$

predefinido

  • timestamp

Timestamp

tipo

cadeia

exemplos

2019-11-18T18:58:30.845Z

pattern

^.*$

predefinido

  • atividade

Atividade

tipo

cadeia

exemplos

sessão

pattern

^.*$

predefinido

definições

Criando lançamento do Weblate

Agenda de lançamentos

O Weblate tem um ciclo de lançamento de dois meses para lançamentos (x.y). Geralmente, eles são seguidos por várias versões de correções de bugs para corrigir problemas que ocorrem neles (x.y.z).

A mudança na versão principal indica que o processo de atualização não pode ignorar esta versão - sempre deve atualizar para x.0 antes de atualizar para versões x.y superiores.

Veja também

Atualizando o Weblate

Planejamento de lançamento

Os recursos para os próximos lançamentos são coletados a usar marcos do GitHub, pode ver nosso roteiro em <https://github.com/WeblateOrg/weblate/milestones>.

Processo de lançamento

Coisas para verificar antes de fazer um lançamento:

  1. Verificar novos idiomas traduzidos a usar ./scripts/list-translated-languages.

  2. Definir a versão final a usar ./scripts/prepare-release.

  3. Certificar-se de que as capturas de ecrã estejam atualizadas a usar make -C docs update-screenshots.

  4. Junte todas as traduções pendentes a usar wlc push; git remote update; git merge origin/weblate

Realizar o lançamento:

  1. Criar um lançamento a usar ./scripts/create-release --tag (veja abaixo os requisitos).

Etapas manuais pós-lançamento:

  1. Atualizar a imagem Docker.

  2. Fechar o marco do GitHub.

  3. Assim que a imagem Docker for testada, adicionar uma tag e fazer o push dela.

  4. Atualizar um chart Helm para a nova versão.

  5. Incluir a nova versão em .github/workflows/migrations.yml para cobri-la nos testes de migração.

  6. Incrementar a versão nas ligações de descarregas do site.

  7. Incrementar a versão no repositório a usar ./scripts/set-version.

Para criar tags a usar o script ./scripts/create-release, precisará do seguinte:

  • GnuPG com chave privada usada para assinar o lançamento

  • Acesso por push a repositórios git Weblate (ele envia tags)

  • Ferramenta hub configurada e acesso para criar lançamentos no repositório Weblate

  • Acesso SSH ao servidor de descarregas Weblate (as descarregas do site são copiados lá)

Segurança e privacidade

Dica

No Weblate, a segurança mantém um ambiente que valoriza a privacidade dos nossos utilizadores.

O desenvolvimento do Weblate segue as Melhores Práticas da Core Infrastructure Initiative da Linux Foundation.

Rastreamento de dependências para vulnerabilidades

Problemas de segurança em nossas dependências são monitorados a usar Dependabot. Isso cobre as bibliotecas Python e JavaScript e a versão estável mais recente tem as dependências delesatualizadas para evitar vulnerabilidades.

Dica

Pode haver vulnerabilidades em bibliotecas de terceiros que não afetam o Weblate, portanto, não são solucionadas com o lançamento de versões de correção de bugs do Weblate.

Segurança de contentor Docker

Os contentores Docker são verificados a usar Anchore e Trivy.

Isso nos permite detetar vulnerabilidades antecipadamente e lançar melhorias rapidamente.

Pode obter os resultados dessas varreduras no GitHub – eles são armazenados como artefatos em nosso CI no formato SARIF (Static Analysis Results Interchange Format).

Veja também

Integração contínua

Sobre o Weblate

Objetivos do projeto

Ferramenta de localização contínua baseada na web com Integração de controlo de versões suportando uma ampla gama de Formatos de ficheiros suportados, facilitando a contribuição dos tradutores.

Nome do projeto

«Weblate» é uma palavra-valise das palavras «web» e «translate».

Site da Web do Projeto

A página inicial é https://weblate.org e há um serviço hospedado na nuvem em https://hosted.weblate.org. A documentação pode ser lida em https://docs.weblate.org.

Logotipos do projeto

Os logotipos do projeto e outros gráficos estão disponíveis em https://github.com/WeblateOrg/graphics.

Liderança

Este projeto é mantido por Michal Čihař, que pode ser alcançado em michal@cihar.com.

Autores

Weblate foi iniciado por Michal Čihař. Desde a criação dele, em 2012, milhares de pessoas contribuíram.

Licença

Copyright (C) 2012 - 2021 Michal Čihař <michal@cihar.com>

Este programa é um software livre: pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicado pela Free Software Foundation, seja a versão 3 da Licença, ou (ao seu critério) qualquer versão posterior.

Este programa é distribuído na esperança de que ele seja útil, mas sem qualquer garantia; sem sequer a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM PROPÓSITO ESPECÍFICO. Consulte a Licença Pública Geral GNU para obter mais detalhes.

Deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, veja <https://www.gnu.org/licenses/>.

Weblate 4.8.1

Released on September 10th 2021.

  • Fixed user removal in Django admin interface.

  • Document add-on parameters in more detail.

  • Fixed JavaScript error on glossary.

  • Add limit to number of matches in consistency check.

  • Improve placeholders handling in machine translations.

  • Fixed creating add-ons using API.

  • Added PRIVACY_URL setting to add privacy policy link to the footer.

  • Hide member e-mail addresses from project admins.

  • Improved gettext PO merging in case of conflicts.

  • Improved glossary highlighting.

  • Improved safe-html flag behavior with XML checks.

  • Fixed commit messages on linked components.

All changes in detail.

Weblate 4.8

Released on August 21th 2021.

  • Added support for Apple stringsdict format.

  • The exact search operator is now case-sensitive on PostgreSQL.

  • Fixed saving glossary explanations in some cases.

  • Documentation improvements.

  • Performance improvements.

  • Improved squash add-on compatibility with Gerrit.

  • Fixed adding strings to monolingual glossary components.

  • Improved performance in handling variants.

  • Fixed squash add-on sometimes skipping parsing upstream changes.

  • Preserve file extension for downloads.

  • Added support for the Fluent format.

  • Added support for using tabs to indent JSON formats.

All changes in detail.

Weblate 4.7.2

Released on July 15th 2021.

  • Support more language aliases to be configured on a project.

  • Fixed search string validation in API.

  • Fixed Git exporter URLs after a domain change.

  • Fixed cleanup add-on for Windows RC files.

  • Fixed possible crash in XLIFF updating.

All changes in detail.

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.

All changes in detail.

Weblate 4.7

Released on June 17th 2021.

  • Melhorada a verificação de saúde da configuração.

  • Suporte adicionado para object-pascal-format usado em gettext PO, veja Formato Object Pascal.

  • Renamed Nearby keys to Similar keys to better describe the purpose.

  • Adicionado suporte para Ficheiros lang mi18n.

  • Melhorada a integração de autenticação SAML.

  • Fixed Gerrit integration to better handle corner cases.

  • Weblate now requires Django 3.2.

  • Corrigido o convite de utilizadores quando a autenticação por e-mail está desativada.

  • Melhoradas as definições de idioma.

  • Adicionado suporte para bloquear utilizadores de contribuir para um projeto.

  • Corrigida a criação automática de idiomas de glossário.

  • Estendida a documetanção sobre extensões.

  • Melhorias no desempenho para componentes com repositórios vinculados.

  • Adicionado suporte para DeepL API grátis.

  • O utilizador de gerência não precisa mais da interface administrativa do Django.

Todas as alterações em detalhes.

Weblate 4.6.2

Released on May 8th 2021.

  • Corrigida a falha após mover o componente compartilhado entre projetos.

  • Corrigida a adição de novos textos a ficheiros de propriedades vazios.

  • Fixed copy icon alignment in RTL languages.

  • Estendidas as estatísticas de texto na guia de Informações.

  • Corrigido o tratamento de ficheiros de tradução ignorados no Git.

  • Melhorada o desempenho das métricas.

  • Corrigido possível erro no salvamento de glossários.

  • Fixed consistency check behavior on languages with different plural rules.

Todas as alterações em detalhes.

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.

Todas as alterações em detalhes.

Weblate 4.6

Released on April 19th 2021.

  • The auto_translate management command has now a parameter for specifying translation mode.

  • Adicionado suporte para Ficheiros de texto.

  • Adicionadas tendências e métricas para todos os objetos.

  • Adicionado suporte para cópia direta de texto a partir de idiomas secundários.

  • Added date filtering when browsing changes.

  • Improved activity charts.

  • Sender for contact form e-mails can now be configured.

  • Melhorada a validação de parâmetros na API de criação de componentes.

  • A limitação de taxa não se aplica mais a superutilizadores.

  • Melhorada a desempenho e confiabilidade da extensão de tradução automática.

  • The rate limiting now can be customized in the Docker container.

  • API for creating components now automatically uses URLs internas do Weblate.

  • Simplified state indication while listing strings.

  • Hash de palavras-passe agora usa Argon2 por padrão.

  • Barras de progresso simplificadas a indicar o estado da tradução.

  • Renamed Adiciona idiomas em falta to clarify the purpose.

  • Corrigido gravar o estado de cadeia para XLIFF.

  • Adicionada pesquisa para todo idioma.

  • Initial support for Dimensionando horizontalmente the Docker deployment.

Todas as alterações em detalhes.

Weblate 4.5.3

Released on April 1st 2021.

  • Fixed metrics collection.

  • Corrigido possível travamento ao adicionar textos.

  • Melhorados os exemplos de consulta de pesquisa.

  • Fixed possible loss of newly added strings on replace upload.

Weblate 4.5.2

Released on March 26th 2021.

  • Agendamento configurável para tradução automática.

  • Adicionada verificação de formato Lua.

  • Ignore format strings in the Palavras consecutivas duplicadas check.

  • Allow uploading screenshot from a translate page.

  • Added forced file synchronization to the repository maintenance.

  • Fixed automatic suggestions for languages with a longer code.

  • Melhorado desempenho ao adicionar novos textos.

  • Várias correções de erros em verificações de qualidade.

  • Several performance improvements.

  • Adicionada integração com Descubra Weblate.

  • Fixed checks behavior with read-only strings.

Todas as alterações em detalhes.

Weblate 4.5.1

Released on March 5th 2021.

  • Fixed editing of glossary flags in some corner cases.

  • Extend metrics usage to improve performance of several pages.

  • Store correct source language in TMX files.

  • Melhor manuseio para envios de PO monolíngues usando API.

  • Improved alerts behavior on glossary components.

  • Melhoradas verificações de ligações Markdown.

  • Indicate glossary and source language in breadcrumbs.

  • Listagem paginada de componentes de grandes projetos.

  • Aprimorado o desempenho da remoção de tradução, componente ou projeto.

  • Improved bulk edit performance.

  • Fixed preserving «Needs editing» and «Approved» states for ODF files.

  • Interface melhorada para personalização de descarregas de ficheiros de tradução

Todas as alterações em detalhes.

Weblate 4.5

Released on February 19th 2021.

  • Suporte adicionado para lua-format usado em gettext PO.

  • Adicionado suporte para compartilhar componente entre projetos.

  • Fixed multiple unnamed variables check behavior with multiple format flags.

  • Dropped mailing list field on the project in favor of generic instructions for translators.

  • Adicionada extensão de geração de pseudolocalidade.

  • Suporte adicionado para ficheiros TermBase eXchange.

  • Adicionado suporte para definir manualmente variantes de cadeia a usar um marcador.

  • Aprimorado o desempenho de verificações de consistência.

  • Aprimorado o desempenho de memória de tradução para textos longos.

  • Adicionado suporte para pesquisar em explicações.

  • Strings can now be added and removed in bilingual formats as well.

  • Estende a lista de idiomas suportados na tradução automática do Amazon Translate.

  • Ativa automaticamente verificações de MessageFormat para Properties do Java.

  • Adicionado um novo método de envio para adicionar novos textos para uma tradução.

  • Adicionada uma interface simples para navegação das traduções.

  • Glossaries are now stored as regular components.

  • Dropped specific API for glossaries as component API is used now.

  • Added simplified interface to toggle some of the flags.

  • Adicionado suporte para termos não traduzidos ou proibidos no glossário.

  • Adicionado suporte para definir terminologia num glossário.

  • Moved text direction toggle to get more space for the visual keyboard.

  • Adicionada a opção de observar automaticamente os projetos para os quais o utilizador contribuiu.

  • Added check whether translation matches the glossary.

  • Adicionado suporte para personalizar a cor de texto de navegação.

Todas as alterações em detalhes.

Weblate 4.4.2

Released on January 14th 2021.

  • Fixed corruption of one distributed MO file.

Weblate 4.4.1

Released on January 13th 2021.

  • Fixed reverting plural changes.

  • Fixed displaying help for project settings.

  • Administração aprimorada de utilizadores.

  • Melhorado o tratamento de contexto em ficheiros PO monolíngues.

  • Fixed cleanup add-on behavior with HTML, ODF, IDML and Windows RC formats.

  • Corrigida a análise do local de ficheiros CSV.

  • Use content compression for file downloads.

  • Improved user experience on importing from ZIP file.

  • Melhorada a deteção do formato de ficheiros para envios.

  • Avoid duplicate pull requests on Pagure.

  • Melhorado o desempenho ao exibir traduções fantasmas.

  • Reimplemented translation editor to use native browser textarea.

  • Corrigida a quebra da extensão de limpeza ao adicionar novos textos.

  • Added API for add-ons.

Todas as alterações em detalhes.

Weblate 4.4

Released on December 15th 2020.

  • Melhorada a validação ao criar um componente.

  • Weblate now requires Django 3.1.

  • Adicionado suporte para personalização de aparência na interface de gestão.

  • Fixed read-only state handling in bulk edit.

  • Integração com CodeMirror melhorada.

  • Adicionada extensão para remover textos vazios de ficheiros de tradução.

  • O editor CodeMirror é agora usado para traduções.

  • Syntax highlighting in translation editor for XML, HTML, Markdown and reStructuredText.

  • Realce de objetos colocáveis no editor de tradução.

  • Improved support for non-standard language codes.

  • Added alert when using ambiguous language codes.

  • The user is now presented with a filtered list of languages when adding a new translation.

  • Extended search capabilities for changes in history.

  • Improved billing detail pages and libre hosting workflow.

  • Estendida a API de estatísticas de tradução.

  • Melhorada a guia «outras traduções» ao traduzir.

  • Added tasks API.

  • Melhorado o desempenho do envio de ficheiros.

  • Improved display of user defined special characters.

  • Melhorado o desempenho da tradução automática.

  • Several minor improvements in the user interface.

  • Improved naming of ZIP downloads.

  • Adicionada a opção para obter notificações de projetos não observados.

Weblate 4.3.2

Released on November 4th 2020.

  • Fixed crash on certain component filemasks.

  • Melhorada a precisão de verificação de palavras consecutivas duplicadas.

  • Suporte adicional para solicitações de Pagure.

  • Melhoradas as mensagens de erro para registos com falha.

  • Reverted rendering developer comments as Markdown.

  • Simplified setup of Git repositories with different default branch than «master».

  • Newly created internal repositories now use main as the default branch.

  • Reduced false positives rate of unchanged translation while translating reStructuredText.

  • Fixed CodeMirror display issues in some situations.

  • Renamed Template group to «Sources» to clarify its meaning.

  • Fixed GitLab pull requests on repositories with longer paths.

Todas as alterações em detalhes.

Weblate 4.3.1

Released on October 21st 2020.

  • Melhorada o desempenho da tradução automática.

  • Expiração da sessão para utilizadores autenticados corrigida.

  • Suporte para ocultar informações da versão adicionado.

  • Improve hooks compatibility with Bitbucket Server.

  • Melhorado o desempenho de atualizações de memória de tradução.

  • Reduced memory usage.

  • Melhorado o desempenho da visão Matriz.

  • Adicionada confirmação antes de remover um utilizador de um projeto.

Weblate 4.3

Released on October 15th 2020.

  • Include user stats in the API.

  • Fixed component ordering on paginated pages.

  • Define source language for a glossary.

  • Rewritten support for GitHub and GitLab pull requests.

  • Contagens de estatísticas corrigidas após a remoção da sugestão.

  • Perfil do utilizador público estendido.

  • Fixed configuration of enforced checks.

  • Improve documentation about built-in backups.

  • Moved source language attribute from project to a component.

  • Adicionar a verificação de formatação Vue I18n.

  • Generic placeholders check now supports regular expressions.

  • Melhorado o visual do modo Matriz.

  • A maquinaria é agora chamada sugestões automáticas.

  • Added support for interacting with multiple GitLab or GitHub instances.

  • Extended API to cover project updates, unit updates and removals and glossaries.

  • Unit API now properly handles plural strings.

  • Component creation can now handle ZIP file or document upload.

  • Consolidated API response status codes.

  • Suporte a Markdown no acordo de colaborador.

  • Rastreamento de cadeias de origem melhorado.

  • Improved JSON, YAML and CSV formats compatibility.

  • Suporte adicional para remover cadeias.

  • Improved performance of file downloads.

  • Improved repository management view.

  • Automatically enable java-format for Android.

  • Suporte adicional para capturas de ecrã localizadas.

  • Suporte adicional para Python 3.9.

  • Fixed translating HTML files under certain conditions.

Todas as alterações em detalhes.

Weblate 4.2.2

Released on September 2nd 2020.

  • Correspondência de cadeias fonte para formatos JSON corrigido.

  • Fixed login redirect for some authentication configurations.

  • Autenticação LDAP corrigida com sincronização de grupo.

  • Falha na comunicação do progresso da tradução automática corrigida.

  • Fixed Git commit squashing with trailers enabled.

  • Fixed creating local VCS components using API.

Weblate 4.2.1

Released on August 21st 2020.

  • Fixed saving plurals for some locales in Android resources.

  • Corrigido o travamento na limpeza da extensão para alguns ficheiros XLIFF.

  • Allow setting up localization CDN in Docker image.

Weblate 4.2

Released on August 18th 2020.

  • Improved user pages and added listing of users.

  • Dropped support for migrating from 3.x releases, migrate through 4.1 or 4.0.

  • Added exports into several monolingual formats.

  • Improved activity charts.

  • Number of displayed nearby strings can be configured.

  • Suporte adicionado para bloquear componentes com erros no repositório.

  • Simplified main navigation (replaced buttons with icons).

  • Improved language code handling in Google Translate integration.

  • The Git squash add-on can generate Co-authored-by: trailers.

  • Improved query search parser.

  • Improved user feedback from format strings checks.

  • Improved performance of bulk state changes.

  • Added compatibility redirects after project or component renaming.

  • Added notifications for strings approval, component locking and license change.

  • Added support for ModernMT.

  • Allow to avoid overwriting approved translations on file upload.

  • Dropped support for some compatibility URL redirects.

  • Verificação para literais de modelo de ECMAScript adicionada.

  • A opção para observar um componente foi adicionada.

  • Removed leading dot from JSON unit keys.

  • Fila separada de Celery para memória de tradução foi removida.

  • Permitir a tradução de todos os componentes de uma só vez.

  • Allow to configure Content-Security-Policy HTTP headers.

  • Added support for aliasing languages at project level.

  • Nova extensão para ajudar com localização HTML e JavaScript, veja CDN de localização JavaScript.

  • The Weblate domain is now configured in the settings, see SITE_DOMAIN.

  • Adicionar suporte para a pesquisa por componente e projeto.

Weblate 4.1.1

Released on June 19th 2020.

  • Fixed changing autofix or add-ons configuration in Docker.

  • Fixed possible crash in «About» page.

  • Improved installation of byte-compiled locale files.

  • Fixed adding words to glossary.

  • Corrigidos os atalhos de teclado para maquinaria.

  • Removed debugging output causing discarding log events in some setups.

  • Fixed lock indication on project listing.

  • Fixed listing GPG keys in some setups.

  • Added option for which DeepL API version to use.

  • Added support for acting as SAML Service Provider, see Autenticação por SAML.

Weblate 4.1

Released on June 15th 2020.

  • Added support for creating new translations with included country code.

  • Added support for searching source strings with screenshot.

  • Extended info available in the stats insights.

  • Improved search editing on «Translate» pages.

  • Improve handling of concurrent repository updates.

  • Include source language in project creation form.

  • Include changes count in credits.

  • Fixed UI language selection in some cases.

  • Allow to whitelist registration methods with registrations closed.

  • Improved lookup of related terms in glossary.

  • Improved translation memory matches.

  • Group same machinery results.

  • Add direct link to edit screenshot from translate page.

  • Improved removal confirmation dialog.

  • Include templates in ZIP download.

  • Add support for Markdown and notification configuration in announcements.

  • Extended details in check listings.

  • Added support for new file formats: Cadeias de PHP Laravel, Ficheiro HTML, Formato OpenDocument, Formato IDML, Ficheiros RC do Windows, Traduções de INI, Traduções Inno Setup INI, Propriedades GWT, Ficheiros JSON go-i18n, Ficheiro ARB.

  • Consistently use dismissed as state of dismissed checks.

  • Adiciona suporte para configurar extensões predefinidas para ativar.

  • Corrigido o atalho de teclado do editor para dispensar verificações.

  • Improved machine translation of strings with placeholders.

  • Show ghost translation for user languages to ease starting them.

  • Improved language code parsing.

  • Show translations in user language first in the list.

  • Renamed shapings to more generic name variants.

  • Added new quality checks: Várias variáveis sem nome, Não traduzido há muito tempo, Palavras consecutivas duplicadas.

  • Reintroduced support for wiping translation memory.

  • Fixed option to ignore source checks.

  • Added support for configuring different branch for pushing changes.

  • API now reports rate limiting status in the HTTP headers.

  • Added support for Google Translate V3 API (Advanced).

  • Added ability to restrict access on component level.

  • Added support for whitespace and other special chars in translation flags, see Personalizando comportamento a usar marcadores.

  • Always show rendered text check if enabled.

  • API now supports filtering of changes.

  • Added support for sharing glossaries between projects.

Weblate 4.0.4

Released on May 7th 2020.

  • Fixed testsuite execution on some Python 3.8 environments.

  • Typo fixes in the documentation.

  • Fixed creating components using API in some cases.

  • Fixed JavaScript errors breaking mobile navigation.

  • Fixed crash on displaying some checks.

  • Fixed screenshots listing.

  • Fixed monthly digest notifications.

  • Fixed intermediate translation behavior with units non existing in translation.

Weblate 4.0.3

Released on May 2nd 2020.

  • Fixed possible crash in reports.

  • User mentions in comments are now case insensitive.

  • Fixed PostgreSQL migration for non superusers.

  • Fixed changing the repository URL while creating component.

  • Fixed crash when upstream repository is gone.

Weblate 4.0.2

Released on April 27th 2020.

  • Improved performance of translation stats.

  • Improved performance of changing labels.

  • Improved bulk edit performance.

  • Melhoria do desempenho da memória de tradução.

  • Fixed possible crash on component deletion.

  • Fixed displaying of translation changes in some corner cases.

  • Improved warning about too long celery queue.

  • Fixed possible false positives in the consistency check.

  • Fixed deadlock when changing linked component repository.

  • Included edit distance in changes listing and CSV and reports.

  • Avoid false positives of punctuation spacing check for Canadian French.

  • Fixed XLIFF export with placeholders.

  • Fixed false positive with zero width check.

  • Improved reporting of configuration errors.

  • Fixed bilingual source upload.

  • Automatically detect supported languages for DeepL machine translation.

  • Fixed progress bar display in some corner cases.

  • Fixed some checks triggering on non translated strings.

Weblate 4.0.1

Released on April 16th 2020.

  • Fixed package installation from PyPI.

Weblate 4.0

Released on April 16th 2020.

  • Weblate now requires Python 3.6 or newer.

  • Added management overview of component alerts.

  • Added component alert for broken repository browser URLs.

  • Improved sign in and registration pages.

  • Project access control and workflow configuration integrated to project settings.

  • Added check and highlighter for i18next interpolation and nesting.

  • Added check and highlighter for percent placeholders.

  • Mostrar falhas nas verificações de sugestões.

  • Record source string changes in history.

  • Upgraded Microsoft Translator to version 3 API.

  • Reimplemented translation memory backend.

  • Added support for several is: lookups in Pesquisando.

  • Allow to make Tradução inalterada avoid internal blacklist.

  • Improved comments extraction from monolingual po files.

  • Renamed whiteboard messages to announcements.

  • Fixed occasional problems with registration mails.

  • Improved LINGUAS update add-on to handle more syntax variants.

  • Fixed editing monolingual XLIFF source file.

  • Added support for exact matching in Pesquisando.

  • Extended API to cover screenshots, users, groups, componentlists and extended creating projects.

  • Add support for source upload on bilingual translations.

  • Added support for intermediate language from developers.

  • Added support for source strings review.

  • Extended download options for platform wide translation memory.

Weblate 3.x series

Weblate 3.11.3

Released on March 11th 2020.

  • Fixed searching for fields with certain priority.

  • Fixed predefined query for recently added strings.

  • Fixed searching returning duplicate matches.

  • Fixed notifications rendering in Gmail.

  • Fixed reverting changes from the history.

  • Added links to events in digest notifications.

  • Fixed email for account removal confirmation.

  • Added support for Slack authentication in Docker container.

  • Avoid sending notifications for not subscribed languages.

  • Include Celery queues in performance overview.

  • Corrigidos os links da documentação para extensões.

  • Reduced false negatives for unchanged translation check.

  • Raised bleach dependency to address CVE-2020-6802.

  • Fixed listing project level changes in history.

  • Fixed stats invalidation in some corner cases.

  • Fixed searching for certain string states.

  • Improved format string checks behavior on missing percent.

  • Fixed authentication using some third party providers.

Weblate 3.11.2

Released on February 22nd 2020.

  • Fixed rendering of suggestions.

  • Fixed some strings wrongly reported as having no words.

Weblate 3.11.1

Released on February 20th 2020.

  • Documented Celery setup changes.

  • Improved filename validation on component creation.

  • Fixed minimal versions of some dependencies.

  • Fixed adding groups with certain Django versions.

  • Fixed manual pushing to upstream repository.

  • Improved glossary matching.

Weblate 3.11

Released on February 17th 2020.

  • Allow using VCS push URL during component creation via API.

  • Rendered width check now shows image with the render.

  • Fixed links in notifications e-mails.

  • Improved look of plaintext e-mails.

  • Display ignored checks and allow to make them active again.

  • Display nearby keys on monolingual translations.

  • Suporte adicionado para agrupar formas de cadeias.

  • Recommend upgrade to new Weblate versions in the system checks.

  • Provide more detailed analysis for duplicate language alert.

  • Include more detailed license info on the project pages.

  • Automatically unshallow local copies if needed.

  • Fixed download of strings needing action.

  • New alert to warn about using the same filemask twice.

  • Improve XML placeables extraction.

  • The SINGLE_PROJECT can now enforce redirection to chosen project.

  • Added option to resolve comments.

  • Added bulk editing of flags.

  • Added support for Etiquetas de cadeia.

  • Adicionada extensão de edição em massa.

  • Added option for Forçar verificações.

  • Increased default validity of confirmation links.

  • Improved Matomo integration.

  • Fixed Foi traduzido to correctly handle source string change.

  • Extended automatic updates configuration by AUTO_UPDATE.

  • Extensões de LINGUAS agora fazem sincronização completa de tradução no Weblate.

Weblate 3.10.3

Released on January 18th 2020.

  • Support for translate-toolkit 2.5.0.

Weblate 3.10.2

Released on January 18th 2020.

  • Add lock indication to projects.

  • Fixed CSS bug causing flickering in some web browsers.

  • Fixed searching on systems with non-English locales.

  • Improved repository matching for GitHub and Bitbucket hooks.

  • Fixed data migration on some Python 2.7 installations.

  • Allow configuration of Git shallow cloning.

  • Improved background notification processing.

  • Fixed broken form submission when navigating back in web browser.

  • New add-on to configure YAML formatting.

  • Fixed same plurals check to not fire on single plural form languages.

  • Fixed regex search on some fields.

Weblate 3.10.1

Released on January 9th 2020.

  • Extended API with translation creation.

  • Fixed several corner cases in data migrations.

  • Compatibility with Django 3.0.

  • Aprimorado o desempenho da limpeza de dados.

  • Added support for customizable security.txt.

  • Improved breadcrumbs in changelog.

  • Improved translations listing on dashboard.

  • Improved HTTP responses for webhooks.

  • Added support for GitLab merge requests in Docker container.

Weblate 3.10

Released on December 20th 2019.

  • Interface de utilizador da aplicação melhorada.

  • Added doublespace check.

  • Fixed creating new languages.

  • Avoid sending auditlog notifications to deleted e-mails.

  • Added support for read only strings.

  • Added support for Markdown in comments.

  • Allow placing translation instruction text in project info.

  • Add copy to clipboard for secondary languages.

  • Improved support for Mercurial.

  • Improved Git repository fetching performance.

  • Add search lookup for age of string.

  • Show source language for all translations.

  • Show context for nearby strings.

  • Added support for notifications on repository operations.

  • Improved translation listings.

  • Extended search capabilities.

  • Added support for automatic translation strings marked for editing.

  • Avoid sending duplicate notifications for linked component alerts.

  • Improve default merge request message.

  • Better indicate string state in Zen mode.

  • Added support for more languages in Yandex Translate.

  • Improved look of notification e-mails.

  • Provide choice for translation license.

Weblate 3.9.1

Released on October 28th 2019.

  • Remove some unneeded files from backups.

  • Fixed potential crash in reports.

  • Fixed cross database migration failure.

  • Added support for force pushing Git repositories.

  • Reduced risk of registration token invalidation.

  • Fixed account removal hitting rate limiter.

  • Added search based on priority.

  • Fixed possible crash on adding strings to JSON file.

  • Safe HTML check and fixup now honor source string markup.

  • Avoid sending notifications to invited and deleted users.

  • Fix SSL connection to redis in Celery in Docker container.

Weblate 3.9

Released on October 15th 2019.

  • Include Weblate metadata in downloaded files.

  • Improved UI for failing checks.

  • Indicate missing strings in format checks.

  • Separate check for French punctuation spacing.

  • Add support for fixing some of quality checks errors.

  • Add separate permission to create new projects.

  • Extend stats for char counts.

  • Improve support for Java style language codes.

  • Added new generic check for placeholders.

  • Added support for WebExtension JSON placeholders.

  • Added support for flat XML format.

  • Extended API with project, component and translation removal and creation.

  • Added support for Gitea and Gitee webhooks.

  • Added new custom regex based check.

  • Allow to configure contributing to shared translation memory.

  • Added ZIP download for more translation files.

  • Make XLIFF standard compliant parsing of maxwidth and font.

  • Added new check and fixer for safe HTML markup for translating web applications.

  • Add component alert on unsupported configuration.

  • Adicionada uma extensão de tradução automática para inicializar traduções.

  • Extend automatic translation to add suggestions.

  • Display add-on parameters on overview.

  • Sentry is now supported through modern Sentry SDK instead of Raven.

  • Changed example settings to be better fit for production environment.

  • Added automated backups using BorgBackup.

  • Split cleanup add-on for RESX to avoid unwanted file updates.

  • Added advanced search capabilities.

  • Allow users to download their own reports.

  • Added localization guide to help configuring components.

  • Added support for GitLab merge requests.

  • Improved display of repository status.

  • Perform automated translation in the background.

Weblate 3.8

Released on August 15th 2019.

  • Added support for simplified creating of similar components.

  • Added support for parsing translation flags from the XML based file formats.

  • Log exceptions into Celery log.

  • Melhoria no desempenho de extensões com escopo de repositório.

  • Improved look of notification e-mails.

  • Fixed password reset behavior.

  • Improved performance on most of translation pages.

  • Fixed listing of languages not known to Weblate.

  • Adiciona suporte para clonar extensões para componentes descobertos.

  • Add support for replacing file content with uploaded.

  • Add support for translating non VCS based content.

  • Added OpenGraph widget image to use on social networks.

  • Added support for animated screenshots.

  • Improved handling of monolingual XLIFF files.

  • Avoid sending multiple notifications for single event.

  • Add support for filtering changes.

  • Extended predefined periods for reporting.

  • Added webhook support for Azure Repos.

  • New opt-in notifications on pending suggestions or untranslated strings.

  • Add one click unsubscribe link to notification e-mails.

  • Fixed false positives with Has been translated check.

  • New management interface for admins.

  • String priority can now be specified using flags.

  • Added language management views.

  • Add checks for Qt library and Ruby format strings.

  • Added configuration to better fit single project installations.

  • Notify about new string on source string change on monolingual translations.

  • Added separate view for translation memory with search capability.

Weblate 3.7.1

Released on June 28th 2019.

  • Documentation updates.

  • Fixed some requirements constraints.

  • Updated language database.

  • Localization updates.

  • Various user interface tweaks.

  • Improved handling of unsupported but discovered translation files.

  • More verbosely report missing file format requirements.

Weblate 3.7

Released on June 21st 2019.

  • Added separate Celery queue for notifications.

  • Use consistent look with application for API browsing.

  • Include approved stats in the reports.

  • Report progress when updating translation component.

  • Allow to abort running background component update.

  • Extend template language for filename manipulations.

  • Use templates for editor link and repository browser URL.

  • Indicate max length and current characters count when editing translation.

  • Improved handling of abbreviations in unchanged translation check.

  • Refreshed landing page for new contributors.

  • Adiciona suporte para configurar extensões de msgmerge.

  • Delay opening SMTP connection when sending notifications.

  • Improved error logging.

  • Allow custom location in MO generating add-on.

  • Added add-ons to cleanup old suggestions or comments.

  • Added option to enable horizontal mode in the Zen editor.

  • Improved import performance with many linked components.

  • Fixed examples installation in some cases.

  • Improved rendering of alerts in changes.

  • Added new horizontal stats widget.

  • Improved format strings check on plurals.

  • Added font management tool.

  • New check for rendered text dimensions.

  • Added support for subtitle formats.

  • Include overall completion stats for languages.

  • Added reporting at project and global scope.

  • Improved user interface when showing translation status.

  • New Weblate logo and color scheme.

  • New look of bitmap badges.

Weblate 3.6.1

Released on April 26th 2019.

  • Improved handling of monolingual XLIFF files.

  • Fixed digest notifications in some corner cases.

  • Fixed add-on script error alert.

  • Fixed generating MO file for monolingual PO files.

  • Fixed display of uninstalled checks.

  • Indicate administered projects on project listing.

  • Allow update to recover from missing VCS repository.

Weblate 3.6

Released on April 20th 2019.

  • Add support for downloading user data.

  • Add-ons are now automatically triggered upon installation.

  • Improved instructions for resolving merge conflicts.

  • Cleanup add-on is now compatible with app store metadata translations.

  • Configurable language code syntax when adding new translations.

  • Warn about using Python 2 with planned termination of support in April 2020.

  • Extract special characters from the source string for visual keyboard.

  • Extended contributor stats to reflect both source and target counts.

  • Admins and consistency add-ons can now add translations even if disabled for users.

  • Fixed description of toggle disabling Language-Team header manipulation.

  • Notify users mentioned in comments.

  • Removed file format autodetection from component setup.

  • Fixed generating MO file for monolingual PO files.

  • Added digest notifications.

  • Added support for muting component notifications.

  • Added notifications for new alerts, whiteboard messages or components.

  • Notifications for administered projects can now be configured.

  • Improved handling of three letter language codes.

Weblate 3.5.1

Released on March 10th 2019.

  • Fixed Celery systemd unit example.

  • Fixed notifications from HTTP repositories with login.

  • Fixed race condition in editing source string for monolingual translations.

  • Include output of failed add-on execution in the logs.

  • Improved validation of choices for adding new language.

  • Allow to edit file format in component settings.

  • Update installation instructions to prefer Python 3.

  • Performance and consistency improvements for loading translations.

  • Make Microsoft Terminology service compatible with current Zeep releases.

  • Localization updates.

Weblate 3.5

Released on March 3rd 2019.

  • Improved performance of built-in translation memory.

  • Added interface to manage global translation memory.

  • Improved alerting on bad component state.

  • Added user interface to manage whiteboard messages.

  • Add-on commit message now can be configured.

  • Reduce number of commits when updating upstream repository.

  • Fixed possible metadata loss when moving component between projects.

  • Improved navigation in the Zen mode.

  • Added several new quality checks (Markdown related and URL).

  • Added support for app store metadata files.

  • Added support for toggling GitHub or Gerrit integration.

  • Added check for Kashida letters.

  • Added option to squash commits based on authors.

  • Improved support for XLSX file format.

  • Compatibility with Tesseract 4.0.

  • Billing add-on now removes projects for unpaid billings after 45 days.

Weblate 3.4

Released on January 22nd 2019.

  • Added support for XLIFF placeholders.

  • Celery can now utilize multiple task queues.

  • Added support for renaming and moving projects and components.

  • Include characters counts in reports.

  • Added guided adding of translation components with automatic detection of translation files.

  • Customizable merge commit messages for Git.

  • Added visual indication of component alerts in navigation.

  • Improved performance of loading translation files.

  • Nova extensão para fazer squash de commits antes de fazer push.

  • Improved displaying of translation changes.

  • Changed default merge style to rebase and made that configurable.

  • Better handle private use subtags in language code.

  • Improved performance of fulltext index updates.

  • Extended file upload API to support more parameters.

Weblate 3.3

Released on November 30th 2018.

  • Added support for component and project removal.

  • Improved performance for some monolingual translations.

  • Added translation component alerts to highlight problems with a translation.

  • Expose XLIFF string resname as context when available.

  • Added support for XLIFF states.

  • Added check for non writable files in DATA_DIR.

  • Improved CSV export for changes.

Weblate 3.2.2

Released on October 20th 2018.

  • Remove no longer needed Babel dependency.

  • Updated language definitions.

  • Improve documentation for add-ons, LDAP and Celery.

  • Fixed enabling new dos-eol and auto-java-messageformat flags.

  • Fixed running setup.py test from PyPI package.

  • Improved plurals handling.

  • Fixed translation upload API failure in some corner cases.

  • Fixed updating Git configuration in case it was changed manually.

Weblate 3.2.1

Released on October 10th 2018.

  • Document dependency on backports.csv on Python 2.7.

  • Fix running tests under root.

  • Improved error handling in gitexport module.

  • Fixed progress reporting for newly added languages.

  • Correctly report Celery worker errors to Sentry.

  • Fixed creating new translations with Qt Linguist.

  • Fixed occasional fulltext index update failures.

  • Improved validation when creating new components.

  • Added support for cleanup of old suggestions.

Weblate 3.2

Released on October 6th 2018.

  • Add install_addon management command for automated add-on installation.

  • Allow more fine grained ratelimit settings.

  • Added support for export and import of Excel files.

  • Improve component cleanup in case of multiple component discovery add-ons.

  • Rewritten Microsoft Terminology machine translation backend.

  • Weblate now uses Celery to offload some processing.

  • Improved search capabilities and added regular expression search.

  • Added support for Youdao Zhiyun API machine translation.

  • Added support for Baidu API machine translation.

  • Integrated maintenance and cleanup tasks using Celery.

  • Improved performance of loading translations by almost 25%.

  • Removed support for merging headers on upload.

  • Removed support for custom commit messages.

  • Configurable editing mode (zen/full).

  • Added support for error reporting to Sentry.

  • Added support for automated daily update of repositories.

  • Added support for creating projects and components by users.

  • Memória de tradução embutida agora armazena automaticamente as traduções feitas.

  • Users and projects can import their existing translation memories.

  • Better management of related strings for screenshots.

  • Added support for checking Java MessageFormat.

See 3.2 milestone on GitHub for detailed list of addressed issues.

Weblate 3.1.1

Released on July 27th 2018.

  • Fix testsuite failure on some setups.

Weblate 3.1

Released on July 27th 2018.

  • Upgrades from older version than 3.0.1 are not supported.

  • Allow to override default commit messages from settings.

  • Improve webhooks compatibility with self hosted environments.

  • Added support for Amazon Translate.

  • Compatibility with Django 2.1.

  • Django system checks are now used to diagnose problems with installation.

  • Removed support for soon shutdown libravatar service.

  • Nova extensão para marcar traduções não alteradas como a necessitar de edição.

  • Add support for jumping to specific location while translating.

  • Downloaded translations can now be customized.

  • Improved calculation of string similarity in translation memory matches.

  • Added support by signing Git commits by GnuPG.

Weblate 3.0.1

Released on June 10th 2018.

  • Fixed possible migration issue from 2.20.

  • Localization updates.

  • Removed obsolete hook examples.

  • Improved caching documentation.

  • Fixed displaying of admin documentation.

  • Improved handling of long language names.

Weblate 3.0

Released on June 1st 2018.

  • Rewritten access control.

  • Several code cleanups that lead to moved and renamed modules.

  • Nova extensão para descoberta automática de componentes.

  • The import_project management command has now slightly different parameters.

  • Added basic support for Windows RC files.

  • New add-on to store contributor names in PO file headers.

  • The per component hook scripts are removed, use add-ons instead.

  • Add support for collecting contributor agreements.

  • Access control changes are now tracked in history.

  • Nova extensão para garantir que todos os componentes num projeto tenham as mesmas traduções.

  • Support for more variables in commit message templates.

  • Add support for providing additional textual context.

Weblate 2.x series

Weblate 2.20

Released on April 4th 2018.

  • Improved speed of cloning subversion repositories.

  • Changed repository locking to use third party library.

  • Added support for downloading only strings needing action.

  • Added support for searching in several languages at once.

  • New add-on to configure gettext output wrapping.

  • New add-on to configure JSON formatting.

  • Added support for authentication in API using RFC 6750 compatible Bearer authentication.

  • Added support for automatic translation using machine translation services.

  • Added support for HTML markup in whiteboard messages.

  • Added support for mass changing state of strings.

  • Translate-toolkit at least 2.3.0 is now required, older versions are no longer supported.

  • Adicionada memória de tradução embutida.

  • Added componentlists overview to dashboard and per component list overview pages.

  • Added support for DeepL machine translation service.

  • Machine translation results are now cached inside Weblate.

  • Adicionado suporte para reordenar alterações de commits feitos.

Weblate 2.19.1

Released on February 20th 2018.

  • Fixed migration issue on upgrade from 2.18.

  • Improved file upload API validation.

Weblate 2.19

Released on February 15th 2018.

  • Fixed imports across some file formats.

  • Display human friendly browser information in audit log.

  • Added TMX exporter for files.

  • Various performance improvements for loading translation files.

  • Added option to disable access management in Weblate in favor of Django one.

  • Improved glossary lookup speed for large strings.

  • Compatibility with django_auth_ldap 1.3.0.

  • Configuration errors are now stored and reported persistently.

  • Honor ignore flags in whitespace autofixer.

  • Improved compatibility with some Subversion setups.

  • Melhorado o serviço embutido de tradução de máquina.

  • Added support for SAP Translation Hub service.

  • Added support for Microsoft Terminology service.

  • Removed support for advertisement in notification e-mails.

  • Melhorado o relatório de progresso de tradução a nível de idioma.

  • Improved support for different plural formulas.

  • Added support for Subversion repositories not using stdlayout.

  • Adicionadas extensões para personalizar fluxos de trabalho de tradução.

Weblate 2.18

Released on December 15th 2017.

  • Extended contributor stats.

  • Improved configuration of special characters virtual keyboard.

  • Added support for DTD file format.

  • Alterados os atalhos do teclado para reduzir a chance de colisão com os do navegador/sistema.

  • Improved support for approved flag in XLIFF files.

  • Added support for not wrapping long strings in gettext PO files.

  • Added button to copy permalink for current translation.

  • Dropped support for Django 1.10 and added support for Django 2.0.

  • Removed locking of translations while translating.

  • Added support for adding new strings to monolingual translations.

  • Added support for translation workflows with dedicated reviewers.

Weblate 2.17.1

Released on October 13th 2017.

  • Fixed running testsuite in some specific situations.

  • Locales updates.

Weblate 2.17

Released on October 13th 2017.

  • Weblate by default does shallow Git clones now.

  • Improved performance when updating large translation files.

  • Added support for blocking certain e-mails from registration.

  • Users can now delete their own comments.

  • Added preview step to search and replace feature.

  • Client side persistence of settings in search and upload forms.

  • Extended search capabilities.

  • More fine grained per project ACL configuration.

  • Default value of BASE_DIR has been changed.

  • Added two step account removal to prevent accidental removal.

  • Project access control settings is now editable.

  • Added optional spam protection for suggestions using Akismet.

Weblate 2.16

Released on August 11th 2017.

  • Various performance improvements.

  • Added support for nested JSON format.

  • Added support for WebExtension JSON format.

  • Corrigida a autenticação com exportador git.

  • Improved CSV import in certain situations.

  • Improved look of Other translations widget.

  • The max-length checks is now enforcing length of text in form.

  • Make the commit_pending age configurable per component.

  • Various user interface cleanups.

  • Fixed component/project/site wide search for translations.

Weblate 2.15

Released on June 30th 2017.

  • Show more related translations in other translations.

  • Add option to see translations of current string to other languages.

  • Use 4 plural forms for Lithuanian by default.

  • Fixed upload for monolingual files of different format.

  • Improved error messages on failed authentication.

  • Keep page state when removing word from glossary.

  • Added direct link to edit secondary language translation.

  • Added Perl format quality check.

  • Added support for rejecting reused passwords.

  • Extended toolbar for editing RTL languages.

Weblate 2.14.1

Released on May 24th 2017.

  • Fixed possible error when paginating search results.

  • Fixed migrations from older versions in some corner cases.

  • Fixed possible CSRF on project watch and unwatch.

  • The password reset no longer authenticates user.

  • Fixed possible CAPTCHA bypass on forgotten password.

Weblate 2.14

Released on May 17th 2017.

  • Add glossary entries using AJAX.

  • The logout now uses POST to avoid CSRF.

  • The API key token reset now uses POST to avoid CSRF.

  • Weblate sets Content-Security-Policy by default.

  • The local editor URL is validated to avoid self-XSS.

  • The password is now validated against common flaws by default.

  • Notify users about important activity with their account such as password change.

  • The CSV exports now escape potential formulas.

  • Various minor improvements in security.

  • The authentication attempts are now rate limited.

  • Suggestion content is stored in the history.

  • Store important account activity in audit log.

  • Ask for password confirmation when removing account or adding new associations.

  • Show time when suggestion has been made.

  • There is new quality check for trailing semicolon.

  • Ensure that search links can be shared.

  • Included source string information and screenshots in the API.

  • Allow to overwrite translations through API upload.

Weblate 2.13.1

Released on Apr 12th 2017.

  • Fixed listing of managed projects in profile.

  • Fixed migration issue where some permissions were missing.

  • Fixed listing of current file format in translation download.

  • Return HTTP 404 when trying to access project where user lacks privileges.

Weblate 2.13

Released on Apr 12th 2017.

  • Fixed quality checks on translation templates.

  • Added quality check to trigger on losing translation.

  • Add option to view pending suggestions from user.

  • Add option to automatically build component lists.

  • Default dashboard for unauthenticated users can be configured.

  • Add option to browse 25 random strings for review.

  • History now indicates string change.

  • Better error reporting when adding new translation.

  • Added per language search within project.

  • Group ACLs can now be limited to certain permissions.

  • The per project ALCs are now implemented using Group ACL.

  • Added more fine grained privileges control.

  • Various minor UI improvements.

Weblate 2.12

Released on Mar 3rd 2017.

  • Improved admin interface for groups.

  • Added support for Yandex Translate API.

  • Improved speed of site wide search.

  • Added project and component wide search.

  • Added project and component wide search and replace.

  • Improved rendering of inconsistent translations.

  • Added support for opening source files in local editor.

  • Added support for configuring visual keyboard with special characters.

  • Improved screenshot management with OCR support for matching source strings.

  • Default commit message now includes translation information and URL.

  • Added support for Joomla translation format.

  • Improved reliability of import across file formats.

Weblate 2.11

Released on Jan 31st 2017.

  • Include language detailed information on language page.

  • Mercurial backend improvements.

  • Added option to specify translation component priority.

  • More consistent usage of Group ACL even with less used permissions.

  • Added WL_BRANCH variable to hook scripts.

  • Improved developer documentation.

  • Melhor compatibilidade com várias versões git na extensão do exportador git.

  • Incluído por projecto e estatísticas de componentes.

  • Added language code mapping for better support of Microsoft Translate API.

  • Moved fulltext cleanup to background job to make translation removal faster.

  • Fixed displaying of plural source for languages with single plural form.

  • Improved error handling in import_project.

  • Various performance improvements.

Weblate 2.10.1

Released on Jan 20th 2017.

  • Do not leak account existence on password reset form (CVE-2017-5537).

Weblate 2.10

Released on Dec 15th 2016.

  • Added quality check to check whether plurals are translated differently.

  • Fixed GitHub hooks for repositories with authentication.

  • Adicionado módulo opcional de exportador git.

  • Support for Microsoft Cognitive Services Translator API.

  • Simplified project and component user interface.

  • Added automatic fix to remove control characters.

  • Added per language overview to project.

  • Added support for CSV export.

  • Added CSV download for stats.

  • Added matrix view for quick overview of all translations.

  • Added basic API for changes and strings.

  • Added support for Apertium APy server for machine translations.

Weblate 2.9

Released on Nov 4th 2016.

  • Extended parameters for createadmin management command.

  • Extended import_json to be able to handle with existing components.

  • Added support for YAML files.

  • Project owners can now configure translation component and project details.

  • Use «Watched» instead of «Subscribed» projects.

  • Projects can be watched directly from project page.

  • Added multi language status widget.

  • Highlight secondary language if not showing source.

  • Record suggestion deletion in history.

  • Improved UX of languages selection in profile.

  • Fixed showing whiteboard messages for component.

  • Keep preferences tab selected after saving.

  • Show source string comment more prominently.

  • Automatically install Gettext PO merge driver for Git repositories.

  • Added search and replace feature.

  • Added support for uploading visual context (screenshots) for translations.

Weblate 2.8

Released on Aug 31st 2016.

  • Documentation improvements.

  • Translations.

  • Updated bundled javascript libraries.

  • Added list_translators management command.

  • Django 1.8 is no longer supported.

  • Fixed compatibility with Django 1.10.

  • Added Subversion support.

  • Separated XML validity check from XML mismatched tags.

  • Fixed API to honor HIDE_REPO_CREDENTIALS settings.

  • Show source change in Zen mode.

  • Alt+PageUp/PageDown/Home/End now works in Zen mode as well.

  • Add tooltip showing exact time of changes.

  • Add option to select filters and search from translation page.

  • Added UI for translation removal.

  • Improved behavior when inserting placeables.

  • Fixed auto locking issues in Zen mode.

Weblate 2.7

Released on Jul 10th 2016.

  • Removida a tradução automática da web do Google.

  • Improved commit message when adding translation.

  • Fixed Google Translate API for Hebrew language.

  • Compatibility with Mercurial 3.8.

  • Added import_json management command.

  • Correct ordering of listed translations.

  • Show full suggestion text, not only a diff.

  • Extend API (detailed repository status, statistics, …).

  • Testsuite no longer requires network access to test repositories.

Weblate 2.6

Released on Apr 28th 2016.

  • Fixed validation of components with language filter.

  • Improved support for XLIFF files.

  • Fixed machine translation for non English sources.

  • Added REST API.

  • Django 1.10 compatibility.

  • Added categories to whiteboard messages.

Weblate 2.5

Released on Mar 10th 2016.

  • Fixed automatic translation for project owners.

  • Improved performance of commit and push operations.

  • New management command to add suggestions from command line.

  • Added support for merging comments on file upload.

  • Added support for some GNU extensions to C printf format.

  • Documentation improvements.

  • Added support for generating translator credits.

  • Added support for generating contributor stats.

  • Site wide search can search only in one language.

  • Improve quality checks for Armenian.

  • Support for starting translation components without existing translations.

  • Support for adding new translations in Qt TS.

  • Improved support for translating PHP files.

  • Performance improvements for quality checks.

  • Pesquisa corrigida para todo o site por verificações com falha.

  • Added option to specify source language.

  • Improved support for XLIFF files.

  • Extended list of options for import_project.

  • Improved targeting for whiteboard messages.

  • Support for automatic translation across projects.

  • Optimized fulltext search index.

  • Added management command for auto translation.

  • Added placeables highlighting.

  • Adicionados atalhos de teclado para os objetos colocáveis, verificações e traduções automáticas.

  • Improved translation locking.

  • Added quality check for AngularJS interpolation.

  • Added extensive group based ACLs.

  • Clarified terminology on strings needing edit (formerly fuzzy).

  • Clarified terminology on strings needing action and not translated strings.

  • Support for Python 3.

  • Dropped support for Django 1.7.

  • Dropped dependency on msginit for creating new gettext PO files.

  • Added configurable dashboard views.

  • Improved notifications on parse errors.

  • Added option to import components with duplicate name to import_project.

  • Improved support for translating PHP files.

  • Added XLIFF export for dictionary.

  • Added XLIFF and gettext PO export for all translations.

  • Documentation improvements.

  • Added support for configurable automatic group assignments.

  • Improved adding of new translations.

Weblate 2.4

Released on Sep 20th 2015.

  • Improved support for PHP files.

  • Ability to add ACL to anonymous user.

  • Improved configurability of import_project command.

  • Added CSV dump of history.

  • Avoid copy/paste errors with whitespace characters.

  • Added support for Bitbucket webhooks.

  • Tighter control on fuzzy strings on translation upload.

  • Several URLs have changed, you might have to update your bookmarks.

  • Hook scripts are executed with VCS root as current directory.

  • Hook scripts are executed with environment variables describing current component.

  • Add management command to optimize fulltext index.

  • Added support for error reporting to Rollbar.

  • Projects now can have multiple owners.

  • Project owners can manage themselves.

  • Added support for javascript-format used in gettext PO.

  • Support for adding new translations in XLIFF.

  • Improved file format autodetection.

  • Estendidos os atalhos de teclado.

  • Improved dictionary matching for several languages.

  • Improved layout of most of pages.

  • Support for adding words to dictionary while translating.

  • Added support for filtering languages to be managed by Weblate.

  • Added support for translating and importing CSV files.

  • Rewritten handling of static files.

  • Direct login/registration links to third-party service if that’s the only one.

  • Commit pending changes on account removal.

  • Add management command to change site name.

  • Add option to configure default committer.

  • Add hook after adding new translation.

  • Add option to specify multiple files to add to commit.

Weblate 2.3

Released on May 22nd 2015.

  • Dropped support for Django 1.6 and South migrations.

  • Support for adding new translations when using Java Property files.

  • Allow to accept suggestion without editing.

  • Improved support for Google OAuth 2.0.

  • Added support for Microsoft .resx files.

  • Tuned default robots.txt to disallow big crawling of translations.

  • Simplified workflow for accepting suggestions.

  • Added project owners who always receive important notifications.

  • Allow to disable editing of monolingual template.

  • More detailed repository status view.

  • Direct link for editing template when changing translation.

  • Allow to add more permissions to project owners.

  • Allow to show secondary language in Zen mode.

  • Support for hiding source string in favor of secondary language.

Weblate 2.2

Released on Feb 19th 2015.

  • Performance improvements.

  • Fulltext search on location and comments fields.

  • New SVG/javascript based activity charts.

  • Support for Django 1.8.

  • Support for deleting comments.

  • Added own SVG badge.

  • Added support for Google Analytics.

  • Improved handling of translation filenames.

  • Added support for monolingual JSON translations.

  • Record component locking in a history.

  • Support for editing source (template) language for monolingual translations.

  • Added basic support for Gerrit.

Weblate 2.1

Released on Dec 5th 2014.

  • Added support for Mercurial repositories.

  • Replaced Glyphicon font by Awesome.

  • Added icons for social authentication services.

  • Better consistency of button colors and icons.

  • Documentation improvements.

  • Various bugfixes.

  • Automatic hiding of columns in translation listing for small screens.

  • Changed configuration of filesystem paths.

  • Improved SSH keys handling and storage.

  • Improved repository locking.

  • Customizable quality checks per source string.

  • Allow to hide completed translations from dashboard.

Weblate 2.0

Released on Nov 6th 2014.

  • New responsive UI using Bootstrap.

  • Rewritten VCS backend.

  • Documentation improvements.

  • Added whiteboard for site wide messages.

  • Configurable strings priority.

  • Added support for JSON file format.

  • Fixed generating mo files in certain cases.

  • Added support for GitLab notifications.

  • Added support for disabling translation suggestions.

  • Django 1.7 support.

  • ACL projects now have user management.

  • Extended search possibilities.

  • Give more hints to translators about plurals.

  • Fixed Git repository locking.

  • Compatibility with older Git versions.

  • Improved ACL support.

  • Added buttons for per language quotes and other special characters.

  • Support for exporting stats as JSONP.

Weblate 1.x series

Weblate 1.9

Released on May 6th 2014.

  • Django 1.6 compatibility.

  • No longer maintained compatibility with Django 1.4.

  • Management commands for locking/unlocking translations.

  • Improved support for Qt TS files.

  • Users can now delete their account.

  • Avatars can be disabled.

  • Merged first and last name attributes.

  • Avatars are now fetched and cached server side.

  • Added support for shields.io badge.

Weblate 1.8

Released on November 7th 2013.

  • Please check manual for upgrade instructions.

  • Nicer listing of project summary.

  • Better visible options for sharing.

  • More control over anonymous users privileges.

  • Supports login using third party services, check manual for more details.

  • Users can login by e-mail instead of username.

  • Documentation improvements.

  • Improved source strings review.

  • Searching across all strings.

  • Better tracking of source strings.

  • Captcha protection for registration.

Weblate 1.7

Released on October 7th 2013.

  • Please check manual for upgrade instructions.

  • Support for checking Python brace format string.

  • Per component customization of quality checks.

  • Detailed per translation stats.

  • Changed way of linking suggestions, checks and comments to strings.

  • Users can now add text to commit message.

  • Support for subscribing on new language requests.

  • Support for adding new translations.

  • Widgets and charts are now rendered using Pillow instead of Pango + Cairo.

  • Add status badge widget.

  • Dropped invalid text direction check.

  • Changes in dictionary are now logged in history.

  • Performance improvements for translating view.

Weblate 1.6

Released on July 25th 2013.

  • Nicer error handling on registration.

  • Browsing of changes.

  • Fixed sorting of machine translation suggestions.

  • Improved support for MyMemory machine translation.

  • Added support for Amagama machine translation.

  • Various optimizations on frequently used pages.

  • Highlights searched phrase in search results.

  • Support for automatic fixups while saving the message.

  • Tracking of translation history and option to revert it.

  • Added support for Google Translate API.

  • Added support for managing SSH host keys.

  • Various form validation improvements.

  • Various quality checks improvements.

  • Performance improvements for import.

  • Added support for voting on suggestions.

  • Cleanup of admin interface.

Weblate 1.5

Released on April 16th 2013.

  • Please check manual for upgrade instructions.

  • Added public user pages.

  • Better naming of plural forms.

  • Added support for TBX export of glossary.

  • Added support for Bitbucket notifications.

  • Activity charts are now available for each translation, language or user.

  • Extended options of import_project admin command.

  • Compatible with Django 1.5.

  • Avatars are now shown using libravatar.

  • Added possibility to pretty print JSON export.

  • Various performance improvements.

  • Indicate failing checks or fuzzy strings in progress bars for projects or languages as well.

  • Added support for custom pre-commit hooks and committing additional files.

  • Rewritten search for better performance and user experience.

  • New interface for machine translations.

  • Added support for monolingual po files.

  • Extend amount of cached metadata to improve speed of various searches.

  • Now shows word counts as well.

Weblate 1.4

Released on January 23rd 2013.

  • Fixed deleting of checks/comments on string deletion.

  • Added option to disable automatic propagation of translations.

  • Added option to subscribe for merge failures.

  • Correctly import on projects which needs custom ttkit loader.

  • Added sitemaps to allow easier access by crawlers.

  • Provide direct links to string in notification e-mails or feeds.

  • Various improvements to admin interface.

  • Provide hints for production setup in admin interface.

  • Added per language widgets and engage page.

  • Improved translation locking handling.

  • Show code snippets for widgets in more variants.

  • Indicate failing checks or fuzzy strings in progress bars.

  • More options for formatting commit message.

  • Fixed error handling with machine translation services.

  • Improved automatic translation locking behaviour.

  • Support for showing changes from previous source string.

  • Added support for substring search.

  • Various quality checks improvements.

  • Support for per project ACL.

  • Basic code coverage by unit tests.

Weblate 1.3

Released on November 16th 2012.

  • Compatibility with PostgreSQL database backend.

  • Removes languages removed in upstream git repository.

  • Melhoria do processamento dos controlos de qualidade.

  • Added new checks (BB code, XML markup and newlines).

  • Support for optional rebasing instead of merge.

  • Possibility to relocate Weblate (for example to run it under /weblate path).

  • Support for manually choosing file type in case autodetection fails.

  • Better support for Android resources.

  • Support for generating SSH key from web interface.

  • More visible data exports.

  • New buttons to enter some special characters.

  • Support for exporting dictionary.

  • Support for locking down whole Weblate installation.

  • Checks for source strings and support for source strings review.

  • Support for user comments for both translations and source strings.

  • Better changes log tracking.

  • Changes can now be monitored using RSS.

  • Improved support for RTL languages.

Weblate 1.2

Released on August 14th 2012.

  • Weblate now uses South for database migration, please check upgrade instructions if you are upgrading.

  • Fixed minor issues with linked git repos.

  • New introduction page for engaging people with translating using Weblate.

  • Added widgets which can be used for promoting translation projects.

  • Added option to reset repository to origin (for privileged users).

  • Project or component can now be locked for translations.

  • Possibility to disable some translations.

  • Configurable options for adding new translations.

  • Configuration of git commits per project.

  • Simple antispam protection.

  • Better layout of main page.

  • Support for automatically pushing changes on every commit.

  • Support for e-mail notifications of translators.

  • List only used languages in preferences.

  • Improved handling of not known languages when importing project.

  • Support for locking translation by translator.

  • Optionally maintain Language-Team header in po file.

  • Include some statistics in about page.

  • Supports (and requires) django-registration 0.8.

  • Fazer cache de contagens de cadeias a conter verificações com falha.

  • Checking of requirements during setup.

  • Documentation improvements.

Weblate 1.1

Released on July 4th 2012.

  • Improved several translations.

  • Better validation while creating component.

  • Added support for shared git repositories across components.

  • Do not necessary commit on every attempt to pull remote repo.

  • Added support for offloading indexing.

Weblate 1.0

Released on May 10th 2012.

  • Improved validation while adding/saving component.

  • Experimental support for Android component files (needs patched ttkit).

  • Updates from hooks are run in background.

  • Improved installation instructions.

  • Improved navigation in dictionary.

Weblate 0.x series

Weblate 0.9

Released on April 18th 2012.

  • Fixed import of unknown languages.

  • Improved listing of nearby messages.

  • Improved several checks.

  • Documentation updates.

  • Added definition for several more languages.

  • Várias limpezas de código.

  • Documentation improvements.

  • Alteração do layout do ficheiro.

  • Update helper scripts to Django 1.4.

  • Improved navigation while translating.

  • Better handling of po file renames.

  • Better validation while creating component.

  • Integrated full setup into syncdb.

  • Added list of recent changes to all translation pages.

  • Check for not translated strings ignores format string only messages.

Weblate 0.8

Released on April 3rd 2012.

  • Replaced own full text search with Whoosh.

  • Various fixes and improvements to checks.

  • New command updatechecks.

  • Lot of translation updates.

  • Added dictionary for storing most frequently used terms.

  • Added /admin/report/ for overview of repositories status.

  • Machine translation services no longer block page loading.

  • Management interface now contains also useful actions to update data.

  • Records log of changes made by users.

  • Ability to postpone commit to Git to generate less commits from single user.

  • Possibility to browse failing checks.

  • Automatic translation using already translated strings.

  • New about page showing used versions.

  • Django 1.4 compatibility.

  • Ability to push changes to remote repo from web interface.

  • Added review of translations done by others.

Weblate 0.7

Released on February 16th 2012.

  • Direct support for GitHub notifications.

  • Added support for cleaning up orphaned checks and translations.

  • Displays nearby strings while translating.

  • Displays similar strings while translating.

  • Improved searching for string.

Weblate 0.6

Released on February 14th 2012.

  • Added various checks for translated messages.

  • Tunable access control.

  • Improved handling of translations with new lines.

  • Added client side sorting of tables.

  • Please check upgrading instructions in case you are upgrading.

Weblate 0.5

Released on February 12th 2012.

  • Support for machine translation using following online services:
    • Apertium

    • Microsoft Translator

    • MyMemory

  • Várias traduções novas.

  • Improved merging of upstream changes.

  • Better handle concurrent git pull and translation.

  • Propagating works for fuzzy changes as well.

  • Propagating works also for file upload.

  • Fixed file downloads while using FastCGI (and possibly others).

Weblate 0.4

Released on February 8th 2012.

  • Added usage guide to documentation.

  • Fixed API hooks not to require CSRF protection.

Weblate 0.3

Released on February 8th 2012.

  • Better display of source for plural translations.

  • New documentation in Sphinx format.

  • Displays secondary languages while translating.

  • Improved error page to give list of existing projects.

  • New per language stats.

Weblate 0.2

Released on February 7th 2012.

  • Improved validation of several forms.

  • Warn users on profile upgrade.

  • Lembre-se de URL para fazer o login.

  • Naming of text areas while entering plural forms.

  • Automatic expanding of translation area.

Weblate 0.1

Released on February 6th 2012.

  • Initial release.