Numerierung
Alle Texte, die in einem Programm definiert sind, müssen mit einer Nummer versehen im Textpool abgelegt werden. Sonst können sie nicht übersetzt werden.
Länge
Die Länge der Texte sollte durch eine Endemarke (;;) erkennbar sein.
Die Endemarke zeigt dem Übersetzer, an welcher Stelle der Text enden muß.
Da die Basis die Endemarke noch nicht unterstützt, dürfen die Texte z.Zt. nur mit Längenangabe ausgegeben werden.
WRITE: /(35) TEXT-001
Zusammenhängende Texte
Texte, die logisch zusammengehören, sollten auch im Textpool so abgelegt werden, daß der Zusammenhang erkennbar wird.
A01 Objekt löschen ;;
A02 Möchten Sie das Objekt wirklich;;
A03 löschen? ;;
B01 Objekt anlegen ;;
B02 Möchten Sie das Objekt wirklich;;
B03 anlegen? ;;
Es ist besser, Texte doppelt abzulegen (A02 = B02), als Fließtexte unrekonstruierbar zur Laufzeit zusammenzusetzen.
Sehr gefährlich ist es bei diesem Beispiel, den Teilstring A02 für beide Sätze zu verwenden. Dies führt in der Fremdsprache zu Komplikationen.
Selbst wenn die Texte übersetzbar sind, ist es in fast allen Fällen sehr schwer, einen syntaktisch korrekten Satz zu erzeugen. Dies illustriert das folgende Beispiel.
Beispiel englisch
Do you want to delete |
Do you want to create |
this object? |
this object? |
Hier ist der zweite Teil des Satzes identisch statt wie im Deutschen der erste Teil. Würde der Teilstring A02 für beide Sätze verwendet werden, wäre der Übersetzer gezwungen, die deutsche Satzstellung beizubehalten. Für jeden fremdsprachigen Anwender wäre es eine Zumutung, solche untypischen (deutschen) Satzstellungen in der Fremdsprache lesen zu müssen:
Do you really want this object |
Do you really want this object |
to delete? |
to create? |
Zusammengesetzte Sätze
Sätze, die von Entwicklern aus mehreren unabhängigen Teilstrings zusammengesetzt werden, sind niemals korrekt übersetzbar, weil zum einen der Übersetzer nicht den Zusammenhang kennt (vor allem, wenn die Texte über den Textpool verstreut sind) und zum anderen die Satzstellung nicht beeinflußbar ist.
Auch in einzeiligen Sätzen wäre, wie die zur Abschreckung danebenstehende englische Übersetzung zeigt, die folgende Textausgabe unübersetzbar:
Text-001 = 'Wollen Sie das Objekt'. |
'Do you want object' |
Text-002 = 'löschen?'. |
'to delete?' |
WRITE: Text-001, objectname, Text-002.
Richtig wäre:
Text-001 = 'Wollen Sie das Objekt &1 löschen?'.
Hilfsfeld = Text-001.
REPLACE '&1' WITH objectname INTO Hilfsfeld.
WRITE: Hilfsfeld.
Freigewordene Textnummern
Bei der Weiterentwicklung eines Programms sollten freigewordene Textnummern niemals für andere Texte wiederverwendet werden. Bitte immer einen neuen Text mit einer neuen Nummer anlegen! Denn es kann nicht gewährleistet werden, daß die ausgelieferte Fremdsprache den gleichen Stand hat wie die aktuelle deutsche Version.
Fließtext
Im ABAP-Textpool sollte nach Möglichkeit kein Fließtext abgelegt werden.
Die Anzeige von Fließtext innerhalb einer Liste wird in Zukunft von der Entwicklungsumgebung unterstützt werden. Hierfür wird jedoch eine andere Textablage benutzt werden.
Datenelementschlüsselwörter
Die direkte Ausgabe von Datenelementschlüsselwörtern (WRITE: DTEL-KEYWORD) innerhalb einer Liste ist z.Zt. nicht möglich.