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 de 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 Django’s documentation para parâmetros de configuração do próprio Django.
ADMINS_CONTACT¶
Configura para onde o formulário de contacto envia as mensagens. Se não estiver configurado, serão utilizados os endereços de correio eletrónico de ADMINS.
Configure isto como uma lista de endereços de correio eletrónico:
ADMINS_CONTACT = ["admin@example.com", "support@example.com"]
Veja também
ALLOWED_ASSET_DOMAINS¶
Added in version 5.14.
Configura quais domínios são permitidos para obter recursos no Weblate.
Isto melhora a segurança ao prevenir carregar recursos de fontes não confiadas. Recursos são descarregados uma vez pelo servidor Weblate e armazenados localmente, em vez de serem servidos diretamente de domínios externos para utilizadores.
A lista de permissões é aplicada ao URL inicial e a cada alvo de redirecionamento HTTP antes que o Weblate o siga. Redirecionamentos para anfitriões fora desta lista de permissões são rejeitados.
Espera uma lista de anfitriões/nomes de domínio. Pode usar nomes qualificados completos (p.ex. www.example.com) ou antecedido com um ponto enquanto caratere curinga para corresponder todos os subdomínios (p.ex .example.com irá corresponder cdn.example.com ou static.example.com).
O padrão é ["*"] que permite todos os domínios.
Exemplo
ALLOWED_ASSET_DOMAINS = [
# Allows only cdn.anotherdomain.org
"cdn.anotherdomain.org",
# Allows example.com and all its subdomains
".example.com",
]
Atualmente, isto é utilizado nos seguintes locais:
Carregamento de capturas de ecrã, ver Capturas de ecrã e contexto visual
Descarregamentos HTML remotos para o extra CDN de localização JavaScript
ALLOWED_MACHINERY_DOMAINS¶
Configures which custom translation service domains are explicitly allowed in project-level translation service configuration.
This setting applies only to translation services and does not affect
ALLOWED_ASSET_DOMAINS.
Espera uma lista de anfitriões/nomes de domínio. Pode usar nomes qualificados completos ou anteceder com um ponto enquanto caratere curinga para corresponder todos os subdomínios.
A predefinição é [].
The allowlist affects project-managed translation services in two ways: it permits the configured endpoint during outbound validation, and it marks matching hosts as trusted when deciding whether remote provider error details or response bodies can be shown to the user. Matching hosts are also exempt from private-target restrictions. For direct connections, Weblate does not resolve, pin, or verify the peer address of matching hosts. Only add hosts or domains whose network destinations are trusted. When a configured Proxy HTTP is used, the proxy is trusted to resolve the destination hostname.
ALLOWED_ASSET_SIZE¶
Added in version 5.14.
Configura o limite de tamanho em bytes para buscar ou carregar recursos para o Weblate. A predefinição é 10MB.
ASSET_PRIVATE_ALLOWLIST¶
Added in version 2025.5.
Define os nomes de anfitriões ou domínios isentos de ASSET_RESTRICT_PRIVATE para o descarregar de recursos remotos que aplicam verificações de alvo privado. Entradas seguem semânticas de correspondência de anfitriões Django, e por isso valores com o assets.internal.example ou .internal.example podem ser usados.
Isto não substitui ALLOWED_ASSET_DOMAINS; recursos remotos ainda têm que corresponder a lista de permissões de domínios de recursos.
Configuração padrão:
ASSET_PRIVATE_ALLOWLIST = []
Veja também
ASSET_RESTRICT_PRIVATE¶
Added in version 2025.5.
Rejeita URLs de recursos remotos que apontam para endereços internos ou não públicos a não ser que o anfitrião alvo está incluído na ASSET_PRIVATE_ALLOWLIST. Ativo por predefinição.
Quando ativo, nomes de anfitrião que não podem ser resolvidos durante a validação são rejeitados, a não ser que sejam explicitamente incluídos em ASSET_PRIVATE_ALLOWLIST. Isto atualmente aplica-se a URL de envios de capturas de ecrã e descarregamentos HTML remotos para o extra CDN de localização JavaScript.
ALTCHA_COST¶
Added in version 2025.5.
Custo de tempo do Argon2id para o desafio de prova de trabalho ALTCHA. A predefinição é 3.
Susbtitui ALTCHA_MAX_NUMBER, que é aplicado ao widget removido ALTCHA v2.
ALTCHA_MEMORY_COST¶
Added in version 2025.5.
Custo de memória do Argon2id em KiB. A predefinição é 65536.
ALTCHA_PARALLELISM¶
Added in version 2025.5.
O fator de paralelismo do Argon2id. A predefinição é 1.
Veja também
ANONYMOUS_USER_NAME¶
O nome de utilizadores não autenticados.
Veja também
AUDITLOG_EXPIRY¶
A quantidade máxima de dias que o Weblate manterá registos de auditoria contendo informações sobre a atividade da conta.
A predefinição é de 180 dias.
Veja também
AUTH_LOCK_ATTEMPTS¶
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:
Autenticação. Apaga a senha da conta, impedindo que o utilizador entre sem solicitar uma nova senha.
Second-factor sign in. Deletes the account password after this many rejected second-factor submissions since the last successful second-factor sign in. This also invalidates pending password sign-ins. Other authentication methods and API tokens remain usable.
Redefinição de palavra-passe. Impede que novos e-mails sejam enviados, evitando o envio de spam aos utilizadores com muitas tentativas de redefinição de palavra-passe.
A predefinição é 10.
Veja também
AUTO_UPDATE¶
Atualiza todos repositórios diariamente.
Every hour, Weblate queues updates for repositories whose component ID modulo 24
matches the current UTC hour. This distributes updates throughout the day. For
example, component ID 25 is selected during the hour from 01:00 to 01:59 UTC.
Linked components use the schedule of the component that owns their shared
repository.
The assigned hour determines when updates are queued, not when they finish. Execution can be delayed by queued tasks or repository operations. Restarting Celery does not change the assigned hour. This setting does not provide a configurable update time window.
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émFalseFetch remote changes without merging them into the working copy. This is the default;
Falsedoes not disable daily updates."full"e tambémTrueFetch remote changes and merge them into the working copy.
Nota
Automatic updates require that Tarefas de fundo a usar o Celery is working. Restart Celery after changing this setting for the new value to take effect.
AVATAR_URL_PREFIX¶
Prefixo para construção de URLs de avatars: ${AVATAR_URL_PREFIX}/avatar/${MAIL_HASH}?${PARAMS}. Os serviços seguintes funcionam:
- Gravatar (predefinição), conforme https://gravatar.com/
AVATAR_URL_PREFIX = 'https://www.gravatar.com/'- Libravatar, conforme https://www.libravatar.org/
AVATAR_URL_PREFIX = 'https://www.libravatar.org/'
Veja também
AVATAR_URL_TEMPLATE¶
Added in version 2026.10.
Template to generate avatar URLs. Defaults to "{AVATAR_URL_PREFIX}avatar/{mail_hash}?{querystring}".
It can contain {AVATAR_URL_PREFIX}, {mail_hash}, {querystring}, {username}, and {size}.
For example, to fetch avatars by username instead of e-mail hash (as needed by Codeberg’s Forgejo-backed avatar service):
AVATAR_URL_TEMPLATE = "{AVATAR_URL_PREFIX}avatar/{username}/{size}"
AUTH_TOKEN_VALID¶
How long the authentication token and temporary password from password reset e-mails is valid for. Set in number of seconds, defaulting to 172800 (2 days). E-mail validation codes are checked against this lifetime when used, even if scheduled cleanup has not yet removed them. This does not set a deadline for other authentication pipeline steps.
AUTH_PASSWORD_DAYS¶
Quantos dias o Weblate rejeita a reutilização de uma palavra-passe usada anteriormente para um utilizador.
A verificação é baseada no registo da auditoria, AUDITLOG_EXPIRY tem de ser pelo menos o mesmo que isto.
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 para a classe Python que implementa a interface de correção automática.
Correções disponíveis são descritas em Correções automáticas.
Pode selecionar quais usar:
AUTOFIX_LIST = (
"weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
"weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
)
BACKGROUND_TASKS¶
Added in version 4.5.2.
Define com que frequência as tarefas de manutenção demoradas devem ser acionadas para um componente.
No momento, isso controla:
Extensão Tradução Automática
Recálculo de Verificações e correções
Escolhas possíveis:
monthly(este é o padrão)weeklydailynever
Nota
O aumento da frequência não é recomendado quando o Weblate contém milhares de componentes.
BASIC_LANGUAGES¶
Added in version 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.
Isto 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
Isto não define novos idiomas para o Weblate — apenas filtra os existentes na base de dados.
Exemplo:
BASIC_LANGUAGES = {"cs", "it", "ja", "en"}
Veja também
BORG_EXTRA_ARGS¶
Added in version 4.9.
Pode passar argumentos adicionais para borg create quando backups embutidos forem acionados.
Exemplo:
BORG_EXTRA_ARGS = ["--exclude", "vcs/"]
CACHE_DIR¶
Added in version 4.16.
Diretório onde o Weblate armazena ficheiros de cache. O padrão é a subpasta cache em DATA_DIR.
Altere isto para o sistema de ficheiros local ou temporário se DATA_DIR estiver num sistema de ficheiros de rede.
O Weblate armazena ficheiros auxiliares gerados aqui e executa alguns deles, por isso tem que ser possível escrever em CACHE_DIR e montado em um sistema de ficheiros que permite execução. Evite usar as opções de montagem noexec para este diretório.
O contentor de Docker utiliza um volume separado para isto, consulte Volumes de contentor Docker.
Os subdiretórios seguintes geralmente existem:
sshFicheiros auxiliares gerados usado para acesso VCS.
fontsfont-config cache para Gerir letras.
avatarAvatares de utilizador em cache, consulte Avatares.
staticLocalização padrão para ficheiros de Django estáticos, especificados por
STATIC_ROOT. Veja Servir ficheiros estáticos.tesseractDados treinados em OCR para Capturas de ecrã e contexto visual.
CSP_SCRIPT_SRC, CSP_IMG_SRC, CSP_CONNECT_SRC, CSP_STYLE_SRC, CSP_FONT_SRC, CSP_FORM_SRC¶
Personalize o Content-Security-Policy cabeçalho para o Weblate. O cabeçalho é gerado automaticamente com base nas 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 padrão, de onde pode alterar estas configurações. Por padrão, eles são comentados em Configuração de amostra para que os valores padrão sejam usados. Novas verificações são então realizadas para cada nova versão 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 na base de dados. Para aplicar as alterações também às traduções armazenadas, execute: updatechecks.
COMMIT_PENDING_HOURS¶
Quantidade de horas entre fazer o commit de alterações pendentes por meio da tarefa de segundo plano.
COMPONENT_ZIP_UPLOAD_MAX_SIZE¶
Added in version 5.17.1.
Configura o tamanho máximo, em bytes, para ficheiros ZIP de componentes enviados. A predefinição é 50MB.
No Docker, configure isto usando a variável de ambiente WEBLATE_COMPONENT_ZIP_UPLOAD_MAX_SIZE.
Veja também
CONTACT_FORM¶
Added in version 4.6.
Configura como o e-mail do formulário de contato é 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 é utilizado como From. O seu servidor de correio eletrónico precisa de permitir o envio de tais mensagens.
"disabled"Desativa o formulário de contacto na íntegra.
Added in version 5.15.
Veja também
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:
homeO diretório pessoal usado para invocar scripts.
sshChaves e configuração de SSH.
mediaLocalização padrão para ficheiros de mídia Django, especificado por
MEDIA_ROOT. Contém capturas de ecrã enviadas, veja Capturas de ecrã e contexto visual.vcsRepositórios de controle de versão para traduções.
backupsBackup diário de dados. Por favor, verifique Dados despejados para backups para pormenores.
fonts:Fontes enviadas pelo utilizador, veja Gerir letras.
cacheVários caches. Pode ser posto em outro lugar usando
CACHE_DIR.O contentor de Docker utiliza um volume separado para isto, consulte Volumes de contentor Docker.
Nota
Esta pasta tem de poder ser escrita pelo Weblate. Executá-lo como WSGI 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 da pasta:
sudo chown www-data:www-data -R $DATA_DIR
O padrão é /home/weblate/data, mas espera-se que seja configurado.
DATABASE_BACKUP¶
Se as cópias de segurança da base de dados devem ser armazenadas como texto simples, compactado ou ignorado. Os valores autorizados são:
"plain""compressed""none"
Veja também
DEFAULT_ACCESS_CONTROL¶
A configuração padrão de controle de acesso para novos projetos:
0Público
1Protegido
100Privado
200Personalizado
Use Personalizado se está a gerir a ACL manualmente, o que significa não confiar na gestão interna do Weblate.
DEFAULT_AUTO_WATCH¶
Added in version 4.5.
Configura se Monitorizar automaticamente projetos onde colabore deve ser ativado para novos utilizadores. O padrão é True.
Veja também
DEFAULT_RESTRICTED_COMPONENT¶
Added in version 4.1.
O valor predefinido para a restrição de componentes.
Veja também
DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE¶
Enviar mensagens predefinidas para diferentes operações, consulte Configuração de componente para detalhes.
As predefinições embutidas seguem o Conventional Commits e incluem links do Weblate sempre que disponível. Mudas estas definições afeta predefinições recentemente criadas; modelos de mensagem existentes podem ser reiniciadas nos formulários de definições com Restaurar predefinições do site. Para valores herdados, restaurar as predefinições do site também desativa a herança para tal mensagem.
DEFAULT_ADDONS¶
Extensões padrão para instalar para cada componente criado.
Nota
Essa configuração afeta apenas componentes recém-criados.
Exemplo:
DEFAULT_ADDONS = {
# Add-on with no parameters
"weblate.flags.target_edit": {},
# Add-on with parameters
"weblate.autotranslate.autotranslate": {
"mode": "suggest",
"filter_type": "todo",
"auto_source": "mt",
"component": "",
"engines": ["weblate-translation-memory"],
"threshold": "80",
},
}
Veja também
DEFAULT_COMMITER_EMAIL¶
Endereço de e-mail do committer, padrão para noreply@weblate.org.
This identifies Weblate as the committer, separately from the translator recorded
as the author. To make translators” author e-mail addresses private by default,
set PRIVATE_COMMIT_EMAIL_OPT_IN to False.
Veja também
DEFAULT_COMMITER_NAME¶
Nome do committer, padrão para Weblate.
This identifies Weblate as the committer, separately from the translator recorded
as the author. To make translators” author names private by default, set
PRIVATE_COMMIT_NAME_OPT_IN to False.
Veja também
DEFAULT_LANGUAGE¶
Added in version 4.3.2.
Idioma fonte para quaisquer novos componentes.
Predefine para en. O objeto de idioma correspondente tem de existir na base de dados.
Veja também
DEFAULT_MERGE_STYLE¶
Estilo de união para quaisquer novos componentes.
rebase - predefinição
merge
Veja também
DEFAULT_NOTIFICATIONS¶
Added in version 2026.10.1.
Default notification settings for every newly created user.
A list of 3-tuples consisting of notification scope, notification frequency and notification handler.
Scopes:
0All
10Watched
20Administered
Frequencies:
0No notification
1Instant notification
2Daily digest
3Weekly digest
4Monthly digest
Handlers:
ApprovedStringNotificatonString was approved
ChangedStringNotificatonString was changed
ComponentTranslatedNotificatonComponent was translated
LanguageTranslatedNotificatonLanguage was translated
LastAuthorCommentNotificatonString you contributed to received a comment
LicenseNotificationLicense was changed
LockNotificationComponent was locked or unlocked
MentionCommentNotificatonYou were mentioned in a comment
MergeFailureNotificationRepository operation failed
NewAlertNotificatonNew alert emerged in a component
NewAnnouncementNotificatonAnnouncement was published
NewCommentNotificatonComment was added
NewComponentNotificatonNew translation component was created
NewContributorNotificatonContributor made their first translation
NewStringNotificatonString is available for translation
NewSuggestionNotificatonSuggestion was added
NewTranslationNotificatonNew language was added or requested
ParseErrorNotificationParse error occurred
PendingSuggestionsNotificationPending suggestions exist
RepositoryNotificationOperation was performed in the repository
ToDoStringsNotificationUnfinished strings exist
TranslatedStringNotificatonString was edited by user
TranslationActivitySummaryNotificationTranslation activity summary
Nota
This setting affects only newly created users.
Exemplo:
DEFAULT_NOTIFICATIONS = [
(0, 1, "MentionCommentNotificaton"),
(10, 1, "LastAuthorCommentNotificaton"),
]
Veja também
DEFAULT_WORKSPACE_TM¶
Added in version 2026.11.2.
Configures the default value of Utilizar memória de tradução de espaço de trabalho and Contribuir para a memória de tradução de espaço de trabalho.
DEFAULT_TRANSLATION_REVIEW¶
Added in version 5.16.
Configura o valor predefinido para Activar revisões, desativado por predefinição.
DEFAULT_SOURCE_REVIEW¶
Added in version 5.16.
Configura o valor predefinido para Ativar revisões de fontes, desativado por predefinição.
DEFAULT_AUTOCLEAN_TM¶
Added in version 5.13.
Configura o valor predefinido para Limpar memória de tradução automaticamente.
DEFAULT_TRANSLATION_PROPAGATION¶
Configuração predefinida para propagação de tradução, a predefinição é True.
DEFAULT_PULL_MESSAGE¶
Configura o título e a mensagem padrão para pull requests.
A predefinição embutida segue Conventional Commits e inclui links do Weblate e estado de tradução.
ENABLE_AVATARS¶
Se deve ativar os avatares baseados em Gravatar para os utilizadores. Ativado por padrão.
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 deve ativar os ganchos remotos anônimos.
Veja também
ENABLE_HTTPS¶
Alterado na versão 5.7: Weblate agora requer https para suporte ao WebAuthn.
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 HSTS ou ativa redirecionamento para um URL HTTPS .
O redirecionamento HTTPS pode ser problemático em alguns casos e pode encontrar um problema com o redirecionamento infinito caso esteja usando um proxy reverso fazendo uma terminação SSL que não passa corretamente os cabeçalhos de protocolo para o Django. Por favor ajuste a sua configuração de proxy reverso para emitir X-Forwarded-Proto ou Forwarded cabeçalhos ou configure SECURE_PROXY_SSL_HEADER para permitir que o Django detete corretamente o estado SSL.
Caso isto esteja desativado, o Weblate falhará ao iniciar com um erro otp_webauthn.E031. Pode silenciar este erro adicionando-o a SILENCED_SYSTEM_CHECKS, mas mesmo assim o WebAuthn não funcionará para sites sem HTTPS.
ENABLE_SHARING¶
Ativa/desativa o menu Comunidade para que os utilizadores possam compartilhar o progresso da tradução nas redes sociais.
Veja também
EXTRA_HTML_HEAD¶
Added in version 4.15.
Insira marcação adicional no cabeçalho HTML. Pode ser usado para verificação da propriedade do site, por exemplo:
EXTRA_HTML_HEAD = '<link href="https://fosstodon.org/@weblate" rel="me">'
Aviso
Nenhuma sanitização é executada no cadeia, é inserido como está no cabeçalho HTML.
GET_HELP_URL¶
Added in version 4.5.2.
URL onde o suporte para sua instância do Weblate encontra-se.
GITEA_CREDENTIALS¶
Added in version 4.12.
Lista para credenciais para servidores Gitea.
GITEA_CREDENTIALS = {
"try.gitea.io": {
"username": "weblate",
"token": "your-api-token",
},
}
O dicionário de configuração consiste em credenciais definidas para cada host de API. O layout é o mesmo para quase todas as integrações de controle de versão e é descrito em Configurar credenciais para controle de versão.
GITLAB_CREDENTIALS¶
Added in version 4.3.
Lista para credenciais para servidores de GitLab.
GITLAB_CREDENTIALS = {
"gitlab.com": {
"username": "weblate",
"token": "your-api-token",
},
}
Nota
O token de acesso pessoal precisa do escopo api para conseguir utilizar a API.
O dicionário de configuração consiste em credenciais definidas para cada host de API. O layout é o mesmo para quase todas as integrações de controle de versão e é descrito em Configurar credenciais para controle de versão.
GITHUB_CREDENTIALS¶
Added in version 4.3.
Lista para credenciais para servidores GitHub.
GITHUB_CREDENTIALS = {
"api.github.com": {
"username": "weblate",
"token": "your-api-token",
},
}
Nota
É possível usar tanto os tokens de acesso pessoal refinado quanto os tokens de acesso pessoal clássico. Os tokens refinados são limitados a uma única organização, portanto, não funcionarão se quiser que o Weblate faça o fork de um repositório fora da organização (normalmente para o espaço de nomes do utilizador).
Para clonar, fazer push ou criar pull requests, é necessário ter o acesso de leitura e escrita para Contents e Pull requests.
Administração também pode ser necessário para fazer fork de um repositório se pretende usar fork e o repositório original não for público.
Dica
Use api.github.com como um host da API para https://github.com/.
O dicionário de configuração consiste em credenciais definidas para cada host de API. O layout é o mesmo para quase todas as integrações de controle de versão e é descrito em Configurar credenciais para controle de versão.
GITHUB_LEGACY_APP_WEBHOOK_SECRET¶
Added in version 2026.8.
Segredo webhook para uma GitHub App que entrega eventos para o URL do webhook genérico GitHub, /hooks/github/.
As entregas de webhooks da aplicação para o URL genérico são rejeitadas quando esta configuração estiver vazia ou o seu X-Hub-Signature-256 não corresponde. Webhooks de repositórios comuns não são afetados. GitHub Apps registadas através do Weblate utiliza os seus URLs de webhook por Aplicação e não utilizam esta definição.
GITHUB_LEGACY_APP_WEBHOOK_SECRET = "your-webhook-secret"
Veja também
BITBUCKETSERVER_CREDENTIALS¶
Added in version 4.16.
Lista de credenciais para Data Center Bitbucket.
BITBUCKETSERVER_CREDENTIALS = {
"git.self-hosted.com": {
"username": "weblate",
"token": "http-access-token",
},
}
O dicionário de configuração consiste em credenciais definidas para cada host de API. O layout é o mesmo para quase todas as integrações de controle de versão e é descrito em Configurar credenciais para controle de versão.
BITBUCKETCLOUD_CREDENTIALS¶
Added in version 5.8.
Lista de credenciais para servidores de Nuvem Bitbucket.
BITBUCKETCLOUD_CREDENTIALS = {
"bitbucket.org": {
"username": "your-email",
"workspace": "your-workspace-slug",
"token": "your-api-token",
},
}
O dicionário de configuração consiste em credenciais definidas para cada host de API. O host da API pode ser diferente do que usa no navegador web, por exemplo, a API do GitHub é acedida como api.github.com.
A seguinte configuração está disponível para cada host:
usernameAPI do utilizador.
workspaceO slug do espaço de trabalho do utilizador.
tokenO token API com permissão pullrequest:write.
Configurações adicionais não descritas aqui encontram-se em Configurar credenciais para controle de versão.
AZURE_DEVOPS_CREDENTIALS¶
Added in version 5.2.
Lista de credenciais para servidores do Azure DevOps.
AZURE_DEVOPS_CREDENTIALS = {
"dev.azure.com": {
"username": "project-name",
"token": "your-api-token",
"organization": "organization-name",
},
}
O dicionário de configuração consiste em credenciais definidas para cada host de API. O host da API pode ser diferente do que usa no navegador web, por exemplo, a API do GitHub é acedida como api.github.com.
A seguinte configuração está disponível para cada host:
usernameO nome do projeto Azure DevOps. Este não é o nome do repositório.
organizationO nome da organização do projeto.
workItemIdsUma lista opcional de IDs de elementos de trabalho da sua organização. Quando fornecida, novos pull requests terão estes elementos anexados.
tokenToken de API para o utilizador da API, obrigatório.
Configurações adicionais não descritas aqui encontram-se em Configurar credenciais para controle de versão.
GOOGLE_ANALYTICS_ID¶
ID do Google Analytics para ativar o monitoramento do Weblate usando o Google Universal Analytics.
Nota
No momento, a integração com o Google Analytics 4 não está disponível para o Weblate; consulte https://github.com/WeblateOrg/weblate/issues/14015.
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
Ativado por padrão.
VERSION_DISPLAY¶
Added in version 5.17.
Controla o quão proeminente o Weblate expõe a sua própria versão.
Os valores suportados são:
showMostra a versão no UI partilhado como um rodapé e expõe-o em
GET /api/metrics/.softEsconde a versão do UI proeminente partilhado, enquanto que mantém-o descobrível na página Sobre e em
GET /api/metrics/.hideOculta a versão do UI partilhado e
GET /api/metrics/. Isto também faz com que links de documentação anónimos apontem para a documentação mais recente em vez da versão que corresponde à versão de instalação.
Ocultar a versão é uma prática de segurança recomendada em algumas empresas, mas isso não impede um atacante de inferir a versão por meio de sondagem de comportamentos.
Nota
O valor predefinido é show.
HIDE_VERSION¶
Added in version 4.3.1.
Obsoleto desde a versão 5.17.
Atalho de compatibilidade para VERSION_DISPLAY. Defina isto para True para obter o mesmo comportamento que VERSION_DISPLAY="hide".
INTERNAL_BOT_EMAIL_TEMPLATE¶
Added in version 2026.7.1.
Modelo usado para gerar endereços email para contas robô internas do Weblate. A predefinição é "noreply-{scope}-{name}@weblate.org".
Pode conter {scope}, {name}, {username}, {site_title}, e {site_domain}.
Utilize {scope} e {name} ao gerar a parte local do email. O valor {username} contém o nome de utilizador scope:name interno.
Contas robô internas existentes são atualizadas quando migrate é executado. Contas do projeto de token de API não são afetadas.
IP_BEHIND_REVERSE_PROXY¶
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
The reverse proxy which connects to Weblate must overwrite the configured
header or append a verified peer address at the position selected by
IP_PROXY_OFFSET. Weblate does not verify which peer supplied the
header, so trusting a client-controlled value allows IP address spoofing.
Ensure that untrusted clients cannot reach Weblate without passing through the trusted proxy.
Nota
Isto está ligado por predefinição.
IP_PROXY_HEADER¶
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¶
Alterado na versão 5.0.1: O padrão mudou de 1 para -1.
Indica qual parte de IP_PROXY_HEADER é usada como endereço IP do cliente.
Dependendo da sua configuração, este cabeçalho pode consistir em vários endereços IP (por exemplo, X-Forwarded-For: client-ip, proxy-a, proxy-b) e pode configurar qual endereço do cabeçalho é usado como endereço IP do cliente aqui.
Aviso
Setting this affects the security of your installation. Select only an address added or verified by a proxy under your control. Addresses supplied by the client are untrusted. Ensure that the selected offset matches how your proxies construct the header.
See <https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For#security_and_privacy_concerns> for more details.
O padrão é -1.
LEGAL_DOCUMENT_CSS_CLASS¶
Added in version 2026.7.
Classe CSS adiciona aos invólucros à volta de modelos de documentos legais.
A predefinição é "tos". O Weblate não anexa estilo a esta classe; estilos personalizados legais podem usá-la para atuar em invólucros do documento. Defina isto para uma cadeia de carateres vazia para renderizar documentos legais sem uma classe de invólucro.
LEGAL_DOCUMENT_CSS_CLASS = ""
Veja também
LEGAL_TOS_DATE¶
Added in version 4.15.
Nota
Precisa de Módulo legal instalado para fazer isso funcionar.
Data em que os utilizadores aceitaram pela última vez os documentos legais . Sempre que a data for alterada, os utilizadores deverão concordar com os termos de serviço atuais e, quando um link de privacidade de política está disponível, a política de privacidade.
from datetime import date
LEGAL_TOS_DATE = date(2022, 2, 2)
LEGAL_URL¶
URL onde a sua instância de Weblate mostra os documentos legais dela.
Dica
When the Módulo legal module is enabled, this URL takes priority over its internal terms page in document links. The default terms template links to this URL when visited directly.
Exemplo:
LEGAL_URL = "https://weblate.org/terms/"
Veja também
LICENSE_EXTRA¶
Licenças adicionais para incluir nas opções de licença.
Nota
Cada definição de licença deve ser uma tupla do seu nome curto, um nome longo, um URL e um boolean, indicando se é uma licença livre.
Por exemplo:
LICENSE_EXTRA = [
(
"AGPL-3.0",
"GNU Affero General Public License v3.0",
"https://www.gnu.org/licenses/agpl-3.0-standalone.html",
True,
),
]
LICENSE_FILTER¶
Alterado na versão 4.3: A configurar este para valor em branco desativa o alerta de licença.
Filtrar licenças da lista para mostrar. Isto também desativa o alerta de licença quando configurado para vazio.
Nota
Este filtro usa os nomes de licença curtos.
Por exemplo:
LICENSE_FILTER = {"AGPL-3.0", "GPL-3.0-or-later"}
O seguinte desativa o alerta de licença:
LICENSE_FILTER = set()
Veja também
LICENSE_REQUIRED¶
Define se o atributo de licença em Configuração de componente é necessário.
Nota
Isto está desativado por predefinição.
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH¶
Se o comprimento de uma determinada tradução deve ser limitado. A restrição é o comprimento da cadeia fonte × 10 caracteres.
Dica
Defina isso como False para permitir traduções mais longas (até 10.000 caracteres) independentemente do comprimento da cadeia fonte.
Nota
O padrão é True.
LOCALIZE_CDN_URL e LOCALIZE_CDN_PATH¶
These settings configure the CDN add-ons, including
CDN de localização JavaScript, Ficheiros de tradução CDN, and
Kotlin SDK CDN.
LOCALIZE_CDN_URL defines root URL where the localization CDN is
available and LOCALIZE_CDN_PATH defines path where Weblate should
store generated files which will be served at the LOCALIZE_CDN_URL.
The files are served by your web server or CDN, not by Weblate; see
CDN de localização for secure serving guidance.
Dica
O Hosted Weblate usa o https://weblate-cdn.com/.
MATOMO_SITE_ID¶
ID do site no Matomo (antigo Piwik) que deseja usar para rastrear o Weblate.
Nota
Esta integração não suporta o Matomo Tag Manager.
Veja também
MATOMO_URL¶
URL completa (incluindo barra ao final) de uma instalação Matomo (anteriormente Piwik) que deseja usar para rastrear o uso do Weblate. Por favor, consulte <https://matomo.org/> para mais detalhes.
Dica
Esta integração não suporta o Matomo Tag Manager.
Por exemplo:
MATOMO_SITE_ID = 1
MATOMO_URL = "https://example.matomo.cloud/"
Veja também
NEARBY_MESSAGES¶
Quantidade de cadeias próximas para mostrar em cada direção no editor completo.
Este é apenas um valor padrão, os utilizadores podem ajustar isto em Perfil do utilizador.
DEFAULT_PAGE_LIMIT¶
Added in version 4.7.
Número padrão de elementos a serem exibidos quando a paginação está ativa.
PAGURE_CREDENTIALS¶
Added in version 4.3.2.
Lista para credenciais para servidores de Pagure.
PAGURE_CREDENTIALS = {
"pagure.io": {
"username": "weblate",
"token": "your-api-token",
},
}
O dicionário de configuração consiste em credenciais definidas para cada host de API. O layout é o mesmo para quase todas as integrações de controle de versão e é descrito em Configurar credenciais para controle de versão.
Veja também
PASSWORD_MINIMAL_STRENGTH¶
Added in version 5.10.2.
Pontuação mínima da palavra-passe conforme avaliada pelo estimador que verifica a força da palavra-passe zxcvbn.
Predefine para 0, o que significa que a verificação de força está desativada.
PASSWORD_RESET_URL¶
Added in version 5.17.
O URL para reiniciar a palavra-passe quando a autenticação é tratada por um fornecedor de identidade externo, tal como LDAP, SAML, ou OAuth.
Quando definido, Esqueceu-se da sua palavra-passe na página de início de sessão dá link para este URL em vez da página de reinicio de palavra-passe embutida do Weblate.
PRIVACY_URL¶
Added in version 4.8.1.
URL onde a sua instância de Weblate mostra sua política de privacidade.
Dica
When the Módulo legal module is enabled, this URL takes priority over its internal privacy page in document links. The default privacy template links to this URL when visited directly.
Exemplo:
PRIVACY_URL = "https://weblate.org/terms/"
Veja também
PRIVATE_COMMIT_EMAIL_OPT_IN¶
Added in version 4.15.
Configures whether the private commit e-mail is opt-in or opt-out.
With True (the default), users use their account e-mail unless they choose a
private commit e-mail. Set to False to use
PRIVATE_COMMIT_EMAIL_TEMPLATE by default.
Dica
This setting applies to new and existing users who have not explicitly chosen a commit e-mail. Users can still choose their account e-mail in the Conta settings. Bot accounts do not use the private default.
PRIVATE_COMMIT_EMAIL_TEMPLATE¶
Added in version 4.15.
Template to generate a private commit e-mail for a user. Defaults to "user-{user_id}@users.noreply.{site_domain}".
Pode conter {user_id}, {username}, {site_title}, e {site_domain}.
Set to a blank string to disable private commit e-mails and use the account e-mail when no commit e-mail has been explicitly chosen.
The default template uses the user ID rather than the username. Changing the template alone does not make private commit e-mails the default.
Alterado na versão 2026.11: The default previously used "{username}@users.noreply.{site_domain}".
Configure that template explicitly to retain the previous generated addresses.
Explicitly selected commit e-mail addresses are not changed.
Nota
O uso de um e-mail de commit diferente é opcional para os utilizadores, a menos que configurado por PRIVATE_COMMIT_EMAIL_OPT_IN. Os utilizadores podem configurar o seu e-mail de commit no Perfil público.
Veja também
PRIVATE_COMMIT_NAME_OPT_IN¶
Added in version 5.16.
Configures whether the private commit name is opt-in or opt-out.
With True (the default), users use their account name unless they choose a
private commit name. Set to False to use
PRIVATE_COMMIT_NAME_TEMPLATE by default.
Dica
This setting applies to new and existing users who have not explicitly chosen a commit name. Users can still choose their account name in the Conta settings. Bot accounts use their account name.
PRIVATE_COMMIT_NAME_TEMPLATE¶
Added in version 5.16.
Modelo para gerar um nome de commit privado para um utilizador. O padrão é "{site_title} user {user_id}"..
Pode conter {user_id}, {username}, {site_title}, e {site_domain}.
Set to a blank string to disable private commit names and use the account name. Changing the template alone does not make private commit names the default.
Nota
O uso de um nome de commit diferente é opcional para os utilizadores, a menos que configurado por PRIVATE_COMMIT_NAME_OPT_IN. Os utilizadores podem configurar o seu nome de commit no Perfil público.
Veja também
PROJECT_BACKUP_KEEP_COUNT¶
Added in version 4.14.
Define quantos backups por projeto são mantidos no servidor. O padrão é 3.
Veja também
PROJECT_BACKUP_KEEP_DAYS¶
Added in version 4.14.
Define por quanto tempo os backups do projeto serão mantidos no servidor. O tempo padrão é de 30 dias.
Veja também
PROJECT_BACKUP_UPLOAD_MAX_SIZE¶
Added in version 5.17.1.
Configura o tamanho máximo, em bytes, para enviar os ficheiros de cópia de segurança do projeto. A predefinição é 536870912 bytes (512 MiB).
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_UPLOAD_MAX_SIZE. As configurações de Docker também podem ser limitadas por CLIENT_MAX_BODY_SIZE; outras implementações podem ser limitadas pelo limite do tamanho do corpo do pedido do proxy reverso.
Veja também
PROJECT_BACKUP_IMPORT_MAX_MEMBERS¶
Added in version 5.17.
Define o número máximo de entradas ZIP permitidas ao importar uma cópia de segurança do projeto.
Isto é uma salvaguarda contra arquivos mal formados ou intencionalmente fragmentados. A predefinição é de 100000 entradas.
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_IMPORT_MAX_MEMBERS.
Veja também
PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE¶
Added in version 5.17.1.
Defines o tamanho máximo total não compresso, em bytes, para entradas ZIP em uma cópia de segurança de projeto importada. A predefinição é 536870912 bytes (512 MiB).
Isto limita arquivos que são pequenos quando enviados mas expandem para muitos mais dados durante a validação ou restauro.
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE.
Veja também
PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE¶
Added in version 5.17.
Define o tamanho não comprimido máximo, em bytes, para uma única entrada ZIP altamente compressa em uma cópia de segurança de projeto importada.
Este limite aplica-se apenas a entradas que são grandes o suficiente e comprimidas o suficiente para parecerem suspeitas. Ficheiros grandes de baixa compressão são intencionalmente permitidos aqui e espera-se que sejam limitados pelo limite de envio HTTP. A predefinição é 262144000 bytes (250 MiB).
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE.
Veja também
PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE¶
Added in version 5.17.
Define o tamanho não compresso mínimo, em bytes, ao qual o Weblate começa a considerar o rácio de compressão ZIP durante o importe da cópia de segurança de projeto.
Ficheiros mais pequenos são ignorados para a validação baseada em rácio de compressão para evitar rejeitar ficheiros de tamanho razoável que comprimem bem. A predefinição é 1048576 bytes (1 MiB).
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE.
Veja também
PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO¶
Added in version 5.17.
Define o rácio máximo permitido entre o tamanho compresso e não compresso para uma entrada ZIP grande durante a importação da cópia de segurança do projeto.
Isto é usado em conjunto com PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE e PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE para detetar entradas comprimidas suspeitas enquanto ainda permite ficheiros de pacote de repositório grande e outro conteúdo de baixa compressão. A predefinição é 250.
No Docker, configure isto usando a variável de ambiente WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO.
Veja também
PROJECT_NAME_RESTRICT_RE¶
Added in version 4.15.
Define uma expressão regular para restringir a nomenclatura do projeto. Quaisquer nomes correspondentes serão rejeitados.
Veja também
PROJECT_WEB_RESTRICT_HOST¶
Added in version 4.16.2.
Rejeitar o uso de determinados hosts no site do projeto. Qualquer subdomínio é correspondido, então incluir example.com também irá bloquear test.example.com. A lista deve conter apenas cadeias em letras minúsculas, o domínio analisado é transformado em letras minúsculas antes da corresponder.
Configuração padrão:
PROJECT_WEB_RESTRICT_HOST = {"localhost"}
PROJECT_WEB_RESTRICT_ALLOWLIST¶
Added in version 5.17.
Define um conjunto de abreviações isentas de PROJECT_WEB_RESTRICT_HOST, PROJECT_WEB_RESTRICT_NUMERIC, PROJECT_WEB_RESTRICT_PRIVATE e PROJECT_WEB_RESTRICT_RE ao validar o website do projeto. Abreviações do projeto correspondidas sem distinção entre maiúsculas e minúsculas.
Cuidado
Esta isenção enfraquece proteções de saída URL para projetos correspondentes, incluindo a restrição de alvo privado aplicado pela PROJECT_WEB_RESTRICT_PRIVATE. Use-a apenas para projetos confiados, geridos por administrador onde saltar estas verificações é intencional.
Configuração padrão:
PROJECT_WEB_RESTRICT_ALLOWLIST = set()
PROJECT_WEB_RESTRICT_NUMERIC¶
Added in version 4.16.2.
Rejeite o uso de endereço IP numérico no site do projeto. Ativado por padrão.
PROJECT_WEB_RESTRICT_PRIVATE¶
Added in version 5.17.
Rejeita usar o website do projeto e os URLs do navegador do repositório que apontam para endereços internos ou não públicos. Ativo por predefinição.
PROJECT_WEB_RESTRICT_RE¶
Added in version 4.15.
Define uma expressão regular para limitar o qua pode ser inserido como Site da Web do Projeto. Quaisquer URLs correspondentes serão rejeitadas.
WEBHOOK_PRIVATE_ALLOWLIST¶
Added in version 5.17.
Define nomes de anfitriões ou domínios isentes de WEBHOOK_RESTRICT_PRIVATE para entrega de webhooks de saída. Entradas seguem semânticas de correspondência de anfitrião Django, e por isso valores como hooks.internal.example ou .internal.example podem ser usados.
Configuração padrão:
WEBHOOK_PRIVATE_ALLOWLIST = []
Veja também
WEBHOOK_RESTRICT_PRIVATE¶
Added in version 5.17.
Rejeita URLs de webooks que apontam para endereços internos ou não públicos a não ser que o anfitrião alvo esteja incluído em WEBHOOK_PRIVATE_ALLOWLIST. Ativo por predefinição.
Quando ativo, nomes de anfitrião que não podem ser resolvidos durante a validação são rejeitados a não ser que sejam explicitamente incluídos em WEBHOOK_PRIVATE_ALLOWLIST.
Veja também
PUBLIC_ENGAGE¶
Added in version 5.16.2.
Permite uma página de participação do público mesmo com REQUIRE_LOGIN.
Veja também
REPORT_EXPIRY¶
Define quantos dias são retidos para a geração de relatórios de registos. A predefinição são 90 dias. Mudar o valor também muda quando o relatório se torna elegível para eliminação pela tarefa de limpeza diária.
RATELIMIT_NOTIFICATION_LIMITS¶
Added in version 5.14.
Limita quantas notificações para um único utilizador serão enviadas.
A configuração padrão é:
# Multi-level rate limiting for email notifications
# Each tuple contains (max_emails, time_window_seconds)
RATELIMIT_NOTIFICATION_LIMITS = [
# Prevent burst sends - 3 emails per 2 minutes
(3, 120),
# Equalize to avoid getting blocked for too long - 10 emails per hour
(10, 3600),
# Daily limit: 50 emails per day
(50, 86400),
]
API_RATELIMIT_ANON¶
Added in version 2026.10.
Default anonymous API rate limit. Defaults to "100/day".
Rates use a request count and a period of seconds, minutes, hours, or days, for
example "100/hour". A zero count rejects every request covered by this
throttle; None disables this throttle. Anonymous requests without an IP
override are also subject to API_RATELIMIT_USER.
API_RATELIMIT_USER¶
Added in version 2026.10.
Default authenticated API rate limit. Defaults to
"5000/hour". Uses the same rate syntax as API_RATELIMIT_ANON.
Authenticated requests are counted per user; anonymous requests are counted
per client IP. Set None to disable this throttle.
API_RATELIMIT_USER_OVERRIDES¶
Added in version 2026.10.
Mapping of exact usernames to API rate limits. Defaults to an empty dictionary.
Override rates require a positive request count, or None for an exemption.
These rules take precedence over API_RATELIMIT_IP_OVERRIDES.
API_RATELIMIT_USER_OVERRIDES = {"automation": "20000/hour"}
API_RATELIMIT_IP_OVERRIDES¶
Added in version 2026.10.
Mapping of IPv4 or IPv6 addresses and CIDR networks to API rate limits. Defaults
to an empty dictionary. The most specific matching network applies to both
anonymous and authenticated requests, unless a username override matches.
CIDRs must specify network addresses; duplicate normalized networks are rejected.
Override rates require a positive request count, or None for an exemption.
API_RATELIMIT_IP_OVERRIDES = {
"192.0.2.42": None,
"198.51.100.0/24": "10000/hour",
"2001:db8::/48": "10000/hour",
}
See Limitação de taxa da API for counting behavior and trusted proxy requirements.
RATELIMIT_ATTEMPTS¶
A quantidade máxima de tentativas de autenticação antes da limitação da taxa ser aplicada.
A predefinição é 5.
Veja também
RATELIMIT_WINDOW¶
Por quanto tempo a autenticação é aceita após a limitação da taxa ser aplicada.
Uma quantidade de segundos, padrão para 300 (5 minutos).
Veja também
RATELIMIT_LOCKOUT¶
Por quanto tempo a autenticação é bloqueada após a limitação da taxa ser aplicada.
Uma quantidade de segundos com a predefinição de 600 (10 minutos).
Veja também
RATELIMIT_BULK_EDIT_ATTEMPTS¶
Maximum browser bulk-edit submissions per user during
RATELIMIT_BULK_EDIT_WINDOW. Defaults to 10. Preview requests count
toward this limit.
RATELIMIT_BULK_EDIT_WINDOW¶
Window for browser bulk-edit rate limiting, in seconds. Defaults to 60.
RATELIMIT_BULK_EDIT_LOCKOUT¶
Lockout after exceeding the browser bulk-edit rate limit, in seconds. Defaults to 60.
RATELIMIT_MACHINERY_ATTEMPTS¶
Maximum interactive machine-translation requests per user during
RATELIMIT_MACHINERY_WINDOW. Defaults to 30. The usual superuser
rate-limit exemption applies.
Interactive requests also allow at most two concurrent calls per user per configured service installation. Other installations remain available. Excess requests return HTTP 429. Slots are released on completion or failure. Disconnected requests retain their slots until the provider work finishes, including synchronous calls already running in executor threads. Abandoned distributed locks expire after one hour.
RATELIMIT_MACHINERY_WINDOW¶
Window for interactive machine-translation rate limiting, in seconds. Defaults to 60.
RATELIMIT_MACHINERY_LOCKOUT¶
Lockout after exceeding the interactive machine-translation rate limit, in seconds. Defaults to 60.
RATELIMIT_OCR_ATTEMPTS¶
Maximum screenshot image text searches per signed-in session during
RATELIMIT_OCR_WINDOW. Defaults to 6.
RATELIMIT_OCR_WINDOW¶
Window for screenshot image text search rate limiting, in seconds. Defaults to 60.
RATELIMIT_OCR_LOCKOUT¶
Lockout after exceeding the screenshot image text search rate limit, in seconds. Defaults to 60.
REGISTRATION_ALLOW_BACKENDS¶
Added in version 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 registar-se, mas o Weblate não mostrará as hiperligações para registar na interface do utilizador.
Exemplo:
REGISTRATION_ALLOW_BACKENDS = ["azuread-oauth2", "azuread-tenant-oauth2"]
Dica
Os nomes de backend correspondem aos nomes usados na URL para autenticação.
Veja também
REGISTRATION_CAPTCHA¶
Se o registo de novas contas está protegido por CAPTCHA. O padrão é ativado.
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.
A proteção atualmente consiste nas seguintes etapas:
Captcha matemático a ser resolvido pelo utilizador.
Desafio de prova de trabalho calculado pelo navegador. A dificuldade pode ser ajustada usando
ALTCHA_COST,ALTCHA_MEMORY_COST, eALTCHA_PARALLELISM.
REGISTRATION_EMAIL_MATCH¶
Permite filtrar quais endereços de e-mail podem ser registados.
The restriction also applies to addresses imported from authentication
providers and addresses selected as public or commit e-mail addresses.
Provider addresses that do not match are skipped. This includes GitHub
noreply addresses: to use them for commits, explicitly allow
users.noreply.github.com in the expression.
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_ALLOW_DISPOSABLE_EMAILS¶
Added in version 5.16.1.
Permitir registo com domínios de e-mail descartáveis. Quando ativo, a lista de bloqueios de domínios descartável é ignorada. A predefinição é False.
This also applies to addresses imported from authentication providers and addresses selected as public or commit e-mail addresses.
REGISTRATION_OPEN¶
Se o registo de novas contas é permitido atualmente. O padrão é ativado.
Esta configuração afeta a autenticação embutida por endereço de e-mail ou através do Python Social Auth (pode permitir certos back-ends usando 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.
REGISTRATION_REBIND¶
Added in version 4.16.
Allow signed-out users to link a new third-party authentication provider to an existing account when its e-mail address matches. Turn this on when migrating between trusted authentication providers. Existing users can add a provider while signed in regardless of this setting. E-mail registration and password reset use their own confirmation flow and are not affected.
Nota
Off by default. When enabled, Weblate trusts configured providers” e-mail claims for account matching. Use only providers that verify these addresses; otherwise another person could link an identity to an existing account.
REPOSITORY_ALERT_THRESHOLD¶
Added in version 4.0.2.
Limiar para acionar um alerta para repositórios desatualizados ou aqueles que contêm muitas alterações. A predefinçao é 25.
Veja também
OIDC_PROVIDER_ENABLED¶
Added in version 2026.11.
Enable Weblate’s optional OpenID Connect identity provider. Defaults to False.
Install the oidc extra, add weblate.oidc and oauth2_provider to
INSTALLED_APPS, and configure signing keys before enabling it.
OAUTH2_PROVIDER¶
Added in version 2026.11.
Configuration dictionary for the optional OpenID Connect identity provider, using
Django OAuth Toolkit settings.
OIDC_RSA_PRIVATE_KEY must contain an unencrypted RSA private key of at
least 2048 bits. OIDC_RSA_PRIVATE_KEYS_INACTIVE can contain previous keys
for rotation. Load keys from protected files rather than storing them in
version control.
Weblate supplies identity scopes, its claim validator, the canonical issuer, HTTPS redirect requirements, S256 PKCE, one-hour access and ID token lifetimes, and rotating refresh tokens with a 30-day idle expiry. Entries in this dictionary override these defaults. Keep the Weblate claim validator to preserve account eligibility checks and identity claim mapping. The provider accepts RS256 authorization-code clients and refresh tokens. Public clients authenticate using S256 PKCE without a client secret.
Weblate enables the toolkit’s RFC 9700 protections by default. Authorization
responses include the iss issuer parameter, and newly issued access and
refresh tokens are stored as hashes. Enabling hashed storage does not erase
plaintext token values already present in the database.
REFRESH_TOKEN_GRACE_PERIOD_SECONDS defaults to 0. A client that loses a
refresh response may need the user to sign in again. A nonzero grace period
requires setting COMPLIANT_BCP_RFC9700_TOKEN_STORAGE to False, which stores
usable token values in the database. The toolkit’s deployment checks reject
combining hashed storage with a nonzero grace period. They also reject disabling
refresh-token replay protection or PKCE, allowing HTTP callbacks, or enabling
wildcard redirect matching while the corresponding compliance gates are enabled.
REQUIRE_LOGIN¶
Added in version 4.1.
Isto ativa django.contrib.auth.middleware.LoginRequiredMiddleware e configura o framework REST para exigir autenticação para todos os pontos finais da API.
Alterado na versão 5.15: Weblate agora recorre ao middleware integrado do Django.
Nota
Isto é implementado em Configuração de amostra. Para Docker, utilizar WEBLATE_REQUIRE_LOGIN.
Veja também
GOOGLE_CLOUD_ERROR_REPORTING¶
Configuração para A coletar relatórios de erros e monitoramento do desempenho usando Google Cloud Error Reporting. Defina para None para desativar a integração, ou defina um dicionário de argumentos de palavra chave para o cliente Google Cloud Error Reporting.
O Weblate fornece serviço na forma de weblate e versão enquanto a versão atual do Weblate ou revisão Git. Valores explícitos no dicionário sobrescrevem estes valores.
OPENTELEMETRY_ENABLED¶
Added in version 2026.6.
Ativa o rastreio de backend usando OpenTelemetry. Desativado por predefinição.
Rastreios são exportados apenas quando isto é ativo e OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT está configurado.
OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT¶
Rastreios de endpoint OTLP HTTP para OpenTelemetry, por exemplo https://collector.example.com/v1/traces.
OPENTELEMETRY_EXPORTER_OTLP_HEADERS¶
Cabeçalhos HTTP adicionais para o exportador OTLP OpenTelemetry. A predefinição é um dicionário vazio.
OPENTELEMETRY_EXTRA_RESOURCE_ATTRIBUTES¶
Atributos de recurso OpenTelemetry adicionais. A predefinição é um dicionário vazio.
OPENTELEMETRY_SERVICE_NAME¶
Nome de serviço OpenTelemetry. A predefinição é weblate.
OPENTELEMETRY_TRACES_SAMPLE_RATE¶
Configure a taxa de amostragem para rastreios do OpenTelemetry. Defina como 1 para rastrear todos os eventos, 0 (o padrão) desativa o rastreamento.
SENTRY_DSN¶
DSN do Sentry para usar para A coletar relatórios de erros e monitoramento do desempenho.
Veja também
SENTRY_ENVIRONMENT¶
Configura o ambiente para o Sentry. O padrão é devel.
SENTRY_MONITOR_BEAT_TASKS¶
Added in version 5.13.
Configura se se monitoriza ou não tarefas Celery Beat com Sentry. A predefinição é True.
SENTRY_PROFILES_SAMPLE_RATE¶
Configure a taxa de amostragem para monitorizar de desempenho. Defina como 1 analizar todos os eventos rastreados (o padrão), 0 desativa o rastreamento.
Veja também
SENTRY_SEND_PII¶
Permitir que o Sentry colete determinadas informações de identificação pessoal. Desativado por padrão.
Alterado na versão 5.7: Isto está desativado por padrão agora, costumava estar ativado por padrão.
SENTRY_TRACES_SAMPLE_RATE¶
Configure a taxa de amostragem para monitoramento de perfil. Defina como 1 para rastrear todos os eventos, 0 (o padrão) desativa o rastreamento.
Veja também
SIMPLIFY_LANGUAGES¶
Use códigos de idioma simples para combinações predfinidas de idioma/país. Por exemplo, uma tradução de fr_FR usará o código de idioma fr. Este é geralmente o comportamento desejado, pois simplifica a lista de idiomas para essas combinações predefinidas.
Desative isto se quiser traduções diferentes para cada variante.
SITE_DOMAIN¶
Configura o domínio do site. Necessário para produzir ligações absolutas corretas em muitos escopos (por exemplo, ativação de e-mails, notificações ou feeds RSS).
Se o Weblate é executado numa porta 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¶
Redireciona os utilizadores diretamente para um projeto ou componente em vez de mostrar o painel. Pode configurá-lo como True para que funcione apenas se houver um único projeto no Weblate. Alternativamente, defina o projeto, e este redirecionará incondicionalmente para este projeto.
Exemplo:
SINGLE_PROJECT = "test"
SSH_EXTRA_ARGS¶
Added in version 4.9.
Permite adicionar parâmetros personalizados quando o Weblate chama o SSH. Útil ao se conectar a servidores usando criptografia legada ou outros recursos não padrão.
Por exemplo, quando a conexão SSH em Weblate falha com Unable to negotiate with legacyhost: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1, pode ativar isso usando:
SSH_EXTRA_ARGS = "-oKexAlgorithms=+diffie-hellman-group1-sha1"
Dica
A cadeia é avaliada pelo shell, portanto, certifique-se de que todos os espaços em branco e caracteres especiais estejam entre aspas.
Aviso
Esta é a configuração confiada controlada por administrador. Opções SSH arbitrárias podem alterar roteamento de conexão e sobrescrever a afixação de endereço fornecido pelo VCS_RESTRICT_PRIVATE. Administradores são responsáveis pelo impacto de segurança e compatibilidade para todos os argumentos configurados.
Veja também
STATUS_URL¶
A URL onde a sua instância de Weblate relata o estado dela.
SUPPORT_STATUS_CHECK¶
Added in version 5.5.
Defaults to True. When enabled, superusers without integrated support are
redirected after login to a page offering professional support, at most once
every 180 days per account. The reminder starts once the installation has a
change older than 14 days and waits for an HTML page navigation. A
Continue to Weblate action returns to the intended page.
Set this to False to disable the redirect. This does not hide support or
donation links elsewhere in the interface.
Dica
Melhore a sua experiência com o Weblate comprando uma assinatura de suporte e impulsionando o progresso do Weblate, em vez de desativá-lo.
TRANSLATION_MAX_SIZE¶
Added in version 2026.11.2.
Maximum size, in bytes, of a translation file before parsing. Applies to all
formats and to repository files as well as uploads, including source templates
and intermediate files. For directory-based formats, the limit applies to each
metadata file. When unset or None, uses TRANSLATION_UPLOAD_MAX_SIZE
(50 MB by default). An explicit value overrides this fallback.
Uploads must also satisfy TRANSLATION_UPLOAD_MAX_SIZE, even when
TRANSLATION_MAX_SIZE is higher. This byte limit does not bound decompression
or other expansion performed by a parser.
Translation files are also limited to 100,000 logical content strings per file before database synchronization or import. Existing tighter limits for compressed formats remain in effect.
In Docker, configure this using WEBLATE_TRANSLATION_MAX_SIZE.
TRANSLATION_UPLOAD_MAX_SIZE¶
Added in version 5.17.1.
Configura o tamanho máximo, em bytes, para os ficheiros de tradução enviados. A predefinição é 50 MB.
Uploads must also satisfy TRANSLATION_MAX_SIZE.
No Docker, configure isto usando a variável de ambiente WEBLATE_TRANSLATION_UPLOAD_MAX_SIZE.
UNUSED_ALERT_DAYS¶
Added in version 4.17.
Configura quando o alerta de Componente parece não utilizado é acionado.
O padrão é 365 dias, defina como 0 para desativar.
UPDATE_LANGUAGES¶
Added in version 4.3.2.
Controla se a base de dados de idiomas deve ser atualizada ao executar a migração de bases de dados e está ativado por padrão. Esta configuração não tem efeito na invocação de setuplang.
Aviso
A exibição de idiomas pode se tornar inconsistente com isto. As definições de idioma do Weblate se expandem ao longo do tempo e não exibirão o código de idioma para os idiomas definidos.
Veja também
URL_PREFIX¶
Esta configuração permite que execute Weblate em algum caminho (caso contrário, depende de ser executado a partir da raiz do servidor web).
Nota
Para usar esta configuração, também precisa configurar o seu servidor para remover este prefixo. Por exemplo, com o WSGI, isso pode ser alcançado definindo WSGIScriptAlias.
Dica
O prefixo deve iniciar com um /.
Exemplo:
URL_PREFIX = "/translations"
Nota
Esta configuração não funciona com o servidor embutido do Django, teria que ajustar urls.py para conter este prefixo.
When using a URL prefix, expose Weblate’s prefixed robots.txt at the origin’s
/robots.txt through your reverse proxy. Its crawl rules and sitemap URL
include the configured prefix. If other applications share the origin, merge
their crawl rules in the proxy-served document as appropriate.
VCS_ALLOW_HOSTS¶
Added in version 5.15.
Um conjunto de anfitriões a permitir durante a configuração do URL VCS. A predefinição é um conjunto vazio, que não faz qualquer filtragem.
Quando VCS_RESTRICT_PRIVATE está ativado, anfitriões correspondentes também estão isentos da restrição de alvo privado. Esta isenção também é necessária para backends VCS que não podem vincular a conexão do cliente ao endereço validado pelo Weblate, tal como Mercurial e Subversion.
Use VCS_PRIVATE_ALLOWLIST instead when hosts should be exempt from
the private-target restriction without filtering access to other public hosts.
VCS_PRIVATE_ALLOWLIST¶
Added in version 2026.9.
Defines hostnames or domains exempt from VCS_RESTRICT_PRIVATE.
Unlike VCS_ALLOW_HOSTS, this setting does not filter access to other
hosts. Entries follow Django host matching semantics, so values such as
vcs.internal.example or .internal.example can be used.
The exemption is needed for VCS backends which cannot bind the client connection to the address validated by Weblate, such as Mercurial and Subversion. It can also be used to allow private Git repository hosts.
When VCS_ALLOW_HOSTS is non-empty, its host filter still applies and
takes precedence over this allowlist.
Configuração padrão:
VCS_PRIVATE_ALLOWLIST = []
Veja também
VCS_ALLOW_SCHEMES¶
Added in version 5.15.
Um conjunto de esquemas URL a permitir ao configurar o URL VCS. Apenas https e ssh são permitidos por predefinição.
The file scheme and bare filesystem paths are disabled for security reasons
because they could allow component editors to access repositories on the server
filesystem. Including file in this setting prevents Weblate from starting
with an ImproperlyConfigured error.
VCS_RESTRICT_PRIVATE¶
Added in version 5.17.
Reject VCS repository URLs pointing to internal or non-public addresses unless
the target host is included in VCS_ALLOW_HOSTS or matches
VCS_PRIVATE_ALLOWLIST. On by default.
When enabled, hostnames that cannot be resolved during validation are rejected
unless they are trusted by VCS_ALLOW_HOSTS or
VCS_PRIVATE_ALLOWLIST.
For Git repositories accessed over HTTPS or SSH, Weblate binds each VCS command
to the addresses approved during runtime validation for direct connections.
Configured HTTP proxies are trusted infrastructure and resolve repository
hostnames instead. Automatic redirect following remains disabled. Permanent
same-host HTTP redirects are probed separately through the same outbound route,
validated, and stored as the canonical component repository URL. Cross-host
redirects have to be configured manually. Mercurial, Subversion, custom VCS
backends, and additional URL schemes are rejected unless the target host is
trusted by VCS_ALLOW_HOSTS or VCS_PRIVATE_ALLOWLIST.
Filtragem de saída ao nível da rede que bloqueia intervalos de endereços internos, de loopback, links locais, reservados e de metadados na nuvem é recomendado para uma defensa em profundidade, especialmente para integrações personalizadas e extensões instaladas por um administrador.
VCS_API_DELAY¶
Added in version 4.15.1.
Configura o atraso mínimo em segundos, entre chamadas de API de terceiros em Pull requests do GitHub, Merge requests do GitLab, Pull requests do Gitea, Merge requests do Pagure, e Pull requests do Azure DevOps.
Esta taxa limita as chamadas de API do Weblate a esses serviços para evitar sobrecarregá-los.
Se estiver afetado pelo limitador de taxa secundário no GitHub, aumentar isto pode ajudar.
O valor predefinido é 10.
VCS_API_TIMEOUT¶
Added in version 5.15.
Configura o tempo limite em segundos para chamadas API de terceiros como bifurcar ou criar merge requests em Pull requests do GitHub, Merge requests do GitLab, Pull requests do Gitea, Merge requests do Pagure, e Pull requests do Azure DevOps.
O valor predefinido é 10.
VCS_BACKENDS¶
Configuração de backends VCS disponíveis.
Nota
O Weblate oferece backends configurados quando os seus comandos necessários estão disponíveis. Versões de comando exatas são validadas pela implementação e verificações de integridade de configuração periódicas.
Dica
Pode limitar escolhas ou adicionar back-ends VCS personalizados a usar isto.
VCS_BACKENDS = ("weblate.vcs.git.GitRepository",)
Veja também
VCS_CLONE_DEPTH¶
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 padrão, isso inclui todas as extensões embutidas, ao estender a lista, provavelmente pdoe manter as existentes ativadas, por exemplo:
WEBLATE_ADDONS = (
# Built-in add-ons
"weblate.addons.gettext.GenerateMoAddon",
"weblate.addons.gettext.UpdateLinguasAddon",
"weblate.addons.gettext.UpdateConfigureAddon",
"weblate.addons.gettext.MsgmergeAddon",
"weblate.addons.cleanup.CleanupAddon",
"weblate.addons.consistency.LanguageConsistencyAddon",
"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.properties.PropertiesSortAddon",
"weblate.addons.git.GitSquashAddon",
"weblate.addons.removal.RemoveComments",
"weblate.addons.removal.RemoveSuggestions",
"weblate.addons.resx.ResxUpdateAddon",
"weblate.addons.autotranslate.AutoTranslateAddon",
"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.
ADDON_ACTIVITY_LOG_EXPIRY¶
Added in version 5.6.
Configura por quanto tempo os logs de atividade dos complementos são mantidos. O padrão é de 180 dias.
WEBLATE_EXPORTERS¶
Added in version 4.2.
Lista de exportadores disponíveis que oferecem a transferência de traduções ou glossários em vários formatos de ficheiro.
Veja também
WEBLATE_FORMATS¶
Lista de formatos de ficheiro disponíveis para uso.
Nota
A lista predefinida já tem os formatos comuns.
Veja também
MACHINERY_ERROR_KEEP_DAYS¶
Added in version 2026.11.
Configures how long translation service error logs are kept, in days. Defaults to 30. A daily background task removes older entries.
WEBLATE_MACHINERY¶
Added in version 4.13.
List of translation services available for use.
WEBLATE_GPG_IDENTITY¶
Identidade usada pelo Weblate para assinar os commits Git, por exemplo:
WEBLATE_GPG_IDENTITY = "Weblate <weblate@example.com>"
O chaveiro GPG do Weblate é pesquisado por uma chave correspondente (home/.gnupg em DATA_DIR). Se não for encontrado, uma chave é gerada. Consulte Assinando commits do Git com GnuPG para mais detalhes.
Veja também
WEBSITE_REQUIRED¶
Define se Site da Web do Projeto deve ser especificado ao criar um projeto. Ativado por padrão, pois se adapta às configurações do servidor público.
WEBSITE_ALERTS_ENABLED¶
Added in version 5.17.
Predefinição: True
Define se o Weblate deve verificar a disponibilidade de projeto do website e mostrar alertas para websites de projetos inalcançáveis.
Quando definido para False, o Weblate ignorará verificações de disponibilidade do website e não gerará alertas do website do projeto. Isto é útil quando:
Os seus websites estão atrás de firewalls que bloqueiam os pedidos do Weblate
Quer evitar erros do tipo 403/503 de proteção de robôs
A disponibilidade do website do projeto não é uma preocupação para a sua instalação
Veja também
Configurar credenciais para controle de versão¶
Dica
Esta secção descreve as variáveis de credenciais do VCS como GITHUB_CREDENTIALS, GITLAB_CREDENTIALS, GITEA_CREDENTIALS, PAGURE_CREDENTIALS, BITBUCKETSERVER_CREDENTIALS.
O dicionário de configuração consiste em credenciais definidas para cada host de API. O host da API pode ser diferente do que usa no navegador web, por exemplo, a API do GitHub é acedida como api.github.com.
As credenciais também podem ser substituídas em URL de submissão do repositório ou Repositório do código-fonte (se o URL de push não estiver configurado), elas têm precedência sobre as especificadas no ficheiro de configuração.
A seguinte configuração está disponível para cada host:
usernameUtilizador API, necessário.
tokenToken de API para o utilizador da API, obrigatório.
schemeAdded in version 4.18.
Substituição de esquema. O Weblate tenta analisar o esquema a partir do URL do repositório e reverter para
https. Se executar o servidor da API internamente, talvez queira utilizarhttpem vez disso, mas considere a segurança.
Dica
No contentor do Docker, as credenciais podem ser configuradas usando variáveis de ambiente, consulte Credenciais de sites de alojamento de código.
Anonymous bot protection¶
Added in version 2026.11.
Aviso
This feature is a technology preview for evaluating application-aware bot protection as an alternative to Anubis. Its configuration and behavior may change, and it may be removed if it does not prove sufficiently useful. Long-term maintenance is not guaranteed.
While verification runs automatically, visitors see a randomly selected tip about Weblate features.
BOT_PROTECTION_ENABLED¶
Default: False. Enable self-hosted, proactive proof of work for anonymous
visitors. Place weblate.utils.bot_protection.BotProtectionMiddleware after
Django’s session middleware and before Weblate’s authentication middleware,
following the example settings. Authenticated users bypass protection, including
when no proof-of-work cookie exists. Existing authentication and API rate limits
remain in effect. Proof of work never grants authentication or permissions.
Anonymous HTML GET requests receive an automatic challenge. HEAD and unsafe
methods receive HTTP 403 without challenge HTML; request bodies are never
replayed. REST API requests without an explicit HTML Accept media type are
exempt. HTML API browsing requires verification. Changing Accept on a regular
page route does not exempt it. Account routes under /accounts/ are exempt so
sign-in flows and redirects to login work without verification. Hooks, widget
images (including legacy image redirects), feeds, OIDC provider routes under
/oidc/, static files, health, robots, and well-known routes are exempt.
Hosted integration API routes under /hosted/api/ are exempt when
wlhosted.integrations is installed; their signed-payload authentication
remains in effect.
Widget configuration pages remain protected. Public assets, including custom
CSS, manifests, icons, and Open Graph images, are exempt. The JavaScript
translation catalog and Exportador git protocol routes, including clone
redirects, are also exempt so they can use their existing localization and
authentication. Login exemptions and bot exemptions are independent; making a
view public does not automatically bypass bot protection.
BOT_PROTECTION_DIFFICULTY¶
Default: 4. Number of leading hexadecimal zeroes required, from 1 to 6.
Four zeroes require an average of 65,536 SHA-256 attempts. ALTCHA v2 runs with
SHA-256 and cost 1: challenge generation performs no candidate hashing and
verification performs one candidate hash, independent of difficulty. Registration
and other form CAPTCHAs retain their existing Argon2id configuration.
Challenge and clearance lifetime¶
BOT_PROTECTION_CHALLENGE_AGE defaults to 300 seconds (allowed: 1–3600).
BOT_PROTECTION_COOKIE_AGE defaults to 3600 seconds (allowed: 1–86400).
Clearance has a fixed expiry and is bound to the client IP and deployment.
Cookies are host-only, Secure, HttpOnly, and SameSite=Lax. HTTPS is required.
Network changes require another challenge. Shared NAT clients can share copied
clearance; PoW increases harvesting cost but does not prevent capable solvers.
The challenge uses a separate CSRF cookie and Django’s token and origin checks,
without creating an application session. After solving a challenge, the browser checks its clearance cookie through
/-/pow/check/ before navigating, without invoking the destination view. An
expired challenge is refreshed automatically once; repeated expiry and other
failures leave Retry and sign-in available. Failure messages distinguish invalid
verification, replay, cookie/CSRF problems, and service unavailability.
Browser workers calculate the solution without blocking the main thread. Visitors without JavaScript or workers can sign in instead. Challenge assets must be available from the same origin.
BOT_PROTECTION_CACHE_ALIAS¶
Default: "default". Shared Redis or Memcached cache used to atomically consume
valid solutions once. No replay entries are created for unsolved challenges.
Cache failures reject verification with HTTP 503. Ordinary clearance checks do
not access the database or shared cache. Sessionless challenge generation only
accesses the shared cache to increment a best-effort issued-challenge counter.
Keep the replay cache available and sized to retain entries through challenge
expiry: eviction or cache loss can permit reuse of otherwise valid solutions.
Normal Django session validation still accesses the configured session backend.
The management Performance report shows issued challenges and
verification outcomes for the current hour and the previous 24 completed hours.
It also shows requests rejected with pow_required without issuing a challenge
because of their method or Accept header. These counts exclude explicit
bot_denied policy denials and exempt requests, and count requests rather than
unique clients.
Hours are aligned to UTC. Hourly buckets in the PoW cache expire after 25 hours;
eviction and outages can lose counts. Counter failures never change challenge
or verification responses. Following an upgrade from minute buckets, totals
populate as new events occur.
These counts are also available from GET /api/metrics/. Issued challenges
and verification outcomes indicate relative volumes, not an exact count of
unattempted challenges: verification requests can include retries, replays, and
malformed submissions.
The weblate.bot_protection logger emits structured verification events with
event, reason, status, and count fields, without proof payloads or
client identifiers. Configure a log handler that retains these fields for
diagnosis during cache outages. Clearance checks remain independent of the
cache; issued-challenge, pow_required, and verification outcome counters use it.
BOT_PROTECTION_EXEMPT_PATHS¶
Default: []. Additional paths relative to the Weblate deployment prefix.
A trailing slash exempts that entire path prefix; other entries match exactly.
Use narrow exceptions for integrations that cannot solve challenges.
BOT_PROTECTION_EXEMPT_AGENTS¶
Default: []. Case-insensitive User-Agent regular expressions that bypass bot
protection for all HTTP methods and paths. Patterns use search matching against
the first 1,024 characters of the header. Invalid expressions prevent startup
when bot protection is enabled.
Use this for uptime monitoring of application pages, such as measuring latency
on /. Simple health checks on /healthz/ are already exempt.
For a monitor configured to send the User-Agent Weblate-Uptime/1.0:
BOT_PROTECTION_EXEMPT_AGENTS = [r"^Weblate-Uptime/1\.0$"]
These exemptions trust a client-supplied, spoofable header. They override unwanted-agent denial and do not depend on crawler verification or robots.txt. They bypass only bot protection: authentication, permissions, and existing rate limits still apply. The proof-of-work verification endpoint retains its normal validation.
Verified crawler configuration¶
BOT_PROTECTION_CRAWLER_FILE defaults to an empty string, selecting the packaged
IP snapshot. The initial set follows Anubis’s IP-based allowed-crawler definitions
and adds SeznamBot:
Googlebot, Bingbot, Applebot, DuckDuckBot, QwantBot, MojeekBot, Marginalia, Common Crawl (CCBot), Arquivo.pt, and SeznamBot use official address feeds.
KagiBot, Internet Archive, and Wikimedia’s Citoid and Zotero translation services use reviewed bundled ranges, maintained with Weblate releases.
Verification requires a matching User-Agent and source IP. Verified crawlers bypass protection only for GET and HEAD requests to paths allowed by the shared robots.txt crawl policy, including sitemap documents. Other requests follow the normal challenge or deny policy. Explicit endpoint exemptions, configured exempt paths, valid clearance, and authenticated sessions still take precedence. Internet Archive and Arquivo.pt deliberately allow their listed networks regardless of User-Agent, following Anubis so that browser-like archival requests work. These exceptions trust the service networks, not individual crawler processes. No crawler bypass grants authentication or access to private content.
Set an absolute writable filename and run weblate update_crawler_ranges daily
using an operator-managed scheduler, then restart all application workers to
load the updated snapshot. It downloads bounded datasets only from
fixed official HTTPS sources and publishes validated updates atomically. A failed
provider retains its previous ranges and retrieval time; successful providers
still update. The command exits unsuccessfully and lists failed providers, so
monitor its exit status. Administrator-defined entries are preserved.
HTTP requests never download ranges or perform DNS lookups.
Crawler snapshots are loaded once during application startup. Requests use parsed networks in memory without checking file freshness or retrieval age. Ranges remain active until restart; packaged snapshots are updated through Weblate releases. Custom snapshot updates also require restarting application workers. Retrieval timestamps are metadata and do not expire ranges.
BOT_PROTECTION_CRAWLER_RULES defaults to {} and extends or overrides the
mapping from provider identifiers to User-Agent regular expressions. Built-in
identifiers are googlebot, bingbot, applebot, duckduckbot,
qwantbot, mojeekbot, marginalia, commoncrawl, arquivo-pt,
seznambot, kagibot, internet-archive, and wikimedia-citoid.
Custom providers must also have verified CIDRs in the local snapshot’s ranges
mapping and a Unix retrieval timestamp in its refreshed_at mapping, both keyed
by provider identifier. Record official sources when maintaining custom ranges.
Unwanted crawler configuration¶
BOT_PROTECTION_UNWANTED_AGENTS defaults to [] and accepts User-Agent
regular expressions. BOT_PROTECTION_UNWANTED_ACTION defaults to
"challenge"; use "deny" to return HTTP 403 instead. Valid clearance and
session authentication take precedence. These rules are an administrative
policy, not verified identity. No GeoIP, fingerprinting, or behavioral scoring
is performed.
Deploy behind HTTPS and configure Executar por trás de um proxy reverso client-IP handling correctly. Do not trust client-supplied forwarding headers. Disable shared proxy caching for protected application routes and preserve no-store responses and cookies. Apply proxy body-size and connection limits: application PoW does not protect against volumetric network attacks.
Benchmarking¶
Use a disposable HTTPS deployment with production-like data and proxy caching
disabled. Copy Cookie headers for an authenticated browser and a cleared anonymous
browser into separate private files. Run the following command, supplying all
application worker process IDs with repeated --server-pid arguments:
.venv/bin/python scripts/benchmark-bot-protection.py https://test.example/projects/ \
--authenticated-cookie-file /tmp/auth-cookie \
--clearance-cookie-file /tmp/pow-cookie --server-pid 1234
The script reports requests per second, worker CPU seconds, resident memory, status counts, and p50/p95/p99 latency at concurrency 1, 32, and 128. It compares authenticated, cleared anonymous, new anonymous, and repeated unsolved requests. Distinct anonymous cookie states simulate many visitors without creating Django sessions; to measure distinct source IPs, run load generators on multiple hosts. Supply process IDs for the shared cache as well when measuring its CPU cost. Cookie files contain credentials: remove them after the benchmark. Record machine specifications, worker counts, page data, proxy configuration, and cache setup alongside results. Check status counts to catch expired cookies during a run.