Erweiterungen

Erweiterungen bieten die Möglichkeit, den Ablauf der Übersetzung anzupassen und zu automatisieren. Administratoren können Erweiterungen über das Menü Operationen ↓ Erweiterungen 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 das manuelle Auslösen aktiviert ist, können über die Erweiterungsverwaltung oder mithilfe der API ausgeführt werden. Die Ergebnisse werden im Aktivitätsprotokoll der Erweiterung aufgezeichnet.

Erweiterungen, die eine Komponenten-API bereitstellen, zeigen deren Basis-URL auf dem API-Reiter der Erweiterung an, zusammen mit einem Link zum API-Root.

Add-ons can show Integration instructions above their settings. These explain how to connect your application or service to the add-on. Add-ons without configurable settings, such as Übersetzungsdateien-CDN, show instructions without a settings form. Generated URLs and integration snippets are available after installation.

Erweiterungen sind dauerhafte Verwaltungskonfigurationen. Sie werden mit ihrer eigenen Dienstkennung in dem Bereich ausgeführt, in dem sie installiert sind, anstatt wiederholt die Berechtigungen des Administrators zu nutzen, der sie konfiguriert hat. Dadurch wird sichergestellt, dass Administratoren mit gleichen Berechtigungen dieselbe Konfiguration sehen und speichern und dass das Speichern einer nicht damit zusammenhängenden Änderung den Eingabebereich der Erweiterung nicht unbemerkt verändert. Das Entfernen oder Deaktivieren des konfigurierenden Administrators führt nicht zur Deaktivierung der Erweiterung.

Projekt- und Kategorie-Erweiterungen umfassen daher kompatible, eingeschränkte Komponenten in diesem Geltungsbereich. Eine Komponenten-Erweiterung kann Eingaben außerhalb ihrer Zielkomponente verwenden, sofern dies durch die Erweiterung dokumentiert ist. Die automatische Übersetzung ermittelt die Ausgangskomponenten wie folgt:

  • Direkte automatische Übersetzungsaktionen nutzen den Komponentenzugriff des ausführenden Benutzers.

  • Eine gespeicherte Erweiterung für die automatische Übersetzung nutzt ihren dauerhaften Verwaltungsbereich. Kompatible Komponenten im Zielprojekt kommen dafür in Frage, einschließlich eingeschränkter Komponenten.

  • Komponenten aus einem anderen Projekt sind zulässig, wenn dieses Projekt zum gemeinsamen Übersetzungsspeicher beiträgt. Dies gilt auch für eingeschränkte Komponenten, obwohl diese keine Einträge im gemeinsamen Übersetzungsspeicher erstellen; die Erweiterung interpretiert die explizit ausgewählte Komponente stattdessen als administrative Eingabe.

Eingeschränkte Komponenten werden weiterhin aus den normalen Auflistungen herausgefiltert und sind für Benutzer ohne ausdrückliche Berechtigung oder Projekteinstellungen bearbeiten-Berechtigung nicht direkt zugänglich. Erteilen Sie Verwaltungsberechtigungen für Erweiterungen nur Benutzern, denen der gesamte Eingabe- und Wirkungsbereich der Erweiterung anvertraut ist. Siehe Umfang der Teams und Eingeschränkter Zugriff.

../_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 abgerufen 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

KI-Qualitätsevaluierung

Erweiterungs-ID:

weblate.ai.quality

Konfiguration:

service

Evaluierungsdienst

Verfügbare Auswahlmöglichkeiten:

anthropic

Anthropic

openai

OpenAI

mistral

Mistral

ollama

Ollama

azure-openai

Azure OpenAI

q

Abfrage

interval

Evaluierungshäufigkeit

Verfügbare Auswahlmöglichkeiten:

disabled

Deaktiviert

daily

Täglich

weekly

Wöchentlich

monthly

Monatlich

on_change

Übersetzungsänderungen auswerten

on_update

Repository-Aktualisierungen auswerten

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich, Ereignisänderung, Manueller Trigger

Wertet vorhandene Übersetzungen mithilfe eines LLM aus und protokolliert Qualitätsprüfungen.

This add-on evaluates existing translations using an LLM service configured under Automatische Vorschläge. It does not generate suggestions or change translations. Choose an Evaluation service from the configured LLM services; credentials and project overrides are reused.

The Query selects strings using the normal search syntax. By default, translated strings are selected. Source strings, read-only strings, and glossary entries are excluded. Each request includes all translation plural forms, source text, language information, string context, glossary terms, placeholders, and configured translation instructions. This data is sent to the selected provider.

Requests group strings from the same translation in file order, using the service’s automatic translation batch size (currently 20 strings for built-in LLM services). All plural forms of a string stay together. Related strings share context, allowing the evaluator to check meaning and terminology across the batch. Batching reduces the number of provider requests for scheduled, manual, and change-triggered runs; it does not skip unchanged strings.

Evaluation frequency defaults to weekly. Daily and monthly schedules are also available; disabled turns off scheduled evaluation. Background processing must be enabled. A successful full run starts the next interval. Manual runs bypass the interval. Enable Evaluate translation changes or Evaluate repository updates to additionally evaluate after those events. Installation does not immediately contact the provider. Each run can incur provider costs, including reevaluation of unchanged translations.

Evaluation runs in background tasks, with results and failure counts recorded in the existing add-on activity log. Failed requests retain existing valid findings and are tried again only by a subsequent run. Evaluation shares the service’s automatic translation cooldown: rate-limit responses activate it, and batches are skipped while it is active. More specific installations take precedence: component, nearest category, project, then site-wide.

Findings appear as standard checks for accuracy, fluency, terminology, style, and formatting. Each finding includes a minor, major, or critical severity and an explanation. Multiple findings in one category share a check, so ignoring that check ignores the whole category for the string. Existing search filters and API search work, for example check:ai_accuracy. Translation flags such as ignore-ai-accuracy disable a category; ignore-all-checks disables all checks.

Changing the source or translation removes outdated findings. Results received after any source or translation in their batch changes are discarded for the whole batch. A failed or malformed response also leaves existing findings for the whole batch unchanged; other batches can still complete. Incomplete runs do not advance the scheduled evaluation date. Reevaluation of unchanged content preserves ignored categories, and a successful evaluation removes categories that no longer have findings. Removing or reconfiguring the add-on clears its findings. Evaluator metadata is internal and cannot be edited through the API; the add-on configuration uses the existing Erweiterungen permissions and validation.

Automatisierung

Added in version 2026.10.

Erweiterungs-ID:

weblate.automation.automation

Konfiguration:

workflow

Arbeitsablauf

