Thread

  1. Re: PRI?64 vs Visual Studio (2022)

    Bryan Green <dbryan.green@gmail.com> — 2025-12-15T19:06:09Z

    On 12/15/2025 12:28 PM, Tom Lane wrote:
    > It'd be great to not need the assumption of es_ES being installed.
    > However, I tried making a POSIX.po file and setting lc_messages to
    > POSIX, and it didn't work.  The msgfmt infrastructure seemed unfazed
    > and installed a .mo file under $sharedir/locale/POSIX/LC_MESSAGES as
    > I'd expect, but no translation happened (this on a Linux box).  Same
    > with 'C'.  It did work if I set lc_messages to 'C.utf8', which is a
    > known name according to this box's "locale -a", but this doesn't give
    > me a warm feeling about this approach being a lot more portable than
    > what we have.  Any ideas?
    
    My answer did not feel like it was right, so I checked multiple versions
    and realized there is a check.
    
    char *
    DCIGETTEXT (const char *domainname, const char *msgid, ...)
    {
      // Get the locale name
      categoryvalue = guess_category_value (category, categoryname);
    
      if (categoryvalue != NULL
          && !(categoryvalue[0] == 'C' && categoryvalue[1] == '\0')
          && strcmp (categoryvalue, "POSIX") != 0)
        {
          // Only do translation if NOT "C" and NOT "POSIX"
          retval = _nl_find_msg (...);
        }
    
      // For "C" and "POSIX", skip directly to returning msgid
      return (char *) msgid;
    }
    
    
    C.utf8 works because it is not "C" so is treated as a real locale.  Now
    that I'm back into that code...looking it over in more detail to see
    what might work...
    
    
    -- 
    Bryan Green
    EDB: https://www.enterprisedb.com