Subject: Re: bug#57531: 28.1; Character encoding missing for "eo"

From: Gregory Heytings <[email-masked]>
Date: Mon, 05 Sep 2022 23:14:17 +0000

>
> Well, this is getting into the weeds a bit about NixOS, and isn’t really 
> relevant here, but just to humor you, configuring it like that results 
> in the same error. Look at [the documentation for supportedLocales] and 
> [the documentation on defaultLocale], in particular their examples. 
> “eo.UTF-8/UTF-8” is the way they want you to write that in 
> `supportedLocales'. You can also [check out the way it’s implemented], 
> which involves normalizing those locale strings such that they match the 
> ones provided by glibc.
>

Then it sounds like it's a NixOS bug.  As I said, eo.UTF-8 is definitely a 
valid locale, and is supported by glibc, so there is no reason that NixOS 
should reject it just because it's not present in some text file.  You can 
try it:

#include <stdio.h>
#include <locale.h>
#define CHECK(L) if (!setlocale (LC_ALL, L)) printf ("invalid locale %s\n", L);
int main ()
{
   CHECK ("eo");
   CHECK ("eo.UTF-8");
}

>> Then I guess Emacs doesn’t use it, which is why your suggested fix 
>> worked on NixOS but wouldn’t work on a Debian-based system.
>
> It’s an obsolete file, as has been pointed out upthread, so it’s not in 
> use at all, period. And whether or not you use X11 has nothing to do 
> with whether or not you use Debian. The fix I’m suggesting would work 
> equally as well on Debian as NixOS, or any Linux-based system, since 
> they use the same system for locales. But don’t take my word for it. Try 
> it yourself.
>

No, it's another one that is obsolete: /usr/share/locale/locale.alias is 
obsolete, /usr/share/X11/locale/locale.alias is not, it has last been 
updated on February 2nd.  It is used at least by libx11 and by Emacs.

And no, the fix you suggested does not work on Debian.  I tried it myself, 
it has no effect whatsoever.  When /usr/share/X11/locale/locale.alias is 
present, the information it contains takes precedence over those in 
locale-language-names.