------------------------------------------------------------------------------
   TRN_TOOL.TTP                                 Anleitung
 
   Werkzeug zum Erstellen und Aktualisieren einer bersetzungstabelle zur
   automatischen bersetzungs eines Quelltextes in eine Fremdsprache.
   
   20.8.94   
------------------------------------------------------------------------------
1. Dateien
----------
Das TRN-Tool kennt zwei Dateitypen: 

   (a) STR-Datei (String-Datei) 
       Sie enthlt zeilenweise die Texte (Strings oder DATA-Zeilen), die 
       z.B. vom ergo!pro-Tokenprozessor aus dem Source extrahiert 
       wurden.
       Dabei werden Strings mit den Anfhrungszeichen geschrieben und 
       DATA-Teilen mit dem DATA-Befehl. So sind diese unterscheidbar 
       (programmintern und fr den User).

   (b) TRN-Datei (Translation-Datei)
       Die TRN-Datei enthlt die bersetzungstabelle. Die Texte 
       stehen zeilenweise darin und sind paarweise geordnet, jeweils 
       zuerst der Originalstring, danach die bersetzung. Das Format 
       der Texte ist genau wie in der STR-Datei. Zur besseren 
       Strukturierung knnen Kommentarzeilen eingefgt werden. Sie 
       mssen mit einem % beginnen. 

       Statt einer bersetzungszeile kann auch eine Leerzeile 
       stehen. Das bedeutet, da diese Zeichenkette nicht 
       bersetzt werden soll (derselbe Effekt wird
       natrlich auch erreicht, in dem man man den String ganz 
       rauslt. Der Sinn dieser Sache liegt in einer einfacheren 
       Wartung der Tabelle, s.u.)

Wenn TRN_TOOL aus einer STR-Datei eine TRN-Datei erzeugt, dann 
haben diese beiden immer denselben Namen und unterscheiden sich 
nur in der Extension.


2. Funktionen
-------------
Die beiden Hauptfunkionen von TRN_TOOL haben damit zu tun, aus 
einer STR-Datei eine TRN-Datei zu erzeugen bzw. diese zu aktualisieren:

(i) TRN-Datei erzeugen

    Es wird eine STR-Datei eingelesen, die Eintrge werden 
    gefiltert, so da nur die 'sprachlichen' Texte brig 
    bleiben. Aus diesen wird eine TRN-Datei im oben beschriebenen 
    Format erzeugt. Hierbei bleiben die Zeilen, wo die bersetzungen 
    stehen mssen, leer.

    Optional kann...
      - auf die Filterung verzichtet werden
      - die TRN-Datei in alphabetischer Sortierung angelegt werden.

    Die Leerzeilen knnen dann von Hand in einem ASCII-Editor mit 
    den passenden bersetzungen gefllt werden. 

(ii) TRN-Datei aktualisieren
    
   Es wird eine vorhandene TRN-Datei mittels einer neuen STR-Datei 
   aktualisiert. Das bedeutet: 
    - Alle neu hinzugekommenen Texte (in der STR vorhanden aber 
      noch nicht in der TRN) werden der TRN-Datei am Ende angefgt. 
      Das Format dabei ist wie beim Anlegen der TRN, also 
      Leerzeilen dazwischen.
    - Alle nicht mehr gebrauchten TRN-Eintrge (in der TRN 
      vorhanden aber nicht in der STR) werden in der TRN 
      markiert. Sie knnen dann im Editor gelscht werden (mssen 
      aber nicht).

Zwei weitere Funktionen bearbeiten nur die STR-Datei. 

(iii) STR-Datei filtern

      Die Eintrge der STR-Datei werden gefiltert, so da nur die 
      'sprachlichen'  Texte brig bleiben. Die alte Datei wird 
      berschrieben.  Der Filter funktioniert so, da mindestens 
      drei zusammenhngende Buchstaben im Text erscheinen mssen.

(iv) STR-Datei sortieren
    
      Die Eintrge der STR-Datei werden alphabetisch sortiert.


3. Aufruf    
---------    
       TRN_TOOL <command> <filename> -<options>
                              
       <command>:
          ct   = create trn         Erzeuge neue TRN-Datei 
          ut   = update trn         Update der TRN-Datei 
          ss   = sort str           Sortiere STR-Datei alphabestisch
          fs   = filter str         Filtern der STR-Datei 

       <options> (nur fr Kommandos 'ct' und 'ut'):
         s    sortiere alphabetisch
         f    Textfilter unterdrcken
       
       Der <filename> ist beliebig. TRN_TOOL schneidet die Endung ab und
       hngt STR bzw. TRN dran, um seine Namen zu bekommen.
      

4. Tip:
-------
Damit diese Methode der 'zweisprachigen Programmierung' gut 
funktioniert, ist es zweckmig, die Sprachausgaben zusammenzufassen.
Statt
 
     PRINT "Datei "+d$+" nicht gefunden!"

besser

     PRINT @sprintf$("Datei # nicht gefunden!",d$)
   
schreiben. Die Funktion @sprintf$() trgt dann d$ an der Stelle des 
#-Zeichens ein (an C angelehnt).
Vorteil: In der STR-Datei steht nicht

  "Datei "
  " nicht gefunden!"

sondern

  "Datei # nicht gefunden!"

Wenn man noch alphabetisch ordnet, werden die Teilstrings bei der ersten 
Methode auseinandergerissen, bei der zweiten passiert das nicht.

Damit kann man auch Probleme vermeiden wie z.B. folgendes: 
Die Texte " um " und " in " in dieser Zeile...

  PRINT "Gendert am ";DATE$;" um ";TIME$;" in ";ort$

...wrden vom Textfilter 'geschluckt' (da nur zwei Buchstaben).
Wenn man aber schreibt

  PRINT @sprintf$("Gendert am # um # in ",DATE$,TIME$);ort$

so tritt dieses Problem nicht auf.

Eine 'sprintf$()'-FUNCTION ist in der Datei SPRINTF.LST enthalten und
kann direkt in Ihr Programm gemergt werden.

