Så kontrollerar vi varje översättning
Den här bloggen har 64 inlägg på elva språk: 704 rader och ungefär 2,2 miljoner tecken. Inget inlägg saknas på något språk, och det påståendet betyder bara något om något ser till att det stämmer.
Det gör något. Innan en översatt rad skrivs kontrolleras den mot det engelska originalet, och en rad som inte klarar kontrollen skrivs inte alls — den rapporteras och lämnas åt en människa att titta på.
Vad varje kontroll är till för
Samma länkmål. En intern sökväg får inte ändras under översättningen: /privacy förblir /privacy på alla språk, och språkprefixet läggs till när sidan renderas. En översättare — människa eller inte — som hjälpsamt lokaliserar en sökväg skapar en länk som inte leder någonstans.
Samma platshållare. En del inlägg innehåller siffror som fylls i när sidan byggs, så att de inte kan bli inaktuella. En översättning som tappar en av dem förlorar en siffra; en som hittar på en ger en klammerparentes mitt i en mening.
Samma antal per tagg. Inte bara balanserade taggar — lika många som i den engelska texten. Det är den här kontrollen som gör sig förtjänt av sin plats: en förlorad tabellrad, en bortfallen listpunkt eller ett saknat diagram syns inte i något annat test, eftersom resultatet fortfarande är giltig HTML som går utmärkt att läsa.
En längd inom ett intervall. Mellan hälften och två och en halv gånger den engelska texten. Språk skiljer sig verkligen åt i längd, så intervallet är brett; det som fångas är en översättning som tog slut halvvägs.
Vad den fångade, och vad den fångade felaktigt
En verklig träff: en fransk översättning kom in med fyra betonade ord där den engelska texten hade tre, eftersom en negation hade märkts upp i två delar. Ingenting såg fel ut. Antalet gjorde det.
Två falsklarm, båda samma dag, båda lärorika.
Det första: ett inlägg citerar en rad CSS, och CSS slutar med }}. Klammerkontrollen räknade varje {{ och varje }}, så varje översättning av det inlägget föll igenom fast inget var fel. En }} utan en {{ kan inte vara en trasig platshållare — platshållare börjar med {{ — så nu räknas bara den öppnande sidan.
Det andra: <rect/> och <path/> har ingen sluttagg, så ett balanstest rapporterar dem som obalanserade för alltid. Tomma element räknas nu i stället för att balanseras.
Båda kostade en arbetsrunda, och i båda fallen var kontrollen för sträng snarare än för slapp. Det är den bättre riktningen att fela åt, men den är inte gratis: en kontroll som ropar varg blir uppluckrad av den som har bråttom, och sedan finns den inte där när det gäller.
Testet som betydde mest
När diagram lades till i inläggen utökades taggkontrollen till att omfatta dem. I stället för att lita på det testades kontrollen: ett diagram togs medvetet bort ur en översättning och importen kördes.
Den rapporterade exakt vad som saknades — diagrammet, dess tio etiketter, dess fyra rektanglar, dess sju banor — och vägrade skriva raden. Diagrammet återställdes och kontrollen gick igenom igen.
Det tog två minuter. En verifiering som aldrig har setts slå larm är en verifiering som man bara antar fungerar, och att anta är just det som allt det här finns till för att undvika.