Blog, który sprawdza własne tłumaczenia
Ten blog ma 64 wpisy w jedenastu językach: 704 wiersze i około 2,2 miliona znaków. Żaden wpis nie brakuje w żadnym języku — twierdzenie, które coś znaczy tylko wtedy, gdy coś je wymusza.
Coś wymusza. Zanim przetłumaczony wiersz zostanie zapisany, jest sprawdzany wobec angielskiego oryginału, a wiersz, który nie przejdzie, w ogóle nie jest zapisywany — zostaje zgłoszony i zostawiony człowiekowi do obejrzenia.
Po co jest każde sprawdzenie
Te same cele odnośników. Ścieżka wewnętrzna nie może się zmienić przy tłumaczeniu: /privacy zostaje /privacy w każdym języku, a przedrostek języka dokłada dopiero składanie strony. Tłumacz — człowiek czy nie — który usłużnie przełoży ścieżkę, tworzy odnośnik prowadzący donikąd.
Te same wypełniacze. Niektóre wpisy niosą liczby wstawiane przy budowaniu strony, żeby się nie zestarzały. Tłumaczenie, które gubi jeden z nich, gubi liczbę; takie, które jeden wymyśli, produkuje klamrę w środku zdania.
Ta sama liczba na znacznik. Nie tylko zbilansowane znaczniki — ta sama ich liczba co po angielsku. To sprawdzenie zasługuje na swoje miejsce: zgubiony wiersz tabeli, połknięty punkt listy czy brakujący wykres jest niewidoczny dla każdego innego testu, bo wynik nadal jest poprawnym HTML-em i czyta się bez zarzutu.
Długość w paśmie. Między połową a dwa i pół raza angielskiego. Języki naprawdę różnią się długością, więc pasmo jest szerokie; łapie ono tłumaczenie, które urwało się w połowie.
Co złapało i co złapało niesłusznie
Prawdziwy połów: francuskie tłumaczenie przyszło z czterema wyróżnionymi słowami tam, gdzie angielskie miało trzy, bo przeczenie oznaczono w dwóch kawałkach. Nic nie wyglądało źle. Liczba wyglądała.
Dwa fałszywe alarmy, oba tego samego dnia, oba pouczające.
Pierwszy: pewien wpis cytuje wiersz CSS, a CSS kończy się na }}. Sprawdzenie klamer liczyło każde {{ i każde }}, więc każde tłumaczenie tego wpisu przepadało, choć nic nie było zepsute. }} bez {{ nie może być rozbitym wypełniaczem — wypełniacze zaczynają się od {{ — więc teraz liczona jest tylko strona otwierająca.
Drugi: <rect/> i <path/> nie mają znacznika zamykającego, więc test bilansu na zawsze zgłasza je jako niezbilansowane. Elementy puste są teraz liczone, a nie bilansowane.
Oba kosztowały rundę pracy i oba były sprawdzeniem zbyt surowym, nie zbyt luźnym. To lepszy kierunek psucia się, ale nie jest darmowy: sprawdzenie, które podnosi fałszywy alarm, zostaje rozluźnione przez tego, komu się spieszy, i wtedy nie ma go, gdy zaczyna być potrzebne.
Próba, na której zależało najbardziej
Gdy wpisy dostały wykresy, sprawdzenie znaczników rozszerzono, by je objęło. Zamiast temu zaufać, sprawdzono samo sprawdzenie: z jednego tłumaczenia celowo usunięto wykres i uruchomiono importer.
Zgłosił dokładnie to, czego brakowało — wykres, jego dziesięć podpisów, cztery prostokąty, siedem ścieżek — i odmówił zapisania wiersza. Wykres przywrócono i sprawdzenie znów przeszło.
Zajęło to dwie minuty. Weryfikacja, której nigdy nie widziało się przy porażce, jest weryfikacją, którą się zakłada, a zakładanie to właśnie to, czemu wszystko to ma zapobiegać.