From: "Juan Manuel Guerrero" Organization: Darmstadt University of Technology To: Tim Van Holder , JT Williams Date: Fri, 10 Aug 2001 10:56:44 +0200 Subject: Re: gettext port CC: djgpp-workers AT delorie DOT com In-reply-to: References: <20010809102227 DOT B12885 AT kendall DOT sfbr DOT org> X-mailer: Pegasus Mail for Windows (v2.54DE) Message-ID: <3D078832435@HRZ1.hrz.tu-darmstadt.de> Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Thu, 9 Aug 2001, Tim Van Holder wrote: > On Thu, 9 Aug 2001, JT Williams wrote: > > I probably lost my copy of `charset.alias' a frenzy of installation, > > hacking, and reinstallation. Perhaps (a version of) `charset.alias' > > should be included with any NLS-capable package? > > Hmm - it would seem better suited for inclusion in djdev. > The same would go for locale.alias (so you can set LANGUAGE=german > or LANGUAGE=deutsch). Some aclarations: _ charset.alias is a generated file. It is generated from lib/config.charset. That is a shell script that is run during compilation and generates an appropiate charset.alias for the OS for which the package has been configured. _ This charset.alias is generated by *every* GNU package that offers NLS. On DOS/WIN95 the install target installs this file into DJDIR/lib overwritting a probabely already installed charset.alias from another package. This is not dramatic because all charset.alias are equal. Please inspect libiconv-1.7, recode-3.6, Textutils-2.0.14, Fileutils-4.1, etc. All this packages have a config.charset in their /lib subdir and all they generate a new charset.alias that will be installed in DJDIR/lib. _ Very unfortunately I have written gtxt037, gtxt039, licv16 and licv17 manifest files that remove charset.alias. This implies, if the user removes one of these packages he removes also charset.alias breaking all the other packages. I will fix this ASAP. _ As Tim pointed out LANGUAGE can be set to a series of language names (LANGUAGE=thai:turkish). The contents of LANGUAGE are evaluated with the aid of locale.alias and the result is used to build the path to the .mo file. GNU gettext knowns two different syntaces: XPG and CEN. The LOCALE can consist of up to four recognized parts for the XPG syntax: language[_territory[.codeset]][@modifier] and six parts for the CEN syntax: language[_territory][+audience][+special][,[sponsor][_revision]] Beside the first part all of them are allowed to be missing. If the full specified locale is not found, the less specific one are looked for. The various parts will be stripped off according to the following order: (1) revision (2) sponsor (3) special (4) codeset (5) normalized codeset (6) territory (7) audience/modifier locale.alias uses the XPG syntax. A path will looks like (for german): /dev/env/DJDIR/share/locale/de_DE.ISO-8859-1.iso88591/LC_MESSAGE/gettext.mo with: dirname: /dev/env/DJDIR/share/locale (GNU uses this) language: de territory: DE codeset: ISO-8859-1 normalized codeset: iso88591 lc_message: LC_MESSAGE (GNU uses this) domain: gettext (this is usualy the program name) Because a subdir like de_DE.ISO-8859-1.iso88591 will not be found, the stripping rules given above will be applied finaly resulting in a `de' subdir. It is worth to be noticed that the charset name included in a subdir name like `de_DE.ISO-8859-1.iso88591' has no influence about the locale charset to be used for on-the-fly recoding. Which locale charset will be used to recode is only defined by the content of LANG in the DJGPP specific case. In conclusion: 1) charset.alias is generated and installed by every GNU package that offers NLS *and* runtime recoding. This are packages that come with gettext => 0.10.36. This implies that every installation overwrites the already installed charset.alias. 2) If charset.alias is included in the manifest file of an DJGPP package, removing the package will break all other packages. 3) Including charset.alias and locale.alias in djdevNNN.zip will not really solve the difficulty, IMHO. It is very unlikely that charset.alias will change very soon but netherless djdevNNN.zip is released only every 3 or 4 years. This period of time seems to long to wait for a probabely needed update of charset.alias IMHO. 4) The simplest solution seems to be to omit charset.alias and locale.alias from the manifest file but if an inclusion of charset.alias and locale.alias into djdevNNN.zip is prefered that will be ok with me. No objections. Regards, Guerrero, Juan Manuel