Um eine veraltete Übersetzung zu finden, die weiterhin als übersetzt angezeigt wird, verfolge die geänderte Ausgangsnachricht bis zu ihrem Eintrag im String Catalog, erstelle einen Build und vergleiche den Wortlaut. Ein grünes Häkchen allein kann eine bereits festgestellte Abweichung nicht beheben.

Dieser Ablauf richtet sich an Personen, die eine Mac-App in Xcode mit einem vorhandenen .xcstrings-Katalog pflegen. Ziel ist es, nach einer Änderung am englischen Ausgangstext die Übersetzungen zu erkennen, die geprüft werden müssen, brauchbare bestehende Formulierungen beizubehalten und die korrigierte Nachricht in der laufenden App zu überprüfen.

Was sollte passieren, wenn sich eine Ausgangsnachricht ändert?

Apple dokumentiert, dass eine Änderung an einem Ausgangstext die Übersetzungen zur Überprüfung markiert. Die Statusangaben im Katalog unterscheiden nicht übersetzte Zeichenfolgen (New), Zeichenfolgen, die geprüft werden müssen (Needs Review), und übersetzte Zeichenfolgen mit einem grünen Häkchen. Der separate Status Stale bedeutet, dass Xcode eine zuvor übersetzte Zeichenfolge im Code nicht mehr finden konnte. String Catalogs entdecken

Diese Begriffe sind für die Diagnose dieses Problems wichtig. Eine veraltete Übersetzung einer Nachricht, die von deiner App weiterhin verwendet wird, muss überprüft werden. Wenn du nur nach dem Katalogstatus Stale suchst, entgeht sie dir möglicherweise.

Das dokumentierte Verhalten bei Änderungen am Ausgangstext gibt ein erwartetes Ergebnis vor, erklärt jedoch nicht, warum ein bestimmter Eintrag seinen Status „Übersetzt“ behalten hat. Untersuche in diesem Fall die Beziehung zwischen dem bearbeiteten Ausgangstext und dem Katalog, bevor du das Häkchen als ausreichenden Nachweis für einen aktuellen Wortlaut wertest.

Finde die genaue Nachricht, bevor du Übersetzungen überprüfst

Beginne mit einer geänderten Nachricht. Notiere ihren vorherigen englischen Wortlaut, den aktuellen Wortlaut, falls abweichend den Lookup-Schlüssel und den Namen des Katalogs. Diese kleine Vergleichsnotiz ist eine empfohlene Diagnosehilfe und keine Xcode-Funktion. Sie bietet einen konkreten Anhaltspunkt, wenn mehrere Einträge ähnlich aussehen.

Angenommen, eine Schaltfläche auf dem Mac zeigte zuvor Open item an und zeigt jetzt Open selected items an. Zu prüfen ist, ob jede Übersetzung weiterhin das Öffnen der aktuellen Auswahl beschreibt, auch wenn diese mehrere Elemente enthalten kann. Nur eine Übersetzung für das Wort Open zu finden, beantwortet diese Frage nicht.

Lookup-Schlüssel und angezeigten Wortlaut auseinanderhalten

Swift unterstützt einen expliziten statischen Lookup-Schlüssel mit einem separaten defaultValue. Dieser Standardwert ist üblicherweise Text in der Entwicklungssprache und wird verwendet, wenn die Suche fehlschlägt. Ein comment liefert den Übersetzenden Kontext. Wenn keine Tabelle angegeben ist, verwendet die Suche Localizable; wenn kein Bundle angegeben ist, wird das Haupt-Bundle der App durchsucht. Swifts Initialisierer für Zeichenfolgen mit explizitem Schlüssel

Nutze diesen beispielhaften Nachrichteneintrag, um die Bestandteile voneinander zu unterscheiden. Es handelt sich um künstliche Beispielwerte, nicht um eine Katalogdatei oder ein ausführbares Programm.

Bestandteil Vor der Änderung Nach der Änderung
Lookup-Schlüssel selection.open selection.open
Englischer Ausgangstext Open item Open selected items
Kontext für Übersetzende Button that opens one item Button that opens every item in the current selection
Katalogtabelle Localizable Localizable

Hier bleibt der Bezeichner gleich, während sich die Nachricht ändert. Bei einer Prüfung, die nur die Schlüsselnamen vergleicht, würde diese Änderung übersehen. Vergleiche auch den Ausgangstext und den Kontext.

