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