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ç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ç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ç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>‘dorre@well.com’</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>‘mike@vlsivie.tuwien.ac.at’</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>‘comp.unix.questions’</TT>, <TT>‘comp.std.internat’</TT>, 156*946379e7Schristos<TT>‘comp.software.international’</TT>, <TT>‘comp.lang.c’</TT>, 157*946379e7Schristos<TT>‘comp.windows.x’</TT>, <TT>‘comp.std.c’</TT>, <TT>‘comp.answers’</TT> 158*946379e7Schristosand <TT>‘news.answers’</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>‘pdcruze@li.org’</TT>) wrote a tutorial about NLS 166*946379e7Schristosmatters, and Jochen Hein (<TT>‘Hein@student.tu-clausthal.de’</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