X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgettext.C;h=46053cfc59e5407e4e66316470accbf6ed59e26d;hb=e7f4618bcce770369cf46335c2c7f0164b4b8857;hp=1bed23dce01f1873db42d1911578456e0fbd123f;hpb=e7401bd8f2310213b4b765c01676459f37adb530;p=lyx.git diff --git a/src/gettext.C b/src/gettext.C index 1bed23dce0..46053cfc59 100644 --- a/src/gettext.C +++ b/src/gettext.C @@ -1,22 +1,75 @@ +/** + * \file src/gettext.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * + * Full author contact details are available in file CREDITS. + */ + #include -#include "LString.h" #include "gettext.h" +#include "messages.h" + +#include "support/environment.h" +#include "support/lstrings.h" + + +namespace lyx { + +#ifdef HAVE_LOCALE_H +# include +#endif +using support::setEnv; -char const * _(char const * str) +using std::string; + + +docstring const _(string const & str) { - return gettext(str); + return getGuiMessages().get(str); } -string const _(string const & str) +#ifdef ENABLE_NLS + +void locale_init() { - int const s = str.length(); - char * tmp = new char[s + 1]; - str.copy(tmp, s); - tmp[s] = '\0'; - string ret(_(tmp)); - delete [] tmp; - return ret; + // Disable, as otherwise it overrides everything else incl. the doc language + setEnv("LANGUAGE", ""); +# ifdef HAVE_LC_MESSAGES + setlocale(LC_MESSAGES, ""); +# endif + setlocale(LC_CTYPE, ""); + setlocale(LC_NUMERIC, "C"); } + +#else // ENABLE_NLS + +void locale_init() +{ + setlocale(LC_NUMERIC, "C"); +} + +#endif + + +docstring const translateIfPossible(docstring const & name) +{ + if (support::isAscii(name)) + // Probably from a standard configuration file, try to + // translate + return _(to_ascii(name)); + else + // This must be from a user defined configuration file. We + // cannot translate this, since gettext accepts only ascii + // keys. + return name; +} + + +} // namespace lyx