Módulos opcionais do Weblate¶
Estão disponíveis vários módulos opcionais para você configurar.
Exportador git¶
Fornece acesso de apenas leitura ao repositório Git subjacente usando HTTP(S).
Instalação¶
Adicione
weblate.gitexportàs apps instaladas emsettings.py:INSTALLED_APPS += ("weblate.gitexport",)
Exporte repositórios existentes migrando a sua base de dados após a instalação:
weblate migrate
Dica
Git exporter is turned on in our official Docker image. To turn it off, use:
WEBLATE_REMOVE_APPS=weblate.gitexport
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 explorar os repositórios com acesso restrito (com controlo de acesso Privado ou quando REQUIRE_LOGIN está ativado) requer um código da API que pode ser obtido no seu perfil de utilizador:
git clone 'https://user:KEY@example.org/git/weblate/main/'
Nota
Weblate serves the Git repository itself, but it does not serve Git LFS
objects. For repositories using Git LFS, clone from the upstream repository
and add Weblate as another remote. If you only need Git-tracked files, you
can clone from Weblate with GIT_LFS_SKIP_SMUDGE=1 to skip downloading
Git LFS objects.
Dica
By default members of Users group and anonymous user have access to the repositories for public projects via Access repository and Power user roles.
Faturação¶
Isso é usado no Weblate Alojado para definir planos de faturação, rastrear faturas e limites de uso.
Instalação¶
1. Add weblate.billing to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.billing",)
Execute a migração da base de dados para instalar opcionalmente estruturas de bases de dados adicionais para o módulo:
weblate migrate
Criação e atribuição de plano de faturação¶
Primeiro precisa criar um plano de faturação para ativar a cobrança. Navegue até a secção Administration (representada pelo ícone de chave inglesa) e abra o ecrã Tools. Depois aceda a Django admin interface.
Na interface administrativa do Django, localize a secção COBRANÇA e adicione um plano de cobrança. Por exemplo, pode adicionar um plano Free sem custo.
Se desejar atribuir um plano de faturação a um projeto existente, isto também pode ser feito na Interface administrativa Django usando a opção Faturação de clientes.
Por fim, a Django admin interface fornece uma opção Invoice para registar os pagamentos dos clientes.
Uso¶
Após a instalação, pode controlar a faturação na interface de administração. Os utilizadores com faturação ativada obterão um novo separador Faturação no seu Perfil do utilizador .
The billing module additionally allows users to create new projects and components without being superusers (see Adicionar projetos e componentes de tradução). This is possible when following conditions are met:
A faturação está nos seus limites configurados (qualquer uso excessivo resulta no bloqueio da criação do projeto/componente) e pagos (se o preço for diferente de zero)
The user has Add projects to workspace permission for the workspace covered by the billing plan.
Ao criar o projeto o utilizador pode escolher que espaço de trabalho deve conter o projeto. Projetos criados em um espaço de trabalho com uma faturação são contabilizados no plano de faturação atribuído a esse espaço de trabalho. Utilizadores com a permissão Editar configurações de espaços de trabalho podem ver e pagar o plano de faturação; e-mails de notificação de faturação são enviados a estes utilizadores. Veja Faturação para detalhes.
Módulo legal¶
Isso é usado em Weblate hospedado para fornecer documentos legais necessários. Ele vem fornecido com documentos em branco e espera-se que preencha os seguintes modelos nos documentos:
legal/documents/tos.htmlDocumento de termos de serviço
legal/documents/privacy.htmlDocumento de política de privacidade
legal/documents/summary.htmlVisão geral breve dos termos de serviço e política de privacidade
legal/documents/contracts.htmlSubcontractor information
O módulo legal integra estes modelos dentro do Weblate e usa legal/documents/tos.html para confirmação dos termos de serviço. Isto é separado de LEGAL_URL e PRIVACY_URL, que têm o propósito de ligar a documentos externamente hospedados a partir do rodapé quando o módulo legal não está ativo. Quando o módulo legal está ativo, o Weblate liga às páginas legais internar por predefinição.
Ao alterar os documentos dos termos de serviço, ajuste LEGAL_TOS_DATE para que os utilizadores sejam forçados a concordar com os documentos atualizados.
Nota
Legal documents for the Hosted Weblate service operated by Weblate s.r.o. are available in this Git repository: <https://github.com/WeblateOrg/wllegal/tree/main/wllegal/templates/legal/documents>.
The bundled terms of service and related legal documents are specific to that service and are not intended for general use. They might still come in handy as a starting point if adjusted to meet your needs.
Instalação¶
1. Add weblate.legal to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.legal",)
# Optional:
# Social auth pipeline to confirm TOS upon registration/subsequent sign in
SOCIAL_AUTH_PIPELINE += ("weblate.legal.pipeline.tos_confirm",)
# Middleware to enforce TOS confirmation of signed in users
MIDDLEWARE += [
"weblate.legal.middleware.RequireTOSMiddleware",
]
Execute a migração da base de dados para instalar opcionalmente estruturas de bases de dados adicionais para o módulo:
weblate migrate
Edite os documentos jurídicos na pasta
weblate/legal/templates/legal/para corresponder ao seu serviço.
Dica
Em implementações do Docker, ative o módulo legal usando WEBLATE_LEGAL_INTEGRATION em vez de editar settings.py. Use tos-confirm para ativar a aplicação da confirmação do módulo legal e dos termos de serviço, ou wlegal para adicionalmente carregar os modelos de documentos hospedados usados por serviços operados pelo Weblate s.r.o. Estes modelos não se destinam para uso geral. Para fornecer os seus próprios modelos no Docker, coloque-os em /app/data/python/customize/templates/legal/documents, veja Substituindo o logotipo e outros ficheiros estáticos.
Recreate the Docker container after changing environment variables, for example using docker compose up -d. Restarting an existing container does not apply changed environment values.
Uso¶
Após a instalação e edição, os documentos legais são exibidos na interface de utilizador do Weblate.
The legal document templates are regular Django templates. Text is translated
only when you use Django translation tags such as {% translate %} or
{% blocktranslate %}; plain HTML text is shown as written.
Legal pages and the sign-in and registration overview provide terms_url and
privacy_url variables for linking to the terms of service and privacy
policy documents.
By default, legal document wrappers use the tos CSS class. This class
automatically numbers h2 headings, paragraphs with item, subitem,
or subsubitem classes, and top-level ordered list items. If your legal
text already contains numbering, set LEGAL_DOCUMENT_CSS_CLASS to an
empty string to disable this styling.
Use LEGAL_HIDDEN_DOCUMENTS to hide optional legal pages such as
subcontractors from the legal menu. Hidden pages return a 404 response when
requested directly. If terms or privacy is hidden, links using
terms_url or privacy_url fall back to LEGAL_URL or
PRIVACY_URL when configured, otherwise the link is omitted.
To use externally hosted legal documents with terms confirmation, configure
LEGAL_HIDDEN_DOCUMENTS to hide terms and privacy and set
LEGAL_URL and PRIVACY_URL. The confirmation page then
links to those external documents without requiring a
legal/documents/tos.html template override.
Avatares¶
Os avatares são descarredaos e armazenados em cache no lado do servidor para reduzir o vazamento de informações para os sites que os servem por predefinição. O suporte embutido para buscar avatares de endereços de e-mail configurados para isso pode ser desligado usando ENABLE_AVATARS.
Atualmente, o Weblate oferece suporte a:
Veja também
CDN de localização¶
The CDN de localização JavaScript and Ficheiros de tradução CDN add-ons
write files to LOCALIZE_CDN_PATH; Weblate does not serve them.
Configure the web server or CDN serving LOCALIZE_CDN_URL as a
public, read-only static file host.
Treat every published CDN file as public. The add-on specific UUID in the URL is not an access-control mechanism. Do not enable CDN add-ons for components that contain private strings, unreleased product text, customer data, internal URLs, API examples, repository paths, translator comments, or file-format metadata that should not be exposed.
O extra Ficheiros de tradução CDN publica ficheiros de tradução brutos em formatos suportados pelo Weblate. Alguns formatos podem ser interpretados por navegadores ou outros clientes como HTML, SVG, XML, JavaScript, YAML, ou configuração específica da aplicação. Servir o CDN a partir de um domínio dedicado, distinto do Weblate e da aplicação a consumir as traduções. Não partilhe cookies de autenticação com o domínio CDN.
Recommended server configuration:
Serve only the directory configured by
LOCALIZE_CDN_PATH; do not expose Weblate repositories, backups, media, configuration, or the whole data directory.Disable directory listing.
Use HTTPS and make the CDN host read-only from the web server.
Send X-Content-Type-Options with
nosniff.Configure conservative MIME types. Serve unknown translation formats as text/plain or application/octet-stream; only serve
weblate.jsas JavaScript.For raw translation formats that are not intended to be rendered in a browser, consider adding Content-Disposition with
attachment.Configure
Access-Control-Allow-Originonly for sites that need browser access to the files.Set cache lifetimes that match your update expectations, and purge CDN caches when stale translations must disappear quickly.
The following nginx snippet serves only the configured CDN directory and applies conservative defaults for raw translation files:
#
# nginx configuration for the Weblate localization CDN
#
# You will want to change:
#
# - server_name to match the host configured in LOCALIZE_CDN_URL
# - root to match LOCALIZE_CDN_PATH
# - Access-Control-Allow-Origin to the sites that need browser access
# - TLS configuration if HTTPS is not terminated before nginx
#
server {
listen 80;
server_name cdn.example.com;
# LOCALIZE_CDN_PATH
root /home/weblate/data/l10n-cdn;
autoindex off;
disable_symlinks on;
location = / {
return 404;
}
# The JavaScript localization add-on publishes this loader.
location ~ "^/[0-9a-f]{32}/weblate\.js$" {
try_files $uri =404;
types {
application/javascript js;
}
default_type application/javascript;
add_header X-Content-Type-Options nosniff always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
# Other CDN files are translation files. Serve them conservatively so raw
# formats are not interpreted as active browser content.
location / {
try_files $uri =404;
types {
}
default_type text/plain;
add_header X-Content-Type-Options nosniff always;
add_header Content-Disposition "attachment" always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
}
Assinando commits do Git com GnuPG¶
Todos os commits podem ser assinados pela chave GnuPG da instância Weblate.
Ative
WEBLATE_GPG_IDENTITY. (Weblate irá gerar uma chave GnuPG quando necessário e irá usá-la para assinar todos os commits de tradução.)Esta funcionalidade precisa do GnuPG 2.1 ou mais recente instalado.
Pode encontrar a chave em
DATA_DIRe a chave pública é mostrada na página «Sobre»:
Alternativamente, também pode importar as chaves existentes para o Weblate, apenas defina
HOME=$DATA_DIR/homeao invocar gpg.
Dica
O material da chave é armazenado em cache pelo Weblate por um longo período. Caso permita que o Weblate gere uma chave com WEBLATE_GPG_IDENTITY e, em seguida, importe uma chave com a mesma identidade para usar uma chave existente, é recomendável limpar o cache do Redis para ver o efeito dessa alteração.
Nota
Ao partilhar DATA_DIR entre vários hosts, siga as instruções em https://wiki.gnupg.org/NFS para garantir que a assinatura do GnuPG funcione de forma confiável.
Veja também
Limitação de taxa¶
Alterado na versão 4.6: A limitação de taxa já não se aplica a superutilizadores logados.
Várias operações no Weblate são limitadas por cotas. Limites de cotas são avaliados independentemente para cada âmbito. No máximo RATELIMIT_ATTEMPTS tentativas são permitidas dentro de RATELIMIT_WINDOW segundos em um âmbito. Esse âmbito é então bloqueado durante RATELIMIT_LOCKOUT; o Weblate não torna isto em um ban temporário de IP no site completo. Exceder um âmbito, com o TRANSLATE ou SEARCH não bloqueia só por si mesmo âmbitos não relacionados como LOGIN or SECOND_FACTOR. Também há definições específicas a âmbitos, por exemplo RATELIMIT_CONTACT_ATTEMPTS ou RATELIMIT_TRANSLATE_ATTEMPTS. A tabela abaixo é uma lista completa dos âmbitos disponíveis.
As seguintes operações estão sujeitas a limitação de taxa:
Nome |
Âmbito |
Tentativas permitidas |
Janela de limite de tempo |
Período de bloqueio |
|---|---|---|---|---|
Registo |
|
5 |
300 |
600 |
Enviando mensagem para administradores |
|
2 |
300 |
600 |
Autenticação de palavra-passe ao entrar |
|
5 |
300 |
600 |
Autenticação de segundo fator |
|
5 |
300 |
600 |
Pesquisa em todo o site |
|
6 |
60 |
60 |
Traduzir |
|
30 |
60 |
600 |
Adicionando ao glossário |
|
30 |
60 |
600 |
A iniciar a tradução num novo idioma |
|
2 |
300 |
600 |
Criando um novo projeto |
|
5 |
600 |
600 |
Connecting a GitHub account |
|
100 |
3600 |
600 |
Within each scope, the rate limiting is based on sessions when user is signed in and on IP address if not.
Se um utilizador falhar a autenticação 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.