]> git.lyx.org Git - lyx.git/blobdiff - src/support/Messages.cpp
InsetArgument: Set ResetsFontEdit to false
[lyx.git] / src / support / Messages.cpp
index a7e67568308ca1494d5dc93d5e5e09ca3037846b..5c8d45fd8f72db085c9cadae2f5f1ce2205398e6 100644 (file)
@@ -34,17 +34,26 @@ void cleanTranslation(docstring & trans)
          Some english words have different translations, depending on
          context. In these cases the original string is augmented by
          context information (e.g. "To:[[as in 'From page x to page
-         y']]" and "To:[[as in 'From format x to format y']]". This
-         means that we need to filter out everything in double square
-         brackets at the end of the string, otherwise the user sees
-         bogus messages. If we are unable to honour the request we
-         just return what we got in.
+         y']]" and "To:[[as in 'From format x to format y']]". Also, 
+         when placeholders are used, the context can indicate what will
+         be substituted for the placeholder (e.g. "%1$s[[date]], %1$s
+         [[time]]). This means that we need to filter out everything 
+         in double square brackets at the end of the string, otherwise
+         the user sees bogus messages. If we are unable to honour the
+         request we just return what we got in.
        */
-       size_t const pos1 = trans.find(from_ascii("[["));
-       if (pos1 != docstring::npos) {
-               size_t const pos2 = trans.find(from_ascii("]]"), pos1);
-               if (pos2 != docstring::npos) 
-                       trans.erase(pos1, pos2 - pos1 + 2);
+       static docstring const ctx_start = from_ascii("[[");
+       static docstring const ctx_end = from_ascii("]]");
+       while (true) {
+               size_t const pos1 = trans.find(ctx_start);
+               if (pos1 != docstring::npos) {
+                       size_t const pos2 = trans.find(ctx_end, pos1);
+                       if (pos2 != docstring::npos) {
+                               trans.erase(pos1, pos2 - pos1 + 2);
+                               continue;
+                       }
+               }
+               break;
        }
 }
 
@@ -69,7 +78,7 @@ namespace lyx {
 
 // This version use the traditional gettext.
 Messages::Messages(string const & l)
-       : lang_(l), warned_(false)
+       : lang_(l)
 {
        // strip off any encoding suffix, i.e., assume 8-bit po files
        size_t i = lang_.find(".");
@@ -138,7 +147,7 @@ docstring const getText(string const & m)
        // FIXME: gettext sometimes "forgets" the ucs4_codeset we set
        // in init(), which leads to severe message corruption (#7371)
        // We set it again here unconditionally. A real fix must be found!
-       LASSERT(bind_textdomain_codeset(PACKAGE, ucs4_codeset), /**/);
+       LATTEST(bind_textdomain_codeset(PACKAGE, ucs4_codeset));
 
        char const * m_c = m.c_str();
        char const * trans_c = gettext(m_c);
@@ -204,7 +213,7 @@ docstring const Messages::get(string const & m) const
        pair<TranslationCache::iterator, bool> result =
                cache_.insert(make_pair(m, trans));
 
-       LASSERT(result.second, /**/);
+       LASSERT(result.second, return from_utf8(m));
 
        return result.first->second;
 }
@@ -243,51 +252,3 @@ bool Messages::available(string const & /* c */)
 } // namespace lyx
 
 #endif
-
-#if 0
-
--#include <locale>
-
-namespace lyx {
-
-// This version of the Pimpl utilizes the message capability of
-// libstdc++ that is distributed with GNU G++.
-class Messages::Pimpl {
-public:
-       typedef messages<char>::catalog catalog;
-
-       Pimpl(string const & l)
-               : lang_(l),
-                 loc_gl(lang_.c_str()),
-                 mssg_gl(use_facet<messages<char> >(loc_gl))
-       {
-               //LYXERR("Messages: language(" << l << ") in dir(" << dir << ")");
-
-               string const locale_dir = package().locale_dir().toFilesystemEncoding();
-               cat_gl = mssg_gl.open(PACKAGE, loc_gl, locale_dir.c_str());
-
-       }
-
-       ~Pimpl()
-       {
-               mssg_gl.close(cat_gl);
-       }
-
-       docstring const get(string const & msg) const
-       {
-               return mssg_gl.get(cat_gl, 0, 0, msg);
-       }
-private:
-       ///
-       string lang_;
-       ///
-       locale loc_gl;
-       ///
-       messages<char> const & mssg_gl;
-       ///
-       catalog cat_gl;
-};
-
-} // namespace lyx
-
-#endif