Häufig gestellte Fragen

Konfiguration

Wie erstellt man einen automatisierten Arbeitsablauf?

Weblate kann alle Übersetzungsaufgaben halbautomatisch für Sie erledigen. Wenn Sie Push-Zugriff auf Ihr Repository erlauben, können die Übersetzungen ohne Interaktion erfolgen, es sei denn, es tritt ein Merge-Konflikt auf.

  1. Das Git-Repository so einrichten, dass es Weblate über jede Änderung informiert, siehe Benachrichtigungs-Hooks für Informationen, wie man das macht.

  2. Eine Push-URL in der Komponentenkonfiguration in Weblate setzen, damit Weblate Änderungen in das Repository pushen kann.

  3. Bei Commit gleichzeitig Pushen in der Komponentenkonfiguration in Weblate aktivieren, damit Weblate Änderungen in das Repository überträgt, sobald diese bei Weblate auftreten.

Wie greift man über SSH auf Repositorys zu?

Bitte lesen Sie Zugriff auf Repositorys für Informationen zur Einrichtung von SSH-Schlüsseln.

Wie behebt man Merge-Konflikte in Übersetzungen?

Merge-Konflikte treten gelegentlich auf, wenn die Übersetzungsdatei gleichzeitig in Weblate und im Upstream-Repository geändert wird. Sie können dies in der Regel vermeiden, indem Sie die Weblate-Übersetzungen zusammenführen, bevor Sie Änderungen an den Übersetzungsdateien vornehmen (z. B. bevor msgmerge ausgeführt wird). Teilen Sie Weblate einfach mit, dass alle ausstehenden Übersetzungen committet werden sollen (dies kann unter Repository-Wartung im Menü Verwalten erfolgen) und führen Sie das Repository zusammen (wenn der automatische Push nicht aktiviert ist).

Wenn Sie bereits auf einen Merge-Konflikt gestoßen sind, ist es am einfachsten, alle Konflikte lokal auf Ihrem Rechner zu lösen, indem Sie Weblate als Remote-Repository hinzufügen, es mit Upstream zusammenführen und alle Konflikte beheben. Sobald Sie die Änderungen pushen, kann Weblate die zusammengeführte Version ohne weitere besondere Maßnahmen verwenden.

Bemerkung

Abhängig von Ihrer Einrichtung kann der Zugriff auf das Weblate-Repository eine Authentifizierung erfordern. Wenn Sie den integrierten Git-Exporter in Weblate verwenden, authentifizieren Sie sich mit Ihrem Benutzernamen und dem API-Schlüssel.

# Open an existing checkout of the upstream repository or perform a fresh one:
git clone UPSTREAM_REPOSITORY_URL
cd REPO
# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/

# Update weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts:
edit …
git add …
…
git commit

# Rebase changes (if Weblate is configured to do rebases)
git rebase origin/main

# Push changes to upstream repository, Weblate will fetch merge from there:
git push

# Open Weblate for translation:
wlc unlock

Wenn Sie mehrere Branches in Weblate verwenden, können Sie das Gleiche für alle tun:

# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second

# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit

# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit

# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push

Im Falle von gettext-PO-Dateien gibt es eine Möglichkeit, Konflikte halbautomatisch zusammenzuführen:

Rufen Sie einen lokalen Klon des Weblate-Git-Repositorys ab und behalten Sie ihn. Holen Sie außerdem einen zweiten frischen lokalen Klon des Upstream-Git-Repositorys (d. h. Es werden zwei Kopien des Upstream-Git-Repositorys benötigt: Eine intakte und eine Arbeitskopie):

# Add remote:
git remote add weblate /path/to/weblate/snapshot/

# Update Weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
    msgcat --use-first /path/to/weblate/snapshot/$PO\
               /path/to/upstream/snapshot/$PO -o $PO.merge
    msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
    rm $PO.merge
    git add $PO
done
git commit

# Push changes to the upstream repository, Weblate will fetch merge from there:
git push

Wie übersetzt man mehrere Branches auf einmal?

