Yasumichi Akahoshi
yasum****@users*****
2005年 9月 3日 (土) 01:22:59 JST
Index: libcxp/Makefile.am diff -u libcxp/Makefile.am:1.4 libcxp/Makefile.am:1.5 --- libcxp/Makefile.am:1.4 Fri Sep 2 00:42:24 2005 +++ libcxp/Makefile.am Sat Sep 3 01:22:59 2005 @@ -4,7 +4,7 @@ schemadir = @GCONF_SCHEMA_FILE_DIR@ schema_DATA = libcxp.schemas -SUBDIRS = include src common po +SUBDIRS = include src common pixmaps po EXTRA_DIST = libcxp.pc.in intltool-extract.in intltool-merge.in intltool-update.in $(schema_DATA) install-data-local: Index: libcxp/Makefile.in diff -u libcxp/Makefile.in:1.8 libcxp/Makefile.in:1.9 --- libcxp/Makefile.in:1.8 Fri Sep 2 00:42:24 2005 +++ libcxp/Makefile.in Sat Sep 3 01:22:59 2005 @@ -129,9 +129,12 @@ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ @@ -144,6 +147,8 @@ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ @@ -225,7 +230,7 @@ pkgconfig_DATA = libcxp.pc schemadir = @GCONF_SCHEMA_FILE_DIR@ schema_DATA = libcxp.schemas -SUBDIRS = include src common po +SUBDIRS = include src common pixmaps po EXTRA_DIST = libcxp.pc.in intltool-extract.in intltool-merge.in intltool-update.in $(schema_DATA) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive Index: libcxp/aclocal.m4 diff -u libcxp/aclocal.m4:1.9 libcxp/aclocal.m4:1.10 --- libcxp/aclocal.m4:1.9 Fri Sep 2 00:42:24 2005 +++ libcxp/aclocal.m4 Sat Sep 3 01:22:59 2005 @@ -451,11 +451,10 @@ AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl -ll## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*- -dnl AC_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) -# serial 1 AC_PROG_INTLTOOL -AC_DEFUN([AC_PROG_INTLTOOL], +dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) +# serial 2 IT_PROG_INTLTOOL +AC_DEFUN([IT_PROG_INTLTOOL], [ if test -n "$1"; then @@ -486,6 +485,7 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' @@ -505,6 +505,7 @@ AC_SUBST(INTLTOOL_XAM_RULE) AC_SUBST(INTLTOOL_KBD_RULE) AC_SUBST(INTLTOOL_XML_RULE) +AC_SUBST(INTLTOOL_XML_NOMERGE_RULE) AC_SUBST(INTLTOOL_CAVES_RULE) AC_SUBST(INTLTOOL_SCHEMAS_RULE) AC_SUBST(INTLTOOL_THEME_RULE) @@ -535,6 +536,11 @@ fi fi +AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv) +AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt) +AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge) +AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext) + # Remove file type tags (using []) from po/POTFILES. ifdef([AC_DIVERSION_ICMDS],[ @@ -555,13 +561,47 @@ changequote([,]) ]) ]) + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # Keeping the `.' argument allows $(mkdir_p) to be used without + # argument. Indeed, we sometimes output rules like + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. + # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more + # expensive solution, as it forces Make to start a sub-shell.) + mkdir_p='mkdir -p -- .' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p]) ]) # Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT. -AC_OUTPUT_COMMANDS([ +AC_CONFIG_COMMANDS([intltool], [ -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out +intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \ + -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \ + -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \ + -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \ + -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \ + -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'" + +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \ + > intltool-extract.out if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then rm -f intltool-extract.out else @@ -570,8 +610,8 @@ chmod ugo+x intltool-extract chmod u+w intltool-extract -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \ - < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \ + > intltool-merge.out if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then rm -f intltool-merge.out else @@ -580,7 +620,8 @@ chmod ugo+x intltool-merge chmod u+w intltool-merge -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \ + > intltool-update.out if cmp -s intltool-update intltool-update.out 2>/dev/null; then rm -f intltool-update.out else @@ -589,10 +630,17 @@ chmod ugo+x intltool-update chmod u+w intltool-update -], INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir}) +], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir} +INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}' +MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}' +XGETTEXT='${INTLTOOL_XGETTEXT}') ]) +# deprecated macros +AC_DEFUN([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL($@)]) + + # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 47 AC_PROG_LIBTOOL Index: libcxp/config.h.in diff -u libcxp/config.h.in:1.5 libcxp/config.h.in:1.6 --- libcxp/config.h.in:1.5 Fri Sep 2 22:19:10 2005 +++ libcxp/config.h.in Sat Sep 3 01:22:59 2005 @@ -69,6 +69,9 @@ /* Define to the full name of this package. */ #undef PACKAGE_NAME +/* Define pixmas directory of package. */ +#undef PACKAGE_PIXMAPS_DIR + /* Define to the full name and version of this package. */ #undef PACKAGE_STRING Index: libcxp/configure diff -u libcxp/configure:1.21 libcxp/configure:1.22 --- libcxp/configure:1.21 Fri Sep 2 23:20:43 2005 +++ libcxp/configure Sat Sep 3 01:22:59 2005 @@ -465,7 +465,7 @@ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PKG_CONFIG ac_pt_PKG_CONFIG GTK_CFLAGS GTK_LIBS GCONF_CFLAGS GCONF_LIBS SMI_CFLAGS SMI_LIBS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL GETTEXT_PACKAGE USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PKG_CONFIG ac_pt_PKG_CONFIG GTK_CFLAGS GTK_LIBS GCONF_CFLAGS GCONF_LIBS SMI_CFLAGS SMI_LIBS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT GETTEXT_PACKAGE USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -20531,6 +20531,7 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@' INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' @@ -20554,6 +20555,7 @@ + # Use the tools built into the package, not the ones that are installed. INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract' @@ -20626,6 +20628,167 @@ fi fi +# Extract the first word of "iconv", so it can be a program name with args. +set dummy iconv; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_ICONV in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv" + ;; +esac +fi +INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV + +if test -n "$INTLTOOL_ICONV"; then + echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5 +echo "${ECHO_T}$INTLTOOL_ICONV" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt" + ;; +esac +fi +INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT + +if test -n "$INTLTOOL_MSGFMT"; then + echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5 +echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGMERGE in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge" + ;; +esac +fi +INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE + +if test -n "$INTLTOOL_MSGMERGE"; then + echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5 +echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_XGETTEXT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext" + ;; +esac +fi +INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT + +if test -n "$INTLTOOL_XGETTEXT"; then + echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5 +echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Remove file type tags (using []) from po/POTFILES. @@ -20633,10 +20796,36 @@ +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # Keeping the `.' argument allows $(mkdir_p) to be used without + # argument. Indeed, we sometimes output rules like + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. + # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more + # expensive solution, as it forces Make to start a sub-shell.) + mkdir_p='mkdir -p -- .' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + + # Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT. - ac_config_commands="$ac_config_commands default-1" + ac_config_commands="$ac_config_commands intltool" @@ -22137,7 +22326,7 @@ # We need to process the po/ directory. POSUB=po - ac_config_commands="$ac_config_commands default-2" + ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do @@ -22236,6 +22425,13 @@ _ACEOF +PACKAGE_PIXMAPS_DIR=`eval echo ${datadir}`/pixmaps/cxp + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_PIXMAPS_DIR "$PACKAGE_PIXMAPS_DIR" +_ACEOF + + # Checks for library functions. for ac_func in mkdir @@ -22339,7 +22535,7 @@ fi done - ac_config_files="$ac_config_files Makefile src/Makefile include/Makefile common/Makefile po/Makefile.in libcxp.pc" + ac_config_files="$ac_config_files Makefile src/Makefile include/Makefile common/Makefile pixmaps/Makefile pixmaps/application/Makefile pixmaps/audio/Makefile pixmaps/image/Makefile pixmaps/message/Makefile pixmaps/text/Makefile pixmaps/video/Makefile po/Makefile.in libcxp.pc" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -22907,7 +23103,10 @@ # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir} +INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir} +INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}' +MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}' +XGETTEXT='${INTLTOOL_XGETTEXT}' _ACEOF @@ -22923,11 +23122,18 @@ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "common/Makefile" ) CONFIG_FILES="$CONFIG_FILES common/Makefile" ;; + "pixmaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; + "pixmaps/application/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/application/Makefile" ;; + "pixmaps/audio/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/audio/Makefile" ;; + "pixmaps/image/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/image/Makefile" ;; + "pixmaps/message/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/message/Makefile" ;; + "pixmaps/text/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/text/Makefile" ;; + "pixmaps/video/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/video/Makefile" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "libcxp.pc" ) CONFIG_FILES="$CONFIG_FILES libcxp.pc" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} @@ -23105,6 +23311,7 @@ s, @ INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t s, @ INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t s, @ INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t +s, @ INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t s, @ INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t s, @ INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t s, @ INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t @@ -23112,6 +23319,10 @@ s, @ INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t s, @ INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t s, @ INTLTOOL_PERL@,$INTLTOOL_PERL,;t t +s, @ INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t +s, @ INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t +s, @ INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t +s, @ INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t s, @ GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t s, @ USE_NLS@,$USE_NLS,;t t s, @ MSGFMT@,$MSGFMT,;t t @@ -23818,9 +24029,17 @@ done done ;; - default-1 ) + intltool ) + +intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \ + -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \ + -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \ + -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \ + -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \ + -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'" -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \ + > intltool-extract.out if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then rm -f intltool-extract.out else @@ -23829,8 +24048,8 @@ chmod ugo+x intltool-extract chmod u+w intltool-extract -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \ - < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \ + > intltool-merge.out if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then rm -f intltool-merge.out else @@ -23839,7 +24058,8 @@ chmod ugo+x intltool-merge chmod u+w intltool-merge -sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out +eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \ + > intltool-update.out if cmp -s intltool-update intltool-update.out 2>/dev/null; then rm -f intltool-update.out else @@ -23849,7 +24069,7 @@ chmod u+w intltool-update ;; - default-2 ) case "$CONFIG_FILES" in *po/Makefile.in*) + default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; esac Index: libcxp/configure.ac diff -u libcxp/configure.ac:1.19 libcxp/configure.ac:1.20 --- libcxp/configure.ac:1.19 Fri Sep 2 23:20:43 2005 +++ libcxp/configure.ac Sat Sep 3 01:22:59 2005 @@ -53,6 +53,9 @@ PACKAGE_CONF_DIR=`eval echo ${sysconfdir}`/cxp AC_DEFINE_UNQUOTED(PACKAGE_CONF_DIR, "$PACKAGE_CONF_DIR", Define config directory of package.) +PACKAGE_PIXMAPS_DIR=`eval echo ${datadir}`/pixmaps/cxp +AC_DEFINE_UNQUOTED(PACKAGE_PIXMAPS_DIR, "$PACKAGE_PIXMAPS_DIR", Define pixmas directory of package.) + # Checks for library functions. AC_CHECK_FUNCS([mkdir]) AC_OUTPUT([ @@ -60,6 +63,13 @@ src/Makefile include/Makefile common/Makefile + pixmaps/Makefile + pixmaps/application/Makefile + pixmaps/audio/Makefile + pixmaps/image/Makefile + pixmaps/message/Makefile + pixmaps/text/Makefile + pixmaps/video/Makefile po/Makefile.in libcxp.pc ]) Index: libcxp/intltool-extract.in diff -u libcxp/intltool-extract.in:1.1 libcxp/intltool-extract.in:1.2 --- libcxp/intltool-extract.in:1.1 Thu Mar 31 00:07:50 2005 +++ libcxp/intltool-extract.in Sat Sep 3 01:22:59 2005 @@ -32,7 +32,7 @@ ## Release information my $PROGRAM = "intltool-extract"; my $PACKAGE = "intltool"; -my $VERSION = "0.31.2"; +my $VERSION = "0.33"; ## Loaded modules use strict; @@ -115,6 +115,7 @@ } sub place_local { + $FILE = $ARGV[0]; $OUTFILE = fileparse($FILE, ()); if (!-e "tmp/") { system("mkdir tmp/"); @@ -266,12 +267,12 @@ sub type_xml { ### For generic translatable XML files ### - while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]+)\"/sg) { # " + while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]*)\"/sg) { # " $messages{entity_decode_minimal($2)} = []; $comments{entity_decode_minimal($2)} = $1 if (defined($1)); } - while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.+?)<\/_\2>/sg) { + while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.*?)<\/_\2>/sg) { $_ = $4; if (!defined($3) || $3 ne "preserve") { s/\s+/ /g; @@ -394,7 +395,7 @@ # Glade sometimes uses tags that normally mark translatable things for # little bits of non-translatable content. We work around this by not # translating strings that only includes something like label4 or window1. - $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label)[0-9]+$/; + $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/; } while ($input =~ /<items>(..[^<]*)<\/items>/sg) { @@ -404,8 +405,11 @@ } ## handle new glade files - while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"[^>]*>([^<]+)<\/\1>/sg) { - $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label)[0-9]+$/; + while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) { + $messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/; + if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) { + $comments{entity_decode($3)} = entity_decode($2) ; + } } while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) { $messages{entity_decode_minimal($2)} = []; @@ -413,8 +417,47 @@ } sub type_scheme { - while ($input =~ /_\w*\(?"((?:[^"\\]+|\\.)*)"\)?/sg) { - $messages{$1} = []; + my ($line, $i, $state, $str, $trcomment, $char); + for $line (split(/\n/, $input)) { + $i = 0; + $state = 0; # 0 - nothing, 1 - string, 2 - translatable string + while ($i < length($line)) { + if (substr($line,$i,1) eq "\"") { + if ($state == 2) { + $comments{$str} = $trcomment if ($trcomment); + $messages{$str} = []; + $str = ''; + $state = 0; $trcomment = ""; + } elsif ($state == 1) { + $str = ''; + $state = 0; $trcomment = ""; + } else { + $state = 1; + $str = ''; + if ($i>0 && substr($line,$i-1,1) eq '_') { + $state = 2; + } + } + } elsif (!$state) { + if (substr($line,$i,1) eq ";") { + $trcomment = substr($line,$i+1); + $trcomment =~ s/^;*\s*//; + $i = length($line); + } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) { + $trcomment = ""; + } + } else { + if (substr($line,$i,1) eq "\\") { + $char = substr($line,$i+1,1); + if ($char ne "\"" && $char ne "\\") { + $str = $str . "\\"; + } + $i++; + } + $str = $str . substr($line,$i,1); + } + $i++; + } } } Index: libcxp/intltool-merge.in diff -u libcxp/intltool-merge.in:1.1 libcxp/intltool-merge.in:1.2 --- libcxp/intltool-merge.in:1.1 Thu Mar 31 00:07:50 2005 +++ libcxp/intltool-merge.in Sat Sep 3 01:22:59 2005 @@ -35,7 +35,7 @@ ## Release information my $PROGRAM = "intltool-merge"; my $PACKAGE = "intltool"; -my $VERSION = "0.31.2"; +my $VERSION = "0.33"; ## Loaded modules use strict; @@ -91,7 +91,7 @@ my %po_files_by_lang = (); my %translations = (); -my $iconv = $ENV{"INTLTOOL_ICONV"} || "iconv"; +my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/bin/iconv"; # Use this instead of \w for XML files to handle more possible characters. my $w = "[-A-Za-z0-9._:]"; @@ -111,6 +111,7 @@ } elsif ($BA_STYLE_ARG && @ARGV > 2) { + &utf8_sanity_check; &preparation; &print_message; &ba_merge_translations; @@ -118,41 +119,41 @@ } elsif ($XML_STYLE_ARG && @ARGV > 2) { - &utf8_sanity_check; + &utf8_sanity_check; &preparation; &print_message; - - &xml_merge_output; - + &xml_merge_output; &finalize; } elsif ($KEYS_STYLE_ARG && @ARGV > 2) { - &utf8_sanity_check; - &preparation; - &print_message; - &keys_merge_translations; + &utf8_sanity_check; + &preparation; + &print_message; + &keys_merge_translations; &finalize; } elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) { - &preparation; - &print_message; - &desktop_merge_translations; + &utf8_sanity_check; + &preparation; + &print_message; + &desktop_merge_translations; &finalize; } elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) { - &preparation; - &print_message; - &schemas_merge_translations; + &utf8_sanity_check; + &preparation; + &print_message; + &schemas_merge_translations; &finalize; } elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) { - &preparation; - &print_message; - &rfc822deb_merge_translations; + &preparation; + &print_message; + &rfc822deb_merge_translations; &finalize; } else @@ -194,9 +195,9 @@ -x, --xml-style includes translations in the standard xml style Other options: - -u, --utf8 convert all strings to UTF-8 before merging - -p, --pass-through use strings as found in .po files, without - conversion (STRONGLY unrecommended with -x) + -u, --utf8 convert all strings to UTF-8 before merging + (default for everything except RFC822 style) + -p, --pass-through deprecated, does nothing and issues a warning -m, --multiple-output output one localized file per locale, instead of a single file containing all localized elements -c, --cache=FILE specify cache file name @@ -308,13 +309,8 @@ sub utf8_sanity_check { - if (!$UTF8_ARG) - { - if (!$PASS_THROUGH_ARG) - { - $PASS_THROUGH_ARG="1"; - } - } + print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG; + $UTF8_ARG = 1; } sub get_translation_database @@ -462,9 +458,17 @@ return "\\" if $sequence eq "\\\\"; return "\"" if $sequence eq "\\\""; return "\n" if $sequence eq "\\n"; + return "\r" if $sequence eq "\\r"; + return "\t" if $sequence eq "\\t"; + return "\b" if $sequence eq "\\b"; + return "\f" if $sequence eq "\\f"; + return "\a" if $sequence eq "\\a"; + return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7) + + return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/); + return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/); - # gettext also handles \n, \t, \b, \r, \f, \v, \a, \xxx (octal), - # \xXX (hex) and has a comment saying they want to handle \u and \U. + # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489 return $sequence; } @@ -473,7 +477,7 @@ { my ($string) = @_; - $string =~ s/(\\.)/unescape_one_sequence($1)/eg; + $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg; return $string; } @@ -494,8 +498,7 @@ # entity_encode: (string) # -# Encode the given string to XML format (encode '<' etc). It also -# encodes high bit if not in UTF-8 mode. +# Encode the given string to XML format (encode '<' etc). sub entity_encode { @@ -503,15 +506,8 @@ my @list_of_chars = unpack ('C*', $pre_encoded); - if ($PASS_THROUGH_ARG) - { - return join ('', map (&entity_encode_int_even_high_bit, @list_of_chars)); - } - else - { - # with UTF-8 we only encode minimalistic - return join ('', map (&entity_encode_int_minimalist, @list_of_chars)); - } + # with UTF-8 we only encode minimalistic + return join ('', map (&entity_encode_int_minimalist, @list_of_chars)); } sub entity_encode_int_minimalist @@ -523,19 +519,6 @@ return chr $_; } -sub entity_encode_int_even_high_bit -{ - if ($_ > 127 || $_ == 34 || $_ == 38 || $_ == 39 || $_ == 60) - { - # the ($_ > 127) should probably be removed - return "&#" . $_ . ";"; - } - else - { - return chr $_; - } -} - sub entity_encoded_translation { my ($lang, $string) = @_; @@ -608,6 +591,7 @@ my $do_translate = shift || 0; my $language = shift || ""; my $result = ""; + my $translate = shift; foreach my $e (reverse(sort(keys %{ $sub }))) { my $key = $e; my $string = $sub->{$e}; @@ -634,8 +618,16 @@ if ($translation) { $translation = entity_encode($translation); $string = $translation; - } - } + $$translate = 2; + } else { + $$translate = 2; # we still want translations for deep nesting (FIXME: this will cause + # problems since we might get untranslated duplicated entries, but with xml:lang set) + # Fix would be to set it here to eg. 3, and do a check in traverse() to see if any of the containing tags + # really need translation, and only emit "translation" if there is (this means parsing same data twice) + } + } else { + $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" if $translate == 2 + } } $result .= " $key=$quote$string$quote"; @@ -657,6 +649,7 @@ my $count = scalar(@list); my $attrs = $list[0]; my $index = 1; + while ($index < $count) { my $type = $list[$index]; my $content = $list[$index+1]; @@ -664,7 +657,7 @@ # We've got CDATA if ($content) { # lets strip the whitespace here, and *ONLY* here - $content =~ s/\s+/ /gs; + $content =~ s/\s+/ /gs if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))); $result .= ($content); } else { #print "no cdata content when expected it\n"; # is this possible, is this ok? @@ -674,7 +667,7 @@ } else { # We've got another element $result .= "<$type"; - $result .= getAttributeString($attrs, 0); # no nested translatable elements + $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements if ($content) { my $subresult = getXMLstring($content); if ($subresult) { @@ -691,6 +684,33 @@ return $result; } +# Translate list of nodes if necessary +sub translate_subnodes +{ + my $fh = shift; + my $content = shift; + my $language = shift || ""; + my $singlelang = shift || 0; + + my @nodes = @{ $content }; + + my $count = scalar(@nodes); + my $index = 0; + while ($index < $count) { + my $type = $nodes[$index]; + my $rest = $nodes[$index+1]; + if ($singlelang) { + my $oldMO = $MULTIPLE_OUTPUT; + $MULTIPLE_OUTPUT = 1; + traverse($fh, $type, $rest, $language); + $MULTIPLE_OUTPUT = $oldMO; + } else { + traverse($fh, $type, $rest, $language); + } + $index += 2; + } +} + sub traverse { my $fh = shift; @@ -707,53 +727,75 @@ # element my @all = @{ $content }; my $attrs = shift @all; - my $outattr = getAttributeString($attrs, 1, $language); my $translate = 0; + my $outattr = getAttributeString($attrs, 1, $language, \$translate); if ($nodename =~ /^_/) { $translate = 1; $nodename =~ s/^_//; } my $lookup = ''; - print $fh "<$nodename$outattr"; + print $fh "<$nodename", $outattr; if ($translate) { $lookup = getXMLstring($content); - $lookup =~ s/^\s+//s; - $lookup =~ s/\s+$//s; + if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))) { + $lookup =~ s/^\s+//s; + $lookup =~ s/\s+$//s; + } - if ($lookup) { + if ($lookup || $translate == 2) { my $translation = $translations{$language, $lookup}; - if ($MULTIPLE_OUTPUT && $translation) { - print $fh " xml:lang=\"", $language, "\""; - print $fh ">", $translation, "</$nodename>"; + if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) { + $translation = $lookup if (!$translation); + print $fh " xml:lang=\"", $language, "\"" if $language; + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; + return; # this means there will be no same translation with xml:lang="$language"... # if we want them both, just remove this "return" } else { - print $fh ">$lookup</$nodename>"; + print $fh ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $language, 1); + } else { + print $fh $lookup; + } + print $fh "</$nodename>"; } } else { print $fh "/>"; } - - + for my $lang (sort keys %po_files_by_lang) { if ($MULTIPLE_OUTPUT && $lang ne "$language") { next; } if ($lang) { - # Handle translation # - my $localattrs = getAttributeString($attrs, 1, $lang); - my $decode_string = ($lookup); #entity_decode($lookup); - my $translation = $translations{$lang, $decode_string}; - if ($translation) { - $translation = ($translation); + my $translate = 0; + my $localattrs = getAttributeString($attrs, 1, $lang, \$translate); + my $translation = $translations{$lang, $lookup}; + if ($translate && !$translation) { + $translation = $lookup; + } + + if ($translation || $translate) { print $fh "\n"; $leading_space =~ s/.*\n//g; print $fh $leading_space; - print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs; - print $fh ">", $translation , "</$nodename>"; + print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">"; + if ($translate == 2) { + translate_subnodes($fh, \@all, $lang, 1); + } else { + print $fh $translation; + } + print $fh "</$nodename>"; } } } @@ -762,23 +804,39 @@ my $count = scalar(@all); if ($count > 0) { print $fh ">"; + my $index = 0; + while ($index < $count) { + my $type = $all[$index]; + my $rest = $all[$index+1]; + traverse($fh, $type, $rest, $language); + $index += 2; + } + print $fh "</$nodename>"; } else { print $fh "/>"; } - my $index = 0; - while ($index < $count) { - my $type = $all[$index]; - my $rest = $all[$index+1]; - traverse($fh, $type, $rest, $language); - $index += 2; - } - if ($count > 0) { - print $fh "</$nodename>"; - } } } } +sub intltool_tree_cdatastart +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + push @$clist, 0 => $expat->original_string(); +} + +sub intltool_tree_cdataend +{ + my $expat = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + $clist->[$pos] .= $expat->original_string(); +} + sub intltool_tree_char { my $expat = shift; @@ -857,6 +915,8 @@ my $xp = new XML::Parser(Style => 'Tree'); $xp->setHandlers(Char => \&intltool_tree_char); $xp->setHandlers(Start => \&intltool_tree_start); + $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart); + $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend); my $tree = $xp->parsefile($filename); # <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo> Index: libcxp/intltool-update.in diff -u libcxp/intltool-update.in:1.1 libcxp/intltool-update.in:1.2 --- libcxp/intltool-update.in:1.1 Thu Mar 31 00:07:50 2005 +++ libcxp/intltool-update.in Sat Sep 3 01:22:59 2005 @@ -30,7 +30,7 @@ ## Release information my $PROGRAM = "intltool-update"; -my $VERSION = "0.31.2"; +my $VERSION = "0.33"; my $PACKAGE = "intltool"; ## Loaded modules @@ -74,6 +74,7 @@ "kbd(?:\\.in)+"; # GOK specific. my $ini_support = +"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec "desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec "caves(?:\\.in)+|". # GNOME Games specific "directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec @@ -148,7 +149,8 @@ ## Report error if the language file supplied ## to the command line is non-existent - &Console_WriteError_NotExisting("$lang.po") if ! -s "$lang.po"; + &Console_WriteError_NotExisting("$SRCDIR/$lang.po") + if ! -s "$SRCDIR/$lang.po"; if (!$DIST_ARG) { @@ -211,6 +213,16 @@ exit; } +sub echo_n +{ + my $str = shift; + my $ret = `echo "$str"`; + + $ret =~ s/\n$//; # do we need the "s" flag? + + return $ret; +} + sub POFile_DetermineType ($) { my $type = $_; @@ -283,6 +295,13 @@ return $gettext_code; } +sub isNotValidMissing +{ + my ($file) = @_; + + return if $file =~ /^\{arch\}\/.*$/; + return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/; +} sub FindLeftoutFiles { @@ -397,15 +416,19 @@ if (/\.GetString ?\(QUOTEDTEXT/) { - ## Remove the first 3 chars and add newline - push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } last; } if (/_\(QUOTEDTEXT/) { - ## Remove the first 3 chars and add newline - push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + ## Remove the first 3 chars and add newline + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } last; } } @@ -421,7 +444,9 @@ # FIXME: share the pattern matching code with intltool-extract if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/) { - push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } last; } } @@ -435,7 +460,9 @@ { if (/_(.*)=/) { - push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } last; } } @@ -444,7 +471,9 @@ foreach my $file (@buf_i18n_xml_unmarked) { - push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + if (defined isNotValidMissing (unpack("x3 A*", $file))) { + push @buf_allfiles, unpack("x3 A*", $file) . "\n"; + } } @@ -525,7 +554,7 @@ sub GenerateHeaders { - my $EXTRACT = `which intltool-extract 2>/dev/null`; + my $EXTRACT = "@INTLTOOL_EXTRACT@"; chomp $EXTRACT; $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"}; @@ -579,13 +608,10 @@ # sub GeneratePOTemplate { - my $XGETTEXT = `which xgettext 2>/dev/null`; - my $XGETTEXT_ARGS = ''; + my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext"; + my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || ''; chomp $XGETTEXT; - $XGETTEXT = $ENV{"XGETTEXT"} if $ENV{"XGETTEXT"}; - $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} if $ENV{"XGETTEXT_ARGS"}; - if (! -x $XGETTEXT) { print STDERR " *** xgettext is not found on this system!\n". @@ -597,7 +623,7 @@ open INFILE, $POTFILES_in; unlink "POTFILES.in.temp"; - open OUTFILE, ">POTFILES.in.temp"; + open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing"); my $gettext_support_nonascii = 0; @@ -636,14 +662,14 @@ elsif (/\.($xml_support|$ini_support)$/ || /^\[/) { s/^\[.*]\s*//; - print OUTFILE "$_.h\n"; + print OUTFILE "../$_.h\n"; push @temp_headers, "../$_.h"; $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code); } else { if ($SRCDIR eq ".") { - print OUTFILE "$_\n"; + print OUTFILE "../$_\n"; } else { print OUTFILE "$SRCDIR/../$_\n"; } @@ -688,7 +714,7 @@ unlink "$MODULE.pot"; my @xgettext_argument=("$XGETTEXT", "--add-comments", - "--directory\=\.\.", + "--directory\=\.", "--output\=$MODULE\.pot", "--files-from\=\.\/POTFILES\.in\.temp"); my $XGETTEXT_KEYWORDS = &FindPOTKeywords; @@ -753,15 +779,16 @@ { -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n"; + my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge"; my ($lang, $outfile) = @_; - print "Merging $lang.po with $MODULE.pot..." if $VERBOSE; + print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE; - my $infile = "$lang.po"; - $outfile = "$lang.po" if ($outfile eq ""); + my $infile = "$SRCDIR/$lang.po"; + $outfile = "$SRCDIR/$lang.po" if ($outfile eq ""); # I think msgmerge won't overwrite old file if merge is not successful - system ("msgmerge", "-o", $outfile, $infile, "$MODULE.pot"); + system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot"); } sub Console_WriteError_NotExisting @@ -795,14 +822,17 @@ sub Console_Write_TranslationStatus { my ($lang, $output_file) = @_; + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; - $output_file = "$lang.po" if ($output_file eq ""); + $output_file = "$SRCDIR/$lang.po" if ($output_file eq ""); - system ("msgfmt", "-o", "/dev/null", "--statistics", $output_file); + system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file); } sub Console_Write_CoverageReport { + my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt"; + &GatherPOFiles; foreach my $lang (@languages) @@ -816,7 +846,7 @@ foreach my $lang (@languages) { print "$lang: "; - system ("msgfmt", "-o", "/dev/null", "--statistics", "$lang.po"); + system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$SRCDIR/$lang.po"); } } @@ -833,7 +863,7 @@ { if (/^(\w+)=(.*)$/) { - ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1)/; + ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/; } } @@ -845,7 +875,10 @@ return SubstituteVariable ("$untouched$sub$rest"); } - return $str; + + # We're using Perl backticks ` and "echo -n" here in order to + # expand any shell escapes (such as backticks themselves) in every variable + return echo_n ($str); } sub CONF_Handle_Open @@ -993,7 +1026,7 @@ sub FindPOTKeywords { - my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_"; + my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_"; my $varname = "XGETTEXT_OPTIONS"; my $make_source; { local (*IN);