Scratch – Übersetzer programmieren
Dies ist eine Aufgabe aus dem Bereich der fortgeschrittenen Scratch-Programmierung. Du lernst einen Deutsch-Englisch Scratch-Übersetzer zu programmieren. Dabei verwendest du Scratch-Erweiterungen, den Eingabeblock, Nachrichten und arbeitest mit eigenen Blöcken kennen.
Ich gehe in diesem Blogbeitrag davon aus, dass du bereits einige Kenntnisse im Umgang mit Scratch hast und werde einige Punkte weniger ausführlich erklären. Falls du noch keine Scratch-Kenntnisse hast oder deine Kenntnisse erst etwas auffrischen möchtest, empfehle ich dir zunächst meinen Scratch-Einstiegskurs zu bearbeiten.
Ausprobieren
Bevor du mit dem Programmieren deines eigenen Übersetzers beginnst, kannst du zunächst das von mir entwickelte Programm ausprobieren. Ich habe einen Babelfish programmiert, der vom Deutschen ins Englische übersetzt. Du kannst im Eingabefeld beliebige Wörter oder ganze Sätze eintragen. Schalte den Sound an deinem Rechner an, damit du meinen Babelfish auch sprechen hören kannst.
Kurzanleitung
Zur vollständigen Anleitung wechseln
Mit der Kurzanleitung stelle ich dir einen schnellen Einstieg in die Programmierung deines Übersetzers zur Verfügung. Sie eignet sich besonders, wenn du dich bereits gut mit der Programmierung von Scratch auskennst. Falls du eine detailliertere Anleitung bzw. genauere Informationen zu den einzelnen Schritten benötigst, dann nutze doch die vollständige Anleitung weiter unten in diesem Blogbeitrag.
Öffne nun den Programmcode meines Beispielprogrammes. Nutze dafür einfach den folgenden Link: https://scratch.mit.edu/projects/638089110/editor/.
Schau dir meinen Übersetzer genau an. Das Programm besteht lediglich aus einem Bühnenbild (Unterwasserwelt) und einer Figur (Babelfish). Besonders in diesem Programm ist, dass ich für die Figur in der Blockauswahl die beiden Erweiterungen „Text-zu-Sprache“ und „Übersetzung“ aktiviert habe. Diese werden im Programm verwendet, um die Figur sprechen zu lassen und um die eingegebenen Texte zu übersetzen.
Nun bist du dran: Suche dir ein eigenes Hintergrundbild und eine eigene Figur aus.

Aktiviere anschließend den Erweiterungsblock „Text zu Sprache“ über die Blockauswahl ganz unten links.
Übernimm dann die Programmsequenzen aus dem Beispielprogramm in deines eigenes Programm. Alle Sequenzen habe ich in Scratch mit Kommentaren versehen, die dir die Funktionsweise der einzelnen Abschnitte genauer erklären. Neu in diesem Programm ist, die Arbeit mit eigenen Blöcken und Nachrichten. Lies dir die Kommentare gut durch, sie erklären dir genauer wie die jeweiligen Programmsequenzen funktionieren.

Wenn du alle Code-Blöcke in dein eigenes Programm übernommen hast, dann kannst du dieses über das kleine grüne Flaggen-Symbol starten.
Teste nun deinen Übersetzer und probiere aus, ob alles funktioniert wie geplant. Spricht deine Figur die eingegebenen Texte laut aus? Kannst du selbst eigene Wörter und Texte zum Übersetzen eingeben? Wird auch richtig übersetzt? Wenn alles funktioniert wie erwartet, dann zeige deinen Übersetzer deiner Familie oder deinen Freund:innen und lass‘ ihn durch diese testen. Falls dein Übersetzer noch nicht richtig funktioniert, dann schau doch mal, ob du mit Hilfe der vollständigen Anleitung weiter unten in diesem Blogbeitrag deine Probleme beheben kannst.
Gut gemacht! Du hast in Scratch deinen eigenen Übersetzer programmiert und dabei Scratch-Erweiterungen genutzt. Außerdem weißt du nun, wie du die Nutzer:innen deines Scratch-Programmes dazu auffordern kannst, Texteingaben zu machen und wie du die eingegebenen Texte im Scratch-Programm weiterverarbeitest.
Herausforderungen
Möchtest du dein Programm noch etwas weiter erweitern, dann versuch dich doch selbstständig an einer dieser Herausforderungen:
- Ermögliche die Übersetzung in unterschiedliche Sprachen. Du könntest dafür beim Programmstart eine Auswahl der verfügbaren Sprachen anbieten.
- Nutze unterschiedliche Figuren, um in die unterschiedlichen Sprachen zu übersetzen. Du kannst dafür mit verschiedenen Kostümen oder mit mehreren Figuren arbeiten.
- Ergänze deine Figur mit einer umfangreichen Animation, jedes Mal wenn diese übersetzt. Du könntest die Figur zum Beispiel zu einer Kiste mit Büchern gehen und die Übersetzung in einem Buch heraussuchen lassen.
Vollständige Anleitung
Schritt 1: Bühnenbild und Figur auswählen
Öffne zunächst die Scratch Entwicklungsumgebung und erstelle eine neues Programmierprojekt. Du kannst dafür den nachfolgenden Link nutzen:
Wähle dir nun ein Bühnenbild und eine Figur in Scratch aus oder zeichne diese selbst. Wie das geht, hast du bereits in meinen Scratch-Einstiegskurs gelernt.
Schritt 2: Erweiterungsblöcke einschalten
Für diese Aufgabe wirst du das erste Mal mit Erweiterungen in Scratch arbeiten. Erweiterungen sind neue Blöcke, die dir noch mehr Funktionalitäten zur Verfügung stellen, um dein Scratch-Programm zu gestalten. Wenn du ein neues Scratch-Projekt erstellst, werden die verschiedenen Erweiterungsblöcke noch nicht angezeigt. Die Blockübersicht beschränkt sich auf die wichtigsten Blöcke, die du benötigst, um deine Figuren zu bewegen, deren Aussehen zu verändern und so weiter. Wenn du eine Erweiterung nutzen möchtest, dann musst du die Erweiterung zunächst aktivieren. Das machst du über die folgende Schaltfläche, die du in Scratch in der Blockübersicht ganz unten links findest:

