Kontinuierliche Lokalisierung

Es gibt eine Infrastruktur, die dafür sorgt, dass Ihre Übersetzung genau der Entwicklung folgt. Auf diese Weise können die Übersetzer die ganze Zeit an den Übersetzungen arbeiten, anstatt kurz vor der Veröffentlichung eine große Menge an neuem Text durchzuarbeiten.

Siehe auch

Integration mit Weblate beschreibt grundlegende Möglichkeiten zur Integration Ihrer Entwicklung mit Weblate.

Dies ist der Prozess:

  1. Die Entwickler nehmen Änderungen vor und pushen sie an das VCS-Repository.

  2. Optional werden die Übersetzungsdateien aktualisiert (dies hängt vom Dateiformat ab, siehe Warum zeigt Weblate immer noch alte Übersetzungszeichenketten an, obwohl die Vorlage aktualisiert wurde?).

  3. Weblate zieht die Änderungen aus dem VCS-Repository, siehe Repositorys werden aktualisiert.

  4. Sobald Weblate Änderungen an Übersetzungen feststellt, werden die Übersetzer entsprechend ihrer Abonnementeinstellungen benachrichtigt.

  5. Übersetzer übermitteln ihre Übersetzungen über die Weblate-Weboberfläche oder laden Änderungen offline hoch.

  6. Sobald die Übersetzer fertig sind, überträgt Weblate die Änderungen in das lokale Repository (siehe Lazy Commits) und pushed sie zurück, wenn es dazu berechtigt ist (siehe Pushen von Änderungen aus Weblate).

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0]; edge [fontname = "sans-serif", fontsize=10]; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> "Weblate" [label=" 3. Pull "]; "Weblate" -> "Translators" [label=" 4. Notification "]; "Translators" -> "Weblate" [label=" 5. Translate "]; "Weblate" -> "VCS repository" [label=" 6. Push "]; }

Repositorys werden aktualisiert

Sie sollten eine Möglichkeit einrichten, Backend-Repositorys von ihrer Quelle aus zu aktualisieren.

Wann immer Weblate das Repository aktualisiert, werden die Post-Update-Erweiterungen ausgelöst, siehe Erweiterungen.

Vermeiden von Merge-Konflikten

Die Merge-Konflikte von Weblate entstehen, wenn dieselbe Datei sowohl in Weblate als auch außerhalb von Weblate geändert wurde. Es gibt zwei Möglichkeiten, damit umzugehen: Entweder Sie vermeiden Bearbeitungen außerhalb von Weblate oder Sie integrieren Weblate in Ihren Aktualisierungsprozess, so dass die Änderungen vor der Aktualisierung der Dateien außerhalb von Weblate geleert werden.

Der erste Ansatz ist bei einsprachigen Dateien einfach – Sie können neue Zeichenketten innerhalb von Weblate hinzufügen und die gesamte Bearbeitung der Dateien dort belassen. Für zweisprachige Dateien gibt es normalerweise eine Art von Nachrichtenextraktionsprozess, um übersetzbare Dateien aus dem Quellcode zu erzeugen. In manchen Fällen kann dies in zwei Teile aufgeteilt werden – einer für die Extraktion erzeugt eine Vorlage (z. B. gettext POT wird mit xgettext erzeugt) und ein weiterer Prozess fügt sie in die tatsächlichen Übersetzungen ein (die gettext PO-Dateien werden mit msgmerge aktualisiert). Sie können den zweiten Schritt innerhalb von Weblate durchführen. Weblate sorgt dafür, dass alle anstehenden Änderungen vor diesem Vorgang berücksichtigt werden.

Der zweite Ansatz kann erreicht werden, indem man Weblates REST API verwendet, um Weblate zu zwingen, alle anstehenden Änderungen zu pushen und die Übersetzung zu sperren, während man selbst Änderungen vornimmt.

Das Skript zur Durchführung von Aktualisierungen kann wie folgt aussehen:

# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock

Wenn mehrere Komponenten dasselbe Repository teilen, müssen Sie sie alle separat sperren:

wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj

Bemerkung

Das Beispiel verwendet Weblate-Client, das eine Konfiguration (API-Schlüssel) benötigt, um Weblate aus der Ferne steuern zu können. Sie können dies auch mit einem beliebigen HTTP-Client anstelle von wlc erreichen, z. B. curl, siehe Weblates REST API.

Siehe auch

Weblate-Client

Automatisches Empfangen von Änderungen von GitHub

Weblate bietet native Unterstützung für GitHub.

Wenn Sie Hosted Weblate verwenden, empfiehlt es sich, die Weblate-App zu installieren, damit Sie die korrekte Einrichtung erhalten, ohne viel einrichten zu müssen. Sie kann auch zum Zurückschieben von Änderungen verwendet werden.

