lyx_mirror/src/support/gettext.h
Jean-Marc Lasgouttes 19024f7255 Implement native reading of mo files.
Get the default language by a mix of QLocale and LyXRC::gui_language

Known limitations:
   * encoding is supposed to be UTF-8 (the charset parameter is checked);
   * context is not handled (implemented differently in LyX);
   * plural forms not implemented (not used for now in LyX);.
   * tThe byte endianness of the machine on which the .mo file have been
     built is expected to be the same as the one of the machine where this
     code is run.
2013-05-30 22:10:01 +02:00

84 lines
2.1 KiB
C++

// -*- C++ -*-
/**
* \file src/support/gettext.h
* 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.
*/
#ifndef GETTEXT_H
#define GETTEXT_H
#include "support/strfwd.h"
namespace lyx {
/*
* Native Language Support
*
* The general idea is that any string that should be translated is handled
* as follows:
* _("string")
*
* Static strings are special, obviously and must be flagged as follows:
* static str = N_("string");
*
* And wherever they are used:
* _(str)
*
* Every file where there are strings needs:
* #include "support/gettext.h"
*
* Remember to mention each of these files in "po/POFILES.in"
*
* The main() needs a locale_init() and a gettext_init() in the beginning.
*
* The various *_() methods accept only ASCII input, so they must not be used
* if the input may come from user supplied files.
* translateIfPossible() should be used in that case.
*/
/*
* General translation notes:
* Commands/options are not translated
* Debug messages are not translated
* Panic/fatal (that should not happen) messages need not be translated
*/
//#ifdef ENABLE_NLS
///
docstring const _(std::string const &);
//#else // ENABLE_NLS
///
//# define _(str) (str)
//#endif
# define N_(str) (str) // for detecting static strings
/**
* Translate \p name to the GUI language if it is possible.
* This should be used to translate strings that come from configuration
* files like .ui files. These strings could already be in the native
* language if they come from a file in the personal directory. */
docstring const translateIfPossible(docstring const & name);
/**
* Translate \p name to \p language if it is possible.
* This should be used to translate strings that come from configuration
* files like .ui files. These strings could already be in the native
* language if they come from a file in the personal directory. */
docstring const translateIfPossible(docstring const & name, std::string const & language);
} // namespace lyx
#endif