Erweiterungen

Erweiterungen bieten die Möglichkeit, den Ablauf der Übersetzung anzupassen und zu automatisieren. Administratoren können Erweiterungen über das Menü OperationenErweiterungen des jeweiligen Übersetzungsprojekts oder -komponente hinzufügen und verwalten. Erweiterungen können auch plattformweit in der Verwaltungsoberfläche installiert werden.

Hinweis

Sie können Erweiterungen auch mit API, DEFAULT_ADDONS, oder install_addon konfigurieren.

Erweiterungen, bei denen die manuelle Auslösung aktiviert ist, können über die Erweiterungsverwaltung oder mithilfe der API ausgeführt werden. Die Ergebnisse werden im Aktivitätsprotokoll der Erweiterung aufgezeichnet.

../_images/addons.webp

Ereignisse, die Erweiterungen auslösen

Erweiterungsinstallation

Wird ausgelöst, wenn die Erweiterung installiert wird.

Komponentenaktualisierung

Wird ausgelöst, immer wenn eine Änderung in einer Komponente erfolgt, beispielsweise:

  • Zeichenketten werden im Repository geändert.

  • Eine Zeichenkette wird hinzugefügt.

  • Eine neue Übersetzung wird hinzugefügt.

Täglich

Wird täglich ausgelöst, aber Erweiterungen teilen die tägliche Last normalerweise auf die Komponenten auf, je nach BACKGROUND_TASKS.

Ereignisänderung

Wird ausgelöst, nachdem ein Änderungsereignis erstellt wurde.

Manueller Trigger

Wird ausgelöst, wenn eine Erweiterung manuell über die Erweiterungsverwaltung oder API ausgeführt wird.

Repository post-add

Wird ausgelöst, gleich nachdem die neue Übersetzung hinzugefügt und committet wurde.

Repository post-commit

Wird ausgelöst, gleich nachdem die Änderungen committet wurden.

Repository post-push

Wird ausgelöst, gleich nachdem das Repository Upstream gepusht wurde.

Repository post-remove

Wird ausgelöst, gleich nachdem eine Übersetzung entfernt wurde.

Repository post-update

Wird ausgelöst, wenn neue Änderungen aus dem Upstream-Repository gezogen werden.

Repository pre-commit

Wird ausgelöst, kurz bevor die Änderungen committet werden.

Repository pre-push

Wird ausgelöst, kurz bevor das Repository Upstream gepusht wird.

Repository pre-update

Wird ausgelöst, kurz bevor die Aktualisierung des Repositorys versucht wird.

Einheit post-save

Wird ausgelöst, gleich nachdem die Zeichenkette gespeichert wurde.

Einheit post-sync

Wird ausgelöst, nachdem die Zeichenkette mit dem VCS synchronisiert wurde.

Einheit pre-create

Wird ausgelöst, gleich nachdem die neu erstellte Zeichenkette gespeichert wurde.

Integrierte Erweiterungen

Automatische Übersetzung

Erweiterungs-ID:

weblate.autotranslate.autotranslate

Konfiguration:

mode

Automatischer Übersetzungsmodus

Verfügbare Auswahlmöglichkeiten:

suggest

Als Vorschlag hinzufügen

translate

Als Übersetzung hinzufügen

fuzzy

Hinzufügen als „Bearbeitungsbedürftig“

q

Abfrage

Bitte beachten, dass bei der Übersetzung aller Zeichenketten alle vorhandenen Übersetzungen verworfen werden.

auto_source

Quelle der automatisierten Übersetzungen

Verfügbare Auswahlmöglichkeiten:

others

Andere Übersetzungskomponenten

mt

Maschinelle Übersetzung

component

Komponente

Den Slug einer Komponente eingeben, die als Quelle verwendet werden soll. Das Feld leer lassen, um alle Komponenten im aktuellen Projekt zu verwenden.

engines

Maschinelle Übersetzungssysteme

Maschinelle Übersetzungssysteme

threshold

Schwellenwert

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich, Ereignisänderung

Übersetzt automatisch Zeichenketten mithilfe maschineller Übersetzung oder Übersetzungen aus anderen Komponenten.

JavaScript-Lokalisierungs-CDN

Added in version 4.2.

Erweiterungs-ID:

weblate.cdn.cdnjs

Konfiguration:

threshold

Übersetzungsschwelle

Der Prozentsatz der vorhandenden übersetzten Zeichenketten, damit die Übersetzung berücksichtigt wird.

css_selector

CSS-Selektor

CSS-Selektor zur Erkennung lokalisierbarer Elemente.

cookie_name

Name des Sprachcookies

Name des Cookies, der die Sprachpräferenz speichert.

files

Zeichenketten aus HTML-Dateien extrahieren

Liste der Dateinamen im aktuellen Repository oder Remote-URLs, die nach übersetzbaren Zeichenketten analysiert werden sollen.

Trigger:

Erweiterungsinstallation, Täglich, Repository post-commit, Repository post-remove, Repository post-update

Veröffentlicht Übersetzungen in einem Content Delivery Network zur Verwendung in der JavaScript- oder HTML-Lokalisierung.

Kann verwendet werden, um statische HTML-Seiten zu übersetzen oder um die Übersetzung in den JavaScript-Code zu laden.

Erzeugt eine eindeutige URL für Ihre Komponente, die Sie in HTML-Seiten einfügen können, um diese zu lokalisieren. Siehe HTML und JavaScript mit Weblate CDN übersetzen für weitere Details.

Bemerkung

Diese Erweiterung erfordert eine zusätzliche Konfiguration auf dem Weblate-Server: LOCALIZE_CDN_PATH konfiguriert, wo die generierten Dateien geschrieben werden (auf einem Dateisystem), und LOCALIZE_CDN_URL definiert, wo sie bereitgestellt werden (URL). Das Bereitstellen der Dateien erfolgt nicht durch Weblate, sondern muss extern eingerichtet werden (normalerweise über einen CDN-Dienst).

Diese Erweiterung wird auf Hosted Weblate konfiguriert und liefert die Dateien über https://weblate-cdn.com/.

Übersetzungsdateien-CDN

Added in version 2026.5.

Erweiterungs-ID:

weblate.cdn.files

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Repository post-commit, Repository post-remove, Repository post-update

Veröffentlicht Übersetzungsdateien in einem Content Delivery Network.

Publishes translation files without converting them to another format. Files are written below the add-on specific CDN directory and served from LOCALIZE_CDN_URL/<add-on UUID>/. Single-file translations use the language code and original file extension, for example cs.json or de.po. Multi-file translations are served below the language code using paths relative to the translation directory. Monolingual components include the source language file, while bilingual components publish only target-language files. See Lokalisierungs-CDN for secure serving guidance.

Leere Zeichenketten entfernen

Added in version 4.4.

Erweiterungs-ID:

weblate.cleanup.blank

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Repository post-commit, Repository post-update

Entfernt Zeichenketten ohne Übersetzung aus den Übersetzungsdateien.

Verwenden Sie dies, um leere Zeichenketten in Übersetzungsdateien zu vermeiden (z. B. wenn Ihre Lokalisierungsbibliothek sie als fehlend anzeigt, anstatt auf die Ausgangszeichenkette zurückzugreifen).

Übersetzungsdateien bereinigen

Erweiterungs-ID:

weblate.cleanup.generic

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Repository post-update, Repository pre-commit

Aktualisieren Sie alle Übersetzungsdateien so, dass sie mit der einsprachigen Basisdatei übereinstimmen. Für die meisten Dateiformate bedeutet dies, veraltete Übersetzungsschlüssel, die in der Basisdatei nicht mehr vorhanden sind, zu entfernen.

Bei Formaten, die neben Übersetzungszeichenketten zusätzliche Inhalte enthalten (wie HTML-Dateien, Windows-RC-Dateien oder OpenDocument-Format), wird die Übersetzungsdatei mit der Basisdatei synchronisiert.

Fehlende Sprachen hinzufügen

