Mail Archives: djgpp-workers/2001/08/07/16:02:21
On Tue, 7 Aug 2001 10:05:14, JT Williams wrote:
> -: +LANG=CP437
> -: +LANGUAGE=de
> ^
>
> This does the trick; `sed --version' now displays text correctly
> in de, sv (the only ones I tried) using cp437 (and cp850). Thanks!
>
> So, if I understand this correctly, when I set LANG=de it was effectively
> like setting LANG=ISO-8859-1 (because the de text was prepared with that
> codepage)? So I was telling NLS that my current codepage was ISO-8859-1
> when it was not?
No, this is wrong.
The LANGUAGE variable selects the catalog (.mo files) containing the translated
strings that shall substitute the original english strings contained in the binary.
But this translated strings shall not be displayed with the charset used to write
them (in the case of `de' this was ISO-8859-1, an unix charset). They shall be
displayed with the appropiate locale charset. This locale charset (in our case the
appropiate dos codepage) is defined by the value of LANG.
To make this clear: on DOS/WIN95/DJGPP the value of LANG will be the appropiate
codepage to display the translated strings. Of course, there is no need to set LANG
to a codepage, an valid alias is always allowed. The possible aliases are translated
to the corresponding codepage with the aid of charset.alias.
Some examples:
LANG=de
LANGUAGE=de:es
This displays german translations using CP850, because LANG=de=CP850 (from charset.alias)
charset.alias is a table with two entries: left entry is the alias (en_US, de_AT, etc.)
right entry is the corresponding dos codepage for that language code (alias).
If certain string of the binary has no german translation then and only then the spanish
string will be displayed but using the same codepage (LANG is still de=CP850; this is not
dramatic in this particular because es=de=CP850). If a spanish translation for that string
can not be found then the original english string contained in the binary will be displayed
using CP850 once again.
LANG=en_US
LANGUAGE=de:es
This will do the same than before but this time using CP437 as locale charset (dos codepage)
because en_US=CP437
In conclusion:
LANGUAGE selects the translations to be used.
LANG selects the codepage that will be used to display the translations.
Because libiconv.a needs the information about what locale charset shall
be used, if LANG is omitted by the user LANGUAGE will be ignored and no
translation will be done at all.
The reason for all this confussion is the poor quality of my readme file.
Next version will explain better what the function of LANG and LANGUAGE is.
Regards,
Guerrero, Juan Manuel
- Raw text -