cvs commit: de-docproj/books/developers-handbook/l10n chapter.sgml

From: Frank Boerner <fboerner(at)doc.bsdgroup.de>
Date: Sat, 6 Feb 2010 17:38:31 GMT

fboerner 2010-02-06 17:38:31 UTC

  FreeBSD German Documentation Repository

  Modified files:
    books/developers-handbook/l10n chapter.sgml
  Log:
  MFen 1.12
  Abschnitt ueber POSIX NLS hinzugefuegt; mit Korrekturen von Daiel Seufert (<ds at praxis123 dot de>
  Approved by: bcr (mentor)
  
  Revision Changes Path
  1.11 +242 -1 de-docproj/books/developers-handbook/l10n/chapter.sgml
  
  Index: chapter.sgml
  ===================================================================
  RCS file: /home/cvs/de-docproj/books/developers-handbook/l10n/chapter.sgml,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -I$FreeBSDde.*$ -r1.10 -r1.11
  --- chapter.sgml 24 Jan 2010 19:28:23 -0000 1.10
  +++ chapter.sgml 6 Feb 2010 17:38:31 -0000 1.11
  @@ -3,8 +3,8 @@
        The FreeBSD German Documentation Project
   
        $FreeBSD$
  - $FreeBSDde: de-docproj/books/developers-handbook/l10n/chapter.sgml,v 1.10 2010/01/24 19:28:23 fboerner Exp $
  - basiert auf: 1.11
  + $FreeBSDde: de-docproj/books/developers-handbook/l10n/chapter.sgml,v 1.11 2010/02/06 17:38:31 fboerner Exp $
  + basiert auf: 1.12
   -->
   
   <chapter id="l10n">
  @@ -87,4 +87,245 @@
   
       </sect2>
     </sect1>
  +
  + <sect1 id="posix-nls">
  + <sect1info>
  + <authorgroup>
  + <author>
  + <firstname>G&aacute;bor</firstname>
  + <surname>K&ouml;vesd&aacute;n</surname>
  + <contrib>Beigetragen von </contrib>
  + </author>
  + </authorgroup>
  + </sect1info>
  +
  + <title>Lokalisierte Nachrichten mit POSIX.1 Native Language
  + Support (NLS)</title>
  +
  + <para>&Uuml;ber die Basisfunktionen von I18N hinaus, wie das Bereitstellen
  + von verschiedenen Eingabecodierungen oder die diversen nationalen
  + Konventionen, zum Beispiel die verschiedenen Dezimalpunkte, ist es
  + auf einem h&ouml;heren Level von I18N m&ouml;glich, die Ausgabe
  + von Programmen zu lokalisieren. Ein Weg dies zu tun besteht in der
  + Nutzung der POSIX.1 NLS-Funktionen von &os;.</para>
  +
  + <sect2 id="nls-catalogs">
  + <title>Organisation von lokalisierten Mitteilungen in Katalog
  + Dateien</title>
  +
  + <para>POSIX.1 NLS basiert auf Katalogdateien, welche die lokalisierten
  + Mitteilungen in der entsprechenden Codierung enthalten. Die
  + Mitteilungen sind in Sets organisiert und jede Mitteilung ist
  + durch eine eindeutige Zahl in dem jeweilgen Set identifiziert.
  + Die Katalogdateien werden nach der Lokale, von den jeweiligen
  + lokalisierten Mitteilungen, die sie enthalten, gefolgt von der
  + <literal>.msg</literal> Endung benannt. Zum Beispiel werden die
  + ungarischen Mitteilungen f&uuml;r das ISO8859-2 Encoding in
  + einer Datei mit dem Dateinamen <filename>hu_HU.ISO8859-2</filename>
  + gespeichert.</para>
  +
  + <para>Diese Katalogdateien sind normale Textdateien, welche die
  + nummerierten Mitteilungen enthalten. Es ist m&ouml;glich
  + Kommentare in die Dateien zu schreiben, indem Sie ein
  + <literal>$</literal>-Zeichen an den Anfang der Zeile setzen.
  + Das Setzen von Grenzen wird ebenfalls durch spezielle Kommentare
  + m&ouml;glich wobei das Schl&uuml;sselwort <literal>set</literal>
  + direkt nach dem <literal>$</literal>-Zeichen folgen muss. Dem
  + Schl&uuml;sselwort <literal>set</literal> folgt dann die Set-Nummer.
  + Ein Beispiel:</para>
  +
  + <programlisting>$set 1</programlisting>
  +
  + <para>Der aktuelle Mitteilungseintrag startet mit der
  + Mitteilungsnummer gefolgt von der lokalisierten Nachricht. Die
  + bekannten Modifikatoren von &man.printf.3; werden akzeptiert:</para>
  +
  + <programlisting>15 "File not found: %s\n"</programlisting>
  +
  + <para>Die Katalogdateien m&uuml;ssen in bin&auml;rer Form vorliegen,
  + bevor sie von einem Programm benutzt werden k&ouml;nnen. Dies wird
  + mit dem &man.gencat.1; Tool durchgef&uuml;hrt. Das erste Argument
  + ist der Dateiname des kompilierten Katalogs und die weiteren
  + Argumente sind die Eingabekataloge. Die lokalisierten
  + Mitteilungen k&ouml;nnen auf mehrere Katalogdateien aufgeteilt
  + sein. Danach werden dann alle auf einmal mit dem &man.gencat.1;
  + Tool kompiliert.</para>
  +
  + </sect2>
  +
  + <sect2 id="nls-using">
  + <title>Nutzung der Katalogdateien im Quellcode</title>
  +
  + <para> Das Benutzen der Katalogdateien ist einfach. Um die
  + relevante Funktion zu nutzen, muss <filename
  + class="headerfile">nl_types.h</filename> in die Quelldatei
  + eingef&uuml;gt werden. Bevor ein Katalog benutzt werden
  + kann, muss er mit &man.catopen.3; ge&ouml;ffnet werden.
  + Die Funktion hat 2 Argumente. Der erste Parameter ist der
  + Name des installierten und kompilierten Katalogs. Normalerweise
  + wird der Name des Programmes, zum Beispiel
  + <application>grep</application>, genutzt. Dieser Name wird
  + zum Suchen der kompilierten Katalogdatei benutzt. Der Aufruf
  + von &man.catopen.3; sucht nach dieser Datei in <filename
  + class="directory">/usr/share/nls/<replaceable>locale</replaceable>/<replaceable>catname</replaceable></filename>
  + und in <filename
  + class="directory">/usr/local/share/nls/<replaceable>locale</replaceable>/<replaceable>catname</replaceable></filename>,
  + wobei <literal>locale</literal> die gesetzte Lokale und
  + <literal>catname</literal> der Katalogname ist. Der zweite
  + Parameter ist eine Konstante, die zwei Werte haben kann:</para>
  +
  + <itemizedlist>
  + <listitem>
  +
  + <para><literal>NL_CAT_LOCALE</literal>, hat die Bedeutung,
  + dass die benutzte Katalogdatei auf
  + <envar>LC_MESSAGES</envar> basiert.</para>
  +
  + </listitem>
  +
  + <listitem>
  +
  + <para><literal>0</literal>, hat die Bedeutung, dass
  + <envar>LANG</envar> benutzt wird, um die Katalogdatei
  + zu &ouml;ffnen.
  + </para>
  +
  + </listitem>
  + </itemizedlist>
  +
  + <para>Der &man.catopen.3; Aufruf gibt einen Katalogidentifizierer
  + vom Type <literal>nl_catd</literal> zur&uuml;ck. Sehen Sie in der
  + Manualpage nach, um eine Liste mit m&ouml;glichen Fehlercodes
  + zu erhalten.</para>
  +
  + <para>Nach dem &Ouml;ffnen eines Katalogs, kann &man.catgets.3;
  + benutzt werden, um Mitteilungen zu erhalten. Der erste
  + Parameter ist der Katalogidentifizierer, der von
  + &man.catopen.3; zur&uuml;ck gegeben wurde, das zweite ist die
  + Nummer des Sets, das dritte die Nummer der Mitteilung und das
  + vierte ist eine Fallbackmitteilung, die angezeigt wird,
  + falls die gew&uuml;nschte Mitteilung in der Katalogdatei
  + nicht verf&uuml;gbar ist.</para>
  +
  + <para>Nach der Nutzung der Katalogdatei, muss sie mit dem
  + Kommando &man.catclose.3;, geschlossen werden. Es besitzt
  + ein Argument, die Katalog ID.</para>
  +
  + </sect2>
  +
  + <sect2 id="nls-example">
  + <title>Ein Beispiel aus der Praxis</title>
  +
  + <para>Das folgende Beispiel zeigt einen einfachen Weg wie man
  + NLS Kataloge flexibel nutzen kann.</para>
  +
  + <para>Die nachfolgenden Zeilen m&uuml;ssen in eine allgemeine
  + Headerdatei, die in allen Quelldateien vorhanden ist, die
  + lokalisierte Mitteilungen benutzen, eingef&uuml;gt werden:</para>
  +
  + <programlisting>
  +#ifdef WITHOUT_NLS
  +#define getstr(n) nlsstr[n]
  +#else
  +#include &lt;nl_types.h&gt;
  +
  +extern nl_catd catalog;
  +#define getstr(n) catgets(catalog, 1, n, nlsstr[n])
  +#endif
  +
  +extern char *nlsstr[];
  + </programlisting>
  +
  + <para>Als n&auml;chstes f&uuml;gen Sie die folgenden Zeilen
  + in den globalen Deklarationsteil der Hauptquelldatei ein:</para>
  +
  + <programlisting>
  +#ifndef WITHOUT_NLS
  +#include &lt;nl_types.h&gt;
  +nl_catd catalog;
  +#endif
  +
  +/*
  +* Default messages to use when NLS is disabled or no catalog
  +* is found.
  +*/
  +char *nlsstr[] = {
  + "",
  +/* 1*/ "some random message",
  +/* 2*/ "some other message"
  +};
  + </programlisting>
  +
  + <para>Als n&auml;chstes kommt der Code der den Katalog
  + &ouml;ffnet, liest und schliest:</para>
  +
  + <programlisting>
  +#ifndef WITHOUT_NLS
  + catalog = catopen("myapp", NL_CAT_LOCALE);
  +#endif
  +

----------------------------------------------
Diff block truncated. (Max lines = 200)
----------------------------------------------

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-cvs-doc" in the body of the message
Received on Sat 06 Feb 2010 - 18:38:47 CET

search this site