Erweiterungs-ID:

weblate.consistency.languages

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Täglich, Repository post-add

Stellt sicher, dass ein konsistenter Satz von Sprachen für alle Komponenten innerhalb eines Projekts verwendet wird.

Bemerkung

Die von anderen Projekten gemeinsam genutzten Komponenten werden dabei nicht berücksichtigt.

Fehlende Sprachen werden alle 24 Stunden überprüft, und wenn neue Sprachen in Weblate hinzugefügt werden.

Im Gegensatz zu den meisten anderen wirkt sich diese Erweiterung auf das gesamte Projekt aus.

Hinweis

Übersetzen Sie automatisch die neu hinzugefügten Zeichenketten mit Automatische Übersetzung.

Komponentenerkennung

Erweiterungs-ID:

weblate.discovery.discovery

Konfiguration:

match

Regulärer Ausdruck zum Abgleich von Übersetzungsdateien

Der reguläre Ausdruck muss benannte Gruppen für Komponente und Sprache definieren.

file_format

Dateiformat

Dateiformat

name_template

Anpassen des Komponentennamens

Verwenden Sie die Syntax der Django-Vorlage. Diese Vorlage muss {{ component }} enthalten.

base_file_template

Definition des einsprachigen Basisdateinamens

Für zweisprachige Übersetzungsdateien leer lassen. Wenn gesetzt, muss diese Vorlage {{ component }} enthalten.

new_base_template

Definition der Basisdatei für neue Übersetzungen

Dateiname der Datei, mit der neue Übersetzungen erstellt werden. Für gettext .pot-Datei auswählen. Diese Vorlage muss {{ component }} enthalten.

intermediate_template

Zwischensprachedatei

Dateiname der Zwischenübersetzungsdatei. In den meisten Fällen handelt es sich dabei um eine von den Entwicklern bereitgestellte Übersetzungsdatei, die beim Erstellen der eigentlichen Ausgangszeichenketten verwendet wird. Diese Vorlage muss {{ component }} enthalten.

language_regex

Sprachfilter

Regulärer Ausdruck, gegen den die Übersetzungsdateien beim Scannen nach Dateimaske gefiltert wird.

copy_addons

Erweiterungen der Hauptkomponente zu den neu erstellten klonen

remove

Komponenten für nicht vorhandene Dateien entfernen

Trigger:

Erweiterungsinstallation, Repository post-update

Automatisches Hinzufügen oder Entfernen von Projektkomponenten basierend auf den Dateiänderungen in der Versionsverwaltung.

Der Abgleich erfolgt über reguläre Ausdrücke, die eine komplexe Konfiguration ermöglichen, für die jedoch einige Kenntnisse erforderlich sind. Der reguläre Ausdruck für den Abgleich von Übersetzungsdateien muss zwei benannte Gruppen enthalten, um Komponente und Sprache abzugleichen. Alle benannten Gruppen im regulären Ausdruck können als Variablen in den Vorlagenfeldern verwendet werden.

Erkennungsanforderungen

To discover a component successfully, the configuration has to do all of the following:

  • The regular expression must define component and language named groups.

  • Template fields used to name or locate per-component files must include {{ component }}, so the rendered value actually changes for each discovered component.

  • For monolingual formats, the component must contain a file matching base_file_template and at least one translation file matching match.

Funktionsbeispiel: news_<lang>.md

This is a common filename-based language variant layout:

  • docs/news_en.md

  • docs/news_cs.md

  • docs/guide_en.md

Use the Filename-based language variants preset for a starting point, then choose the matching file format and review the populated values.

Regulärer Ausdruck:

(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)

Komponentenname:

{{ component }}

Erkannte Dateimasken:
  • docs/news_*.md

  • docs/guide_*.md

In this example, {{ component }} resolves to the basename before the language suffix, so docs/news_en.md, docs/news_pt_BR.md, and docs/news_pt-BR.md all become the news component.

Sie können die Auszeichnung von Django-Vorlagen in allen Dateinamenfeldern verwenden, zum Beispiel:

{{ component }}

Component name parsed from the component match group

{{ component|title }}

Dateiname der Komponente mit großem Anfangsbuchstaben

{{ path }}: {{ component }}

Benutzerdefinierte Gruppe zum Abgleich des regulären Ausdrucks

Sobald Sie auf Speichern klicken, wird eine Vorschau der passenden Komponenten angezeigt, anhand derer Sie überprüfen können, ob die Konfiguration tatsächlich Ihren Anforderungen entspricht:

../_images/addon-discovery.webp

Beispiele für die Komponentenerkennung

The worked example above covers the most common filename-based variant layout. The following examples show other repository structures you can match.

Ein Ordner pro Sprache

Ein Ordner pro Sprache, der Übersetzungsdateien für Komponenten enthält.

Regulärer Ausdruck:

(?P<language>[^/.]*)/(?P<component>[^/]*)\.po

Passende Dateien:
  • cs/application.po

  • cs/website.po

  • de/application.po

  • de/website.po

Gettext-Gebietsschema-Layout

Übliche Struktur zum Speichern von gettext-PO-Dateien.

Regulärer Ausdruck:

locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

Passende Dateien:
  • locale/cs/LC_MESSAGES/application.po

  • locale/cs/LC_MESSAGES/website.po

  • locale/de/LC_MESSAGES/application.po

  • locale/de/LC_MESSAGES/website.po

Komplexe Dateinamen

Verwendung von Komponenten- und Sprachenname innerhalb des Dateinamens.

Regulärer Ausdruck:

src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po

Passende Dateien:
  • src/locale/application.cs.po

  • src/locale/website.cs.po

  • src/locale/application.de.po

  • src/locale/website.de.po

Mehrmaliger Sprachcode

Verwendung von Sprache in Pfad und Dateiname.

Regulärer Ausdruck:

locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po

Passende Dateien:
  • locale/cs/application/cs.po

  • locale/cs/website/cs.po

  • locale/de/application/de.po

  • locale/de/website/de.po

Android-Zeichenketten aufteilen

Android-Zeichenketten-Ressourcen, aufgeteilt in mehrere Dateien.

Regulärer Ausdruck:

res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml

Passende Dateien:
  • res/values-cs/strings-about.xml

  • res/values-cs/strings-help.xml

  • res/values-de/strings-about.xml

  • res/values-de/strings-help.xml

Mehrere Pfade abgleichen

Maven-Projekt mit mehreren Modulen und Übersetzungen von Java Properties.

Regulärer Ausdruck:

