{name} in der Übersetzungskopie ist verloren. So stoppen Sie es, bevor Sie online gehen

Wenn {name} in der Übersetzungskopie verloren geht, treten online Fehler auf. Regelmäßige Urteile sind unzuverlässig. In diesem Artikel wird die Python-Standardbibliothek string.Formatter.parse verwendet, um die Verifizierungsplatzhalter mit korrekten und falschen Synthesebeispielen, direkt ausführbaren Skripten und manuellen Überprüfungsgrenzen zu strukturieren.

– {{name}} ist ein maskiertes Anzeigeliteral, keine Variable und sollte nicht im Platzhaltervertrag gezählt werden.

  • Formatangaben gelten als geschützte Inhalte. Das Ändern der Dezimalstelle (z. B. .2f in .0f) wird markiert und muss gemäß der Lokalisierungsvereinbarung bestätigt werden.

– Der Parsing-Code ruft weder das Format auf, noch handelt es sich um eine vorlagensichere Sandbox. Felder und Ausgabe-Escape müssen beim Rendern weiterhin eingeschränkt werden.

In der übersetzten Kopie werden Variablen wie {name} oft zusammen übersetzt, und die Seite meldet oft keinen Fehler, bis der Wert tatsächlich ausgefüllt wird. Wenn Sie sich nur auf das menschliche Auge oder reguläre Ausdrücke verlassen, um die geschweiften Klammern zu überprüfen, bevor Sie online gehen, kann es leicht passieren, dass sie übersehen werden. Dieser Artikel richtet sich an Entwickler und Redakteure, die für Lokalisierung, Vorlagen und Auslieferungsprüfungen verantwortlich sind. Es stellt vor, wie Sie die Python-Standardbibliothek string.Formatter.parse verwenden, um eine strukturierte Überprüfung von Platzhaltern durchzuführen, und erklärt, welche Situationen noch eine manuelle Überprüfung erfordern.

Nach dem Lesen können Sie eine Verifizierungsidee erhalten, die direkt ausgeführt werden kann: Überprüfen Sie die Feldidentität, die Häufigkeit des Vorkommens und die Formatspezifikationen, wenn die Übersetzung geliefert wird, anstatt zu warten, bis das Problem online entdeckt wird. In den Beispielen werden synthetische Beispiele verwendet und der Code wurde in einer isolierten Umgebung überprüft. Dies stellt jedoch keine Garantie für alle echten Dateien oder die Produktleistung dar. Bevor Sie wichtige Dokumente bearbeiten, bewahren Sie bitte die Originale auf und überprüfen Sie sie anhand der unten aufgeführten Grenzen und Annahmepunkte.

Platzhalter nach der Übersetzung verloren? Fazit in einem Satz

Extrahieren Sie zunächst mithilfe der strukturierten Analyse die Felder in der Formatzeichenfolge und vergleichen Sie sie dann einzeln mit den Feldern der Quellkopie. Wenn die Feldnamen, Auftrittszeiten oder Formatspezifikationen inkonsistent sind, wird dies direkt abgelehnt und die Anpassung der Wortreihenfolge wird einer manuellen Überprüfung überlassen.

Ihre SituationEmpfohlene PraktikenGrund
Die Variablennamen in der Übersetzung werden übersetztStellen Sie den Schnittstellenfeldnamen vor der Auslieferung wieder herDer Variablenname gehört zum Schnittstellenvertrag. Nach der Änderung wird beim Ausfüllen des Werts auf der Seite ein Fehler gemeldet.
In der Übersetzung fehlt einmal ein Feld mit demselben NamenLehnen Sie den Artikel ab und prüfen Sie, ob die Übersetzung fehltAuch die Häufigkeit des Vorkommens desselben Feldes ist Vertragsbestandteil
Lediglich die Feldposition wurde angepasstAkzeptieren Sie, ob die Reihenfolge der Lesewörter natürlich istÄnderungen in der Feldreihenfolge haben normalerweise keinen Einfluss auf die Ergebnisse der Eingabe von Werten
Formatangaben wie Dezimalstellen haben sich geändertDie Markierung ist inkonsistent. Bitte anhand des Lokalisierungsprotokolls bestätigenFormatvorgaben sind ebenfalls geschützt und ob Änderungen zulässig sind, muss im Einvernehmen entschieden werden.

Wählen Sie zuerst die Formatsyntax aus

Dieser Artikel befasst sich nur mit Platzhaltern im Python-str.format-Stil und behandelt nicht JavaScript-Vorlagenzeichenfolgen, ICU MessageFormat oder andere Platzhaltersysteme. Verschiedene Systeme haben sehr unterschiedliche Verschachtelungs-, Escape- und Pluralisierungsregeln, und ein regulärer Ausdruck kann nicht behaupten, sie alle zu unterstützen. Das Beispiel erfordert die Verwendung benannter Felder und lehnt automatisch nummerierte Felder (z. B. {}) ab.

Eine vollständige Beschreibung der Feldsyntax finden Sie in Python-String- und Formatter-Dokumentation.

Geschweifte Klammern mit Escapezeichen sind keine Variablen

{{name}} stellt den Anzeigetext {name} dar und sollte nicht als Feld gezählt werden. In der Formatspezifikation können auch verschachtelte Felder vorhanden sein, z. B. {value:{width}}. Der folgende Code liest die Spezifikation rekursiv und zählt die wiederholten Vorkommen desselben Felds.

from string import Formatter
from collections import Counter

