1 // -*- C++ -*-
2 /**
3  * \file src/support/gettext.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Lars Gullik Bjønnes
8  * \author Jean-Marc Lasgouttes
9  *
10  * Full author contact details are available in file CREDITS.
11  */
12 
13 #ifndef GETTEXT_H
14 #define GETTEXT_H
15 
16 #include "support/strfwd.h"
17 
18 
19 namespace lyx {
20 
21 /*
22  * Native Language Support
23  *
24  * The general idea is that any string that should be translated is handled
25  * as follows:
26  *	_("string")
27  *
28  * Static strings are special, obviously and must be flagged as follows:
29  *	static str = N_("string");
30  *
31  * And wherever they are used:
32  *	_(str)
33  *
34  * Every file where there are strings needs:
35  *	#include "support/gettext.h"
36  *
37  * Remember to mention each of these files in "po/POFILES.in"
38  *
39  * The main() needs a locale_init() and a gettext_init() in the beginning.
40  *
41  * The various *_() methods accept only ASCII input, so they must not be used
42  * if the input may come from user supplied  files.
43  * translateIfPossible() should be used in that case.
44  */
45 
46 /*
47  * General translation notes:
48  *   Commands/options are not translated
49  *   Debug messages are not translated
50  *   Panic/fatal (that should not happen) messages need not be translated
51  */
52 
53 
54 //#ifdef ENABLE_NLS
55 
56 ///
57 docstring const _(std::string const &);
58 
59 //#else // ENABLE_NLS
60 
61 ///
62 //#  define _(str) (str)
63 
64 //#endif
65 
66 #  define N_(str) (str)              // for detecting static strings
67 
68 /**
69  * Translate \p name to the GUI language if it is possible.
70  * This should be used to translate strings that come from configuration
71  * files like .ui files. These strings could already be in the native
72  * language if they come from a file in the personal directory. */
73 docstring const translateIfPossible(docstring const & name);
74 /**
75  * Translate \p name to \p language if it is possible.
76  * This should be used to translate strings that come from configuration
77  * files like .ui files. These strings could already be in the native
78  * language if they come from a file in the personal directory. */
79 docstring const translateIfPossible(docstring const & name, std::string const & language);
80 
81 } // namespace lyx
82 
83 #endif
84