Internationalization

You can internationalize your programs if you use gawk. This consists of choosing a text domain for your program, marking strings that are to be translated, and, if necessary, using the bindtextdomain( ), dcgettext( ), and dcngettext( ) functions.

Localizing your program consists of extracting the marked strings, creating translations, and compiling and installing the translations in the proper place. Full details are given in sed & awk by Dale Dougherty and Arnold Robbins (O’Reilly).

The internationalization features in gawk use GNU gettext. You may need to install the GNU gettext tools to create translations if your system doesn’t already have them. Here is a very brief outline of the steps involved:

  1. Set TEXTDOMAIN to your text domain in a BEGIN block:

    BEGIN { TEXTDOMAIN = "whizprog" }
  2. Mark all strings to be translated by prepending a leading underscore:

    printf(_"whizprog: can't open /dev/telepath (%s)\n",
                      dcgettext(ERRNO)) > "/dev/stderr"
  3. Extract the strings with the --gen-po option:

    $ gawk --gen-po -f whizprog.awk > whizprog.pot
  4. Copy the file for translating, and make the translations:

    $ cp whizprog.pot esperanto.po
    $ ed esperanto.po
  5. Use the msgfmt program from GNU gettext to compile the translations. The binary format allows fast lookup of the translations at runtime. The default output is a file named messages:

    $ msgfmt esperanto.po
    $ mv messages esperanto.mo
  6. Install the file in the standard location. This is usually done at program installation. The location can vary ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.