Um Benachrichtigungen über jeden Push an ein GitHub-Repository zu erhalten, fügen Sie den Weblate-Webhook in den Repository-Einstellungen hinzu (Webhooks), wie auf dem Bild unten gezeigt:

../_images/github-settings.png

Für die Nutzdaten-URL fügen Sie /hooks/github/ an Ihre Weblate-URL an, zum Beispiel für den Hosted Weblate-Dienst ist dies https://hosted.weblate.org/hooks/github/.

Sie können die anderen Werte auf den Standardeinstellungen belassen (Weblate kann beide Inhaltstypen verarbeiten und verwendet nur das push-Ereignis).

Automatischer Empfang von Änderungen von Bitbucket

Weblate unterstützt Bitbucket-Webhooks. Fügen Sie einen Webhook, der bei einem Repository-Push ausgelöst wird, mit der Ziel-URL /hooks/bitbucket/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/bitbucket/).

../_images/bitbucket-settings.png

Automatischer Empfang von Änderungen von GitLab

Weblate unterstützt GitLab-Hooks. Fügen Sie einen Projekt-Webhook mit der Ziel-URL /hooks/gitlab/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/gitlab/).

Automatischer Empfang von Änderungen von Pagure

Neu in Version 3.3.

Weblate unterstützt Pagure-Hooks. Fügen Sie einen Webhook mit der Ziel-URL /hooks/pagure/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/pagure/). Dies kann in Activate Web-hooks unter Project options erfolgen:

../_images/pagure-webhook.png

Automatischer Empfang von Änderungen von Azure Repos

Neu in Version 3.8.

Weblate unterstützt Azure-Repos-Webhooks. Fügen Sie einen Webhook für das Code pushed-Ereignis mit der Ziel-URL /hooks/azure/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/azure/). Dies kann in Service hooks unter Project settings erfolgen.

Automatischer Empfang von Änderungen von Gitea Repos

Neu in Version 3.9.

Weblate unterstützt für Gitea-Webhooks. Fügen Sie einen Gitea Webhook für das Push events-Ereignis mit der Ziel-URL /hooks/gitea/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/gitea/). Dies kann in Webhooks unter Repository Settings erfolgen.

Automatischer Empfang von Änderungen von Gitee Repos

Neu in Version 3.9.

