/src/aspell/common/gettext.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Convenience header for conditional use of GNU <libintl.h>. |
2 | | Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. |
3 | | |
4 | | This program is free software; you can redistribute it and/or modify it |
5 | | under the terms of the GNU Library General Public License as published |
6 | | by the Free Software Foundation; either version 2, or (at your option) |
7 | | any later version. |
8 | | |
9 | | This program is distributed in the hope that it will be useful, |
10 | | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | | Library General Public License for more details. |
13 | | |
14 | | You should have received a copy of the GNU Library General Public |
15 | | License along with this program; if not, write to the Free Software |
16 | | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
17 | | USA. */ |
18 | | |
19 | | // NOTE: This file MUST be the last file included to avoid problems |
20 | | // with system header files that might include libintl.h |
21 | | |
22 | | #ifndef _LIBGETTEXT_H |
23 | | #define _LIBGETTEXT_H 1 |
24 | | |
25 | | /* NLS can be disabled through the configure --disable-nls option. */ |
26 | | #if ENABLE_NLS |
27 | | |
28 | | /* Get declarations of GNU message catalog functions. */ |
29 | | # include <libintl.h> |
30 | | |
31 | | #else |
32 | | |
33 | | /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which |
34 | | chokes if dcgettext is defined as a macro. So include it now, to make |
35 | | later inclusions of <locale.h> a NOP. We don't include <libintl.h> |
36 | | as well because people using "gettext.h" will not include <libintl.h>, |
37 | | and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> |
38 | | is OK. */ |
39 | | #if defined(__sun) |
40 | | # include <locale.h> |
41 | | #endif |
42 | | |
43 | | /* Disabled NLS. |
44 | | The casts to 'const char *' serve the purpose of producing warnings |
45 | | for invalid uses of the value returned from these functions. |
46 | | On pre-ANSI systems without 'const', the config.h file is supposed to |
47 | | contain "#define const". */ |
48 | | # undef gettext |
49 | | # define gettext(Msgid) ((const char *) (Msgid)) |
50 | | # undef dgettext |
51 | 49.6k | # define dgettext(Domainname, Msgid) ((const char *) (Msgid)) |
52 | | # undef dcgettext |
53 | | # define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) |
54 | | # undef ngettext |
55 | | # define ngettext(Msgid1, Msgid2, N) \ |
56 | | ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) |
57 | | # undef dngettext |
58 | | # define dngettext(Domainname, Msgid1, Msgid2, N) \ |
59 | | ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) |
60 | | # undef dcngettext |
61 | | # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ |
62 | | ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) |
63 | | # undef textdomain |
64 | | # define textdomain(Domainname) ((const char *) (Domainname)) |
65 | | # undef bindtextdomain |
66 | | # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) |
67 | | # undef bind_textdomain_codeset |
68 | | # define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) |
69 | | |
70 | | #endif |
71 | | |
72 | | /* A pseudo function call that serves as a marker for the automated |
73 | | extraction of messages, but does not call gettext(). The run-time |
74 | | translation is done at a different place in the code. |
75 | | The argument, String, should be a literal string. Concatenated strings |
76 | | and other string expressions won't work. |
77 | | The macro's expansion is not parenthesized, so that it is suitable as |
78 | | initializer for static 'char[]' or 'const char[]' variables. */ |
79 | | #define gettext_noop(String) String |
80 | | |
81 | | /* short cut macros */ |
82 | | |
83 | | /* I use dgettext so that the right domain will be looked at when |
84 | | Aspell is used as a library */ |
85 | 49.6k | #define _(String) dgettext ("aspell", String) |
86 | | #define N_(String) gettext_noop (String) |
87 | | |
88 | | /* use gt_ when there is the possibility that str will be the empty |
89 | | string. gettext in this case is not guaranteed to return an |
90 | | empty string */ |
91 | 0 | static inline const char * gt_(const char * str) { |
92 | 0 | return str[0] == '\0' ? str : _(str); |
93 | 0 | } Unexecuted instantiation: config.cpp:gt_(char const*) Unexecuted instantiation: posib_err.cpp:gt_(char const*) Unexecuted instantiation: errors.cpp:gt_(char const*) Unexecuted instantiation: convert.cpp:gt_(char const*) Unexecuted instantiation: gettext_init.cpp:gt_(char const*) Unexecuted instantiation: new_fmode.cpp:gt_(char const*) Unexecuted instantiation: find_speller.cpp:gt_(char const*) Unexecuted instantiation: tex.cpp:gt_(char const*) Unexecuted instantiation: info.cpp:gt_(char const*) Unexecuted instantiation: speller_impl.cpp:gt_(char const*) Unexecuted instantiation: language.cpp:gt_(char const*) Unexecuted instantiation: affix.cpp:gt_(char const*) Unexecuted instantiation: suggest.cpp:gt_(char const*) Unexecuted instantiation: data.cpp:gt_(char const*) Unexecuted instantiation: multi_ws.cpp:gt_(char const*) Unexecuted instantiation: readonly_ws.cpp:gt_(char const*) |
94 | | |
95 | | extern "C" void aspell_gettext_init(); |
96 | | |
97 | | /* NOTE: DO NOT USE "gettext", ALWAYS USE "_" BECAUSE WHEN ASPELL IS USED |
98 | | AS A LIBRARY THE DOMAIN IS NOT GUARANTEED TO BE ASPELL */ |
99 | | |
100 | | #endif /* _LIBGETTEXT_H */ |