X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgettext.C;h=aae9bc7f5c12b91b6e989775e99fda66c2b7484b;hb=65ca7003ba47b7348610393a9a0d2d309b4e9702;hp=debe17e487772d13230fc635c15728b9d84ac5c3;hpb=f3c49c0a05e1623f1d7b746079b85a73a920f49a;p=lyx.git diff --git a/src/gettext.C b/src/gettext.C index debe17e487..aae9bc7f5c 100644 --- a/src/gettext.C +++ b/src/gettext.C @@ -1,79 +1,64 @@ -// -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. +/** + * \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" -#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +# include +#endif + +using std::string; +using lyx::support::setEnv; -# if HAVE_GETTEXT -# include // use the header already in the system *EK* -# ifdef HAVE_LOCALE_H -# include // for LC_MESSAGES -# endif -# else -# include "../intl/libintl.h" -# endif -char const * _(char const * str) +namespace { + +Messages & getLyXMessages() { - // I'd rather have an Assert on str, we should not allow - // null pointers here. Lgb - // Assert(str); - if (str && str[0]) - return gettext(str); - else - return ""; + static Messages lyx_messages; + + return lyx_messages; } +} // anon namespace + -string const _(string const & str) +string const _(string const & str) { - if (!str.empty()) { - int const s = str.length(); - char * tmp = new char[s + 1]; - str.copy(tmp, s); - tmp[s] = '\0'; - string ret(gettext(tmp)); - delete [] tmp; - return ret; - } - else - return string(); + return getLyXMessages().get(str); } + +#ifdef ENABLE_NLS + void locale_init() { + // 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"); -# endif -} - -void gettext_init(string const & localedir) -{ - bindtextdomain(PACKAGE, localedir.c_str()); - textdomain(PACKAGE); } - #else // ENABLE_NLS void locale_init() { + setlocale(LC_NUMERIC, "C"); } -void gettext_init(string const &) -{ -} #endif