Mòduls opcionals de Weblate¶
Hi ha diversos mòduls opcionals disponibles per a la vostra configuració.
Exportador de Git¶
Us proporciona accés de només lectura al dipòsit de Git subjacent mitjançant HTTP(S).
Installation¶
Afegiu
weblate.gitexporta les aplicacions instal·lades asettings.py:INSTALLED_APPS += ("weblate.gitexport",)
Exporteu els dipòsits existents migrant la vostra base de dades després de la instal·lació:
weblate migrate
Suggeriment
Git exporter is turned on in our official Docker image. To turn it off, use:
WEBLATE_REMOVE_APPS=weblate.gitexport
Usage¶
El mòdul es connecta automàticament a Weblate i estableix l’URL del repositori exportat al Configuració dels components. Els repositoris són accessibles a la part /git/ de l’URL del Weblate, per exemple https://example.org/git/weblate/main/.
Els repositoris per a projectes disponibles públicament es poden clonar sense autenticació:
git clone 'https://example.org/git/weblate/main/'
Access to browse the repositories with restricted access (with Private
access control or when REQUIRE_LOGIN is enabled)
requires an API token which can be obtained in your
user profile:
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. See Git LFS for supported behavior. Clone repositories using
Git LFS 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.
Suggeriment
By default members of Users group and anonymous user have access to the repositories for public projects via Access repository and Power user roles.
Facturació¶
S’utilitza a Hosted Weblate per definir plans de facturació, fer el seguiment de factures i límits d’ús.
Installation¶
1. Add weblate.billing to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.billing",)
Executeu la migració de la base de dades per instal·lar opcionalment estructures de bases de dades addicionals per al mòdul:
weblate migrate
Creació i assignació del pla de facturació¶
Primer heu de crear un pla de facturació per activar la facturació. Navegueu a la secció «Administració» (representada per la icona de la clau anglesa) i obriu la pantalla «Eines». A partir d’aquí, aneu a la «interfície d’administració de Django».
A la interfície d’administració de Django, localitzeu la secció «FACTURACIÓ» i afegiu un pla de facturació. Per exemple, podeu afegir un pla «gratuït» sense cap cost.
Si voleu assignar un pla de facturació a un projecte existent, també es pot fer des de la «interfície d’administració de Django» mitjançant l’opció «Facturacions del client».
Finalment, la «interfície d’administració de Django» ofereix una opció «Factura» per registrar els pagaments dels vostres clients.
Usage¶
After installation you can control billing in the admin interface. Users with billing enabled will get new Billing tab in their Perfil d’usuari.
Superusers can view the 20 most recent billing audit entries on the billing detail page. Select View all in the Audit log section to browse older entries using the pagination controls.
El mòdul de facturació també permet als usuaris crear nous projectes i components sense ser superusuaris (vegeu Afegir projectes i components de traducció). Això és possible quan es compleixen les condicions següents:
La facturació està en els seus límits configurats (qualsevol ús excessiu provoca el bloqueig de la creació del projecte/component) i es paga (si el seu preu és diferent de zero)
L’usuari té permís Afegeix projectes a l’espai de treball per a l’espai de treball cobert pel pla de facturació.
En crear el projecte, l’usuari pot triar quin espai de treball ha de contenir el projecte. Els projectes creats en un espai de treball amb un recompte de facturació en funció del pla de facturació assignat a aquest espai de treball. Els usuaris amb el permís Edita la configuració de l’espai de treball poden veure i pagar el pla de facturació; Els correus electrònics de notificació de facturació s’envien a aquests usuaris. Vegeu Facturació per a més detalls.
Legal module¶
S’utilitza a Hosted Weblate per proporcionar els documents legals necessaris. Ve amb documents en blanc i s’espera que ompliu les plantilles següents als documents:
legal/documents/tos.htmlDocument de condicions del servei
legal/documents/privacy.htmlDocument de política de privadesa
legal/documents/summary.htmlBreu visió general de les condicions del servei i la política de privadesa
legal/documents/contracts.htmlSubcontractor information
The legal module embeds these templates inside Weblate. Its confirmation page
uses legal/documents/tos.html and, when a privacy policy link is
available, requires one agreement covering both the terms of service and the
privacy policy. This is separate from LEGAL_URL and
PRIVACY_URL, which are meant for linking to externally hosted legal
documents from the footer when the legal module is not enabled or as fallbacks
for hidden internal pages. When the legal module is enabled, Weblate links to
the internal legal pages by default.
On changing the terms of service or privacy policy, adjust
LEGAL_TOS_DATE when users should be forced to agree with the updated
documents.
Nota
Documents legals del servei Hosted Weblate operat per Weblate s.r.o. estan disponibles en aquest repositori Git: <https://github.com/WeblateOrg/wllegal/tree/main/wllegal/templates/legal/documents>.
The bundled terms of service and related legal documents are specific to services operated by Weblate s.r.o. They can serve as an implementation example, but should not be used as a basis for legal documents of other services.
Installation¶
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",
]
Executeu la migració de la base de dades per instal·lar opcionalment estructures de bases de dades addicionals per al mòdul:
weblate migrate
Provide legal document templates matching your service, as described in Customizing legal documents and styles.
Suggeriment
In Docker deployments, enable the legal module using
WEBLATE_LEGAL_INTEGRATION instead of editing
settings.py. Use tos-confirm to enable the legal module and
legal document confirmation enforcement, or wllegal to additionally
load the hosted legal document templates used by services operated by
Weblate s.r.o. These templates are not intended for general use. To provide
your own templates in Docker, place them in
/app/data/python/customize/templates/legal/documents, see
Substitució del logotip i altres fitxers estàtics.
Recreeu el contenidor Docker després de canviar les variables d’entorn, per exemple, utilitzant docker compose up -d. El reinici d’un contenidor existent no aplica els valors d’entorn modificats.
Usage¶
After installation and customization, the legal documents are shown in the Weblate UI.
Les plantilles de documents legals són plantilles normals de Django. El text només es tradueix quan feu servir etiquetes de traducció de Django com ara {% translate %} o {% blocktranslate %}; El text HTML senzill es mostra tal com està escrit.
Les pàgines legals i la visió general d’inici de sessió i registre proporcionen variables terms_url i privacy_url per enllaçar amb les condicions del servei i els documents de la política de privadesa.
Customizing legal documents and styles¶
Provide your own legal documents by overriding these templates in a Creació d’un mòdul Python:
templates/legal/documents/tos.htmltemplates/legal/documents/privacy.htmltemplates/legal/documents/summary.htmltemplates/legal/documents/contracts.htmltemplates/legal/styles.htmlstatic/weblate_customization/legal.css
Place the customization app before weblate.legal and any other app
providing legal template overrides in INSTALLED_APPS so that
Django selects its templates. Only templates you provide are overridden; the
remaining legal templates continue to use the defaults from later apps.
The legal/styles.html template is included in the HTML head of every
legal page. Use it to load a stylesheet from your customization app:
{% load static %}
<link rel="stylesheet" href="{% static 'weblate_customization/legal.css' %}" />
Run weblate collectstatic --noinput after adding or changing the static
file.
In Docker deployments, place document templates in
/app/data/python/customize/templates/legal/documents,
styles.html in
/app/data/python/customize/templates/legal/styles.html, and the
stylesheet in /app/data/python/customize/static/legal.css. The
stylesheet template then uses {% static 'legal.css' %}. Restart the
container to apply the changes, see Substitució del logotip i altres fitxers estàtics.
By default, legal document wrappers use the tos CSS class. Weblate does not
attach any styling to this class; target it from your custom stylesheet, or set
LEGAL_DOCUMENT_CSS_CLASS to another class matching your document
markup. Set the setting to an empty string if no wrapper class is needed.
Utilitzeu LEGAL_HIDDEN_DOCUMENTS per amagar pàgines legals opcionals, com ara subcontractistes, del menú legal. Les pàgines ocultes retornen una resposta 404 quan se’ls sol·licita directament. Si terms o privacy està amagat, els enllaços que utilitzen terms_url o privacy_url tornen a LEGAL_URL o PRIVACY_URL quan estiguin configurats, en cas contrari l’enllaç s’omet.
To use externally hosted legal documents with legal 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 and requires one agreement covering both
without needing a legal/documents/tos.html template override. If no
privacy policy link is available, the confirmation covers only the terms of
service.
Avatars¶
Els avatars es descarreguen i es guarden a la memòria cau del costat del servidor per reduir les filtracions d’informació als llocs que els serveixen de manera predeterminada. El suport integrat per obtenir avatars de les adreces de correu electrònic configurades per a això es pot desactivar mitjançant ENABLE_AVATARS.
Weblate actualment admet:
Localization CDN¶
Els complements CDN de localització de JavaScript i Translation files CDN escriuen fitxers a LOCALIZE_CDN_PATH; Weblate no els serveix. Configureu el servidor web o el servei CDN LOCALIZE_CDN_URL com a amfitrió de fitxers estàtic públic de només lectura.
Tracteu tots els fitxers CDN publicats com a públics. L’UUID específic del complement a l’URL no és un mecanisme de control d’accés. No activeu els complements CDN per a components que continguin cadenes privades, text de producte inèdit, dades de clients, URL interns, exemples d’API, camins de repositori, comentaris del traductor o metadades de format de fitxer que no s’han d’exposar.
El complement Translation files CDN publica fitxers de traducció en brut en formats compatibles amb Weblate. Alguns formats poden ser interpretats pels navegadors o altres clients com a HTML, SVG, XML, JavaScript, YAML o configuració específica de l’aplicació. Serviu el CDN des d’un domini dedicat que està separat de Weblate i de l’aplicació que consumeix les traduccions. No compartiu galetes d’autenticació amb el domini CDN.
Recommended server configuration:
Serviu només el directori configurat per
LOCALIZE_CDN_PATH; no exposeu repositoris, còpies de seguretat, suports, configuració o tot el directori de dades de Weblate.Disable directory listing.
Deny access to
.kotlin-sdk-stagingand all its contents. The Kotlin SDK add-on uses this directory for temporary preparation, not publication. Apply this restriction before enabling the add-on, including when a CDN copies files from the origin directory.Utilitzeu HTTPS i feu que l’amfitrió CDN sigui només de lectura des del servidor web.
Envieu X-Content-Type-Options amb
nosniff.Configureu els tipus MIME conservadors. Doneu formats de traducció desconeguts com a text/plain o application/octet-stream; només serveix
weblate.jscom a JavaScript.Per als formats de traducció en brut que no estan pensats per ser representats en un navegador, considereu afegir Content-Disposition amb
attachment.Configureu
Access-Control-Allow-Originnomés per a llocs que necessiten accés al navegador als fitxers.Estableix temps de vida de la memòria cau que coincideixin amb les teves expectatives d’actualització i purgues les memòries cau de CDN quan les traduccions obsoletes hagin de desaparèixer ràpidament.
El següent fragment de nginx només serveix al directori CDN configurat i aplica valors per defecte conservadors per als fitxers de traducció en brut:
#
# 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;
}
# Kotlin SDK preparation files must never be served.
location ^~ /.kotlin-sdk-staging {
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;
}
# Content-addressed Android artifacts never change at the same URL.
location ~ "^/[0-9a-f]{32}/artifacts/[0-9a-f]{64}\\.arsc$" {
try_files $uri =404;
types { }
default_type application/octet-stream;
add_header X-Content-Type-Options nosniff always;
add_header Content-Disposition "attachment" always;
add_header Cache-Control "public, max-age=31536000, immutable";
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
}
# Other CDN files are translation files. Serve them conservatively so raw
# formats are not interpreted as active browser content.
# Manifest JSON files also use this one-hour cache policy.
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;
}
}
Signar compromisos de Git amb GnuPG¶
Totes les confirmacions es poden signar amb la clau GnuPG de la instància de Weblate.
Activa
WEBLATE_GPG_IDENTITY. (Weblate generarà una clau GnuPG quan sigui necessari i l’utilitzarà per signar tots els compromisos de traducció.)Aquesta funció necessita instal·lar GnuPG 2.1 o posterior.
Podeu trobar la clau a
DATA_DIRi la clau pública es mostra a la pàgina «Quant a»:
Alternativament, també podeu importar les claus existents a Weblate, només cal que configureu
HOME=$DATA_DIR/homequan invoqueu gpg.
Suggeriment
Weblate guarda a la memòria cau el material clau durant un llarg període. En cas que deixeu que Weblate generi una clau amb WEBLATE_GPG_IDENTITY i després importeu la clau amb la mateixa identitat per utilitzar una clau existent, es recomana purgar la memòria cau redis per veure l’efecte d’aquest canvi.
Nota
Quan compartiu DATA_DIR entre diversos amfitrions, seguiu les instruccions a https://wiki.gnupg.org/NFS per fer que la signatura de GnuPG funcioni de manera fiable.
Vegeu també
Limitació de tarifes¶
Canviat a la versió 4.6: La limitació de tarifes ja no s’aplica als superusuaris iniciats.
Several operations in Weblate are rate limited. Rate limits are evaluated
independently for each scope. At most RATELIMIT_ATTEMPTS attempts are
allowed within RATELIMIT_WINDOW seconds in one scope. That scope is
then blocked for RATELIMIT_LOCKOUT; Weblate does not turn this into a
sitewide temporary IP ban. Exceeding one scope, such as TRANSLATE or
SEARCH, does not by itself block unrelated scopes such as LOGIN or
SECOND_FACTOR. There are also settings specific to scopes, for example
RATELIMIT_CONTACT_ATTEMPTS or RATELIMIT_TRANSLATE_ATTEMPTS. The table
below is a full list of available scopes.
Les operacions següents estan subjectes a limitació de tarifes:
Nom |
Abast |
Intents permesos |
Finestra de límit de taxa |
Període de bloqueig |
|---|---|---|---|---|
Registre |
|
5 |
300 |
600 |
Enviament de missatges als administradors |
|
2 |
300 |
600 |
Password authentication on sign-in |
|
5 |
300 |
600 |
Restableix la contrasenya |
|
5 |
300 |
600 |
Second-factor authentication |
|
5 |
300 |
600 |
Cerca a tot el lloc |
|
6 |
60 |
60 |
Translating |
|
30 |
60 |
600 |
S’afegeix al glossari |
|
30 |
60 |
600 |
Starting translation into a new language |
|
2 |
300 |
600 |
Creating new project |
|
5 |
600 |
600 |
Connecting a GitHub account |
|
100 |
3600 |
600 |
Rendering a Markdown preview |
|
60 |
60 |
60 |
Within each scope, the rate limiting is based on sessions when user is signed in and on IP address if not.
Strict enforcement across concurrent workers requires a cache backend with atomic increment and decrement operations. The standard Configure cache configuration using Valkey or Redis provides these operations.
For signed-in users, Weblate records the first rejected request during each active scope lockout in the Registre d’auditoria, including the scope and request path. Repeated rejections during the same lockout do not create additional audit-log entries.
Si un usuari no inicia la sessió AUTH_LOCK_ATTEMPTS vegades, l’autenticació de contrasenya es desactivarà al compte fins que hagi passat pel procés de restabliment de la contrasenya.
La configuració també es pot aplicar al contenidor Docker afegint el prefix WEBLATE_ al nom de la configuració, per exemple RATELIMIT_ATTEMPTS es converteix en WEBLATE_RATELIMIT_ATTEMPTS.
L’API té configuracions de limitació de velocitat separades, vegeu Limitació de velocitat de l’API.