Einige Swift-Aufrufe zur Lokalisierung verwenden stattdessen den Wortlaut in der Entwicklungssprache als Schlüssel. Apple beschreibt String.LocalizationValue als Unterstützung für dieses Modell, auch bei Interpolation. Bei dieser Vorgehensweise kann sich durch eine Änderung des Wortlauts auch der Lookup-Schlüssel ändern. Prüfe daher sowohl den alten als auch den neuen Eintrag, statt anzunehmen, dass die Übersetzung an denselben Bezeichner gebunden bleibt. String.LocalizationValue

Erstelle einen Build und prüfe den Quelltextort

Wähle in Xcode Product > Build und anschließend den betreffenden Katalog im Projektnavigator aus. Apple dokumentiert, dass Builds Kataloge mit Änderungen an lokalisierbaren Zeichenfolgen im Code aktualisieren. Wähle Editor > Assistant und dann den Schlüssel aus, um seinen Quelltextort anzuzeigen. Text mit einem String Catalog lokalisieren und variieren

Vergleiche den Ausgangstext im Katalog mit der beabsichtigten Änderung. Wenn der Katalog weiterhin Open item enthält, kläre zunächst, warum der neue Ausgangstext diesen Eintrag noch nicht erreicht hat. Eine Zielübersetzung mit dem alten Ausgangstext abzugleichen, würde das ursprüngliche Problem nicht beheben.

Prüfe die Tabelle und das Bundle im Lokalisierungsaufruf, besonders wenn das Projekt mehrere Kataloge oder Module enthält. Apple dokumentiert, dass ein Tabellenname einen Katalog auswählt und für Zeichenfolgen außerhalb des Haupt-Bundles der App ein geeignetes Bundle angegeben werden kann. Apple empfiehlt außerdem lokalisierbare APIs, damit Xcode benutzerseitig sichtbaren Text erkennen kann. Den Text deiner App für die Übersetzung vorbereiten

Bei einem manuell verwalteten Eintrag solltest du den Ausgangstext direkt prüfen und pflegen: Apple weist darauf hin, dass die Synchronisierung beim Build manuell verwaltete Zeichenfolgen weder aktualisiert noch entfernt. Erwarte nicht, dass allein ein neuer Build den Eintrag aktualisiert. String Catalogs entdecken

Vergleiche die Bedeutung mithilfe einer Entscheidungstabelle für Änderungen am Ausgangstext

Sobald der aktuelle Ausgangstext vorhanden ist, wähle jede Zielsprache aus und prüfe den betroffenen Eintrag. Xcode kann Text filtern und nach Status sortieren, was beim Auffinden anstehender Prüfungen hilft. Prüfe auch die konkret geänderte Nachricht, selbst wenn ihr Status weiterhin „Übersetzt“ lautet. String Catalogs entdecken

Die folgende Entscheidungshilfe beruht auf dem Vergleich der Bedeutung von Nachrichten und ist keine automatische Übersetzungsbewertung. Ihre englischen Bezeichnungen sind künstliche Beispiele. Sie hilft dir dabei, Übersetzenden gezielte Fragen zu stellen, ohne anzunehmen, dass jede Änderung am Ausgangstext einen anderen Zieltext erfordert.

Beispielhafte Änderung am Ausgangstext Was zu prüfen ist Entscheidung zur Überprüfung
Open item → Open selected items Umfang der Auswahl und Bedeutung im Singular oder Plural Prüfe, ob die Übersetzung weiterhin die gesamte Aktion beschreibt.
Show details → Hide details Richtung der Aktion Prüfe, ob die übersetzte Aktion entsprechend geändert wurde.
Items → Items: Zeichensetzung und Position der Beschriftung Behalte den Wortlaut nur bei, wenn er im Kontext weiterhin passt.
Open bleibt Open, aber die Verwendung ändert sich Ob die Beschriftung jetzt eine andere Aktion bezeichnet Prüfe den Kontext, auch wenn der Ausgangstext identisch ist.

Vergleiche für jeden möglichen Kandidaten drei Dinge: die Bedeutung der alten Nachricht, die Bedeutung der aktuellen Nachricht und das, was die Übersetzung jetzt vermittelt. Ein sichtbarer Unterschied im Ausgangstext macht die Nachricht zu einem Kandidaten für die Überprüfung; allein daraus folgt nicht, dass sich der Zieltext ändern muss.