Geben Sie eine Automatisierungsdefinition als YAML oder JSON ein.

Trigger:

Komponentenaktualisierung, Täglich, Ereignisänderung, Manueller Trigger, Repository post-commit, Repository post-push, Repository post-update

Führt angeordnete Übersetzungsvorgänge mit Bedingungen und Branches aus.

Install this add-on on a component, category, project, or site. Inherited instances run separately for each component. Multiple instances can be installed. Configuring, previewing, and running an automation requires the usual add-on management permission. Saving its configuration does not execute it.

Enter YAML or JSON in Workflow. Use Preview without changes to validate it and inspect planned actions, then Run now for real execution. Results appear in the add-on activity log.

Siehe auch

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“

approved

Als genehmigte Übersetzung hinzufügen

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

Enter a source component ID. With 30 or more eligible source components, a project/component path is also accepted. In that case, component and project operations also accept a component slug from the target project. Leave blank to use eligible components from each target component’s project.

engines

Übersetzungsdienste

Übersetzungsdienste

threshold

Schwellenwert

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Täglich, Ereignisänderung

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

To control translation order, use the Automatisierung add-on with a separate action for each pass. Follow the Übersetzungsspeicher vor der maschinellen Übersetzung anwenden cookbook example to apply local translation memory first and send only the remaining strings to a machine translation service. Selecting multiple engines here uses Vorrang der Dienste für maschinelle Übersetzungen und Übersetzungsspeicher; installation order of separate add-ons does not define an execution sequence.

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.

Generates a unique URL for your component you can include in HTML pages to localize them. See HTML und JavaScript mit Weblate CDN übersetzen for more details. Available languages and translation files are listed in the CDN manifest.

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. Available languages and translation files are listed in the CDN manifest.

Kotlin-SDK-CDN

Added in version 2026.10.

Erweiterungs-ID:

weblate.cdn.kotlin

Konfiguration:

maximum_age

Maximales Build-Alter (Tage)

Builds werden nach so vielen Tagen seit ihrer ersten Registrierung gelöscht. Eine erneute Registrierung eines Builds verlängert dessen Nutzungsdauer nicht.

maximum_versions

Maximale Anzahl aufbewahrter Versionen

Begrenzt die Anzahl der aufbewahrten Builds über alle Paketnamen hinweg. Ein Build wird gelöscht, sobald entweder diese Obergrenze oder das maximale Alter erreicht ist.

Trigger:

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

Veröffentlicht Android-Zeichenketten- und Plural-Ressourcen für registrierte Kotlin-SDK-Builds.

Warnung

The Kotlin SDK is available as an alpha release. No compatibility is guaranteed until the final Kotlin SDK is released. Endpoints, build metadata, CDN manifests, and generated resource formats may change without backward compatibility.

Install Kotlin SDK CDN on an Android string-resource component to publish translations for builds registered by the Kotlin SDK. Configure LOCALIZE_CDN_URL and LOCALIZE_CDN_PATH first. CDN output is public, including translations from private components. Manifests expose the application package name and version code. ARSC files expose published resource names and their submitted IDs alongside translated text. Do not treat the uploaded resource mapping as confidential; enable publication only when this disclosure is intended. Registration and status API access remains permission-controlled.

Installation offers to install Übersetzungsdateien-CDN by default so the SDK can also consume the original Android XML files. Existing Translation files CDN installations are reused. For existing Kotlin SDK installations, use Install Translation files CDN on the configuration page, then return to copy the updated Gradle configuration. Original files are also published publicly, including those from private components.

Copy the Gradle plugin configuration from the add-on configuration page. It includes the Weblate server URL, separate translationFiles and kotlinSdk public CDN URLs, project slug, and component path (with any category path URL-encoded). Replace the placeholder with a project-scoped API token whose permissions allow editing the component. Project administrators can create one in the project’s API access tab; see Zugangstoken pro Projekt. Keep that token in the build environment, not in the application. The add-on’s API tab shows the API base URL; submit build metadata to its builds/ endpoint. See Kotlin-SDK-Builds for the request and response format.

For Gradle plugin and library setup, see Kotlin-SDK für Android.

The add-on matches resource names and types from registered builds to current component translations. Strings, plurals, and Android styled text are supported. String arrays and resource references are not generated. Untranslated entries, read-only entries, and incomplete plural resources are omitted; applications retain their bundled values. Unsupported styling fails publication; the previous successful publication remains available.

Resource IDs must describe the final installed build. Uploading an identical mapping again is harmless; a different mapping for the same package and version is rejected. Old builds receive current translations by name, including after source text or formatting arguments change. Maintainers are responsible for compatibility with older application code.

Lebenszykluseinstellungen

  • Maximum build age (days) defaults to 365 and accepts 1 through 730, measured from the first registration. Repeated uploads do not extend it.

  • Maximum retained versions defaults to 20 and accepts 1 through 100, counted across all package names. One additional unpublished replacement is allowed. New registrations can retire older unpublished replacements. Published builds are retired for this limit only after a replacement is published. Failed replacements preserve existing publications; maximum-age expiry still applies independently.

Either limit retires a build and immediately clears its metadata. Lightweight retired records are deleted on cleanup after 24 hours and successful manifest removal; their package/version identifiers can then be registered again. Failed or interrupted manifest removals are retried hourly. Until removal succeeds, the registration and its referenced artifacts are retained, and the files may remain publicly accessible. Resource mappings are immutable only while their registration records remain.

Each add-on permits at most 1000 registration records, including retired records. New registrations exceeding this limit return HTTP 409 until cleanup frees capacity; identical retries remain accepted. Metadata is bounded by the 5 MiB upload limit and maximum retained version count plus one replacement, without a separate byte quota. Limits are enforced during registration and scheduled cleanup.

Superseded artifacts are deleted on cleanup after a fixed 24-hour window. All artifact files, including superseded files and incomplete publication output, count towards hard limits of 5 GiB and 10000 files per add-on. The larger artifact allowance accommodates translated text and multiple locales; it does not guarantee capacity for every locale or build combination. Shared artifacts count only once. Publications exceeding either limit fail before writing new artifacts and preserve the previous manifest. Neither the window nor these limits are configurable. Limit manifest caching as described below.

Compilation stages one locale at a time on disk. A per-locale conservative encoded text and styling estimate exceeding 64 MiB fails publication.

Preparation additionally requires up to 5 GiB of temporary disk space per publication job, separate from the published artifact allowance. Temporary files contain staged ARSC output, shared by versions with identical resource mappings. They are stored below LOCALIZE_CDN_PATH. Configure the server to deny access to .kotlin-sdk-staging as described in Lokalisierungs-CDN before enabling this add-on.

