Klingonischer Übersetzungsdienst


Geschichte

In dieser Übung stellst du einen TranslationService bereit, mit dem zahlende Mitglieder eine gewisse Qualitätssicherung erhalten.

Du hast eine magische Übersetzungs-API gefunden, die jede Übersetzungs_anfrage_ in angemessener Zeit erfüllen kann, und das willst du ausnutzen.

Die magische API hat eine sehr minimale Schnittstelle:

Eine Übersetzung abrufen

api.fetch(text) ruft die Übersetzung von text ab und gibt zwei Werte zurück:

  • translation: die eigentliche Übersetzung
  • quality: die Qualität, ausgedrückt als Zahl

Wenn keine Übersetzung verfügbar ist (weil sie noch nicht angefragt wurde), wirft die API einen Fehler. Das passiert auch, wenn ein Textstück nicht übersetzbar ist.

Eine Übersetzung anfragen

api.request(text, callback) fragt die Übersetzung von text an und ruft callback auf, sobald sie fertig ist, ohne Wert.

Die request-API ist instabil. Das bedeutet, dass die API manchmal callback mit einem Fehler aufruft. Wenn das passiert, ist es in Ordnung, erneut anzufragen.

⚠ Warnung! ⚠

Weil einige frühere Nutzer beim Programmieren faul waren und immer eine Übersetzung angefragt haben, ohne überhaupt zu prüfen, ob der Text schon übersetzt war, gibt die API einen Fehler zurück, wenn der Text bereits übersetzt wurde. Dann blockiert sie jeden Zugriff vollständig, für immer.

Aufgaben

Dies sind Beispiele für Aufgaben, die zur Geschichte des Übersetzungsdienstes passen:

  • Eine Übersetzung abrufen und die Qualität ignorieren
  • Einen Stapel Übersetzungen abrufen, alles oder nichts
  • Eine Übersetzung anfragen und höchstens zweimal wiederholen
  • Eine Übersetzung abrufen, die Qualität prüfen oder sie anfragen

Terminologie

Dies sind Empfehlungen, keine Regeln, für wiederkehrende Begriffe in den Anweisungen (einschließlich der Kommentare in Stubs)

  • Die injizierte Abhängigkeit heißt TranslationService oder API
  • Der Dienst ist asynchron, aber das wird nie erwähnt
  • Ein Fehler bei einem Future ist die API wirft einen Fehler
  • Ein Fehler bei einem Callback ist die API ruft callback mit einem Fehler auf

Alle Übersetzungstexte gehen von Klingonisch nach Englisch.

Implementierungen

Referenz

Anmerkung

Die korrekte Übersetzung von 'arlogh Qoylu'pu'? ist How many times has it been heard?.