Was kommt als Nächstes?

Die Entwicklung von Translate Files with AI geht weiter. Ich habe bereits einige Ideen und Wünsche auf meinem Schreibtisch. Hier eine Liste der wichtigsten geplanten neuen Funktionen.

Schauen Sie von Zeit zu Zeit vorbei! Ich werde diese Liste bei Bedarf ergänzen.

  • Speichern aller Einstellungen in Parametersätzen. Dies ist besonders nützlich bei sich wiederholenden oder ähnlichen Übersetzungsaufgaben.
  • Eine beliebige Anzahl von Abschnittsüberschriften und Abschnittsenden kann in Listen mit Auswahlfeldern gespeichert werden. Dadurch entfällt die Notwendigkeit, sich den Inhalt dieser Felder an anderer Stelle zu merken.
  • In allen Feldern können Kommentare zur Dokumentation der Eingaben eingegeben werden.
  • Die Auswahl der Quell- und Zielsprachen wird über Drop-Down-Felder möglich sein, in denen die Sprachen auch mit ihren Namen und nicht nur mit ihren Ländercodes aufgelistet werden. Das ist komfortabler.

Derzeit sind diese Themen alle erledigt.

.string-Dateien automatisch mit „Translate Files with AI“ übersetzen

Was ist eine .strings-Datei?

Eine .strings-Datei ist ein Textdateiformat, das in der Softwareentwicklung für die Lokalisierung von Texten auf Apple-Plattformen wie macOS, iOS und watchOS verwendet wird. Sie enthält Schlüssel/Wertpaare, um Zeichenketten für verschiedene Sprachen zu speichern, die in der Anwendung angezeigt werden. Dies erleichtert die Lokalisierung und Übersetzung der Anwendung in verschiedene Sprachen.

Hier sind zwei einfache Beispiele einer .strings-Datei:

/* Englisch */
"welcome_message" = "Welcome to our app!";
"login_button" = "Log In";
/* Deutsch */
"welcome_message" = "Willkommen in unserer App!";
"login_button" = "Anmelden";

Die Beispiele zeigen eine .strings-Datei mit Zeichenketten für zwei Sprachen: Englisch und Deutsch.

Im ersten Beispiel sind die Schlüssel „welcome_message“ und „login_button“ definiert. Für die englische Sprache sind die Werte der Schlüssel „Welcome to our app!“ und „Log In“.

Im zweiten Beispiel sind die gleichen Schlüssel für die deutsche Sprache definiert. Die Werte der Schlüssel sind hier „Willkommen in unserer App!“ und „Anmelden“.

Wenn die Anwendung auf einem Gerät mit Englisch als Systemsprache läuft, verwendet sie die englischen Zeichenfolgen. Läuft sie jedoch auf einem Gerät mit Deutsch als Systemsprache, verwendet sie die deutschen Texte. Auf diese Weise kann die Anwendung für verschiedene Länder lokalisiert und angepasst werden.

Die Aufgabe

Wenn eine Ausgangssprache in mehrere Zielsprachen übersetzt werden soll, wird die Arbeit sehr aufwendig. Die Erfahrung zeigt, dass bei manueller Vorgehensweise viele einzelne Arbeitsschritte notwendig sind, die viel Zeit in Anspruch nehmen. Hier kommt die App Translate Files with AI ins Spiel, die es für macOS und Windows gibt.

Translate Files with AI ist ein Programm zum automatisierten Übersetzen von Text in Textdateien in eine oder mehrere Sprachen. Diese Software verwendet DeepL, um die Texte zu übersetzen. DeepL ist derzeit der weltbeste Übersetzungsdienst und liefert aussagekräftige, verständliche Übersetzungen.

Die Vorgehensweise

Definition des zu übersetzenden Textes

In Translate Files with AI gibt es 5 Eingabefelder, in die reguläre Ausdrücke eingegeben werden können, die den zu übersetzenden Text beschreiben:

  1. Abschnittsüberschrift und Abschnittsende
    beschreiben das Format einer Nachricht oder eines Textes in der Datei. Im obigen Beispiel entspricht die Abschnittsüberschrift den Schlüsseln "welcome_message" = und "login_button" = und das Abschnittsende der Zeichenfolge ";.
  2. Zu ignorierende Abschnitte und Zu übersetzende Abschnitte
    beschreiben die Abschnitte bzw. Schlüssel, deren Wert bzw. Inhalt entsprechend zu behandeln ist.
  3. Zu ignorierende Zeichenfolgen und Zeichen
    Hier wird angegeben, welche Teile des Inhalts einzelner Abschnitte von der Übersetzung ausgeschlossen werden sollen.

Um den Text in einer .strings-Datei zu übersetzen, verwende ich die folgenden Werte in den einzelnen Eingabefeldern:

