void-packages/srcpkgs/libgweather/patches/01_gettext_not_xml.patch

545 lines
17 KiB
Diff

Description: Switch to using gettext to find localized names for locations, instead of shipping very large locale-specific XML files with lots of duplicate information.
Author: ?
only in patch2:
unchanged:
Index: libgweather-2.30.2/configure.in
===================================================================
--- libgweather-2.30.2.orig/configure.in 2010-06-22 05:01:54.000000000 +0200
+++ libgweather-2.30.2/configure.in 2010-06-24 10:49:23.000000000 +0200
@@ -40,6 +40,10 @@
AM_MAINTAINER_MODE
GNOME_MAINTAINER_MODE_DEFINES
+dnl IT_PROG_INTLTOOL does this for us in the case of the po/ subdir, but we're on our own for po-locations
+AC_OUTPUT_COMMANDS([sed -e "/POTFILES =/r po/POTFILES" po-locations/Makefile.in > po-locations/Makefile])
+IT_PO_SUBDIR([po-locations])
+
IT_PROG_INTLTOOL([0.40.3])
PKG_PROG_PKG_CONFIG([0.19])
@@ -50,13 +54,6 @@
AM_PROG_LIBTOOL
AC_PATH_PROG(GCONFTOOL, gconftool-2)
-AC_ARG_ENABLE(all-translations-in-one-xml,
- [AC_HELP_STRING([--enable-all-translations-in-one-xml],
- [Put all translations in a big Locations.xml file (slow to parse)])],
- [enable_big_xml=yes],
- [enable_big_xml=no])
-AM_CONDITIONAL(USE_ONE_BIG_XML, test "x$enable_big_xml" = "xyes")
-
AC_ARG_ENABLE(locations-compression,
[AC_HELP_STRING([--enable-locations-compression],
[Compress Locations.xml files])],
@@ -253,7 +250,7 @@
Makefile
doc/Makefile
po/Makefile.in
-po-locations/Makefile
+po-locations/Makefile.in
libgweather/Makefile
libgweather/gweather.pc
libgweather/gweather-uninstalled.pc
@@ -262,12 +259,6 @@
icons/Makefile
])
-if test "x$enable_big_xml" = "xyes"; then
- LOCATIONS_XML_TRANSLATIONS="one big file"
-else
- LOCATIONS_XML_TRANSLATIONS="one file per translation"
-fi
-
dnl ***************************************************************************
dnl *** Display Summary ***
dnl ***************************************************************************
@@ -278,6 +269,4 @@
Source code location: ${srcdir}
Compiler: ${CC}
Python bindings: ${enable_python}
- Locations.xml translations: ${LOCATIONS_XML_TRANSLATIONS}
- Locations.xml compression: ${enable_locations_compression}
" >&2
Index: libgweather-2.30.2/data/Makefile.am
===================================================================
--- libgweather-2.30.2.orig/data/Makefile.am 2010-02-09 13:28:03.000000000 +0100
+++ libgweather-2.30.2/data/Makefile.am 2010-06-24 10:49:23.000000000 +0200
@@ -4,55 +4,23 @@
libgweatherlocationsdir = $(pkgdatadir)
libgweatherlocations_in_files = Locations.xml.in
-if USE_ONE_BIG_XML
-
-LOCATIONS_STAMP =
-
-libgweatherlocations_DATA = $(libgweatherlocations_in_files:.xml.in=.xml$(COMPRESS_EXT))
-
-%.xml$(COMPRESS_EXT): %.xml.in $(wildcard $(top_srcdir)/po-locations/*.po)
- $(AM_V_GEN)LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po-locations/.intltool-merge-cache $(top_srcdir)/po-locations $< `echo $@ | sed "s/.xml$(COMPRESS_EXT)/.xml/"` && \
- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
- gzip --force `echo $@ | sed "s/.xml$(COMPRESS_EXT)/.xml/"`; \
- fi
-
-else # USE_ONE_BIG_XML
-
LOCATIONS_STAMP = stamp-Locations.xml
-PO_LOCATIONS = $(shell if test -n "$(LINGUAS)"; then for lang in $(LINGUAS); do if test -f "$(top_srcdir)/po-locations/$$lang.po"; then echo "$(top_srcdir)/po-locations/$$lang.po "; fi; done; else for pofile in $(top_srcdir)/po-locations/*.po; do echo $$pofile; done; fi)
-
# Helper variable
-libgweatherlocations_data = $(libgweatherlocations_in_files:.xml.in=.xml)
-
-libgweatherlocations_DATA = $(shell echo $(PO_LOCATIONS) | sed "s|$(top_srcdir)/po-locations/|Locations.|g;s|\.po|.xml$(COMPRESS_EXT)|g") $(libgweatherlocations_data)$(COMPRESS_EXT)
+libgweatherlocations_DATA = $(libgweatherlocations_in_files:.xml.in=.xml)
# We need this step so that we merge all the make Locations.xy.xml destinations
# into one unique destination. This makes -j2 work. (Else, we end up with
# multiple and conflicting calls to intltool-merge)
$(libgweatherlocations_DATA): $(LOCATIONS_STAMP)
-$(LOCATIONS_STAMP): $(libgweatherlocations_in_files) $(PO_LOCATIONS) Makefile
- $(AM_V_at)LC_ALL=C $(INTLTOOL_MERGE) --multiple-output --xml-style --utf8 --cache=$(top_builddir)/po-locations/.intltool-merge-cache $(top_srcdir)/po-locations $< $(libgweatherlocations_data) && \
- for pofile in $(PO_LOCATIONS); do \
- locale=`echo $$pofile | sed "s;$(top_srcdir)/po-locations/\(.*\)\.po;\1;"`; \
- xmllint --noblanks -o Locations.$$locale.xml $$locale/$(libgweatherlocations_data); \
- rm -f $$locale/$(libgweatherlocations_data); \
- test -d $$locale && rmdir $$locale; \
- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
- gzip --force Locations.$$locale.xml; \
- fi; \
- done && \
- xmllint --noblanks -o Locations.xml C/$(libgweatherlocations_data) && \
- rm -f C/$(libgweatherlocations_data) && \
+$(LOCATIONS_STAMP): $(libgweatherlocations_in_files) Makefile
+ LC_ALL=C $(INTLTOOL_MERGE) --multiple-output --xml-style --utf8 --cache=$(top_builddir)/po-locations/.intltool-merge-cache /dev/null $< $(libgweatherlocations_DATA) && \
+ xmllint --noblanks -o Locations.xml C/$(libgweatherlocations_DATA) && \
+ rm -f C/$(libgweatherlocations_DATA) && \
test -d C && rmdir C && \
- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
- gzip --force Locations.xml; \
- fi && \
touch $@
-endif # USE_ONE_BIG_XML
-
check:
xmllint --valid --noout $(top_srcdir)/data/Locations.xml.in
$(srcdir)/check-timezones.sh $(srcdir)/Locations.xml.in
Index: libgweather-2.30.2/libgweather/gweather-location.c
===================================================================
--- libgweather-2.30.2.orig/libgweather/gweather-location.c 2010-02-09 13:28:03.000000000 +0100
+++ libgweather-2.30.2/libgweather/gweather-location.c 2010-06-24 10:49:23.000000000 +0200
@@ -22,11 +22,14 @@
#include <config.h>
#endif
+#include "config.h"
+
#include <string.h>
#include <math.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <libxml/xmlreader.h>
+#include <libintl.h>
#define GWEATHER_I_KNOW_THIS_IS_UNSTABLE
#include "gweather-location.h"
@@ -184,10 +187,20 @@
tagname = (const char *) xmlTextReaderConstName (parser->xml);
if (!strcmp (tagname, "name") && !loc->name) {
- value = gweather_parser_get_localized_value (parser);
+ char *context = NULL;
+ context = xmlTextReaderGetAttribute(parser->xml,"msgctxt");
+
+ value = gweather_parser_get_value (parser);
if (!value)
goto error_out;
- loc->name = g_strdup (value);
+
+ if (context != NULL) {
+ loc->name = g_strdup (g_dpgettext2(GETTEXT_PACKAGE "-locations", context, value));
+ xmlFree (context);
+ }
+ else
+ loc->name = g_strdup (dgettext(GETTEXT_PACKAGE "-locations",value));
+
xmlFree (value);
normalized = g_utf8_normalize (loc->name, -1, G_NORMALIZE_ALL);
loc->sort_name = g_utf8_casefold (normalized, -1);
Index: libgweather-2.30.2/libgweather/gweather-timezone.c
===================================================================
--- libgweather-2.30.2.orig/libgweather/gweather-timezone.c 2010-02-09 13:28:03.000000000 +0100
+++ libgweather-2.30.2/libgweather/gweather-timezone.c 2010-06-24 10:49:23.000000000 +0200
@@ -23,6 +23,7 @@
#endif
#include <string.h>
+#include <libintl.h>
#define GWEATHER_I_KNOW_THIS_IS_UNSTABLE
#include "gweather-timezone.h"
@@ -152,7 +153,7 @@
parse_timezone (GWeatherParser *parser)
{
GWeatherTimezone *zone = NULL;
- char *id = NULL, *name = NULL;
+ char *id = NULL, *name = NULL, *context = NULL;
int offset = 0, dst_offset = 0;
gboolean has_dst = FALSE;
@@ -175,27 +176,34 @@
continue;
}
- if (!strcmp ((const char *) xmlTextReaderConstName (parser->xml), "name"))
- name = gweather_parser_get_localized_value (parser);
+ if (!strcmp ((const char *) xmlTextReaderConstName (parser->xml), "name")) {
+ context = xmlTextReaderGetAttribute(parser->xml,"msgctxt");
+ name = gweather_parser_get_value (parser);
+ }
else {
if (xmlTextReaderNext (parser->xml) != 1)
break;
}
}
}
-
+
if (parse_tzdata (id, parser->year_start, parser->year_end,
&offset, &has_dst, &dst_offset)) {
zone = g_slice_new0 (GWeatherTimezone);
zone->ref_count = 1;
zone->id = g_strdup (id);
- zone->name = g_strdup (name);
+ if (context != NULL)
+ zone->name = g_strdup (g_dpgettext2(GETTEXT_PACKAGE "-locations", context, name));
+ else
+ zone->name = g_strdup (dgettext(GETTEXT_PACKAGE "-locations",name));
zone->offset = offset;
zone->has_dst = has_dst;
zone->dst_offset = dst_offset;
}
xmlFree (id);
+ if (context)
+ xmlFree (context);
if (name)
xmlFree (name);
Index: libgweather-2.30.2/po-locations/LINGUAS
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ libgweather-2.30.2/po-locations/LINGUAS 2010-06-24 10:49:23.000000000 +0200
@@ -0,0 +1,78 @@
+ang
+ar
+as
+az
+be
+be@latin
+bg
+bn_IN
+bn
+bs
+ca
+cs
+cy
+da
+de
+dz
+el
+en_CA
+en_GB
+es
+et
+eu
+fa
+fi
+fr
+ga
+gl
+gu
+he
+hi
+hr
+hu
+id
+it
+ja
+ka
+kn
+ko
+ku
+ky
+lt
+lv
+mai
+mg
+mk
+ml
+mn
+mr
+ms
+nb
+ne
+nl
+nn
+oc
+or
+pa
+pl
+pt_BR
+pt
+ro
+ru
+rw
+si
+sk
+sl
+sq
+sr@latin
+sr
+sv
+ta
+te
+th
+tr
+uk
+vi
+zh_CN
+zh_HK
+zh_TW
Index: libgweather-2.30.2/po-locations/Makefile.in.in
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ libgweather-2.30.2/po-locations/Makefile.in.in 2010-06-24 10:49:23.000000000 +0200
@@ -0,0 +1,217 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
+#
+# This file may be copied and used freely without restrictions. It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@-locations
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po-locations
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep ^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`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: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-data
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $$dir; \
+ if test -r $$lang.gmo; then \
+ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $(srcdir)/$$lang.gmo as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo"; \
+ fi; \
+ if test -r $$lang.gmo.m; then \
+ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ if test -r $(srcdir)/$$lang.gmo.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+ $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $(srcdir)/$$lang.gmo.m as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info tags TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ done
+
+check: all $(GETTEXT_PACKAGE).pot
+ rm -f missing notexist
+ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+ if [ -r missing -o -r notexist ]; then \
+ exit 1; \
+ fi
+
+mostlyclean:
+ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES stamp-it
+ rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+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 Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ extra_dists="$(EXTRA_DISTFILES)"; \
+ for file in $$extra_dists; do \
+ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+ done; \
+ for file in $$dists; do \
+ test -f $$file || file="$(srcdir)/$$file"; \
+ ln $$file $(distdir) 2> /dev/null \
+ || cp -p $$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.gmo failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+Makefile POTFILES: stamp-it
+ @if test ! -f $@; then \
+ rm -f stamp-it; \
+ $(MAKE) stamp-it; \
+ fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+ $(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:
Index: libgweather-2.30.2/po-locations/POTFILES.in
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ libgweather-2.30.2/po-locations/POTFILES.in 2010-06-24 10:49:23.000000000 +0200
@@ -0,0 +1,4 @@
+# This list should contain *only* data/Locations.xml.in.
+# Everything else should be in POTFILES.skip.
+[encoding:UTF-8]
+data/Locations.xml.in