Weblate unterstützt Gitee-Webhooks. Fügen Sie einen WebHook für das Push-Ereignis mit der Ziel-URL /hooks/gitee/ auf Ihrer Weblate-Installation hinzu (zum Beispiel https://hosted.weblate.org/hooks/gitee/). Dies kann in WebHooks unter Repository Management erfolgen.

Automatische nächtliche Aktualisierung der Repositorys

Weblate holt sich nachts automatisch entfernte Repositorys, um die Leistung beim späteren Zusammenführen von Änderungen zu verbessern. Sie können dies optional auch in nächtliche Zusammenführungen umwandeln, indem Sie AUTO_UPDATE aktivieren.

Pushen von Änderungen aus Weblate

Für jede Übersetzungskomponente kann eine Push-URL eingerichtet werden (siehe Push-URL für Repository) und in diesem Fall kann Weblate Änderungen an das entfernte Repository weiterleiten. Weblate kann auch so konfiguriert werden, dass Änderungen automatisch bei jedem Commit gepusht werden (dies ist die Voreinstellung, siehe Bei Commit gleichzeitig Pushen). Wenn Sie nicht möchten, dass Änderungen automatisch gepusht werden, können Sie dies manuell unter Paketquellwartung oder über die API per wlc push tun.

Die Push-Optionen unterscheiden sich je nach dem verwendeten Integration der Versionsverwaltung, weitere Einzelheiten finden Sie in diesem Kapitel.

Für den Fall, dass Sie keine direkten Pushes durch Weblate wünschen, gibt es Unterstützung für Pull Requests von GitHub-Pull-Requests, GitLab-Merge-Requests, Gitea-Pull-Requests, Pagure-Merge-Requests oder Gerrit-Reviews. Sie können diese aktivieren, indem Sie GitHub, GitLab, Gitea, Gerrit oder Pagure als Versionsverwaltung in Komponentenkonfiguration wählen.

Insgesamt stehen mit Git, GitHub und GitLab die folgenden Optionen zur Verfügung:

Gewünschte Einrichtung

Versionsverwaltung

Push-URL für Repository

Push Branch

Kein Push

Git

leer

leer

Direkt pushen

Git

SSH-URL

leer

Push zu separatem Branch

Git

SSH-URL

Name des Branches

GitHub-Pull-Request vom Fork

GitHub-Pull-Requests

leer

leer

GitHub-Pull-Request vom Branch

GitHub-Pull-Requests

SSH-URL [1]

Name des Branches

GitLab-Merge-Request vom Fork

GitLab-Merge-Requests

leer

leer

GitLab-Merge-Request vom Branch

GitLab-Merge-Requests

SSH-URL [1]

Name des Branches

Gitea-Merge-Request vom Fork

Gitea-Pull-Requests

leer

leer

Gitea-Merge-Request vom Branch

Gitea-Pull-Requests

SSH-URL [1]

Name des Branches

Pagure-Merge-Request vom Fork

Pagure-Merge-Requests

leer

leer

Pagure-Merge-Request vom Branch

Pagure-Merge-Requests

SSH-URL [1]

Name des Branches

Bemerkung

Sie können auch das automatische Pushen von Änderungen nach Weblate-Commits aktivieren, dies kann in Bei Commit gleichzeitig Pushen erfolgen.

Siehe auch

Siehe Zugriff auf Repositorys für die Einrichtung von SSH-Schlüsseln und Lazy Commits für Informationen darüber, wann Weblate entscheidet, Änderungen zu commiten.

Geschützte Branches

Wenn Sie Weblate auf einem geschützten Branch verwenden, können Sie es so konfigurieren, dass es Pull Requests verwendet und die Übersetzungen tatsächlich überprüft (was bei Sprachen, die Sie nicht kennen, problematisch sein könnte). Ein alternativer Ansatz besteht darin, diese Einschränkung für den Weblate-Push-Nutzer aufzuheben.

Auf GitHub kann dies zum Beispiel in der Repository-Konfiguration erfolgen:

../_images/github-protected.png

Mit anderen interagieren

Weblate macht es einfach, mit anderen über seine API zu interagieren.

Siehe auch

Weblates REST API

Lazy Commits

Weblate fasst Commits desselben Autors nach Möglichkeit in einem Commit zusammen. Dadurch wird die Anzahl der Commits stark reduziert, allerdings müssen Sie es eventuell explizit anweisen, die Commits durchzuführen, wenn Sie das VCS-Repository synchronisieren wollen, zum Beispiel für Merge (dies ist standardmäßig für die Gruppe Manager erlaubt, siehe Liste der Berechtigungen und integrierten Rollen).

Die Änderungen in diesem Modus werden übernommen, sobald eine der folgenden Bedingungen erfüllt ist:

Hinweis

Commits werden für jede Komponente erstellt. Wenn Sie also viele Komponenten haben, werden Sie trotzdem viele Commits sehen. In diesem Fall können Sie die Erweiterung Git-Commits zusammenfassen verwenden.

Wenn Sie Änderungen häufiger und ohne Überprüfung des Alters übertragen möchten, können Sie eine regelmäßige Aufgabe für das Ausführen eines Commits planen. Dies kann mit Periodic Tasks in der Django-Adminoberfläche erfolgen. Legen Sie zunächst das gewünschte Interval fest (zum Beispiel 120 Sekunden). Fügen Sie dann eine neue periodische Aufgabe hinzu und wählen Sie weblate.trans.tasks.commit_pending als Task mit {"hours": 0} als Keyword Arguments und dem gewünschten Intervall.

Repository mit Skripten verarbeiten

Die Art und Weise, wie Weblate mit dem Repository interagiert, kann mit Erweiterungen angepasst werden. Konsultieren Sie Ausführen von Skripten der Erweiterung für Informationen darüber, wie man externe Skripte durch Erweiterungen ausführt.

Übersetzungen aller Komponenten gleich halten

Wenn Sie mehrere Übersetzungskomponenten haben, möchten Sie möglicherweise sicherstellen, dass die selben Zeichenketten dieselbe Übersetzung haben. Dies kann auf mehreren Ebenen erreicht werden.

Übersetzungsweitergabe

Wenn Verbreitung von Übersetzungen erlauben aktiviert ist (was die Voreinstellung ist, siehe Komponentenkonfiguration), werden alle neuen Übersetzungen automatisch in allen Komponenten mit übereinstimmenden Zeichenketten durchgeführt. Solche Übersetzungen werden dem aktuell übersetzenden Benutzer in allen Komponenten korrekt zugeordnet.

Bemerkung

Die Übersetzungsweitergabe erfordert, dass der Schlüssel mit einsprachigen Übersetzungsformaten übereinstimmt, daher sollten Sie dies bei der Erstellung von Übersetzungsschlüsseln berücksichtigen.

Konsistenzprüfung

Die Prüfung Inkonsistent wird immer dann ausgelöst, wenn die Zeichenketten unterschiedlich sind. Sie können dies nutzen, um solche Unterschiede manuell zu überprüfen und die richtige Übersetzung zu wählen.

Automatische Übersetzung

Die automatische Übersetzung basierend auf verschiedenen Komponenten kann eine Möglichkeit sein, die Übersetzungen zwischen den Komponenten zu synchronisieren. Sie können es entweder manuell auslösen (siehe Automatische Übersetzung) oder es automatisch bei der Aktualisierung des Repositorys mit Hilfe einer Erweiterung laufen lassen (siehe Automatische Übersetzung).