On Sun, Jan 11, 2026 at 06:25:15PM +0100, Bruno Haible via Bug reports for the 
GNU Texinfo documentation system wrote:
> On OpenBSD 7.8 I see 1 test failure:
> FAIL: test_scripts/layout_formatting_fr_info.sh
> 
> I'm attaching the tta/tests/test-suite.log .
> 
> "locale -a" shows 4 French locales:
> fr_BE.UTF-8
> fr_CA.UTF-8
> fr_CH.UTF-8
> fr_FR.UTF-8
> 
> but the locale implementation on OpenBSD is known to be crippled.
> 

> D: layout/diffs/formatting_fr_info.diff (printed below)
> diff -a -u -r 
> ../../../tta/tests/layout/res_parser/formatting_fr_info/formatting.2 
> layout/out_parser/formatting_fr_info/formatting.2
> --- ../../../tta/tests/layout/res_parser/formatting_fr_info/formatting.2      
> Thu Jan  1 23:38:11 2026
> +++ layout/out_parser/formatting_fr_info/formatting.2 Sun Jan 11 13:39:36 2026
> @@ -337,6 +337,7 @@
>  formatting.texi:89: @ref reference to nonexistent node `node' (possibly 
> involving @mymacro)
>  formatting.texi:228: warning: node `node with xrefname' not in menu
>  formatting.texi:130: warning: empty index key in @findex
> +Cannot switch to a locale compatible with document strings translations

This means that it was not possible to switch to a different locale than
C or POSIX with POSIX::setlocale.  Since it happens for the Info output
and not the HTML output, I think that it is an issue for Perl locales
switching only, similar locale switching code probably works in C.

We try to switch to any locale that is not C or POSIX, not necessarily
to the locale used for the translation, as we just want to be in a
situation where the LANGUAGE environment variable can be used to switch
the language used for translated messages.

I could reproduce the issue on a cfarm OpenBSD 7.8.  What happens is
that in tta/perl/Texinfo/Translations.pm, in _switch_messages_locale,
the following returns 'C':
 $locale = POSIX::setlocale(LC_MESSAGES, "en_US.UTF-8");

I had a look at the setlocale man page on this platform and there is
this paragraph:

     On OpenBSD, the only useful value for the category is LC_CTYPE.  It sets
     the locale used for character encoding, character classification, and
     case conversion.  For compatibility with natural language support in
     packages(7), all other categories -- LC_COLLATE, LC_MESSAGES,
     LC_MONETARY, LC_NUMERIC, and LC_TIME -- can be set and retrieved, too,
     but their values are ignored by the OpenBSD C library.  A category of
     LC_ALL sets the entire locale generically, which is strongly discouraged
     for security reasons in portable programs.

So, unless I misinterpret this, it seems that LC_CTYPE should be used
instead of LC_MESSAGES on that platform.

I tested, and indeed it worked to switch to a locale different from 'C'.
"Cannot switch to a locale compatible with document strings
translations" does not appear anymore, however, the strings are still
not translated.

I do not like the idea to use LC_CTYPE, but maybe others have other
ideas.

My feeling is that it works in C, because we do it a bit differently,
like:

      setenv_status = setenv ("LC_ALL", "en_US.UTF-8", 1)
                      || setenv ("LANG", "en_US.UTF-8", 1);
      locale = setlocale (LC_MESSAGES, "");

-- 
Pat

      • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
  • Re: ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Patrice Dumas
      • ... Gavin Smith
  • Re: ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Gavin Smith
      • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
        • ... Gavin Smith
  • Re: ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Patrice Dumas
      • ... Eli Zaretskii
        • ... Eli Zaretskii
          • ... Gavin Smith
            • ... pertusus
              • ... Gavin Smith
          • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
      • ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
  • Re: ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
  • Re: ... Bruno Haible via Bug reports for the GNU Texinfo documentation system
    • ... Gavin Smith

Reply via email to