Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Wie mache ich meine Projekte mehrsprachig?

In diesem Tutorial wird erklärt, wie man Projekte in mehreren Sprachen macht.

Viele Scratcher, die nicht Englisch als Muttersprache haben, kennen das Problem: Man entwickelt ein Projekt zuerst in seiner Muttersprache, möchte aber auch, dass es international gesehen und verstanden wird. Das geht besser, wenn es auch auf Englisch verfügbar ist. Dazu gibt es verschiedene Möglichkeiten:

Remix

Die einfachste Variante. Man veröffentlicht das ganze Projekt als Remix ein zweites Mal in Englisch. Ein Nachteil dabei ist, dass man alle späteren Änderungen dann in zwei Projekten pflegen muss und natürlich alle Views, Likes und Kommentare für die beiden Projekte separat sind, anstatt gemeinsam in die Bewertung des Projektes einzugehen.

Mehrsprachigkeit innerhalb eines Projekts

Dazu muss man zunächst einen Schalter einbauen, mit dem die Sprache ausgewählt wird. Die ausgewählte Sprache wird in einer Variablen abgelegt.

Wenn ich angeklickt werde
  setze [Sprache v] auf [Englisch]

Danach gibt es wieder verschiedene Möglichkeiten.

Überlege, wie du die Sprache vor oder während des laufenden Projekts umschalten kannst. Hier siehst du ein Beispielprojekt, in dem die Sprache vor dem Spiel ausgewählt wird.

Satzweise Verzweigung

Bei wenigen gesagten oder gedachten Sätzen im Projekt kann man einfach satzweise verzweigen. Beispiel:

falls <(Sprache) = [Deutsch]>
  sage [Guten Morgen!] für (2) Sek.
sonst
  sage [Good morning!] für (2) Sek.
ende
falls <(Sprache) = [Deutsch]>
  sage [Mein Name ist Hase.] für (2) Sek.
sonst
  sage [My name is Hase.] für (2) Sek.
ende
falls <(Sprache) = [Deutsch]>
  sage [Ich weiß von nichts.] für (2) Sek.
sonst
  sage [I don't know anything.] für (2) Sek.
ende

Das Skript wird dadurch länger und unübersichtlicher. Ab einer gewissen Länge kann es deshalb besser sein, mit ganz getrennten Programmblöcken zu arbeiten.

Blockweise Verzweigung

Wenn mehrere Sätze hintereinander gesagt werden sollen, ist es praktischer wenn man die Sprache nur am Anfang abfragt und dann eine ganze Reihe von Sätzen in der jeweils gewählten Sprache ablaufen lässt. Beispiel:

falls <(Sprache) = [Deutsch]>
  sage [Guten Morgen!] für (2) Sek.
  sage [Mein Name ist Hase.] für (2) Sek.
  sage [Ich weiß von nichts.] für (2) Sek.
sonst
  sage [Good morning!] für (2) Sek.
  sage [My name is Hase.] für (2) Sek.
  sage [I don't know anything.] für (2) Sek.
ende

Objektweise Verzweigung

Wenn man in noch größeren Einheiten arbeiten will, kann man natürlich auch Objekte jeweils doppelt programmieren und je nach gewählter Sprache ein anderes Objekt aktivieren. Beispiel:

Wenn ich [SprecherDeutsch v] empfange
zeige dich
sage [Guten Morgen!] für (2) Sek.
sage [Mein Name ist Hase.] für (2) Sek.
sage [Ich weiß von nichts.] für (2) Sek.
verstecke dich
stoppe [dieses Skript v]

Wenn ich [SprecherEnglisch v] empfange
zeige dich
sage [Good morning!] für (2) Sek.
sage [My name is Hase.] für (2) Sek.
sage [I don't know anything.] für (2) Sek.
verstecke dich
stoppe [dieses Skript v]

Arbeiten mit variabler Ausgabe und Listen

Wenn man seine Programme kompakt halten will, kann man das, was gesagt werden soll, auch variabel halten und jeweils aus einer Liste einlesen:

sage (Element (1 v)von [Ausgabeliste v]) für (2) Sek.
sage (Element (2 v) von [Ausgabeliste v]) für (2) Sek.
sage (Element (3 v) von [Ausgabeliste v]) für (2) Sek.

Wenn man etwas längere Listen hat, bei denen man nicht für jedes Element einen "Sage () für ()" Block benutzen kann eignet es sich auch, die Liste variabel abzutasten:

setze [i v] auf [1]
wiederhole (länge von [Ausgabeliste v]) mal
sage (Element (i) von [Ausgabeliste v]
ändere [i v] um [1]
end

Und in der Liste befindet sich das Skript

Mehrsprachen60AusgabeD.gif

Auf den ersten Blick bringt das noch nichts, im Gegenteil, es ist etwas umständlicher. Aber der Trick kommt jetzt. Weil man jetzt die Programmlogik von den Daten getrennt hat, kann man etwas anderes in die Liste schreiben, z. B. das hier:

Mehrsprachen62AusgabeE.gif

und die Figur sagt plötzlich das, ohne dass sich das Skript verändert hätte.

Wenn man jetzt eine zweite Liste in Englisch im Programm hinterlegt hat,

Mehrsprachen66DatenE.gif

kann man die Ausgabeliste damit überschreiben, um die Sprache zu wechseln. Wie man eine Liste in eine andere übertragen kann, zeigt das folgende Bild:

Wenn ich [ListeKopieren v] empfange
setze [i v] auf [1]
wiederhole (Länge von [Ausgabeliste v]) mal
  ersetze Element (i) von [Ausgabeliste v] durch (Element (i) von [Ausgabe Englisch v])
  ändere [i v] um (1)
ende

Ein Problem ist jetzt noch, dass nach dem Überschreiben die Ausgangssprache weg ist. Wenn man nur am Anfang des Projekts einmalig die Sprache wechseln will, macht das eigentlich nichts, aber richtig gut ist es auch nicht. Deshalb sollte man in einer dritten Liste auch noch einmal die deutsche Fassung hinterlegt haben.

64DatenD.gif

Dann kann man auch später im Programm wieder zurück wechseln, wenn man das möchte.

Natürlich kann man mit dieser Listenmethode auch ohne großen Zusatzaufwand mehr als zwei Sprachen abbilden. Man hält für jede Sprache eine Liste vor und lädt diese bei Bedarf in die Ausgabeliste.

Grafische Elemente

Die Listenmethode funktioniert nur, wo man unterschiedliche Sprachen für die Ausgabe mit ‚Sage’ oder ‚Denke’ braucht. Bei Texten in Hintergründen oder Kostümen kann man nur objektweise verzweigen oder ein getrenntes Projekt für die englische Fassung erstellen.

Zusammenfassung

Welche Variante man sinnvoll wählt, um seine Projekte zu internationalisieren, hängt von der Art des Projekts ab. Alle Methoden haben Vor- und Nachteile. Generell gilt aber: je weniger Text im Spiel ist, desto leichter wird es. Wenn man anstatt Text Bilder, international bekannte Symbole und Piktogramme verwendet, macht man sich selbst und dem Nutzer des Programms das Leben leichter. Ein Bild sagt bekanntlich mehr als tausend Worte.

Weiterführende Links



Code zum Einbinden ins Forum:
[wiki=de:Wie mache ich meine Projekte mehrsprachig?]Wie mache ich meine Projekte mehrsprachig?[/wiki]