Weblate unterstützt das Pushen von Übersetzungsänderungen innerhalb einer Projektkonfiguration. Für jede Komponentenkonfiguration, die dies aktiviert hat (Standardeinstellung), wird die vorgenommene Änderung automatisch an andere Komponenten weitergegeben. Auf diese Weise werden die Übersetzungen synchron gehalten, auch wenn die Branches selbst schon sehr weit auseinander liegen und es nicht möglich ist, Übersetzungsänderungen einfach zwischen ihnen zusammenzuführen.

Sobald Sie die Änderungen von Weblate zusammenführen, müssen Sie diese Branches (je nach Ihrem Entwicklungsablauf) zusammenführen und die Unterschiede verwerfen:

git merge -s ours origin/maintenance

Wie übersetzt man plattformübergreifende Projekte?

Weblate unterstützt eine Vielzahl von Dateiformaten (siehe Unterstützte Dateiformate). Am einfachsten ist es, das native Format für jede Plattform zu verwenden.

Sobald Sie alle Plattform-Übersetzungsdateien als Komponenten in einem Projekt hinzugefügt haben (siehe Übersetzungsprojekte und Komponenten hinzufügen), können Sie die Übersetzungsweitergabe nutzen (standardmäßig aktiviert und kann in der Komponentenkonfiguration ausgeschaltet werden), um Zeichenketten für alle Plattformen auf einmal zu übersetzen.

Wie exportiert man das von Weblate verwendete Git-Repository?

Das Repository ist nichts Besonderes, es befindet sich unter dem Verzeichnis DATA_DIR und heißt vcs/<project>/<component>/. Wenn Sie SSH-Zugang zu diesem Rechner haben, können Sie das Repository direkt verwenden.

Für den anonymen Zugriff können Sie einen Git-Server betreiben, der das Repository für die Außenwelt bereitstellt.

Alternativ können Sie auch Git-Exporter innerhalb von Weblate verwenden, um dies zu automatisieren.

Welche Möglichkeiten gibt es, um Änderungen wieder Upstream zu pushen?

Das hängt stark von Ihrer Einrichtung ab, Weblate ist in diesem Bereich recht flexibel. Hier sind Beispiele für einige Arbeitsabläufe, die mit Weblate genutzt werden:

  • Weblate pusht und führt Änderungen automatisch zusammen (siehe Wie erstellt man einen automatisierten Arbeitsablauf?).

  • Sie weisen Weblate manuell an, einen Push durchzuführen (es benötigt Push-Zugriff auf das Upstream-Repository).

  • Jemand führt Änderungen aus dem Weblate-Git-Repository manuell mit dem Upstream-Repository zusammen.

  • Jemand schreibt den von Weblate erstellten Verlauf um (z. B. durch Entfernen von Merge-Commits), führt die Änderungen zusammen und weist Weblate an, den Inhalt im Upstream-Repository zurückzusetzen.

Natürlich steht es Ihnen frei, all dies nach Belieben zu mischen.

Wie beschränkt man den Weblate-Zugriff auf Übersetzungen, ohne den Quellcode freizugeben?

Sie können git submodule verwenden, um Übersetzungen vom Quellcode zu trennen und sie trotzdem unter Versionsverwaltung zu haben.

  1. Ein Repository mit Ihren Übersetzungsdateien erstellen.

  2. Dies als Submodul zu Ihrem Code hinzufügen:

    git submodule add git@example.com:project-translations.git path/to/translations
    
  3. Weblate mit diesem Repository verlinken, es benötigt keinen Zugriff mehr auf das Repository mit Ihrem Quellcode.

  4. Das Haupt-Repository mit Übersetzungen aus Weblate aktualisieren:

    git submodule update --remote path/to/translations
    

Für weitere Details konsultieren Sie bitte die Dokumentation git submodule.

Wie überprüft man ob Weblate richtig eingerichtet ist?

Weblate enthält eine Reihe von Konfigurationsprüfungen, die Sie in der Adminoberfläche sehen können. Folgen Sie einfach dem Link Leistungsbericht in der Adminoberfläche oder öffnen Sie direkt die URL /manage/performance/.

Warum werden alle Commits von Weblate <noreply@weblate.org> committet?

Dies ist der Standard-Committer-Name, konfiguriert durch DEFAULT_COMMITER_EMAIL und DEFAULT_COMMITER_NAME.

