#ifndef UTIL_LINUX_NLS_H
#define UTIL_LINUX_NLS_H

int main(int argc, char *argv[]);

#ifndef LOCALEDIR
#define LOCALEDIR "/usr/share/locale"
#endif

#ifdef HAVE_LOCALE_H
# include <locale.h>
#else
# undef setlocale
# define setlocale(Category, Locale) /* empty */
struct lconv
{
	char *decimal_point;
};
# undef localeconv
# define localeconv() NULL
#endif


#ifdef ENABLE_NLS
# include <libintl.h>
/*
 * For NLS support in the public shared libraries we have to specify text
 * domain name to be independent on the main program. For this purpose define
 * UL_TEXTDOMAIN_EXPLICIT before you include nls.h to your shared library code.
 */
# ifdef UL_TEXTDOMAIN_EXPLICIT
#  define _(Text) dgettext (UL_TEXTDOMAIN_EXPLICIT, Text)
# else
#  define _(Text) gettext (Text)
# endif
# ifdef gettext_noop
#  define N_(String) gettext_noop (String)
# else
#  define N_(String) (String)
# endif
# define P_(Singular, Plural, n) ngettext (Singular, Plural, n)
#else
# undef bindtextdomain
# define bindtextdomain(Domain, Directory) /* empty */
# undef textdomain
# define textdomain(Domain) /* empty */
# define _(Text) (Text)
# define N_(Text) (Text)
# define P_(Singular, Plural, n) ((n) == 1 ? (Singular) : (Plural))
#endif /* ENABLE_NLS */

#ifdef HAVE_LANGINFO_H
# include <langinfo.h>
#else

typedef int nl_item;
extern char *langinfo_fallback(nl_item item);

# define nl_langinfo	langinfo_fallback

enum {
	CODESET = 1,
	RADIXCHAR,
	THOUSEP,
	D_T_FMT,
	D_FMT,
	T_FMT,
	T_FMT_AMPM,
	AM_STR,
	PM_STR,

	DAY_1,
	DAY_2,
	DAY_3,
	DAY_4,
	DAY_5,
	DAY_6,
	DAY_7,

	ABDAY_1,
	ABDAY_2,
	ABDAY_3,
	ABDAY_4,
	ABDAY_5,
	ABDAY_6,
	ABDAY_7,

	MON_1,
	MON_2,
	MON_3,
	MON_4,
	MON_5,
	MON_6,
	MON_7,
	MON_8,
	MON_9,
	MON_10,
	MON_11,
	MON_12,

	ABMON_1,
	ABMON_2,
	ABMON_3,
	ABMON_4,
	ABMON_5,
	ABMON_6,
	ABMON_7,
	ABMON_8,
	ABMON_9,
	ABMON_10,
	ABMON_11,
	ABMON_12,

	ERA_D_FMT,
	ERA_D_T_FMT,
	ERA_T_FMT,
	ALT_DIGITS,
	CRNCYSTR,
	YESEXPR,
	NOEXPR
};

#endif /* !HAVE_LANGINFO_H */

#ifndef HAVE_LANGINFO_ALTMON
# define ALTMON_1 MON_1
# define ALTMON_2 MON_2
# define ALTMON_3 MON_3
# define ALTMON_4 MON_4
# define ALTMON_5 MON_5
# define ALTMON_6 MON_6
# define ALTMON_7 MON_7
# define ALTMON_8 MON_8
# define ALTMON_9 MON_9
# define ALTMON_10 MON_10
# define ALTMON_11 MON_11
# define ALTMON_12 MON_12
#endif /* !HAVE_LANGINFO_ALTMON */

#ifndef HAVE_LANGINFO_NL_ABALTMON
# define _NL_ABALTMON_1 ABMON_1
# define _NL_ABALTMON_2 ABMON_2
# define _NL_ABALTMON_3 ABMON_3
# define _NL_ABALTMON_4 ABMON_4
# define _NL_ABALTMON_5 ABMON_5
# define _NL_ABALTMON_6 ABMON_6
# define _NL_ABALTMON_7 ABMON_7
# define _NL_ABALTMON_8 ABMON_8
# define _NL_ABALTMON_9 ABMON_9
# define _NL_ABALTMON_10 ABMON_10
# define _NL_ABALTMON_11 ABMON_11
# define _NL_ABALTMON_12 ABMON_12
#endif /* !HAVE_LANGINFO_NL_ABALTMON */

#endif /* UTIL_LINUX_NLS_H */
