fix crash and localization on MinGW/Windows platform

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10586 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Michael Schmitt 2005-11-03 09:21:09 +00:00
parent d9f29afe1c
commit 9e96ada08b
2 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2005-11-03 Michael Gerz <michael.gerz@teststep.org>
* messages.C: fix crash and localization on MinGW/Windows platform
2005-11-02 Angus Leeming <leeming@lyx.org>
* Bidi.C:

View File

@ -89,8 +89,10 @@ public:
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 @@ public:
}
}
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 @@ public:
}
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.