Auch Änderungen, die nur den Kontext betreffen, sollten ausdrücklich geprüft werden. Apple dokumentiert Kommentare als Hinweise für Übersetzende, doch aus der abgerufenen Dokumentation geht nicht hervor, dass jede Kommentaränderung bestehende Übersetzungen automatisch ungültig macht. Wenn eine unveränderte englische Beschriftung eine andere Bedeutung erhält, nimm sie selbst in die Prüfliste auf. Den Text deiner App für die Übersetzung vorbereiten

Wenn die Nachricht eine Anzahl oder eine gerätespezifische Variante enthält, blende diese Varianten ein, statt nur die übergeordnete Zeile zu prüfen. Apple dokumentiert Plural- und Gerätevarianten in Katalogen. Im Englischen könnten für eine Anzahl beispielsweise 1 item und 2 items erforderlich sein. Prüfe für jede Zielsprache die zutreffenden Formen, statt englische Grammatik mechanisch zu übernehmen. Text mit einem String Catalog lokalisieren und variieren

Schließe die Überprüfung ab, ohne brauchbare Übersetzungen zu verwerfen

Markiere eine fragwürdige Übersetzung über das Kontextmenü des Eintrags zur Überprüfung. Wenn der bestehende Wortlaut geprüft wurde und weiterhin passt, wähle Mark as Reviewed; andernfalls aktualisiere die Übersetzung. Diese Überprüfungsaktionen sind in Apples Anleitung zu String Catalogs dokumentiert. String Catalogs entdecken

Lass den bestehenden Wortlaut beim Vergleich mit dem geänderten Ausgangstext verfügbar. Übersetzungen zu löschen, nur um Unklarheiten zu reduzieren, entfernt nützliches Vergleichsmaterial. Lösche einen Eintrag auch nicht allein deshalb, weil seine Übersetzung veraltet ist: Kläre zuerst, ob die App seinen Schlüssel weiterhin verwendet.

Für das beispielhafte Auswahl-Szenario sollte eine hilfreiche Übergabe den Schlüssel selection.open, die Änderung von Open item zu Open selected items und den Hinweis enthalten, dass die Schaltfläche alle ausgewählten Elemente öffnet. So erhält die übersetzende Person eine konkrete Aktion und einen klaren Umfang, die sie beurteilen kann.

Dabei gibt es eine praktische Einschränkung: Die für diesen Ablauf abgerufene Apple-Dokumentation beschreibt keinen nachträglichen Befehl, der jede verpasste Änderung am Ausgangstext hinter übersetzten Einträgen rekonstruiert. Wenn der frühere Wortlaut nicht mehr verfügbar ist, kannst du den aktuellen Ausgangstext mit der aktuellen Übersetzung abgleichen, aber nicht genau feststellen, wann die Abweichung entstanden ist. Verwende eine verfügbare frühere Projektversion oder eine gespeicherte Kopie des Ausgangstexts, wenn es auf den Vergleich von Vorher und Nachher ankommt.

Überprüfe die korrigierte Nachricht in der Mac-App

Teste nach der Bearbeitung die tatsächliche Benutzeroberfläche. Wähle Product > Scheme > Edit Scheme, dann Run, öffne Options und wähle unter App Language die Zielsprache aus. Schließe den Dialog, wähle das Mac-Ausführungsziel und starte die App. Apple dokumentiert diesen Lokalisierungstest über das Schema. Lokalisierungen beim Ausführen deiner App testen

Gehe zurück zu genau dem Steuerelement, das die Untersuchung ausgelöst hat. Teste bei Open selected items eine einzelne und eine Mehrfachauswahl. Prüfe, ob die Beschriftung die Aktion in beiden Fällen beschreibt und ob der angezeigte Wortlaut dem bearbeiteten Katalogeintrag entspricht. Eine Abweichung an dieser Stelle ist ein Anlass, den Lookup-Schlüssel, die Tabelle, das Bundle oder die zutreffende Variante erneut zu prüfen.

Halte für jede betroffene Sprache abschließend klar fest: Der bestehende Wortlaut passt weiterhin, die Übersetzung wurde aktualisiert oder die Überprüfung steht noch aus. So wird die Aufgabe mit Blick auf die geänderte Nachricht und ihr Verhalten in der Benutzeroberfläche abgeschlossen; der Katalogstatus stützt diese Entscheidung.

Quellen