Index: libxslt/xsltlocale.c
===================================================================
--- libxslt/xsltlocale.c	(revision 1494)
+++ libxslt/xsltlocale.c	(working copy)
@@ -126,9 +126,14 @@
     region = (char *)xsltDefaultRegion((xmlChar *)localeName);
     if (region == NULL)
         return(NULL);
-     
-    *q++ = region[0];
-    *q++ = region[1];
+
+    if (*region == '*') {
+        /* for non-region aware languages like esperanto */
+        q--;
+    } else {
+        *q++ = region[0];
+        *q++ = region[1];
+    }
     memcpy(q, ".utf8", 6);
     locale = newlocale(LC_COLLATE_MASK, localeName, NULL);
     
@@ -217,6 +222,8 @@
         case 'e':
             if (c == 'l') region = "GR";
             else if (c == 'n') region = "US";
+            /*experimental esperanto support - vendor specific GNU libc*/
+            else if (c == 'o') region = "*";
             else if (c == 's' || c == 'u') region = "ES";
             else if (c == 't') region = "EE";
             break;
