xref: /netbsd-src/external/gpl2/gettext/dist/gettext-tools/doc/gettext_16.html (revision 946379e7b37692fc43f68eb0d1c10daa0a7f3b6c)
1*946379e7Schristos<HTML>
2*946379e7Schristos<HEAD>
3*946379e7Schristos<!-- This HTML file has been created by texi2html 1.52b
4*946379e7Schristos     from gettext.texi on 27 November 2006 -->
5*946379e7Schristos
6*946379e7Schristos<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
7*946379e7Schristos<TITLE>GNU gettext utilities - 16  Concluding Remarks</TITLE>
8*946379e7Schristos</HEAD>
9*946379e7Schristos<BODY>
10*946379e7SchristosGo to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_15.html">previous</A>, <A HREF="gettext_17.html">next</A>, <A HREF="gettext_25.html">last</A> section, <A HREF="gettext_toc.html">table of contents</A>.
11*946379e7Schristos<P><HR><P>
12*946379e7Schristos
13*946379e7Schristos
14*946379e7Schristos<H1><A NAME="SEC296" HREF="gettext_toc.html#TOC296">16  Concluding Remarks</A></H1>
15*946379e7Schristos
16*946379e7Schristos<P>
17*946379e7SchristosWe would like to conclude this GNU <CODE>gettext</CODE> manual by presenting
18*946379e7Schristosan history of the Translation Project so far.  We finally give
19*946379e7Schristosa few pointers for those who want to do further research or readings
20*946379e7Schristosabout Native Language Support matters.
21*946379e7Schristos
22*946379e7Schristos</P>
23*946379e7Schristos
24*946379e7Schristos
25*946379e7Schristos
26*946379e7Schristos<H2><A NAME="SEC297" HREF="gettext_toc.html#TOC297">16.1  History of GNU <CODE>gettext</CODE></A></H2>
27*946379e7Schristos<P>
28*946379e7Schristos<A NAME="IDX1199"></A>
29*946379e7Schristos
30*946379e7Schristos</P>
31*946379e7Schristos<P>
32*946379e7SchristosInternationalization concerns and algorithms have been informally
33*946379e7Schristosand casually discussed for years in GNU, sometimes around GNU
34*946379e7Schristos<CODE>libc</CODE>, maybe around the incoming <CODE>Hurd</CODE>, or otherwise
35*946379e7Schristos(nobody clearly remembers).  And even then, when the work started for
36*946379e7Schristosreal, this was somewhat independently of these previous discussions.
37*946379e7Schristos
38*946379e7Schristos</P>
39*946379e7Schristos<P>
40*946379e7SchristosThis all began in July 1994, when Patrick D'Cruze had the idea and
41*946379e7Schristosinitiative of internationalizing version 3.9.2 of GNU <CODE>fileutils</CODE>.
42*946379e7SchristosHe then asked Jim Meyering, the maintainer, how to get those changes
43*946379e7Schristosfolded into an official release.  That first draft was full of
44*946379e7Schristos<CODE>#ifdef</CODE>s and somewhat disconcerting, and Jim wanted to find
45*946379e7Schristosnicer ways.  Patrick and Jim shared some tries and experimentations
46*946379e7Schristosin this area.  Then, feeling that this might eventually have a deeper
47*946379e7Schristosimpact on GNU, Jim wanted to know what standards were, and contacted
48*946379e7SchristosRichard Stallman, who very quickly and verbally described an overall
49*946379e7Schristosdesign for what was meant to become <CODE>glocale</CODE>, at that time.
50*946379e7Schristos
51*946379e7Schristos</P>
52*946379e7Schristos<P>
53*946379e7SchristosJim implemented <CODE>glocale</CODE> and got a lot of exhausting feedback
54*946379e7Schristosfrom Patrick and Richard, of course, but also from Mitchum DSouza
55*946379e7Schristos(who wrote a <CODE>catgets</CODE>-like package), Roland McGrath, maybe David
56*946379e7SchristosMacKenzie, Fran&ccedil;ois Pinard, and Paul Eggert, all pushing and
57*946379e7Schristospulling in various directions, not always compatible, to the extent
58*946379e7Schristosthat after a couple of test releases, <CODE>glocale</CODE> was torn apart.
59*946379e7SchristosIn particular, Paul Eggert -- always keeping an eye on developments
60*946379e7Schristosin Solaris -- advocated the use of the <CODE>gettext</CODE> API over
61*946379e7Schristos<CODE>glocale</CODE>'s <CODE>catgets</CODE>-based API.
62*946379e7Schristos
63*946379e7Schristos</P>
64*946379e7Schristos<P>
65*946379e7SchristosWhile Jim took some distance and time and became dad for a second
66*946379e7Schristostime, Roland wanted to get GNU <CODE>libc</CODE> internationalized, and
67*946379e7Schristosgot Ulrich Drepper involved in that project.  Instead of starting
68*946379e7Schristosfrom <CODE>glocale</CODE>, Ulrich rewrote something from scratch, but
69*946379e7Schristosmore conforming to the set of guidelines who emerged out of the
70*946379e7Schristos<CODE>glocale</CODE> effort.  Then, Ulrich got people from the previous
71*946379e7Schristosforum to involve themselves into this new project, and the switch
72*946379e7Schristosfrom <CODE>glocale</CODE> to what was first named <CODE>msgutils</CODE>, renamed
73*946379e7Schristos<CODE>nlsutils</CODE>, and later <CODE>gettext</CODE>, became officially accepted
74*946379e7Schristosby Richard in May 1995 or so.
75*946379e7Schristos
76*946379e7Schristos</P>
77*946379e7Schristos<P>
78*946379e7SchristosLet's summarize by saying that Ulrich Drepper wrote GNU <CODE>gettext</CODE>
79*946379e7Schristosin April 1995.  The first official release of the package, including
80*946379e7SchristosPO mode, occurred in July 1995, and was numbered 0.7.  Other people
81*946379e7Schristoscontributed to the effort by providing a discussion forum around
82*946379e7SchristosUlrich, writing little pieces of code, or testing.  These are quoted
83*946379e7Schristosin the <CODE>THANKS</CODE> file which comes with the GNU <CODE>gettext</CODE>
84*946379e7Schristosdistribution.
85*946379e7Schristos
86*946379e7Schristos</P>
87*946379e7Schristos<P>
88*946379e7SchristosWhile this was being done, Fran&ccedil;ois adapted half a dozen of
89*946379e7SchristosGNU packages to <CODE>glocale</CODE> first, then later to <CODE>gettext</CODE>,
90*946379e7Schristosputting them in pretest, so providing along the way an effective
91*946379e7Schristosuser environment for fine tuning the evolving tools.  He also took
92*946379e7Schristosthe responsibility of organizing and coordinating the Translation
93*946379e7SchristosProject.  After nearly a year of informal exchanges between people from
94*946379e7Schristosmany countries, translator teams started to exist in May 1995, through
95*946379e7Schristosthe creation and support by Patrick D'Cruze of twenty unmoderated
96*946379e7Schristosmailing lists for that many native languages, and two moderated
97*946379e7Schristoslists: one for reaching all teams at once, the other for reaching
98*946379e7Schristosall willing maintainers of internationalized free software packages.
99*946379e7Schristos
100*946379e7Schristos</P>
101*946379e7Schristos<P>
102*946379e7SchristosFran&ccedil;ois also wrote PO mode in June 1995 with the collaboration
103*946379e7Schristosof Greg McGary, as a kind of contribution to Ulrich's package.
104*946379e7SchristosHe also gave a hand with the GNU <CODE>gettext</CODE> Texinfo manual.
105*946379e7Schristos
106*946379e7Schristos</P>
107*946379e7Schristos<P>
108*946379e7SchristosIn 1997, Ulrich Drepper released the GNU libc 2.0, which included the
109*946379e7Schristos<CODE>gettext</CODE>, <CODE>textdomain</CODE> and <CODE>bindtextdomain</CODE> functions.
110*946379e7Schristos
111*946379e7Schristos</P>
112*946379e7Schristos<P>
113*946379e7SchristosIn 2000, Ulrich Drepper added plural form handling (the <CODE>ngettext</CODE>
114*946379e7Schristosfunction) to GNU libc.  Later, in 2001, he released GNU libc 2.2.x,
115*946379e7Schristoswhich is the first free C library with full internationalization support.
116*946379e7Schristos
117*946379e7Schristos</P>
118*946379e7Schristos<P>
119*946379e7SchristosUlrich being quite busy in his role of General Maintainer of GNU libc,
120*946379e7Schristoshe handed over the GNU <CODE>gettext</CODE> maintenance to Bruno Haible in
121*946379e7Schristos2000.  Bruno added the plural form handling to the tools as well, added
122*946379e7Schristossupport for UTF-8 and CJK locales, and wrote a few new tools for
123*946379e7Schristosmanipulating PO files.
124*946379e7Schristos
125*946379e7Schristos</P>
126*946379e7Schristos
127*946379e7Schristos
128*946379e7Schristos<H2><A NAME="SEC298" HREF="gettext_toc.html#TOC298">16.2  Related Readings</A></H2>
129*946379e7Schristos<P>
130*946379e7Schristos<A NAME="IDX1200"></A>
131*946379e7Schristos<A NAME="IDX1201"></A>
132*946379e7Schristos
133*946379e7Schristos</P>
134*946379e7Schristos<P>
135*946379e7Schristos<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
136*946379e7Schristosrevised.
137*946379e7Schristos
138*946379e7Schristos</P>
139*946379e7Schristos<P>
140*946379e7SchristosEugene H. Dorr (<TT>&lsquo;dorre@well.com&rsquo;</TT>) maintains an interesting
141*946379e7Schristosbibliography on internationalization matters, called
142*946379e7Schristos<CITE>Internationalization Reference List</CITE>, which is available as:
143*946379e7Schristos
144*946379e7Schristos<PRE>
145*946379e7Schristosftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/i18n-books.txt
146*946379e7Schristos</PRE>
147*946379e7Schristos
148*946379e7Schristos<P>
149*946379e7SchristosMichael Gschwind (<TT>&lsquo;mike@vlsivie.tuwien.ac.at&rsquo;</TT>) maintains a
150*946379e7SchristosFrequently Asked Questions (FAQ) list, entitled <CITE>Programming for
151*946379e7SchristosInternationalisation</CITE>.  This FAQ discusses writing programs which
152*946379e7Schristoscan handle different language conventions, character sets, etc.;
153*946379e7Schristosand is applicable to all character set encodings, with particular
154*946379e7Schristosemphasis on ISO 8859-1.  It is regularly published in Usenet
155*946379e7Schristosgroups <TT>&lsquo;comp.unix.questions&rsquo;</TT>, <TT>&lsquo;comp.std.internat&rsquo;</TT>,
156*946379e7Schristos<TT>&lsquo;comp.software.international&rsquo;</TT>, <TT>&lsquo;comp.lang.c&rsquo;</TT>,
157*946379e7Schristos<TT>&lsquo;comp.windows.x&rsquo;</TT>, <TT>&lsquo;comp.std.c&rsquo;</TT>, <TT>&lsquo;comp.answers&rsquo;</TT>
158*946379e7Schristosand <TT>&lsquo;news.answers&rsquo;</TT>.  The home location of this document is:
159*946379e7Schristos
160*946379e7Schristos<PRE>
161*946379e7Schristosftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/ISO-programming
162*946379e7Schristos</PRE>
163*946379e7Schristos
164*946379e7Schristos<P>
165*946379e7SchristosPatrick D'Cruze (<TT>&lsquo;pdcruze@li.org&rsquo;</TT>) wrote a tutorial about NLS
166*946379e7Schristosmatters, and Jochen Hein (<TT>&lsquo;Hein@student.tu-clausthal.de&rsquo;</TT>) took
167*946379e7Schristosover the responsibility of maintaining it.  It may be found as:
168*946379e7Schristos
169*946379e7Schristos<PRE>
170*946379e7Schristosftp://sunsite.unc.edu/pub/Linux/utils/nls/catalogs/Incoming/...
171*946379e7Schristos     ...locale-tutorial-0.8.txt.gz
172*946379e7Schristos</PRE>
173*946379e7Schristos
174*946379e7Schristos<P>
175*946379e7SchristosThis site is mirrored in:
176*946379e7Schristos
177*946379e7Schristos<PRE>
178*946379e7Schristosftp://ftp.ibp.fr/pub/linux/sunsite/
179*946379e7Schristos</PRE>
180*946379e7Schristos
181*946379e7Schristos<P>
182*946379e7SchristosA French version of the same tutorial should be findable at:
183*946379e7Schristos
184*946379e7Schristos<PRE>
185*946379e7Schristosftp://ftp.ibp.fr/pub/linux/french/docs/
186*946379e7Schristos</PRE>
187*946379e7Schristos
188*946379e7Schristos<P>
189*946379e7Schristostogether with French translations of many Linux-related documents.
190*946379e7Schristos
191*946379e7Schristos</P>
192*946379e7Schristos<P><HR><P>
193*946379e7SchristosGo to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_15.html">previous</A>, <A HREF="gettext_17.html">next</A>, <A HREF="gettext_25.html">last</A> section, <A HREF="gettext_toc.html">table of contents</A>.
194*946379e7Schristos</BODY>
195*946379e7Schristos</HTML>
196