Manifest replacement follows the database commit. Failed or interrupted writes are retried by subsequent publication jobs, with artifacts for both the old and pending manifest protected until replacement succeeds.

Uninstalling the add-on attempts to remove its published files from the CDN origin immediately. Failed or interrupted removals are retried hourly; files may remain publicly accessible until cleanup succeeds. Removal does not revoke copies already cached or downloaded by clients.

Publication and cleanup run asynchronously after build registration, component updates, translation commits and removals, and during daily add-on processing. Failures appear in the add-on activity log and registration status. Previous successful publications remain available when replacement generation fails. If the component stops using the Android resource format, hourly maintenance retires its publications. The normal artifact retention window still applies.

CDN-Clientauftrag

Each build has a stable manifest at <CDN base>/<packageName>/<versionCode>/manifest.json. The version 1 manifest contains schemaVersion, packageName, versionCode, and locales. Locale keys are Weblate language codes. Each locale contains a relative url, sha256, and byte size for its ARSC artifact. Resolve relative URLs against the manifest URL. Artifact contents do not change after publication. The manifest has a JSON Schema.

Configure the CDN origin to cache manifests for at most one hour (for example, Cache-Control: public, max-age=3600), and artifact files with Cache-Control: public, max-age=31536000, immutable. Artifact files may use application/octet-stream. Configure these headers on the CDN server. Translation updates and retirements can take up to one hour to reach clients. Use Cache-Control: no-cache when immediate revalidation is preferred. The fixed 24-hour artifact retention window exceeds the manifest cache lifetime.

The Kotlin SDK should validate artifact length and hash, cache successful downloads locally, and load them with Android’s resources-loader API on API 30 or newer. A missing manifest, missing locale, or download failure must preserve bundled resources. Retired manifests return 404 at the origin; cached copies can remain usable until they expire. Hashes detect corrupted or mismatched content; authentication relies on HTTPS and the configured CDN.

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.

For a one-time cleanup of a single translation file, use Cleanup unused in Repository-Wartung on that translation instead of installing the add-on.

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:

Dateiabgleich

match

Regulärer Ausdruck zum Abgleich von Übersetzungsdateien

Der reguläre Ausdruck muss einen Gruppennamen für die Komponente definieren. Definieren Sie außerdem einen Gruppennamen für die Sprache, wenn Übersetzungsdateien abgeglichen werden. Wenn die Dateimaske festgelegt ist, lassen Sie die Sprache weg und gleichen Sie stattdessen die einsprachige Basisdatei oder die neue Basisdatei ab.

file_format

Dateiformat

Dateiformat

language_regex

Sprachfilter

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

Komponentenbenennung und Dateivorlagen

name_template

Den Komponentennamen anpassen

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.

filemask_template

Die Dateimaske definieren

Lassen Sie das Feld leer, um Übersetzungsdateien direkt abzugleichen. Wenn dieses Feld gesetzt ist, gleicht die Erkennung die einsprachige Basisdatei oder neue Basisdatei ab und verwendet diese Vorlage als Dateimaske. Fügen Sie einen Sprach-Platzhalter und {{ component }} ein, zum Beispiel locale//{{ component }}.po oder docs/{{ component }}_.md.

Komponentenlebenszyklus

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.

The matching is done using regular expressions enabling complex configuration, but some knowledge is required to do so. Usually the regular expression to match translation files has to contain two named groups to match component and language. When creating components from a monolingual base or new base file, omit the language group and match that source file instead. All named groups in the regular expression can be used as variables in the template fields.

Erkennungsanforderungen

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

  • The regular expression must define a component named group. Matching translation files also requires a language named group.

  • 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, unless you set the file mask (see below).

Discovering components without translation files

