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