(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties

Komponentenname:

{{ originalHierarchy }}: {{ component }}

Passende Dateien:
  • parent/module1/submodule/src/main/resources/ApplicationResources_fr.properties

  • parent/module1/submodule/src/main/resources/ApplicationResource_es.properties

  • parent/module2/src/main/resources/ApplicationResource_de.properties

  • parent/module2/src/main/resources/ApplicationResource_ro.properties

Hinweis

Die Erweiterung zur Komponentenerkennung verwendet Weblate-interne URLs. Dies ist ein bequemer Weg, um die VCS-Einrichtung zwischen mehreren Komponenten zu teilen. Verlinkte Komponenten verwenden das lokale Repository der Hauptkomponente, das durch Eintragen von weblate://project/main-component in das Feld Quellcode-Repository (in OperationenEinstellungenVersionsverwaltung) der jeweiligen Komponente eingerichtet wird. Dies spart Zeit bei der Konfiguration und auch Systemressourcen.

Hinweis

Stellen Sie mit Fehlende Sprachen hinzufügen sicher, dass die neue Komponente den vollständigen Satz übersetzbarer Sprachen enthält.

Fedora Messaging

Added in version 5.15.

Erweiterungs-ID:

weblate.fedora_messaging.publish

Konfiguration:

events

Änderungsereignisse

Änderungsereignisse

amqp_host

AMQP-Broker-Host

Der AMQP-Broker, mit dem eine Verbindung hergestellt werden soll.

amqp_ssl

SSL für AMQP-Verbindung verwenden

ca_cert

CA-Zertifikate

Bündel von PEM-kodierten CA-Zertifikaten, die zum Validieren des vom Server vorgelegten Zertifikats verwendet werden.

client_key

Client-SSL-Schlüssel

PEM-kodierter privater SSL-Schlüssel des Clients.

client_cert

Client-SSL-Zertifikate

PEM-kodiertes SSL-Zertifikat des Clients.

Trigger:

Ereignisänderung

Sendet Benachrichtigungen an einen Fedora Messaging kompatiblen AMQP-Exchange.

Fedora Messaging ist ein AMQP-basierter Publisher für alle Änderungen, die in Weblate stattfinden. Damit können Sie zusätzliche Dienste mit Weblate-Änderungen verbinden.

Nachrichtenthema

All messages have topic weblate.<action>.<project>.<category...>.<component>.<translation>. The action is lowercase textual representation of action with underscores instead of space, for example resource_updated; see Änderungsereignisse for all action identifiers. The remaining parts match Weblate object path segments.

For example, a project backup event for the website project uses weblate.project_backed_up.website. A translation change in the website project, frontend component, and Czech translation uses weblate.translation_changed.website.frontend.cs. The same change in the frontend component inside the parent and child categories uses weblate.translation_changed.website.parent.child.frontend.cs.

Nachrichtenkörper

Der Textkörper besteht aus den folgenden Feldern (sofern sie für das Ereignis verfügbar sind):

change_id

Numerische ID der Änderung

action

Ausführlicher Name der Änderung.

timestamp

ISO-formatierter Zeitstempel

target

Neuer Wert der Änderung (z. B. neue Übersetzung der Zeichenkette)

old

Alter Wert der Änderung (z. B. vorherige Übersetzung der Zeichenkette)

source

Ausgangszeichenkette.

url

Absolute URL zur Anzeige des zugehörigen Objekts.

author

Autor-Benutzername (dieser kann sich von dem des Benutzers unterscheiden, z. B. bei der Annahme von Vorschlägen)

user

Handelnder Benutzername

project

Projekt-Slug

component

Komponenten-Slug

translation

Sprachcode der Übersetzung

Nachrichtenheader

Es gibt weitere Header, die Sie ebenfalls für das Routing verwenden können:

action

Ausführlicher Name der Änderung.

project

Projekt-Slug

component

Komponenten-Slug

Beispielnachrichten

Ereignis „Repository zusammengeführt“:

{
  "id": 1,
  "action": "Merged repository",
  "timestamp": "2017-06-15T11:30:47.325000+00:00",
  "url": "http://example.com/projects/test/test/",
  "component": "test"
}

Ereignis „Neue Ausgangszeichenkette“:

{
  "id": 2,
  "action": "New source string",
  "timestamp": "2017-06-15T11:30:47.372000+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Ereignis „Ressource aktualisiert“:

{
  "id": 6,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.410000+00:00",
  "url": "http://example.com/projects/test/test/cs/",
  "project": "test",
  "component": "test",
  "translation": "cs"
}
{
  "id": 7,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.510000+00:00",
  "url": "http://example.com/projects/test/test/de/",
  "project": "test",
  "component": "test",
  "translation": "de"
}
{
  "id": 8,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.595000+00:00",
  "url": "http://example.com/projects/test/test/it/",
  "project": "test",
  "component": "test",
  "translation": "it"
}

Ereignis „Projekt entfernt“:

{
  "id": 9,
  "action": "Removed project",
  "timestamp": "2019-10-17T15:57:08.559420+00:00",
  "target": "test",
  "user": "testuser"
}

Ereignis „Neuer Mitwirkender“:

{
  "id": 11,
  "action": "New contributor",
  "timestamp": "2019-10-17T15:57:08.759960+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Ereignis „Neue Übersetzung“:

{
  "id": 12,
  "action": "New translation",
  "timestamp": "2019-10-17T15:57:08.772591+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "target": ["Ahoj svete!\n"],
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Massenbearbeitung

Erweiterungs-ID:

weblate.flags.bulk

Konfiguration:

q

Abfrage

state

Zu setzender Status

Verfügbare Auswahlmöglichkeiten:

-1

Nicht ändern

10

Bearbeitungsbedürftig

11

Bearbeitungsbedürftig (Muss umgeschrieben werden)

12

Bearbeitungsbedürftig (Muss überprüft werden)

20

Übersetzt

30

Genehmigt

add_flags

Übersetzungsmarkierungen zum Hinzufügen

remove_flags

Übersetzungsmarkierungen zum Entfernen

add_labels

Labels zum Hinzufügen

remove_labels

Labels zum Entfernen

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung

Massenbearbeitung von Markierungen, Labels oder den Zeichenkettenstatus.

Beispiele:

Neue Zeichenketten automatisch beschriften

Suchanfrage

NOT has:label

Labels zum Hinzufügen

recent

Markieren aller App-Store-Metadatendateien Änderungsprotokoll-Zeichenketten als schreibgeschützt

Suchanfrage

language:en AND key:changelogs/

Übersetzungsmarkierungen zum Hinzufügen

read-only

Markieren bestimmter Zeichenketten als schreibgeschützt

Suchanfrage

source:r"^\`\`[.a-zA-Z0-9_-]*\`\`$" AND language:en

Übersetzungsmarkierungen zum Hinzufügen

read-only

Unveränderte Übersetzungen als „Muss umgeschrieben werden“ markieren

Erweiterungs-ID:

weblate.flags.same_edit

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Einheit pre-create

Jedes Mal wenn eine neue übersetzbare Zeichenkette aus dem VCS importiert wird und mit der Ausgangszeichenkette übereinstimmt, wird sie in Weblate als umzuschreibend markiert. Dies ist besonders nützlich für Dateiformate, die nicht übersetzte Ausgangszeichenketten enthalten.

Hinweis

Sie können auch die Unveränderte Übersetzung Prüfung verschärfen, indem Sie strict-same zu Übersetzungsmarkierungen hinzufügen.

Siehe auch

Übersetzungsstatus

Neue Ausgangszeichenketten als „Muss überprüft werden“ markieren

Erweiterungs-ID:

weblate.flags.source_edit

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Einheit pre-create

Bei jedem Import einer neuen Ausgangszeichenkette aus dem VCS wird diese in Weblate als zu überprüfend markiert. Auf diese Weise können Sie die von den Entwicklern geschriebenen Ausgangszeichenketten einfach filtern und bearbeiten.

Siehe auch

Übersetzungsstatus

Neue Übersetzungen als „Muss umgeschrieben werden“ markieren

Erweiterungs-ID:

weblate.flags.target_edit

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Einheit pre-create

Bei jedem Import einer neuen übersetzbaren Zeichenkette aus dem VCS wird diese in Weblate als umzuschreibend markiert. Auf diese Weise können Sie die von den Entwicklern erstellten Übersetzungen einfach filtern und bearbeiten.

Siehe auch

Übersetzungsstatus

Aktualisierte Übersetzungen vom Repository als „Muss umgeschrieben werden“ markieren

Erweiterungs-ID:

weblate.flags.target_repo_update

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Einheit post-sync

Immer wenn eine Zeichenketten-Übersetzung aus dem VCS geändert wird, wird sie als umzuschreibend in Weblate markiert. Besonders nützlich, wenn Übersetzungsdateien häufig manuell oder durch einen externen Dienst aktualisiert werden.

Siehe auch

Übersetzungsstatus

Schreibgeschützte Zeichenketten mit Ausgangszeichenkette ausfüllen

Added in version 4.18.

Erweiterungs-ID:

weblate.generate.fill_read_only

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich

Füllt die Übersetzung von schreibgeschützten Zeichenketten mit der Ausgangszeichenkette aus.

Statistikgenerator

Erweiterungs-ID:

weblate.generate.generate

Konfiguration:

filename

Name der erzeugten Datei

template

Inhalt der erzeugten Datei

Trigger:

Erweiterungsinstallation, Repository pre-commit

Erzeugt eine Datei mit detaillierten Informationen zum Übersetzungsstatus.

Sie können eine Django-Vorlage sowohl im Dateinamen als auch im Inhalt verwenden, siehe Auszeichnungsvorlage für eine detaillierte Beschreibung der Auszeichnung.

Zum Beispiel das Erzeugen einer Zusammenfassungsdatei für jede Übersetzung:

Name der erzeugten Datei

locale/{{ language_code }}.json

Inhalt
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

Übersetzung mit Ausgangszeichenkette ausfüllen

Added in version 4.11.

Erweiterungs-ID:

weblate.generate.prefill

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich

Füllt Übersetzungszeichenketten mit der Ausgangszeichenkette aus.

All untranslated strings in the component will be filled with the source string, and marked as needing edit. Use this when you can not have empty strings in the translation files. .. AUTOGENERATED START: weblate.generate.pseudolocale .. This section is automatically generated by ./manage.py list_addons. Do not edit manually.

Pseudolokale erzeugen

Added in version 4.5.

Erweiterungs-ID:

weblate.generate.pseudolocale

Konfiguration:

source

Ausgangszeichenketten

target

Zielübersetzung

Alle Zeichenketten in dieser Übersetzung werden überschrieben

prefix

Vorangestellter statischer Text

var_prefix

Vorangestellter variabler Text

suffix

Angehängter statischer Text

var_suffix

Angehängter variabler Text

var_multiplier

Variabler Textmultiplikator

Wie oft der variable Text, je nach Länge der Ausgangszeichenkette, wiederholt werden soll.

include_readonly

Schreibgeschützte Zeichenketten einschließen

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich

Erzeugt eine Übersetzung durch automatisches Hinzufügen von Präfix und Suffix zu Ausgangszeichenketten.

Pseudolokalisierungen sind nützlich, um Zeichenketten zu finden, die nicht für die Lokalisierung vorbereitet sind. Dazu werden alle übersetzbaren Ausgangszeichenketten geändert, so dass es einfach ist, unveränderte Zeichenketten zu erkennen, wenn die Anwendung in der Pseudolokalsprache ausgeführt wird.

Es ist auch möglich, Zeichenketten zu finden, deren lokalisierte Entsprechungen nicht in das Layout passen.

Das Verwenden der variablen Teile ermöglicht es, nach Zeichenketten zu suchen, die nach der Lokalisierung möglicherweise nicht in die Bedienoberfläche passen – der Text wird auf der Grundlage der Länge der Ausgangszeichenkette erweitert. Die variablen Texte werden um die Länge des Textes multipliziert mit dem Multiplikator wiederholt. Zum Beispiel wird Hello world mit dem variablen Text _ und dem variablen Multiplikator von 1 zu Hello world___________ – der Text wird für jedes Zeichen in der Ausgangszeichenkette einmal wiederholt.

Die Zeichenketten werden nach folgendem Muster erzeugt:

Vorangestellter statischer Text Vorangestellter variabler Text Ausgangszeichenkette Angehängter variabler Text Angehängter statischer Text

Hinweis

Sie können echte Sprachen zum Testen verwenden, aber in Weblate gibt es speziell dafür vorgesehene Pseudolokalisierungen – en_XA und ar_XB.

Hinweis

Sie können diese Erweiterung verwenden, um die Übersetzung in ein neues Gebietsschema einer bestehenden oder ähnlichen Sprache zu starten. Sobald Sie die Übersetzung zur Komponente hinzugefügt haben, folgen Sie der Erweiterung. Beispiel: Wenn Sie fr haben und die Übersetzung fr_CA starten möchten, setzen Sie einfach fr als Quelle, fr_CA als Ziel und lassen Sie das Präfix und Suffix leer.

Deinstallieren Sie die Erweiterung, sobald Sie die neue Übersetzung ausgefüllt haben, um zu verhindern, dass Weblate die nach dem Kopieren erstellten Übersetzungen verändert.

Mitwirkende im Kommentar

Erweiterungs-ID:

weblate.gettext.authors

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Repository pre-commit

Aktualisiert den Kommentarteil im Header der PO-Datei, um den Namen des Mitwirkenden und das Datum des Beitrags aufzunehmen.

Der Header der PO-Datei wird wie folgt aussehen:

# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

ALL_LINGUAS-Variable in der Datei „configure“aktualisieren

Erweiterungs-ID:

weblate.gettext.configure

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Täglich, Repository post-add, Repository post-remove

Aktualisiert die Variable ALL_LINGUAS in „configure“, „configure.in“ oder „configure.ac“-Dateien, wenn eine Übersetzung hinzugefügt oder entfernt wird.

Aktualisiert die ALL_LINGUAS-Variable in configure, configure.in oder einer configure.ac-Datei, wenn eine Übersetzung hinzugefügt oder entfernt wird.

gettext-Ausgabe anpassen

Removed in version 5.13: Ersetzt durch Dateiformat-Parameter.

gettext-Vorlage aktualisieren (Django)

Added in version 5.17.

Erweiterungs-ID:

weblate.gettext.django

Konfiguration:

interval

Aktualisierungshäufigkeit

Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.

Verfügbare Auswahlmöglichkeiten:

daily

Täglich

weekly

Wöchentlich

monthly

Monatlich

normalize_header

POT-Header normalisieren

Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.

Trigger:

Erweiterungsinstallation, Manueller Trigger, Repository post-update

Aktualisiert die gettext-Vorlage mithilfe des in Django integrierten makemessages-Befehls.

This add-on updates the template configured in Vorlage für neue Übersetzungen. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO-Dateien auf POT aktualisieren (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Django requirements

This add-on requires xgettext and msguniq. It runs Weblate’s internal extraction wrapper for Django messages instead of invoking a project’s manage.py makemessages, so it does not load project Django settings or applications.

The template for new translations must use the django or djangojs domain. Supported template names are django.pot, djangojs.pot, django.po, and djangojs.po. Weblate infers the source directory from the template path and skips repository locale directories while extracting.

LINGUAS-Datei aktualisieren

Erweiterungs-ID:

weblate.gettext.linguas

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Täglich, Repository post-add, Repository post-remove

Aktualisiert die LINGUAS-Datei, wenn eine Übersetzung hinzugefügt oder entfernt wird.

POT-Datei aktualisieren (Meson)

Added in version 5.17.

Erweiterungs-ID:

weblate.gettext.meson

Konfiguration:

interval

Aktualisierungshäufigkeit

Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.

Verfügbare Auswahlmöglichkeiten:

daily

Täglich

weekly

Wöchentlich

monthly

Monatlich

normalize_header

POT-Header normalisieren

Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.

comment_mode

Code-Kommentare

Wählen Sie, ob xgettext keine Kommentare, alle Kommentare oder nur die mit einem bestimmten Tag markierten Kommentare extrahieren soll.

Verfügbare Auswahlmöglichkeiten:

off

Kommentare nicht extrahieren

all

Alle Kommentare extrahieren

tagged

Kommentare mit Tag extrahieren

comment_tag

Kommentar-Tag

Tag, das an xgettext zur Extraktion von Kommentaren übergeben wird, wenn der Modus „tagged comment“ verwendet wird.

checks

xgettext-Prüfungen

Zusätzliche Qualitätsprüfungen von xgettext für extrahierte Nachrichten aktivieren.

Verfügbare Auswahlmöglichkeiten:

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

Zusätzliches Schlüsselwort

Optionales zusätzliches Schlüsselwort, das mit –keyword an xgettext übergeben wird.

preset

Meson-Voreinstellung

Voreingestellte xgettext-Argumente passend zur gettext-Integration von Meson. Die GLib-Voreinstellung fügt die Schlüsselwort- und Format-Markierungsoptionen hinzu, die von Mesons gettext-Helper verwendet werden.

Verfügbare Auswahlmöglichkeiten:

glib

GLib

Trigger:

Erweiterungsinstallation, Manueller Trigger, Repository post-update

Aktualisiert die gettext-Vorlage mithilfe der Meson-gettext-Konventionen.

This add-on updates the template configured in Vorlage für neue Übersetzungen. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO-Dateien auf POT aktualisieren (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Meson requirements

This add-on requires xgettext; it does not invoke Meson. It follows Meson gettext conventions by reading POTFILES or POTFILES.in from the gettext directory and passing the GLib keyword and format-flag preset to xgettext.

The gettext directory is the directory containing the template configured in Vorlage für neue Übersetzungen. It must contain meson.build and POTFILES or POTFILES.in. A Meson project meson.build must be present in that directory or one of its parent directories. If both POTFILES and POTFILES.in exist, POTFILES is used. An adjacent POTFILES.skip excludes listed source files from extraction.

Configure this add-on from the existing Meson gettext setup. In most Meson projects, the gettext directory is po/, the template is named after the gettext domain, and po/meson.build calls Meson’s gettext helper. Use the same template path in Vorlage für neue Übersetzungen, for example po/example.pot, and keep POTFILES or POTFILES.in next to that meson.build file.

Weblate does not read the source file list from meson.build. It uses POTFILES or POTFILES.in, matching Meson’s gettext convention. When the Meson project uses a non-default gettext directory or domain, mirror that layout in the component template path.

MO-Dateien erzeugen

Erweiterungs-ID:

weblate.gettext.mo

Konfiguration:

path

Pfad der erzeugten MO-Datei

Wenn nicht angegeben, wird der Ort der PO-Datei verwendet.

fuzzy

Bearbeitungsbedürftige Zeichenketten einschließen

Bearbeitungsbedürftige (ungenaue) Zeichenketten sind normalerweise nicht für Übersetzungen geeignet.

Trigger:

Repository pre-commit

Erzeugt automatisch eine MO-Datei für jede geänderte PO-Datei.

Der Speicherort der erzeugten MO-Datei kann angepasst werden, und das Feld dafür verwendet Auszeichnungsvorlage.

Bemerkung

Wenn eine Übersetzung entfernt wird, wird die zugehörige PO-Datei aus dem Repository gelöscht, nicht aber die von dieser Erweiterung erzeugte MO-Datei. Die MO-Datei muss manuell aus dem Upstream entfernt werden.

PO-Dateien auf POT aktualisieren (msgmerge)

Geändert in Version 5.13: Einstellungen-Konfiguration wurde nach Dateiformat-Parameter verschoben.

Erweiterungs-ID:

weblate.gettext.msgmerge

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Repository post-update

Aktualisiert alle PO-Dateien (wie mit „Dateimaske“ konfiguriert), damit sie mit der POT-Datei (wie mit „Vorlage für neue Übersetzungen“ konfiguriert) übereinstimmen, mit msgmerge.

Diese Erweiterung ist unverzichtbar bei der Arbeit mit gettext-(PO)-Dateien, bei denen die POT-(Template)-Datei mit neuen Zeichenketten oder Änderungen an bestehenden Zeichenketten aktualisiert wird. Wenn die POT-Datei im Repository aktualisiert wird, fügt diese Erweiterung diese Änderungen automatisch in alle Sprach-PO-Dateien ein, um sicherzustellen, dass:

  • Neue übersetzbare Zeichenketten in allen Sprachen erscheinen

  • Entfernte Zeichenketten als veraltet gekennzeichnet werden

  • Geänderte Zeichenketten als zu überprüfend markiert werden (ungenau)

Most msgmerge command-line options can be set up through file format parameters configuration. Enable the po_remove_obsolete parameter to remove obsolete #~ entries when PO files are saved.

POT-Datei aktualisieren (Sphinx)

Added in version 5.17.

Erweiterungs-ID:

weblate.gettext.sphinx

Konfiguration:

interval

Aktualisierungshäufigkeit

Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.

Verfügbare Auswahlmöglichkeiten:

daily

Täglich

weekly

Wöchentlich

monthly

Monatlich

normalize_header

POT-Header normalisieren

Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.

filter_mode

Filterung

Optional können Zeichenketten entfernt werden, die nach der Sphinx-Extraktion nicht mehr sinnvoll übersetzt werden können.

Verfügbare Auswahlmöglichkeiten:

none

weblate_docs

Weblate-Dokumentation

Trigger:

Erweiterungsinstallation, Manueller Trigger, Repository post-update

Aktualisiert die gettext-Vorlage mithilfe des gettext-Builders von Sphinx, ohne die Projektkonfiguration zu laden.

This add-on updates the template configured in Vorlage für neue Übersetzungen. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO-Dateien auf POT aktualisieren (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

Sphinx requirements

This add-on requires sphinx-build, provided by the sphinx installation extra. The template for new translations must be a .pot file below a locales directory. The directory before locales is used as the Sphinx source directory and must contain conf.py.

Extraction uses Weblate’s bundled Sphinx configuration and does not load the project configuration. Weblate runs the Sphinx gettext builder, normalizes source references to paths relative to the source directory, and copies the generated template back to the configured template path.

POT-Datei aktualisieren (xgettext)

Added in version 5.17.

Erweiterungs-ID:

weblate.gettext.xgettext

Konfiguration:

interval

Aktualisierungshäufigkeit

Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.

Verfügbare Auswahlmöglichkeiten:

daily

Täglich

weekly

Wöchentlich

monthly

Monatlich

normalize_header

POT-Header normalisieren

Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.

comment_mode

Code-Kommentare

Wählen Sie, ob xgettext keine Kommentare, alle Kommentare oder nur die mit einem bestimmten Tag markierten Kommentare extrahieren soll.

Verfügbare Auswahlmöglichkeiten:

off

Kommentare nicht extrahieren

all

Alle Kommentare extrahieren

tagged

Kommentare mit Tag extrahieren

comment_tag

Kommentar-Tag

Tag, das an xgettext zur Extraktion von Kommentaren übergeben wird, wenn der Modus „tagged comment“ verwendet wird.

checks

xgettext-Prüfungen

Zusätzliche Qualitätsprüfungen von xgettext für extrahierte Nachrichten aktivieren.

Verfügbare Auswahlmöglichkeiten:

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

Zusätzliches Schlüsselwort

Optionales zusätzliches Schlüsselwort, das mit –keyword an xgettext übergeben wird.

input_mode

Eingabequelle

Wählen Sie aus, ob xgettext Quelldateien aus glob-Mustern oder aus einem POTFILES/POTFILES.in-Manifest lesen soll.

Verfügbare Auswahlmöglichkeiten:

patterns

Muster für Quelldateien

potfiles

POTFILES-Manifest

language

xgettext-Sprache

Programming language passed to xgettext, for example Python or C. Leave blank to let xgettext guess the language from file extensions.

source_patterns

Muster für Quelldateien

Durch Zeilenumbrüche getrennte Repository-relative glob-Muster für Dateien, die mit xgettext extrahiert werden sollen.

potfiles_path

POTFILES-Pfad

Repository-relativer Pfad zu POTFILES oder POTFILES.in. Die Einträge werden relativ zum Stammverzeichnis des Repositorys aufgelöst. Falls neben dem Manifest vorhanden, schließt POTFILES.skip die aufgeführten Dateien von der Extraktion aus.

Trigger:

Erweiterungsinstallation, Manueller Trigger, Repository post-update

Aktualisiert die gettext-Vorlage mithilfe von xgettext für ausgewählte Quelldateien.

This add-on updates the template configured in Vorlage für neue Übersetzungen. It is available for gettext PO components, and the component must define a template for new translations.

The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.

The template update does not update translation PO files by itself. Keep PO-Dateien auf POT aktualisieren (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.

xgettext requirements

This add-on requires xgettext. Configure either source file patterns or a POTFILES / POTFILES.in manifest. Source file patterns are repository-relative glob patterns and only matching repository files are passed to xgettext.

Entries in POTFILES or POTFILES.in are resolved relative to the repository root. They must be relative paths, stay inside the repository, and point to existing files. Blank lines and lines starting with # are ignored. If a POTFILES.skip file exists next to the manifest, its entries are excluded from extraction.

Automatic repository refresh runs are skipped unless the changed files match the configured source patterns, match files listed in the manifest, change a watched manifest, or change the add-on configuration.

Start from the build-system extraction setup when configuring this add-on. Autotools projects usually keep gettext inputs in po/POTFILES.in and options such as the gettext domain and xgettext flags in po/Makevars or related Makefile.am files. Use manifest mode with the same POTFILES.in when its entries are plain repository-relative source paths, and copy relevant extraction behavior into the add-on settings, for example the language, comment extraction, checks, and additional keyword.

For other build systems, use the source list or extraction command they already run as the source of truth. CMake, custom Makefiles, npm scripts, or project specific extraction scripts often call xgettext directly or generate an intermediate file list. Configure source patterns for simple layouts, or use manifest mode when the project maintains a plain file list. If a build-system manifest contains transformations or prefixes that are not file paths, convert it to plain repository-relative paths before using it as POTFILES.

Git-Commits zusammenfassen

Erweiterungs-ID:

weblate.git.squash

Konfiguration:

squash

Commits zusammenfassen

Verfügbare Auswahlmöglichkeiten:

all

Alle Commits in einen

language

Pro Sprache

file

Pro Datei

author

Pro Übersetzer

append_trailers

Endzeilen der zusammengefassten Commit-Nachricht hinzufügen

Die Endzeilen ähneln RFC-822-E-Mail-Headern, am Ende eines ansonsten freien Teils der Commit-Nachricht, z. B. „Mitverfasst von: …“.

commit_message

Commit-Nachricht

Diese Commit-Nachricht wird anstelle der zusammengefassten Commit-Nachrichten verwendet.

Trigger:

Erweiterungsinstallation, Repository post-commit

Git-Commits vor dem Pushen der Änderungen zusammenfassen.

Hinweis

Um unnötige Konflikte zu vermeiden, empfiehlt es sich, den automatischen Empfang von Upstream-Änderungen über Webhooks oder API zu konfigurieren, siehe Repositorys aktualisieren.

Git-Commits können vor dem Pushen von Änderungen in einem der folgenden Modi zusammengefasst werden:

  • Alle Commits in einen

  • Pro Sprache

  • Pro Datei

  • Pro Übersetzer

Ursprüngliche Commit-Nachrichten werden erhalten, verlieren aber die Urheberschaft, es sei denn Pro Autor wird ausgewählt oder die Commit-Nachricht wird angepasst, um sie einzubeziehen.

Die ursprünglichen Commit-Nachrichten können optional mit einer eigenen Commit-Nachricht überschrieben werden.

Endzeilen (Commit-Zeilen wie Co-authored-by: ) können optional aus den ursprünglichen Commit-Nachrichten entfernt und an das Ende der zusammengefassten Commit-Nachricht angehängt werden. Dies erzeugt auch eine angemessene Co-authored-by:-Anerkennung für jeden Übersetzer.

JSON-Ausgabe anpassen

Geändert in Version 5.12: Option Leerzeichen nach Trennzeichen vermeiden hinzugefügt.

Removed in version 5.13: Ersetzt durch Dateiformat-Parameter.

Repository auf Upstream zurücksetzen

Added in version 5.17.

Erweiterungs-ID:

weblate.hosted.reset

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Täglich

Verwirft jede Nacht alle Änderungen im Weblate-Repository.

Die Java-Properties-Datei formatieren

Erweiterungs-ID:

weblate.properties.sort

Konfiguration:

case_sensitive

Sortierung nach Groß- und Kleinschreibung aktivieren

Trigger:

Repository pre-commit

Formatiert und sortiert die Java-Properties-Datei.

  • Konsolidiert Zeilenumbrüche zu Unix-Zeilenumbrüchen.

  • Formatiert Unicode-Escape-Zeichenfolgen in Großbuchstaben (falls vorhanden).

  • Entfernt leere Zeilen und Kommentare.

  • Sortiert die Zeichenketten nach Schlüsselworten.

  • Bereinigt doppelte Zeichenketten.

Veralteter Kommentar entfernen

Erweiterungs-ID:

weblate.removal.comments

Konfiguration:

age

Tage aufzubewahren

Trigger:

Erweiterungsinstallation, Täglich

Legen Sie einen Zeitrahmen für die Entfernung von Kommentaren fest.

Dies kann nützlich sein, um alte Kommentare zu entfernen, die möglicherweise nicht mehr aktuell sind. Seien Sie vorsichtig, denn wenn Kommentare alt werden, bedeutet das nicht, dass sie ihre Bedeutung verloren haben.

Veralteter Vorschlag entfernen

Erweiterungs-ID:

weblate.removal.suggestions

Konfiguration:

age

Tage aufzubewahren

votes

Abstimmungsschwelle

Schwellenwert für die Entfernung. Leer lassen, um Übersetzungsvorschläge unabhängig von der Abstimmung zu entfernen. Dieses Feld hat keine Auswirkungen, wenn die Abstimmung deaktiviert ist.

Trigger:

Erweiterungsinstallation, Täglich

Legen Sie einen Zeitrahmen für die Entfernung von Vorschlägen fest.

Kann im Zusammenhang mit Übersetzungsvorschlägen (siehe Peer-Review) sehr nützlich sein, um Vorschläge zu entfernen, die innerhalb eines bestimmten Zeitraums nicht genügend positive Stimmen erhalten haben.

RESX-Dateien aktualisieren

Erweiterungs-ID:

weblate.resx.update

Konfiguration:

Diese Erweiterung hat keine Konfiguration.

Trigger:

Erweiterungsinstallation, Repository post-update

Aktualisieren Sie alle Übersetzungsdateien entsprechend der einsprachigen Upstream-Basisdatei. Nicht verwendete Zeichenketten werden entfernt und neue Zeichenketten werden als Kopien der Ausgangszeichenkette hinzugefügt.

Hinweis

Verwenden Sie Übersetzungsdateien bereinigen, wenn Sie nur veraltete Übersetzungsschlüssel entfernen möchten.

Slack-Webhooks

Added in version 5.12.

Erweiterungs-ID:

weblate.webhook.slack

Konfiguration:

webhook_url

Webhook-URL

events

Änderungsereignisse

Änderungsereignisse

Trigger:

Ereignisänderung

Sendet Benachrichtigungen an einen Slack-Kanal basierend auf ausgewählten Ereignissen.

Warnung

Der Inhalt der Benachrichtigung kann HTML-Tags enthalten. Dies ist ein bekanntes Problem, das bald behoben wird; siehe https://github.com/WeblateOrg/weblate/issues/15056.

Hinweis

Um eine Webhook-URL zu erhalten, befolgen Sie die Schritte in der Slack-Incoming-Webhooks-Dokumentation

Webhook

Added in version 5.11.

Geändert in Version 5.15: Die Übereinstimmung der Länge des Geheimnisses mit der Spezifikation wird nun validiert.

Erweiterungs-ID:

weblate.webhook.webhook

Konfiguration:

webhook_url

Webhook-URL

secret

Webhook-Geheimnis

Das Standard-Webhook-Geheimnis ist eine base64-kodierte Zeichenkette.

events

Änderungsereignisse

Änderungsereignisse

Trigger:

Ereignisänderung

Sendet Benachrichtigungen an externe Dienste basierend auf ausgewählten Ereignissen, entsprechend der Standard-Webhooks-Spezifikation.

The request payload complies with the Weblate Messaging schema. The action field uses the action name listed in Änderungsereignisse. The OpenAPI description can also be found at /api/docs/. Sample request body:

{
   "change_id": 99,
   "action": "Translation changed",
   "timestamp": "2019-08-24T14:15:22Z",
   "target": "Nazdar svete!",
   "old": "Nazdar!",
   "source": "Hello, world",
   "url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
   "author": "author-username",
   "user": "user-username",
   "project": "project-slug",
   "component": "component-slug",
   "translation": "cs"
}

Beispielanfrage mit Kategorien:

{
   "change_id": 8910,
   "action": "Component renamed",
   "timestamp": "2025-06-11T07:15:09Z",
   "target": ["new-name"],
   "old": ["component-slug"],
   "url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
   "user": "testuser",
   "project": "project-slug",
   "component": "component-slug",
   "category": [
      "sub-category",
      "child-category",
      "parent-category"
   ]
}

Beispiel für Anfrage-Header:

{
   "webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
   "webhook-timestamp": "1748505623.044281",
   "webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}

webhook-signature ist eine durch Leerzeichen getrennte Liste von HMAC-Signaturen, die anhand der Zeichenketten secret, der Nutzdaten der Anfrage, webhook-timestamp und webhook-id erzeugt wurden. Damit wird die Authentifizierung und Integrität der Webhook-Anfrage sichergestellt.

Das bereitgestellte secret ist eine base64-kodierte Zeichenkette zwischen 24 Byte (192 Bit) und 64 Byte (512 Bit). Zur leichteren Identifizierung kann ihr das Präfix whsec_ vorangestellt werden.

Um eine Anfrage zu verifizieren, können Sie die Methode Webhook.verify aus der Bibliothek standardwebhooks oder eine Implementierung der „Standard Webhooks Specification“ verwenden.

Obsolete Erweiterungen

XML-Ausgabe anpassen

Added in version 4.15.

Removed in version 5.13: Ersetzt durch Dateiformat-Parameter.

YAML-Ausgabe anpassen

Removed in version 5.13: Ersetzt durch Dateiformat-Parameter.

Gemeinsame Parameter für Erweiterungen

Maschinelle Übersetzungssysteme

Verfügbare Auswahlmöglichkeiten:

alibaba

Alibaba

aws

Amazon Translate

anthropic

Anthropic

apertium-apy

Apertium APy

microsoft-translator

Azure AI Translator

azure-openai

Azure OpenAI

baidu

Baidu

cyrtranslit

CyrTranslit

deepl

DeepL

glosbe

Glosbe

google-translate-api-v3

Google Cloud Translation Advanced

google-translate

Google Cloud Translation Basic

ltengine

LTEngine

libretranslate

LibreTranslate

mistral

Mistral

modernmt

ModernMT

mymemory

MyMemory

netease-sight

Netease Sight

ollama

Ollama

openai

OpenAI

sap-translation-hub

SAP Translation Hub

systran

Systran

weblate

Weblate

weblate-translation-memory

Weblate-Übersetzungsspeicher

yandex

Yandex

yandex-v2

Yandex v2

youdao-zhiyun

Youdao Zhiyun

tmserver

tmserver

Dateiformat

Verfügbare Auswahlmöglichkeiten:

apple-xliff

XLIFF 1.2 mit Apple-Erweiterungen

appstore

App-Store-Metadatendateien

arb

ARB-Datei

aresource

Android String-Ressource

asciidoc

AsciiDoc-Datei

ass

Erweiterte SubStation-Alpha-Untertiteldatei

catkeys

Haiku Catkeys

cmp-resource

Compose-Multiplatform-Ressource

csv

CSV-Datei

csv-multi

Mehrwertige CSV-Datei (UTF-8)

csv-simple

Einfache CSV-Datei

dokuwiki

DokuWiki-Textdatei

dtd

DTD-Datei

flatxml

Flache XML-Datei

fluent

Fluent-Datei

formatjs

JSON-Datei Format.JS

go-i18n-json

JSON-Datei go-i18n v1

go-i18n-json-v2

JSON-Datei go-i18n v2

go-i18n-toml

TOML-Datei go-i18n

gotext

JSON-Datei gotext

gwt

GWT Properties

html

HTML-Datei

i18next

JSON-Datei i18next v3

i18nextv4

JSON-Datei i18next v4

idml

IDML-Datei

ini

INI-Datei

islu

Inno-Setup-INI-Datei

joomla

Joomla-Sprachdatei

json

JSON-Datei

json-nested

JSON-Datei mit verschachtelter Struktur

laravel

Laravel-PHP-Zeichenketten

markdown

Markdown-Datei

mdx

MDX-Datei

mediawiki

MediaWiki-Textdatei

mi18n-lang

@draggable/i18n-lang-Datei

moko-resource

Mobile-Kotlin-Ressource

nextcloud-json

JSON-Datei Nextcloud

odf

OpenDocument-Datei

php

PHP-Zeichenketten

plainxliff

XLIFF-1.2-Übersetzungsdatei

po

gettext PO-Datei

po-mono

gettext PO-Datei (einsprachig)

poxliff

XLIFF 1.2 mit gettext-Erweiterungen

properties

Java Properties

rc

RC-Datei

resjson

RESJSON-Datei

resourcedictionary

Ressourcen-Wörterbuch-Datei

resx

.NET-Ressourcendatei

ruby-yaml

Ruby-YAML-Datei

srt

SubRip-Untertiteldatei

ssa

SubStation-Alpha-Untertiteldatei

strings

iOS-Zeichenketten

stringsdict

Stringsdict-Datei

sub

MicroDVD-Untertiteldatei

tbx

TermBase-eXchange-Datei

toml

TOML-Datei

ts

Qt-Linguist-Übersetzungsdatei

txt

Klartextdatei

webextension

JSON-Datei WebExtension

wxl

WixLocalization-Datei

xliff

XLIFF 1.2 mit Platzhalterunterstützung

xliff2

XLIFF-2.0-Übersetzungsdatei

xliff2-placeables

XLIFF-2.0-Übersetzungsdatei mit Platzhalterunterstützung

xlsx

Excel Open XML

xwiki-fullpage

Ganze XWiki-Seite

xwiki-java-properties

XWiki-Java-Properties

xwiki-page-properties

XWiki-Seiteneigenschaften

yaml

YAML-Datei

Änderungsereignisse

The following change actions can appear in notification payloads. Fedora Messaging uses the identifier column in message topics, while webhook payloads use the name column in the action field.

Verfügbare Auswahlmöglichkeiten:

ID

Identifier

Bezeichnung

0

resource_updated

Ressource aktualisiert

1

translation_completed

Übersetzung vollständig

2

translation_changed

Übersetzung geändert

3

comment_added

Kommentar hinzugefügt

4

suggestion_added

Neuer Vorschlag

5

translation_added

Übersetzung hinzugefügt

6

automatically_translated

Automatisch übersetzt

7

suggestion_accepted

Vorschlag angenommen

8

translation_reverted

Übersetzung zurückgesetzt

9

translation_uploaded

Übersetzung hochgeladen

13

source_string_added

Ausgangszeichenkette hinzugefügt

14

component_locked

Komponente gesperrt

15

component_unlocked

Komponente entsperrt

17

changes_committed

Änderungen committet

18

changes_pushed

Änderungen gepusht

19

repository_reset

Repository zurückgesetzt

20

repository_merged

Repository zusammengeführt

21

repository_rebased

Repository umbasiert

22

repository_merge_failed

Repository-Merge fehlgeschlagen

23

repository_rebase_failed

Repository-Umbasierung fehlgeschlagen

24

parsing_failed

Analyse fehlgeschlagen

25

translation_removed

Übersetzung entfernt

26

suggestion_removed

Vorschlag entfernt

27

translation_replaced

Übersetzung ersetzt

28

repository_push_failed

Repository-Push fehlgeschlagen

29

suggestion_removed_during_cleanup

Vorschlag wurde während des Bereinigungsvorgangs entfernt

30

source_string_changed

Ausgangszeichenkette geändert

31

string_added

Zeichenkette hinzugefügt

32

bulk_status_changed

Große Statusänderung

33

visibility_changed

Sichtbarkeit geändert

34

user_added

Benutzer hinzugefügt

35

user_removed

Benutzer entfernt

36

translation_approved

Übersetzung genehmigt

37

marked_for_edit

Zur Bearbeitung markiert

38

component_removed

Komponente entfernt

39

project_removed

Projekt entfernt

41

project_renamed

Projekt umbenannt

42

component_renamed

Komponente umbenannt

43

moved_component

Komponente verschoben

45

contributor_joined

Mitwirkender beigetreten

46

announcement_posted

Mitteilung veröffentlicht

47

alert_triggered

Warnung ausgelöst

48

language_added

Sprache hinzugefügt

49

language_requested

Sprache gewünscht

50

project_created

Projekt erstellt

51

component_created

Komponente erstellt

52

user_invited

Benutzer eingeladen

53

repository_notification_received

Repository-Benachrichtigung erhalten

54

translation_replaced_file_by_upload

Datei durch hochgeladene Übersetzung ersetzt

55

license_changed

Lizenz geändert

56

contributor_license_agreement_changed

Mitwirkungsvereinbarung geändert

57

screenshot_added

Bildschirmfoto hinzugefügt

58

screenshot_uploaded

Bildschirmfoto hochgeladen

59

string_updated_in_the_repository

Zeichenkette im Repository aktualisiert

60

add-on_installed

Erweiterung installiert

61

add-on_configuration_changed

Konfiguration der Erweiterung geändert

62

add-on_uninstalled

Erweiterung deinstalliert

63

string_removed

Zeichenkette entfernt

64

comment_removed

Kommentar entfernt

65

comment_resolved

Kommentar geklärt

66

explanation_updated

Erklärung aktualisiert

67

category_removed

Kategorie entfernt

68

category_renamed

Kategorie umbenannt

69

category_moved

Kategorie verschoben

70

saving_string_failed

Speichern der Zeichenkette fehlgeschlagen

71

string_added_in_the_repository

Zeichenkette im Repository hinzugefügt

72

string_updated_in_the_upload

Zeichenkette beim Hochladen aktualisiert

73

string_added_in_the_upload

Zeichenkette beim Hochladen hinzugefügt

74

translation_updated_by_source_upload

Übersetzung durch hochgeladene Quelle aktualisiert

75

component_translation_completed

Komponentenübersetzung abgeschlossen

76

applied_enforced_check

Erzwungene Qualitätsprüfungen angewandt

77

propagated_change

Weitergegebene Änderung

78

file_uploaded

Datei hochgeladen

79

extra_flags_updated

Zusätzliche Markierungen aktualisiert

80

font_uploaded

Schriftart hochgeladen

81

font_changed

Schriftart geändert

82

font_removed

Schriftart entfernt

83

forced_synchronization_of_translations

Erzwungene Synchronisierung von Übersetzungen

84

forced_rescan_of_translations

Erzwungenes erneutes Scannen von Übersetzungen

85

screenshot_removed

Bildschirmfoto entfernt

86

label_added

Label hinzugefügt

87

label_removed

Label entfernt

88

repository_cleanup

Repositorybereinigung

89

source_string_added_in_the_upload

Ausgangszeichenkette beim Hochladen hinzugefügt

90

source_string_added_in_the_repository

Ausgangszeichenkette im Repository hinzugefügt

91

project_backed_up

Projekt gesichert

92

project_restored

Projekt wiederhergestellt

93

component_restored

Komponente wiederhergestellt

94

user_edit_reverted

Benutzerbearbeitung rückgängig gemacht

95

project_setting_changed

Projekteinstellung geändert

96

component_setting_changed

Komponenteneinstellung geändert

97

user_access_changed

Benutzerzugriff geändert

98

workspace_created

Arbeitsbereich erstellt

99

workspace_setting_changed

Arbeitsbereicheinstellung geändert

100

project_moved

Projekt verschoben

Liste der Erweiterungen anpassen

Die Liste der Erweiterungen wird durch WEBLATE_ADDONS konfiguriert. Um ein weitere Erweiterung hinzuzufügen, geben Sie einfach den absoluten Klassennamen in dieser Einstellung an.

Eine Erweiterung schreiben

Sie können auch Ihre eigenen Erweiterungen schreiben, eine Unterklasse von weblate.addons.base.BaseAddon erstellen, um die Metadaten der Erweiterung zu definieren, und dann einen Callback implementieren, um die Verarbeitung durchzuführen.

Skripte mit Erweiterung ausführen

Erweiterungen können auch verwendet werden, um externe Skripte auszuführen. Früher war dies in Weblate integriert, aber jetzt müssen Sie etwas Code schreiben, um Ihr Skript mit einer Erweiterung zu umschließen.

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""Example pre commit script."""

from __future__ import annotations

from typing import ClassVar

from django.utils.translation import gettext_lazy

from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events: ClassVar[set[AddonEvent]] = {
        AddonEvent.EVENT_PRE_COMMIT,
    }
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long description
    verbose = gettext_lazy("Execute script before commit")
    description = gettext_lazy("This add-on executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

Für Installationsanweisungen siehe Benutzerdefinierte Qualitätsprüfungen, Erweiterungen, automatische Vorschläge und automatische Korrekturen.

Das Skript wird ausgeführt, wobei das aktuelle Verzeichnis auf das Stammverzeichnis des VCS-Repositorys für eine beliebige Komponente gesetzt wird.

Zusätzlich sind die folgenden Umgebungsvariablen verfügbar:

WL_VCS

Versionsverwaltung verwendet.

WL_REPO

URL des Upstream-Repositorys.

WL_PATH

Absoluter Pfad zum VCS-Repository.

WL_BRANCH

In der aktuellen Komponente konfigurierter Repository-Branch.

WL_FILEMASK

Dateimaske für die aktuelle Komponente.

WL_TEMPLATE

Dateiname der Vorlage für einsprachige Übersetzungen (kann leer sein).

WL_NEW_BASE

Dateiname der Datei, die für die Erstellung neuer Übersetzungen verwendet wird (kann leer sein).

WL_FILE_FORMAT

In der aktuellen Komponente verwendetes Dateiformat.

WL_LANGUAGE

Sprache der aktuell bearbeiteten Übersetzung (nicht verfügbar für Hooks auf Komponentenebene).

WL_PREVIOUS_HEAD

Vorheriger HEAD nach der Aktualisierung (nur verfügbar nach Ausführung des Post-Update-Hooks).

WL_COMPONENT_SLUG

Komponenten-Slug, der zum Aufbau der URL verwendet wird.

WL_PROJECT_SLUG

Projekt-Slug, der zum Aufbau der URL verwendet wird.

WL_COMPONENT_NAME

Name der Komponente.

WL_PROJECT_NAME

Projektname.

WL_COMPONENT_URL

URL der Komponente.

WL_ENGAGE_URL

URL des beteiligten Projekts.

Repository-Verarbeitung nach Aktualisierung

Kann verwendet werden, um Übersetzungsdateien zu aktualisieren, wenn sich der Upstream-Quellcode des VCS ändert. Um dies zu erreichen, denken Sie bitte daran, dass Weblate nur Dateien sieht, die an das VCS committet wurden, sodass Sie die Änderungen als Teil des Skripts committen müssen.

Zum Beispiel mit Gulp können Sie es mit folgendem Code machen:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

Übersetzungen vor dem Commit verarbeiten

Verwenden Sie das Commit-Skript, um eine Übersetzung automatisch zu ändern, bevor sie in das Repository committet wird.

Sie wird als einzelner Parameter übergeben, der aus dem Dateinamen der aktuellen Übersetzung besteht.

Aktivitätsprotokollierung für Erweiterungen

Das Aktivitätsprotokoll der Erweiterungen verfolgt das Ausführen der Erweiterungen und kann verwendet werden, um die Aktivitäten der Erweiterungen nachzuvollziehen.

Die Protokolle können nach einem bestimmten Zeitintervall gelöscht werden, indem ADDON_ACTIVITY_LOG_EXPIRY konfiguriert wird.