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:
- Kataloge. Die vom Änderungsvorgang hinzugefügten oder geänderten Zeichenfolgen in allen Sprachen.
- Code. Die vom Änderungsvorgang hinzugefügten Zeilen für Text und Formatierung, die auf eine bestimmte Sprache oder Kultur ausgerichtet sind.
- 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
| Code | Bedeutung | Standardmäßig blockieren |
|---|---|---|
missing | Die Zeichenfolge hat keine Übersetzung | Ja |
invalid_syntax | Die Übersetzung kann nicht geparst werden – beispielsweise eine fehlerhafte ICU-Struktur | Ja |
placeholder_mismatch | Platzhalter weichen vom Quelltext ab | Ja |
plural_categories | Die für die jeweilige Sprache benötigte Pluralform fehlt | Ja |
stale | Der Quelltext wurde nach der Übersetzung der Zeichenfolge geändert | Nein |
Glossar-, Längen- und verbotene-Terms-Regeln melden ihre eigenen Codes, sofern Ihre Konfigurationsdatei dies vorgibt.
Code-Codes
| Code | Was gefunden wird | Standardmäßig blockieren |
|---|---|---|
hardcoded_text | Texte, 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 Alarme | Ja |
concatenated_text | Ein Satz, der aus Teilen zusammengesetzt wird: eine Übersetzung, die mit Text oder einem Wert durch +, ein Template-Literal oder benachbarte Elemente verbunden ist | Ja |
locale_number | Eine Zahl, die ohne die Lokalisierung des Lesers formatiert wurde – beispielsweise toFixed im UI-Code oder toLocaleString() ohne Lokalisierung | Nein |
locale_date | Ein Datum oder eine Uhrzeit, das ohne die Lokalisierung des Lesers formatiert wurde oder ein festes Muster wie MM/dd/yyyy | Nein |
hardcoded_currency | Ein Währungssymbol oder -code, der direkt neben einem Betrag steht | Nein |
ordinal_sort | Texte, die nach Zeichencode sortiert oder verglichen werden, oder localeCompare ohne Lokalisierung | Nein |
case_mapping | toUpperCase() oder toLowerCase() bei Text ohne 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-Muster, das auf ein Land beschränkt ist | Nein |
phone_number_format | Eine Telefonnummer, die als nordamerikanisch validiert wird | Nein |
latin_only_input | Ein Name, eine Stadt, eine Straße oder eine Adresse, die auf a–z beschränkt ist | Nein |
joined_list | Eine von Menschen gelesene Liste, die mit einem Komma oder „und“ verbunden ist | Nein |
calendar_names | Wochentags- oder Monatsnamen, die im Code stehen, oder ein festes erstes Wochenende | Nein |
paper_size | Buchstaben, A4 und ähnliche Angaben in Druck- oder PDF-Einstellungen | Nein |
fixed_unit | Eine Einheit wie mi, lb oder °F, die direkt neben einer angezeigten Zahl steht | Nein |
locale_parsing | Eine von einer Person eingegebene Zahl, die 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 |
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-ignoreKommentar 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"]
}
}| Feld | Bedeutung |
|---|---|
exclude | Dateiglobale, die von den Regeln ausgeschlossen werden |
translate | Übersetzungsfunktionen außerhalb der eigenen Frameworks |
allow | Wörter, die nie übersetzt werden – abgesehen von geschützten Begriffen |
formatter, currencies | Wird im Schritt „Kultur“ des Assistenten festgelegt; siehe Kultur |
render | So 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.
- Ö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 mainsource 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.