intl: Treat C.UTF-8 locale like C locale, part 2 (BZ# 16621)

The previous commit was incomplete: gettext() still returns a translation
if the file /usr/share/locale/C/LC_MESSAGES/<domain>.mo exists. This patch
prohibits the translation also in this case.

* gettext-runtime/intl/dcigettext.c (DCIGETTEXT): Treat C.<encoding> locale
like the C locale.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
This commit is contained in:
Bruno Haible 2023-12-12 09:45:16 +01:00 committed by Florian Weimer
parent fc039ce850
commit d0aefec499

View File

@ -691,9 +691,10 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
continue;
}
/* If the current locale value is C (or POSIX) we don't load a
domain. Return the MSGID. */
if (strcmp (single_locale, "C") == 0
/* If the current locale value is "C" or "C.<encoding>" or "POSIX",
we don't load a domain. Return the MSGID. */
if ((single_locale[0] == 'C'
&& (single_locale[1] == '\0' || single_locale[1] == '.'))
|| strcmp (single_locale, "POSIX") == 0)
break;