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 Überprüfung in der Qualitätskontrolle sorgt dafür, dass ein internationalisiertes Projekt weltweit einsatzbereit bleibt. Sie erfolgt im Rahmen der Aufgaben-QA und bei Pull Requests und berücksichtigt ausschließlich die vom jeweiligen Änderungsvorgang betroffenen Bereiche:

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

Der Assistent aktiviert die Überprüfung standardmäßig, sobald sein pull request zusammengeführt wurde. Die Einstellungen befinden sich in Qualitätskontrolle → Globalisierung; dem Arbeitsbereich Einstellungen zeigt an, ob sie aktiviert ist.

Was standardmäßig blockiert

Ein Änderungsvorgang wird zur Reparatur zurückgeschickt, wenn fehlende oder beschädigte Zeichenfolgen vorhanden sind oder der hinzugefügte Code Texte direkt in den Code einfügt oder Sätze aus Teilen zusammensetzt. Alle anderen Fälle werden als Fundbericht erfasst und blockieren nichts, bis Sie selbst eine Blockade festlegen. Formatierungs-, Sortier- und Layout-Funde bleiben solange gemeldet, bis das Projekt sie in seinem eigenen Code festgestellt hat.

Legen Sie fest, was blockiert werden soll unter Qualitätskontrolle → Globalisierung: den Katalog-Codes, Was im Code einen Änderungsvorgang zur Reparatur zurückschicktund Seitenprobleme, die einen Änderungsvorgang zur Reparatur zurückschicken. Quellcode überprüfen und Seiten rendern deaktivieren die Schritte für Code und Seiten.

Katalog-Codes

CodeBedeutungStandardmäßig blockieren
missingDie Zeichenfolge hat keine ÜbersetzungJa
invalid_syntaxDie Übersetzung kann nicht geparst werden – beispielsweise eine fehlerhafte ICU-StrukturJa
placeholder_mismatchPlatzhalter weichen vom Quelltext abJa
plural_categoriesDie für die jeweilige Sprache benötigte Pluralform fehltJa
staleDer Quelltext wurde nach der Übersetzung der Zeichenfolge geändertNein

Glossar-, Längen- und verbotene-Terms-Regeln melden ihre eigenen Codes, sofern Ihre Konfigurationsdatei dies vorgibt.

Code-Codes

CodeWas gefunden wirdStandardmäßig blockieren
hardcoded_textTexte, die eine Person liest und die statt im Katalog im Code stehen: JSX- und Vorlagentexte, sichtbare Attribute wie placeholder, title, alt und aria-label, Toast-Nachrichten und AlarmeJa
concatenated_textEin Satz, der aus Teilen zusammengesetzt wird: eine Übersetzung, die mit Text oder einem Wert durch +, ein Template-Literal oder benachbarte Elemente verbunden istJa
locale_numberEine Zahl, die ohne die Lokalisierung des Lesers formatiert wurde – beispielsweise toFixed im UI-Code oder toLocaleString() ohne LokalisierungNein
locale_dateEin Datum oder eine Uhrzeit, das ohne die Lokalisierung des Lesers formatiert wurde oder ein festes Muster wie MM/dd/yyyyNein
hardcoded_currencyEin Währungssymbol oder -code, der direkt neben einem Betrag stehtNein
ordinal_sortTexte, die nach Zeichencode sortiert oder verglichen werden, oder localeCompare ohne LokalisierungNein
case_mappingtoUpperCase() oder toLowerCase() bei Text ohne LokalisierungNein
physical_directionLinks und Rechts in CSS- und Utility-Klassen bei einem Projekt mit einer rechtsnach links-SpracheNein
postal_code_formatEin Postleitzahl-Muster, das auf ein Land beschränkt istNein
phone_number_formatEine Telefonnummer, die als nordamerikanisch validiert wirdNein
latin_only_inputEin Name, eine Stadt, eine Straße oder eine Adresse, die auf a–z beschränkt istNein
joined_listEine von Menschen gelesene Liste, die mit einem Komma oder „und“ verbunden istNein
calendar_namesWochentags- oder Monatsnamen, die im Code stehen, oder ein festes erstes WochenendeNein
paper_sizeBuchstaben, A4 und ähnliche Angaben in Druck- oder PDF-EinstellungenNein
fixed_unitEine Einheit wie mi, lb oder °F, die direkt neben einer angezeigten Zahl stehtNein
locale_parsingEine von einer Person eingegebene Zahl, die 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 bearbeitetNein