Der Autor eines jeden Commits (sofern das zugrunde liegende VCS dies unterstützt) wird immer noch korrekt als der Benutzer erfasst, der die Übersetzung vorgenommen hat.

Bei Commits, deren Urheberschaft nicht bekannt ist (z. B. anonyme Vorschläge oder maschinelle Übersetzungsergebnisse), wird die Urheberschaft dem anonymen Benutzer zugeschrieben (siehe ANONYMOUS_USER_NAME). Sie können den Namen und die E-Mail in der Verwaltungsoberfläche ändern.

Wie verschiebt man Dateien im Repository, ohne den Verlauf in Weblate zu verlieren?

Um den Verlauf, die Kommentare oder Bildschirmfotos, die mit Zeichenketten verknüpft sind, nach einer Änderung des Dateispeicherorts beizubehalten, müssen Sie sicherstellen, dass diese Zeichenketten in Weblate niemals gelöscht werden. Dies kann passieren, wenn das Weblate-Repository aktualisiert wird, die Komponentenkonfiguration aber noch auf die alten Dateien verweist. Dies führt dazu, dass Weblate davon ausgeht, dass es alle Übersetzungen löschen sollte.

Die Lösung für dieses Problem besteht darin, den Vorgang mit Weblate zu synchronisieren:

  1. Die betroffene Komponente in Weblate sperren.

  2. Alle ausstehenden Änderungen committen und diese im Upstream-Repository zusammenführen.

  3. Den Empfang von Webhooks für die Projektkonfiguration deaktivieren; dies verhindert, dass Weblate Änderungen im Repository sofort sieht.

  4. Alle notwendigen Änderungen im Projektarchiv durchführen (z. B. mit git mv) und diese in das Upstream-Repository pushen.

  5. Die Komponentenkonfiguration so ändern, dass sie mit der neuen Konfiguration übereinstimmt; wenn Sie die Konfiguration ändern, wird Weblate das aktualisierte Repository abrufen und die geänderten Orte bemerken, während die vorhandenen Zeichenketten erhalten bleiben.

  6. Die Komponente entsperren und die Hooks in der Projektkonfiguration wieder aktivieren.

Anwendung

Wie überprüft man die Übersetzungen anderer?

  • Es gibt mehrere überprüfungsbasierte Arbeitsabläufe in Weblate, siehe Übersetzungsabläufe.

  • Sie können alle Änderungen, die in Abonnements gemacht werden, abonnieren und dann andere Beiträge, die per E-Mail eintreffen, überprüfen.

  • Am unteren Rand der Übersetzungsansicht steht ein Überprüfungstool zur Verfügung, mit dem Sie Übersetzungen durchsuchen können, die seit einem bestimmten Datum von anderen erstellt wurden.

Wie gibt man Rückmeldung zu einer Ausgangszeichenkette?

Auf den Kontextreitern unterhalb der Übersetzung können Sie den Reiter Kommentare verwenden, um Rückmeldung zu einer Ausgangszeichenkette zu geben oder sie mit anderen Übersetzern zu diskutieren.

Wie verwendet man bestehende Übersetzungen beim Übersetzen?

  • Dank des gemeinsamen Übersetzungsspeichers können alle Übersetzungen innerhalb von Weblate verwendet werden.

  • Sie können vorhandene Übersetzungsspeicherdateien in Weblate importieren.

  • Verwenden Sie die Importfunktion, um Kompendien als Übersetzungen, Vorschläge oder zu überprüfende Übersetzungen zu laden. Dies ist der beste Ansatz für eine einmalige Übersetzung mithilfe eines Kompendiums oder einer ähnlichen Übersetzungsdatenbank.

  • Sie können tmserver mit allen Datenbanken, die Sie haben, einrichten und Weblate diesen verwenden lassen. Dies ist gut, wenn Sie ihn während der Übersetzung mehrmals verwenden wollen.

  • Eine weitere Möglichkeit besteht darin, alle zugehörigen Projekte in einer einzigen Weblate-Instanz zu übersetzen, wodurch automatisch auch Übersetzungen aus anderen Projekten übernommen werden.

Aktualisiert Weblate neben den Übersetzungen auch die Übersetzungsdateien?

