Dokumentation

Pseudo-Lokalisering

Förhandsgranska sidor med en låtsasöversättning: med accenter, längre text och spegelvänd för höger-till-vänster-språk. Upptäck text som saknas i katalogen, avklippta etiketter och layouter som inte spegelvänds – innan något översätts.

En pseudöversättning ersätter varje sträng med en igenkännbar låtsastext. I ett språk som skrivs från vänster till höger får varje bokstav en accent och strängen blir längre inom hakparenteser: Spara ändringar blir ⟦Šáṽé çĥáñĝéš··········⟧. I ett språk som skrivs från höger till vänster vänds varje sträng med en riktningsöverskrivning, så sidan läses från höger till vänster även innan arabiska eller hebreiska finns.

På en sida som återges på det här sättet blir tre problem synliga:

  • Vanlig text kommer inte från katalogen: den är inskriven i koden eller skapas vid körning.
  • Avklippt text har inte lämnats utrymme för längre språk.
  • En layout som inte anpassar sig på en sida som skrivs från höger till vänster använder vänster och höger i stället för start och slut.
tyska · pseudöversättning/de-DE/
Din varukorg⟦Đíñ ṽáŕúķóŕĝ··········⟧

Fri frakt på alla beställningar

Spara ändringar⟦Šþáŕá äñðŕíñĝáŕ············⟧

Priserna inkluderar skatt.⟦Þŕíšéŕñá íñķļúðéŕáŕ šķáţţ.················⟧

arabiska · pseudöversättning/ar-SA/
Din varukorg‮Din varukorg‬

Fri frakt på alla beställningar

Spara ändringar‮Spara ändringar‬

Priserna inkluderar skatt.‮Priserna inkluderar skatt.‬

Det här hittade testet
  1. Text som inte kommer från katalogen/{locale}/ · p#promo · “Fri frakt på alla beställningar” · runtime_text (de-DE, ar-SA)
  2. Text som klipps av när den blir längre/{locale}/ · button#save · “⟦Šþáŕá äñðŕíñĝáŕ············⟧” · clipped_text (de-DE)
  3. Layout som inte spegelvänds för höger-till-vänster-skrift/{locale}/ · p#note · “padding-left: 12px” · unmirrored_layout (ar-SA)

Det här visar de pseudolokaliserade sidorna: samma sida på tyska, där alla strängar har accenter och är längre, och på arabiska, spegelvänd från höger till vänster. Testet markerar text som är inskriven i koden, en knapp där texten kapas och en regel som ligger kvar till vänster. Illustrativa data.

I kontrollen Globalisering

När konfigurationsfilen anger hur appen ska startas, kontrollen Globalisering renderar sidorna vid varje ändring som den kontrollerar. Den arbetar med en kopia av ändringen i kontrollens egen sandlåda, så pseudöversättningen når aldrig ditt repo eller andra kontroller:

  1. Den skriver in pseudöversättningen på ett språk som skrivs från vänster till höger och ett som skrivs från höger till vänster i projektet.
  2. Den installerar beroendena och startar appen.
  3. Den öppnar varje sida på båda språken i en webbläsare inställd på respektive språk och läser av det som visas på skärmen.
  4. Den stoppar appen och tar bort kopian.

Det den hittar blir kontrollens resultat:

KodDet den hittar
runtime_textSynlig text utan pseudomarkeringar
clipped_textPseudotext som klipps av sin behållare, med overflow dolt eller en ellips
unmirrored_layoutPå en sida som skrivs från höger till vänster: en sida som inte är höger-till-vänster, text som vänster- eller högerjusteras eller flyter åt vänster eller höger, eller ett element som placeras, får marginal eller utfyllnad från vänster eller höger

Samma text som hittas på båda språken räknas som ett resultat. Resultaten visas i uppgiftens Hittade problem med sida, element, text och språk, till exempel /{locale}/ · p#promo · “Free shipping on every order” · runtime_text (de-DE, ar-SA).

De rapporteras och blockerar ingenting förrän du väljer det. Under Kvalitetskontroll → Globalisering, Rendera sidor stänger du av steget, och Problem på sidor som skickar tillbaka en ändring för åtgärd väljer vilka koder som blockerar.

Om en app inte installeras eller startar rapporteras den som ej renderad, tillsammans med utdata, aldrig som en lyckad rendering. Ändringen hålls bara tillbaka om du blockerar problem på sidor.

Konfigurera

Lägg till world.render i .coroid/i18n.json:

{
  "world": {
    "render": {
      "start": "npm run dev",
      "pages": ["/{locale}/", "/{locale}/pricing", "/{locale}/checkout"]
    }
  }
}
FältBetydelse
startStartar appen. Den måste lyssna på porten i $PORT; HOST är 127.0.0.1
pagesUpp till tio sökvägar från appens rot. {locale} blir språktaggen, så /{locale}/pricing öppnar /de-DE/pricing; använd /?lang={locale} om språket är en frågeparameter
directoryAppens mapp i repot, när den inte ligger i roten
installKommandot som installerar beroenden. Utan det kör Coroid npm när en package.json anger någon
localesUpp till tre målspråk att rendera. Utan detta används det första målspråket som skrivs från vänster till höger och det första som skrivs från höger till vänster
readyTimeoutMsHur lång tid appen får på sig att svara, 120 000 som standard

Webbläsaren skickar också varje språk som föredraget språk, så en app som väljer språk utifrån webbläsaren fungerar utan {locale}.

Fältet kräver CLI 1.16.0 eller senare i konfigurationens cli pin; en äldre motor avvisar konfigurationen.

Det här ingår inte

Kontrollen läser bara det som en person ser. Den hoppar över dolda element, kod (code, pre, kbd, samp), formulärfältens egna värden och element märkta translate="no", aria-hidden="true", data-i18n-ignore eller med klassen notranslate. Ord i konfigurationens world.allow -lista, till exempel produktnamn, rapporteras aldrig som vanlig text.

Text från dina egna data, till exempel produktnamn eller användarinnehåll, översätts inte heller av katalogen. Markera dess behållare som translate="no" eller data-i18n-ignore, vilket också talar om för webbläsarens översättningsverktyg att låta den vara.

Prova själv

Pseudöversättningen ingår i kommandoradsverktyget. Kör den i ett tillfälligt checkout, eftersom den ersätter språkets översättningar:

coroid-i18n pseudo --locale de-DE                # accented and longer
coroid-i18n pseudo --locale ar-SA                # reversed, right to left
coroid-i18n pseudo --locale de-DE --style rtl    # choose the style yourself

Starta sedan appen och öppna dess sidor på det språket. Platshållare, pluralformer och markup förblir intakta, så appen fungerar som vanligt. Markdown- och MDX-sidor lämnas som de är.