Design für jeden Markt zeigt die jeweilige Lösung an.

Was die Überprüfung prüft

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

  • Von der Definition her übersetzt. Texte 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 weggelassen. Eine Zeile mit einem i18n-ignore Kommentar und 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 ausgeschlossen werden
translateÜbersetzungsfunktionen außerhalb der eigenen Frameworks
allowWörter, die nie übersetzt werden – abgesehen von geschützten Begriffen
formatter, currenciesWird im Schritt „Kultur“ des Assistenten festgelegt; siehe Kultur
renderSo starten Sie die App für pseudolokalisierte Seiten; siehe Pseudo-Lokalisierung

Ergebnisse und Reparaturen

Jedes Ergebnis wird im Lauf der Prüfung gespeichert und in den Aufgaben-„Ergebnisse“ aufgelistet. Probleme gefunden: Ergebnisse nach Katalog, Schlüssel und Sprache kategorisieren, Code-Ergebnisse nach Datei, Zeile und gefundenem Text sortieren, Seiten-Ergebnisse nach Seite, Element und Text gruppieren. 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 werden Code-Ergebnisse ebenfalls als Anmerkungen zu den geänderten Zeilen angezeigt: als Fehler, wenn sie ein Hindernis darstellen, oder als Warnung, wenn sie nur gemeldet werden.

Wenn die Prüfung eine Aufgabe blockiert, erhält der Entwickler-Agent jedes blockierende Ergebnis, wie z.B. src/pricing.tsx:7 hardcoded_text: “Simple pricing”, samt der Anleitung zur Behebung. Die Übersetzungen werden über eine Übersetzungssitzung für die Aufgabe repariert – niemals durch manuelles Bearbeiten von Katalogen anderer Sprachen. Der Text wird in den Quellkatalog verschoben, zusammengesetzte Sätze zu einer Nachricht mit Platzhaltern umgeschrieben, und die Code-Regeln werden auf der eigenen Änderung ausgeführt, bevor die Aufgabe übergeben wird.

Beiträge aus allen Quellen

Die Prüfung wendet denselben Standard auf jede Änderung an – unabhängig davon, wer sie vorgenommen hat:

  • Coroid's Agents Bei der Arbeit an einem internationalisierten Projekt wird in jeder Aufgabe Folgendes angegeben: das Quellkatalog-Verzeichnis und die Übersetzungsfunktion, eine Nachricht pro Satz, der Formatter des Projekts, die logische Layoutgestaltung bei rechtsnach links geschriebenen Sprachen sowie die Marktkonventionen aus der Kultur.
  • Pull Requests von Personen und anderen Tools durchlaufen die Prüfung über Coroid Check mit denselben Ergebnissen und Anmerkungen. Aktivieren Sie Rezensionieren Sie jeden PR um ihn auf jedem pull request auszuführen.
  • Änderungen, die ohne vorherige Prüfung zusammengeführt werden werden nach dem Zusammenführen erkannt. Übersetzen Sie Zeichenfolgen, die außerhalb von Coroid zusammengeführt wurden liest die Prüfung, die auf dem pull request ausgeführt wurde. Es erstellt eine Übersetzungsaufgabe, wenn Zeichenfolgen fehlen oder veraltet sind. Wenn die Prüfung Code-Fehler blockiert hat, erstellt es auch eine Aufgabe namens Internationalisieren Sie den zusammengeführten Code den pull request, mit Angaben dazu, wo Sie suchen sollen. Jedes Zusammenführen erhält maximal eine Aufgabe je Art.

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

Führen Sie es selbst aus

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 und funktioniert daher auch, wenn diese noch nicht eingerichtet sind. Ohne --changed oder --diff liest das gesamte Repository. Beide Befehle geben den Exit-Code 1 zurück, sobald etwas gefunden wird; fügen Sie dazu --format json für einen maschinenlesbaren Bericht hinzu.