X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmessages.C;h=90a345470cbaaac57c0cb2aa09bbb14cdfa914c7;hb=946ede62d061aa06c65c16d32d97044090f8e45b;hp=5cdf463022b5837a410b3286f51f5f6c17b2e267;hpb=ed75dc4febc46196e1275813d4eae79878b5e3fe;p=lyx.git diff --git a/src/messages.C b/src/messages.C index 5cdf463022..90a345470c 100644 --- a/src/messages.C +++ b/src/messages.C @@ -32,6 +32,10 @@ using support::setEnv; using std::string; using std::endl; + +static boost::regex const reg("^([^\\[]*)\\[\\[[^\\]]*\\]\\]$"); + + #ifdef ENABLE_NLS @@ -170,39 +174,34 @@ public: } textdomain(PACKAGE); -#if 0 - const char* msg = gettext(m.c_str()); - 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. - // "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. - static boost::regex const reg("^([^\\[]*)\\[\\[[^\\]]*\\]\\]$"); - boost::smatch sub; - if (regex_match(translated, sub, reg)) - translated = sub.str(1); -#else char const * tmp = m.c_str(); char const * msg = gettext(tmp); docstring translated; - if (!msg) { - lyxerr << "Undefined result from gettext" << endl; - translated = from_ascii(tmp); - } else if (msg == tmp) { - //lyxerr << "Same as entered returned" << endl; - translated = from_ascii(tmp); + if (!msg || msg == tmp) { + if (!msg) + lyxerr << "Undefined result from gettext" << endl; + //else + // lyxerr << "Same as entered returned" << endl; + // 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. + boost::smatch sub; + if (regex_match(m, sub, reg)) + translated = from_ascii(sub.str(1)); + else + translated = from_ascii(tmp); } else { lyxerr[Debug::DEBUG] << "We got a translation" << endl; char_type const * ucs4 = reinterpret_cast(msg); translated = ucs4; } -#endif #ifdef HAVE_LC_MESSAGES setlocale(LC_MESSAGES, lang.c_str()); #endif @@ -225,7 +224,12 @@ public: docstring const get(string const & m) const { - return from_ascii(m); + // See comment above + boost::smatch sub; + if (regex_match(m, sub, reg)) + return from_ascii(sub.str(1)); + else + return from_ascii(m); } }; #endif