summaryrefslogtreecommitdiffstats
path: root/doc/Admin/documentation
diff options
context:
space:
mode:
Diffstat (limited to 'doc/Admin/documentation')
-rw-r--r--doc/Admin/documentation1692
1 files changed, 1692 insertions, 0 deletions
diff --git a/doc/Admin/documentation b/doc/Admin/documentation
new file mode 100644
index 0000000..beb1d47
--- /dev/null
+++ b/doc/Admin/documentation
@@ -0,0 +1,1692 @@
+BABYL OPTIONS: -*- rmail -*-
+Version: 5
+Labels:
+Note: This is the header of an rmail file.
+Note: If you are seeing it in rmail,
+Note: it means the file has no messages in it.
+
+1, edited,,
+From: terrell@druhi.ATT.COM (TerrellE)
+Newsgroups: comp.sys.ibm.pc,sci.astro
+Subject: Internationalization of Software?
+Date: 30 Jun 89 19:05:23 GMT
+Reply-To: terrell@druhi.ATT.COM (TerrellE)
+Organization: AT&T, Denver, CO
+
+*** EOOH ***
+From: terrell@druhi.ATT.COM (TerrellE)
+Newsgroups: comp.sys.ibm.pc,sci.astro
+Subject: Internationalization of Software?
+Date: 30 Jun 89 19:05:23 GMT
+Reply-To: terrell@druhi.ATT.COM (TerrellE)
+
+I know that there are some modifications that I will have to perform to
+"internationalize" software products developed for use in the USA.
+These changes include the obvious (translate the program
+and documentation into the right language). However, some of the
+other changes are more subtle. I'm sure that I've overlooked some, but
+here's what I have so far:
+
+Necessary changes to "internationalize" a software product:
+
+1. Flexible date format:
+
+ dd/mm/yy
+ yy/dd/mm
+ yy/mm/dd
+ mm/dd/yy
+
+2. Handle foreign daylight savings time.
+
+3. Flexible radix (decimal) point (i.e. '.' or ','):
+
+ 3.14159
+ 3,14159
+
+4. Allow English or Metric units.
+
+5. Use "one thousand million" rather than "one billion".
+
+6. Flexible time format:
+
+ hh:mm
+ hh.mm
+ hh'mm
+
+7. Allow either ' ' or ',' for thousands delimiters:
+
+ 1,000,000
+ 1 000 000
+
+
+What else is necessary? Overseas users: what changes would you make
+to your "US Version" software to make it approprate for use in other
+countries?
+
+I'll post a summary of the results. Thanks in advance,
+
+
+
+Eric Terrell (att!druhi!terrell)
+
+1,,
+Xref: IRO.UMontreal.CA comp.std.c:13991 comp.software.international:607
+Path: IRO.UMontreal.CA!CC.UMontreal.CA!newsflash.concordia.ca!utcsri!utnut!cs.utexas.edu!howland.reston.ans.net!nctuccca.edu.tw!news.cc.nctu.edu.tw!mall!ywliu
+From: ywliu@beta.wsl.sinica.edu.tw ()
+Newsgroups: comp.std.c,comp.software.international
+Subject: Re: ANSI C Locale Character Sets
+Followup-To: comp.std.c,comp.software.international
+Date: 3 Oct 1994 06:39:25 GMT
+Organization: Computing Center, Academia Sinica
+Lines: 26
+Message-ID: <36o8ut$afu@mall.sinica.edu.tw>
+References: <Cx0Mpy.7Lo@actrix.gen.nz>
+NNTP-Posting-Host: ywliu%@beta.wsl.sinica.edu.tw
+X-Newsreader: TIN [version 1.2 PL0]
+
+*** EOOH ***
+From: ywliu@beta.wsl.sinica.edu.tw ()
+Newsgroups: comp.std.c,comp.software.international
+Subject: Re: ANSI C Locale Character Sets
+Followup-To: comp.std.c,comp.software.international
+Date: 3 Oct 1994 06:39:25 GMT
+Organization: Computing Center, Academia Sinica
+References: <Cx0Mpy.7Lo@actrix.gen.nz>
+NNTP-Posting-Host: ywliu%@beta.wsl.sinica.edu.tw
+X-Newsreader: TIN [version 1.2 PL0]
+
+Gary Houston (ghouston@actrix.gen.nz) wrote:
+: It seems to me there are a couple of details missing from the ANSI C
+: locale stuff:
+
+: 1/ How can a program find out which character set is being used?
+
+
+ You may use setlocale(LC_ALL,NULL) to get the language info.
+
+: 2/ How can a program determine whether text files use multibyte or
+: wide characters, or is it to be assumed that multibyte will
+: always be used?
+
+ As far as I am concerned, the wide character is used as the representation
+inside your program. That is, wide character is your internal data
+representatin form, as I/O operates on multi-byte characters. So, I always
+read/write mutl-bytes and convert to wide character , and vice versa.
+
+: Does anyone know of other standards/conventions/plans which fill
+: in this missing information?
+
+ You may check out P.J. Plauger's "Standard C" column on CUJ May 1993 - July
+1993. There is another one "Internationlization and Localization" in CUJ July
+ 1993 too. I am looking for more material.
+
+Yen-Wei Liu
+
+1, edited, answered,,
+Mail-from: From orac.iinet.com.au!pdcruze Thu Nov 24 17:38:19 1994
+Return-Path: <orac.iinet.com.au!pdcruze>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rAmnw-00009aC; Thu, 24 Nov 94 17:38 EST
+Received: from lagrande.iro.umontreal.ca by iros1.IRO.UMontreal.CA (8.6.9) with ESMTP
+ id LAA06293; Thu, 24 Nov 1994 11:57:58 -0500
+Received: from saguenay.IRO.UMontreal.CA (root@saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id LAA23939 for <pinard@lagrande.IRO.UMontreal.CA>; Thu, 24 Nov 1994 11:57:50 -0500
+Received: from uniwa.uwa.edu.au (root@uniwa.uwa.edu.au [130.95.128.1]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id LAA20957 for <pinard@IRO.UMontreal.CA>; Thu, 24 Nov 1994 11:57:46 -0500
+Received: from orac.iinet.com.au (orac.iinet.com.au [203.0.178.134]) by uniwa.uwa.edu.au (8.6.9/8.6.9) with ESMTP id AAA09394; Fri, 25 Nov 1994 00:57:29 +0800
+Received: from orac.iinet.com.au (pdcruze@localhost [127.0.0.1]) by orac.iinet.com.au (8.6.9/8.6.9) with ESMTP id AAA08605; Fri, 25 Nov 1994 00:57:11 +0800
+Message-Id: <199411241657.AAA08605@orac.iinet.com.au>
+To: pinard@IRO.UMontreal.CA
+cc: meyering@comco.com
+Subject: Re: Starting localization of GNU recode
+In-reply-to: Your message of "Thu, 24 Nov 1994 01:11:00 EST."
+ <m0rAXP2-00008sC@icule>
+Date: Fri, 25 Nov 1994 00:57:10 +0800
+From: "Patrick D'Cruze" <pdcruze@li.org>
+
+*** EOOH ***
+To: pinard@IRO.UMontreal.CA
+cc: meyering@comco.com
+Subject: Re: Starting localization of GNU recode
+In-reply-to: Your message of "Thu, 24 Nov 1994 01:11:00 EST."
+ <m0rAXP2-00008sC@icule>
+Date: Fri, 25 Nov 1994 00:57:10 +0800
+From: "Patrick D'Cruze" <pdcruze@li.org>
+
+> I met a few points of discussion while doing so:
+>
+> * I got to decide that, even if the program will eventually make
+> most of its output in the foreign languages, the input syntax,
+> option values, etc., are not to be localized.
+
+Yes. The purpose of message catalogs was to provide an easy to use method
+for displaying language independent messages. Hence little modifications
+need to be made to support this. However, no easy method exists for
+supporting language-independent inputs. So this will have to be left up to
+the developer to decide how they are going to implement this.
+
+> * it is not useful that I modify the lib/ routines if not done in the
+> true sources. How do you/I/they proceed for getting this job done?
+> I presume that lib/ routines will all use gettext for the time being.
+
+Probably Roland (or another volunteer) will internationalize glibc. Linux's
+libc has already been internationalised and a few message catalogs
+already exist - French, German, Polish. It probably would be useful
+modifying the routines in lib/ for those platforms that will be using
+the routines located in libc/.
+
+> I was expecting a problem which I did not met. All localizable
+> strings were luckily into executable positions, that is, affected
+> to variables or given as parameter to functions. But I will not
+> escape this problem in all my things, and will surely hit some
+> localizable strings in structured initializations. I'll see once
+> there, unless you thought out an all ready solution for this (?).
+
+I've come across this a few times within diffutils. Particularly struct
+definitions and the like. I'll send you a list of guidelines when looking
+for output messages. Will send this to you and Jim tommorrow.
+
+Regards,
+Patrick
+
+
+
+1, edited,,
+Mail-from: From pinard Mon Nov 28 12:15:47 1994
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rC9fz-00008uC; Mon, 28 Nov 94 12:15 EST
+Message-Id: <m0rC9fz-00008uC@icule>
+Date: Mon, 28 Nov 94 12:15 EST
+From: pinard (Francois Pinard)
+To: Richard M. Stallman <rms@prep.ai.mit.edu>
+CC: Jim Meyering <meyering@comco.com>
+Subject: GNU standards and localized message catalogs
+Mime-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+
+*** EOOH ***
+Date: Mon, 28 Nov 94 12:15 EST
+From: pinard (Francois Pinard)
+To: Richard M. Stallman <rms@prep.ai.mit.edu>
+CC: Jim Meyering <meyering@comco.com>
+Subject: GNU standards and localized message catalogs
+Mime-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+
+* We also need a uniform convention about where, in the installed
+hierarchy, to put translations of manuals in long term. The need is
+not immediate. One friend volunteered to translate the GNU recode
+manual in French. If this happens, I would like to know first *if*
+the distribution should install it by default, and where it should
+install it then. If not installed by default, what would be the
+uniform naming scheme for Makefile goals installing documents?
+
+1, edited,,
+Mail-from: From pinard Sat Dec 24 23:51:00 1994
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rLkv4-00009AC; Sat, 24 Dec 94 23:50 EST
+Message-Id: <m0rLkv4-00009AC@icule>
+Date: Sat, 24 Dec 94 23:50 EST
+From: pinard (Francois Pinard)
+To: rms@gnu.ai.mit.edu
+In-reply-to: <199412250445.XAA25324@mole.gnu.ai.mit.edu> (message from Richard Stallman on Sat, 24 Dec 1994 23:45:19 -0500)
+Subject: Re: GNU standards and localized message catalogs
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Sat, 24 Dec 94 23:50 EST
+From: pinard (Francois Pinard)
+To: rms@gnu.ai.mit.edu
+In-reply-to: <199412250445.XAA25324@mole.gnu.ai.mit.edu> (message from Richard Stallman on Sat, 24 Dec 1994 23:45:19 -0500)
+Subject: Re: GNU standards and localized message catalogs
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+ * We also need a uniform convention about where, in the installed
+ hierarchy, to put translations of manuals in long term.
+
+ I think they should go in the Info tree just like English manuals.
+
+Yes, of course. Suppose I have a French recode.info, and an
+English one. This kind of thing will not be immediate, but they
+will come. We need some convention to install both. We are not
+to give them different names, presumably. People will like to
+say, on an individual basis: ``if a French version of something is
+available, I'll prefer it over the standard English one''. So we
+need a convention to stock these, and a convention to select them.
+
+1,,
+Mail-from: From gnu.ai.mit.edu!rms Sun Dec 25 05:16:06 1994
+Return-Path: <gnu.ai.mit.edu!rms>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rLpze-00009IC; Sun, 25 Dec 94 05:16 EST
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id AAA12366 for <icule!pinard>; Sun, 25 Dec 1994 00:01:47 -0500
+Received: from saguenay.IRO.UMontreal.CA (root@saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id AAA10584 for <pinard@lagrande.IRO.UMontreal.CA>; Sun, 25 Dec 1994 00:01:46 -0500
+Received: from mole.gnu.ai.mit.edu (rms@mole.gnu.ai.mit.edu [128.52.46.33]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id AAA14869 for <pinard@iro.umontreal.ca>; Sun, 25 Dec 1994 00:01:37 -0500
+Received: by mole.gnu.ai.mit.edu (8.6.9/4.0)
+ id <AAA25411@mole.gnu.ai.mit.edu>; Sun, 25 Dec 1994 00:01:33 -0500
+Date: Sun, 25 Dec 1994 00:01:33 -0500
+Message-Id: <199412250501.AAA25411@mole.gnu.ai.mit.edu>
+From: Richard Stallman <rms@gnu.ai.mit.edu>
+To: pinard@iro.umontreal.ca
+In-reply-to: <m0rLkv4-00009AC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: GNU standards and localized message catalogs
+
+*** EOOH ***
+Date: Sun, 25 Dec 1994 00:01:33 -0500
+From: Richard Stallman <rms@gnu.ai.mit.edu>
+To: pinard@iro.umontreal.ca
+In-reply-to: <m0rLkv4-00009AC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: GNU standards and localized message catalogs
+
+ We need some convention to install both. We are not
+ to give them different names, presumably.
+
+I would give them different names. They would have
+separate menu items in the Info directory. That is the
+easiest way and it seems good enough, so I don't see a reason
+to spend time looking for any other way.
+
+
+1, edited,,
+Mail-from: From pinard Tue Jan 3 16:17:29 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rPGbe-00008xC; Tue, 3 Jan 95 16:17 EST
+Message-Id: <m0rPGbe-00008xC@icule>
+Date: Tue, 3 Jan 95 16:17 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501031914.LAA00333@daffy.ee.lbl.gov> (message from Vern Paxson on Tue, 03 Jan 95 11:14:17 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Tue, 3 Jan 95 16:17 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501031914.LAA00333@daffy.ee.lbl.gov> (message from Vern Paxson on Tue, 03 Jan 95 11:14:17 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+There are two categories of patches: a grouped set at initialization
+time, and all-over-the-place one which marks localizable strings.
+We can consider them separately (but I will most probably end up
+suggesting we give them the same treatment...).
+
+What would be easier would be that the original Flex sources already
+marks all strings which require localization. The way I do it in my
+things is merely replacing each "STRING" by _("STRING") *if* STRING
+should be translated. Flex could then be distributed with:
+
+ #define _(String) (String)
+
+effectively ignoring the marks. I may provide an initial patch
+to you for this. Later on, the maintenance would be relatively
+easy for you: if you add or modify a string, you will have to
+ask yourself if the new or altered string requires translation,
+and include it within _() if you think it should be translated.
+"%s: %d" is an example of string not requiring translation...
+
+The remaining work will be handled by group of volunteers from
+different countries. I took the responsibility of organizing how
+these things will be done. Once in a while, volunteers will provide
+you some COUNTRY.tt files which you might accept to distribute
+with Flex. (COUNTRY is a two letter code, like `de' for German.)
+If the COUNTRY.tt files ever lag with regard to Flex modifications,
+this would not break nationalized Flex: the current mechanics will
+merely return the original English string if a proper translation
+cannot be found. So you do not even have to feel tied to the
+translators for releasing new distributions for Flex. And nothing
+is subject to the GPL so far :-).
+
+The initialization is not very complex, and can be done within
+less than a dozen easy lines of code, hardly GPL'able. I think
+they could be included in standard Flex distribution, while being
+conditionalized out. The only harder modifications come from me,
+and touch Makefile.in, for including all the machinery to prepare
+and install locale message catalogs provided the underlying system
+has what is needed. In the way I am now distributing my things, this
+machinery automatically cut itself out when GNU locale is not usable.
+
+Remain only two modules, currently named libintl.h and libintl.c
+(this might change), which are covered by the GPL, which you
+do not want to distribute with Flex. The Flex README could
+suggest installers to grab them from any other GNU distribution.
+The configuration machinery might automatically check if they have
+been copied by the installer and, if not, forget about localization.
+
+This way, Flex will be easily and widely nationalized, the GPL
+principle will be safe, Flex will stay free of the GPL, and the
+burden on the installers, as well as both you and me, will be
+minimal in the long run.
+
+There is a difficulty I have not studied yet, and which comes from
+the fact that Flex generates C code (Bison has the same problem).
+Flex itself could be nationalized, and this is orthogonal to the fact
+Flex could generate nationalizable scanners. Both are desirable.
+
+
+1, edited,,
+Mail-from: From pinard Thu Jan 12 07:41:07 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rSOpt-00007LC; Thu, 12 Jan 95 07:41 EST
+Message-Id: <m0rSOpt-00007LC@icule>
+Date: Thu, 12 Jan 95 07:41 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501051930.LAA04658@daffy.ee.lbl.gov> (message from Vern Paxson on Thu, 05 Jan 95 11:30:54 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Thu, 12 Jan 95 07:41 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501051930.LAA04658@daffy.ee.lbl.gov> (message from Vern Paxson on Thu, 05 Jan 95 11:30:54 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+Besides, not long after having started this i18n effort for my
+own things, I realized that the i18n attribute should really be
+attached to strings themselves, and not to what we do with them.
+A blatant example is an error message produced by formatting.
+The format string needs i18n, while the result from sprintf may
+have so many different instances that it is unpractical to list
+them all in some error_string_out() routine. I also got other
+cases forcing me to concentrate on strings for i18n.
+
+There is a stylistic issue here. I use _("hello"), adding three
+characters to each localizable string, while you will most probably
+use _( "hello" ), adding five characters per localizable string.
+Yet, it has the advantage of being shorter than error_string_out,
+and be done at the right level.
+
+By merely defining _(String) to be (String), you just turn off
+localization in standard flex, with not a single nanosecond spoiled
+on it. But this will then allow me to produce a quite smaller and
+maintainable patch for i18n of flex.
+
+ This [error_string_out()] routine could then look up every string
+ passed it in a translation table that's compiled into flex
+ like the skel[] array. All that's needed is a public-domain
+ description of the format of the COUNTRY.tt translation files
+ and the rest should be easy.
+
+If I clearly understand your idea, you will compile in flex
+a French table, and obtain a French speaking binary. You will
+produce different binaries for Catalan, Dutch, etc. That is not
+practical on big sites having multinational users.
+
+Right now in my things, the setting of LANG in the environment
+decides the language to use, and there is a single binary to handle
+all things. Further, the evolving GNU locale will soon change its
+*.tt file format, and will try to use the current system underlying
+localization mechanics, if any good one is found at configure time.
+
+There is no need that you redo all this and throw new solutions to
+this whole set of problems. The most workable solution to me looks
+like standard flex distribution already have all _() included -- and
+that you accept routinely adding _() to new localizable strings when
+you are doing flex maintenance, and that a separately distributed
+patch attaches flex to GNU locale complexities, without having you
+discovering and solving them anew.
+
+ Let me know if this is workable (I'm willing to do the work).
+
+Let me take one hour this morning to offer you a patch for _() for
+2.5.0.6, hoping that you will accept it. That would be a start. Let
+me take care of the remaining organizational problems, synchronizing
+with other teams, etc. I already do this for other GNU packages
+and will eventually help with most of them (I've accepted that role).
+
+Once we will have had success with i18ned flex for some time, it
+would then become easier to convince you to go further for other
+aspects (like *producing* i18nable scanners :-).
+
+Let me hope that my pleading for the cause will touch your heart,
+somewhere :-). Keep happy!
+
+--
+François Pinard ``Happy GNU Year!'' pinard@iro.umontreal.ca
+A New Year's gift? Give us Programming Freedom! Write lpf@uunet.uu.net
+
+
+1, edited,,
+Mail-from: From pinard Thu Jan 12 16:44:56 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rSXKA-00007VC; Thu, 12 Jan 95 16:44 EST
+Message-Id: <m0rSXKA-00007VC@icule>
+Date: Thu, 12 Jan 95 16:44 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501121822.KAA21713@daffy.ee.lbl.gov> (message from Vern Paxson on Thu, 12 Jan 95 10:22:40 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Thu, 12 Jan 95 16:44 EST
+From: pinard (Francois Pinard)
+To: vern@ee.lbl.gov
+In-reply-to: <199501121822.KAA21713@daffy.ee.lbl.gov> (message from Vern Paxson on Thu, 12 Jan 95 10:22:40 PST)
+Subject: Re: Internationalization of Flex
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+ I'm not sure having to remember to use error_string_out() instead
+ of fprintf( stderr ... ) is any easier, though.
+
+Not only error strings are being made localizable by the patch I
+shipped this morning, but also statistics, version and help, and
+some debug output. These are not always error messages, and not
+always sent to stderr.
+
+Sometimes in flex, messages are constructed in pieces using %s to
+insert parts. Translating at the string level is the right approach
+in these situations. I'm not sure error_string_out() would have been
+satisfying (but I'm not going to argue, since I have your favor! :-)
+
+1, edited, answered,,
+Mail-from: From twinsun.com!eggert Tue Feb 14 05:16:50 1995
+Path: bloom-beacon.mit.edu!senator-bedfellow.mit.edu!faqserv
+From: mike@vlsivie.tuwien.ac.at
+Newsgroups: comp.unix.questions,comp.std.internat,comp.software.international,comp.lang.c,comp.windows.x,comp.std.c,comp.answers,news.answers
+Subject: Programming for Internationalization FAQ
+Supersedes: <internationalization/programming-faq_787570857@rtfm.mit.edu>
+Followup-To: comp.unix.questions,comp.std.internat,comp.software.international,comp.lang.c,comp.windows.x,comp.std.c
+Date: 15 Jan 1995 10:26:57 GMT
+Organization: TU Wien
+Lines: 564
+Approved: news-answers-request@MIT.EDU
+Expires: 28 Feb 1995 10:26:07 GMT
+Message-ID: <internationalization/programming-faq_790165567@rtfm.mit.edu>
+NNTP-Posting-Host: bloom-picayune.mit.edu
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+Summary: This FAQ discusses writing programs which can handle
+ different language conventions/character sets/etc.
+ Applicable to all character set encodings; with particular
+ emphasis on ISO-8859-1.
+X-Last-Updated: 1994/11/15
+Originator: faqserv@bloom-picayune.MIT.EDU
+Xref: bloom-beacon.mit.edu comp.unix.questions:38263 comp.std.internat:2069 comp.software.international:1289 comp.lang.c:65751 comp.windows.x:34580 comp.std.c:7917 comp.answers:9514 news.answers:33146
+
+*** EOOH ***
+From: mike@vlsivie.tuwien.ac.at
+Newsgroups: comp.unix.questions,comp.std.internat,comp.software.international,comp.lang.c,comp.windows.x,comp.std.c,comp.answers,news.answers
+Subject: Programming for Internationalization FAQ
+Supersedes: <internationalization/programming-faq_787570857@rtfm.mit.edu>
+Followup-To: comp.unix.questions,comp.std.internat,comp.software.international,comp.lang.c,comp.windows.x,comp.std.c
+Date: 15 Jan 1995 10:26:57 GMT
+Organization: TU Wien
+Approved: news-answers-request@MIT.EDU
+Expires: 28 Feb 1995 10:26:07 GMT
+NNTP-Posting-Host: bloom-picayune.mit.edu
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+Summary: This FAQ discusses writing programs which can handle
+ different language conventions/character sets/etc.
+ Applicable to all character set encodings; with particular
+ emphasis on ISO-8859-1.
+X-Last-Updated: 1994/11/15
+Originator: faqserv@bloom-picayune.MIT.EDU
+
+
+Archive-name: internationalization/programming-faq
+Posting-Frequency: monthly
+
+
+
+ Programming for Internationalization
+
+
+
+DISCLAIMER: THE AUTHOR MAKES NO WARRANTY OF ANY KIND WITH REGARD TO
+THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+Note: Most of this was tested on a Sun 10, running SunOS 4.1.* - other
+systems might differ slightly
+
+This FAQ discusses topics related to the use of ISO 8859-1 based 8 bit
+character sets. It discusses how to program applications which support
+the use European (Latin American) national character sets on
+UNIX-based systems and standard C environments.
+
+
+
+1. Which coding should I use for accented characters?
+Use the internationally standardized ISO-8859-1 character set to type
+accented characters. This character set contains all characters
+necessary to type (West) European languages. This encoding is also the
+preferred encoding on the Internet (where accepted - see below).
+
+This character set is also used by AmigaDOS, MS-Windows (Code Page
+1252 in Microsoft Speak. This is for Windows versions delivered in
+the US, Europe (except Eastern Europe) and Latin America. In Windows
+3.1 Microsoft added additional characters in the 0x80-9F range),
+VMS (DEC MCS is a draft version of the current ISO 8859-1 character
+set standard and differs in only two characters) and (most) UNIX
+implementations. MS-DOS uses a different character set and is not
+compatible with this character set.
+
+ISO 8859-X actually is a family of character set standards. Basically
+all of the information given here is also valid for these standards.
+These standards comprise 8859-X:
+8859-1 Europe, Latin America
+8859-2 Eastern Europe
+8859-3 SE Europe/miscellaneous (Esperanto, Maltese, etc.)
+8859-4 Scandinavia/Baltic (mostly covered by 8859-1 also)
+8859-5 Cyrillic
+8859-6 Arabic
+8859-7 Greek
+8859-8 Hebrew
+8859-9 Latin5, same as 8859-1 except for Turkish instead of Icelandic
+8859-10 Latin6, for Eskimo/Scandinavian languages
+
+Another nascent standard is UNICODE (ISO 10646). UNICODE is an
+extension of ISO 8859-1 (which itself is an extension of US-ASCII) to
+16 bit characters. Thus most of the world's languages (including
+Japanese, Korean, Chinese...) can be covered.
+
+Most of the information given here is independent of the character
+encoding used (e.g. DEC MCS, etc.), but can be applied to any
+character set, providing the programming environment has provisions
+for this standard.
+
+
+
+2. Getting your environment right
+To configure your environment such that you can enter, process and
+display 8 bit ISO characters, check out the ISO-8859-1 FAQ available
+via anonymous ftp from ftp.vlsivie.tuwien.ac.at in
+/pub/8bit/FAQ-ISO-8859-1.
+
+
+
+3. Setting your environment for ISO-C (ANSI-C) programs
+The ISO C Standard (ANSI C Standard 4.4) defines several functions for
+supporting localization. To set your international environment on
+program startup, you should make one or several calls to the setlocale
+functions. Calls to this function will predetermine the reaction of
+other localization functions according to your language/country
+environment.
+
+To configure a particular aspect of you environment, say the number
+representation, you would call
+--
+setlocale (LC_NUMERIC, "Germany");
+--
+
+This call would set all number representation functions defined in the
+localization set to return numbers in the format used in Germany. If
+the call was successful, setlocale will return the name of your
+locale. A NULL return value indicates failure. Note that the
+environments are predetermined outside your C program by the system
+you run on. (So the example given here is likely to fail on all but a
+few systems.) Check the setlocale manual page or your system
+documentation to find out about the environments available.
+
+There are several LOCALE types available for different localization
+aspects (currency sign, number representation, characters sets). The
+value they can take is highly system dependent. Also, it should be up
+to the use to define the local environment he needs.
+
+A C program inherits its locale environment variables when it starts up.
+This happens automatically. However, these variables do not
+automatically control the locale used by the library functions, because
+ISO/ANSI C says that all programs start by default in the standard C
+locale. To use the locales specified by the environment, The POSIX
+standard defines the following call:
+-----
+setlocale (LC_ALL, "");
+-----
+
+Of course, you can only set part of your environment, by calling, say:
+----
+setlocale (LC_CTYPE, "");
+----
+This only defines the character classification macros (defined in
+ctype.h).
+
+This is a list of local categories:
+
+ Effect of Specifying Environment Variable
+ category the Value Affected
+ __________________________________________________________
+
+ LC_ALL Sets or queries LANG
+ entire environment
+ LC_COLLATE Changes or queries LC_COLLATE
+ collation sequences
+ LC_CTYPE Changes or queries LC_CTYPE
+ character classifi-
+ cation
+ LC_NUMERIC Changes or queries LC_NUMERIC
+ number format infor-
+ mation
+ LC_TIME Changes or queries LC_TIME
+ time conversion
+ parameters
+ LC_MONETARY Changes or queries LC_MONETARY
+ monetary information
+
+
+
+
+4. Using the locale information for character classification
+If you write a program which supports international use, you should
+use the available standardized functions, as only these will be
+influenced by the setlocale call. Thus, if you want to convert a
+capital letter in c to a lower case letter in l, _don't_ write:
+
+l = c - 'A' + 'a';
+
+While this will work for characters in the US-ASCII character set, it
+will not work with many other character sets. The following,
+standard-conformant code will:
+
+#include <ctype.h>
+
+....
+
+l = tolower(c);
+
+Also note that the second code may actually be faster than even the
+full "C" locale functionality (for most implementations), as it
+replaces a complex expression ( (c<='Z' && c>='A')? c-'A'+a:c; )by a simple
+table lookup!
+
+Note that this ISO standard is independent of the character set
+encoding used!
+
+
+
+5. Language independent messages
+There are two competing standards for language independent messages:
+one by X/Open, and another one by POSIX. The X/Open standard seems to
+have found a larger following as it has been around for a longer time.
+
+5.1 X/Open language independent messages
+X/Open defines a method for providing language-independent messages.
+Error messages are kept in a catalog which is opened upon program
+start with a locale specification. Then the message number and a set
+specification are used to index the message catalog. A default fourth
+argument is specified which will be printed if a particular message
+cannot be found in the catalog.
+
+Here is the world-famous C program using the language-independent
+X/Open message standard:
+--------------------------------------------------------------------------
+#include <stdio.h>
+#include <nl_types.h>
+
+#define SET 1
+#define MSG_HELLO 1
+
+nl_catd catfd;
+
+int main (int argc, char **argv) {
+ /* Open the message catalog. We use the basename of the program
+ * as the catalog name. Of course, several programs can also
+ * share a common catalog.
+ */
+ catfd = catopen (basename (argv [0]), NL_CAT_LOCALE);
+ /* catgets returns message MSG_HELLO from set SET from the
+ * message catalog catfd. If catfd does not refer to a message
+ * catalog, or the requested message cannot be found, the
+ * catalog, or the requested message cannot be found, the
+ * fourth argument is returned.
+ */
+ printf (catgets (catfd, SET, MSG_HELLO, "hello, world\n"));
+ catclose (catfd);
+ return 0;
+}
+-------------------------------------------------------------------------
+
+For catopen, specify the constant NL_CAT_LOCALE to open the message
+catalog for the locale set for the LC_MESSAGES variable; using
+NL_CAT_LOCALE conforms to the XPG4 standard. You can specify 0 (zero)
+for compatibility with XPG3; when oflag is set to zero, the locale set
+for the LANG variable determines the message catalog locale.
+
+Several utilities exist for generating message catalogs and for
+upgrading programs which contain hard-wired strings:
+* gencat is used to generate message catalogs
+[All other programs are OS-specific:]
+* Ultrix and OSF support the extract program which will extract string
+ constants from the C source code, and has an option to replace these
+ strings with calls to catgets.
+* HP/UX has a similar utility called findmsg.
+* Under OSF, message catalogs may be listed with the dspcat utility.
+* HP/UX calls a similar utility dumpmsg.
+
+
+5.2 Sun/XView
+Sun implements a different set of functions functions to support i18n
+of messages (the source is available with the XView code):
+
+You can either use:
+-----------------------------------------------
+
+main()
+{
+ // get the message catalog named "helloprogram"
+ // for the hello world program
+ textdomain("helloprogram");
+
+ // get the translation for the "Hello, world\n" string
+ printf(gettext("Hello, world\n"));
+}
+-----------------------------------------------
+
+or you can roll all in one and write
+
+-----------------------------------------------
+main()
+{
+ // get the translation for the "Hello, world\n" string
+ // from the message catalog "helloprogram"
+ printf(dgettext("helloprogram","Hello, world\n"));
+}
+-----------------------------------------------
+
+The LC_MESSAGES locale category setting determines the locale of
+strings that gettext() returns. The message catalogs are generated
+with either the installtxt or gencat commands.
+
+No opening of files as in the old SYS V and X/Open routines, and no
+handling of message numbers that you must have in a database to
+administer.
+
+
+5.3 POSIX language independent messages
+Neither of the previous two mechanisms is in the POSIX standard.
+There was much disagreement in the POSIX.1 committee about using the
+gettext routines vs. catgets (XPG). In the end the committee couldn't
+agree on anything, so no messaging system was included as part of the
+standard. I believe the informative annex of the standard includes the
+XPG3 messaging interfaces, "...as an example of a messaging system
+that has been implemented..."
+
+They were very careful not to say anywhere that you should use one set
+of interfaces over the other.
+
+
+
+6. Other localization aspects in ISO/ANSI C (and POSIX environments)
+For a more thorough discussion of localization and
+internationalization (aka. i18n), check your system vendors
+documentation, and the C library manual which comes with the FSF's
+glibc library (Chapter 19, 'Locales and Internationalization').
+
+
+
+7. Internationalization under X11
+7.1 Output
+To output text encoded with ISO 8859-1 under X11, simply invoke the X
+display routines with 8 bit characters as you would use them with
+7-bit ASCII. You should however choose a font which contains bitmaps
+for these characters. You can use the xfd utility to display a font
+to verify that it contains a full set of characters.
+
+
+7.2 Input
+If you use a national keyboard (that is a keyboard, which has distinct
+keys for your countries special characters), inputting accents is
+straight forward and you'll get the corresponding characters by using
+the X11 input functions.
+
+Sometimes it may be necessary to input characters for which there are
+no keys on your keyboard (e.g. if you want to enter the German 'ß'
+from a French keyboard).
+
+X11R5 and X11R6 both have extensive support for i18n, but due to a
+variety of factors the R5 i18n was not well understood or widely
+used. Many people resorted to a work-around and might have been
+disappointed when R6 did not include this misfeature. It is important
+to recognize that the correct use of R5 and R6 i18n features will
+ensure maximum portability of your program.
+
+Footnote: Amongst other reasons, the X Consortium decision not to add
+support for input methods to the Xaw Athena widget contributes to this
+situation. Many users (and much of the PD software) live in an
+Xaw-only world, so they will not be able to benefit from this i18n
+effort.
+
+X11 R5 and R6 support input methods for entering non-ASCII, and
+displaying and configuring text, menus etc. for a wide variety of
+languages. This input method has to be installed by the application
+by calls to the Xlib library (or an Xt toolkit call).
+
+[Under X11R5, some X servers (notably the Xsun server) will let you
+enter ISO characters by supplying a built-in escape mechanism, if no
+keys for these characters are on your keyboard, and will pass along
+and display ISO 8859-1. This hack obviated the need to install an
+input method, but was less flexible.]
+
+
+If you are using a toolkit, it is quite simple to support localization
+of you X11 code:
+If you're using a toolkit -- Xt and a widget set like Motif or R6 Xaw --
+you need only add a single line of code to your source. Before any other
+calls to Xt, add a call to XtSetLanguageProc, e.g.:
+
+ int main (int argc, char** argv)
+ {
+ ...
+ XtSetLanguageProc (NULL, NULL, NULL);
+ top = XtAppInitialize ( ... );
+ ...
+ }
+
+The LANG and LC_xxx environment variables (see section 3) will then be
+used to determine the 'input method' for this X application. This
+input method is responsible for managing COMPOSE character sequences
+or any other input mechanism for this particular implementation. Also
+see section 9 of ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1,
+the FAQ on ISO 8859-1 usage.
+
+
+7.3 Toolkits, Widgets, and I18N
+The preferred way of inputing national characters when a national
+keyboard is not available is one/several input methods. These input
+methods will then support various kinds of compose sequences to enter
+national characters.
+
+The environment variables LANG and/or LC_xxx select the language for
+the Input Method (IM), but if several input methods exist, the
+environment variable XMODIFIERS can be used to select a specific input
+method.
+
+Xlib supports IMs
+Xt supports IMs
+Xaw does not support IMs
+
+Thus, applications written with Xlib or Xt can support IMs (see
+section 7.2 on how to install input methods under Xt), but Xaw based
+applications will not.
+
+Motif 1.2 or greater automatically uses the R5/R6 input method APIs.
+Thus applications using Motif 1.2+ can be made to support IMs.
+Several Motif 1.[01] versions also had similar functionality added to
+them by the respective vendors, but these extensions are
+vendor-specific and not portable.
+
+FOOTNOTE: If you can have comments/corrections for this section and on
+ OpenLook, please let me know.
+
+
+7.4 I18N under X11R6, General Information
+Background information from the X11R6 announcement:
+Internationalization (also known as I18N, there being 18 letters between the
+i and n) of the X Window System, which was originally introduced in Release
+5, has been significantly improved in R6. The R6 I18N architecture follows
+that in R5, being based on the locale model used in ANSI C and POSIX, with
+most of the I18N capability provided by Xlib. R5 introduced a fundamental
+framework for internationalized input and output. It could enable basic
+localization for left-to-right, non-context sensitive, 8-bit or multi-byte
+codeset languages and cultural conventions. However, it did not deal with
+all possible languages and cultural conventions. R6 also does not cover all
+possible languages and cultural conventions, but R6 contains substantial new
+Xlib interfaces to support I18N enhancements, in order to enable additional
+language support and more practical localization.
+
+The additional support is mainly in the area of text display. In order to
+support multi-byte encodings, the concept of a FontSet was introduced in R5.
+In R6, Xlib enhances this concept to a more generalized notion of output
+methods and output contexts. Just as input methods and input contexts sup-
+port complex text input, output methods and output contexts support complex
+and more intelligent text display, dealing not only with multiple fonts but
+also with context dependencies. The result is a general framework to enable
+bi-directional text and context sensitive text display.
+
+The description of the X11R6 internationalization framework is
+available via anonymous ftp from ftp.x.org in
+/pub/R6untarred/xc/doc/specs/i18n.
+
+
+
+8. Supporting I18N Network Protocols
+8.1 MIME
+MIME is specified in RFC 1521 and RFC 1522 which are available from
+ftp.uu.net. There is also a MIME FAQ which is available via anonymous
+ftp from ftp.ics.uci.edu in /mh/contrib/multimedia/mime-faq.txt.gz.
+(This file is in compressed format. You will need the GNU gunzip
+program to decompress this file.)
+
+If you want to write applications which support the MIME protocol,
+there are several libraries/tools which can ease your task:
+
+
+8.1.1 metamail
+Source for supporting MIME (the `metamail' package) in various mail
+readers is available via anonymous ftp from thumper.bellcore.com in
+/pub/nsb. This distribution consists of several utilities, which can
+be called by MIME applications to handle MIME types.
+
+
+8.1.2 MIMElt
+A "lightweight" MIME library available via anon ftp from
+oslonett.no:Software/MsDos/Comm/Offline/mimeltXX.zip
+
+It is source code (ANSI C) packaged as a library to facilitate
+construction of a limited MIME facility (limited == handling only
+character-set aspects of MIME, not the multimedia-aspects). It
+includes hooks to recode character sets into whatever system you are
+running off (e.g. if you read mail on a MsDos platform using CP-850,
+MIMElite may be set up so that QUOTED-PRINTABLE ISO Latin 1 is recoded
+into CP-850 for reading and saving to file).
+
+It's main use is to provide programmers of so-called "off-line
+readers" (used by user's who access Internet mail through dial-up
+service providers) with the tools needed to include proper support for
+QUOTED-PRINTABLE encoding in their product.
+
+The archive also contain a couple of sample applications that
+demonstrates how the library may be used. UNMIME is a stand-alone
+utility to decode MIME-encoded messages (e.g. it works like UUDECODE
+for binary files with BASE64 encoding), SENDMIME is a simple utility
+to send MIME-encoded messages if your service provider doesn't have
+PINE or similar tools.
+
+The current version (2.1) is limited to character set issues. I am
+about to release version 2.2, which will support additional
+Content-Types (e.g. "application/octet-stream").
+
+
+
+9. Programming in Prolog
+SICStus Prolog accepts ISO characters as part of atoms, so you can
+even define goal names containing accented characters. I/O of 8 bit
+characters is (obviously) also supported.
+
+
+
+10. ISO 8859-1 on non-UNIX systems
+10.1 MS-DOS
+MS-DOS generally uses its own characters set. There are several code
+pages (one with the same symbols as ISO 8859-1, albeit at different
+character code positions, which can lead to problems with the transfer
+of data).
+
+If interoperability without data conversion is your goal, you can
+reconfigure your MS-DOS PC to use an ISO-8859-1 code page. Check out
+the anonymous ftp archive ftp.uni-erlangen.de, which contains data on
+how to do this (and other ISO-related stuff) in /pub/doc/ISO/charsets.
+The README file contains an index of the files you need.
+
+Most (all?) C compilers/libraries for MS-DOS have only minimal support
+for the ANSI/POSIX locale mechanism. The setlocale() and localeconv()
+calls (and stuff like strxfrm()) are generally hardwired.
+
+
+10.2 MS Windows
+MS-Windows (using code page 1252) normally uses the first 256
+characters of Unicode, which is (for all practical purposes)
+equivalent to ISO 8859-1. Thus, data representation and conversion
+for interoperability with other ISO 8859-1 compliant systems is not an
+issue.
+
+It seems that C libraries for MS Windows do not support the ANSI/POSIX
+locale mechanism. (If you have any experiences with that, please let
+me know.) There is a POSIX-like mechanism in some Microsoft platform
+services, but none in the compilers from any vendor.
+
+
+10.3 OS/2
+Text mode OS/2 programs generally suffer the same limitations as do
+MS-DOS programs, because the display hardware is the same.
+
+Presentation Manager OS/2 programs using code page 1004 will order
+the font glyphs in the same sequence as ISO 8859-1 (although of
+course whether the glyphs will actually look anything like those
+from ISO 8859-1 depends entirely from the font).
+
+The IBM CSet++ compiler supports full internationalization, with
+several predefined locales.
+
+The Borland C++ compiler supports only the "C" locale.
+
+The Watcom C++ compiler supports only the "C" locale.
+
+The Metaware High C++ compiler supports only the "C" locale. It
+does, however, also support UNICODE, providing UNICODE character
+types and UNICODE versions of the appropriate parts of the standard
+library (including I/O).
+
+
+
+10.4 Apple Macintosh
+MacIntoshes have their own non-standard character encodings;
+the first 128 characters are US-ASCII but the remaining characters are
+non-standard.
+
+I do not know whether C libraries (for which compilers?) for the
+MacIntosh support the ANSI/POSIX locale mechanism. If you have any
+experiences with that, please let me know.
+
+
+10.5 Amiga
+The AmigaOS uses ISO-8859-1. As of OS version 2.1, Amiga-specific
+means of localization are available.
+
+
+
+11. Home location of this document
+The most recent version of this document is available via anonymous
+ftp from ftp.vlsivie.tuwien.ac.at under the file name
+/pub/8bit/ISO-programming.
+
+-----------------
+
+Copyright © 1994 Michael Gschwind (mike@vlsivie.tuwien.ac.at)
+
+This document may be copied for non-commercial purposes, provided this
+copyright notice appears. Publication in any other form requires the
+author's consent.
+
+Dieses Dokument darf unter Angabe dieser urheberrechtlichen
+Bestimmungen zum Zwecke der nicht-kommerziellen Nutzung beliebig
+vervielfältigt werden. Die Publikation in jeglicher anderer Form
+erfordert die Zustimmung des Autors.
+
+Michael Gschwind, Institut f. Technische Informatik, TU Wien
+snail: Treitlstrasse 3-182-2 || A-1040 Wien || Austria
+email: mike@vlsivie.tuwien.ac.at note: real time != real fast
+phone: +(43)(1)58801 8156 fax: +(43)(1)586 9697
+
+
+1, edited, resent,,
+Mail-from: From li.org!owner-li-international Fri Jan 20 08:56:04 1995
+Return-Path: <li.org!owner-li-international>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rVJon-00009Da; Fri, 20 Jan 95 08:56 EST
+Sender: li.org!owner-li-international
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id RAA25970 for <icule!pinard>; Mon, 16 Jan 1995 17:34:02 -0500
+Received: from saguenay.IRO.UMontreal.CA (root@saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id RAA14270 for <pinard@lagrande.IRO.UMontreal.CA>; Mon, 16 Jan 1995 17:33:53 -0500
+Received: from uniwa.uwa.edu.au (root@uniwa.uwa.edu.au [130.95.128.1]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id RAA07348 for <pinard@iro.umontreal.ca>; Mon, 16 Jan 1995 17:33:41 -0500
+Received: from orac.aust.li.org (orac.iinet.com.au [203.0.178.134]) by uniwa.uwa.edu.au (8.6.9/8.6.9) with ESMTP id GAA22040; Tue, 17 Jan 1995 06:29:21 +0800
+Received: (from majordom@localhost) by orac.aust.li.org (8.6.9/8.6.9) id FAA01118 for li-international-list; Tue, 17 Jan 1995 05:34:39 +0800
+Received: from alcor (alcor.twinsun.com [198.147.65.1]) by orac.aust.li.org (8.6.9/8.6.9) with ESMTP id FAA01112 for <li-international@li.org>; Tue, 17 Jan 1995 05:34:28 +0800
+Received: from twinsun.com (twinsun.twinsun.com [192.54.239.2]) by alcor (8.6.5/8.6.5) with SMTP id NAA04793 for <li-international@li.org>; Mon, 16 Jan 1995 13:06:52 -0800
+Received: from spot.twinsun.com by twinsun.com (4.1/SMI-4.1)
+ id AA06664; Mon, 16 Jan 95 13:33:30 PST
+Received: by spot.twinsun.com (4.1/SMI-4.1)
+ id AA04256; Mon, 16 Jan 95 13:33:30 PST
+Old-From: eggert@twinsun.com (Paul Eggert)
+Message-Id: <9501162133.AA04256@spot.twinsun.com>
+Date: 16 Jan 1995 13:33:28 -0800
+To: li-international@li.org
+Subject: ISO Normative Addendum 1 and its effect on the C library
+From: International List <li-international@li.org>
+Sender: owner-li-international@li.org
+Precedence: bulk
+Reply-To: LI-international@li.org
+
+*** EOOH ***
+From: eggert@twinsun.com (Paul Eggert)
+Date: 16 Jan 1995 13:33:28 -0800
+To: li-international@li.org
+Subject: ISO Normative Addendum 1 and its effect on the C library
+Reply-To: LI-international@li.org
+
+Normative Addendum 1 (NA1) to the ISO C standard was approved last year,
+and I recently ran across a nice summary written by Clive Feather.
+Please see <http://sf.www.lysator.liu.se/c/nal.html> for this;
+
+Most of the changes required by NA1 are to the C library's wide
+character and multibyte string support. I don't see these changes
+mentioned in the latest glibc snapshot. I asked Roland McGrath,
+glibc's developer, about this, and he replied:
+
+ Date: Mon, 16 Jan 95 15:53:26 -0500
+ From: Roland McGrath <roland@gnu.ai.mit.edu>
+
+ I think if you make the specifications available to the Linux community,
+ the new library functions will get written and contributed to glibc.
+ Try the mailing list li-international@li.org.
+
+So I'm sending this message to li-international. I can forward a copy
+of the NA1 summary to whoever needs it; just ask.
+
+Two of the NA1 changes (__STDC_VERSION__ and digraphs) require changes
+to GCC itself; I've volunteered to do this. One change (namely
+<iso646.h>) can be done either in GCC or in libc, though if GCC does
+digraphs it may make more sense for it to do <iso646.h> as well.
+But the other changes belong to the C library proper.
+
+
+
+1,,
+Mail-from: From twinsun.com!eggert Tue Feb 14 05:16:49 1995
+Return-Path: <twinsun.com!eggert>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0reKJK-00009mC; Tue, 14 Feb 95 05:16 EST
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id CAA00816 for <icule!pinard>; Tue, 14 Feb 1995 02:16:27 -0500
+Received: from saguenay.IRO.UMontreal.CA (root@saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id CAA02807 for <pinard@lagrande.IRO.UMontreal.CA>; Tue, 14 Feb 1995 02:16:20 -0500
+Received: from alcor.twinsun.com (alcor.twinsun.com [198.147.65.1]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id CAA29451 for <pinard@iro.umontreal.ca>; Tue, 14 Feb 1995 02:16:16 -0500
+Received: from twinsun.com (twinsun.twinsun.com [192.54.239.2]) by alcor.twinsun.com (8.6.5/8.6.5) with SMTP id WAA03362 for <pinard@iro.umontreal.ca>; Mon, 13 Feb 1995 22:44:50 -0800
+Received: from spot.twinsun.com by twinsun.com (4.1/SMI-4.1)
+ id AA08130; Mon, 13 Feb 95 23:15:06 PST
+Received: by spot.twinsun.com (4.1/SMI-4.1)
+ id AA05763; Mon, 13 Feb 95 23:15:05 PST
+From: eggert@twinsun.com (Paul Eggert)
+Message-Id: <9502140715.AA05763@spot.twinsun.com>
+Date: 13 Feb 1995 23:15:04 -0800
+To: pinard@iro.umontreal.ca
+In-Reply-To: <m0rdrDE-00009QC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: glocale and Uniforum gettext simplicity
+
+*** EOOH ***
+From: eggert@twinsun.com (Paul Eggert)
+Date: 13 Feb 1995 23:15:04 -0800
+To: pinard@iro.umontreal.ca
+In-Reply-To: <m0rdrDE-00009QC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: glocale and Uniforum gettext simplicity
+
+
+ Date: Sun, 12 Feb 95 22:12 EST
+ From: pinard@iro.umontreal.ca (Francois Pinard)
+
+ Hello, Paul.
+
+ For more on this topic please see the Programming
+ for Internationalization FAQ (Message-ID:
+ <internationalization/programming-faq_784901999@rtfm.mit.edu>)
+ which I can forward to you if you like.
+
+ Would you do this, please?
+
+Sure, the latest revision be in my next message. For future
+reference, the coordinates are
+<ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/internationalization/programming-faq>.
+
+Alas, I haven't had time to work on this much lately -- beset with hardware
+problems at home and no time to fix them....
+
+
+1, edited,,
+Mail-from: From pinard Tue Mar 21 12:53:53 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0rr87q-00009TC; Tue, 21 Mar 95 12:53 EST
+Message-Id: <m0rr87q-00009TC@icule>
+Date: Tue, 21 Mar 95 12:53 EST
+From: pinard (François Pinard)
+To: meyering@comco.com
+CC: drepper@ipd.info.uni-karlsruhe.de
+In-reply-to: <199503211712.LAA25472@idefix.comco.com> (message from Jim Meyering on Tue, 21 Mar 1995 11:12:49 -0600)
+Subject: Re: international fileutils
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Tue, 21 Mar 95 12:53 EST
+From: pinard (François Pinard)
+To: meyering@comco.com
+CC: drepper@ipd.info.uni-karlsruhe.de
+In-reply-to: <199503211712.LAA25472@idefix.comco.com> (message from Jim Meyering on Tue, 21 Mar 1995 11:12:49 -0600)
+Subject: Re: international fileutils
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+There are three things to do for each package:
+
+* Adjust Autoconf and Makefiles
+* Mark all localizable strings in sources and doing other adjustments
+* Translating messages for French (and maybe, let's be fair, German :-).
+
+1, edited,,
+Mail-from: From pinard Sun Apr 23 13:26:30 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s35QR-00008FC; Sun, 23 Apr 95 13:26 EDT
+Message-Id: <m0s35QR-00008FC@icule>
+Date: Sun, 23 Apr 95 13:26 EDT
+From: pinard (François Pinard)
+To: Jim Meyering <meyering@comco.com>,
+ Ulrich Drepper <drepper@gnu.ai.mit.edu>,
+ Roland McGrath <roland@gnu.ai.mit.edu>,
+ Paul Eggert <eggert@twinsun.com>
+Subject: GNU locale and Ulrich's effort
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Sun, 23 Apr 95 13:26 EDT
+From: pinard (François Pinard)
+To: Jim Meyering <meyering@comco.com>,
+ Ulrich Drepper <drepper@gnu.ai.mit.edu>,
+ Roland McGrath <roland@gnu.ai.mit.edu>,
+ Paul Eggert <eggert@twinsun.com>
+Subject: GNU locale and Ulrich's effort
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+I'm trying to get started the overall effort for GNU localization,
+by offering translators GNU packages to translate, and the means
+to do so. I also do not want to spoil the energies being offered.
+Many pieces of the puzzle are in place already and, as usual, I
+contemplate them all trying to see what is missing, and working
+towards the complete picture.
+
+Surely to me, GNU locale (glocale, as a package) has to provide a
+fairly complete set of self-contained tools for helping package
+maintainers to internationalize their product, and also for
+localizers to translate message catalogs. Further, being itself
+internationalized, it should be a very carefully crafted example
+for maintainers, about how one might set his/her own package to be
+easily installed while localization is effective, and portably!
+
+
+
+1,,
+Mail-from: From pinard Mon May 1 22:16:31 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s67Vl-00008NC; Mon, 1 May 95 22:16 EDT
+Message-Id: <m0s67Vl-00008NC@icule>
+Date: Mon, 1 May 95 22:16 EDT
+From: pinard (=?ISO-8859-1?Q?Fran=E7ois_Pinard?=)
+To: gnu@prep.ai.mit.edu
+CC: rms@gnu.ai.mit.edu
+In-reply-to: <9505020044.AA12891@pizza> (gnu@ai.mit.edu)
+Subject: Re: [pinard@iro.umontreal.ca: Internationalizing GNU: the maintainer side]
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Mon, 1 May 95 22:16 EDT
+From: pinard (François Pinard)
+To: gnu@prep.ai.mit.edu
+CC: rms@gnu.ai.mit.edu
+In-reply-to: <9505020044.AA12891@pizza> (gnu@ai.mit.edu)
+Subject: Re: [pinard@iro.umontreal.ca: Internationalizing GNU: the maintainer side]
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+ It contains some statements that are harsh and, I believe,
+ not true. The practice of using gettext to mark strings is
+ *not* just "for the time being."
+
+ Fran\cois: Could you work with rms to update the GNU coding
+ standards to describe what GNUers needs to be do to make their
+ GNU programs use GNU Locale.
+
+I may try, but do not know exactly how to proceed. I also confess
+I've rewritten this paragraph twenty times, to merely censor myself.
+
+ We can then post that section of the GNU coding standards, so
+ all the GNUers know what to do.
+
+If GNU ever publishes utilities for Native Language Support, their
+own documentation should explain how to proceed, and maintainers
+should find in there the information they need about what to do.
+GNU standards might state the general principle, something like:
+``GNU programs and packages should be opened to Native Language
+Support (NLS) and, in particular, be able to write their messages
+translated into native languages, as selected at run time by
+environment variables''.
+
+--
+François Pinard ``Vivement GNU!'' <pinard@iro.umontreal.ca>
+Email lpf@uunet.uu.net for info about the League for Programming Freedom.
+
+
+1,,
+Mail-from: From IRO.UMontreal.CA!pinard Tue May 2 05:16:32 1995
+Return-Path: <IRO.UMontreal.CA!pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s6E4E-0000CaC; Tue, 2 May 95 05:16 EDT
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id AAA19507 for <icule!pinard>; Tue, 2 May 1995 00:02:38 -0400
+Received: (from pinard@localhost) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) id AAA00659 for icule!pinard; Tue, 2 May 1995 00:02:37 -0400
+Received: from saguenay.IRO.UMontreal.CA (saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id AAA00657 for <pinard@lagrande.IRO.UMontreal.CA>; Tue, 2 May 1995 00:02:34 -0400
+Received: from mole.gnu.ai.mit.edu (mole.gnu.ai.mit.edu [128.52.46.33]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id AAA08792 for <pinard@iro.umontreal.ca>; Tue, 2 May 1995 00:02:33 -0400
+Received: by mole.gnu.ai.mit.edu (8.6.12/8.6.12GNU) id AAA07143; Tue, 2 May 1995 00:02:31 -0400
+Date: Tue, 2 May 1995 00:02:31 -0400
+Message-Id: <199505020402.AAA07143@mole.gnu.ai.mit.edu>
+From: Richard Stallman <rms@gnu.ai.mit.edu>
+To: pinard@IRO.UMontreal.CA
+In-reply-to: <m0s67Vl-00008NC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: [pinard@iro.umontreal.ca: Internationalizing GNU: the maintainer side]
+
+*** EOOH ***
+Date: Tue, 2 May 1995 00:02:31 -0400
+From: Richard Stallman <rms@gnu.ai.mit.edu>
+To: pinard@IRO.UMontreal.CA
+In-reply-to: <m0s67Vl-00008NC@icule> (pinard@iro.umontreal.ca)
+Subject: Re: [pinard@iro.umontreal.ca: Internationalizing GNU: the maintainer side]
+
+ ``GNU programs and packages should be opened to Native Language
+ Support (NLS) and, in particular, be able to write their messages
+ translated into native languages, as selected at run time by
+ environment variables''.
+
+I think that is too vague to be useful. I'd rather put in some
+variant of what you sent before. But I don't have time right now
+to fix it.
+
+
+1, answered, edited,,
+Mail-from: From IRO.UMontreal.CA!pinard Wed May 3 00:19:10 1995
+Return-Path: <IRO.UMontreal.CA!pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s6Vty-0000CSC; Wed, 3 May 95 00:19 EDT
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id XAA19717 for <icule!pinard>; Tue, 2 May 1995 23:51:54 -0400
+Received: (from pinard@localhost) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) id XAA20985 for icule!pinard; Tue, 2 May 1995 23:51:52 -0400
+Received: from saguenay.IRO.UMontreal.CA (saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id XAA20983 for <pinard@lagrande.IRO.UMontreal.CA>; Tue, 2 May 1995 23:51:49 -0400
+Received: from nz11.rz.uni-karlsruhe.de (nz11.rz.uni-karlsruhe.de [129.13.64.7]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id XAA12985 for <pinard@iro.umontreal.ca>; Tue, 2 May 1995 23:51:15 -0400
+Received: from ipd.info.uni-karlsruhe.de (actually i44ms.info.uni-karlsruhe.de)
+ by nz11.rz.uni-karlsruhe.de with SMTP (PP);
+ Wed, 3 May 1995 03:54:26 +0200
+Received: from i44pc2.info.uni-karlsruhe.de (i44pc2.info.uni-karlsruhe.de [129.13.171.31])
+ by ipd.info.uni-karlsruhe.de (8.6.4/8.6.4) with SMTP id DAA00768;
+ Wed, 3 May 1995 03:57:08 +0200
+Message-Id: <199505030157.DAA00768@ipd.info.uni-karlsruhe.de>
+To: "ois \"Pinard)\""@rz.uni-karlsruhe.de, meyering@comco.com (Jim Meyering),
+ eggert@twinsun.com (Paul Eggert),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+Original-To: pinard@iro.umontreal.ca (François Pinard),
+ meyering@comco.com (Jim Meyering),
+ eggert@twinsun.com (Paul Eggert),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+PP-Warning: Parse error in original version of preceding To line
+Subject: nlsutils-0.4.2
+Date: Wed, 03 May 1995 03:56:24 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+
+*** EOOH ***
+To: "ois \"Pinard)\""@rz.uni-karlsruhe.de, meyering@comco.com (Jim Meyering),
+ eggert@twinsun.com (Paul Eggert),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+Original-To: pinard@iro.umontreal.ca (François Pinard),
+ meyering@comco.com (Jim Meyering),
+ eggert@twinsun.com (Paul Eggert),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+PP-Warning: Parse error in original version of preceding To line
+Subject: nlsutils-0.4.2
+Date: Wed, 03 May 1995 03:56:24 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+
+I tried hard to limit all external things in the libgintl directory.
+You have to copy this, some variation of my code in aclocal.m4
+and acconfig.h. This should be all.
+
+1, answered,,
+Mail-from: From IRO.UMontreal.CA!pinard Thu May 4 08:22:15 1995
+Return-Path: <IRO.UMontreal.CA!pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s6zv4-0000CSC; Thu, 4 May 95 08:22 EDT
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id HAA19349 for <icule!pinard>; Thu, 4 May 1995 07:48:32 -0400
+Received: (from pinard@localhost) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) id HAA24822 for icule!pinard; Thu, 4 May 1995 07:47:28 -0400
+Received: from saguenay.IRO.UMontreal.CA (saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id HAA24816 for <pinard@lagrande.IRO.UMontreal.CA>; Thu, 4 May 1995 07:47:25 -0400
+Received: from nz11.rz.uni-karlsruhe.de (nz11.rz.uni-karlsruhe.de [129.13.64.7]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id HAA17159 for <pinard@iro.umontreal.ca>; Thu, 4 May 1995 07:48:25 -0400
+Received: from ipd.info.uni-karlsruhe.de (actually i44ms.info.uni-karlsruhe.de)
+ by nz11.rz.uni-karlsruhe.de with SMTP (PP);
+ Thu, 4 May 1995 13:45:17 +0200
+Received: from i44pc2.info.uni-karlsruhe.de (i44pc2.info.uni-karlsruhe.de [129.13.171.31])
+ by ipd.info.uni-karlsruhe.de (8.6.4/8.6.4) with SMTP id NAA06097
+ for <pinard@iro.umontreal.ca>; Thu, 4 May 1995 13:48:06 +0200
+Message-Id: <199505041148.NAA06097@ipd.info.uni-karlsruhe.de>
+To: pinard@IRO.UMontreal.CA
+Subject: Re: Path to message?
+In-Reply-To: Your message of "Thu, 4 May 95 00:45 EDT"
+References: <m0s6snG-00008NC@icule>
+X-Mailer: Mew beta version 0.89 on Emacs 19.28.1
+Mime-Version: 1.0
+Content-Type: Text/Plain; charset=iso-8859-1
+Date: Thu, 04 May 1995 13:47:46 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+Content-Transfer-Encoding: 8bit
+X-Original-Encoding: quoted-printable
+
+*** EOOH ***
+To: pinard@IRO.UMontreal.CA
+Subject: Re: Path to message?
+In-Reply-To: Your message of "Thu, 4 May 95 00:45 EDT"
+References: <m0s6snG-00008NC@icule>
+Mime-Version: 1.0
+Content-Type: Text/Plain; charset=iso-8859-1
+Date: Thu, 04 May 1995 13:47:46 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+Content-Transfer-Encoding: 8bit
+X-Original-Encoding: quoted-printable
+
+From: pinard@iro.umontreal.ca (François Pinard)
+Subject: Path to message?
+Date: Thu, 4 May 95 00:45 EDT
+
+> Ulrich, always me. I do not understand that xgettext --help writes:
+>
+> Suchpfad ist: /usr/local/share/nls/src
+>
+> while /usr/local/share/locale/de/LC_MESSAGES is indeed searched.
+> Could we solve this inconsistency?
+>
+
+Not quite. /usr/local/share/locale/de/LC_MESSAGES is the path where
+the .mo/.cat files will go. The search path (Suchpfad :) represents
+the path to additional directories where other .po files can be found.
+
+I thought to use this feature for standard .po files for, say, libiberty
+etc. Each package would have to translate it again and again but if
+we could install this somewhere and use the -x option to exclude this
+strings from the generation.
+
+Perhaps I should use a different description?
+
+-- Uli
+________---------------------------------------------------------------
+\ / Ulrich Drepper / Univ. at Karlsruhe, Germany / CS Dept. / IPD
+L\inux/ email: drepper@gnu.ai.mit.edu smail: Rubensstr. 5
+ \ / drepper@ipd.info.uni-karlsruhe.de 76149 Karlsruhe
+ \/1.2.7 ------------------------------------------- Germany --------
+
+
+1, forwarded, edited,,
+Mail-from: From pinard Thu May 4 15:27:13 1995
+Return-Path: <pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s76YH-00008NC; Thu, 4 May 95 15:27 EDT
+Message-Id: <m0s76YH-00008NC@icule>
+Date: Thu, 4 May 95 15:27 EDT
+From: pinard (=?ISO-8859-1?Q?Fran=E7ois_Pinard?=)
+To: ajc@di.uminho.pt
+In-reply-to: <9505041601.AA20254@shiva.di.uminho.pt> (ajc@di.uminho.pt)
+Subject: Re: tar is ready for pt
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+*** EOOH ***
+Date: Thu, 4 May 95 15:27 EDT
+From: pinard (François Pinard)
+To: ajc@di.uminho.pt
+In-reply-to: <9505041601.AA20254@shiva.di.uminho.pt> (ajc@di.uminho.pt)
+Subject: Re: tar is ready for pt
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+
+Even if it is not completely official yet in GNU, the format of
+translation file is being revised, and the extension is being
+changed from `.tt' to `.po'. This should bring the format closer
+to one of the few standards in existence for translation files.
+Hopefully, we think that translation files will be more easily
+manageable afterwards. We do not want to make a religious issue of
+this format selection, as each standard has proponents and opponents.
+Please help us by being receptive to the format GNU uses.
+
+Existing `.tt' translation files are being converted to `.po' files
+by maintainers. Translators should switch to using the `.po' format,
+as soon as possible. This is an easy job. The `.po' translation
+file format is quite affordable. Schematically, it looks like:
+
+ msgid STRING-TO-TRANSLATE
+ msgstr TRANSLATED-STRING
+
+ msgid STRING-TO-TRANSLATE
+ msgstr TRANSLATED-STRING
+
+ msgid STRING-TO-TRANSLATE
+ msgstr TRANSLATED-STRING
+ [...]
+
+`msgid' and `msgstr' are kind of keywords, written at the beginning
+of a line. Each STRING-TO-TRANSLATE or TRANSLATED-STRING respects
+the C syntax for a character string, including the surrounding
+quotes, escape sequences, and usual techniques for writing multi-line
+C strings.
+
+Outside strings, white lines and comments may be used freely.
+In the schema, white lines preceding the msgid lines are optional.
+Comments start at the beginning of a line with `#' and extend until
+the end of line. Comments written by translators should have the
+initial `#' immediately followed by some white space. If the `#'
+is not immediately followed by white space, this comment is most
+likely generated and managed by specialized GNU tools.
+
+There is a conventional, uniform way of presenting a `.po' file, but
+a description of this format is not yet available. It will be all
+easy to make suggested adjustements at a later time, so do not worry
+right now about precise conventions. Further, there are normalizing
+tools automating conformance to a great extent, to be published soon.
+
+ And another question: what happens when new versions of the
+ program are released, with new messages?
+
+Usually, most GNU packages are pretested before being released.
+All teams of translators are made aware of localizable prereleases.
+A special tool regenerates a `.po' file with obsolescent strings
+commented out, and new strings put in evidence.
+
+Further, for those of us using GNU Emacs, a special editing mode is
+being written for `.po' files, in which mode translators is able
+to navigate easily in the `.po' file, find untranslated entries,
+examine at will the context of these strings in the program sources,
+and also observe other translations already made in other languages,
+for the string being translated.
+
+Teams members should share their translations and resolve linguistic
+or terminological issues. When they reach something satisfying,
+the team should formally submit the translation to the package
+maintainer for the final release. The precise formalities are not
+organized yet, and there are many details to clear up. Some legal
+aspects also have to be addressed, this is under study right now.
+
+Special means should be used for transiting translation files
+over email. The simplest way is using GNU shar in default mode,
+or else, uuencoding the `.po' file prior to mailing.
+
+--
+François Pinard ``Vivement GNU!'' <pinard@iro.umontreal.ca>
+Email lpf@uunet.uu.net for info about the League for Programming Freedom.
+
+
+1, edited,,
+Mail-from: From IRO.UMontreal.CA!pinard Thu Apr 20 16:54:03 1995
+Return-Path: <IRO.UMontreal.CA!pinard>
+Received: by icule (Smail3.1.28.1 #1)
+ id m0s23Ea-0000CxC; Thu, 20 Apr 95 16:53 EDT
+Received: from lagrande.iro.umontreal.ca (lagrande.IRO.UMontreal.CA [132.204.32.32]) by iros1.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id KAA12085 for <icule!pinard>; Thu, 20 Apr 1995 10:13:02 -0400
+Received: (from pinard@localhost) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) id KAA08298 for icule!pinard; Thu, 20 Apr 1995 10:12:34 -0400
+Received: from saguenay.IRO.UMontreal.CA (saguenay32.IRO.UMontreal.CA [132.204.32.54]) by lagrande.iro.umontreal.ca (8.6.9/8.6.9) with ESMTP id KAA08254 for <pinard@lagrande.IRO.UMontreal.CA>; Thu, 20 Apr 1995 10:10:49 -0400
+Received: from nz11.rz.uni-karlsruhe.de (nz11.rz.uni-karlsruhe.de [129.13.64.7]) by saguenay.IRO.UMontreal.CA (8.6.9/8.6.9) with ESMTP id KAA20778 for <pinard@iro.umontreal.ca>; Thu, 20 Apr 1995 10:10:25 -0400
+Received: from ipd.info.uni-karlsruhe.de (actually i44ms.info.uni-karlsruhe.de)
+ by nz11.rz.uni-karlsruhe.de with SMTP (PP);
+ Thu, 20 Apr 1995 16:05:34 +0200
+Received: from i44pc2.info.uni-karlsruhe.de (i44pc2.info.uni-karlsruhe.de [129.13.171.31])
+ by ipd.info.uni-karlsruhe.de (8.6.4/8.6.4) with SMTP id QAA28513;
+ Thu, 20 Apr 1995 16:08:10 +0200
+Message-Id: <199504201408.QAA28513@ipd.info.uni-karlsruhe.de>
+To: pinard@IRO.UMontreal.CA (Francois Pinard),
+ meyering@comco.com (Jim Meyering),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+Subject: more points to discuss
+X-Mailer: Mew beta version 0.89 on Emacs 19.28.1
+Mime-Version: 1.0
+Content-Type: Text/Plain; charset=iso-8859-1
+Date: Thu, 20 Apr 1995 16:08:55 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+Content-Transfer-Encoding: 8bit
+X-Original-Encoding: quoted-printable
+
+*** EOOH ***
+To: pinard@IRO.UMontreal.CA (Francois Pinard),
+ meyering@comco.com (Jim Meyering),
+ roland@gnu.ai.mit.edu (Roland McGrath)
+Subject: more points to discuss
+Mime-Version: 1.0
+Content-Type: Text/Plain; charset=iso-8859-1
+Date: Thu, 20 Apr 1995 16:08:55 +0200
+From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+Content-Transfer-Encoding: 8bit
+X-Original-Encoding: quoted-printable
+
+BTW my implementation will be able to process a lot of strange situation:
+- strings in preprocessor macros
+- something like gettext ("jkh" "jkhlk")
+or even
+- gettext ("jkkjh\
+sdfsdf")
+
+1, edited,,
+Received: from titan.comco.com (root@titan.comco.com [198.214.63.11]) by idefix.comco.com (8.6.9/8.6.9) with ESMTP id QAA16073 for <meyering@idefix.comco.com>; Sat, 19 Nov 1994 16:03:48 -0600
+Received: from alcor.twinsun.com (alcor.twinsun.com [198.147.65.1]) by titan.comco.com (8.6.9/8.6.9) with ESMTP id QAA03006 for <meyering@comco.com>; Sat, 19 Nov 1994 16:04:38 -0600
+Received: from twinsun.com (twinsun.twinsun.com [192.54.239.2]) by alcor.twinsun.com (8.6.5/8.6.5) with SMTP id NAA19013; Sat, 19 Nov 1994 13:55:18 -0800
+Received: from spot.twinsun.com by twinsun.com (4.1/SMI-4.1)
+ id AA29144; Sat, 19 Nov 94 14:01:01 PST
+Received: by spot.twinsun.com (4.1/SMI-4.1)
+ id AA02990; Sat, 19 Nov 94 14:01:00 PST
+From: eggert@twinsun.com (Paul Eggert)
+Message-Id: <9411192201.AA02990@spot.twinsun.com>
+Date: 19 Nov 1994 14:00:59 -0800
+To: rms@gnu.ai.mit.edu (Richard Stallman)
+Cc: meyering@comco.com, pdcruze@orac.iinet.com.au
+Subject: Re: glocale and diffutils
+Status: RO
+
+*** EOOH ***
+From: eggert@twinsun.com (Paul Eggert)
+Date: 19 Nov 1994 14:00:59 -0800
+To: rms@gnu.ai.mit.edu (Richard Stallman)
+Cc: meyering@comco.com, pdcruze@orac.iinet.com.au
+Subject: Re: glocale and diffutils
+
+The Uniforum proposal addresses this problem by partitioning message
+catalogs into ``textdomains''. Each textdomain can be maintained
+separately. Programs can share textdomains. Messages in different
+textdomains cannot clash. With diffutils, for example, I would expect
+one textdomain for diffutils programs and another for libc. The main
+module would use the default textdomain and invoke `gettext ("No
+newline at end of file")' just as diffutils-2.7.1 does; libc modules
+would use a system textdomain and would invoke something like
+`dgettext ("SYS_libc", "No such file or directory")'.
+
+
+ \ No newline at end of file