🌐 AI搜索 & 代理 主页
blob: d209911ebb80c164fb93073d054fd1ff7acb8da3 [file] [log] [blame]
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:201/*
2 * Copyright (c) 2010-2011 Ævar Arnfjörð Bjarmason
3 *
4 * This is a skeleton no-op implementation of gettext for Git.
5 * You can replace it with something that uses libintl.h and wraps
6 * gettext() to try out the translations.
7 */
8
9#ifndef GETTEXT_H
10#define GETTEXT_H
11
Jonathan Nieder0c9ea332011-03-10 03:17:5812#if defined(_) || defined(Q_)
13#error "namespace conflict: '_' or 'Q_' is pre-defined?"
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2014#endif
15
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4216#ifndef NO_GETTEXT
17# include <libintl.h>
18#else
19# ifdef gettext
20# undef gettext
21# endif
22# define gettext(s) (s)
23# ifdef ngettext
24# undef ngettext
25# endif
26# define ngettext(s, p, n) ((n == 1) ? (s) : (p))
27#endif
28
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2029#define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
30
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4231#ifndef NO_GETTEXT
Denton Liu55454422019-04-29 08:28:1432void git_setup_gettext(void);
33int gettext_width(const char *s);
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4234#else
35static inline void git_setup_gettext(void)
36{
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4237}
Nguyễn Thái Ngọc Duy754395d2012-09-04 10:39:3538static inline int gettext_width(const char *s)
39{
40 return strlen(s);
41}
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4242#endif
43
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2044static inline FORMAT_PRESERVING(1) const char *_(const char *msgid)
45{
Thomas Rast0c3a4332012-08-20 18:24:5646 if (!*msgid)
47 return "";
Ævar Arnfjörð Bjarmasond162b252021-01-20 18:27:5848 return gettext(msgid);
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2049}
50
Jonathan Nieder0c9ea332011-03-10 03:17:5851static inline FORMAT_PRESERVING(1) FORMAT_PRESERVING(2)
52const char *Q_(const char *msgid, const char *plu, unsigned long n)
53{
Ævar Arnfjörð Bjarmason5e9637c2011-11-17 23:14:4254 return ngettext(msgid, plu, n);
Jonathan Nieder0c9ea332011-03-10 03:17:5855}
56
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2057/* Mark msgid for translation but do not translate it. */
Ramsay Jones642f85f2011-04-07 18:41:4858#define N_(msgid) msgid
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2059
Jeff King93f7d912015-02-26 03:04:1660const char *get_preferred_languages(void);
Denton Liu55454422019-04-29 08:28:1461int is_utf8_locale(void);
Jeff King93f7d912015-02-26 03:04:1662
Ævar Arnfjörð Bjarmason65784832011-02-22 23:41:2063#endif