diff --git a/configure.ac b/configure.ac
index 2a25817..e41404a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,6 +67,10 @@ PKG_CHECK_MODULES(GEOCODE,
 GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
 AC_SUBST(GLIB_GENMARSHAL)
 
+AC_CHECK_HEADERS([langinfo.h],
+	[AC_CHECK_FUNCS([nl_langinfo], [], [])],
+	[],[])
+
 GOBJECT_INTROSPECTION_CHECK([0.6.3])
 
 GNOME_DEBUG_CHECK
diff --git a/geocode-glib/geocode-reverse.c b/geocode-glib/geocode-reverse.c
index ea372bf..91b0475 100644
--- a/geocode-glib/geocode-reverse.c
+++ b/geocode-glib/geocode-reverse.c
@@ -27,6 +27,10 @@
 #include <json-glib/json-glib.h>
 #include <libsoup/soup.h>
 #include <config.h>
+#ifdef HAVE_LANGINFO_H
+#include <langinfo.h>
+#include <glib/gprintf.h>
+#endif
 #include <glib/gi18n-lib.h>
 #include <geocode-glib/geocode-glib.h>
 #include <geocode-glib/geocode-error.h>
@@ -114,6 +118,31 @@ geocode_reverse_new_for_location (GeocodeLocation *location)
 	return object;
 }
 
+static gboolean
+_geocode_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 true if %h comes after %s in the format string */
+    return h > s; 
+  } else {
+    /* unable to determine format, assume number comes before streetname */
+    return FALSE;
+  }
+#else
+  /* if nl_langinfo is unavailable, assume number comes before streetname */
+  return FALSE;
+#endif
+}
+
 void
 _geocode_read_nominatim_attributes (JsonReader *reader,
                                     GHashTable *ht)
@@ -153,8 +182,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 = _geocode_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) {
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b710a5c..e69de29 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1 +0,0 @@
-geocode-glib/geocode-reverse.c
