Re: Windows question: when is LC_MESSAGES defined? - Mailing list pgsql-hackers

From Nazir Bilal Yavuz
Subject Re: Windows question: when is LC_MESSAGES defined?
Date
Msg-id CAN55FZ03+4b3_TMYrZRX0kvxVkMoaKpFKXrL9bJ53+1+fyxpCA@mail.gmail.com
Whole thread Raw
In response to Re: Windows question: when is LC_MESSAGES defined?  (Thomas Munro <thomas.munro@gmail.com>)
Responses Re: Windows question: when is LC_MESSAGES defined?
List pgsql-hackers
Hi,

On Thu, 10 Jul 2025 at 07:34, Thomas Munro <thomas.munro@gmail.com> wrote:
>
> On Thu, Jul 10, 2025 at 3:45 PM Thomas Munro <thomas.munro@gmail.com> wrote:
> > [03:28:24.318] Program msgfmt found: NO
>
> Correction, that ^ is the reason it's not reached on the MSVC task,
> while -Dnls=disabled is the reason for the MinGW task.  But the
> conclusion is the same: MinGW is the easiest way to test this code
> on CI, if you're hacking on it.
>
> Given that the build farm also doesn't test Windows + NLS, it's a
> small miracle that it even compiles.  Hmm, I guess that the EDB
> installer build must have it enabled, so I suppose they'd tell us if
> we broke it.  I guess that because sometimes we see reports of
> encoded-garbled error messages in other languages on the lists, which
> also tells us that it might have bugs in that department.  What I
> don't recall is whether they looked like the
> "some-contexts-have-no-defined-encoding" problem (that exists on Unix
> too but no one cares anymore since we all switched everything to UTF-8
> ages ago), or something else...

I spent some time on enabling NLS on MSVC:

x86:

* x86 files are available here [1]. I downloaded 'Complete package,
except sources' from this page, installed it and set related bin_dir,
extra_include_dirst and extra_lib_dirs. Then I was able to compile
Postgres with nls being enabled. I did not run tests as it was taking
too much time on the Windows VM instance (not CI instance, regular
Google Cloud VM created by using our Windows CI images).

x64:

* I downloaded Dave Page's Windows gettext artifact from [2]. I am
able to configure Postgres with nls being enabled but then compilation
failed with:
```
[349/2500] Building translation
src/interfaces/libpq/po/cs/LC_MESSAGES/libpq5-19-cs.mo
FAILED: src/interfaces/libpq/po/cs/LC_MESSAGES/libpq5-19.mo
"C:\Users\byavuz81\Downloads\gettext-0.25-win64\bin\msgfmt.EXE" "-o"
"src/interfaces/libpq/po/cs/LC_MESSAGES/libpq5-19.mo"
"../src/interfaces/libpq/po/cs.po"
C:\Users\byavuz81\Downloads\gettext-0.25-win64\bin\msgfmt.EXE: iconv
failure: No error
[354/2500] Compiling C object
src/interfaces/libpq/libpq.dll.p/fe-auth-oauth.c.obj
```

* Another option is using vcpkg [3] to install gettext. I tried that
~1 year ago and I remember gettext was working on Windows + MSVC but
not sure about its current status.

* Another option could be to download gettext [4] and then compile it locally.


[1] https://gnuwin32.sourceforge.net/packages/gettext.htm
[2] https://github.com/dpage/winpgbuild/actions/runs/16211024479
[3] https://vcpkg.io
[4] https://www.gnu.org/software/gettext

--
Regards,
Nazir Bilal Yavuz
Microsoft



pgsql-hackers by date:

Previous
From: Dmitry Koval
Date:
Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands
Next
From: vignesh C
Date:
Subject: Re: Log prefix missing for subscriber log messages received from publisher