summaryrefslogtreecommitdiff
path: root/gettext-tools/doc/gettext_16.html
blob: ba6e7ab83c1b2f919adc9d411d1855d5d73e7652 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.52b
     from gettext.texi on 11 June 2016 -->

<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<TITLE>GNU gettext utilities - 16  Concluding Remarks</TITLE>
</HEAD>
<BODY>
Go 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>.
<P><HR><P>


<H1><A NAME="SEC328" HREF="gettext_toc.html#TOC328">16  Concluding Remarks</A></H1>

<P>
We would like to conclude this GNU <CODE>gettext</CODE> manual by presenting
an history of the Translation Project so far.  We finally give
a few pointers for those who want to do further research or readings
about Native Language Support matters.

</P>



<H2><A NAME="SEC329" HREF="gettext_toc.html#TOC329">16.1  History of GNU <CODE>gettext</CODE></A></H2>
<P>
<A NAME="IDX1306"></A>

</P>
<P>
Internationalization concerns and algorithms have been informally
and casually discussed for years in GNU, sometimes around GNU
<CODE>libc</CODE>, maybe around the incoming <CODE>Hurd</CODE>, or otherwise
(nobody clearly remembers).  And even then, when the work started for
real, this was somewhat independently of these previous discussions.

</P>
<P>
This all began in July 1994, when Patrick D'Cruze had the idea and
initiative of internationalizing version 3.9.2 of GNU <CODE>fileutils</CODE>.
He then asked Jim Meyering, the maintainer, how to get those changes
folded into an official release.  That first draft was full of
<CODE>#ifdef</CODE>s and somewhat disconcerting, and Jim wanted to find
nicer ways.  Patrick and Jim shared some tries and experimentations
in this area.  Then, feeling that this might eventually have a deeper
impact on GNU, Jim wanted to know what standards were, and contacted
Richard Stallman, who very quickly and verbally described an overall
design for what was meant to become <CODE>glocale</CODE>, at that time.

</P>
<P>
Jim implemented <CODE>glocale</CODE> and got a lot of exhausting feedback
from Patrick and Richard, of course, but also from Mitchum DSouza
(who wrote a <CODE>catgets</CODE>-like package), Roland McGrath, maybe David
MacKenzie, Fran&ccedil;ois Pinard, and Paul Eggert, all pushing and
pulling in various directions, not always compatible, to the extent
that after a couple of test releases, <CODE>glocale</CODE> was torn apart.
In particular, Paul Eggert -- always keeping an eye on developments
in Solaris -- advocated the use of the <CODE>gettext</CODE> API over
<CODE>glocale</CODE>'s <CODE>catgets</CODE>-based API.

</P>
<P>
While Jim took some distance and time and became dad for a second
time, Roland wanted to get GNU <CODE>libc</CODE> internationalized, and
got Ulrich Drepper involved in that project.  Instead of starting
from <CODE>glocale</CODE>, Ulrich rewrote something from scratch, but
more conforming to the set of guidelines who emerged out of the
<CODE>glocale</CODE> effort.  Then, Ulrich got people from the previous
forum to involve themselves into this new project, and the switch
from <CODE>glocale</CODE> to what was first named <CODE>msgutils</CODE>, renamed
<CODE>nlsutils</CODE>, and later <CODE>gettext</CODE>, became officially accepted
by Richard in May 1995 or so.

</P>
<P>
Let's summarize by saying that Ulrich Drepper wrote GNU <CODE>gettext</CODE>
in April 1995.  The first official release of the package, including
PO mode, occurred in July 1995, and was numbered 0.7.  Other people
contributed to the effort by providing a discussion forum around
Ulrich, writing little pieces of code, or testing.  These are quoted
in the <CODE>THANKS</CODE> file which comes with the GNU <CODE>gettext</CODE>
distribution.

