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