Hello, since nobody seems to object, I will commit this patch in a few minutes...
Michael
? messages.patch Index: ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ChangeLog,v retrieving revision 1.2313 diff -u -r1.2313 ChangeLog --- ChangeLog 25 Oct 2005 15:21:46 -0000 1.2313 +++ ChangeLog 3 Nov 2005 08:17:45 -0000 @@ -1,3 +1,7 @@ +2005-11-03 Michael Gerz <[EMAIL PROTECTED]> + + * messages.C: fix crash and localization on MinGW/Windows platform + 2005-10-25 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> * text3.C (getStatus): Index: messages.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/messages.C,v retrieving revision 1.25 diff -u -r1.25 messages.C --- messages.C 18 Oct 2005 13:34:51 -0000 1.25 +++ messages.C 3 Nov 2005 08:17:46 -0000 @@ -89,8 +89,10 @@ Pimpl(string const & l) : lang_(l) { - if ( lang_.empty() ) - lang_ = setlocale(LC_MESSAGES, NULL); + if ( lang_.empty() ) { + char const * lc_msgs = setlocale(LC_MESSAGES, NULL); + lang_ = lc_msgs ? lc_msgs : ""; + } // strip off any encoding suffix, i.e., assume 8-bit po files string::size_type i = lang_.find("."); lang_ = lang_.substr(0, i); @@ -117,11 +119,15 @@ } } - char const * works = setlocale(LC_MESSAGES, lang_.c_str()); - if (!works) + char const * lc_msgs = setlocale(LC_MESSAGES, lang_.c_str()); +#ifndef _WIN32 + if (!lc_msgs) lyxerr << "Locale " << lang_ << " could not be set" << std::endl; +#endif // CTYPE controls what getmessage thinks what encoding the po file uses - string oldCTYPE = setlocale(LC_CTYPE, NULL); + char const * lc_ctype = setlocale(LC_CTYPE, NULL); + string oldCTYPE = lc_ctype ? lc_ctype : ""; + setlocale(LC_CTYPE, lang_.c_str()); errno = 0; char const * c = bindtextdomain(PACKAGE, package().locale_dir().c_str()); @@ -136,7 +142,7 @@ } textdomain(PACKAGE); const char* msg = gettext(m.c_str()); - string translated(works ? msg : m); + string translated(msg ? msg : m); // Some english words have different translations, depending // on context. In these cases the original string is // augmented by context information (e.g.