Skip to content

Commit

Permalink
Revert "Windows: Use UTF-8 locale when active code page is UTF-8"
Browse files Browse the repository at this point in the history
This reverts commit 0d0b574.
  • Loading branch information
Larhzu committed Dec 20, 2024
1 parent 4b319e0 commit 0353390
Showing 1 changed file with 2 additions and 30 deletions.
32 changes: 2 additions & 30 deletions src/common/tuklib_gettext.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,34 +15,6 @@
#include "tuklib_common.h"
#include <locale.h>

#if defined(_WIN32) && !defined(__CYGWIN__)
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
// To use UTF-8 code page on Windows 10 version 1903 and later, the
// active code page has to be set to UTF-8 in the application manifest
// and UCRT-specific setlocale(LC_ALL, ".UTF8") must be called. The
// manifest makes argv[] use UTF-8 (which setlocale() cannot affect)
// and the special setlocale() call makes mbrtowc() and such functions
// use UTF-8. (It's weird why regular setlocale(LC_ALL, "") doesn't
// use the code page from the application manifest.)
//
// The two things have quite a bit of overlap though. For example,
// both affect the code page used in the file system APIs. Thus,
// if argv[] isn't in UTF-8, using setlocale() to set UTF-8 will
// break non-ASCII filenames that have been passed as command line
// arguments. Thus, it's best to set an UTF-8 locale only when
// the active code page is UTF-8.
//
// NOTE: Only UCRT supports the UTF-8 locale string, thus this
// will fail with MSVCRT if the active code page is UTF-8. That
// shouldn't be too bad because UTF-8 doesn't work properly with
// MSVCRT anyway.
# define tuklib_gettext_setlocale() \
setlocale(LC_ALL, GetACP() == CP_UTF8 ? ".UTF8" : "")
#else
# define tuklib_gettext_setlocale() setlocale(LC_ALL, "")
#endif

#ifndef TUKLIB_GETTEXT
# ifdef ENABLE_NLS
# define TUKLIB_GETTEXT 1
Expand All @@ -55,14 +27,14 @@
# include <libintl.h>
# define tuklib_gettext_init(package, localedir) \
do { \
tuklib_gettext_setlocale(); \
setlocale(LC_ALL, ""); \
bindtextdomain(package, localedir); \
textdomain(package); \
} while (0)
# define _(msgid) gettext(msgid)
#else
# define tuklib_gettext_init(package, localedir) \
tuklib_gettext_setlocale()
setlocale(LC_ALL, "")
# define _(msgid) (msgid)
# define ngettext(msgid1, msgid2, n) ((n) == 1 ? (msgid1) : (msgid2))
#endif
Expand Down

0 comments on commit 0353390

Please sign in to comment.