[geocode-glib] reverse: Derive address format from locale
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geocode-glib] reverse: Derive address format from locale
- Date: Mon, 10 Mar 2014 22:34:48 +0000 (UTC)
commit 029c421d32647e4ab6fbbfa669947c24a27e69fe
Author: Marcus Lundblad <ml update uu se>
Date: Sun Mar 9 19:20:54 2014 +0100
reverse: Derive address format from locale
Determine address format using nl_langinfo.
https://bugzilla.gnome.org/show_bug.cgi?id=725591
geocode-glib/geocode-reverse.c | 30 ++++++++++++++++++++++++++++--
1 files changed, 28 insertions(+), 2 deletions(-)
---
diff --git a/geocode-glib/geocode-reverse.c b/geocode-glib/geocode-reverse.c
index ea372bf..7f1af53 100644
--- a/geocode-glib/geocode-reverse.c
+++ b/geocode-glib/geocode-reverse.c
@@ -27,6 +27,8 @@
#include <json-glib/json-glib.h>
#include <libsoup/soup.h>
#include <config.h>
+#include <langinfo.h>
+#include <glib/gprintf.h>
#include <glib/gi18n-lib.h>
#include <geocode-glib/geocode-glib.h>
#include <geocode-glib/geocode-error.h>
@@ -114,6 +116,28 @@ geocode_reverse_new_for_location (GeocodeLocation *location)
return object;
}
+static gboolean
+is_number_after_street (void)
+{
+#ifdef HAVE_NL_LANGINFO
+ gchar *addr_format;
+ gchar *s;
+ gchar *h;
+
+ addr_format = nl_langinfo (_NL_ADDRESS_POSTAL_FMT);
+ s = g_strstr_len (addr_format, -1, "%s");
+ h = g_strstr_len (addr_format, -1, "%h");
+
+ if (s != NULL && h != NULL) {
+ return h > s;
+ } else {
+ return FALSE;
+ }
+#else
+ return FALSE;
+#endif
+}
+
void
_geocode_read_nominatim_attributes (JsonReader *reader,
GHashTable *ht)
@@ -153,8 +177,10 @@ _geocode_read_nominatim_attributes (JsonReader *reader,
else
house_number = value;
} else if (house_number != NULL && g_strcmp0 (members[i], "road") == 0) {
- /* Translators comment: number + street (e.g 221 Baker Street) */
- char *name = g_strdup_printf (_("%s %s"), house_number, value);
+ gboolean number_after = is_number_after_street ();
+ char *name = g_strdup_printf ("%s %s",
+ number_after? value : house_number,
+ number_after? house_number : value);
g_hash_table_insert (ht, g_strdup ("name"), name);
}
} else if (g_strcmp0 (members[i], "boundingbox") == 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]