Localizr

Funktion:

LOCALIZR ist ein Tool für Programmierer, die mehrsprachliche Varianten ihrer Programmsourcen pflegen müssen (Download hier). Es ist “programmiererfreundlich”: Sprachvarianten von Stringkonstanten werden vor jedem String in der Programmsource in besonderen Kommentaren im Klartext abgelegt. Es wird keine Resourcendatei oder ein ausgelagertes Dictionary benutzt. (Dies erschwert natürlich wiederum die Zusammenarbeit mit den Übersetzern).

Beispiel für einen LOCALIZR-Sprachkommentar in einer C-Source, der einen englischen (Sprachcode “E”) und einen deutschen (Sprachcode “D”) String definiert:


/*~LANGUAGE E:"Hello, world!\n" D:"Hallo, Welt!\n" */
   printf("Hello, world!\n");
 

Sprachcode und String müssen ohne Spaces und Zeilenumbrüche hintereinander stehen. Pro String können mehrere Sprachcodes angegeben werden. Das folgende liefert denselben String für die beiden Sprachen “E” und “US”:


/*~LANGUAGE E,US:"Hello, world!\n"
   D:"Hallo, Welt!\n" */
   printf("Hello, world!\n");
 

Vor der Übersetzung der Sourcen kopiert LOCALIZR den Text einer ausgewählten Sprachvarianten aus den Kommentarfeldern in die Stringkonstanten und verändert so direkt den Programmcode. Die Größe und Geschwindigkeit des übersetzten Programms wird daher nicht beeinträchtigt. Es müssen auch keine neuen Dateien in die Versionskontrolle eingetragen werden.

Aufruf:

LOCALIZR ist kommandozeilen-orientiert. Aufrufsyntax:

LOCALIZR.EXE Sprachcode [/make] [/c | /pas] [/crlf | /cr] inputfile [outputfile]

Parameter

Bedeutung

Sprachcode

Kürzel der anzulegenden oder einzutragenden Sprachvariante.

/make

Die Sprache soll in die Source neu eingetragen werden.

/c

Der Input ist unabhängig von der Extension eine C-Source

/pas

Der Input ist unabhängig von der Extension eine Pascal-Source.

/lf

Die Ausgabe erfolgt unabhängig vom Inputformat mit UNIX-EndOfLine-Zeichen

/crlf

Die Ausgabe erfolgt unabhängig vom Inputformat mit DOS/Windows-EndOfLine-Zeichen

/strip

Sprachkonserven nach Wandlung aus der Source entfernen.

inputfile

Name der C- oder Pascal-Source, die verarbeiten werden soll (die Extension muss .PAS, .C, .H oder .CPP sein).

outputfile

Name der geänderten Source. Default: inputfile, d.h. die Eingabedatei wird überschrieben.


 

Beispiel:

Das bekannte “Hello-world”-Programm soll mehrsprachlich werden.

1) Die ursprüngliche Programm-Source:

// Hello.c - jeder kennt es, es gibt nur "Hello, world" aus!
#include <stdio.h>

int main()
{
   printf("Hello, world!\n");
   printf("You called me again?\n");
}

2) Markieren der vorhandenen Sprachkonserven als “E” (Englisch):

Aufruf:

localizr E /make /c hello.c hello1.c

Ergebnis:

// Hello.c - jeder kennt es, es gibt nur "Hello, world" aus!
#include <stdio.h>

int main()
{
/*~LANGUAGE E:"Hello, world!\n" */
   printf("Hello, world!\n");
/*~LANGUAGE E:"You called me again?\n" */
   printf("You called me again?\n");
}

3) Hinzufügen der neuen Sprache “DE” (deutsch). Neue Sprachen können zu jedem Zeitpunkt in eine Source eingetragen werden. Die Texte für die neue Sprache werden aus den Stringkonstanten initialisiert.

Aufruf:

localizr DE /make /c hello2.c hello3.c

Ergebnis:

// Hello.c - jeder kennt es, es gibt nur "Hello, world" aus!
#include <stdio.h>

int main()
{
/*~LANGUAGE E:"Hello, world!\n" DE:"Hello, world!\n" */
   printf("Hello, world!\n");
/*~LANGUAGE E:"You called me again?\n" DE:"You called me again?\n" */
   printf("You called me again?\n");
}
 

4) Übersetzen der englischen Texte ins Deutsche (Editieren der Sprachkonserven für Sprache “DE”). Dies ist die eigentliche Arbeit.

Ergebnis:

// Hello.c - jeder kennt es, es gibt nur "Hello, world" aus!
#include <stdio.h>

int main()
{
/*~LANGUAGE E:"Hello, world!\n" DE:"Hallo, Welt!\n" */
   printf("Hello, world!\n");
/*~LANGUAGE E:"You called me again?\n" DE:"Noch ein Aufruf?\n" */
   printf("You called me again?\n");
}

5) Einsetzen einer bestimmten Sprachvariante in die Stringkonstanten (hier “DE”). Dieser Schritt findet öfter statt, am besten vor jeder Neuübersetzung. LOCALIZR definiert zusätzlich das Symbol LANGUAGE_<Sprache>, damit durch bedingte Compilierung die Programmfunktion (über das Ersetzen von Strings hinaus) an die gewählte Sprache angepasst werden kann.

Aufruf:

localizr DE /c hello3.c hello4.c

Ergebnis:

#define LANGUAGE_DE

// Hello.c - jeder kennt es, es gibt nur "Hello, world" aus!
#include <stdio.h>

int main()
{
/*~LANGUAGE E:"Hello, world!\n" DE:"Hallo, Welt!\n" */
   printf("Hallo, Welt!\n");
/*~LANGUAGE E:"You called me again?\n" DE:"Noch ein Aufruf?\n" */
   printf("Noch ein Aufruf?\n");
}

[Desktop] [Scriptor] [Localizr] [pb] [LED-Laufschrift] [AutoGamer] [EthoScenes] [EosAutoShooter deutsch] [EosAutoShooter english]