Kontrollen för Globalisering i Kvalitetskontroll ser till att ett internationaliserat projekt fungerar världen över. Den körs vid QA av uppgifter och pull requests, och läser bara sådant som en ändring har berört:
- Kataloger. Strängarna som ändringen har lagt till eller ändrat, på alla språk.
- Kod. Raderna som ändringen lägger till, för text och formatering som utgår från ett visst språk eller en viss kultur.
- Sidor. När projektet beskriver hur appen startas återges dess sidor med en pseudöversättning.
Guiden aktiverar kontrollen som standard när dess pull request har mergats. Inställningarna finns i Kvalitetskontroll → Globalisering; i arbetsbänken visar Inställningar om den är aktiverad.
Vad som blockeras som standard
En ändring skickas tillbaka för åtgärd om den lämnar strängar saknade eller trasiga, eller om koden den lägger till skriver text som människor läser direkt i koden eller bygger en mening av delar. Allt annat rapporteras som en iakttagelse och blockerar inget förrän du väljer att blockera det. Iakttagelser om formatering, sortering och layout rapporteras tills projektet har sett dem i sin egen kod.
Välj vad som ska blockeras under Kvalitetskontroll → Globalisering: katalogkoderna, Vad i koden skickar tillbaka en ändring, och Sidproblem som gör att en ändring skickas tillbaka för åtgärd. Kontrollera källkoden och Återge sidor stänger av kod- och sidstegen.
Katalogkoder
| Kod | Betydelse | Blockeras som standard |
|---|---|---|
missing | Strängen saknar översättning | Ja |
invalid_syntax | Översättningen går inte att tolka, till exempel på grund av trasig ICU, eller visar ett misstag från en modell: en avhuggen mening, kvarlämnad interpunktion, ett oavslutat citattecken eller ett dubblerat ord | Ja |
placeholder_mismatch | Platshållare eller skyddade termer skiljer sig från källtexten, till exempel ett produktnamn som skrivits två gånger | Ja |
plural_categories | En pluralform som språket kräver saknas | Ja |
stale | Källtexten ändrades efter att strängen översattes | Nej |
obsolete | Källtexten innehåller inte längre strängen eller sidan där den fanns | Nej |
Regler för ordlista, längd och förbjudna termer rapporterar egna koder när de har konfigurerats i konfigurationsfilen.
När du översätter tas inaktuella strängar bort från alla språk, och översättningarna av en sida vars källtext har försvunnit tas bort. Endast filer som Coroid har översatt tas bort, aldrig en sida som bara finns på ett språk.
Kodkoder
| Kod | Vad den hittar | Blockeras som standard |
|---|---|---|
hardcoded_text | Text som människor läser och som skrivits direkt i koden i stället för i katalogen: JSX- och malltext, synliga attribut som placeholder, title, alt och aria-label, toastmeddelanden och aviseringar | Ja |
concatenated_text | En mening som byggs av delar: en översättning som sammanfogas med text eller ett värde med +, en mallsträng eller intilliggande element | Ja |
locale_number | Ett tal som formateras utan läsarens språkregion, till exempel toFixed i UI-kod eller toLocaleString() utan språkregion | Nej |
locale_date | Ett datum eller en tid som formateras utan läsarens språkregion, eller med ett fast format som MM/dd/yyyy | Nej |
hardcoded_currency | En valutasymbol eller valutakod som skrivs intill ett belopp | Nej |
ordinal_sort | Text som sorteras eller jämförs efter teckenkod, eller localeCompare utan en språkinställning | Nej |
case_mapping | toUpperCase() eller toLowerCase() för text utan språkinställning | Nej |
physical_direction | Vänster och höger i CSS och verktygsklasser i ett projekt med ett höger-till-vänster-språk | Nej |
postal_code_format | Ett postnummer som valideras med mönstret för ett land | Nej |
phone_number_format | Ett telefonnummer som valideras enligt nordamerikansk standard | Nej |
latin_only_input | Ett namn, en stad, en gata eller en adress som begränsas till a–z | Nej |
joined_list | En lista som läsaren ser, sammanfogad med kommatecken eller ”och” | Nej |
calendar_names | Veckodags- eller månadsnamn som skrivits in i koden, eller en fast första veckodag | Nej |
paper_size | Letter, A4 och liknande som är fast inställda i utskrifts- eller PDF-inställningar | Nej |
fixed_unit | En enhet som mi, lb eller °F som skrivs intill ett visat tal | Nej |
locale_parsing | Ett tal som en person har skrivit in, läst med parseFloat eller Number | Nej |
ime_composition | Enter som hanteras i ett textfält utan att kontrollera om ett kinesiskt, japanskt eller koreanskt ord fortfarande håller på att skrivas | Nej |
Utforma för alla marknader visar lösningen för varje.
Vad kontrollen läser
Kodsteget parsar JavaScript och TypeScript, inklusive JSX, och läser Vue-, Svelte-, Astro-, HTML-, ERB- och Handlebars-mallar samt CSS som text. En regel gäller bara där dess kontext anger det: ett mönster för postnummer rapporteras bara intill ett postnummerfält, och en sammanfogad lista bara där människor läser den.
- Översätts per definition. Text i projektets översättningsanrop
och komponenter (
t(),formatMessage,<Trans>,<FormattedMessage>,$t()) och funktionerna som anges i konfigurationsfilen. - Aldrig text. Skyddade termer och orden som konfigurationsfilen tillåter.
- Utelämnas med avsikt. En rad med en
i18n-ignore-kommentar och raden efter den. Ange orsaken:// i18n-ignore: product name.
Det valfria world avsnittet i .coroid/i18n.json anger resten:
{
"world": {
"exclude": ["src/legacy/**", "scripts/**"],
"translate": ["translateText", "i18n.translate"],
"allow": ["Storefront", "OK"]
}
}| Fält | Betydelse |
|---|---|
exclude | Filmönster som reglerna hoppar över |
translate | Översättningsfunktioner utöver ramverkens egna |
allow | Ord som aldrig översätts, utöver skyddade termer |
formatter, currencies | Anges i guidens steg Kultur; se Kultur |
render | Så startar du appen för pseudolokaliserade sidor; se Pseudo-Lokalisering |
Iakttagelser och åtgärder
Varje iakttagelse sparas i kontrollkörningen och listas under uppgiftens Hittade problem: katalogiakttagelser per katalog, nyckel och språk, kodiakttagelser per fil, rad och den hittade texten samt sidiakttagelser per sida, element och text. En iakttagelse anses åtgärdad när den inte längre finns med i den senaste kontrollen av samma arbete.
- Öppnaui · checkout.total · fr: missingGlobalization · Inte översatt
- Åtgärdassrc/pricing.tsx:7 · “Enkel prissättning”Globalization · Text som skrivits direkt i koden
- Öppna/{locale}/ · p#promo · “Fri frakt på alla beställningar” · runtime_text (de-DE, ar-SA)Globalization · Text som inte kommer från katalogen
- Åtgärdasui · cart.items · ja: placeholder_mismatchGlobalization · Platshållarna skiljer sig från källtexten
- Åtgärdatui · cart.count · ar: plural_categoriesGlobalization · Pluralformer saknas för det här språket
Kvalitetsresultat från globaliseringskontrollen: katalogsträngar, kod som lagts till i en ändring och en pseudolokaliserad sida. En felkod per resultat. Illustrativa data.
I pull requests visas kodiakttagelser också som annoteringar på de ändrade raderna: som fel när de blockerar och som varningar när de bara rapporteras.
När kontrollen blockerar en uppgift får utvecklaragenten varje blockerande anmärkning,
som src/pricing.tsx:7 hardcoded_text: “Simple pricing”, tillsammans med instruktioner om hur den åtgärdas. Den rättar översättningar i en översättningssession för uppgiften, aldrig genom att redigera andra språks kataloger för hand. Den flyttar text till källkatalogen, skriver om sammansatta meningar till ett enda meddelande med platshållare och kör kodreglerna på sin egen ändring innan den lämnar över uppgiften.
Bidrag från alla håll
Kontrollen tillämpar samma standard på varje ändring, oavsett vem som skrivit den:
- Coroids agenter som arbetar med ett internationaliserat projekt får instruktioner i varje uppgift: källkatalogen och översättningsfunktionen, ett meddelande per mening, projektets formaterare, logisk layout för språk som skrivs från höger till vänster samt marknadskonventionerna från Culture.
- Pull requests från människor och andra verktyg går igenom kontrollen via Coroid Check och får samma anmärkningar och kommentarer. Den körs på varje pull request när Coroid GitHub App har installerats i repot och projektets policy gäller för pull requests.
- Ändringar som har mergats utan att klara kontrollen upptäcks efter mergningen. Översätt strängar som mergats utanför Coroid läser kontrollen som kördes på pull request. Den skapar en översättningsuppgift för strängar som pull request utelämnade eller lämnade inaktuella. När kontrollen blockerade kodfynd skapar den också en uppgift med namnet Internationalisera koden som mergats i i pull request, med en lista över var du ska leta. Varje merge ger högst en uppgift av varje typ.
Befintlig kod blockeras aldrig: Redo för alla marknader listar det och skapar fixuppgifter som du kan starta när du vill.
Kör själv
Motorn är kommandoradsverktyget coroid-i18n, den version som är låst i din
konfigurationsfil:
coroid-i18n check # catalogues
coroid-i18n source --changed main # the code a branch adds since main
coroid-i18n check --source --changed mainsource läser koden utan att läsa katalogerna, så det fungerar även när
de inte har konfigurerats än. Utan --changed eller --diff läser det hela
repositoryt. Båda kommandona avslutas med 1 när de hittar något; lägg till
--format json för en maskinläsbar rapport.