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:
- Kataloge. Die vom Änderungsvorgang hinzugefügten oder geänderten Zeichenfolgen in jeder Sprache.
- Code. Die vom Änderungsvorgang hinzugefügten Zeilen für Text und Formatierung, die auf eine bestimmte Sprache oder Kultur ausgelegt sind.
- 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
| Code | Bedeutung | Standardmäßig blockiert |
|---|---|---|
missing | Die Zeichenfolge hat keine Übersetzung | Ja |
invalid_syntax | Die Ü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_mismatch | Platzhalter oder geschützte Begriffe weichen vom Original ab – beispielsweise wenn ein Produktname zweimal geschrieben wird. | Ja |
plural_categories | Die für die jeweilige Sprache erforderliche Pluralform fehlt | Ja |
stale | Der Originaltext wurde nach der Übersetzung des Strings geändert | Nein |
obsolete | Der Originaltext enthält den String nicht mehr oder die Seite, auf der er stand, existiert nicht mehr | Nein |
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
| Code | Was gefunden wird | Standardmäßig blockiert |
|---|---|---|
hardcoded_text | Der 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 Warnmeldungen | Ja |
concatenated_text | Ein Satz, der aus einzelnen Teilen zusammengesetzt wird: Eine Übersetzung wird durch +, ein Template-Literal oder benachbarte Elemente mit dem Text verknüpft. | Ja |
locale_number | Eine Zahl ist ohne Berücksichtigung der Lokalisierung des Lesers formatiert, beispielsweise toFixed im UI-Code oder toLocaleString() ohne angegebene Lokalisierung | Nein |
locale_date | Ein Datum oder eine Uhrzeit ist ohne Berücksichtigung der Lokalisierung des Lesers formatiert oder weist ein festes Muster auf, wie MM/dd/yyyy | Nein |
hardcoded_currency | Ein Währungssymbol oder -code steht neben einem Betrag | Nein |
ordinal_sort | Text wird nach Zeichencode sortiert oder verglichen, oder localeCompare ohne angegebene Lokalisierung | Nein |
case_mapping | toUpperCase() oder toLowerCase() bei Text ohne angegebene Lokalisierung | Nein |
physical_direction | Links und Rechts in CSS- und Utility-Klassen bei einem Projekt mit einer rechtsnach links-Sprache | Nein |
postal_code_format | Ein Postleitzahl wird mit dem Muster eines bestimmten Landes validiert | Nein |
phone_number_format | Eine Telefonnummer wird als nordamerikanisch validiert | Nein |
latin_only_input | Ein Name, eine Stadt, eine Straße oder eine Adresse ist auf a–z beschränkt | Nein |
joined_list | Eine für die Leser bestimmte Liste wird mit einem Komma oder „und“ verknüpft | Nein |
calendar_names | Wochentags- oder Monatsnamen sind im Code geschrieben oder der erste Wochentag ist fest vorgegeben | Nein |
paper_size | Buchstabe, A4 und ähnliche Angaben sind in Druck- oder PDF-Einstellungen fest vorgegeben | Nein |
fixed_unit | Eine Einheit wie Meile, Pfund oder Grad Fahrenheit steht neben einer angezeigten Zahl | Nein |
locale_parsing | Eine von einer Person eingegebene Zahl wird mit parseFloat oder Number | Nein |
ime_composition | Die 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-ignoreKommentar 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"]
}
}| Feld | Bedeutung |
|---|---|
exclude | Dateiglobale, die von den Regeln ausgelassen werden |
translate | Übersetzungsfunktionen außer denen der Frameworks selbst |
allow | Wörter, die nie übersetzt werden – außer geschützten Begriffen |
formatter, currencies | Vom Schritt „Culture“ des Assistenten festgelegt; siehe Culture |
render | So 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.
- Ö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 mainsource 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.