Beispiel für das Abrufen einer Nachricht aus einem Katalog

Dieses Beispiel besteht aus drei Teilen: der Nachrichtenquellendatei, dem Befehl zum Generieren der Nachrichtenkatalogdatei und einem Beispielprogramm, das den Nachrichtenkatalog verwendet.

  1. Das folgende Beispiel zeigt die Nachrichtenquellendatei example.msg :
    $quote "
    $ every message catalog should have a beginning set number.
    $set MS_SET1
    MSG1 "Hello world\n"
    MSG2 "Good Morning\n"
    ERRMSG1 "example: 1000.220 Read permission is denied for the file
    %s.\n"
    $set MS_SET2
    MSG3 "Howdy\n"
  2. Der folgende Befehl verwendet die Nachrichtenquellendatei example.msg , um die Headerdatei example.h und die Katalogdatei example.cat im aktuellen Verzeichnis zu generieren:
    runcat example example.msg
  3. Das folgende Beispielprogramm verwendet die Headerdatei example.h und greift auf die Katalogdatei example.cat zu:
    #include <locale.h>
    #include <nl_types.h>
    #include "example_msg.h" /*contains definitions for symbolic
                               identifiers*/
    main()
    {
            nl_catd catd;
            int error;
    
            (void)setlocale(LC_ALL, "");
    
            catd = catopen(MF_EXAMPLE, NL_CAT_LOCALE);
            /*
            ** Get the message number 1 from the first set.
            */
            printf( catgets(catd,MS_SET1,MSG1,"Hello world\n") );
    
            /*
            ** Get the message number 1 from the second set.
            */
            printf( catgets(catd, MS_SET2, MSG3,"Howdy\n") );
            /*
            ** Display an error message.
            */
            printf( catgets(catd, MS_SET1, ERRMSG1,"example: 100.220
                    Permission is denied to read the file %s.\n") ,
                    filename);
            catclose(catd);
    }