build-sys: add NLS support

Add GNU gettext internationalization and localization support.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2011-10-08 21:14:21 +02:00
parent 7393599f73
commit a220ba6770
8 changed files with 224 additions and 7 deletions

13
.gitignore vendored
View File

@ -1,3 +1,9 @@
*.lo
*.o
*.so
.deps
.libs
ABOUT-NLS
aclocal.m4
autom4te.cache
compile
@ -5,24 +11,22 @@ config.guess
config.h
config.h.in
config.log
config.rpath
config.status
config.sub
configure
depcomp
.deps
.libs
free
INSTALL
install-sh
kill
libtool
*.lo
ltmain.sh
m4/
Makefile
Makefile.in
missing
*.o
mkinstalldirs
pgrep
pkill
pmap
@ -39,7 +43,6 @@ pwdx
skill
slabtop
snice
*.so
stamp-h1
sysctl
tload

View File

@ -1,7 +1,11 @@
AM_CPPFLAGS = -include $(top_builddir)/config.h
AM_CPPFLAGS = -include $(top_builddir)/config.h -I$(top_srcdir)/include
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = proc ps testsuite
SUBDIRS = \
po \
proc \
ps \
testsuite
AM_CFLAGS = -Iproc
AM_LDFLAGS = ./proc/libprocfs.la

View File

@ -54,6 +54,13 @@ echo " libtoolize: $(libtoolize --version | head -1)"
rm -rf autom4te.cache
set -e
po/update-potfiles
autopoint --force $AP_OPTS
if ! grep -q datarootdir po/Makefile.in.in; then
echo autopoint does not honor dataroot variable, patching.
sed -i -e 's/^datadir *=\(.*\)/datarootdir = @datarootdir@\
datadir = @datadir@/g' po/Makefile.in.in
fi
libtoolize --force ${LT_OPTS}
aclocal -I m4 ${AL_OPTS}
autoconf ${AC_OPTS}

View File

@ -101,6 +101,32 @@ AC_CHECK_FUNCS([\
wcwidth
])
usrbin_execdir='${exec_prefix}/usr/bin'
AC_SUBST([usrbin_execdir])
AM_GNU_GETTEXT_VERSION([0.14.1])
AM_GNU_GETTEXT([external])
dnl if test -d "$srcdir/po"
dnl then
dnl ALL_LINGUAS=`cd $srcdir/po > /dev/null && echo *.po | sed 's/\.po//g'`
dnl else
dnl ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
dnl fi
dnl UTIL_CHECK_LIB(LIBRARY, FUNCTION, [VARSUFFIX = $1]))
dnl The VARSUFFIX is optional and overrides the default behaviour. For example:
dnl UTIL_CHECK_LIB(yyy, func, xxx) generates have_xxx and HAVE_LIBXXX
dnl UTIL_CHECK_LIB(yyy, func) generates have_yyy and HAVE_LIBYYY
dnl ---------------------------------
AC_DEFUN([UTIL_CHECK_LIB], [
m4_define([suffix], m4_default([$3],$1))
[have_]suffix=yes
m4_ifdef([$3],
[AC_CHECK_LIB([$1], [$2], [AC_DEFINE(AS_TR_CPP([HAVE_LIB]suffix), 1)], [[have_]suffix=no])],
[AC_CHECK_LIB([$1], [$2], [], [[have_]suffix=no])])
AM_CONDITIONAL(AS_TR_CPP([HAVE_]suffix), [test [$have_]suffix = yes])
])
AC_ARG_WITH([ncurses],
AS_HELP_STRING([--without-ncurses], [build only applications not needing ncurses]),
[with_ncurses=no], [with_ncurses=yes]
@ -168,6 +194,7 @@ AC_SUBST(DEJAGNU)
AC_CONFIG_FILES([
Makefile
po/Makefile.in
proc/Makefile
proc/libprocfs.pc
ps/Makefile

106
include/nls.h Normal file
View File

@ -0,0 +1,106 @@
#ifndef PROCPS_NG_NLS_H
#define PROCPS_NG_NLS_H
#ifndef LOCALEDIR
#define LOCALEDIR "/usr/share/locale"
#endif
#ifdef HAVE_LOCALE_H
# include <locale.h>
#else
# undef setlocale
# define setlocale(Category, Locale) /* empty */
#endif
#ifdef ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
# 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 */
#endif /* PROCPS_NG_NLS_H */

18
po/.gitignore vendored Normal file
View File

@ -0,0 +1,18 @@
*.gmo
boldquot.sed
en@boldquot.header
en@quot.header
insert-header.sin
Makefile
Makefile.in
Makefile.in.in
Makefile.in.in~
Makevars.template
POTFILES
POTFILES.in
procps-ng.pot
quot.sed
remove-potcdate.sed
remove-potcdate.sin
Rules-quot
stamp-po

41
po/Makevars Normal file
View File

@ -0,0 +1,41 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=P_:1,2
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS = procps@freelists.org
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =

11
po/update-potfiles Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
if [ ! -f "po/Makevars" ]; then
echo "You must run this script in the top-level directory"
exit 1
fi
find . -name '*.c' |
sort |
sed 's|^./||
/^contrib/d' > po/POTFILES.in