Klicke die Schaltfläche an. Es öffnet sich eine Übersicht, die dir alle verfügbaren Erweiterungen zur Auswahl stellt.

Wähle hier nun die Erweiterung „Text zu Sprache“ aus, indem du diese einfach anklickst. Du gelangst nun automatisch wieder in die Programmübersicht deiner Figur und siehst die Erweiterung nun in der Blockübersicht links unterhalb des Bereichs „Meine Blöcke“.

Wiederhole nun die Schritte zum aktivieren einer Erweiterung und ergänze noch die Erweiterung „Übersetzen“. Nachdem du auch diese Erweiterung hinzugefügt hast, wird dir diese ebenfalls in der Blockübersicht angezeigt. Jetzt bist du bereit, um mit der Programmierung deiner Figur zu beginnen.

Schritt 3: Eigenen Block zum Sprechen programmieren
Nun beginnst du mit der Programmierung deiner Figur. Achte darauf, dass du dich nicht in der Programmieroberfläche des Bühnenbildes befindest, sondern deine Figur durch Anklicken in der Figurenauswahl aktiviert hast.
In dieser Aufgabe werden wir das erste Mal mit eigenen Blöcken arbeiten. Lies dir zunächst die grundlegende Erklärung zu eigenen Blöcken im nachfolgendem Kasten durch.
Erklärung: Eigene Blöcke
Eigene Blöcke helfen dir deinen Programmcode zu vereinfachen und übersichtlicher zu gestalten. Anstatt den selben Code an mehreren Stellen identisch zu programmieren, schreibst du ihn nur einmal in einem eigenen Block. Diesen eigenen Block kannst du dann an verschiedenen Stellen einbinden. Du kannst den eigenen Block beim Einbinden auch beliebige Werte übergeben, die du vorher festlegst. Diese Werte werden „Parameter“ genannt. Parameter sind wie Variablen. Der Unterschied ist jedoch, dass du mit den Parametern nur in deinem eigenen Block arbeiten kannst. Mit Variablen arbeitest du im ganzen Scratch-Programm. Du kannst dir noch immer nicht so richtig vorstellen, was ein eigener Block ist? Dann schau dir folgendes Beispiel an. In diesem Beispiel möchtest du, dass deine Figur jedes Mal einen Ton von sich gibt, bevor sie geht. Dafür wird ein neuer eigener Block gehen (x) (y)
angelegt. In diesem wird ein Klang abgespielt und anschließend der vorhandene Block gehe zu x: (x) y: (y)
genutzt. Im Programm kannst du nun immer den neuen Block nutzen, indem du die gewünschten x- und y-Positionen ergänzt (gehen (10) (20)
).

Neuen Block anlegen
Für unser Übersetzungsprogramm werden wir einen eigenen Block definieren, in dem das Sprechen unserer Figur programmiert wird. Als Parameter werden wir dem Block den Text, der gesprochen wird, sowie die Sprache, in der gesprochen wird, übergeben. Wechsle nun zunächst in den Blockabschnitt „Meine Blöcke“.

Zum Anlegen eines neuen eigenen Blockes musst du die Schaltfläche „Neuer Block“ anklicken.

Es öffnet sich ein Eingabefenster, in dem du deinen eigenen Block anlegen kannst.

