GNU Info

Info Node: (gawk.info)I18N Example

(gawk.info)I18N Example


Next: Gawk I18N Prev: Translator i18n Up: Internationalization
Enter node , (file) or (file)node

A Simple Internationalization Example
=====================================

   Now let's look at a step-by-step example of how to internationalize
and localize a simple `awk' program, using `guide.awk' as our original
source:

     BEGIN {
         TEXTDOMAIN = "guide"
         bindtextdomain(".")  # for testing
         print _"Don't Panic"
         print _"The Answer Is", 42
         print "Pardon me, Zaphod who?"
     }

Run `gawk --gen-po' to create the `.po' file:

     $ gawk --gen-po -f guide.awk > guide.po

This produces:

     #: guide.awk:4
     msgid "Don't Panic"
     msgstr ""
     
     #: guide.awk:5
     msgid "The Answer Is"
     msgstr ""

   This original portable object file is saved and reused for each
language into which the application is translated.  The `msgid' is the
original string and the `msgstr' is the translation.

   *Note:* Strings not marked with a leading underscore do not appear
in the `guide.po' file.

   Next, the messages must be translated.  Here is a translation to a
hypothetical dialect of English, called "Mellow":(1)

     $ cp guide.po guide-mellow.po
     ADD TRANSLATIONS TO guide-mellow.po ...

Following are the translations:

     #: guide.awk:4
     msgid "Don't Panic"
     msgstr "Hey man, relax!"
     
     #: guide.awk:5
     msgid "The Answer Is"
     msgstr "Like, the scoop is"

   The next step is to make the directory to hold the binary message
object file and then to create the `guide.mo' file.  The directory
layout shown here is standard for GNU `gettext' on GNU/Linux systems.
Other versions of `gettext' may use a different layout:

     $ mkdir en_US en_US/LC_MESSAGES

   The `msgfmt' utility does the conversion from human-readable `.po'
file to machine-readable `.mo' file.  By default, `msgfmt' creates a
file named `messages'.  This file must be renamed and placed in the
proper directory so that `gawk' can find it:

     $ msgfmt guide-mellow.po
     $ mv messages en_US/LC_MESSAGES/guide.mo

   Finally, we run the program to test it:

     $ gawk -f guide.awk
     -| Hey man, relax!
     -| Like, the scoop is 42
     -| Pardon me, Zaphod who?

   If the two replacement functions for `dcgettext' and `bindtextdomain'
(Note: `awk' Portability Issues.)  are in a file
named `libintl.awk', then we can run `guide.awk' unchanged as follows:

     $ gawk --posix -f guide.awk -f libintl.awk
     -| Don't Panic
     -| The Answer Is 42
     -| Pardon me, Zaphod who?

   ---------- Footnotes ----------

   (1) Perhaps it would be better if it were called "Hippy." Ah, well.


automatically generated by info2www version 1.2.2.9