diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-01-16 02:24:24 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-01-16 02:24:24 +0000 |
commit | b8796462fbed70f55219da6c3c8f6611de8f2a8c (patch) | |
tree | 61fe31dc31d3d70141b44b9513afc501a006c81b | |
parent | 9238e1f1ed5ddcfd24606a8d2e67579040244725 (diff) |
Add gettext support.
Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com>
* configure.in acconfig.h glibintl.h gutils.c
po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext
support.
* glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros
some more and put them in this file, though they also need
to be included in acinclude.m4 due to the brokeness of
aclocal.
* gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c
gshell.c: Remove dummy _() #defines, include glibintl.m4.
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-12 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 14 | ||||
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | acconfig.h | 9 | ||||
-rw-r--r-- | acinclude.m4 | 346 | ||||
-rw-r--r-- | configure.in | 23 | ||||
-rw-r--r-- | gconvert.c | 2 | ||||
-rw-r--r-- | gfileutils.c | 2 | ||||
-rw-r--r-- | glib-gettext.m4 | 344 | ||||
-rw-r--r-- | glib/gconvert.c | 2 | ||||
-rw-r--r-- | glib/gfileutils.c | 2 | ||||
-rw-r--r-- | glib/glibintl.h | 33 | ||||
-rw-r--r-- | glib/gmarkup.c | 3 | ||||
-rw-r--r-- | glib/gshell.c | 2 | ||||
-rw-r--r-- | glib/gspawn-win32.c | 6 | ||||
-rw-r--r-- | glib/gspawn.c | 6 | ||||
-rw-r--r-- | glib/gutf8.c | 2 | ||||
-rw-r--r-- | glib/gutils.c | 17 | ||||
-rw-r--r-- | glibintl.h | 33 | ||||
-rw-r--r-- | gmarkup.c | 3 | ||||
-rw-r--r-- | gshell.c | 2 | ||||
-rw-r--r-- | gspawn-win32.c | 6 | ||||
-rw-r--r-- | gspawn.c | 6 | ||||
-rw-r--r-- | gutf8.c | 2 | ||||
-rw-r--r-- | gutils.c | 17 | ||||
-rw-r--r-- | m4macros/glib-gettext.m4 | 344 | ||||
-rw-r--r-- | po/.cvsignore | 9 | ||||
-rw-r--r-- | po/Makefile.in.in | 252 | ||||
-rw-r--r-- | po/POTFILES.in | 7 | ||||
-rw-r--r-- | po/po2tbl.sed.in | 102 |
36 files changed, 1660 insertions, 35 deletions
@@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3f34a52b5..a41f96ed3 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,17 @@ +Mon Jan 15 21:12:49 2001 Owen Taylor <otaylor@redhat.com> + + * configure.in acconfig.h glibintl.h gutils.c + po/{Makefile.in.in,POTFILES.in,po2tbl.in}: Add gettext + support. + + * glib-gettext.m4 acinclude.m4: Clean up the GTK+ gettext macros + some more and put them in this file, though they also need + to be included in acinclude.m4 due to the brokeness of + aclocal. + + * gspawn.c gspawn-win32.c gutf8.c gconvert.c gfileutils.c + gshell.c: Remove dummy _() #defines, include glibintl.m4. + 2001-01-09 Tor Lillqvist <tml@iki.fi> * giowin32.c: Rework the changes needed to pass mainloop-test. Now @@ -40,6 +40,7 @@ A mailing list is located at: To subscribe: mail -s subscribe gtk-list-request@redhat.com < /dev/null (Send mail to gtk-list-request@redhat.com with the subject "subscribe") + Installation ============ diff --git a/acconfig.h b/acconfig.h index cb9e82c6c..d0e2fd25a 100644 --- a/acconfig.h +++ b/acconfig.h @@ -43,6 +43,11 @@ The entries are in sort -df order: alphabetical, case insensitive, ignoring punctuation (such as underscores). */ -#undef USE_LIBICONV -#undef SANE_MALLOC_PROTOS +#undef ENABLE_NLS +#undef GETTEXT_PACKAGE #undef GLIB_SIZEOF_SYSTEM_THREAD +#undef GLIB_LOCALE_DIR +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef SANE_MALLOC_PROTOS +#undef USE_LIBICONV diff --git a/acinclude.m4 b/acinclude.m4 index 2ad32064d..d2ea6b22d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -425,3 +425,349 @@ AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl + + +# Macro to add for using GNU gettext. +# Ulrich Drepper <drepper@cygnus.com>, 1995. +# +# Modified to never use included libintl. +# Owen Taylor <otaylor@redhat.com>, 12/15/1998 +# +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. +# +# +# If you make changes to this file, you MUST update the copy in +# acinclude.m4. [ aclocal dies on duplicate macros, so if +# we run 'aclocal -I macros/' then we'll run into problems +# once we've installed glib-gettext.m4 :-( ] +# + +# serial 5 + +AC_DEFUN(AM_GLIB_WITH_NLS, + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + USE_INCLUDED_LIBINTL=no + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then +# AC_DEFINE(ENABLE_NLS) +# AC_MSG_CHECKING([whether included gettext is requested]) +# AC_ARG_WITH(included-gettext, +# [ --with-included-gettext use the GNU gettext library included here], +# nls_cv_force_use_gnu_gettext=$withval, +# nls_cv_force_use_gnu_gettext=no) +# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + nls_cv_force_use_gnu_gettext="no" + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If gettext or catgets are available (in this order) we + dnl use this. Else we have to fall back to GNU NLS library. + dnl catgets is only used if permitted by option --with-catgets. + nls_cv_header_intl= + nls_cv_header_libgt= + CATOBJEXT=NONE + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, + [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")], + gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)]) + + if test "$gt_cv_func_dgettext_libc" != "yes"; then + AC_CHECK_LIB(intl, bindtextdomain, + [AC_CACHE_CHECK([for dgettext in libintl], + gt_cv_func_dgettext_libintl, + [AC_CHECK_LIB(intl, dgettext, + gt_cv_func_dgettext_libintl=yes, + gt_cv_func_dgettext_libintl=no)], + gt_cv_func_dgettext_libintl=no)]) + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + LIBS="$LIBS -lintl"; + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + AC_DEFINE(HAVE_GETTEXT) + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl + if test "$MSGFMT" != "no"; then + AC_CHECK_FUNCS(dcgettext) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr], + [CATOBJEXT=.gmo + DATADIRNAME=share], + [CATOBJEXT=.mo + DATADIRNAME=lib]) + INSTOBJEXT=.mo + fi + fi + + # Added by Martin Baulig 12/15/98 for libc5 systems + if test "$gt_cv_func_dgettext_libc" != "yes" \ + && test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS=-lintl + LIBS=`echo $LIBS | sed -e 's/-lintl//'` + fi + ]) + +# if test "$CATOBJEXT" = "NONE"; then +# AC_MSG_CHECKING([whether catgets can be used]) +# AC_ARG_WITH(catgets, +# [ --with-catgets use catgets functions if available], +# nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) +# AC_MSG_RESULT($nls_cv_use_catgets) +# +# if test "$nls_cv_use_catgets" = "yes"; then +# dnl No gettext in C library. Try catgets next. +# AC_CHECK_LIB(i, main) +# AC_CHECK_FUNC(catgets, +# [AC_DEFINE(HAVE_CATGETS) +# INTLOBJS="\$(CATOBJS)" +# AC_PATH_PROG(GENCAT, gencat, no)dnl +# if test "$GENCAT" != "no"; then +# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) +# if test "$GMSGFMT" = "no"; then +# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) +# fi +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.cat +# INSTOBJEXT=.cat +# DATADIRNAME=lib +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h +# fi +# ]) +# fi +# fi + + if test "$CATOBJEXT" = "NONE"; then + dnl Neither gettext nor catgets in included in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "yes"; then + AC_DEFINE(ENABLE_NLS) + else + dnl Unset this variable since we use the non-zero value as a flag. + CATOBJEXT= +# dnl Mark actions used to generate GNU NLS library. +# INTLOBJS="\$(GETTOBJS)" +# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) +# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# AC_SUBST(MSGFMT) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.gmo +# INSTOBJEXT=.mo +# DATADIRNAME=share +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + else + DATADIRNAME=share + nls_cv_header_intl=intl/libintl.h + nls_cv_header_libgt=intl/libgettext.h + fi + AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) + AC_OUTPUT_COMMANDS( + [case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac]) + + +# # If this is used in GNU gettext we have to set USE_NLS to `yes' +# # because some of the sources are only built for this goal. +# if test "$PACKAGE" = gettext; then +# USE_NLS=yes +# USE_INCLUDED_LIBINTL=yes +# fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLDEPS) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + ]) + +AC_DEFUN(AM_GLIB_GNU_GETTEXT, + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl +# AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ +unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ +strdup __argz_count __argz_stringify __argz_next]) + +# if test "${ac_cv_func_stpcpy+set}" != "set"; then +# AC_CHECK_FUNCS(stpcpy) +# fi +# if test "${ac_cv_func_stpcpy}" = "yes"; then +# AC_DEFINE(HAVE_STPCPY) +# fi + + AM_LC_MESSAGES + AM_GLIB_WITH_NLS + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + +# dnl The reference to <locale.h> in the installed <libintl.h> file +# dnl must be resolved because we cannot expect the users of this +# dnl to define HAVE_LOCALE_H. +# if test $ac_cv_header_locale_h = yes; then +# INCLUDE_LOCALE_H="#include <locale.h>" +# else +# INCLUDE_LOCALE_H="\ +#/* The system does not provide the header <locale.h>. Take care yourself. */" +# fi +# AC_SUBST(INCLUDE_LOCALE_H) + + dnl Determine which catalog format we have (if any is needed) + dnl For now we know about two different formats: + dnl Linux libc-5 and the normal X/Open format + test -d po || mkdir po + if test "$CATOBJEXT" = ".cat"; then + AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) + + dnl Transform the SED scripts while copying because some dumb SEDs + dnl cannot handle comments. + sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed + fi + dnl po2tbl.sed is always needed. + sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ + $srcdir/po/po2tbl.sed.in > po/po2tbl.sed + +# dnl In the intl/Makefile.in we have a special dependency which makes +# dnl only sense for gettext. We comment this out for non-gettext +# dnl packages. +# if test "$PACKAGE" = "gettext"; then +# GT_NO="#NO#" +# GT_YES= +# else +# GT_NO= +# GT_YES="#YES#" +# fi +# AC_SUBST(GT_NO) +# AC_SUBST(GT_YES) + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but ($top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + +# dnl *** For now the libtool support in intl/Makefile is not for real. +# l= +# AC_SUBST(l) + + dnl Generate list of files to be processed by xgettext which will + dnl be included in po/Makefile. + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + ]) + diff --git a/configure.in b/configure.in index 58562bed4..5876e1970 100644 --- a/configure.in +++ b/configure.in @@ -140,8 +140,9 @@ if test "x$enable_msg_prefix" = "xyes"; then [Enable prefixing of error messages with program names]) fi -# Checks for programs. +dnl Checks for programs. AC_PROG_CC + AM_PROG_CC_STDC AC_PROG_INSTALL @@ -175,6 +176,25 @@ if test "x$enable_rebuilds" = "xyes" && \ fi AC_SUBST(REBUILD) + +dnl +dnl gettext support +dnl + +ALL_LINGUAS="" +AM_GLIB_GNU_GETTEXT +LIBS="$LIBS $INTLLIBS" + +GETTEXT_PACKAGE=glib20 +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE") + +# AM_GLIB_GNU_GETTEXT above substs $DATADIRNAME +# this is the directory where the *.{mo,gmo} files are installed +GLIB_LOCALE_DIR="${prefix}/${DATADIRNAME}/locale" +AC_DEFINE_UNQUOTED(GLIB_LOCALE_DIR,"$GLIB_LOCALE_DIR") + + dnl Initialize libtool AM_PROG_LIBTOOL @@ -1778,6 +1798,7 @@ gmodule/gmoduleconf.h gmodule/Makefile gobject/Makefile gthread/Makefile +po/Makefile.in docs/Makefile docs/glib-config.1 docs/reference/Makefile diff --git a/gconvert.c b/gconvert.c index 49cfad9aa..9307f43e8 100644 --- a/gconvert.c +++ b/gconvert.c @@ -32,7 +32,7 @@ #include <windows.h> #endif -#define _(s) (s) +#include "glibintl.h" GQuark g_convert_error_quark() diff --git a/gfileutils.c b/gfileutils.c index eb545dcb1..0777530b5 100644 --- a/gfileutils.c +++ b/gfileutils.c @@ -62,7 +62,7 @@ #define O_BINARY 0 #endif -#define _(x) x +#include "glibintl.h" /** * g_file_test: diff --git a/glib-gettext.m4 b/glib-gettext.m4 new file mode 100644 index 000000000..a9155cb1f --- /dev/null +++ b/glib-gettext.m4 @@ -0,0 +1,344 @@ +# Macro to add for using GNU gettext. +# Ulrich Drepper <drepper@cygnus.com>, 1995. +# +# Modified to never use included libintl. +# Owen Taylor <otaylor@redhat.com>, 12/15/1998 +# +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. +# +# +# If you make changes to this file, you MUST update the copy in +# acinclude.m4. [ aclocal dies on duplicate macros, so if +# we run 'aclocal -I macros/' then we'll run into problems +# once we've installed glib-gettext.m4 :-( ] +# + +# serial 5 + +AC_DEFUN(AM_GLIB_WITH_NLS, + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + USE_INCLUDED_LIBINTL=no + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then +# AC_DEFINE(ENABLE_NLS) +# AC_MSG_CHECKING([whether included gettext is requested]) +# AC_ARG_WITH(included-gettext, +# [ --with-included-gettext use the GNU gettext library included here], +# nls_cv_force_use_gnu_gettext=$withval, +# nls_cv_force_use_gnu_gettext=no) +# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + nls_cv_force_use_gnu_gettext="no" + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If gettext or catgets are available (in this order) we + dnl use this. Else we have to fall back to GNU NLS library. + dnl catgets is only used if permitted by option --with-catgets. + nls_cv_header_intl= + nls_cv_header_libgt= + CATOBJEXT=NONE + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, + [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")], + gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)]) + + if test "$gt_cv_func_dgettext_libc" != "yes"; then + AC_CHECK_LIB(intl, bindtextdomain, + [AC_CACHE_CHECK([for dgettext in libintl], + gt_cv_func_dgettext_libintl, + [AC_CHECK_LIB(intl, dgettext, + gt_cv_func_dgettext_libintl=yes, + gt_cv_func_dgettext_libintl=no)], + gt_cv_func_dgettext_libintl=no)]) + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + LIBS="$LIBS -lintl"; + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + AC_DEFINE(HAVE_GETTEXT) + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl + if test "$MSGFMT" != "no"; then + AC_CHECK_FUNCS(dcgettext) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr], + [CATOBJEXT=.gmo + DATADIRNAME=share], + [CATOBJEXT=.mo + DATADIRNAME=lib]) + INSTOBJEXT=.mo + fi + fi + + # Added by Martin Baulig 12/15/98 for libc5 systems + if test "$gt_cv_func_dgettext_libc" != "yes" \ + && test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS=-lintl + LIBS=`echo $LIBS | sed -e 's/-lintl//'` + fi + ]) + +# if test "$CATOBJEXT" = "NONE"; then +# AC_MSG_CHECKING([whether catgets can be used]) +# AC_ARG_WITH(catgets, +# [ --with-catgets use catgets functions if available], +# nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) +# AC_MSG_RESULT($nls_cv_use_catgets) +# +# if test "$nls_cv_use_catgets" = "yes"; then +# dnl No gettext in C library. Try catgets next. +# AC_CHECK_LIB(i, main) +# AC_CHECK_FUNC(catgets, +# [AC_DEFINE(HAVE_CATGETS) +# INTLOBJS="\$(CATOBJS)" +# AC_PATH_PROG(GENCAT, gencat, no)dnl +# if test "$GENCAT" != "no"; then +# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) +# if test "$GMSGFMT" = "no"; then +# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) +# fi +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.cat +# INSTOBJEXT=.cat +# DATADIRNAME=lib +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h +# fi +# ]) +# fi +# fi + + if test "$CATOBJEXT" = "NONE"; then + dnl Neither gettext nor catgets in included in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "yes"; then + AC_DEFINE(ENABLE_NLS) + else + dnl Unset this variable since we use the non-zero value as a flag. + CATOBJEXT= +# dnl Mark actions used to generate GNU NLS library. +# INTLOBJS="\$(GETTOBJS)" +# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) +# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# AC_SUBST(MSGFMT) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.gmo +# INSTOBJEXT=.mo +# DATADIRNAME=share +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + else + DATADIRNAME=share + nls_cv_header_intl=intl/libintl.h + nls_cv_header_libgt=intl/libgettext.h + fi + AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) + AC_OUTPUT_COMMANDS( + [case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac]) + + +# # If this is used in GNU gettext we have to set USE_NLS to `yes' +# # because some of the sources are only built for this goal. +# if test "$PACKAGE" = gettext; then +# USE_NLS=yes +# USE_INCLUDED_LIBINTL=yes +# fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLDEPS) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + ]) + +AC_DEFUN(AM_GLIB_GNU_GETTEXT, + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl +# AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ +unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ +strdup __argz_count __argz_stringify __argz_next]) + +# if test "${ac_cv_func_stpcpy+set}" != "set"; then +# AC_CHECK_FUNCS(stpcpy) +# fi +# if test "${ac_cv_func_stpcpy}" = "yes"; then +# AC_DEFINE(HAVE_STPCPY) +# fi + + AM_LC_MESSAGES + AM_GLIB_WITH_NLS + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + +# dnl The reference to <locale.h> in the installed <libintl.h> file +# dnl must be resolved because we cannot expect the users of this +# dnl to define HAVE_LOCALE_H. +# if test $ac_cv_header_locale_h = yes; then +# INCLUDE_LOCALE_H="#include <locale.h>" +# else +# INCLUDE_LOCALE_H="\ +#/* The system does not provide the header <locale.h>. Take care yourself. */" +# fi +# AC_SUBST(INCLUDE_LOCALE_H) + + dnl Determine which catalog format we have (if any is needed) + dnl For now we know about two different formats: + dnl Linux libc-5 and the normal X/Open format + test -d po || mkdir po + if test "$CATOBJEXT" = ".cat"; then + AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) + + dnl Transform the SED scripts while copying because some dumb SEDs + dnl cannot handle comments. + sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed + fi + dnl po2tbl.sed is always needed. + sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ + $srcdir/po/po2tbl.sed.in > po/po2tbl.sed + +# dnl In the intl/Makefile.in we have a special dependency which makes +# dnl only sense for gettext. We comment this out for non-gettext +# dnl packages. +# if test "$PACKAGE" = "gettext"; then +# GT_NO="#NO#" +# GT_YES= +# else +# GT_NO= +# GT_YES="#YES#" +# fi +# AC_SUBST(GT_NO) +# AC_SUBST(GT_YES) + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but ($top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + +# dnl *** For now the libtool support in intl/Makefile is not for real. +# l= +# AC_SUBST(l) + + dnl Generate list of files to be processed by xgettext which will + dnl be included in po/Makefile. + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + ]) + diff --git a/glib/gconvert.c b/glib/gconvert.c index 49cfad9aa..9307f43e8 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -32,7 +32,7 @@ #include <windows.h> #endif -#define _(s) (s) +#include "glibintl.h" GQuark g_convert_error_quark() diff --git a/glib/gfileutils.c b/glib/gfileutils.c index eb545dcb1..0777530b5 100644 --- a/glib/gfileutils.c +++ b/glib/gfileutils.c @@ -62,7 +62,7 @@ #define O_BINARY 0 #endif -#define _(x) x +#include "glibintl.h" /** * g_file_test: diff --git a/glib/glibintl.h b/glib/glibintl.h new file mode 100644 index 000000000..a21017039 --- /dev/null +++ b/glib/glibintl.h @@ -0,0 +1,33 @@ +#ifndef __GLIBINTL_H__ +#define __GLIBINTL_H__ + +#include "config.h" + +#ifdef ENABLE_NLS + +extern int _glib_gettext_initialized; + +char *_glib_gettext_init (const char *str); + +#include<libintl.h> +#define _(String) \ + (_glib_gettext_initialized ? \ + dgettext(GETTEXT_PACKAGE,String) : \ + _glib_gettext_init(String)) + +#ifdef gettext_noop +#define N_(String) gettext_noop(String) +#else +#define N_(String) (String) +#endif +#else /* NLS is disabled */ +#define _(String) (String) +#define N_(String) (String) +#define textdomain(String) (String) +#define gettext(String) (String) +#define dgettext(Domain,String) (String) +#define dcgettext(Domain,String,Type) (String) +#define bindtextdomain(Domain,Directory) (Domain) +#endif + +#endif /* __GLIBINTL_H__ */ diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 0160d8c6e..6fd5a10b9 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -25,8 +25,7 @@ #include <stdlib.h> #include <errno.h> -/* FIXME */ -#define _(x) x +#include "glibintl.h" GQuark g_markup_error_quark () diff --git a/glib/gshell.c b/glib/gshell.c index 4bae260be..0fe2fcdf7 100644 --- a/glib/gshell.c +++ b/glib/gshell.c @@ -27,7 +27,7 @@ #warning "FIXME remove gettext hack" #endif -#define _(x) x +#include "glibintl.h" GQuark g_shell_error_quark (void) diff --git a/glib/gspawn-win32.c b/glib/gspawn-win32.c index 3033285d2..2b81a22ba 100644 --- a/glib/gspawn-win32.c +++ b/glib/gspawn-win32.c @@ -53,11 +53,7 @@ #include <process.h> #include <direct.h> -#ifdef _ -#warning "FIXME remove gettext hack" -#endif - -#define _(x) x +#include "glibintl.h" #ifdef G_SPAWN_WIN32_DEBUG static int debug = 1; diff --git a/glib/gspawn.c b/glib/gspawn.c index b1342ccaa..fdb8752da 100644 --- a/glib/gspawn.c +++ b/glib/gspawn.c @@ -34,11 +34,7 @@ #include <sys/select.h> #endif /* HAVE_SYS_SELECT_H */ -#ifdef _ -#warning "FIXME remove gettext hack" -#endif - -#define _(x) x +#include "glibintl.h" static gint g_execute (const gchar *file, gchar **argv, diff --git a/glib/gutf8.c b/glib/gutf8.c index 788b74ad9..e1091c6f1 100644 --- a/glib/gutf8.c +++ b/glib/gutf8.c @@ -33,7 +33,7 @@ #include <windows.h> #endif -#define _(s) (s) +#include "glibintl.h" #define UTF8_COMPUTE(Char, Mask, Len) \ if (Char < 128) \ diff --git a/glib/gutils.c b/glib/gutils.c index 449a2518d..9004546d8 100644 --- a/glib/gutils.c +++ b/glib/gutils.c @@ -1001,3 +1001,20 @@ g_get_codeset (void) #endif #endif } + +#ifdef ENABLE_NLS + +#include <libintl.h> + +int _glib_gettext_initialized = 0; + +char *_glib_gettext_init (const char *str) +{ + bindtextdomain(GETTEXT_PACKAGE, GLIB_LOCALE_DIR); + + return dgettext (GETTEXT_PACKAGE, str); +} + +#endif /* ENABLE_NLS */ + + diff --git a/glibintl.h b/glibintl.h new file mode 100644 index 000000000..a21017039 --- /dev/null +++ b/glibintl.h @@ -0,0 +1,33 @@ +#ifndef __GLIBINTL_H__ +#define __GLIBINTL_H__ + +#include "config.h" + +#ifdef ENABLE_NLS + +extern int _glib_gettext_initialized; + +char *_glib_gettext_init (const char *str); + +#include<libintl.h> +#define _(String) \ + (_glib_gettext_initialized ? \ + dgettext(GETTEXT_PACKAGE,String) : \ + _glib_gettext_init(String)) + +#ifdef gettext_noop +#define N_(String) gettext_noop(String) +#else +#define N_(String) (String) +#endif +#else /* NLS is disabled */ +#define _(String) (String) +#define N_(String) (String) +#define textdomain(String) (String) +#define gettext(String) (String) +#define dgettext(Domain,String) (String) +#define dcgettext(Domain,String,Type) (String) +#define bindtextdomain(Domain,Directory) (Domain) +#endif + +#endif /* __GLIBINTL_H__ */ @@ -25,8 +25,7 @@ #include <stdlib.h> #include <errno.h> -/* FIXME */ -#define _(x) x +#include "glibintl.h" GQuark g_markup_error_quark () @@ -27,7 +27,7 @@ #warning "FIXME remove gettext hack" #endif -#define _(x) x +#include "glibintl.h" GQuark g_shell_error_quark (void) diff --git a/gspawn-win32.c b/gspawn-win32.c index 3033285d2..2b81a22ba 100644 --- a/gspawn-win32.c +++ b/gspawn-win32.c @@ -53,11 +53,7 @@ #include <process.h> #include <direct.h> -#ifdef _ -#warning "FIXME remove gettext hack" -#endif - -#define _(x) x +#include "glibintl.h" #ifdef G_SPAWN_WIN32_DEBUG static int debug = 1; @@ -34,11 +34,7 @@ #include <sys/select.h> #endif /* HAVE_SYS_SELECT_H */ -#ifdef _ -#warning "FIXME remove gettext hack" -#endif - -#define _(x) x +#include "glibintl.h" static gint g_execute (const gchar *file, gchar **argv, @@ -33,7 +33,7 @@ #include <windows.h> #endif -#define _(s) (s) +#include "glibintl.h" #define UTF8_COMPUTE(Char, Mask, Len) \ if (Char < 128) \ @@ -1001,3 +1001,20 @@ g_get_codeset (void) #endif #endif } + +#ifdef ENABLE_NLS + +#include <libintl.h> + +int _glib_gettext_initialized = 0; + +char *_glib_gettext_init (const char *str) +{ + bindtextdomain(GETTEXT_PACKAGE, GLIB_LOCALE_DIR); + + return dgettext (GETTEXT_PACKAGE, str); +} + +#endif /* ENABLE_NLS */ + + diff --git a/m4macros/glib-gettext.m4 b/m4macros/glib-gettext.m4 new file mode 100644 index 000000000..a9155cb1f --- /dev/null +++ b/m4macros/glib-gettext.m4 @@ -0,0 +1,344 @@ +# Macro to add for using GNU gettext. +# Ulrich Drepper <drepper@cygnus.com>, 1995. +# +# Modified to never use included libintl. +# Owen Taylor <otaylor@redhat.com>, 12/15/1998 +# +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. +# +# +# If you make changes to this file, you MUST update the copy in +# acinclude.m4. [ aclocal dies on duplicate macros, so if +# we run 'aclocal -I macros/' then we'll run into problems +# once we've installed glib-gettext.m4 :-( ] +# + +# serial 5 + +AC_DEFUN(AM_GLIB_WITH_NLS, + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + USE_INCLUDED_LIBINTL=no + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then +# AC_DEFINE(ENABLE_NLS) +# AC_MSG_CHECKING([whether included gettext is requested]) +# AC_ARG_WITH(included-gettext, +# [ --with-included-gettext use the GNU gettext library included here], +# nls_cv_force_use_gnu_gettext=$withval, +# nls_cv_force_use_gnu_gettext=no) +# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + nls_cv_force_use_gnu_gettext="no" + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If gettext or catgets are available (in this order) we + dnl use this. Else we have to fall back to GNU NLS library. + dnl catgets is only used if permitted by option --with-catgets. + nls_cv_header_intl= + nls_cv_header_libgt= + CATOBJEXT=NONE + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, + [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")], + gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)]) + + if test "$gt_cv_func_dgettext_libc" != "yes"; then + AC_CHECK_LIB(intl, bindtextdomain, + [AC_CACHE_CHECK([for dgettext in libintl], + gt_cv_func_dgettext_libintl, + [AC_CHECK_LIB(intl, dgettext, + gt_cv_func_dgettext_libintl=yes, + gt_cv_func_dgettext_libintl=no)], + gt_cv_func_dgettext_libintl=no)]) + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + LIBS="$LIBS -lintl"; + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + AC_DEFINE(HAVE_GETTEXT) + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl + if test "$MSGFMT" != "no"; then + AC_CHECK_FUNCS(dcgettext) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr], + [CATOBJEXT=.gmo + DATADIRNAME=share], + [CATOBJEXT=.mo + DATADIRNAME=lib]) + INSTOBJEXT=.mo + fi + fi + + # Added by Martin Baulig 12/15/98 for libc5 systems + if test "$gt_cv_func_dgettext_libc" != "yes" \ + && test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS=-lintl + LIBS=`echo $LIBS | sed -e 's/-lintl//'` + fi + ]) + +# if test "$CATOBJEXT" = "NONE"; then +# AC_MSG_CHECKING([whether catgets can be used]) +# AC_ARG_WITH(catgets, +# [ --with-catgets use catgets functions if available], +# nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) +# AC_MSG_RESULT($nls_cv_use_catgets) +# +# if test "$nls_cv_use_catgets" = "yes"; then +# dnl No gettext in C library. Try catgets next. +# AC_CHECK_LIB(i, main) +# AC_CHECK_FUNC(catgets, +# [AC_DEFINE(HAVE_CATGETS) +# INTLOBJS="\$(CATOBJS)" +# AC_PATH_PROG(GENCAT, gencat, no)dnl +# if test "$GENCAT" != "no"; then +# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) +# if test "$GMSGFMT" = "no"; then +# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) +# fi +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.cat +# INSTOBJEXT=.cat +# DATADIRNAME=lib +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h +# fi +# ]) +# fi +# fi + + if test "$CATOBJEXT" = "NONE"; then + dnl Neither gettext nor catgets in included in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "yes"; then + AC_DEFINE(ENABLE_NLS) + else + dnl Unset this variable since we use the non-zero value as a flag. + CATOBJEXT= +# dnl Mark actions used to generate GNU NLS library. +# INTLOBJS="\$(GETTOBJS)" +# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) +# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# AC_SUBST(MSGFMT) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.gmo +# INSTOBJEXT=.mo +# DATADIRNAME=share +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + else + DATADIRNAME=share + nls_cv_header_intl=intl/libintl.h + nls_cv_header_libgt=intl/libgettext.h + fi + AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) + AC_OUTPUT_COMMANDS( + [case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac]) + + +# # If this is used in GNU gettext we have to set USE_NLS to `yes' +# # because some of the sources are only built for this goal. +# if test "$PACKAGE" = gettext; then +# USE_NLS=yes +# USE_INCLUDED_LIBINTL=yes +# fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLDEPS) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + ]) + +AC_DEFUN(AM_GLIB_GNU_GETTEXT, + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl +# AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ +unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ +strdup __argz_count __argz_stringify __argz_next]) + +# if test "${ac_cv_func_stpcpy+set}" != "set"; then +# AC_CHECK_FUNCS(stpcpy) +# fi +# if test "${ac_cv_func_stpcpy}" = "yes"; then +# AC_DEFINE(HAVE_STPCPY) +# fi + + AM_LC_MESSAGES + AM_GLIB_WITH_NLS + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + +# dnl The reference to <locale.h> in the installed <libintl.h> file +# dnl must be resolved because we cannot expect the users of this +# dnl to define HAVE_LOCALE_H. +# if test $ac_cv_header_locale_h = yes; then +# INCLUDE_LOCALE_H="#include <locale.h>" +# else +# INCLUDE_LOCALE_H="\ +#/* The system does not provide the header <locale.h>. Take care yourself. */" +# fi +# AC_SUBST(INCLUDE_LOCALE_H) + + dnl Determine which catalog format we have (if any is needed) + dnl For now we know about two different formats: + dnl Linux libc-5 and the normal X/Open format + test -d po || mkdir po + if test "$CATOBJEXT" = ".cat"; then + AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) + + dnl Transform the SED scripts while copying because some dumb SEDs + dnl cannot handle comments. + sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed + fi + dnl po2tbl.sed is always needed. + sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ + $srcdir/po/po2tbl.sed.in > po/po2tbl.sed + +# dnl In the intl/Makefile.in we have a special dependency which makes +# dnl only sense for gettext. We comment this out for non-gettext +# dnl packages. +# if test "$PACKAGE" = "gettext"; then +# GT_NO="#NO#" +# GT_YES= +# else +# GT_NO= +# GT_YES="#YES#" +# fi +# AC_SUBST(GT_NO) +# AC_SUBST(GT_YES) + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but ($top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + +# dnl *** For now the libtool support in intl/Makefile is not for real. +# l= +# AC_SUBST(l) + + dnl Generate list of files to be processed by xgettext which will + dnl be included in po/Makefile. + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + ]) + diff --git a/po/.cvsignore b/po/.cvsignore new file mode 100644 index 000000000..3ab5cbd83 --- /dev/null +++ b/po/.cvsignore @@ -0,0 +1,9 @@ +*.gmo +*.mo +Makefile +Makefile.in +POTFILES +cat-id-tbl.c +glib20.pot +po2tbl.sed +stamp-cat-id diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 000000000..e6a1a7584 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,252 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. +# +# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE +# instead of PACKAGE and to look for po2tbl in ./ not in intl/ +# + +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(GETTEXT_PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(GETTEXT_PACKAGE).po \ + || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ + && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(GETTEXT_PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ./po2tbl.sed $(srcdir)/$(GETTEXT_PACKAGE).pot \ + | sed -e "s/@GETTEXT_PACKAGE NAME@/$(GETTEXT_PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(GETTEXT_PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(GETTEXT_PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(GETTEXT_PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 000000000..5042c47c5 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,7 @@ +gconvert.c +gfileutils.c +gmarkup.c +gshell.c +gspawn-win32.c +gspawn.c +gutf8.c diff --git a/po/po2tbl.sed.in b/po/po2tbl.sed.in new file mode 100644 index 000000000..b3bcca4d7 --- /dev/null +++ b/po/po2tbl.sed.in @@ -0,0 +1,102 @@ +# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +1 { + i\ +/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ +\ +#if HAVE_CONFIG_H\ +# include <config.h>\ +#endif\ +\ +#include "libgettext.h"\ +\ +const struct _msg_ent _msg_tbl[] = { + h + s/.*/0/ + x +} +# +# Write msgid entries in C array form. +# +/^msgid/ { + s/msgid[ ]*\(".*"\)/ {\1/ + tb +# Append the next line + :b + N +# Look whether second part is continuation line. + s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ +# Yes, then branch. + ta +# Because we assume that the input file correctly formed the line +# just read cannot be again be a msgid line. So it's safe to ignore +# it. + s/\(.*\)\n.*/\1/ + bc +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ +# Some buggy seds do not clear the `successful substitution since last ``t''' +# flag on `N', so we do a `t' here to clear it. + tb +# Not reached + :c + x +# The following nice solution is by +# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)\n\([0-9]*\)/\1, \2},/ + s/\(.*\)"$/\1/ + p +} +# +# Last line. +# +$ { + i\ +};\ + + g + s/0*\(.*\)/int _msg_tbl_length = \1;/p +} +d |