Als erstes wirst du nun den Namen für deinen Block ändern. Ersetze dafür die Bezeichnung „Blockname“ durch den Text „Spreche den Text:“.

Als nächstes fügst du den ersten Parameter ein. Nutze dafür diese Schaltfläche:

Nenne den Parameter um, indem du einfach in das Feld in der Blockanzeige klickst. Vergebe den Namen „Text“.

Nun fügen wir einen weiteren Textteil in unserem Blocknamen ein. Nutze dafür diese Schaltfläche:

Passe die neue Beschriftung mit dem Text „in Sprache:“ an.

Im letzten Schritt ergänzt du nun einen zweiten Parameter (Eingabefeld vom Typ „Text oder Zahl“), den du als „Sprache“ bezeichnest.

Nun hast du deinen eigenen Block fertig erstellt und musst diesen noch über die Schaltfläche „OK“ speichern.

Dein neuer Block wird nun automatisch angelegt und er steht dir in der Blockauswahl zur Verfügung.

Eigenen Block definieren
Nachdem du deinen eigenen Block angelegt hast, musst du nun noch programmieren, was dieser Block tun soll. Für unseren Übersetzer sieht der Programmcode wie folgt aus:

In dieser Programmsequenz passieren nun einige Dinge, die für dich neu sind.
Nachricht verschicken
Als erstes wird eine Nachricht versendet. Lies dir zunächst die nachfolgende, allgemeine Erklärung zu Nachrichten gut durch, bevor du mit dem Programmieren deines Übersetzers fortfährst.
Erklärung: Nachrichten
In Scratch kannst du Nachrichten verwenden, wenn ein Ereignis eintritt, über das du die verschiedenen Skripte deines Programmes informieren willst. An einigen Stellen nutzt Scratch diese Nachrichten intern, ohne das du etwas davon mitbekommst. Wenn du beispielsweise die kleine grüne Flagge anklickst, dann wird automatisch die Nachricht „Programm gestartet“ verschickt. Dein Programmcode kann dann auf dieses Ereignis reagieren, indem du den Ereignisblock Wenn (grüne Flagge) angeklickt wird
nutzt. Du kannst beliebige eigene Nachrichten erstellen und verschicken. Du findest die passenden Blöcke in der Blockübersicht im Bereich „Ereignisse“. Nutze den Block sende (Nachricht1) an alle
, um eine eigene Nachricht zu verschicken. Mit dem Block Wenn ich [Nachricht1] empfange
kannst du dann an anderer Stelle auf dein Ereignis reagieren.

Für unseren Übersetzer wollen wir nun eine Nachricht versenden, die das Programm darüber informiert, dass die Figur gerade spricht. Nutze zum Versenden der Nachricht den Block sende (Nachricht1) an alle
aus dem Blockbereich „Ereignisse“. Klicke anschließend auf den Text „Nachricht1“ des Blockes. Es öffnet sich eine kleine Auswahl. Klicke hier „Neue Nachricht“ an.

Vergib nun einen neuen Namen für deine Nachricht. Ich habe den Namen „Figur spricht jetzt“ angegeben.

Sprachausgabe
Im nächsten Schritt ergänzen wir nun die Sprachausgabe in deinem eigenen Block. Du nutzt dafür die Blöcke aus der Erweiterung „Übersetzung“. Die Sprachausgabe erfolgt in zwei Schritten.

Als erstes musst du deiner Figur sagen, in welcher Sprache diese sprechen soll. Nutze dafür den Block setze Sprache auf (Deutsch)
. Statt der voreingestellten Sprache „Deutsch“ musst du die Sprache aus deinem Parameter „Sprache“ verwenden. Sie dir im nachfolgenden Bild an, wie das geht: Klicke mit deiner linken Maustaste im Block Definiere [Spreche ...]
auf den Parameter. Halte dann die linke Maustaste gedrückt und ziehe den Parameterblock nach unten. Wenn sich dein Mauszeiger über dem Auswahlfeld „Deutsch“ im Block setze Sprache auf (Deutsch)
ist, dann lässt du die linke Maustaste los.

Als zweites ergänzt du nun noch den Erweiterungsblock sage (Hallo)
und ersetzt den Wert (Hallo)
durch den Parameter „Text“.
Abschluss Sprachausgabe
Nachdem deine Figur den gewünschten Text gesprochen hat, müssen wir die Sprachausgabe noch ordentlich beenden. Später werden wir in einem zweiten Skript programmieren, dass deine Figur während des Sprechens eine Animation ausführt. Wenn die Sprachausgabe beendet ist, wollen wir diese Animation stoppen. Dafür ändern wir das Kostüm unserer Figur auf das Ausgangskostüm zurück (wechsle zu Kostüm (...)
), stoppen das andere Animationsskript (stoppe [andere Skripte der Figur]
) und warten einen kurzen Moment (warte (1) Sekunden
).

