Multi-Source-Entwicklung und Versionskontrolle

Die Arbeit mit Übersetzungsdateien in Umgebungen, in denen mehrere Entwickler an demselben Projekt mitwirken, erfordert eine konsistente Konfiguration und einen definierten Workflow für das Zusammenführen und die Versionskontrolle.

Voraussetzungen

Um einen ordnungsgemäßen Multi-Source-Entwicklungsworkflow mit dem Translator sicherzustellen, müssen alle Entwickler folgende Anforderungen erfüllen:

  • Alle Entwickler müssen die gleiche paramLang-Einstellung verwenden. Wenn die paramLang zwischen den Entwicklern abweicht, kann die Reihenfolge der Einträge in den generierten .ts-Dateien unterschiedlich sein, was einen Dateivergleich und das Zusammenführen unmöglich macht.
  • Der Konfig-Eintrag [general] translationSourceLang sollte für Unterprojekte explizit gesetzt werden, um eine mehrdeutige Quellsprach-Auflösung zu vermeiden.

Auflösung der Übersetzungsquellsprache

Der Translator bestimmt die Quellsprache für die Erzeugung der Übersetzungsdateien wie folgt:

  • Im Projekt: Der Konfig-Eintrag paramLang wird verwendet.
  • In Unterprojekten: Der Konfig-Eintrag translationSourceLang wird im config.level gesucht. Wenn nicht definiert, hängt das Verhalten vom Speicherort ab:
    • Unterhalb des WinCC OA-Installationsverzeichnisses (z.B. ein installiertes Add-on): en_US.utf8 wird als Standardsprache verwendet.
    • In anderen Verzeichnissen: Für jede Panel-Datei wird das erste LangText-Objekt ausgewertet. Wenn en_US.utf8 vorhanden ist, wird es verwendet; andernfalls wird die erste Sprache der Datei verwendet.

Zusammenführen von Übersetzungsdateien

Die Übersetzungs-Quelldateien (.ts) sind XML-basiert. Sie können daher mit standardmäßigen textbasierten Merge-Werkzeugen zusammengeführt werden. Da die .ts-Dateien normalerweise erweitert werden (neue Einträge werden am Ende hinzugefügt), führt paralleles Arbeiten am selben Unterprojekt in der Regel zu sauberen Text-Merges.

Wichtig:
Die kompilierten .qm-Dateien sind binär und können nicht zusammengeführt werden. Sie müssen nach dem Zusammenführen der .ts-Quelldateien neu erzeugt werden.

Der empfohlene Workflow zum Zusammenführen von Übersetzungen in einer Multi-Source-Umgebung:

  1. Stellen Sie sicher, dass alle Entwickler die gleiche paramLang-Konfiguration verwenden.
  2. Erzeugen oder aktualisieren Sie die .ts-Übersetzungsdateien über das Translator-Panel.
  3. Führen Sie die .ts-Dateien mit der standardmäßigen Text-Merge-Funktionalität Ihres Versionskontrollsystems zusammen.
  4. Erzeugen Sie nach dem Zusammenführen die .qm-Dateien neu, indem Sie im Translator-Panel auf .qm-Dateien erzeugen klicken.

Formatkonvertierung

Übersetzungsdateien können mit dem Kommandozeilenwerkzeug lconvert, das mit der Qt-Installation bereitgestellt wird, zwischen dem Qt-.ts-Format und dem XLIFF-Format (.xlf) konvertiert werden. Dies ist nützlich, wenn die Übersetzungsarbeit mit externen Werkzeugen durchgeführt wird, die XLIFF, aber nicht das Qt-.ts-Format unterstützen.

Eine .ts-Datei in XLIFF konvertieren:

lconvert -i project_de.ts -o project_de.xlf

Eine XLIFF-Datei zurück in das .ts-Format konvertieren:

lconvert -i project_de.xlf -o project_de.ts
Anmerkung:
Das Werkzeug lconvert befindet sich im Qt-bin-Verzeichnis innerhalb der WinCC OA-Installation. Die XLIFF-Versionen 1.1 und 1.2 werden unterstützt.

Nach der Rückkonvertierung in das .ts-Format muss die .qm-Datei neu erzeugt werden, um die Übersetzungen zur Laufzeit anzuwenden.

Arbeiten mit Git

Beachten Sie bei der Verwendung von Git für die Versionskontrolle von Übersetzungsdateien folgende Best Practices:

  • .ts-Dateien in das Repository committen. Dies sind die bearbeitbaren Quelldateien für Übersetzungen und können als Text zusammengeführt werden.
  • .qm-Dateien vor dem Commit neu erzeugen. Da .qm-Dateien binär sind, können sie nicht zusammengeführt werden. Führen Sie immer .qm-Dateien erzeugen (oder lrelease über die Kommandozeile) aus, bevor Sie committen, um sicherzustellen, dass die Binärdateien mit der aktuellen .ts-Quelle übereinstimmen.
  • Merge-Konflikte in .ts-Dateien manuell lösen. Wenn mehrere Entwickler dieselbe .ts-Datei gleichzeitig ändern, können Merge-Konflikte in der XML-Struktur auftreten. Lösen Sie diese mit einem Texteditor oder Merge-Werkzeug und stellen Sie sicher, dass das XML wohlgeformt bleibt.
  • Branch-Workflows berücksichtigen. Wenn Sie Übersetzungsdateien zwischen Branches zusammenführen (z.B. Support-Branches), führen Sie zuerst die .ts-Dateien zusammen und erzeugen Sie dann die .qm-Dateien auf dem Ziel-Branch neu.
Anmerkung:
Je mehr Entwickler gleichzeitig an derselben Übersetzungsdatei arbeiten, desto höher ist die Wahrscheinlichkeit von Merge-Konflikten. Für große Teams empfiehlt es sich, die Übersetzungsarbeit nach Unterprojekten aufzuteilen, um Konflikte zu minimieren.