</P>
<P>
While this was being done, Fran&ccedil;ois adapted half a dozen of
GNU packages to <CODE>glocale</CODE> first, then later to <CODE>gettext</CODE>,
putting them in pretest, so providing along the way an effective
user environment for fine tuning the evolving tools.  He also took
the responsibility of organizing and coordinating the Translation
Project.  After nearly a year of informal exchanges between people from
many countries, translator teams started to exist in May 1995, through
the creation and support by Patrick D'Cruze of twenty unmoderated
mailing lists for that many native languages, and two moderated
lists: one for reaching all teams at once, the other for reaching
all willing maintainers of internationalized free software packages.

</P>
<P>
Fran&ccedil;ois also wrote PO mode in June 1995 with the collaboration
of Greg McGary, as a kind of contribution to Ulrich's package.
He also gave a hand with the GNU <CODE>gettext</CODE> Texinfo manual.

</P>
<P>
In 1997, Ulrich Drepper released the GNU libc 2.0, which included the
<CODE>gettext</CODE>, <CODE>textdomain</CODE> and <CODE>bindtextdomain</CODE> functions.

</P>
<P>
In 2000, Ulrich Drepper added plural form handling (the <CODE>ngettext</CODE>
function) to GNU libc.  Later, in 2001, he released GNU libc 2.2.x,
which is the first free C library with full internationalization support.

</P>
<P>
Ulrich being quite busy in his role of General Maintainer of GNU libc,
he handed over the GNU <CODE>gettext</CODE> maintenance to Bruno Haible in
2000.  Bruno added the plural form handling to the tools as well, added
support for UTF-8 and CJK locales, and wrote a few new tools for
manipulating PO files.

</P>


<H2><A NAME="SEC330" HREF="gettext_toc.html#TOC330">16.2  Related Readings</A></H2>
<P>
<A NAME="IDX1307"></A>
<A NAME="IDX1308"></A>

</P>
<P>
<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
revised.

</P>
<P>
Eugene H. Dorr (<TT>&lsquo;dorre@well.com&rsquo;</TT>) maintains an interesting
bibliography on internationalization matters, called
<CITE>Internationalization Reference List</CITE>, which is available as:

<PRE>
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/i18n-books.txt
</PRE>

<P>
Michael Gschwind (<TT>&lsquo;mike@vlsivie.tuwien.ac.at&rsquo;</TT>) maintains a
Frequently Asked Questions (FAQ) list, entitled <CITE>Programming for
Internationalisation</CITE>.  This FAQ discusses writing programs which
can handle different language conventions, character sets, etc.;
and is applicable to all character set encodings, with particular
emphasis on ISO 8859-1.  It is regularly published in Usenet
groups <TT>&lsquo;comp.unix.questions&rsquo;</TT>, <TT>&lsquo;comp.std.internat&rsquo;</TT>,
<TT>&lsquo;comp.software.international&rsquo;</TT>, <TT>&lsquo;comp.lang.c&rsquo;</TT>,
<TT>&lsquo;comp.windows.x&rsquo;</TT>, <TT>&lsquo;comp.std.c&rsquo;</TT>, <TT>&lsquo;comp.answers&rsquo;</TT>
and <TT>&lsquo;news.answers&rsquo;</TT>.  The home location of this document is:

<PRE>
ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/ISO-programming
</PRE>

<P>
Patrick D'Cruze (<TT>&lsquo;pdcruze@li.org&rsquo;</TT>) wrote a tutorial about NLS
matters, and Jochen Hein (<TT>&lsquo;Hein@student.tu-clausthal.de&rsquo;</TT>) took
over the responsibility of maintaining it.  It may be found as:

<PRE>
ftp://sunsite.unc.edu/pub/Linux/utils/nls/catalogs/Incoming/...
     ...locale-tutorial-0.8.txt.gz
</PRE>

<P>
This site is mirrored in:

<PRE>
ftp://ftp.ibp.fr/pub/linux/sunsite/
</PRE>

<P>
A French version of the same tutorial should be findable at:

<PRE>
ftp://ftp.ibp.fr/pub/linux/french/docs/
</PRE>

<P>
together with French translations of many Linux-related documents.

</P>
<P><HR><P>
Go 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>.
</BODY>
</HTML>