I dug deeper.... And yes, you are right. gettext() defaults to plain ASCII. The missing piece was "LC_CTYPE":
"11.2.4 How to specify the output character set gettext uses
[...]
The output character set is, by default, the value of nl_langinfo
(CODESET), which depends on the LC_CTYPE part of the current
locale. But programs which store strings in a locale independent way
(e.g. UTF-8) can request that gettext and related functions
return the translations in that encoding, by use of the
bind_textdomain_codeset function.
[...]"
I only set LC_MESSAGES in my program and in FLTK-1.3.x LC_TYPE is set as well (it is enough to call "Fl::args(argc, argv);" and nothing else), in FLTK-1.4.x it seems not set.
So in FLTK-1.3. it only works by accident, because my LANG contains the "[.codeset]" part with "UTF-8".
The correct solution is calling bind_textdomain_codeset() and thus, forcing the UTF-8 encoding, FLTK wants.
Many thanks to all of you for your comments which points me in the correct direction.
Jürgen