EingabefeldInhaltBeschreibung
Abschnittsüberschrift[^\n+][\S ]+= "Der Text des Schlüssels im Format
Ein oder mehrere Zeilenvorschübe, gefolgt vom Text des Schlüssels, endend mit den Zeichen =_"_
(Gleich, Leerzeichen, Gänsefüßchen, Leerzeichen)
Abschnittsende";(.//.)*\nDie Beschreibung des Endes der Schlüsselwerte im Format
Gänsefüßchen, Semikolon, 0 bis beliebig viele Zeichen, Zeilenvorschub
Zu ignorierende Abschnittebeliebig
Zu übersetzende Abschnittebeliebig
Zu ignorierende Zeichenfolgen und Zeichenhttps://.*?[ \n]

/*(.?\n)*/


[^/]*//.*$


“%@”
%@
%lld
Links,

Kommentare innerhalb von /* und */,

Kommentare, die mit // beginnen,

Zeichenfolgen, die im Wert eines Abschnitts in Anführungszeichen eingeschlossen sind,

Ausführung

Wählen Sie nun die Ausgangssprache und eine oder mehrere Zielsprachen des zu übersetzenden Textes aus und ziehen Sie den Ordner mit der Ausgangsdatei in das Programm. Es ist wichtig, dass der Name der Ausgangsdatei den Code der Ausgangssprache enthält, z. B. MeineAppText-DE.strings.

Ich habe für diesen Test die Datei https://github.com/coteditor/CotEditor/blob/main/CotEditor/en-GB.lproj/Localizable.strings von CotEditor heruntergeladen und sie in en.strings umbenannt.

Durch Anklicken der Schaltflächen  Nutzung schätzen  und dann  Übersetzung simulieren  wird das Simulationsfenster des Programms angezeigt.

Im linken Teil dieses Fensters wird der Originaltext und im rechten Teil der Text der simulierten Übersetzung angezeigt. Die Bedeutung der einzelnen Farben:

  • Kommentare
  • Schlüsselelemente
  • Zu übersetzender Text
  • Übersetzter Text
  • Von der Übersetzung ausgeschlossener Text

Da es sich um eine Simulation handelt, wird der Text im rechten Teil des Fensters in der Originalsprache angezeigt. Kommentare werden nicht übersetzt und auch nicht in den übersetzten Text eingefügt, weil  ☑︎ Unübersetzte Abschnitte übernehmen  nicht ausgewählt wurde. Andernfalls würden die Kommentare ohne Übersetzung in den übersetzten Text eingefügt, wie in der folgenden Abbildung der Simulation zu sehen ist.

Nach dem Schließen des Fensters kann die Übersetzung durch Abwählen von  ☑︎Nicht online übersetzen, nur simulieren  und anschließend durch Anklicken von  Übersetzen und sichern  gestartet werden.

Schneller übersetzen

Die Übersetzung dieses Beispieltextes für eine Sprache dauert ca. 2 Minuten. Soll die Datei in mehrere Sprachen übersetzt werden, dauert es entsprechend länger.

Warum ist das so?

Der Grund für diese lange Übersetzungszeit liegt darin, dass jeder Absatz einzeln an den Server von DeepL geschickt, dort übersetzt und anschließend zurück gesendet wird. Da es sich um eine relativ große Anzahl von Absätzen handelt, ist das Verhältnis von Nutzdaten zum Overhead extrem ungünstig.

Wie kann man das umgehen?

Da bei der ersten Übersetzung nicht Absatz für Absatz vorgegangen werden muss, kann die gesamte Datei auf einmal übersetzt werden. Dazu wird der Inhalt der Eingabefelder Abschnittsüberschrift und Abschnittsende gelöscht und in das Eingabefeld Zu ignorierende Zeichenketten und Zeichen eingetragen. Die Übersetzung der gesamten Datei dauert nun weniger als 3 Sekunden. Das ist ein enormer Fortschritt.

Für zukünftige Änderungen an bestehenden Übersetzungen ist es jedoch sinnvoll, die oben beschriebene Methode zu verwenden und die Überschriften der zu übersetzenden Abschnitte im Eingabefeld Zu übersetzende Abschnitte anzugeben. Dadurch wird nicht der gesamte Text noch einmal übersetzt und das Kontingent bei DeepL wesentlich weniger belastet.

Einige Absätze werden nicht übersetzt

Dies geschieht bei der abschnittsweisen Übersetzung, wenn dieselben Abschnittsüberschriften mehrfach in einer Datei verwendet werden. In diesem Fall wird tatsächlich nur der letzte Abschnitt übersetzt. In der Regel sollte dies jedoch kein Problem darstellen, da die Abschnittsüberschrift als Schlüssel verwendet wird und ein mehrfaches Vorkommen daher nicht sinnvoll ist.

Fazit

Mit Translate Files with AI ist es einfach und schnell möglich, .string-Dateien in bis zu 30 verschiedene Sprachen zu übersetzen. Ebenso einfach ist es, die Übersetzungen bei späteren Änderungen auf dem neuesten Stand zu halten.