Dokumentation

Die Globalisierungsprüfung

Überprüfen Sie jede Änderung auf fehlende oder beschädigte Übersetzungen sowie auf Text und Formatierung im neuen Code, die eine bestimmte Sprache oder Kultur voraussetzen – bei der Einrichtung auch auf Seiten, die in anderen Sprachen nicht korrekt dargestellt werden.

Der Globalisierung Die Prüfung in der Qualitätskontrolle sorgt dafür, dass das internationalisierte Projekt weltweit einsatzbereit bleibt. Sie läuft bei der Aufgaben-QA und bei Pull Requests und berücksichtigt nur die vom jeweiligen Änderungsvorgang betroffenen Elemente:

  1. Kataloge. Die vom Änderungsvorgang hinzugefügten oder geänderten Zeichenfolgen in jeder Sprache.
  2. Code. Die vom Änderungsvorgang hinzugefügten Zeilen für Text und Formatierung, die auf eine bestimmte Sprache oder Kultur ausgelegt sind.
  3. Seiten. Wenn das Projekt angibt, wie seine App gestartet wird, werden seine Seiten mit einer Pseudöbersetzung.

Sobald der pull request gemergt ist, aktiviert der Assistent die Prüfung standardmäßig. Die Einstellungen befinden sich in Qualitätskontrolle → Globalisierung; dem Arbeitsbereich Einstellungen zeigt an, ob die Prüfung aktiviert ist.

Was standardmäßig blockiert wird

Ein Änderungsvorgang wird zur Reparatur zurückgeschickt, wenn Zeichenfolgen fehlen oder beschädigt sind oder wenn der hinzugefügte Code den für die Leser bestimmten Text direkt in den Code einfügt oder einen Satz aus einzelnen Teilen zusammensetzt. Alle anderen Fälle werden als Feststellung gemeldet und blockieren nichts, bis Sie selbst eine Blockade festlegen. Formatierungs-, Sortier- und Layout-Feststellungen bleiben so lange gemeldet, bis das Projekt sie in seinem eigenen Code festgestellt hat.

Legen Sie unter „“ fest, was blockiert werden soll. Qualitätskontrolle → Globalisierung: die Katalogcodes, Was im Code einen Änderungsvorgang zur Zurückweisung veranlasstund Seitenprobleme, die einen Änderungsvorgang zur Reparatur zurückschicken. Quellcode prüfen und Seiten rendern deaktivieren die Schritte für Code und Seiten.

Katalogcodes

CodeBedeutungStandardmäßig blockiert
missingDie Zeichenfolge hat keine ÜbersetzungJa
invalid_syntaxDie Übersetzung kann nicht geparst werden – beispielsweise aufgrund einer fehlerhaften ICU-Formatierung oder eines fehlerhaften Modells: Ein Satz ist abgeschnitten, es bleibt nach ihm ein Satzzeichen übrig, ein Anführungszeichen ist nicht geschlossen oder ein Wort ist doppelt vorhanden.Ja
placeholder_mismatchPlatzhalter oder geschützte Begriffe weichen vom Original ab – beispielsweise wenn ein Produktname zweimal geschrieben wird.Ja
plural_categoriesDie für die jeweilige Sprache erforderliche Pluralform fehltJa
staleDer Originaltext wurde nach der Übersetzung des Strings geändertNein
obsoleteDer Originaltext enthält den String nicht mehr oder die Seite, auf der er stand, existiert nicht mehrNein

Das Glossar sowie die Regeln zu Länge und verbotenen Begriffen geben bei Bedarf eigene Codes aus, wenn Ihre Konfigurationsdatei dies vorgibt.

Beim Übersetzen werden veraltete Strings aus allen Sprachen entfernt und die Übersetzungen von Seiten gelöscht, deren Originaltext nicht mehr vorhanden ist. Gelöscht werden nur die von Coroid übersetzten Dateien – niemals eine Seite, die in einer einzigen Sprache existiert.

Code-Codes

