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.
Das Git-Repository so einrichten, dass es Weblate über jede Änderung informiert, siehe Benachrichtigungs-Hooks für Informationen, wie man das macht.
Eine Push-URL in der Komponentenkonfiguration in Weblate setzen, damit Weblate Änderungen in das Repository pushen kann.
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 Auf Repositorys zugreifen 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ü Operationen 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
Weblate uses shallow clones by default to reduce cloning time and disk
usage. Because of this, the workflow below works best when you start from an
up-to-date checkout of the upstream repository. If you clone directly from
the exported Weblate repository, or if your upstream checkout is missing
recent commits, git remote update weblate can fail with errors such as
warning: no common commits, bad revision, or missing objects. This
does not necessarily mean that Weblate and the upstream repository have
conflicting changes. Administrators who want to make this workflow more
reliable can adjust VCS_CLONE_DEPTH.
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.
Bemerkung
Weblate serves the Git repository itself, but it does not serve Git LFS
objects. For repositories using Git LFS, clone from the upstream repository
and add Weblate as another remote. If you only need Git-tracked files, you
can clone from Weblate with GIT_LFS_SKIP_SMUDGE=1 to skip downloading
Git LFS objects.
The workflow usually looks like this when you start from an up-to-date checkout of the upstream repository:
# Open an existing up-to-date 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 auseinanderliegen 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 Lokalisierungsdateiformate). 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.
Ein Repository mit Ihren Übersetzungsdateien erstellen.
Dies als Submodul zu Ihrem Code hinzufügen:
git submodule add git@example.com:project-translations.git path/to/translations
Weblate mit diesem Repository verlinken, es benötigt keinen Zugriff mehr auf das Repository mit Ihrem Quellcode.
Das Haupt-Repository mit Übersetzungen aus Weblate aktualisieren:
git submodule update --remote path/to/translations
Für weitere Details berücksichtigen 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/.
Siehe auch
Warum werden alle Commits von Weblate <noreply@weblate.org> committet?¶
Weblate verwendet Weblate <noreply@weblate.org> als Standard-Committer für alle Commits, das durch DEFAULT_COMMITER_EMAIL und DEFAULT_COMMITER_NAME konfiguriert wird. Dies ist eine technische Kennung, die zeigt, dass der Commit durch Weblate verarbeitet wurde.
Der Autor jedes Commits wird jedoch korrekt als der einzelne Benutzer erfasst, der die Übersetzung vorgenommen hat (wenn Git verwendet wird). Das bedeutet, dass Sie sehen können, wer jede Zeichenkette tatsächlich übersetzt hat, indem Sie das Commit-Autorenfeld untersuchen. Das Gleiche gilt für Mercurial; nur Subversion verfügt nicht über diese Möglichkeit.
Bemerkung
In Git wird zwischen dem Committer (der das Commit-Objekt erstellt hat) und dem Autor (der die Änderungen vorgenommen hat) unterschieden. Weblate fungiert als Committer, während die Zuordnung der einzelnen Übersetzer zu den Autoren erhalten bleibt.
Bei Commits, bei denen die Urheberschaft nicht ermittelt werden kann (z. B. bei automatischen Änderungen aus anonymen Vorschlägen oder maschinelle Übersetzungsergebnisse), wird als Autor der anonyme Benutzer angegeben. Sie können den Namen und die E-Mail des anonymen Benutzers unter ANONYMOUS_USER_NAME konfigurieren.
Siehe auch
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:
Die betroffene Komponente in Weblate sperren.
Alle ausstehenden Änderungen committen und diese im Upstream-Repository zusammenführen.
Den Empfang von Webhooks für die Projektkonfiguration deaktivieren; dies verhindert, dass Weblate Änderungen im Repository sofort sieht.
Alle notwendigen Änderungen im Projektarchiv durchführen (z. B. mit git mv) und diese in das Upstream-Repository pushen.
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.
Die Komponente entsperren und die Hooks in der Projektkonfiguration wieder aktivieren.
Hinweis
Es könnte sinnvoll sein, vor solchen einschneidenden Änderungen Sicherungen auf Projektebene auszuführen.
Anwendung¶
Wie überprüft man die Übersetzungen anderer?¶
Es gibt mehrere überprüfungsbasierte Arbeitsabläufe in Weblate, siehe Übersetzungsabläufe.
Sie können alle vorgenommenen Änderungen in Benachrichtigungen abonnieren und dann die Beiträge anderer per E-Mail überprüfen, sobald sie eingehen.
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.
Siehe auch
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 bestehende Ü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.
Siehe auch
Wie kann ich aktualisierte POT-Dateien mit PO-Übersetzungen zusammenführen?¶
Unter Zielsprachedateien aktualisieren finden Sie Informationen zum Aktualisieren von PO-Dateien, wenn sich die POT-Vorlage ändert.
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 Schreibrichtung.
Es steht Ihnen frei, Ihre eigenen Sprachen in der Adminoberfläche zu definieren, Sie müssen nur die entsprechenden Informationen angeben.
Siehe auch
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:
Die Übersetzungskomponente in Das lokale VCS-Repository verwalten sperren.
Ausstehende Änderungen in Das lokale VCS-Repository verwalten committen.
Weblate-Änderungen im Upstream-Repository zusammenführen.
Den Empfang von Aktualisierungen über Hooks mit Hooks aktivieren deaktivieren.
Das Umbenennen der Dateien im Repository durchführen.
Die Komponentenkonfiguration aktualisieren, damit sie den neuen Dateinamen entspricht.
Update-Hooks aktivieren und die Komponente entsperren.
Hinweis
Es könnte sinnvoll sein, vor solchen einschneidenden Änderungen Sicherungen auf Projektebene auszuführen.
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
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"]
Siehe auch
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 Sprachfilter 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 Sprachcodes analysieren für weitere Details.
Funktionen¶
Unterstützt Weblate auch andere VCS als Git und Mercurial?¶
Weblate currently does not have native support for anything other than Git (with extended support for GitHub-Pull-Requests, Gerrit review requests, and Subversion) and Mercurial, but it is possible to write backends for other VCSes.
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.
Siehe auch
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.
Siehe auch
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.