Optionale Weblate-Module

Für Ihre Einrichtung sind mehrere optionale Module verfügbar.

Git-Exporter

Ermöglicht Ihnen den Nur-Lese-Zugriff auf das zugrunde liegende Git-Repository über HTTP(S).

Installation

  1. weblate.gitexport zu den installierten Anwendungen in settings.py hinzufügen:

    INSTALLED_APPS += ("weblate.gitexport",)
    
  2. Vorhandene Repositorys exportieren, indem Sie Ihre Datenbank nach der Installation migrieren:

    weblate migrate
    

Hinweis

Der Git-Exporter ist in unserem offiziellen Docker-Image aktiviert. Um ihn auszuschalten, verwenden Sie:

WEBLATE_REMOVE_APPS=weblate.gitexport

Anwendung

Das Modul klinkt sich automatisch in Weblate ein und setzt die exportierte Repository-URL in der Komponentenkonfiguration. Die Repositorys sind unter dem /git/-Teil der Weblate-URL zugänglich, zum Beispiel https://example.org/git/weblate/main/.

Repositorys für öffentlich zugängliche Projekte können ohne Authentifizierung geklont werden:

git clone 'https://example.org/git/weblate/main/'

Um die Repositorys mit eingeschränktem Zugriff zu durchsuchen (mit Projekt-Zugriffssteuerung auf Privat oder wenn REQUIRE_LOGIN aktiviert ist), ist ein API-Token erforderlich, das Sie in Ihrem Benutzerprofil erhalten können:

git clone 'https://user:KEY@example.org/git/weblate/main/'

Bemerkung

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.

Hinweis

Standardmäßig haben Mitglieder der Gruppe Benutzer und anonyme Benutzer über die Rollen Auf Repository zugreifen und Hauptbenutzer Zugriff auf die Repositorys für öffentliche Projekte.

Abrechnung

Dies wird auf Hosted Weblate verwendet, um Abrechnungspläne festzulegen, Rechnungen und Nutzungsgrenzen nachzuverfolgen.

Installation

1. Add weblate.billing to installed apps in settings.py:

INSTALLED_APPS += ("weblate.billing",)
  1. Die Datenbankmigration ausführen, um optional zusätzliche Datenbankstrukturen für das Modul zu installieren:

weblate migrate

Abrechnungsmodell erstellen und zuweisen

Um die Abrechnung zu aktivieren, müssen Sie zunächst ein Abrechnungsmodell erstellen. Navigieren Sie zum Abschnitt Verwaltung (dargestellt durch das Schraubenschlüssel-Symbol) und öffnen Sie den Bildschirm Werkzeuge. Von dort aus gelangen Sie zur Adminoberfläche von Django.

Suchen Sie in der Adminoberfläche von Django den Abschnitt BILLING und fügen Sie ein Abrechnungsmodell hinzu. Sie können zum Beispiel ein kostenloses Modell hinzufügen.

Wenn Sie einem bestehenden Projekt ein Abrechnungsmodell zuweisen möchten, können Sie dies auch im Django admin interface mit der Option Customer billings tun.

Schließlich bietet das Django admin interface die Option Invoice, um die Zahlungen Ihrer Kunden zu protokollieren.

Anwendung

Nach der Installation können Sie die Abrechnung in der Adminoberfläche steuern. Benutzer mit aktivierter Abrechnung erhalten einen neuen Reiter Abrechnung in ihrem Benutzerprofil.

Das Abrechnungsmodul erlaubt es Projektadministratoren zusätzlich, neue Projekte und Komponenten zu erstellen, ohne Superuser zu sein (siehe Übersetzungsprojekte und Komponenten hinzufügen). Dies ist möglich, wenn die folgenden Bedingungen erfüllt sind:

  • Die Abrechnung liegt innerhalb der konfigurierten Grenzen (jede Überschreitung führt zu einer Sperrung der Projekt-/Komponentenerstellung) und ist bezahlt (wenn der Preis nicht Null ist)

  • Der Benutzer ist Administrator eines bestehenden Projekts mit Abrechnung oder der Benutzer ist Eigentümer der Abrechnung (letzteres ist erforderlich, wenn neue Abrechnungen erstellt werden, damit die Benutzer neue Projekte importieren können).

Bei der Projekterstellung kann der Benutzer auswählen, welche Abrechnung für das Projekt berechnet werden soll, falls er Zugang zu mehreren Abrechnungen hat.

Avatare

Avatare werden standardmäßig heruntergeladen und serverseitig zwischengespeichert, um Informationslecks zu den Websites, die sie anbieten, zu reduzieren. Die integrierte Unterstützung für das Abrufen von Avataren von E-Mail-Adressen, die dafür konfiguriert sind, kann mit ENABLE_AVATARS deaktiviert werden.