CodeWas gefunden wirdStandardmäßig blockiert
hardcoded_textDer für die Leser bestimmte Text ist statt im Katalog im Code eingefügt: JSX- und Vorlagentexte, sichtbare Attribute wie placeholder, title, alt und aria-label, Benachrichtigungen und WarnmeldungenJa
concatenated_textEin Satz, der aus einzelnen Teilen zusammengesetzt wird: Eine Übersetzung wird durch +, ein Template-Literal oder benachbarte Elemente mit dem Text verknüpft.Ja
locale_numberEine Zahl ist ohne Berücksichtigung der Lokalisierung des Lesers formatiert, beispielsweise toFixed im UI-Code oder toLocaleString() ohne angegebene LokalisierungNein
locale_dateEin Datum oder eine Uhrzeit ist ohne Berücksichtigung der Lokalisierung des Lesers formatiert oder weist ein festes Muster auf, wie MM/dd/yyyyNein
hardcoded_currencyEin Währungssymbol oder -code steht neben einem BetragNein
ordinal_sortText wird nach Zeichencode sortiert oder verglichen, oder localeCompare ohne angegebene LokalisierungNein
case_mappingtoUpperCase() oder toLowerCase() bei Text ohne angegebene LokalisierungNein
physical_directionLinks und Rechts in CSS- und Utility-Klassen bei einem Projekt mit einer rechtsnach links-SpracheNein
postal_code_formatEin Postleitzahl wird mit dem Muster eines bestimmten Landes validiertNein
phone_number_formatEine Telefonnummer wird als nordamerikanisch validiertNein
latin_only_inputEin Name, eine Stadt, eine Straße oder eine Adresse ist auf a–z beschränktNein
joined_listEine für die Leser bestimmte Liste wird mit einem Komma oder „und“ verknüpftNein
calendar_namesWochentags- oder Monatsnamen sind im Code geschrieben oder der erste Wochentag ist fest vorgegebenNein
paper_sizeBuchstabe, A4 und ähnliche Angaben sind in Druck- oder PDF-Einstellungen fest vorgegebenNein
fixed_unitEine Einheit wie Meile, Pfund oder Grad Fahrenheit steht neben einer angezeigten ZahlNein
locale_parsingEine von einer Person eingegebene Zahl wird mit parseFloat oder NumberNein
ime_compositionDie Eingabe in einem Textfeld wird ohne Prüfung auf eine noch im Zusammenbau befindliche chinesische, japanische oder koreanische Wortfolge bearbeitet.Nein

Für jeden Markt optimiertes Design zeigt die jeweilige Korrektur dafür an.

Was die Prüfung erfasst

Der Code-Schritt analysiert JavaScript und TypeScript sowie JSX, liest außerdem Vue-, Svelte-, Astro-, HTML-, ERB- und Handlebars-Vorlagen sowie CSS als Text. Eine Regel greift nur dort, wo ihr Kontext dies vorgibt: Ein Postleitzahl-Muster wird nur neben einem Postleitzahl-Feld gemeldet, und eine aufgeliste Liste nur dort, wo sie gelesen wird.

  • Von der Definition an übersetzt. Text innerhalb der Übersetzungsaufrufe und -komponenten des Projekts (t(), formatMessage, <Trans>, <FormattedMessage>, $t()) sowie die in der Konfigurationsdatei aufgeführten Funktionen.
  • Nie Text. Geschützte Begriffe sowie die Wörter, die die Konfigurationsdatei zulässt.
  • Absichtlich ausgelassen. Eine Zeile mit einem i18n-ignore Kommentar sowie die darauffolgende Zeile. Geben Sie den Grund an: // i18n-ignore: product name.

Der optionale world Abschnitt von .coroid/i18n.json legt den Rest fest:

{
  "world": {
    "exclude": ["src/legacy/**", "scripts/**"],
    "translate": ["translateText", "i18n.translate"],
    "allow": ["Storefront", "OK"]
  }
}
FeldBedeutung
excludeDateiglobale, die von den Regeln ausgelassen werden
translateÜbersetzungsfunktionen außer denen der Frameworks selbst
allowWörter, die nie übersetzt werden – außer geschützten Begriffen
formatter, currenciesVom Schritt „Culture“ des Assistenten festgelegt; siehe Culture
renderSo startet man die App für pseudolokalisierte Seiten; siehe Pseudo-Lokalisierung

Ergebnisse und Reparaturen

Jedes Ergebnis wird bei der Ausführung der Prüfung gespeichert und in den Ergebnissen der Aufgabe aufgelistet. Gefundene Probleme: Ergebnisse nach Katalog, Schlüssel und Sprache, Code-Ergebnisse nach Datei, Zeile und gefundenem Text, Seiten-Ergebnisse nach Seite, Element und Text. Ein Ergebnis gilt als behoben, wenn die neueste Prüfung desselben Arbeitsauftrags es nicht mehr aufweist.