Weblate versucht, Änderungen in Übersetzungsdateien auf ein Minimum zu beschränken. Bei einigen Dateiformaten kann dies leider zu einer Neuformatierung der Datei führen. Wenn Sie die Datei auf Ihre Weise formatieren möchten, verwenden Sie bitte einen Pre-Commit-Hook dafür.

Woher kommen die Sprachdefinitionen und wie fügt man eigene Definitionen hinzu?

Die grundlegenden Sprachdefinitionen sind in Weblate und Translate-toolkit enthalten. Dies deckt mehr als 150 Sprachen ab und enthält Informationen über Pluralformen oder Leserichtung.

Es steht Ihnen frei, Ihre eigenen Sprachen in der Adminoberfläche zu definieren, Sie müssen nur die entsprechenden Informationen angeben.

Siehe auch

Sprachdefinitionen

Kann Weblate Änderungen in einer ungenauen Zeichenkette hervorheben?

Weblate unterstützt dies, benötigt jedoch die Daten, um den Unterschied aufzuzeigen.

Für gettext-PO-Dateien müssen Sie den Parameter --previous an msgmerge übergeben, wenn Sie z. B. PO-Dateien aktualisieren:

msgmerge --previous -U po/cs.po po/phpmyadmin.pot

Bei einsprachigen Übersetzungen kann Weblate die vorherige Zeichenkette anhand der ID finden, so dass es die Unterschiede automatisch anzeigt.

Warum zeigt Weblate immer noch alte Übersetzungszeichenketten an, obwohl die Vorlage aktualisiert wurde?

Weblate versucht nicht, die Übersetzungsdateien in irgendeiner Weise zu manipulieren, außer dass es den Übersetzern das Übersetzen ermöglicht. Daher werden die übersetzbaren Dateien auch nicht aktualisiert, wenn die Vorlage oder der Quellcode geändert wurden. Sie müssen dies lediglich manuell tun und die Änderungen in das Repository pushen, Weblate übernimmt die Änderungen dann automatisch.

Bemerkung

Es ist in der Regel eine gute Idee, Änderungen in Weblate zusammenzuführen, bevor Sie die Übersetzungsdateien aktualisieren. Da es sonst in der Regel zu Merge-Konflikten kommt.

Wie benennt man Übersetzungsdateien um?

Beim Umbenennen von Dateien im Repository kann es vorkommen, dass Weblate dies als Entfernen und Hinzufügen von Dateien ansieht. Dies kann dazu führen, dass der Verlauf, die Kommentare und Vorschläge von Zeichenketten verloren gehen.

Um dies zu vermeiden, führen Sie die Umbenennung in den folgenden Schritten durch:

  1. Die Übersetzungskomponente in Verwalten des Repository der Versionsverwaltung sperren.

  2. Ausstehende Änderungen in Verwalten des Repository der Versionsverwaltung committen.

  3. Weblate-Änderungen im Upstream-Repository zusammenführen.

  4. Den Empfang von Aktualisierungen über Hooks mit Hooks aktivieren deaktivieren.

  5. Das Umbenennen der Dateien im Repository durchführen.

  6. Die Komponentenkonfiguration aktualisieren, damit sie den neuen Dateinamen entspricht.

  7. Update-Hooks aktivieren und die Komponente entsperren.

Fehlerbehebung

Anfragen schlagen manchmal mit der Fehlermeldung „zu viele offene Dateien“ fehl

Das passiert manchmal, wenn das Git-Repository zu groß wird und Sie viele davon haben. Das Komprimieren der Git-Repositorys verbessert diese Situation.

Der einfachste Weg, dies zu tun:

# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
    pushd $d
    git gc
    popd
done

Siehe auch

DATA_DIR

Beim Zugriff auf die Website erscheint die Fehlermeldung „Fehlerhafte Anfrage (400)“

Dies wird höchstwahrscheinlich durch nicht korrekt konfigurierte ALLOWED_HOSTS verursacht. Es muss alle Hostnamen enthalten, auf die Sie mit Ihrer Weblate-Installation zugreifen wollen. Zum Beispiel:

ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]

Was bedeutet „Es gibt mehrere Dateien für die einzelne Sprache (en)“?

