mkmsgs(1) mkmsgs(1)
NAME
mkmsgs - Meldungsdateien für gettxt erstellen (make messages)
SYNTAX
mkmsgs [-i lokale] [-o] eingabedatei meldungsdatei
BESCHREIBUNG
mkmsgs erstellt eine Datei mit Zeichenketten, auf die die Textsuchkom-
mandos gettxt(1), srchtxt(1), exstr(1) und die C-Funktion gettxt(3C)
zugreifen können. Die Eingabe für mkmsgs ist eine editierbare Datei
mit Zeichenketten, die in einer bestimmten Landessprache geschrieben
sind [siehe setlocale(3C)]. Die Ausgabedatei enthält dieselben Zei-
chenketten, aber in einem Format, das den Zugriff durch gettxt und
gettxt(3C) ermöglicht. mkmsgs kopiert die Zeichenketten aus der Einga-
bedatei in der dort vorliegenden Reihenfolge in die Ausgabedatei.
OPTIONEN
Keine Option angegeben:
meldungsdatei wird im aktuellen Verzeichnis angelegt.
-i lokale
Die Option -i ist nur für den Systemverwalter bestimmt.
lokale steht für die Landessprache, in der die Zeichenketten in
eingabedatei geschrieben sind. Der Wert, den lokale erhält, soll
später der Umgebungsvariablen LCMESSAGES bzw. LANG zugewiesen
werden, damit mit gettxt(3C) auf diese Datei zugegriffen werden
kann (siehe BEISPIELE). Die für gettxt(1) und gettxt(3C) lesbare
meldungsdatei wird dann im Verzeichnis
/usr/lib/locale/lokale/LCMessages angelegt, wobei Sie mit Ihrer
Angabe für lokale den einfachen Namen des Verzeichnisses
/usr/lib/locale/lokale bestimmen. Nur der Systemverwalter und
Mitglieder der Benutzergruppe bin können in diesem Verzeichnis
Dateien anlegen oder überschreiben. Wenn es unter
/usr/bin/locale das von Ihnen angegebene Verzeichnis lokale noch
nicht gibt, wird es angelegt.
Ein nichtprivilegierter Benutzer hat weder das Recht, unter
/usr/lib/locale ein Verzeichnis zu erzeugen, noch unter
/usr/lib/locale/lokale/LCMESSAGES eine Datei anzulegen.
-o Wenn es meldungsdatei schon gibt, wird sie überschrieben.
eingabedatei
Datei mit den ursprünglichen Zeichenketten, die mkmsgs in ein
anderes Format bringt. Jede Zeichenkette muß in einer neuen Zeile
stehen und nicht druckbare Zeichen müssen durch Escape-Folgen
dargestellt werden, z. B. \t für das Tabulatorzeichen, \n für das
Neue-Zeile-Zeichen usw. [wie bei der C-Funktion printf(3S)].
Außerdem sind auch Oktaldarstellungen in der Form \nnn erlaubt.
Eine leere Zeichenkette stellen Sie durch eine leere Zeile dar.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
mkmsgs(1) mkmsgs(1)
Eine bereits bestehende eingabedatei verändern Sie mit einem
beliebigen Editor: vorhandene Zeichenketten können Sie über-
schreiben, neue Zeichenketten können Sie nur am Ende der Datei
anfügen. Aus einer geänderten eingabedatei erzeugen Sie mit
mkmsgs eine neue meldungsdatei und legen diese an der richtigen
Stelle im Dateibaum an, nämlich unter
/usr/lib/locale/lokale/LCMESSAGES. So kann die Textsuchfunktion
gettxt(3C), bzw. das Kommando gettxt, darauf zugreifen, wenn
LCMESSAGES (oder LANG, wenn LCMESSAGES nicht gesetzt ist) auf
den Wert lokale gesetzt ist. Andernfalls findet die Textsuchfunk-
tion gettxt(3C) nicht die richtige Zeichenkette und es besteht
keine Kompatibilität mehr zwischen den verschiedenen Software-
Versionen.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Die Eingabedatei C.str enthält folgende Zeichenketten:
Datei %s:\t kann nicht geoeffnet werden\n
%s: Unbekanntes Verzeichnis\n
.
.
.
Schreibfehler\n
.
.
Der folgende Aufruf von mkmsgs kopiert die Zeichenketten aus C.str im
richtigen Format in die Meldungsdatei UX und legt diese im aktuellen
Verzeichnis an:
$ mkmsgs C.str UX
Der folgende Aufruf von mkmsgs kopiert die Zeichenketten aus der Ein-
gabedatei FR.str im richtigen Format in die Meldungsdatei UX und legt
diese im Verzeichnis /usr/lib/locale/french/LCMESSAGES an:
$ mkmsgs -i french FR.str UX
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
mkmsgs(1) mkmsgs(1)
Das Kommando gettxt sowie die C-Funktion gettxt(3C) können nun auf die
Zeichenketten in /usr/lib/locale/french/LCMESSAGES/UX zugreifen,
falls Sie die Umgebungsvariable LCMESSAGES auf den Wert
LCMESSAGES=french gesetzt haben.
Beispiel 2
Es sind folgende Dateien vorhanden:
Inhalt von Inputdatei1:
Hallo !\n\007
Gute\t... Nacht !\n
Guten Morgen !\n
Inhalt von Inputdatei2:
Salut !\n
Bonne nuit !\n
Die Meldungsdateien werden folgendermaßen erzeugt und installiert:
Die Verzeichnisse /usr/lib/locale/german/LCMESSAGES und
/usr/lib/locale/french/LCMESSAGES existieren nicht. Der Systemverwal-
ter legt durch folgenden Aufruf das Verzeichnis /usr/lib/locale/german
an und erzeugt darunter eine Datei namens hallo:
$ mkmsgs -i german Inputdatei1 hallo
Der Aufruf
$ mkmsgs Inputdatei2 hallo
erzeugt eine Datei hallo im aktuellen Verzeichnis. Um diese danach mit
gettxt in der Lokale french benützen zu können, muß der Systemverwal-
ter folgende Aktionen durchführen:
$ mkdir /usr/lib/locale/french
$ mkdir /usr/lib/locale/french/LCMESSAGES
$ cp hallo /usr/lib/locale/french/LCMESSAGES/hallo
Auf diese Dateien wird folgendermaßen zugegriffen:
Angenommen, LCMESSAGES ist leer und LANG hat den Wert german:
$ gettxt hallo:1 "Hello!\n"
Hallo !
Gleichzeitig ertönt das Klingelzeichen.
$ gettxt hallo:2 "Good Night!\n"
Gute ... Nacht !
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
mkmsgs(1) mkmsgs(1)
$ gettxt hallo:3 "Good Morning!\n"
Guten Morgen !
$ LCMESSAGES=french
$ export LCMESSAGES
$ gettxt hallo:1 "Hello!\n"
Salut !
$ gettxt hallo:2 "Good Night!\n"
Bonne nuit !\n
$ gettxt hallo:3 "Good Morning!\n"
Message not found!!
Der Aufruf hallo:3 bewirkt die Ausgabe von Message not found!!, da es
in der Datei /usr/lib/locale/french/LCMESSAGES/hallo nur 2 Meldungen
gibt.
$ LCMESSAGES=invalid
$ gettxt hallo:1 "Hello!\n"
Hello
$ gettxt hallo:2 "Good Night!\n"
Good Night!
Der Aufruf hallo:1 bzw. der Aufruf hallo:2 bewirkt die Ausgabe von
angegebenen Textes, da es keine Datei
/usr/lib/locale/invalid/LCMESSAGES/hallo gibt. Ohne die Angabe von
"Hello!\n" und "Good Night!\n" würde "Message not found" ausgegeben
werden (siehe gettxt).
DATEIEN
/usr/lib/locale/*/LCMESSAGES/*
Von mkmsgs erzeugte Meldungsdateien. Unter /usr/lib/locale gibt
es mindestens ein Verzeichnis für jede unterstützte Landesspra-
che.
SIEHE AUCH
exstr(1), gettxt(1), srchtxt(1), gettxt(3C), setlocale(3C).
Internationale Umgebung - NLS (Native Language System).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98