Kaufvorgang-Text übersetzenAufgabe
Entdeckte Probleme
  • Öffnenui · checkout.total · fr: missingGlobalisierung · Nicht übersetzt
  • Wird korrigiertsrc/pricing.tsx:7 · “Einfache Preisgestaltung”Globalisierung · Text, der direkt im Code eingefügt wurde
  • Öffnen/{locale}/ · p#promo · “Kostenloser Versand bei jeder Bestellung” · runtime_text (de-DE, ar-SA)Globalisierung · Text, der nicht aus dem Katalog stammt
  • Wird korrigiertui · cart.items · ja: placeholder_mismatchGlobalisierung · Platzhalter weichen vom Quelltext ab
  • Korrigiertui · cart.count · ar: plural_categoriesGlobalisierung · Für diese Sprache fehlen Pluralformen

Qualitätsergebnisse der Globalisierungsprüfung: Katalogzeichenfolgen, ein durch eine Änderung hinzugefügter Code und eine pseudolokalisiierte Seite – jeweils ein Fehlercode pro Fund. Illustrative Daten.

In Pull Requests erscheinen Code-Ergebnisse auch als Anmerkungen zu den geänderten Zeilen: Ein Fehler, wenn sie blockieren, eine Warnung, wenn sie nur gemeldet werden.

Wenn die Prüfung eine Aufgabe blockiert, erhält der Entwickler-Agent jedes blockierende Ergebnis, wie zum Beispiel src/pricing.tsx:7 hardcoded_text: “Simple pricing”, samt der jeweiligen Lösung. Es repariert Übersetzungen über eine Übersetzungssitzung für die Aufgabe – niemals durch manuelles Bearbeiten von Katalogen anderer Sprachen. Es verschiebt Text in den Quellkatalog, formuliert zusammengesetzte Sätze zu einer Nachricht mit Platzhaltern um und wendet die Code-Regeln auf seine eigenen Änderungen an, bevor es die Aufgabe weiterleitet.

Beiträge aus allen Quellen

Die Prüfung stellt sicher, dass jede Änderung denselben Standard erfüllt – unabhängig vom Autor:

  • Coroid's Agents Bei einem internationalisierten Projekt werden in jeder Aufgabe folgende Angaben gemacht: das Quellkatalog-Verzeichnis und die Übersetzungsfunktion, eine Nachricht pro Satz, der Formatter des Projekts, die logische Anordnung bei rechtsnach links geschriebenen Sprachen sowie die Marktkonventionen aus Culture.
  • Pull Requests von Personen und anderen Tools werden über Coroid Check geprüft – mit denselben Ergebnissen und Anmerkungen. Die Prüfung läuft auf jedem pull request, sobald die Coroid GitHub App im Repository installiert ist und die Projekt-Richtlinie bei Pull Requests aktiv wird.
  • Änderungen, die ohne vorherige Prüfung zusammengeführt werden werden nach dem Zusammenführen festgestellt. Übersetzungszeichenketten, die außerhalb von Coroid zusammengeführt wurden Das Tool liest den auf dem pull request ausgeführten Prüfungsbericht aus. Anschließend erstellt es einen Übersetzungsauftrag für die Zeichenfolgen, die auf pull request fehlen oder veraltet sind. Falls die Prüfung Code-Fehler feststellte, wird zudem ein entsprechender Auftrag angelegt. Den zusammengeführten Code internationalisieren in pull request, wobei angegeben wird, wo gesucht werden soll. Bei jedem Zusammenführen wird maximal eine Aufgabe je Art erstellt.

Bestehender Code wird nie blockiert: Weltweite Einsatzbereitschaft listet diese Aufgaben auf und erstellt Korrekturaufgaben, die Sie bei Bedarf starten können.

Selbst ausführen

Das Tool ist das Befehlszeilenprogramm coroid-i18n, dessen Version in Ihrer Konfigurationsdatei festgelegt ist:

coroid-i18n check                       # catalogues
coroid-i18n source --changed main       # the code a branch adds since main
coroid-i18n check --source --changed main

source liest den Code, ohne die Kataloge zu berücksichtigen – daher funktioniert es sogar, wenn diese noch nicht eingerichtet sind. Ohne --changed oder --diff liest das gesamte Repository. Beide Befehle geben den Statuscode 1 zurück, wenn Fehler gefunden werden; fügen Sie --format json hinzu, um einen maschinenlesbaren Bericht zu erhalten.