Dies geschieht normalerweise, wenn Sie eine Übersetzungsdatei für die Ausgangssprache haben. Weblate verfolgt die Ausgangszeichenketten und reserviert die Ausgangssprache für diese. Die zusätzliche Datei für dieselbe Sprache wird nicht verarbeitet.

  • Falls die Übersetzung in die Ausgangssprache gewünscht ist, ändern Sie bitte die Ausgangssprache in den Komponenteneinstellungen. Vielleicht möchten Sie Englisch (Entwickler) als Ausgangssprache verwenden, oder das Qualitäts-Gateway für die Ausgangszeichenketten nutzen.

  • Falls die Übersetzungsdatei für die Ausgangssprache nicht benötigt wird, entfernen Sie diese bitte aus dem Repository.

  • Falls die Übersetzungsdatei für die Ausgangssprache benötigt wird, aber von Weblate ignoriert werden soll, stellen Sie bitte den Sprachenfilter so ein, dass er sie ausschließt.

Hinweis

Möglicherweise erhalten Sie eine ähnliche Fehlermeldung auch für andere Sprachen. In diesem Fall ist der wahrscheinlichste Grund, dass mehrere Dateien einer einzigen Sprache in Weblate zugeordnet sind.

Dies kann dadurch verursacht werden, dass veraltete Sprachcodes zusammen mit neuen verwendet werden (ja und jp für Japanisch) oder sowohl länderspezifische als auch allgemeine Codes enthalten sind (fr und fr_FR). Siehe Analysieren von Sprachcodes für weitere Details.

Funktionen

Unterstützt Weblate auch andere VCS als Git und Mercurial?

Weblate bietet derzeit keine native Unterstützung für andere Versionsverwaltungen als Git (mit erweiterter Unterstützung für GitHub-Pull-Requests, Gerrit und Subversion) und Mercurial, aber es ist möglich, Backends für andere VCSen zu schreiben.

Sie können auch Git-Remote-Helfer in Git verwenden, um auf andere VCSen zuzugreifen.

Weblate unterstützt auch VCS-losen Betrieb, siehe Lokale Dateien.

Bemerkung

Für die native Unterstützung anderer VCSen setzt Weblate die Verwendung eines verteilten VCS voraus und könnte wahrscheinlich so angepasst werden, dass es auch mit anderen Systemen als Git und Mercurial funktioniert, aber jemand muss diese Unterstützung implementieren.

Wie erfolgt der Übersetzungsnachweis bei Weblate?

Jede in Weblate vorgenommene Änderung wird unter dem Namen des Übersetzers ins VCS committet. Auf diese Weise hat jede einzelne Änderung die richtige Urheberschaft und Sie können sie mit den üblichen VCS-Tools, die Sie für Code verwenden, nachverfolgen.

Zusätzlich, wenn das Format der Übersetzungsdatei dies unterstützt, wird der Name des Übersetzers im Header der Datei eingefügt.

Warum erzwingt Weblate die Anzeige aller PO-Dateien in einem einzigen Baum?

Weblate wurde so konzipiert, dass jede PO-Datei als einzelne Komponente dargestellt wird. Dies ist für Übersetzer von Vorteil, damit sie wissen, was sie tatsächlich übersetzen.

Geändert in Version 4.2: Übersetzer können alle Komponenten eines Projekts als Ganzes in eine bestimmte Sprache übersetzen.

Warum verwendet Weblate Sprachcodes wie sr_Latn oder zh_Hant?

Dies sind Sprachcodes, die von RFC 5646 definiert wurden, um besser anzuzeigen, dass es sich wirklich um verschiedene Sprachen handelt, anstatt der bisher falsch verwendeten Modifikatoren (für @latin-Varianten) oder Ländercodes (für Chinesisch).

Weblate versteht immer noch die herkömmlichen Sprachcodes und wird sie auf die aktuellen abbilden – zum Beispiel wird sr@latin als sr_Latn oder zh@CN als zh_Hans behandelt.

Bemerkung

Weblate verwendet standardmäßig Sprachcodes im POSIX-Stil mit Unterstrich, siehe Sprachdefinitionen für weitere Details.