4. Übersetzen von R-BASIC Programmen

R-BASIC unterstützt das Übertragen von Programmen in eine andere Sprache sehr komfortabel. Der Einsteiger mag es für eine gute Idee halten, den Quellcode durchzugehen, jeden Textstring zu ändern und dann das Programm neu zu compilieren. Das wäre jedoch nicht nur mühsam und fehleranfällig, sondern müsste nach jeder noch so kleinen Änderung des Programms wiederholt werden.

Deswegen wird mit R-BASIC ein 'Übersetzer' Tool (R-BASIC Translator) mitgeliefert. Dieses Tool öffnet ein fertig compiliertes R-BASIC-Programm, liest die zu übersetzenden Strings aus, ermöglicht deren Übersetzung und speichert eine übersetzte Kopie des Originalprogramms. Die Übersetzungsdaten, d.h. die Originaltexte und die übersetzten Texte, werden außerdem in einer eigenen Datei (im folgenden 'Übersetzungsdatei' genannt) abgelegt, so dass sie wiederverwendet werden können, wenn später eine neue Version des Programms übersetzt werden soll.

Ein weiterer Vorteil dieses Prinzips ist es, dass die Übersetzung nicht direkt vom Programmierer ausgeführt werden muss. Vielmehr kann auch ein Sprachkundiger, der keine Ahnung vom Programmieren hat, nach kurzer Einweisung Ihr Programm übersetzen.

Da in den meisten Fällen die Originalversion und die übersetzte Version den gleichen Namen haben und auch am gleichen Ort gespeichert werden sollen bzw. müssen (z.B. bei Libraries), ist es erforderlich, die übersetzte Version in einer zweiten PC/GEOS-Installation, dem sogenannten Target (engl. target = Ziel), abzulegen. Dieses Target müssen Sie vorher anlegen und den Pfad dorthin dem 'Übersetzer' einmalig mitteilen. Wenn Sie alle zu Ihrem Projekt gehörenden Dateien in die Target-Installation kopieren, können Sie das Installationspaket für die übersetzte Version komplett unter dem Target anlegen.

Um ein R-BASIC-Programm zu übersetzten müssen Sie also folgendermaßen vorgehen:

  1. Stellen Sie sicher, dass eine lauffähige Target-Installation existiert.

  2. Compilieren Sie ihr Programm. Legen Sie eine ein eigenständig lauffähiges Programm (R-App) an. Nur diese können übersetzt werden.

  3. Öffnen Sie das zu übersetzende Programm mit dem R-BASIC Translator. Dazu gehen Sie folgendermaßen vor:

    Wenn Sie das Programm erstmalig übersetzen:

    • Starten Sie das Übersetzer-Tool direkt. Wählen Sie 'BASIC Programm' und öffnen damit den Launcher des BASIC-Programms im World-Verzeichnis.

    Falls bereits eine Übersetzungsdatei existiert:

    • Öffnen Sie die Übersetzungsdatei bitte durch Doppelklick.

    • Wählen Sie 'Übersetzungsdatei updaten' aus dem Dateimenü. Der Translator vergleicht damit die in der Übersetzungsdatei gespeicherten Informationen mit der aktuellen Version und weiß jetzt, ob zu übersetzende Texte geändert wurden, hinzugekommen sind oder gelöscht wurden. Sie bekommen die entsprechenden Informationen angezeigt.

  4. Übersetzen Sie alle Textstrings und speichern die Übersetzer-Daten als Dokument des Übersetzer-Tools (Übersetzungsdatei).

  5. Erzeugen Sie das übersetzte R-BASIC-Programm. Wählen Sie dazu den Menüpunkt 'Übersetztes Programm anlegen' aus dem Dateimenü. Der R-BASIC Translator kopiert alle notwendigen Dateien ins Target und passt die übersetzten Strings an.

  6. Wechseln Sie ins Target und testen Ihr übersetztes Programm. Achten Sie dabei besonders auf die Tastenkürzel zur Tastaturnavigation.

  7. Erzeugen Sie ein Installationspaket für das übersetzte Programm.
Eine ausführliche Beschreibung, wie man den R-BASIC Translator bedient finden Sie in der Hilfe zum Programm. Dort sind auch die Terminologie und weitere Details ausführlich erläutert.

Anweisungen an das Übersetzer-Tool

Tabelle

In bestimmten Situationen ist es gar nicht gewünscht, wenn bestimmte Strings durch einen Übersetzer geändert werden können. Wenn Sie z.B. ein Spiel programmieren, dessen Levels durch Strings in DATA-Zeilen beschrieben werden, müssen diese Level-Strings vor versehentlichen Änderungen durch den Übersetzer geschützt werden. Ein häufiger Fall sind auch die Zugriffs-Flags oder Dateinamen bei Datei-Operationen (z.B. FileOpen), die als Strings im Quelltext stehen.

Ein anderes potentielles Problem stellen Strings dar, die eine bestimmte Länge nicht überschreiten dürfen.

Zur Lösung dieser Probleme bietet R-BASIC die Steueranweisungen NoTranslate und TranslateLen an. Diese können überall im Code, sowohl im BASIC-Code als auch im UI-Code, stehen. Sie steuern das Anlegen der Übersetzungsinformationen, werden aber selbst nicht in im compilierten Code abgespeichert.

NoTranslate


Syntax im Code: NoTranslate

Die Anweisung NoTranslate bewirkt, dass alle Textstrings, die in der darauf folgenden Anweisung (bis zum Zeilenende oder dem folgenden Doppelpunkt) stehen, vom Übersetzter Tool nicht geändert werden können. In allen drei folgenden Code-Beispielen können die Strings 'Ich bin' und 'Jahre alt.' nicht übersetzt werden. Der String 'Das ist viel' ist wieder übersetzbar.

NoTranslate
Print "Ich bin"; n; "Jahre alt."
Print "Das ist viel."
NoTranslate : Print "Ich bin"; n; "Jahre alt."
Print "Das ist viel."
NoTranslate
Print "Ich bin"; n; "Jahre alt." : Print "Das ist viel."

Weitere Beispiele
NoTranslate
DATA "Ein", "Mops", "kam"  'alle nicht übersetzbar
DATA "in", "die", "Küche"  'wieder übersetzbar
NoTranslate
FileCreate "info.txt", "orw"

Beispiel im UI-Code:
Button ApplyButton
  NoTranslate
  Caption$ = "Anwenden", 2
End Object

TranslateLen


Syntax im Code: TranslateLen n
n: numerischer Wert - maximale Textlänge bei Übersetzung
Die Anweisung 'TranslateLen n' bewirkt, dass allen Textstrings, die in der darauf folgenden Anweisung (bis zum Zeilenende oder dem folgenden Doppelpunkt) stehen, vom Übersetzer-Tool nur bis zu n Zeichen zugewiesen werden können. Der Standardwert für die maximale Länge übersetzter Texte ist 1024, der Maximalwert ist ebenfalls 1024. 'TranslateLen 0' ist identisch mit 'NoTranslate'.

Beispiel:

TranslateLen 32
CONST tempFile$ = "MyTmp GEOS File"  'max. 32 Zeichen
CONST info$ = "Sind Sie sicher?"     'wieder frei übersetzbar.

^

Weiter...