]> git.lyx.org Git - features.git/commitdiff
fix crash and localization on MinGW/Windows platform
authorMichael Schmitt <michael.schmitt@teststep.org>
Thu, 3 Nov 2005 09:21:09 +0000 (09:21 +0000)
committerMichael Schmitt <michael.schmitt@teststep.org>
Thu, 3 Nov 2005 09:21:09 +0000 (09:21 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10586 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/messages.C

index f938d5bc3d1b58f8c24460954aa8368326dc422f..0010a2e0d773011bef027155c7b401f1984bb57a 100644 (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:
index b98bc8368b0ce247ece0c99e45b7d8262821f7f6..3baa83c3e451be4f77df6adc984b33d213e6f47a 100644 (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.