Schritt 4: Animation beim Sprechen programmieren
Benötigte Kostüme erstellen
Wie im letzten Schritt bereits angekündigt, programmieren wir als nächstes eine Animation für unsere Figur. Dafür benötigt deine Figur mehrere Kostüme. Ein Kostüm mit geschlossenem Mund und ein Kostüm mit offenem Mund. Da mein Fisch noch kein Kostüm mit offenem Mund besaß, habe ich einfach ein eigenes Kostüm erstellt. Ich habe dafür das erste Kostüm (pufferfish-a) per Rechtsklick in der Kostümübersicht dupliziert und anschließend im neuen Kostüm (pufferfish-a2) den offenen Mund selbst gezeichnet.



(Zum Vergrößern anklicken)
Animation programmieren
Sobald du die beiden benötigten Kostüme für deine Figur erstellt hast, kannst du die Animation programmieren.

Die Programmierung ist eigentlich ganz einfach. Du startest die Animation sobald dein eigener Block aus Schritt 3 die Nachricht „Figur spricht jetzt“ versendet hat (Wenn ich [Figur spricht jetzt] empfange
). Von diesem Zeitpunkt an wirst du fortlaufend (wiederhole fortlaufend
) zwischen den beiden Kostümen für den offenen und den geschlossenen Mund wechseln (wechsle zu Kostüm (...)
). Zwischen den Wechseln baust du noch eine kleine Pause ein (warte (0.2) Sekunden
), damit jedes Kostüm auch für einen kurzen Moment sichtbar ist. Probiere selbst aus, welche Pausenzeit du passend findest. Ich habe mich für eine Länge von 0.2 Sekunden entschieden. Wenn du etwas mehr Abwechselung einbauen willst, kannst du statt mit einer festen Länge auch mit dem Zufallszahlen-Operator arbeiten.

Schritt 5: Übersetzer programmieren
Im letzten Schritt programmieren wir nun den eigentlicher Übersetzer. Das passiert in drei Schritten: der Programmierung eines Intros, der Abfrage des Textes der übersetzt werden soll und zum Schluss der Übersetzung und Ausgabe des Textes.

Intro programmieren
Zum Start des Programmes spricht die Figur zunächst ein paar einleitende, erklärende Sätze. Dafür wird als erstes mit Hilfe des Erweiterungsblockes ändere die Stimme zu (Tenor)
festgelegt, wie die Sprachausgabe klingen soll. Du kannst hier ebenso wie ich „Tenor“ für eine tiefe, männliche Stimme wählen oder du wählst eine beliebige andere Stimmfarbe aus. Anschließend benutzen wir unseren eigenen Block, denn wir in Schritt 3 erstellt haben (spreche den Text: (...) in Sprache: (Deutsch)
), um eine Begrüßung auszusprechen und die Nutzer:innen aufzufordern, einen Text einzugeben. Als Ausgabesprache verwenden wir dabei den festen Wert „Deutsch“.

Eingabeaufforderung für Text
Der Code, der auf das Intro folgt, wird in einer fortlaufenden Schleife abgeprüft (wiederhole fortlaufend
). Damit die Nutzer:innen einen eigenen Text eingeben können, musst du den Block frage (...) und warte
aus dem Blockbereich „Fühlen“ verwenden. Ergänze im Block deine Eingabeaufforderung („Schreib mir….“).

Beim Ausführen deines Übersetzers sieht das dann später wie in dem nachfolgenden Bild aus. In das Eingabefeld am unteren Bildschirmrand kann mit der Tastatur ein Text eingegeben werden.

Übersetzen
Im letzten Schritt muss noch der von den Nutzer:innen eingegebene Text übersetzt werden. Die Übersetzung befindet sich in der fortlaufenden Schleife direkt nach dem Frage-Block. Für die Übersetzung nutzen wir den Erweiterungsblock (übersetze (Antwort) nach (Englisch))
. Die Variable „Antwort“ findest du im Bereich „Fühlen“. Sie enthält den Text, den die Nutzer:innen im Übersetzer eingegeben haben. Für die Sprachausgabe nutzen wir wieder unseren eigenen Block zum Sprechen. Als Text-Parameter übergeben wir dem Block die übersetzte Antwort und als Sprache-Parameter übergeben wir den festen Wert „Englisch“.

Geschafft!
Du hast es nun geschafft und deinen eigenen Übersetzer geschrieben. Zeit ihn auszutesten! Wenn du dein Programm im Anschluss noch etwas erweitern möchtest, dann schau‘ dir doch noch die Herausforderungen dieser Aufgabe am Ende der Kurzanleitung an.