https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93840
Roland Illig <roland.illig at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #2 from Roland Illig <roland.illig at gmx dot de> ---
$ grep -wr ENABLE_NLS . | grep h:
./build-x86_64-pc-linux-gnu/libcpp/config.h:/* #undef ENABLE_NLS */
./gcc/auto-host.h:#define ENABLE_NLS 1
./intl/config.h:#define ENABLE_NLS 1
./libcpp/config.h:#define ENABLE_NLS 1
ltrace says:
bindtextdomain("gcc", "/home/rillig/tmp/gcc10/share/locale") =
"/home/rillig/tmp/gcc10/share/locale"
objdump -t says:
bindtextdomain@@GLIBC_2.2.5
I wonder why the openat calls don't ever mention "gcc.mo". There's also no
readdirat anywhere near, therefore I could not explain how gettext would even
find the translations.
I quickly wrote a test program, and that program confirms that it's the GNU C
Library and its libintl that behaves strange. Without setting LC_ALL or
LC_MESSAGES, it correctly searches in the path given to bindtextdomain. But
when LC_MESSAGES is set, only /usr/lib/locale is searched, and the .mo files
are not even touched.
#include <libintl.h>
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "");
bindtextdomain("gcc", "/home/rillig/tmp/gcc10/share/locale");
textdomain("gcc");
setlocale(LC_ALL, "");
puts(gettext(""));
}
In the end, I just did a "ln -s de en" in locale/share, and now I can test my
German translation.
Thanks for your help.