Weblate unterstützt derzeit:

Lokalisierungs-CDN

The JavaScript-Lokalisierungs-CDN and Translation files 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.

The Translation files CDN add-on publishes raw translation files in formats supported by Weblate. Some formats can be interpreted by browsers or other clients as HTML, SVG, XML, JavaScript, YAML, or application-specific configuration. Serve the CDN from a dedicated domain that is separate from Weblate and from the application consuming the translations. Do not share authentication cookies with the CDN domain.

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.js as 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-Origin only 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:

weblate/examples/weblate.nginx.cdn.conf
#
# 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;
    }
}

Git-Commits mit GnuPG signieren

Alle Commits können mit dem GnuPG-Schlüssel der Weblate-Instanz signiert werden.

  • Schalten Sie WEBLATE_GPG_IDENTITY ein. (Weblate erzeugt bei Bedarf einen GnuPG-Schlüssel und verwendet ihn zum Signieren aller Commits von Übersetzungen.)

    Für diese Funktion muss GnuPG 2.1 oder neuer installiert sein.

    Sie finden den Schlüssel in DATA_DIR und der öffentliche Schlüssel wird auf der „Über Weblate“-Seite angezeigt:

    ../_images/about-gpg.webp
  • Alternativ können Sie auch bestehende Schlüssel in Weblate importieren, indem Sie beim Aufruf von gpg HOME=$DATA_DIR/home setzen.

Hinweis

Das Schlüsselmaterial wird von Weblate über einen längeren Zeitraum zwischengespeichert. Falls Sie Weblate einen Schlüssel mit WEBLATE_GPG_IDENTITY erzeugen lassen und dann einen Schlüssel mit der gleichen Identität importieren, um einen bestehenden Schlüssel zu verwenden, wird empfohlen, den Redis-Cache zu leeren, um die Auswirkungen einer solchen Änderung zu sehen.

Bemerkung

Wenn Sie DATA_DIR zwischen mehreren Rechnern teilen, befolgen Sie bitte die Anweisungen unter https://wiki.gnupg.org/NFS, damit das Signieren mit GnuPG zuverlässig funktioniert.

Ratenbegrenzung

Geändert in Version 4.6: Die Ratenbegrenzung gilt nicht mehr für angemeldete Superuser.

Mehrere Vorgänge in Weblate sind ratenbegrenzt. Innerhalb von RATELIMIT_WINDOW Sekunden sind maximal RATELIMIT_ATTEMPTS Versuche erlaubt. Danach wird der Benutzer für RATELIMIT_LOCKOUT gesperrt. Es gibt auch bereichsspezifische Einstellungen, zum Beispiel RATELIMIT_CONTACT_ATTEMPTS oder RATELIMIT_TRANSLATE_ATTEMPTS. Die nachstehende Tabelle enthält eine vollständige Liste der verfügbaren Bereiche.

Die folgenden Vorgänge unterliegen der Ratenbegrenzung:

Bezeichnung

Bereich

Erlaubte Versuche

Ratenbegrenzungsfenster

Sperrdauer

Registrierung

REGISTRATION

5

300

600

Nachricht an Administratoren senden

MESSAGE

2

300

600

Passwort-Authentifizierung beim Anmelden

LOGIN

5

300

600

Zwei-Faktor-Authentifizierung

SECOND_FACTOR

5

300

600

Plattformweite Suche

SEARCH

6

60

60

Übersetzen

TRANSLATE

30

60

600

Zum Glossar hinzufügen

GLOSSARY

30

60

600

Beginn der Übersetzung in eine neue Sprache

LANGUAGE

2

300

600

Neues Projekt erstellen

PROJECT

5

600

600

Die Ratenbegrenzung basiert auf Sitzungen, wenn der Benutzer angemeldet ist, und andernfalls auf der IP-Adresse.

Wenn die Anmeldung eines Benutzers nicht innerhalb von AUTH_LOCK_ATTEMPTS erfolgt, wird die Passwortauthentifizierung für das Konto deaktiviert, bis das Passwort zurückgesetzt wurde.

Die Einstellungen können auch im Docker-Container angewandt werden, indem der Präfix WEBLATE_ an den Einstellungsnamen angehängt wird, z. B. wird RATELIMIT_ATTEMPTS zu WEBLATE_RATELIMIT_ATTEMPTS.

Die API verfügt über separate Einstellungen zur Ratenbegrenzung, siehe API-Ratenbegrenzung.