Set Define the file mask to discover components from a monolingual base or new base file alone, even when no translation files exist yet. In that mode:

  • Configure Regular expression to match translation files against to match the monolingual base or new base file, and omit the language group. Keep full control over the component capture, for example locale/(?P<component>[^/]+)\.pot or docs/(?P<component>[^/_]+)\.md.

  • Fill Define the file mask with a path that includes both a language wildcard and {{ component }}, for example locale/*/{{ component }}.po or docs/{{ component }}_*.md.

  • Keep using the other filename templates with any named groups from the match expression.

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 Operationen ↓ Einstellungen ↓ Versionsverwaltung) 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:

Brokerverbindung

amqp_url

AMQP-Broker-URL

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

topic_prefix

Themenpräfix

Optionales Präfix, das den generierten Nachrichtenthemen vorangestellt wird.

Zeitüberschreitungen und Wiederholungsversuche

publish_timeout

Zeitüberschreitung für die Veröffentlichung

Wie viele Sekunden auf die Zustellbestätigung des Brokers gewartet werden soll.

connection_attempts

Verbindungsversuche

Wie oft ein Verbindungsaufbau zum Broker versucht werden soll.

retry_delay

Wiederholungsverzögerung

Wie viele Sekunden zwischen den Verbindungsversuchen gewartet werden soll.

TLS-Zugangsdaten

ca_cert

CA-Zertifikatsbündel (PEM)

Fügen Sie nur PEM-Zertifikatsblöcke ein, die jeweils mit „—–BEGIN CERTIFICATE—–“ beginnen und mit „—–END CERTIFICATE—–“ enden.

client_key

Privater Client-Schlüssel (PEM)

Fügen Sie einen einzelnen, unverschlüsselten PEM-Block für einen privaten Schlüssel ein. Verschlüsselte private Schlüssel werden nicht unterstützt.

client_cert

Client-Zertifikat (PEM)

Fügen Sie nur den PEM-Zertifikatsblock ein, der mit „—–BEGIN CERTIFICATE—–“ beginnt; fügen Sie nicht die Ausgabe von „openssl x509 -text“ ein.

Ereignisauswahl

event_filter

Auszulösende Änderungsereignisse

Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse

events

Ausgewählte Änderungsereignisse

Ausgewählte Änderungsereignisse

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.

Configure the broker with a plain amqp:// or amqps:// URL, including its virtual host. URL query strings and fragments are not supported. Use the add-on’s connection attempts, retry delay, and publish timeout fields instead. The publish timeout covers connection attempts, retry delays, and broker confirmation. Synchronous DNS resolution, including lookups during broker URL validation, cannot be interrupted by this timeout and can exceed it when the system resolver is slow or unavailable. Rejected messages are not retried.

Weblate reuses a publisher connection in each worker process, with AMQP heartbeats disabled. Failed connections are discarded and recreated on the next attempt. A lost broker confirmation can cause duplicate delivery; consumers can identify retries by their unchanged message ID.

Nachrichtenthema

All messages have topic weblate.<action>.<project>.<category...>.<component>.<translation>. When configured, topic_prefix is prepended to this topic using a single dot separator, for example org.fedoraproject.weblate.project_backed_up.website. The action is lowercase textual representation of action with underscores instead of space, for example resource_updated; see Ausgewählte Ä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

search_type

Suchmethode

Verfügbare Auswahlmöglichkeiten:

text

Text

regex

Regulärer Ausdruck

search

Suchzeichenfolge

Case-sensitiver Text oder regulärer Ausdruck, der in übereinstimmenden Zeichenfolgen ersetzt werden soll. Lassen Sie das Feld leer, um die Ersetzung zu deaktivieren.

replacement

Ersetzungszeichenfolge

Lassen Sie das Feld leer, um den übereinstimmenden Text zu entfernen. Verwenden Sie im Modus für reguläre Ausdrücke 1 für die erste erfasste Gruppe. Referenzen auf benannte Gruppen werden ebenfalls unterstützt.

state

Zu setzender Status

Verfügbare Auswahlmöglichkeiten:

-1

Nicht ändern

0

Leer

10

Bearbeitungsbedürftig

11

Bearbeitungsbedürftig (Muss umgeschrieben werden)

12

Bearbeitungsbedürftig (Muss überprüft werden)

20

Übersetzt

30

Genehmigt

Quellmarkierungen

Markierungen werden entsprechend den Filterergebnissen für die Ausgangszeichenketten gesetzt und gelten für deren Übersetzungen in allen Sprachen.

add_flags

Markierungen hinzufügen

remove_flags

Markierungen entfernen

Übersetzungsmarkierungen

Markierungen gelten nur für Übersetzungen, die dem Filter entsprechen. Ausgangszeichenketten sind davon ausgenommen.

add_translation_flags

Markierungen hinzufügen

remove_translation_flags

Markierungen entfernen

Es werden nur die Markierungen entfernt, die direkt in diesen Übersetzungen gesetzt wurden. Vererbte Markierungen bleiben weiterhin gültig.

Labels

Labels gelten für die Ausgangszeichenketten, die den Filterergebnissen entsprechen, und werden sprachübergreifend verwendet.

add_labels

Labels hinzufügen

remove_labels

Labels entfernen

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung

Massenbearbeitung von Text, Markierungen, Labels oder den Zeichenkettenstatus.

Uses the operations described in Massenbearbeitung, including literal or regular expression replacement and clearing translations. Runs process all eligible matching strings without interactive preview. See Massenbearbeitung for replacement syntax and string state values.

Beispiele:

Neue Zeichenketten automatisch beschriften

Suchanfrage

NOT has:label

Labels: Labels hinzufügen

recent

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

Suchanfrage

language:en AND key:changelogs/

Übersetzungsmarkierungen: Markierungen hinzufügen

read-only

Markieren bestimmter Zeichenketten als schreibgeschützt

Suchanfrage

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

Übersetzungsmarkierungen: Markierungen 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:

scope

Ausgabebereich

Verfügbare Auswahlmöglichkeiten:

translation

Eine Datei pro Übersetzung

component

Eine Datei pro Komponente

filename

Name der erzeugten Datei

template

Inhalt der erzeugten Datei

Trigger:

Erweiterungsinstallation, Komponentenaktualisierung, Repository post-add, Repository post-remove, 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 }}",
}

Component-wide output

Set Output scope to One file per component to maintain one locale list or statistics file for the entire component. The default, One file per translation, preserves existing configurations.

Component output is generated on installation and configuration changes. It is updated when translations are committed, languages are added or removed, and component files are reloaded. Language metadata changes are included on the next such update or when the add-on is reconfigured. Unchanged output does not create a new commit.

Both modes support component and project variables in filenames and content. In component mode, the content additionally receives translations, ordered by repository language code. Each item provides:

  • language_code: the language code used in the repository.

  • language_name: the English language name.

  • language_native_name: the name translated into its own language using Weblate’s catalogs, with an English fallback when unavailable.

  • language_direction: ltr oder rtl.

  • filename and url: the translation filename and Weblate URL.

  • is_source: whether this is the component’s source translation.

  • stats: the same statistics available in translation mode.

The source translation is included. Templates can exclude it using {% if not item.is_source %}. Statistics use Weblate’s completion semantics. Custom language names are retained; there is no external locale-data lookup.

For example, generate locales.json for a website:

[
{% for item in translations %}
  {
    "code": {{ item.language_code|json }},
    "file": {{ item.filename|json }},
    "name": {{ item.language_native_name|json }},
    "dir": {{ item.language_direction|json }}
  }{% if not forloop.last %},{% endif %}
{% endfor %}
]

Or generate languages.py for an application:

names = {
{% for item in translations %}
    {{ item.language_code|python }}: {{ item.language_native_name|python }},
{% endfor %}
}
completeness = {
{% for item in translations %}
    {{ item.language_code|python }}: {{ item.stats.translated_percent|python }},
{% endfor %}
}

The json and python filters serialize complete values, including string quotes and escaping. Do not add quotes around their output. They also support lists and dictionaries; {{ translations|json }} exports all available data. Dates and times are serialized as ISO-formatted strings.

Ü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:

Quelle und Ziel

source

Ausgangszeichenketten

include_readonly

Schreibgeschützte Zeichenketten einschließen

target

Zielübersetzung

Alle Zeichenketten in dieser Übersetzung werden überschrieben

Vorangestellter Text

prefix

Vorangestellter statischer Text

var_prefix

Vorangestellter variabler Text

Angehängter Text

suffix

Angehängter statischer Text

var_suffix

Angehängter variabler Text

Texterweiterung

var_multiplier

Variabler Textmultiplikator

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

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.

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 Dateiformatparameter.

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.

location_mode

Quellenorte

Legt fest, wie die Extraktion Quellenorte in die POT-Datei schreibt. Verwenden Sie diese Option, um Orte in der Vorlage beizubehalten, sie jedoch in den übersetzten PO-Dateien wegzulassen.

Verfügbare Auswahlmöglichkeiten:

file

Dateiformat-Einstellungen verwenden

keep

Orte in die POT-Datei extrahieren

omit

Orte nicht extrahieren

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-Anforderungen

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:

Aktualisierungsverhalten

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.

location_mode

Quellenorte

Legt fest, wie die Extraktion Quellenorte in die POT-Datei schreibt. Verwenden Sie diese Option, um Orte in der Vorlage beizubehalten, sie jedoch in den übersetzten PO-Dateien wegzulassen.

Verfügbare Auswahlmöglichkeiten:

file

Dateiformat-Einstellungen verwenden

keep

Orte in die POT-Datei extrahieren

omit

Orte nicht extrahieren

Meson-Voreinstellung

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

Kommentarextraktion

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.

Schlüsselwörter

keyword

Zusätzliche Schlüsselwörter

Zusätzliche Schlüsselwörter, die durch Zeilenumbrüche getrennt sind und mit –keyword an xgettext übergeben werden.

keyword_exclusive

Schlüsselwörter exklusiv verwenden

When enabled, passes --keyword without a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.

Qualitätsprüfungen und ITS-Daten

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

data_dirs

ITS-Datenverzeichnisse

Durch Zeilenumbrüche getrennte, zum Repository relative Verzeichnisse, die ein its-Unterverzeichnis enthalten, zum Beispiel po für po/its. Frühere Verzeichnisse überschreiben spätere Verzeichnisse und die darin enthaltenen Regeln.

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-Anforderungen

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 Dateiformatparameter 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.

location_mode

Quellenorte

Legt fest, wie die Extraktion Quellenorte in die POT-Datei schreibt. Verwenden Sie diese Option, um Orte in der Vorlage beizubehalten, sie jedoch in den übersetzten PO-Dateien wegzulassen.

Verfügbare Auswahlmöglichkeiten:

file

Dateiformat-Einstellungen verwenden

keep

Orte in die POT-Datei extrahieren

omit

Orte nicht extrahieren

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

Keine

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-Anforderungen

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:

Aktualisierungsverhalten

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.

location_mode

Quellenorte

Legt fest, wie die Extraktion Quellenorte in die POT-Datei schreibt. Verwenden Sie diese Option, um Orte in der Vorlage beizubehalten, sie jedoch in den übersetzten PO-Dateien wegzulassen.

Verfügbare Auswahlmöglichkeiten:

file

Dateiformat-Einstellungen verwenden

keep

Orte in die POT-Datei extrahieren

omit

Orte nicht extrahieren

Eingabedateien

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

Programmiersprache, die an xgettext übergeben wird, zum Beispiel Python oder C. Leer lassen, damit xgettext die Sprache anhand der Dateiendungen ermittelt.

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.

Kommentarextraktion

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.

Schlüsselwörter

keyword

Zusätzliche Schlüsselwörter

Zusätzliche Schlüsselwörter, die durch Zeilenumbrüche getrennt sind und mit –keyword an xgettext übergeben werden.

keyword_exclusive

Schlüsselwörter exklusiv verwenden

When enabled, passes --keyword without a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.

Qualitätsprüfungen und ITS-Daten

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

data_dirs

ITS-Datenverzeichnisse

Durch Zeilenumbrüche getrennte, zum Repository relative Verzeichnisse, die ein its-Unterverzeichnis enthalten, zum Beispiel po für po/its. Frühere Verzeichnisse überschreiben spätere Verzeichnisse und die darin enthaltenen Regeln.

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-Anforderungen

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.

Mixed source formats and ITS rules

Leave xgettext language blank to extract messages from different formats into the same POT. Include all inputs in the source patterns or POTFILES, for example:

common/messages.py
qt/application.desktop
qt/application.policy
data/application.metainfo.xml

Desktop entries use the native xgettext parser. Weblate bundles ITS rules for Polkit policies, AppStream/MetaInfo, GSettings, GTK Builder, and Shared MIME Info. These rules are included in the Weblate package, including Docker installations; no additional system packages are required for these formats. The POT-Datei aktualisieren (Meson) add-on uses the same rules.

Extraction follows upstream gettext and ITS behavior. In particular, desktop extraction includes keys such as Name, GenericName, and Comment; Polkit rules select description and message elements without filtering by gettext-domain. Use untranslated policy sources: upstream Polkit rules also select elements carrying xml:lang.

For custom XML formats or overrides, configure ITS data directories. Enter one repository-relative directory per line, in priority order. Each must contain an its/ subdirectory with .loc locating rules and .its extraction rules. For example, enter po for po/its/example.loc and po/its/example.its, or . for its/ at the repository root. In API add-on configuration, use a list: "data_dirs": ["po", "data"].

Earlier directories take precedence over later ones, followed by Weblate’s bundled rules and gettext’s system rules. The directories are passed through GETTEXTDATADIRS. Configure them explicitly even when using Meson; Weblate does not read data_dirs from meson.build or inherit an administrator’s GETTEXTDATADIRS environment variable.

Rule directories and files must stay inside the repository and must not be symbolic links. A locating rule’s target must name an existing .its file in the same directory. DTDs, entity declarations, and external rule references are not supported. Weblate validates project-local rules before extraction and reports invalid rules as add-on errors. Changes, additions, or deletions in the configured its/ directories trigger extraction even when source files have not changed.

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

author-language

Pro Autor und Sprache

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

  • Pro Autor und Sprache

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 Dateiformatparameter.

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

event_filter

Auszulösende Änderungsereignisse

Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse

events

Ausgewählte Änderungsereignisse

Ausgewählte Änderungsereignisse

Trigger:

Ereignisänderung

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

Warnung

Der Benachrichtigungsinhalt 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.

event_filter

Auszulösende Änderungsereignisse

Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse

events

Ausgewählte Änderungsereignisse

Ausgewählte Änderungsereignisse

Trigger:

Ereignisänderung

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

Die Nutzdaten der Anfrage entsprechen dem Schema Weblate Messaging. Das Feld action verwendet den in Ausgewählte Änderungsereignisse aufgeführten Aktionsnamen. Die OpenAPI-Beschreibung ist außerdem unter /api/docs/ zu finden. Beispielanfrage:

{
   "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.

Der „Automatische Übersetzung“-Modus Als genehmigte Übersetzung hinzufügen erstellt genehmigte Zeichenketten, wenn für die Zielsprachen Überprüfungen aktiviert sind. Wenn die Projekteinstellungen oder ein Sprachablauf die Überprüfungen außer Kraft setzen, werden stattdessen übersetzte Zeichenketten erstellt. Der konfigurierte Modus bleibt erhalten, auch bei projekt- und plattformweiten Erweiterungen, deren Zielsprachen unterschiedliche Überprüfungseinstellungen haben. Die Konfiguration dieses Modus erfordert die übliche Verwaltungsberechtigung für Erweiterungen; der konfigurierende Benutzer muss kein Prüfer sein.

Die Übersetzungsdateien-CDN- und JavaScript-Lokalisierungs-CDN-Erweiterungen veröffentlichen manifest.json unter ihrer CDN-Basis-URL. Clients können sie ohne API-Token herunterladen, um verfügbare Sprachen und Übersetzungsdateien zu ermitteln:

{
  "schemaVersion": 1,
  "locales": {
    "cs": [
      {
        "url": "cs.json",
        "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
        "size": 123
      }
    ]
  }
}

The locales keys are Weblate language codes. Each value lists the published files for that language, sorted by URL. The url is relative to the manifest URL, sha256 is the SHA-256 checksum of the published bytes, and size is the file size in bytes. Multi-file translations have several entries per language. The JavaScript add-on includes only languages meeting its translation threshold. Source-language inclusion follows each add-on’s existing publication rules. The JavaScript loader and the manifest itself are not listed. When no translation files are published, locales is an empty object. The root filename manifest.json is reserved for this manifest. Weblate validates each manifest against the CDN manifest before publishing it.

Übersetzungsdateien werden geschrieben, bevor das Manifest ersetzt wird, und veraltete Dateien werden danach entfernt. Datei-URLs bleiben veränderbar, und CDN-Caches können das Manifest und die Übersetzungsdateien zu unterschiedlichen Zeiten aktualisieren. Wenn ein Download fehlschlägt oder seine Prüfsumme nicht übereinstimmt, aktualisieren Sie das Manifest und versuchen Sie den Download erneut. Das Manifest bietet keinen unveränderlichen Snapshot und widerruft keine zwischengespeicherten Kopien entfernter Dateien. Bestehende Erweiterungsinstallationen veröffentlichen ein Manifest, bei ihrer nächsten erfolgreichen Veröffentlichung.

Die Kotlin-SDK-CDN-Erweiterung verwendet ein separates, build-spezifisches Manifestformat.

Die Komponentenerkennung-Erweiterung bricht mit einer Fehlermeldung ab, wenn der Repository-Scan 100.000 Pfade überschreitet oder die Suche nach passenden Übersetzungsdateien mehr als 1.000.000 Vergleiche zwischen Pfaden und Masken erfordern würde. Die Vergleichsgrenze wird anhand der Anzahl der Repository-Pfade multipliziert mit der Anzahl der Dateimasken überprüft. Diese festen Grenzwerte begrenzen den Ressourcenverbrauch, wenn der Repository-Inhalt die Masken bestimmt. Wird einer der beiden Grenzwerte überschritten, werden bei der Erkennung keine Komponenten erstellt oder entfernt.

When configuring the add-on, Weblate also suggests presets detected from the repository. Preset detection analyzes at most 4,096 distinct results with file masks no longer than 512 characters or 16 path segments. It samples groups of more than 128 compatible results and limits itself to 8,192 comparisons, 50 presets, and eight examples per preset. If a limit omits results or comparisons, Weblate warns that suggestions might be incomplete. You can enter the configuration manually.

Die Webhook- und Slack-Webhooks-Erweiterungen fordern unkomprimierte Antworten an und lehnen Antworten ab, deren Content-Encoding nicht mit identity übereinstimmt, bevor sie deren Inhalt lesen. Sie begrenzen den Inhalt jeder Antwort auf 1 MiB und die Antwort-Header auf 64 KiB, einschließlich doppelter Header und Trennzeichen. Wenn eine Antwort kodiert ist oder eine der beiden festgelegten Grenzen überschritten wird, schließt Weblate die Antwort und protokolliert einen Erweiterungsfehler, ohne den Antworttext oder die Header zu speichern. Der Remotedienst hat die Benachrichtigung möglicherweise bereits angenommen, selbst wenn Weblate diesen Fehler protokolliert.

Veraltete Erweiterungen

Mitwirkende im Kommentar

Removed in version 2026.10: Ersetzt durch Kommentare des Mitwirkenden.

Bestehende Installationen von weblate.gettext.authors werden für jede betroffene PO-Komponente auf den Wert gettext des Dateiformatparameters po_contributor_comments migriert. Dies umfasst Komponenten, die unter kategorie-, projekt- und plattformweite Installationen fallen. Neue Komponenten sind standardmäßig deaktiviert, es sei denn, ihre Dateiformatparameter werden von einer anderen Komponente kopiert.

Entfernen Sie weblate.addons.gettext.GettextAuthorComments aus den benutzerdefinierten Listen unter WEBLATE_ADDONS und die Einträge weblate.gettext.authors aus DEFAULT_ADDONS. Konfigurieren Sie stattdessen Kommentare des Mitwirkenden.

XML-Ausgabe anpassen

Added in version 4.15.

Removed in version 5.13: Ersetzt durch Dateiformatparameter.

YAML-Ausgabe anpassen

Removed in version 5.13: Ersetzt durch Dateiformatparameter.

Gemeinsame Parameter für Erweiterungen

Übersetzungsdienste

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

etranslation

eTranslation

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

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 (Version 2)

ts1

Qt-Linguist-Übersetzungsdatei (Version 1)

txt

Klartextdatei

webextension

JSON-Datei WebExtension

wxl

WixLocalization-Datei

xliff

XLIFF-1.2-Übersetzungsdatei

xliff2

XLIFF-2.0-Übersetzungsdatei

xlsx

Excel Open XML

xwiki-fullpage

Ganze XWiki-Seite

xwiki-java-properties

XWiki-Java-Properties

xwiki-page-properties

XWiki-Seiteneigenschaften

yaml

YAML-Datei

Auszulösende Änderungsereignisse

Verfügbare Auswahlmöglichkeiten:

content

Übersetzungsinhalt-Ereignisse

all

Alle Änderungsereignisse

custom

Ausgewählte Änderungsereignisse

Ausgewählte Ä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

Kennung

Bezeichnung

Beschreibung

0

resource_updated

Ressource aktualisiert

Eine Übersetzungsdatei wurde mit ihrem Repository synchronisiert.

1

translation_completed

Übersetzung vollständig

Eine Sprache zur Übersetzung wurde nach einer manuellen Bearbeitung vollständig übersetzt. Automatische Übersetzungen, Uploads und Massenbearbeitungen lösen dieses Ereignis nicht aus.

2

translation_changed

Übersetzung geändert

Eine vorhandene Übersetzung wurde von einem Benutzer bearbeitet.

3

comment_added

Kommentar hinzugefügt

Ein Kommentar wurde zu einer Zeichenkette hinzugefügt.

4

suggestion_added

Neuer Vorschlag

Ein Übersetzungsvorschlag wurde hinzugefügt.

5

translation_added

Übersetzung hinzugefügt

Eine bisher nicht übersetzte Zeichenkette wurde von einem Benutzer übersetzt.

6

automatically_translated

Automatisch übersetzt

Eine Übersetzung wurde durch eine automatische Übersetzung hinzugefügt oder geändert. Dies wird anstelle von „Übersetzung hinzugefügt“ oder „Übersetzung geändert“ ausgegeben.

7

suggestion_accepted

Vorschlag angenommen

Ein Übersetzungsvorschlag wurde als Übersetzung angenommen.

8

translation_reverted

Übersetzung zurückgesetzt

Eine Übersetzung wurde auf einen früheren Wert zurückgesetzt.

9

translation_uploaded

Übersetzung hochgeladen

Eine Übersetzung wurde durch das Hochladen einer Übersetzungsdatei hinzugefügt oder geändert. Dies wird anstelle von „Übersetzung hinzugefügt“ oder „Übersetzung geändert“ ausgegeben.

13

source_string_added

Ausgangszeichenkette hinzugefügt

Eine Ausgangszeichenkette wurde außerhalb von Repository-Aktualisierungen oder Uploads hinzugefügt.

14

component_locked

Komponente gesperrt

Eine Komponente wurde für die Übersetzung gesperrt.

15

component_unlocked

Komponente entsperrt

Eine Komponente wurde für die Übersetzung entsperrt.

17

changes_committed

Änderungen committet

Ausstehende Komponentenänderungen wurden committet.

18

changes_pushed

Änderungen gepusht

Repository-Änderungen wurden Upstream gepusht.

19

repository_reset

Repository zurückgesetzt

Ein Repository wurde auf den Upstream-Status zurückgesetzt.

20

repository_merged

Repository zusammengeführt

Änderungen im Upstream-Repository wurden zusammengeführt.

21

repository_rebased

Repository umbasiert

Repository-Änderungen wurden auf Upstream umbasiert.

22

repository_merge_failed

Repository-Merge fehlgeschlagen

Zusammenführen der Änderungen im Upstream-Repository ist fehlgeschlagen.

23

repository_rebase_failed

Repository-Umbasierung fehlgeschlagen

Umbasieren der Repository-Änderungen ist fehlgeschlagen.

24

parsing_failed

Analyse fehlgeschlagen

Weblate konnte eine Übersetzungsdatei nicht analysieren.

25

translation_removed

Übersetzung entfernt

Eine Sprache zur Übersetzung wurde entfernt.

26

suggestion_removed

Vorschlag entfernt

Ein Übersetzungsvorschlag wurde entfernt.

27

translation_replaced

Übersetzung ersetzt

Eine Übersetzung wurde durch eine Suchen-und-Ersetzen-Aktion geändert. Dies wird anstelle von „Übersetzung geändert“ ausgegeben.

28

repository_push_failed

Repository-Push fehlgeschlagen

Das Pushen der Repository-Änderungen an Upstream ist fehlgeschlagen.

29

suggestion_removed_during_cleanup

Vorschlag wurde während des Bereinigungsvorgangs entfernt

Ein veralteter Übersetzungsvorschlag wurde während des Bereinigungsvorgangs entfernt.

30

source_string_changed

Ausgangszeichenkette geändert

Eine Ausgangszeichenkette wurde in Weblate bearbeitet.

31

string_added

Zeichenkette hinzugefügt

Eine neue Zeichenkette wurde in Weblate hinzugefügt.

32

bulk_status_changed

Große Statusänderung

Der Übersetzungsstatus einer oder mehrerer Zeichenketten wurde per Massenbearbeitung geändert.

33

visibility_changed

Sichtbarkeit geändert

Projekt- oder Komponentensichtbarkeit wurde geändert.

34

user_added

Benutzer hinzugefügt

Einem Benutzer wurde Zugriff gewährt.

35

user_removed

Benutzer entfernt

Einem Benutzer wurde der Zugriff entzogen.

36

translation_approved

Übersetzung genehmigt

Eine Übersetzung wurde während der Überprüfung genehmigt.

37

marked_for_edit

Zur Bearbeitung markiert

Eine Übersetzung wurde als bearbeitungsbedürftig markiert.

38

component_removed

Komponente entfernt

Eine Übersetzungskomponente wurde entfernt.

39

project_removed

Projekt entfernt

Ein Übersetzungsprojekt wurde entfernt.

41

project_renamed

Projekt umbenannt

Ein Übersetzungsprojekt wurde umbenannt.

42

component_renamed

Komponente umbenannt

Eine Übersetzungskomponente wurde umbenannt.

43

moved_component

Komponente verschoben

Eine Komponente wurde innerhalb eines Projekts verschoben.

45

contributor_joined

Mitwirkender beigetreten

Ein Benutzer hat seinen ersten Beitrag zu einer Übersetzung geleistet.

46

announcement_posted

Mitteilung veröffentlicht

Eine Mitteilung wurde veröffentlicht.

47

alert_triggered

Warnung ausgelöst

Eine Komponentenwarnung wurde ausgelöst.

48

language_added

Sprache hinzugefügt

Eine Sprache zur Übersetzung wurde hinzugefügt.

49

language_requested

Sprache gewünscht

Ein Nutzer wünschte sich eine neue Sprache.

50

project_created

Projekt erstellt

Ein Übersetzungsprojekt wurde erstellt.

51

component_created

Komponente erstellt

Eine Übersetzungskomponente wurde erstellt.

52

user_invited

Benutzer eingeladen

Ein Benutzer wurde zu einem Projekt eingeladen.

53

repository_notification_received

Repository-Benachrichtigung erhalten

Weblate hat eine Repository-Benachrichtigung von einem Code-Host erhalten.

54

translation_replaced_file_by_upload

Datei durch hochgeladene Übersetzung ersetzt

Eine Übersetzungsdatei wurde durch eine hochgeladene Datei ersetzt.

55

license_changed

Lizenz geändert

Projekt- oder Komponenten-Lizenzinformationen haben sich geändert.

56

contributor_license_agreement_changed

Mitwirkungsvereinbarung geändert

Die Mitwirkungsvereinbarung wurde geändert.

57

screenshot_added

Bildschirmfoto hinzugefügt

Ein Bildschirmfoto wurde einer Zeichenkette zugeordnet.

58

screenshot_uploaded

Bildschirmfoto hochgeladen

Ein Bildschirmfoto wurde hochgeladen.

59

string_updated_in_the_repository

Zeichenkette im Repository aktualisiert

Beim Synchronisieren aus dem Repository wurde eine Zeichenkette geändert.

60

add-on_installed

Erweiterung installiert

Eine Erweiterung wurde installiert.

61

add-on_configuration_changed

Konfiguration der Erweiterung geändert

Die Konfiguration einer Erweiterung wurde geändert.

62

add-on_uninstalled

Erweiterung deinstalliert

Eine Erweiterung wurde deinstalliert.

63

string_removed

Zeichenkette entfernt

Eine Zeichenkette wurde aus einer Übersetzung entfernt.

64

comment_removed

Kommentar entfernt

Ein Zeichenkettenkommentar wurde entfernt.

65

comment_resolved

Kommentar geklärt

Ein Zeichenkettenkommentar wurde als geklärt markiert.

66

explanation_updated

Erklärung aktualisiert

Die Erklärung zu einer Ausgangszeichenkette wurde aktualisiert.

67

category_removed

Kategorie entfernt

Eine Komponentenkategorie wurde entfernt.

68

category_renamed

Kategorie umbenannt

Eine Komponentenkategorie wurde umbenannt.

69

category_moved

Kategorie verschoben

Eine Komponentenkategorie wurde verschoben.

70

saving_string_failed

Speichern der Zeichenkette fehlgeschlagen

Weblate konnte eine geänderte Zeichenkette nicht speichern.

71

string_added_in_the_repository

Zeichenkette im Repository hinzugefügt

Beim Synchronisieren aus dem Repository wurde eine neue Zeichenkette gefunden.

72

string_updated_in_the_upload

Zeichenkette beim Hochladen aktualisiert

Beim Verarbeiten einer hochgeladenen Datei wurde eine Zeichenkette geändert.

73

string_added_in_the_upload

Zeichenkette beim Hochladen hinzugefügt

Beim Verarbeiten einer hochgeladenen Datei wurde eine neue Zeichenkette gefunden.

74

translation_updated_by_source_upload

Übersetzung durch hochgeladene Quelle aktualisiert

Nach dem Hochladen einer Quelldatei wurde eine Übersetzung synchronisiert.

75

component_translation_completed

Komponentenübersetzung abgeschlossen

Alle Sprachen zur Übersetzung in einer Komponente wurden nach einer manuellen Bearbeitung vollständig übersetzt. Automatische Übersetzungen, Uploads und Massenbearbeitungen lösen dieses Ereignis nicht aus.

76

applied_enforced_check

Erzwungene Qualitätsprüfungen angewandt

Eine Übersetzung wurde bei einer erzwungenen Qualitätsprüfung als bearbeitungsbedürftig markiert.

77

propagated_change

Änderung weitergegeben

Eine Übersetzungsänderung wurde auf eine andere passende Zeichenkette weitergegeben.

78

file_uploaded

Datei hochgeladen

Eine Datei wurde in eine Übersetzung hochgeladen.

79

extra_flags_updated

Zusätzliche Markierungen aktualisiert

Zusätzliche Markierungen für Ausgangszeichenkette wurden aktualisiert.

80

font_uploaded

Schriftart hochgeladen

Eine Schriftart wurde hochgeladen.

81

font_changed

Schriftart geändert

Eine hochgeladene Schriftart wurde geändert.

82

font_removed

Schriftart entfernt

Eine hochgeladene Schriftart wurde entfernt.

83

forced_synchronization_of_translations

Erzwungene Synchronisierung von Übersetzungen

Übersetzungsdateien wurden zwangsweise mit dem Repository synchronisiert.

84

forced_rescan_of_translations

Erzwungenes erneutes Scannen von Übersetzungen

Übersetzungsdateien wurden zwangsweise erneut auf Änderungen überprüft.

85

screenshot_removed

Bildschirmfoto entfernt

Ein Bildschirmfoto wurde entfernt.

86

label_added

Label hinzugefügt

Ein Label wurde einer Zeichenkette hinzugefügt.

87

label_removed

Label entfernt

Ein Label wurde von einer Zeichenkette entfernt.

88

repository_cleanup

Repositorybereinigung

Das Repository-Arbeitsverzeichnis wurde bereinigt.

89

source_string_added_in_the_upload

Ausgangszeichenkette beim Hochladen hinzugefügt

Beim Verarbeiten einer hochgeladenen Datei wurde eine Ausgangszeichenkette hinzugefügt.

90

source_string_added_in_the_repository

Ausgangszeichenkette im Repository hinzugefügt

Beim Synchronisieren aus dem Repository wurde eine Ausgangszeichenkette hinzugefügt.

91

project_backed_up

Projekt gesichert

Eine Projektsicherung wurde erstellt.

92

project_restored

Projekt wiederhergestellt

Ein Projekt wurde aus einer Sicherung wiederhergestellt.

93

component_restored

Komponente wiederhergestellt

Eine Komponente wurde aus einer Sicherung wiederhergestellt.

94

user_edit_reverted

Benutzerbearbeitung rückgängig gemacht

Alle von einem Benutzer vorgenommenen Bearbeitungen wurden rückgängig gemacht.

95

project_setting_changed

Projekteinstellung geändert

Eine Projekteinstellung wurde geändert.

96

component_setting_changed

Komponenteneinstellung geändert

Eine Komponenteneinstellung wurde geändert.

97

user_access_changed

Benutzerzugriff geändert

Die Zugriffsberechtigungen eines Benutzers wurden geändert.

98

workspace_created

Arbeitsbereich erstellt

Ein Arbeitsbereich wurde erstellt.

99

workspace_setting_changed

Arbeitsbereicheinstellung geändert

Eine Arbeitsbereicheinstellung wurde geändert.

100

project_moved

Projekt verschoben

Ein Projekt wurde in oder aus einem Arbeitsbereich verschoben.

101

remote_repository_updated

Remote-Repository aktualisiert

Das Aktualisieren eines Remote-Repositorys wurde abgeschlossen.

102

remote_repository_update_failed

Remote-Repository-Aktualisierung ist fehlgeschlagen

Das Aktualisieren eines Remote-Repositorys ist fehlgeschlagen.

103

alert_dismissed

Warnung verworfen

Eine Komponentenwarnung wurde verworfen.

104

alert_reopened

Warnung erneut aktiviert

Eine Komponentenwarnung wurde erneut aktiviert, nachdem sich ihr Kontext geändert hatte.

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, Übersetzungsdienste 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.

Jeder Eintrag gibt an, ob die Verarbeitung noch aussteht, erfolgreich war, fehlgeschlagen ist oder übersprungen wurde. Bei übersprungenen Einträgen wird der Grund angegeben, warum die Erweiterung nicht ausgeführt wurde, z. B. eine inkompatible Komponente, keine relevanten Änderungen oder ein konfigurierter Zeitplan, dessen Termin noch nicht fällig ist. Ein erfolgreicher Eintrag kann dennoch bedeuten, dass die Erweiterung ihre Eingaben geprüft hat, aber keine Änderungen festgestellt hat.

Bei bereichsweiten Erweiterungen, die Komponenten unabhängig voneinander verarbeiten, enthält das Aktivitätsprotokoll für jede Komponente einen separaten Eintrag.

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