def contract(text, depth=0):
    if depth > 5:
        raise ValueError("nested format budget")
    result = Counter()
    for literal, field, spec, conversion in Formatter().parse(text):
        if field is None:
            continue
        if not field or field != field.strip():
            raise ValueError("named field without surrounding whitespace required")
        result[(field, conversion, spec)] += 1
        if spec:
            result.update(contract(spec, depth + 1))
    return result

assert contract("Hi {name}, total {amount:.2f}") == contract("{name}:金额 {amount:.2f}")
assert contract("{{name}}") == Counter()
assert contract("{name} {name}") != contract("{name}")
assert contract("{value:{width}}")[("width", None, "")] == 1
assert contract("{amount:.2f}") != contract("{amount:.0f}")
for bad in ["Hi {name", "{ name}", "{}"]:
    try:
        contract(bad)
    except ValueError:
        pass
    else:
        raise AssertionError("invalid template accepted")

Dieser Vertrag ist bewusst streng

Auch hier gelten die Formatangaben als geschützter Inhalt, daher wird eine Änderung der Anzahl der Nachkommastellen gekennzeichnet. Einige Lokalisierungsaufgaben erfordern eine Änderung der Art und Weise, wie Zahlen dargestellt werden. In diesem Fall sollten Sie dafür eine separate Regel erstellen, anstatt alle Platzhalterprüfungen abzubrechen. Die Verschachtelungstiefenbegrenzung im Beispiel ist ein Demonstrationsbudget und keine Anforderung der Sprachspezifikation.

In der folgenden Tabelle sind einige gängige Arten von Änderungen und die entsprechenden Behandlungsmethoden aufgeführt:

ändernDas Ergebnis dieses BeispielsÜberprüfungsaktion
Felder ändernakzeptierenIst die Wortreihenfolge beim Lesen natürlich?
Das gleiche Feld fehlt einmalVertrag ablehnenSuchen Sie nach fehlenden Übersetzungen
Variablennamen werden übersetztVertrag ablehnenFeldname der Wiederherstellungsschnittstelle
Änderungen der DezimalspezifikationTags sind inkonsistentBestätigen Sie gemäß der Lokalisierungsvereinbarung

📊 Kernvergleich

Typ ändernOb es die Verifizierung bestehtFolgemaßnahmen
Felder ändernpassierenIst die Wortreihenfolge beim Lesen natürlich?
Das gleiche Feld fehlt einmalfehlgeschlagenSuchen Sie nach fehlenden Übersetzungen
Variablennamen werden übersetztfehlgeschlagenFeldname der Wiederherstellungsschnittstelle
Änderungen der DezimalspezifikationAls inkonsistent markierenBestätigen Sie gemäß der Lokalisierungsvereinbarung

🎯 Welche Methode ist für Dich geeignet?

Wenn Sie für die Lieferung der Übersetzung verantwortlich sind

Führen Sie vor der Auslieferung eine Strukturprüfung durch und senden Sie abgelehnte Einträge mit fehlenden oder geänderten Feldnamen an den Übersetzer zurück.

Wenn Sie für Vorlagen und Schnittstellen verantwortlich sind

Machen Sie deutlich, welche Feldnamen zum Schnittstellenvertrag gehören und listen Sie diese in den Lieferanweisungen auf, um den Vergleich für Übersetzer und Prüfer zu erleichtern.

Wenn Sie die Art und Weise ändern müssen, wie Zahlen dargestellt werden

Entwickeln Sie ein Lokalisierungsprotokoll separat für die Formatspezifikationen und fügen Sie es den Verifizierungsregeln hinzu, anstatt die Gesamtprüfung auszuschalten.

❓ Häufig gestellte Fragen (FAQ)

1. Kann diese Methode JavaScript-Vorlagen oder ICU MessageFormat verarbeiten?

kann nicht. Dieser Artikel konzentriert sich nur auf benannte Felder im Python-str.format-Stil. Die Verschachtelungs-, Escape- und Pluralisierungsregeln anderer Systeme müssen separat verarbeitet werden.

2. Wird {{name}} als Variable geprüft?

Gewohnheit. Es stellt den Anzeigetext {name} dar, der beim Parsen nicht als Feld gezählt wird.

3. Wenn ich nur die Position des Feldes im Satz anpasse, wird es dann abgelehnt?

Gewohnheit. Änderungen der Feldpositionen werden in diesem Fall akzeptiert und dann manuell gelesen, um festzustellen, ob die Wortreihenfolge natürlich ist.

4. Kann ich format direkt anrufen, um die Übersetzung zu überprüfen?

Der Code in diesem Artikel führt nur eine Analyse durch und ruft nicht tatsächlich format auf, um das Objekt auszufüllen. Es handelt sich nicht um eine Sicherheits-Sandbox für Vorlagen. Das anschließende Rendern erfordert außerdem Einschränkungen hinsichtlich der verfügbaren Felder, des Objektzugriffs und des Ausgabekontexts, insbesondere Escape-Regeln in HTML-Seiten.

📝 Zusammenfassung

Durch die Verwendung von strukturiertem Parsing zur Prüfung von Platzhaltern während der Übersetzungsbereitstellung können Probleme mit Feldnamen, Zeiten und Formatspezifikationen vor der Online-Bereitstellung vermieden werden. Ob die Sprache fließend ist, muss noch gesondert vom Gutachter beurteilt werden.

Probieren Sie es jetzt aus: Laden Sie das Dokument hoch, um mit der Übersetzung zu beginnen, und behalten Sie dabei das ursprüngliche Layout bei

Aktualisiert am 2026-11-15