]> git.lyx.org Git - lyx.git/commitdiff
make the message stuff work better
authorLars Gullik Bjønnes <larsbj@gullik.org>
Fri, 25 Apr 2003 01:54:04 +0000 (01:54 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Fri, 25 Apr 2003 01:54:04 +0000 (01:54 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6853 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/buffer.C
src/buffer.h
src/frontends/controllers/ChangeLog
src/frontends/controllers/ControlDocument.C
src/messages.C

index 45b19300cf60dbb90a3ff614468b2ea86440e476..2ee366b24bcf882852ef37b26e929968c938f115 100644 (file)
@@ -1,5 +1,11 @@
 2003-04-25  Lars Gullik Bjønnes  <larsbj@gullik.net>
 
+       * messages.C: make case where setlocale cannot comply work better.
+
+       * buffer.C (updateDocLang): new function
+       (changeLanguage): use it
+       (readFile): use it
+
        * text2.C (setCounter): use B_ a bit.
 
        * lyxlayout.C (Read): be sure to trim the label strings.
index dd70097d422a375487c5658b3e4169570c878452..aa481e4815a8906edbad2c62fae13c0dba104d6f 100644 (file)
@@ -500,8 +500,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
        // After we have read a file, we must ensure that the buffer
        // language is set and used in the gui.
        // If you know of a better place to put this, please tell me. (Lgb)
-       messages_.reset(new Messages(params.language->code(),
-                                    "/usr/local/share/locale"));
+       updateDocLang(params.language);
        
        return ret;
 }
@@ -2215,14 +2214,22 @@ void Buffer::redraw()
 
 void Buffer::changeLanguage(Language const * from, Language const * to)
 {
+       lyxerr << "Changing Language!" << endl;
+       
        // Take care of l10n/i18n
-       messages_.reset(new Messages(to->code(), "/usr/local/share/locale"));
+       updateDocLang(to);
 
        ParIterator end = par_iterator_end();
        for (ParIterator it = par_iterator_begin(); it != end; ++it)
                (*it)->changeLanguage(params, from, to);
 }
 
+       
+void Buffer::updateDocLang(Language const * nlang)
+{
+       messages_.reset(new Messages(nlang->code(), "/usr/local/share/locale"));
+}
+
 
 bool Buffer::isMultiLingual()
 {
index b5de352222d3a5b8cc2f8fc23201d7c23605e07c..8d562bd281ef3c47ee0884206b07baccddb190e1 100644 (file)
@@ -262,6 +262,10 @@ public:
 
        ///
        void changeLanguage(Language const * from, Language const * to);
+
+       ///
+       void updateDocLang(Language const * nlang);
+
        ///
        bool isMultiLingual();
 
index 58236269dc11f80c944ca8744406bb9ef8ea7188..38ae48d7d36369faf2148ff059985e585b39dd4b 100644 (file)
@@ -1,3 +1,8 @@
+2003-04-25  Lars Gullik Bjønnes  <larsbj@gullik.net>
+
+       * ControlDocument.C (setLanguage): call updateDocLang when not
+       calling changeLanguage.
+
 2003-04-10  John Levon  <levon@movementarian.org>
 
        * ControlTabular.h:
index 77dc09462fd4291fb8712dcb9ddf73c32f5e3a62..18461bf408c44df4d8ece696b16941856022dfde 100644 (file)
@@ -95,10 +95,14 @@ void ControlDocument::setLanguage()
        Language const * oldL = buffer()->params.language;
        Language const * newL = bp_->language;
 
-       if (oldL != newL
-           && oldL->RightToLeft() == newL->RightToLeft()
-           && !lv_.buffer()->isMultiLingual())
-               lv_.buffer()->changeLanguage(oldL, newL);
+       if (oldL != newL) {
+               
+               if (oldL->RightToLeft() == newL->RightToLeft()
+                   && !lv_.buffer()->isMultiLingual())
+                       lv_.buffer()->changeLanguage(oldL, newL);
+               else
+                   lv_.buffer()->updateDocLang(newL);
+       }
 }
 
 
index 44c029b5d21185c6e738f5d61efb09edb24d8372..466d9e2240ca8376e19b3866886adcd6a2eff460 100644 (file)
@@ -88,11 +88,13 @@ public:
        string const get(string const & m) const
        {
                char * old = strdup(setlocale(LC_ALL, 0));
-               setlocale(LC_ALL, lang_.c_str());
+               char * n = setlocale(LC_ALL, lang_.c_str());
                const char* msg = gettext(m.c_str());
                setlocale(LC_ALL, old);
                free(old);
-               return string(msg);
+               // If we are unable to honour the request we just
+               // return what we got in.
+               return (!n ? m : string(msg));
        }
 private:
        ///