Blog ·
Drei Fehler, die kein Skript sehen konnte
Acht Artikel in acht Sprachen, automatisch geprüft und grün. Ein Leser fand eine erfundene Zahl, einen halben Satz und einen Titel, dem jeder Link widersprach.
Von Provibr
Wir veröffentlichen in neun Sprachen. Englisch ist die Quelle und die anderen acht sind Übersetzungen, und darum herum steht eine Mauer aus Automatisierung: ein Strukturvergleich, der prüft, dass Überschriften, Tabellen und Listen zueinander passen, ein Faktenvergleich, der die Codefragmente und die Zahlen aus jedem Absatz zieht und Übereinstimmung verlangt, ein Typografietest je Sprache, eine Linkprüfung, eine Tabellenprüfung, ein Layoutdurchlauf bei 390 Pixeln.
Acht Artikel hatten das alles bestanden. Dann ging ein zweiter Leser diese acht in acht Sprachen durch und fand in jedem einzelnen Dinge zum Verbessern: 44 im Niederländischen, 40 im Deutschen, 47 im Spanischen, 35 im Französischen, 39 im Italienischen, 22 im Portugiesischen, 55 im Rumänischen, 23 im Ukrainischen und 18, die über Sprachen hinweg gingen. Der Diff war genau 307 Zeilen heraus und 307 Zeilen hinein über 62 Dateien.
Das meiste davon ist gewöhnliche Übersetzungsqualität: ein abgerutschtes Register, ein Satzteil, der sich wie Maschinenausgabe liest, ein Begriff, der nicht das ist, was die Branche in dieser Sprache sagt. Drei davon sind von anderer Art, und diese drei sind der Grund, warum sich das aufzuschreiben lohnt.
Eine Zahl, die niemand gemessen hat
Ein Artikel beschrieb eine Kalibriersonde: ein Skript, das absichtliche Defekte auf einer Seite pflanzt und dann verlangt, dass der Detektor sie findet, damit sich ein Lauf, der null Befunde meldet, von einem Lauf unterscheiden lässt, der nicht hingesehen hat.
Vier der acht Übersetzungen sagten, die Sonde verlange drei Befunde.
Niemand hatte das geprüft, denn eine Zahl in einem Satz über das Werkzeug eines anderen sieht wie eine geerbte Tatsache aus. Das Skript pflanzt drei Elemente und verlangt vier Arten von Befund. Der Quelltext, auf Englisch, sagte zwei. Eine während der Durchsicht geschriebene Notiz sagte drei. Die Übersetzungen mitgezählt sind das drei Aussagen über die Zahl und zwei verschiedene Werte, und keiner dieser Werte ist die Zahl, die das Skript verlangt; jeder war getreulich in mehrere Sprachen getragen worden.
Die Reparatur bestand nicht darin, die Zahl zu berichtigen. Sie bestand darin, sie zu entfernen. Der Satz benennt die drei gepflanzten Defekte jetzt danach, was sie sind, und keine Übersetzung nennt überhaupt eine Anzahl, denn eine Anzahl an dieser Stelle fügt nichts hinzu, was ein Leser braucht, und ist einem Skript ausgeliefert, das irgendwann jemand ändert.
Die allgemeine Gestalt: eine Zahl, die aus einer Zusammenfassung statt aus der Sache selbst stammt, wird abdriften, und sie driftet still ab, denn sie ist immer noch eine plausible Zahl.
Ein Satz, der seine zweite Hälfte verlor
Ein englischer Satz stellte einen Gegensatz her: das ist eine Verweigerung und kein Rückfall. In zwei Sprachen überlebte nur die erste Hälfte. Was übrig blieb, war grammatisch, flüssig und sagte etwas Schwächeres und leicht anderes als die Quelle.
Interessant ist, wie das gefunden wurde. Sechs der acht Leser, die unabhängig voneinander an ihrer eigenen Sprache arbeiteten, markierten denselben Satz. In sechs Sprachen war er schon richtig. Zwei hatten den Gegensatz verloren, und sie waren der Grund, warum er immer wieder auftauchte.
Ein Strukturvergleich kann das nicht sehen, denn ein Absatz, der einen Satzteil kürzer ist, ist immer noch ein Absatz. Ein Faktenvergleich kann es nicht sehen, denn darin steht keine Zahl und kein Codefragment. Das Einzige, was einen verlorenen Gegensatz abfängt, ist jemand, der den Satz liest und fragt, wozu er im Gegensatz steht.
Ein Titel, der jedem Link widersprach, der auf ihn zeigte
Unsere Artikel verlinken einander. Die englische Quelle von Artikel vier hatte einen Titel, der beschrieb, wie eine Sache neben einer anderen steht, und jeder eingehende Link benutzte dieselbe Formulierung.
In vier Sprachen war der Titel als unter übersetzt worden und jeder eingehende Link als neben. Ein Leser klickte also auf einen Link, der das eine versprach, und landete auf einer Seite, deren Überschrift etwas anderes behauptete.
Die Linkprüfung lässt das ohne Beanstandung durch, und es lohnt sich, genau zu sagen, warum: sie prüft, dass das Ziel eines Links existiert und antwortet. Ein Link mit dem falschen Text zeigt auf eine Seite, die existiert. Es gibt nichts, was eine HTTP-Prüfung bemerken könnte.
Die Behebung ist eine Regel und keine Reparatur: der Titel eines Artikels und jeder Link, der auf ihn zeigt, sind in einer Übersetzung eine Zeichenkette, und sie werden als eine Zeichenkette durchgesehen. Das ist leicht gesagt und leicht vergessen, denn die beiden leben in verschiedenen Dateien.
Zwei neue Wachen, und warum eine davon rückwärts zählen muss
Zwei dieser drei sind jetzt automatisiert, und die Automatisierung wurde rot bewiesen, bevor ihr vertraut wurde, auf einer Kopie des Baums mit hineingepflanzten Defekten.
Die erste Wache deckt unübersetzbare Namen außerhalb von Codefragmenten ab. Der Faktenvergleich deckt bereits alles ab, was in Backticks steht. Was er nicht sehen kann, ist ein Produktname, ein Protokollname oder ein Menüeintrag, der ohne sie im laufenden Text steht: das sind genau die Token, die Übersetzer übersetzen, dem Instinkt nach richtig und in der Sache falsch. In einer früheren Runde hatten drei Sprachen den Namen eines Menüs übersetzt; in einer anderen hatten alle acht eine CSS-Eigenschaft aus einem Codefragment geholt und zu Prosa gemacht.
Die zweite Wache deckt als Wörter geschriebene Zahlen ab. Der Faktenvergleich normalisiert Ziffern über Sprachen hinweg, ein Tausendertrennzeichen als Punkt, als Leerzeichen oder als Komma gilt also als gleich. Er ist von der Konstruktion her blind gegenüber einer ausgeschriebenen Zahl, und in diesem Hausstil ist fast jede Zahl in der englischen Quelle ausgeschrieben.
Diese Wache hat eine Feinheit, die eine erste Fassung ihre Glaubwürdigkeit kostete. Sie zählt die Vorkommen jedes Wertes je Artikel, in der Quelle als Wort oder als Ziffer und in jeder Übersetzung als Zahlwort dieser Sprache oder als Ziffer. Die naive Umsetzung zählt jeden Wert unabhängig, und dann wird „einundvierzig“ auch als Vorkommen von „vierzig“ gezählt. Beim ersten Lauf ergab das 37 Fehlalarme, was mehr als genug ist, damit jemand zu dem Schluss kommt, die Wache sei Rauschen, und aufhört, sie zu lesen.
Die Behebung ist, vom größten Wert abwärts zu zählen und jeden Treffer beim Finden aus dem Text zu löschen, sodass zu dem Zeitpunkt, an dem nach „vierzig“ gesucht wird, jedes „einundvierzig“ verschwunden ist. Das ist ein kleines Umsetzungsdetail mit einer großen Folge: eine Wache, die falschen Alarm schlägt, ist schlimmer als gar keine Wache, denn sie erzieht die Leute dazu, eine Zeile in der Ausgabe zu überspringen.
Worin sich der Leser irrte
Ein Befund in der Durchsicht war selbst unrichtig, und er ist lehrreich.
Der niederländische Leser meldete, die Hervorhebung eines bestimmten Wortes sei in allen acht Sprachen verloren gegangen. Sechs der acht hatten sie. Der niederländische Leser konnte eine Datei richtig sehen und hatte den Rest erschlossen.
Das ist jetzt eine Regel: ein Leser, der an einer Sprache arbeitet, berichtet über diese Sprache. Eine Aussage über acht Dateien ist eine Messung, und dafür braucht es ein Skript oder acht offene Dateien und keinen Eindruck.
Es gab einen verwandten Befund, der sich als echte Spaltung statt als Fehler herausstellte. Vier der acht niederländischen Artikel benutzten das förmliche Register und vier das vertraute. Über den gesamten niederländischen Katalog hinweg sind 47 von 90 Dateien förmlich. Das ist kein Defekt, den man in acht Dateien behebt; es ist eine Entscheidung, die einmal getroffen und überall angewendet werden muss, und die Runde hat sie aufgeschrieben, statt still eine Seite zu wählen.
Sechs Dinge, die in der Quelle falsch waren
Die Durchsicht brachte außerdem sechs Befunde hervor, die überhaupt keine Übersetzungsprobleme waren. Das Englische war falsch, und acht Sprachen hatten das Falsche getreulich übersetzt.
Diese wurden bewusst nicht in acht Sprachen behoben. Sie wurden gegen die Quelle gemeldet und in einer eigenen Runde behandelt, die zuerst das Englische änderte und dann jeden berichtigten Satz durch die acht Übersetzungen zog, damit die acht Übersetzungen von etwas blieben, statt acht unabhängige Reparaturen desselben Satzes zu werden.
Diese Runde fand ebenfalls etwas: die Notiz, die einen der sechs beschrieb, hatte selbst die Zahlen falsch, und daher stammt die Anzahl im ersten Abschnitt dieses Artikels. Eine Korrektur, die nicht gegen die Quelle geprüft wird, ist bloß eine weitere Behauptung.
Was wir aufschreiben würden
- Automatisierung prüft Form und Fakten; sie prüft keine Bedeutung. Jeder einzelne dieser acht Artikel war grün.
- Eine Zahl, die Sie aus einer Zusammenfassung geerbt haben, wird irgendwann falsch sein. Prüfen Sie sie gegen die Sache, oder entfernen Sie sie.
- Die beste Reparatur für eine brüchige Zahl ist oft gar keine Zahl. Benennen Sie die Dinge, statt sie zu zählen.
- Ein verlorener Gegensatz hinterlässt einen grammatischen Satz. Nur ein Leser findet ihn.
- Sechs Leser, die denselben Satz markieren, sind ein Signal über die Quelle, nicht über sechs Übersetzungen.
- Ein Link mit dem falschen Text zeigt auf eine Seite, die existiert. Keine HTTP-Prüfung wird das je bemerken.
- Ein Titel und jeder Link darauf sind eine Zeichenkette. Sehen Sie sie zusammen durch, obwohl sie getrennt liegen.
- Beweisen Sie eine neue Wache rot, bevor Sie ihr grün glauben. Pflanzen Sie den Defekt auf einer Kopie des Baums.
- Eine Wache mit Fehlalarmen wird ignoriert, was schlimmer ist, als sie nicht zu haben. Zählen Sie von groß nach klein und verbrauchen Sie, was Sie treffen.
- Ein Leser berichtet über seine eigene Sprache. Eine Aussage über acht Dateien ist eine Messung.
Zur Klarheit: der Faktenvergleich lief über 2432 Absätze ohne Befund, der Strukturvergleich über acht Artikel in acht Sprachen ohne Befund, die Token-Wache 248 Prüfungen und die Zahlwortwache 240 Prüfungen ohne Befund, die Inhaltsprüfung 815 von 815 erzeugten Dateien Byte für Byte gleich, die Web-Suite 4572 grün, die Metadatenprüfung 288 von 288, Links 153 von 153, Tabellen 198 von 198 und der Layoutdurchlauf 168 von 168 bei 390 Pixeln gegen einen Produktionsbuild. Der Typografietest wurde mit gepflanzten Defekten bei 28 bestandenen und 3 gescheiterten Prüfungen rot bewiesen und war danach bei 31 grün. Nicht bewiesen: es gibt weiterhin einen Leser je Sprache, und keiner von ihnen ist Muttersprachler, und in dieser Runde gab es keine Messung von Barrierefreiheit oder Layoutverschiebung. Zwei Terminologiefragen wurden eskaliert statt entschieden.
Aus der Plattformarbeit an Provibr. Was neun Kataloge mit einem Satz fester Bedienelemente anstellen, steht in Sechzehntausend Schlüssel, neun Sprachen, und ein Umwandlungsskript, das drei Artikel beschädigte, auf die es nie gerichtet war, steht in Ein Umwandlungsskript, das zu weit lief.