gettext: Why

 
 1.1 The Purpose of GNU ‘gettext’
 ================================
 
    Usually, programs are written and documented in English, and use
 English at execution time to interact with users.  This is true not only
 of GNU software, but also of a great deal of proprietary and free
 software.  Using a common language is quite handy for communication
 between developers, maintainers and users from all countries.  On the
 other hand, most people are less comfortable with English than with
 their own native language, and would prefer to use their mother tongue
 for day to day’s work, as far as possible.  Many would simply _love_ to
 see their computer screen showing a lot less of English, and far more of
 their own language.
 
    However, to many people, this dream might appear so far fetched that
 they may believe it is not even worth spending time thinking about it.
 They have no confidence at all that the dream might ever become true.
 Yet some have not lost hope, and have organized themselves.  The
 Translation Project is a formalization of this hope into a workable
 structure, which has a good chance to get all of us nearer the
 achievement of a truly multi-lingual set of programs.
 
    GNU ‘gettext’ is an important step for the Translation Project, as it
 is an asset on which we may build many other steps.  This package offers
 to programmers, translators and even users, a well integrated set of
 tools and documentation.  Specifically, the GNU ‘gettext’ utilities are
 a set of tools that provides a framework within which other free
 packages may produce multi-lingual messages.  These tools include
 
    • A set of conventions about how programs should be written to
      support message catalogs.
 
    • A directory and file naming organization for the message catalogs
      themselves.
 
    • A runtime library supporting the retrieval of translated messages.
 
    • A few stand-alone programs to massage in various ways the sets of
      translatable strings, or already translated strings.
 
    • A library supporting the parsing and creation of files containing
      translated messages.
 
    • A special mode for Emacs(1) which helps preparing these sets and
      bringing them up to date.
 
    GNU ‘gettext’ is designed to minimize the impact of
 internationalization on program sources, keeping this impact as small
 and hardly noticeable as possible.  Internationalization has better
 chances of succeeding if it is very light weighted, or at least, appear
 to be so, when looking at program sources.
 
    The Translation Project also uses the GNU ‘gettext’ distribution as a
 vehicle for documenting its structure and methods.  This goes beyond the
 strict technicalities of documenting the GNU ‘gettext’ proper.  By so
 doing, translators will find in a single place, as far as possible, all
 they need to know for properly doing their translating work.  Also, this
 supplemental documentation might also help programmers, and even curious
 users, in understanding how GNU ‘gettext’ is related to the remainder of
 the Translation Project, and consequently, have a glimpse at the _big
 picture_.
 
    ---------- Footnotes ----------
 
    (1) In this manual, all mentions of Emacs refers to either GNU Emacs
 or to XEmacs, which people sometimes call FSF Emacs and Lucid Emacs,
 respectively.