gettext: Why

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