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 - 12  The Translator's View</TITLE>
8</HEAD>
9<BODY>
10Go to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_11.html">previous</A>, <A HREF="gettext_13.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="SEC198" HREF="gettext_toc.html#TOC198">12  The Translator's View</A></H1>
15
16
17
18<H2><A NAME="SEC199" HREF="gettext_toc.html#TOC199">12.1  Introduction 0</A></H2>
19
20<P>
21<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
22revised.
23
24</P>
25<P>
26Free software is going international!  The Translation Project is a way
27to get maintainers, translators and users all together, so free software
28will gradually become able to speak many native languages.
29
30</P>
31<P>
32The GNU <CODE>gettext</CODE> tool set contains <EM>everything</EM> maintainers
33need for internationalizing their packages for messages.  It also
34contains quite useful tools for helping translators at localizing
35messages to their native language, once a package has already been
36internationalized.
37
38</P>
39<P>
40To achieve the Translation Project, we need many interested
41people who like their own language and write it well, and who are also
42able to synergize with other translators speaking the same language.
43If you'd like to volunteer to <EM>work</EM> at translating messages,
44please send mail to your translating team.
45
46</P>
47<P>
48Each team has its own mailing list, courtesy of Linux
49International.  You may reach your translating team at the address
50<TT>&lsquo;<VAR>ll</VAR>@li.org&rsquo;</TT>, replacing <VAR>ll</VAR> by the two-letter ISO 639
51code for your language.  Language codes are <EM>not</EM> the same as
52country codes given in ISO 3166.  The following translating teams
53exist:
54
55</P>
56
57<BLOCKQUOTE>
58<P>
59Chinese <CODE>zh</CODE>, Czech <CODE>cs</CODE>, Danish <CODE>da</CODE>, Dutch <CODE>nl</CODE>,
60Esperanto <CODE>eo</CODE>, Finnish <CODE>fi</CODE>, French <CODE>fr</CODE>, Irish
61<CODE>ga</CODE>, German <CODE>de</CODE>, Greek <CODE>el</CODE>, Italian <CODE>it</CODE>,
62Japanese <CODE>ja</CODE>, Indonesian <CODE>in</CODE>, Norwegian <CODE>no</CODE>, Polish
63<CODE>pl</CODE>, Portuguese <CODE>pt</CODE>, Russian <CODE>ru</CODE>, Spanish <CODE>es</CODE>,
64Swedish <CODE>sv</CODE> and Turkish <CODE>tr</CODE>.
65</BLOCKQUOTE>
66
67<P>
68For example, you may reach the Chinese translating team by writing to
69<TT>&lsquo;zh@li.org&rsquo;</TT>.  When you become a member of the translating team
70for your own language, you may subscribe to its list.  For example,
71Swedish people can send a message to <TT>&lsquo;sv-request@li.org&rsquo;</TT>,
72having this message body:
73
74</P>
75
76<PRE>
77subscribe
78</PRE>
79
80<P>
81Keep in mind that team members should be interested in <EM>working</EM>
82at translations, or at solving translational difficulties, rather than
83merely lurking around.  If your team does not exist yet and you want to
84start one, please write to <TT>&lsquo;coordinator@translationproject.org&rsquo;</TT>;
85you will then reach the coordinator for all translator teams.
86
87</P>
88<P>
89A handful of GNU packages have already been adapted and provided
90with message translations for several languages.  Translation
91teams have begun to organize, using these packages as a starting
92point.  But there are many more packages and many languages for
93which we have no volunteer translators.  If you would like to
94volunteer to work at translating messages, please send mail to
95<TT>&lsquo;coordinator@translationproject.org&rsquo;</TT> indicating what language(s)
96you can work on.
97
98</P>
99
100
101<H2><A NAME="SEC200" HREF="gettext_toc.html#TOC200">12.2  Introduction 1</A></H2>
102
103<P>
104<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
105revised.
106
107</P>
108<P>
109This is now official, GNU is going international!  Here is the
110announcement submitted for the January 1995 GNU Bulletin:
111
112</P>
113
114<BLOCKQUOTE>
115<P>
116A handful of GNU packages have already been adapted and provided
117with message translations for several languages.  Translation
118teams have begun to organize, using these packages as a starting
119point.  But there are many more packages and many languages
120for which we have no volunteer translators.  If you'd like to
121volunteer to work at translating messages, please send mail to
122<SAMP>&lsquo;coordinator@translationproject.org&rsquo;</SAMP> indicating what language(s)
123you can work on.
124</BLOCKQUOTE>
125
126<P>
127This document should answer many questions for those who are curious about
128the process or would like to contribute.  Please at least skim over it,
129hoping to cut down a little of the high volume of e-mail generated by this
130collective effort towards internationalization of free software.
131
132</P>
133<P>
134Most free programming which is widely shared is done in English, and
135currently, English is used as the main communicating language between
136national communities collaborating to free software.  This very document
137is written in English.  This will not change in the foreseeable future.
138
139</P>
140<P>
141However, there is a strong appetite from national communities for
142having more software able to write using national language and habits,
143and there is an on-going effort to modify free software in such a way
144that it becomes able to do so.  The experiments driven so far raised
145an enthusiastic response from pretesters, so we believe that
146internationalization of free software is dedicated to succeed.
147
148</P>
149<P>
150For suggestion clarifications, additions or corrections to this
151document, please e-mail to <TT>&lsquo;coordinator@translationproject.org&rsquo;</TT>.
152
153</P>
154
155
156<H2><A NAME="SEC201" HREF="gettext_toc.html#TOC201">12.3  Discussions</A></H2>
157
158<P>
159<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
160revised.
161
162</P>
163<P>
164Facing this internationalization effort, a few users expressed their
165concerns.  Some of these doubts are presented and discussed, here.
166
167</P>
168
169<UL>
170<LI>Smaller groups
171
172Some languages are not spoken by a very large number of people, so people
173speaking them sometimes consider that there may not be all that much
174demand such versions of free software packages.  Moreover, many people
175being <EM>into computers</EM>, in some countries, generally seem to prefer
176English versions of their software.
177
178On the other end, people might enjoy their own language a lot, and be
179very motivated at providing to themselves the pleasure of having their
180beloved free software speaking their mother tongue.  They do themselves
181a personal favor, and do not pay that much attention to the number of
182people benefiting of their work.
183
184<LI>Misinterpretation
185
186Other users are shy to push forward their own language, seeing in this
187some kind of misplaced propaganda.  Someone thought there must be some
188users of the language over the networks pestering other people with it.
189
190But any spoken language is worth localization, because there are
191people behind the language for whom the language is important and
192dear to their hearts.
193
194<LI>Odd translations
195
196The biggest problem is to find the right translations so that
197everybody can understand the messages.  Translations are usually a
198little odd.  Some people get used to English, to the extent they may
199find translations into their own language ���rather pushy, obnoxious
200and sometimes even hilarious.���  As a French speaking man, I have
201the experience of those instruction manuals for goods, so poorly
202translated in French in Korea or Taiwan...
203
204The fact is that we sometimes have to create a kind of national
205computer culture, and this is not easy without the collaboration of
206many people liking their mother tongue.  This is why translations are
207better achieved by people knowing and loving their own language, and
208ready to work together at improving the results they obtain.
209
210<LI>Dependencies over the GPL or LGPL
211
212Some people wonder if using GNU <CODE>gettext</CODE> necessarily brings their
213package under the protective wing of the GNU General Public License or
214the GNU Library General Public License, when they do not want to make
215their program free, or want other kinds of freedom.  The simplest
216answer is ���normally not���.
217
218The <CODE>gettext-runtime</CODE> part of GNU <CODE>gettext</CODE>, i.e. the
219contents of <CODE>libintl</CODE>, is covered by the GNU Library General Public
220License.  The <CODE>gettext-tools</CODE> part of GNU <CODE>gettext</CODE>, i.e. the
221rest of the GNU <CODE>gettext</CODE> package, is covered by the GNU General
222Public License.
223
224The mere marking of localizable strings in a package, or conditional
225inclusion of a few lines for initialization, is not really including
226GPL'ed or LGPL'ed code.  However, since the localization routines in
227<CODE>libintl</CODE> are under the LGPL, the LGPL needs to be considered.
228It gives the right to distribute the complete unmodified source of
229<CODE>libintl</CODE> even with non-free programs.  It also gives the right
230to use <CODE>libintl</CODE> as a shared library, even for non-free programs.
231But it gives the right to use <CODE>libintl</CODE> as a static library or
232to incorporate <CODE>libintl</CODE> into another library only to free
233software.
234
235</UL>
236
237
238
239<H2><A NAME="SEC202" HREF="gettext_toc.html#TOC202">12.4  Organization</A></H2>
240
241<P>
242<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
243revised.
244
245</P>
246<P>
247On a larger scale, the true solution would be to organize some kind of
248fairly precise set up in which volunteers could participate.  I gave
249some thought to this idea lately, and realize there will be some
250touchy points.  I thought of writing to Richard Stallman to launch
251such a project, but feel it might be good to shake out the ideas
252between ourselves first.  Most probably that Linux International has
253some experience in the field already, or would like to orchestrate
254the volunteer work, maybe.  Food for thought, in any case!
255
256</P>
257<P>
258I guess we have to setup something early, somehow, that will help
259many possible contributors of the same language to interlock and avoid
260work duplication, and further be put in contact for solving together
261problems particular to their tongue (in most languages, there are many
262difficulties peculiar to translating technical English).  My Swedish
263contributor acknowledged these difficulties, and I'm well aware of
264them for French.
265
266</P>
267<P>
268This is surely not a technical issue, but we should manage so the
269effort of locale contributors be maximally useful, despite the national
270team layer interface between contributors and maintainers.
271
272</P>
273<P>
274The Translation Project needs some setup for coordinating language
275coordinators.  Localizing evolving programs will surely
276become a permanent and continuous activity in the free software community,
277once well started.
278The setup should be minimally completed and tested before GNU
279<CODE>gettext</CODE> becomes an official reality.  The e-mail address
280<TT>&lsquo;coordinator@translationproject.org&rsquo;</TT> has been set up for receiving
281offers from volunteers and general e-mail on these topics.  This address
282reaches the Translation Project coordinator.
283
284</P>
285
286
287
288<H3><A NAME="SEC203" HREF="gettext_toc.html#TOC203">12.4.1  Central Coordination</A></H3>
289
290<P>
291I also think GNU will need sooner than it thinks, that someone set up
292a way to organize and coordinate these groups.  Some kind of group
293of groups.  My opinion is that it would be good that GNU delegates
294this task to a small group of collaborating volunteers, shortly.
295Perhaps in <TT>&lsquo;gnu.announce&rsquo;</TT> a list of this national committee's
296can be published.
297
298</P>
299<P>
300My role as coordinator would simply be to refer to Ulrich any German
301speaking volunteer interested to localization of free software packages, and
302maybe helping national groups to initially organize, while maintaining
303national registries for until national groups are ready to take over.
304In fact, the coordinator should ease volunteers to get in contact with
305one another for creating national teams, which should then select
306one coordinator per language, or country (regionalized language).
307If well done, the coordination should be useful without being an
308overwhelming task, the time to put delegations in place.
309
310</P>
311
312
313<H3><A NAME="SEC204" HREF="gettext_toc.html#TOC204">12.4.2  National Teams</A></H3>
314
315<P>
316I suggest we look for volunteer coordinators/editors for individual
317languages.  These people will scan contributions of translation files
318for various programs, for their own languages, and will ensure high
319and uniform standards of diction.
320
321</P>
322<P>
323From my current experience with other people in these days, those who
324provide localizations are very enthusiastic about the process, and are
325more interested in the localization process than in the program they
326localize, and want to do many programs, not just one.  This seems
327to confirm that having a coordinator/editor for each language is a
328good idea.
329
330</P>
331<P>
332We need to choose someone who is good at writing clear and concise
333prose in the language in question.  That is hard--we can't check
334it ourselves.  So we need to ask a few people to judge each others'
335writing and select the one who is best.
336
337</P>
338<P>
339I announce my prerelease to a few dozen people, and you would not
340believe all the discussions it generated already.  I shudder to think
341what will happen when this will be launched, for true, officially,
342world wide.  Who am I to arbitrate between two Czekolsovak users
343contradicting each other, for example?
344
345</P>
346<P>
347I assume that your German is not much better than my French so that
348I would not be able to judge about these formulations.  What I would
349suggest is that for each language there is a group for people who
350maintain the PO files and judge about changes.  I suspect there will
351be cultural differences between how such groups of people will behave.
352Some will have relaxed ways, reach consensus easily, and have anyone
353of the group relate to the maintainers, while others will fight to
354death, organize heavy administrations up to national standards, and
355use strict channels.
356
357</P>
358<P>
359The German team is putting out a good example.  Right now, they are
360maybe half a dozen people revising translations of each other and
361discussing the linguistic issues.  I do not even have all the names.
362Ulrich Drepper is taking care of coordinating the German team.
363He subscribed to all my pretest lists, so I do not even have to warn
364him specifically of incoming releases.
365
366</P>
367<P>
368I'm sure, that is a good idea to get teams for each language working
369on translations.  That will make the translations better and more
370consistent.
371
372</P>
373
374
375
376<H4><A NAME="SEC205" HREF="gettext_toc.html#TOC205">12.4.2.1  Sub-Cultures</A></H4>
377
378<P>
379Taking French for example, there are a few sub-cultures around computers
380which developed diverging vocabularies.  Picking volunteers here and
381there without addressing this problem in an organized way, soon in the
382project, might produce a distasteful mix of internationalized programs,
383and possibly trigger endless quarrels among those who really care.
384
385</P>
386<P>
387Keeping some kind of unity in the way French localization of
388internationalized programs is achieved is a difficult (and delicate) job.
389Knowing the latin character of French people (:-), if we take this
390the wrong way, we could end up nowhere, or spoil a lot of energies.
391Maybe we should begin to address this problem seriously <EM>before</EM>
392GNU <CODE>gettext</CODE> become officially published.  And I suspect that this
393means soon!
394
395</P>
396
397
398<H4><A NAME="SEC206" HREF="gettext_toc.html#TOC206">12.4.2.2  Organizational Ideas</A></H4>
399
400<P>
401I expect the next big changes after the official release.  Please note
402that I use the German translation of the short GPL message.  We need
403to set a few good examples before the localization goes out for true
404in the free software community.  Here are a few points to discuss:
405
406</P>
407
408<UL>
409<LI>
410
411Each group should have one FTP server (at least one master).
412
413<LI>
414
415The files on the server should reflect the latest version (of
416course!) and it should also contain a RCS directory with the
417corresponding archives (I don't have this now).
418
419<LI>
420
421There should also be a ChangeLog file (this is more useful than the
422RCS archive but can be generated automatically from the later by
423Emacs).
424
425<LI>
426
427A <EM>core group</EM> should judge about questionable changes (for now
428this group consists solely by me but I ask some others occasionally;
429this also seems to work).
430
431</UL>
432
433
434
435<H3><A NAME="SEC207" HREF="gettext_toc.html#TOC207">12.4.3  Mailing Lists</A></H3>
436
437<P>
438If we get any inquiries about GNU <CODE>gettext</CODE>, send them on to:
439
440</P>
441
442<PRE>
443<TT>&lsquo;coordinator@translationproject.org&rsquo;</TT>
444</PRE>
445
446<P>
447The <TT>&lsquo;*-pretest&rsquo;</TT> lists are quite useful to me, maybe the idea could
448be generalized to many GNU, and non-GNU packages.  But each maintainer
449his/her way!
450
451</P>
452<P>
453Fran&ccedil;ois, we have a mechanism in place here at
454<TT>&lsquo;gnu.ai.mit.edu&rsquo;</TT> to track teams, support mailing lists for
455them and log members.  We have a slight preference that you use it.
456If this is OK with you, I can get you clued in.
457
458</P>
459<P>
460Things are changing!  A few years ago, when Daniel Fekete and I
461asked for a mailing list for GNU localization, nested at the FSF, we
462were politely invited to organize it anywhere else, and so did we.
463For communicating with my pretesters, I later made a handful of
464mailing lists located at iro.umontreal.ca and administrated by
465<CODE>majordomo</CODE>.  These lists have been <EM>very</EM> dependable
466so far...
467
468</P>
469<P>
470I suspect that the German team will organize itself a mailing list
471located in Germany, and so forth for other countries.  But before they
472organize for true, it could surely be useful to offer mailing lists
473located at the FSF to each national team.  So yes, please explain me
474how I should proceed to create and handle them.
475
476</P>
477<P>
478We should create temporary mailing lists, one per country, to help
479people organize.  Temporary, because once regrouped and structured, it
480would be fair the volunteers from country bring back <EM>their</EM> list
481in there and manage it as they want.  My feeling is that, in the long
482run, each team should run its own list, from within their country.
483There also should be some central list to which all teams could
484subscribe as they see fit, as long as each team is represented in it.
485
486</P>
487
488
489<H2><A NAME="SEC208" HREF="gettext_toc.html#TOC208">12.5  Information Flow</A></H2>
490
491<P>
492<STRONG> NOTE: </STRONG> This documentation section is outdated and needs to be
493revised.
494
495</P>
496<P>
497There will surely be some discussion about this messages after the
498packages are finally released.  If people now send you some proposals
499for better messages, how do you proceed?  Jim, please note that
500right now, as I put forward nearly a dozen of localizable programs, I
501receive both the translations and the coordination concerns about them.
502
503</P>
504<P>
505If I put one of my things to pretest, Ulrich receives the announcement
506and passes it on to the German team, who make last minute revisions.
507Then he submits the translation files to me <EM>as the maintainer</EM>.
508For free packages I do not maintain, I would not even hear about it.
509This scheme could be made to work for the whole Translation Project,
510I think.  For security reasons, maybe Ulrich (national coordinators,
511in fact) should update central registry kept at the Translation Project
512(Jim, me, or Len's recruits) once in a while.
513
514</P>
515<P>
516In December/January, I was aggressively ready to internationalize
517all of GNU, giving myself the duty of one small GNU package per week
518or so, taking many weeks or months for bigger packages.  But it does
519not work this way.  I first did all the things I'm responsible for.
520I've nothing against some missionary work on other maintainers, but
521I'm also loosing a lot of energy over it--same debates over again.
522
523</P>
524<P>
525And when the first localized packages are released we'll get a lot of
526responses about ugly translations :-).  Surely, and we need to have
527beforehand a fairly good idea about how to handle the information
528flow between the national teams and the package maintainers.
529
530</P>
531<P>
532Please start saving somewhere a quick history of each PO file.  I know
533for sure that the file format will change, allowing for comments.
534It would be nice that each file has a kind of log, and references for
535those who want to submit comments or gripes, or otherwise contribute.
536I sent a proposal for a fast and flexible format, but it is not
537receiving acceptance yet by the GNU deciders.  I'll tell you when I
538have more information about this.
539
540</P>
541
542
543<H2><A NAME="SEC209" HREF="gettext_toc.html#TOC209">12.6  Prioritizing messages: How to determine which messages to translate first</A></H2>
544
545<P>
546A translator sometimes has only a limited amount of time per week to
547spend on a package, and some packages have quite large message catalogs
548(over 1000 messages).  Therefore she wishes to translate the messages
549first that are the most visible to the user, or that occur most frequently.
550This section describes how to determine these "most urgent" messages.
551It also applies to determine the "next most urgent" messages after the
552message catalog has already been partially translated.
553
554</P>
555<P>
556In a first step, she uses the programs like a user would do.  While she
557does this, the GNU <CODE>gettext</CODE> library logs into a file the not yet
558translated messages for which a translation was requested from the program.
559
560</P>
561<P>
562In a second step, she uses the PO mode to translate precisely this set
563of messages.
564
565</P>
566<P>
567<A NAME="IDX1076"></A>
568Here a more details.  The GNU <CODE>libintl</CODE> library (but not the
569corresponding functions in GNU <CODE>libc</CODE>) supports an environment variable
570<CODE>GETTEXT_LOG_UNTRANSLATED</CODE>.  The GNU <CODE>libintl</CODE> library will
571log into this file the messages for which <CODE>gettext()</CODE> and related
572functions couldn't find the translation.  If the file doesn't exist, it
573will be created as needed.  On systems with GNU <CODE>libc</CODE> a shared library
574<SAMP>&lsquo;preloadable_libintl.so&rsquo;</SAMP> is provided that can be used with the ELF
575<SAMP>&lsquo;LD_PRELOAD&rsquo;</SAMP> mechanism.
576
577</P>
578<P>
579So, in the first step, the translator uses these commands on systems with
580GNU <CODE>libc</CODE>:
581
582</P>
583
584<PRE>
585$ LD_PRELOAD=/usr/local/lib/preloadable_libintl.so
586$ export LD_PRELOAD
587$ GETTEXT_LOG_UNTRANSLATED=$HOME/gettextlogused
588$ export GETTEXT_LOG_UNTRANSLATED
589</PRE>
590
591<P>
592and these commands on other systems:
593
594</P>
595
596<PRE>
597$ GETTEXT_LOG_UNTRANSLATED=$HOME/gettextlogused
598$ export GETTEXT_LOG_UNTRANSLATED
599</PRE>
600
601<P>
602Then she uses and peruses the programs.  (It is a good and recommended
603practice to use the programs for which you provide translations: it
604gives you the needed context.)  When done, she removes the environment
605variables:
606
607</P>
608
609<PRE>
610$ unset LD_PRELOAD
611$ unset GETTEXT_LOG_UNTRANSLATED
612</PRE>
613
614<P>
615The second step starts with removing duplicates:
616
617</P>
618
619<PRE>
620$ msguniq $HOME/gettextlogused &#62; missing.po
621</PRE>
622
623<P>
624The result is a PO file, but needs some preprocessing before a PO file editor
625can be used with it.  First, it is a multi-domain PO file, containing
626messages from many translation domains.  Second, it lacks all translator
627comments and source references.  Here is how to get a list of the affected
628translation domains:
629
630</P>
631
632<PRE>
633$ sed -n -e 's,^domain "\(.*\)"$,\1,p' &#60; missing.po | sort | uniq
634</PRE>
635
636<P>
637Then the translator can handle the domains one by one.  For simplicity,
638let's use environment variables to denote the language, domain and source
639package.
640
641</P>
642
643<PRE>
644$ lang=nl             # your language
645$ domain=coreutils    # the name of the domain to be handled
646$ package=/usr/src/gnu/coreutils-4.5.4   # the package where it comes from
647</PRE>
648
649<P>
650She takes the latest copy of <TT>&lsquo;$lang.po&rsquo;</TT> from the Translation Project,
651or from the package (in most cases, <TT>&lsquo;$package/po/$lang.po&rsquo;</TT>), or
652creates a fresh one if she's the first translator (see section <A HREF="gettext_6.html#SEC37">6  Creating a New PO File</A>).
653She then uses the following commands to mark the not urgent messages as
654"obsolete".  (This doesn't mean that these messages - translated and
655untranslated ones - will go away.  It simply means that the PO file editor
656will ignore them in the following editing session.)
657
658</P>
659
660<PRE>
661$ msggrep --domain=$domain missing.po | grep -v '^domain' \
662  &#62; $domain-missing.po
663$ msgattrib --set-obsolete --ignore-file $domain-missing.po $domain.$lang.po \
664  &#62; $domain.$lang-urgent.po
665</PRE>
666
667<P>
668The she translates <TT>&lsquo;$domain.$lang-urgent.po&rsquo;</TT> by use of a PO file editor
669(see section <A HREF="gettext_8.html#SEC55">8  Editing PO Files</A>).
670(FIXME: I don't know whether <CODE>KBabel</CODE> and <CODE>gtranslator</CODE> also
671preserve obsolete messages, as they should.)
672Finally she restores the not urgent messages (with their earlier
673translations, for those which were already translated) through this command:
674
675</P>
676
677<PRE>
678$ msgmerge --no-fuzzy-matching $domain.$lang-urgent.po $package/po/$domain.pot \
679  &#62; $domain.$lang.po
680</PRE>
681
682<P>
683Then she can submit <TT>&lsquo;$domain.$lang.po&rsquo;</TT> and proceed to the next domain.
684
685</P>
686<P><HR><P>
687Go to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_11.html">previous</A>, <A HREF="gettext_13.html">next</A>, <A HREF="gettext_25.html">last</A> section, <A HREF="gettext_toc.html">table of contents</A>.
688</BODY>
689</HTML>
690