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.
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:
serviceEvaluierungsdienst
Verfügbare Auswahlmöglichkeiten:¶ anthropicAnthropic
openaiOpenAI
mistralMistral
ollamaOllama
azure-openaiAzure OpenAI
qAbfrage
intervalEvaluierungshäufigkeit
Verfügbare Auswahlmöglichkeiten:¶ disabledDeaktiviert
dailyTäglich
weeklyWöchentlich
monthlyMonatlich
on_changeÜbersetzungsänderungen auswerten
on_updateRepository-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:
workflowArbeitsablauf
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
Arbeitsablauf-Definition für die Skriptdefinition und -referenz.
Kochbuch für vollständige Beispiele.
Übersetzungsspeicher vor der maschinellen Übersetzung anwenden for translation memory before machine translation.
Automatische Übersetzung¶
- Erweiterungs-ID:
weblate.autotranslate.autotranslate- Konfiguration:
modeAutomatischer Übersetzungsmodus
Verfügbare Auswahlmöglichkeiten:¶ suggestAls Vorschlag hinzufügen
translateAls Übersetzung hinzufügen
fuzzyHinzufügen als „Bearbeitungsbedürftig“
approvedAls genehmigte Übersetzung hinzufügen
qAbfrage
Bitte beachten, dass bei der Übersetzung aller Zeichenketten alle vorhandenen Übersetzungen verworfen werden.
auto_sourceQuelle der automatisierten Übersetzungen
Verfügbare Auswahlmöglichkeiten:¶ othersAndere Übersetzungskomponenten
mtMaschinelle Übersetzung
componentKomponente
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
thresholdSchwellenwert
- 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_selectorCSS-Selektor
CSS-Selektor zur Erkennung lokalisierbarer Elemente.
cookie_nameName des Sprachcookies
Name des Cookies, der die Sprachpräferenz speichert.
filesZeichenketten 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_ageMaximales 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_versionsMaximale 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:
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
matchRegulä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_formatDateiformat
language_regexSprachfilter
Regulärer Ausdruck, gegen den die Übersetzungsdateien beim Scannen nach Dateimaske gefiltert wird.
Komponentenbenennung und Dateivorlagen
name_templateDen Komponentennamen anpassen
Verwenden Sie die Syntax der Django-Vorlage. Diese Vorlage muss {{ component }} enthalten.
base_file_templateDefinition des einsprachigen Basisdateinamens
Für zweisprachige Übersetzungsdateien leer lassen. Wenn gesetzt, muss diese Vorlage {{ component }} enthalten.
new_base_templateDefinition 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_templateZwischensprachedatei
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_templateDie 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_addonsErweiterungen der Hauptkomponente zu den neu erstellten klonen
removeKomponenten für nicht vorhandene Dateien entfernen
- Trigger:
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
componentnamed group. Matching translation files also requires alanguagenamed 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_templateand at least one translation file matchingmatch, 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
languagegroup. Keep full control over thecomponentcapture, for examplelocale/(?P<component>[^/]+)\.potordocs/(?P<component>[^/_]+)\.md.Fill Define the file mask with a path that includes both a language wildcard and
{{ component }}, for examplelocale/*/{{ component }}.poordocs/{{ 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.mddocs/news_cs.mddocs/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_*.mddocs/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
componentmatch 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:
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.pocs/website.pode/application.pode/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.polocale/cs/LC_MESSAGES/website.polocale/de/LC_MESSAGES/application.polocale/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.posrc/locale/website.cs.posrc/locale/application.de.posrc/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.polocale/cs/website/cs.polocale/de/application/de.polocale/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.xmlres/values-cs/strings-help.xmlres/values-de/strings-about.xmlres/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.propertiesparent/module1/submodule/src/main/resources/ApplicationResource_es.propertiesparent/module2/src/main/resources/ApplicationResource_de.propertiesparent/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.
Siehe auch
Fedora Messaging¶
Added in version 5.15.
- Erweiterungs-ID:
weblate.fedora_messaging.publish- Konfiguration:
Brokerverbindung
amqp_urlAMQP-Broker-URL
Die AMQP-Broker-URL, mit dem eine Verbindung hergestellt werden soll.
topic_prefixThemenpräfix
Optionales Präfix, das den generierten Nachrichtenthemen vorangestellt wird.
Zeitüberschreitungen und Wiederholungsversuche
publish_timeoutZeitüberschreitung für die Veröffentlichung
Wie viele Sekunden auf die Zustellbestätigung des Brokers gewartet werden soll.
connection_attemptsVerbindungsversuche
Wie oft ein Verbindungsaufbau zum Broker versucht werden soll.
retry_delayWiederholungsverzögerung
Wie viele Sekunden zwischen den Verbindungsversuchen gewartet werden soll.
TLS-Zugangsdaten
ca_certCA-Zertifikatsbündel (PEM)
Fügen Sie nur PEM-Zertifikatsblöcke ein, die jeweils mit „—–BEGIN CERTIFICATE—–“ beginnen und mit „—–END CERTIFICATE—–“ enden.
client_keyPrivater 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_certClient-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_filterAuszulösende Änderungsereignisse
Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse
eventsAusgewählte Änderungsereignisse
- Trigger:
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_idNumerische ID der Änderung
actionAusführlicher Name der Änderung.
timestampISO-formatierter Zeitstempel
targetNeuer Wert der Änderung (z. B. neue Übersetzung der Zeichenkette)
oldAlter Wert der Änderung (z. B. vorherige Übersetzung der Zeichenkette)
sourceAusgangszeichenkette.
urlAbsolute URL zur Anzeige des zugehörigen Objekts.
authorAutor-Benutzername (dieser kann sich von dem des Benutzers unterscheiden, z. B. bei der Annahme von Vorschlägen)
userHandelnder Benutzername
projectProjekt-Slug
componentKomponenten-Slug
translationSprachcode der Übersetzung
Nachrichtenheader¶
Es gibt weitere Header, die Sie ebenfalls für das Routing verwenden können:
actionAusführlicher Name der Änderung.
projectProjekt-Slug
componentKomponenten-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"]
}
Siehe auch
Massenbearbeitung¶
- Erweiterungs-ID:
weblate.flags.bulk- Konfiguration:
qAbfrage
search_typeSuchmethode
Verfügbare Auswahlmöglichkeiten:¶ textText
regexRegulärer Ausdruck
searchSuchzeichenfolge
Case-sensitiver Text oder regulärer Ausdruck, der in übereinstimmenden Zeichenfolgen ersetzt werden soll. Lassen Sie das Feld leer, um die Ersetzung zu deaktivieren.
replacementErsetzungszeichenfolge
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.
stateZu setzender Status
Verfügbare Auswahlmöglichkeiten:¶ -1Nicht ändern
0Leer
10Bearbeitungsbedürftig
11Bearbeitungsbedürftig (Muss umgeschrieben werden)
12Bearbeitungsbedürftig (Muss überprüft werden)
20Übersetzt
30Genehmigt
Quellmarkierungen
Markierungen werden entsprechend den Filterergebnissen für die Ausgangszeichenketten gesetzt und gelten für deren Übersetzungen in allen Sprachen.
add_flagsMarkierungen hinzufügen
remove_flagsMarkierungen entfernen
Übersetzungsmarkierungen
Markierungen gelten nur für Übersetzungen, die dem Filter entsprechen. Ausgangszeichenketten sind davon ausgenommen.
add_translation_flagsMarkierungen hinzufügen
remove_translation_flagsMarkierungen 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_labelsLabels hinzufügen
remove_labelsLabels entfernen
- Trigger:
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:
Suchanfrage |
|
|---|---|
Labels: Labels hinzufügen |
recent |
Suchanfrage |
|
|---|---|
Übersetzungsmarkierungen: Markierungen hinzufügen |
|
Suchanfrage |
|
|---|---|
Übersetzungsmarkierungen: Markierungen hinzufügen |
|
Unveränderte Übersetzungen als „Muss umgeschrieben werden“ markieren¶
- Erweiterungs-ID:
weblate.flags.same_edit- Konfiguration:
Diese Erweiterung hat keine Konfiguration.
- Trigger:
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
Neue Ausgangszeichenketten als „Muss überprüft werden“ markieren¶
- Erweiterungs-ID:
weblate.flags.source_edit- Konfiguration:
Diese Erweiterung hat keine Konfiguration.
- Trigger:
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
Neue Übersetzungen als „Muss umgeschrieben werden“ markieren¶
- Erweiterungs-ID:
weblate.flags.target_edit- Konfiguration:
Diese Erweiterung hat keine Konfiguration.
- Trigger:
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
Aktualisierte Übersetzungen vom Repository als „Muss umgeschrieben werden“ markieren¶
- Erweiterungs-ID:
weblate.flags.target_repo_update- Konfiguration:
Diese Erweiterung hat keine Konfiguration.
- Trigger:
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
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:
scopeAusgabebereich
Verfügbare Auswahlmöglichkeiten:¶ translationEine Datei pro Übersetzung
componentEine Datei pro Komponente
filenameName der erzeugten Datei
templateInhalt 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:ltroderrtl.filenameandurl: 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.
Siehe auch
Ü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
sourceAusgangszeichenketten
include_readonlySchreibgeschützte Zeichenketten einschließen
targetZielübersetzung
Alle Zeichenketten in dieser Übersetzung werden überschrieben
Vorangestellter Text
prefixVorangestellter statischer Text
var_prefixVorangestellter variabler Text
Angehängter Text
suffixAngehängter statischer Text
var_suffixAngehängter variabler Text
Texterweiterung
var_multiplierVariabler 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:
intervalAktualisierungshäufigkeit
Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.
Verfügbare Auswahlmöglichkeiten:¶ dailyTäglich
weeklyWöchentlich
monthlyMonatlich
normalize_headerPOT-Header normalisieren
Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.
location_modeQuellenorte
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:¶ fileDateiformat-Einstellungen verwenden
keepOrte in die POT-Datei extrahieren
omitOrte 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
intervalAktualisierungshäufigkeit
Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.
Verfügbare Auswahlmöglichkeiten:¶ dailyTäglich
weeklyWöchentlich
monthlyMonatlich
normalize_headerPOT-Header normalisieren
Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.
location_modeQuellenorte
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:¶ fileDateiformat-Einstellungen verwenden
keepOrte in die POT-Datei extrahieren
omitOrte nicht extrahieren
Meson-Voreinstellung
presetMeson-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:¶ glibGLib
Kommentarextraktion
comment_modeCode-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:¶ offKommentare nicht extrahieren
allAlle Kommentare extrahieren
taggedKommentare mit Tag extrahieren
comment_tagKommentar-Tag
Tag, das an xgettext zur Extraktion von Kommentaren übergeben wird, wenn der Modus „tagged comment“ verwendet wird.
Schlüsselwörter
keywordZusätzliche Schlüsselwörter
Zusätzliche Schlüsselwörter, die durch Zeilenumbrüche getrennt sind und mit –keyword an xgettext übergeben werden.
keyword_exclusiveSchlüsselwörter exklusiv verwenden
When enabled, passes
--keywordwithout 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
checksxgettext-Prüfungen
Zusätzliche Qualitätsprüfungen von xgettext für extrahierte Nachrichten aktivieren.
Verfügbare Auswahlmöglichkeiten:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
data_dirsITS-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:
pathPfad der erzeugten MO-Datei
Wenn nicht angegeben, wird der Ort der PO-Datei verwendet.
fuzzyBearbeitungsbedürftige Zeichenketten einschließen
Bearbeitungsbedürftige (ungenaue) Zeichenketten sind normalerweise nicht für Übersetzungen geeignet.
- Trigger:
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:
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:
intervalAktualisierungshäufigkeit
Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.
Verfügbare Auswahlmöglichkeiten:¶ dailyTäglich
weeklyWöchentlich
monthlyMonatlich
normalize_headerPOT-Header normalisieren
Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.
location_modeQuellenorte
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:¶ fileDateiformat-Einstellungen verwenden
keepOrte in die POT-Datei extrahieren
omitOrte nicht extrahieren
filter_modeFilterung
Optional können Zeichenketten entfernt werden, die nach der Sphinx-Extraktion nicht mehr sinnvoll übersetzt werden können.
Verfügbare Auswahlmöglichkeiten:¶ noneKeine
weblate_docsWeblate-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
intervalAktualisierungshäufigkeit
Wie oft die Erweiterung die POT-Datei aktualisieren soll, wenn die Komponente aktualisiert wird.
Verfügbare Auswahlmöglichkeiten:¶ dailyTäglich
weeklyWöchentlich
monthlyMonatlich
normalize_headerPOT-Header normalisieren
Aktualisiert gettext-Header und ersetzt Platzhalter für POT-Kommentare.
location_modeQuellenorte
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:¶ fileDateiformat-Einstellungen verwenden
keepOrte in die POT-Datei extrahieren
omitOrte nicht extrahieren
Eingabedateien
input_modeEingabequelle
Wählen Sie aus, ob xgettext Quelldateien aus glob-Mustern oder aus einem POTFILES/POTFILES.in-Manifest lesen soll.
Verfügbare Auswahlmöglichkeiten:¶ patternsMuster für Quelldateien
potfilesPOTFILES-Manifest
languagexgettext-Sprache
Programmiersprache, die an xgettext übergeben wird, zum Beispiel Python oder C. Leer lassen, damit xgettext die Sprache anhand der Dateiendungen ermittelt.
source_patternsMuster für Quelldateien
Durch Zeilenumbrüche getrennte Repository-relative glob-Muster für Dateien, die mit xgettext extrahiert werden sollen.
potfiles_pathPOTFILES-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_modeCode-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:¶ offKommentare nicht extrahieren
allAlle Kommentare extrahieren
taggedKommentare mit Tag extrahieren
comment_tagKommentar-Tag
Tag, das an xgettext zur Extraktion von Kommentaren übergeben wird, wenn der Modus „tagged comment“ verwendet wird.
Schlüsselwörter
keywordZusätzliche Schlüsselwörter
Zusätzliche Schlüsselwörter, die durch Zeilenumbrüche getrennt sind und mit –keyword an xgettext übergeben werden.
keyword_exclusiveSchlüsselwörter exklusiv verwenden
When enabled, passes
--keywordwithout 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
checksxgettext-Prüfungen
Zusätzliche Qualitätsprüfungen von xgettext für extrahierte Nachrichten aktivieren.
Verfügbare Auswahlmöglichkeiten:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
data_dirsITS-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.
Siehe auch
Git-Commits zusammenfassen¶
- Erweiterungs-ID:
weblate.git.squash- Konfiguration:
squashCommits zusammenfassen
Verfügbare Auswahlmöglichkeiten:¶ allAlle Commits in einen
languagePro Sprache
filePro Datei
authorPro Übersetzer
author-languagePro Autor und Sprache
append_trailersEndzeilen 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_messageCommit-Nachricht
Diese Commit-Nachricht wird anstelle der zusammengefassten Commit-Nachrichten verwendet.
- Trigger:
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:
Verwirft jede Nacht alle Änderungen im Weblate-Repository.
Die Java-Properties-Datei formatieren¶
- Erweiterungs-ID:
weblate.properties.sort- Konfiguration:
case_sensitiveSortierung nach Groß- und Kleinschreibung aktivieren
- Trigger:
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:
ageTage aufzubewahren
- Trigger:
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:
ageTage aufzubewahren
votesAbstimmungsschwelle
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:
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:
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_urlWebhook-URL
event_filterAuszulösende Änderungsereignisse
Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse
eventsAusgewählte Änderungsereignisse
- Trigger:
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_urlWebhook-URL
secretWebhook-Geheimnis
Das Standard-Webhook-Geheimnis ist eine base64-kodierte Zeichenkette.
event_filterAuszulösende Änderungsereignisse
Choose which change events should trigger this add-on. Auszulösende Änderungsereignisse
eventsAusgewählte Änderungsereignisse
- Trigger:
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.
Siehe auch
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¶
|
Alibaba |
|
Amazon Translate |
|
Anthropic |
|
Apertium APy |
|
Azure AI Translator |
|
Azure OpenAI |
|
Baidu |
|
CyrTranslit |
|
DeepL |
|
Glosbe |
|
Google Cloud Translation Advanced |
|
Google Cloud Translation Basic |
|
LTEngine |
|
LibreTranslate |
|
Mistral |
|
ModernMT |
|
MyMemory |
|
Netease Sight |
|
Ollama |
|
OpenAI |
|
SAP Translation Hub |
|
Systran |
|
Weblate |
|
Weblate-Übersetzungsspeicher |
|
Yandex |
|
Yandex v2 |
|
Youdao Zhiyun |
|
eTranslation |
|
tmserver |
Dateiformat¶
|
XLIFF 1.2 mit Apple-Erweiterungen |
|
App-Store-Metadatendateien |
|
ARB-Datei |
|
Android String-Ressource |
|
AsciiDoc-Datei |
|
Erweiterte SubStation-Alpha-Untertiteldatei |
|
Haiku Catkeys |
|
Compose-Multiplatform-Ressource |
|
CSV-Datei |
|
Mehrwertige CSV-Datei (UTF-8) |
|
Einfache CSV-Datei |
|
DokuWiki-Textdatei |
|
DTD-Datei |
|
Flache XML-Datei |
|
Fluent-Datei |
|
JSON-Datei Format.JS |
|
JSON-Datei go-i18n v1 |
|
JSON-Datei go-i18n v2 |
|
TOML-Datei go-i18n |
|
JSON-Datei gotext |
|
GWT Properties |
|
HTML-Datei |
|
JSON-Datei i18next v3 |
|
JSON-Datei i18next v4 |
|
IDML-Datei |
|
INI-Datei |
|
Inno-Setup-INI-Datei |
|
Joomla-Sprachdatei |
|
JSON-Datei |
|
JSON-Datei mit verschachtelter Struktur |
|
Laravel-PHP-Zeichenketten |
|
Markdown-Datei |
|
MDX-Datei |
|
MediaWiki-Textdatei |
|
@draggable/i18n-lang-Datei |
|
Mobile-Kotlin-Ressource |
|
JSON-Datei Nextcloud |
|
OpenDocument-Datei |
|
PHP-Zeichenketten |
|
gettext-PO-Datei |
|
gettext-PO-Datei (einsprachig) |
|
XLIFF 1.2 mit gettext-Erweiterungen |
|
Java Properties |
|
RC-Datei |
|
RESJSON-Datei |
|
Ressourcen-Wörterbuch-Datei |
|
.NET-Ressourcendatei |
|
Ruby-YAML-Datei |
|
SubRip-Untertiteldatei |
|
SubStation-Alpha-Untertiteldatei |
|
iOS-Zeichenketten |
|
Stringsdict-Datei |
|
MicroDVD-Untertiteldatei |
|
TermBase-eXchange-Datei |
|
TOML-Datei |
|
Qt-Linguist-Übersetzungsdatei (Version 2) |
|
Qt-Linguist-Übersetzungsdatei (Version 1) |
|
Klartextdatei |
|
JSON-Datei WebExtension |
|
WixLocalization-Datei |
|
XLIFF-1.2-Übersetzungsdatei |
|
XLIFF-2.0-Übersetzungsdatei |
|
Excel Open XML |
|
Ganze XWiki-Seite |
|
XWiki-Java-Properties |
|
XWiki-Seiteneigenschaften |
|
YAML-Datei |
Auszulösende Änderungsereignisse¶
|
Übersetzungsinhalt-Ereignisse |
|
Alle Änderungsereignisse |
|
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.
ID |
Kennung |
Bezeichnung |
Beschreibung |
|---|---|---|---|
|
|
Ressource aktualisiert |
Eine Übersetzungsdatei wurde mit ihrem Repository synchronisiert. |
|
|
Ü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. |
|
|
Übersetzung geändert |
Eine vorhandene Übersetzung wurde von einem Benutzer bearbeitet. |
|
|
Kommentar hinzugefügt |
Ein Kommentar wurde zu einer Zeichenkette hinzugefügt. |
|
|
Neuer Vorschlag |
Ein Übersetzungsvorschlag wurde hinzugefügt. |
|
|
Übersetzung hinzugefügt |
Eine bisher nicht übersetzte Zeichenkette wurde von einem Benutzer übersetzt. |
|
|
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. |
|
|
Vorschlag angenommen |
Ein Übersetzungsvorschlag wurde als Übersetzung angenommen. |
|
|
Übersetzung zurückgesetzt |
Eine Übersetzung wurde auf einen früheren Wert zurückgesetzt. |
|
|
Ü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. |
|
|
Ausgangszeichenkette hinzugefügt |
Eine Ausgangszeichenkette wurde außerhalb von Repository-Aktualisierungen oder Uploads hinzugefügt. |
|
|
Komponente gesperrt |
Eine Komponente wurde für die Übersetzung gesperrt. |
|
|
Komponente entsperrt |
Eine Komponente wurde für die Übersetzung entsperrt. |
|
|
Änderungen committet |
Ausstehende Komponentenänderungen wurden committet. |
|
|
Änderungen gepusht |
Repository-Änderungen wurden Upstream gepusht. |
|
|
Repository zurückgesetzt |
Ein Repository wurde auf den Upstream-Status zurückgesetzt. |
|
|
Repository zusammengeführt |
Änderungen im Upstream-Repository wurden zusammengeführt. |
|
|
Repository umbasiert |
Repository-Änderungen wurden auf Upstream umbasiert. |
|
|
Repository-Merge fehlgeschlagen |
Zusammenführen der Änderungen im Upstream-Repository ist fehlgeschlagen. |
|
|
Repository-Umbasierung fehlgeschlagen |
Umbasieren der Repository-Änderungen ist fehlgeschlagen. |
|
|
Analyse fehlgeschlagen |
Weblate konnte eine Übersetzungsdatei nicht analysieren. |
|
|
Übersetzung entfernt |
Eine Sprache zur Übersetzung wurde entfernt. |
|
|
Vorschlag entfernt |
Ein Übersetzungsvorschlag wurde entfernt. |
|
|
Übersetzung ersetzt |
Eine Übersetzung wurde durch eine Suchen-und-Ersetzen-Aktion geändert. Dies wird anstelle von „Übersetzung geändert“ ausgegeben. |
|
|
Repository-Push fehlgeschlagen |
Das Pushen der Repository-Änderungen an Upstream ist fehlgeschlagen. |
|
|
Vorschlag wurde während des Bereinigungsvorgangs entfernt |
Ein veralteter Übersetzungsvorschlag wurde während des Bereinigungsvorgangs entfernt. |
|
|
Ausgangszeichenkette geändert |
Eine Ausgangszeichenkette wurde in Weblate bearbeitet. |
|
|
Zeichenkette hinzugefügt |
Eine neue Zeichenkette wurde in Weblate hinzugefügt. |
|
|
Große Statusänderung |
Der Übersetzungsstatus einer oder mehrerer Zeichenketten wurde per Massenbearbeitung geändert. |
|
|
Sichtbarkeit geändert |
Projekt- oder Komponentensichtbarkeit wurde geändert. |
|
|
Benutzer hinzugefügt |
Einem Benutzer wurde Zugriff gewährt. |
|
|
Benutzer entfernt |
Einem Benutzer wurde der Zugriff entzogen. |
|
|
Übersetzung genehmigt |
Eine Übersetzung wurde während der Überprüfung genehmigt. |
|
|
Zur Bearbeitung markiert |
Eine Übersetzung wurde als bearbeitungsbedürftig markiert. |
|
|
Komponente entfernt |
Eine Übersetzungskomponente wurde entfernt. |
|
|
Projekt entfernt |
Ein Übersetzungsprojekt wurde entfernt. |
|
|
Projekt umbenannt |
Ein Übersetzungsprojekt wurde umbenannt. |
|
|
Komponente umbenannt |
Eine Übersetzungskomponente wurde umbenannt. |
|
|
Komponente verschoben |
Eine Komponente wurde innerhalb eines Projekts verschoben. |
|
|
Mitwirkender beigetreten |
Ein Benutzer hat seinen ersten Beitrag zu einer Übersetzung geleistet. |
|
|
Mitteilung veröffentlicht |
Eine Mitteilung wurde veröffentlicht. |
|
|
Warnung ausgelöst |
Eine Komponentenwarnung wurde ausgelöst. |
|
|
Sprache hinzugefügt |
Eine Sprache zur Übersetzung wurde hinzugefügt. |
|
|
Sprache gewünscht |
Ein Nutzer wünschte sich eine neue Sprache. |
|
|
Projekt erstellt |
Ein Übersetzungsprojekt wurde erstellt. |
|
|
Komponente erstellt |
Eine Übersetzungskomponente wurde erstellt. |
|
|
Benutzer eingeladen |
Ein Benutzer wurde zu einem Projekt eingeladen. |
|
|
Repository-Benachrichtigung erhalten |
Weblate hat eine Repository-Benachrichtigung von einem Code-Host erhalten. |
|
|
Datei durch hochgeladene Übersetzung ersetzt |
Eine Übersetzungsdatei wurde durch eine hochgeladene Datei ersetzt. |
|
|
Lizenz geändert |
Projekt- oder Komponenten-Lizenzinformationen haben sich geändert. |
|
|
Mitwirkungsvereinbarung geändert |
Die Mitwirkungsvereinbarung wurde geändert. |
|
|
Bildschirmfoto hinzugefügt |
Ein Bildschirmfoto wurde einer Zeichenkette zugeordnet. |
|
|
Bildschirmfoto hochgeladen |
Ein Bildschirmfoto wurde hochgeladen. |
|
|
Zeichenkette im Repository aktualisiert |
Beim Synchronisieren aus dem Repository wurde eine Zeichenkette geändert. |
|
|
Erweiterung installiert |
Eine Erweiterung wurde installiert. |
|
|
Konfiguration der Erweiterung geändert |
Die Konfiguration einer Erweiterung wurde geändert. |
|
|
Erweiterung deinstalliert |
Eine Erweiterung wurde deinstalliert. |
|
|
Zeichenkette entfernt |
Eine Zeichenkette wurde aus einer Übersetzung entfernt. |
|
|
Kommentar entfernt |
Ein Zeichenkettenkommentar wurde entfernt. |
|
|
Kommentar geklärt |
Ein Zeichenkettenkommentar wurde als geklärt markiert. |
|
|
Erklärung aktualisiert |
Die Erklärung zu einer Ausgangszeichenkette wurde aktualisiert. |
|
|
Kategorie entfernt |
Eine Komponentenkategorie wurde entfernt. |
|
|
Kategorie umbenannt |
Eine Komponentenkategorie wurde umbenannt. |
|
|
Kategorie verschoben |
Eine Komponentenkategorie wurde verschoben. |
|
|
Speichern der Zeichenkette fehlgeschlagen |
Weblate konnte eine geänderte Zeichenkette nicht speichern. |
|
|
Zeichenkette im Repository hinzugefügt |
Beim Synchronisieren aus dem Repository wurde eine neue Zeichenkette gefunden. |
|
|
Zeichenkette beim Hochladen aktualisiert |
Beim Verarbeiten einer hochgeladenen Datei wurde eine Zeichenkette geändert. |
|
|
Zeichenkette beim Hochladen hinzugefügt |
Beim Verarbeiten einer hochgeladenen Datei wurde eine neue Zeichenkette gefunden. |
|
|
Übersetzung durch hochgeladene Quelle aktualisiert |
Nach dem Hochladen einer Quelldatei wurde eine Übersetzung synchronisiert. |
|
|
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. |
|
|
Erzwungene Qualitätsprüfungen angewandt |
Eine Übersetzung wurde bei einer erzwungenen Qualitätsprüfung als bearbeitungsbedürftig markiert. |
|
|
Änderung weitergegeben |
Eine Übersetzungsänderung wurde auf eine andere passende Zeichenkette weitergegeben. |
|
|
Datei hochgeladen |
Eine Datei wurde in eine Übersetzung hochgeladen. |
|
|
Zusätzliche Markierungen aktualisiert |
Zusätzliche Markierungen für Ausgangszeichenkette wurden aktualisiert. |
|
|
Schriftart hochgeladen |
Eine Schriftart wurde hochgeladen. |
|
|
Schriftart geändert |
Eine hochgeladene Schriftart wurde geändert. |
|
|
Schriftart entfernt |
Eine hochgeladene Schriftart wurde entfernt. |
|
|
Erzwungene Synchronisierung von Übersetzungen |
Übersetzungsdateien wurden zwangsweise mit dem Repository synchronisiert. |
|
|
Erzwungenes erneutes Scannen von Übersetzungen |
Übersetzungsdateien wurden zwangsweise erneut auf Änderungen überprüft. |
|
|
Bildschirmfoto entfernt |
Ein Bildschirmfoto wurde entfernt. |
|
|
Label hinzugefügt |
Ein Label wurde einer Zeichenkette hinzugefügt. |
|
|
Label entfernt |
Ein Label wurde von einer Zeichenkette entfernt. |
|
|
Repositorybereinigung |
Das Repository-Arbeitsverzeichnis wurde bereinigt. |
|
|
Ausgangszeichenkette beim Hochladen hinzugefügt |
Beim Verarbeiten einer hochgeladenen Datei wurde eine Ausgangszeichenkette hinzugefügt. |
|
|
Ausgangszeichenkette im Repository hinzugefügt |
Beim Synchronisieren aus dem Repository wurde eine Ausgangszeichenkette hinzugefügt. |
|
|
Projekt gesichert |
Eine Projektsicherung wurde erstellt. |
|
|
Projekt wiederhergestellt |
Ein Projekt wurde aus einer Sicherung wiederhergestellt. |
|
|
Komponente wiederhergestellt |
Eine Komponente wurde aus einer Sicherung wiederhergestellt. |
|
|
Benutzerbearbeitung rückgängig gemacht |
Alle von einem Benutzer vorgenommenen Bearbeitungen wurden rückgängig gemacht. |
|
|
Projekteinstellung geändert |
Eine Projekteinstellung wurde geändert. |
|
|
Komponenteneinstellung geändert |
Eine Komponenteneinstellung wurde geändert. |
|
|
Benutzerzugriff geändert |
Die Zugriffsberechtigungen eines Benutzers wurden geändert. |
|
|
Arbeitsbereich erstellt |
Ein Arbeitsbereich wurde erstellt. |
|
|
Arbeitsbereicheinstellung geändert |
Eine Arbeitsbereicheinstellung wurde geändert. |
|
|
Projekt verschoben |
Ein Projekt wurde in oder aus einem Arbeitsbereich verschoben. |
|
|
Remote-Repository aktualisiert |
Das Aktualisieren eines Remote-Repositorys wurde abgeschlossen. |
|
|
Remote-Repository-Aktualisierung ist fehlgeschlagen |
Das Aktualisieren eines Remote-Repositorys ist fehlgeschlagen. |
|
|
Warnung verworfen |
Eine Komponentenwarnung wurde verworfen. |
|
|
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.
Siehe auch
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.
Siehe auch
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.