Expose nl_langinfo through locale where available.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 53ae678..04cd873 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -17,6 +17,10 @@
 #include <string.h>
 #include <ctype.h>
 
+#ifdef HAVE_LANGINFO_H
+#include <langinfo.h>
+#endif
+
 #if defined(MS_WIN32)
 #define WINDOWS_LEAN_AND_MEAN
 #include <windows.h>
@@ -391,6 +395,23 @@
 }
 #endif
 
+#ifdef HAVE_LANGINFO_H
+static char nl_langinfo__doc__[] =
+"nl_langinfo(key) -> string\n"
+"Return the value for the locale information associated with key."
+;
+
+static PyObject*
+PyLocale_nl_langinfo(PyObject* self, PyObject* args)
+{
+    int item;
+    if (!PyArg_ParseTuple(args, "i:nl_langinfo", &item))
+        return NULL;
+    return PyString_FromString(nl_langinfo(item));
+}
+#endif
+    
+
 static struct PyMethodDef PyLocale_Methods[] = {
   {"setlocale", (PyCFunction) PyLocale_setlocale, 
    METH_VARARGS, setlocale__doc__},
@@ -403,6 +424,11 @@
 #if defined(MS_WIN32) || defined(macintosh)
   {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, 0},
 #endif
+#ifdef HAVE_LANGINFO_H
+  {"nl_langinfo", (PyCFunction) PyLocale_nl_langinfo,
+   METH_VARARGS, nl_langinfo__doc__},
+#endif
+  
   {NULL, NULL}
 };
 
@@ -455,4 +481,81 @@
     x = PyString_FromString(locale__doc__);
     PyDict_SetItemString(d, "__doc__", x);
     Py_XDECREF(x);
+
+#define ADDINT(X) PyModule_AddIntConstant(m, #X, X)
+#ifdef HAVE_LANGINFO_H
+    /* These constants should exist on any langinfo implementation */
+    ADDINT(DAY_1);
+    ADDINT(DAY_2);
+    ADDINT(DAY_3);
+    ADDINT(DAY_4);
+    ADDINT(DAY_5);
+    ADDINT(DAY_6);
+    ADDINT(DAY_7);
+
+    ADDINT(ABDAY_1);
+    ADDINT(ABDAY_2);
+    ADDINT(ABDAY_3);
+    ADDINT(ABDAY_4);
+    ADDINT(ABDAY_5);
+    ADDINT(ABDAY_6);
+    ADDINT(ABDAY_7);
+
+    ADDINT(MON_1);
+    ADDINT(MON_2);
+    ADDINT(MON_3);
+    ADDINT(MON_4);
+    ADDINT(MON_5);
+    ADDINT(MON_6);
+    ADDINT(MON_7);
+    ADDINT(MON_8);
+    ADDINT(MON_9);
+    ADDINT(MON_10);
+    ADDINT(MON_11);
+    ADDINT(MON_12);
+
+    ADDINT(ABMON_1);
+    ADDINT(ABMON_2);
+    ADDINT(ABMON_3);
+    ADDINT(ABMON_4);
+    ADDINT(ABMON_5);
+    ADDINT(ABMON_6);
+    ADDINT(ABMON_7);
+    ADDINT(ABMON_8);
+    ADDINT(ABMON_9);
+    ADDINT(ABMON_10);
+    ADDINT(ABMON_11);
+    ADDINT(ABMON_12);
+
+    ADDINT(RADIXCHAR);
+    ADDINT(THOUSEP);
+    /* YESSTR and NOSTR are deprecated in glibc, since they are
+       a special case of message translation, which should be rather
+       done using gettext. So we don't expose it to Python in the
+       first place.
+    ADDINT(YESSTR);
+    ADDINT(NOSTR);
+    */
+    ADDINT(CRNCYSTR);
+
+    ADDINT(D_T_FMT);
+    ADDINT(D_FMT);
+    ADDINT(T_FMT);
+    ADDINT(AM_STR);
+    ADDINT(PM_STR);
+
+#ifdef CODESET
+    /* The following constants are available only with XPG4. */
+    ADDINT(CODESET);
+    ADDINT(T_FMT_AMPM);
+    ADDINT(ERA);
+    ADDINT(ERA_D_FMT);
+    ADDINT(ERA_D_T_FMT);
+    ADDINT(ERA_T_FMT);
+    ADDINT(ALT_DIGITS);
+    ADDINT(YESEXPR);
+    ADDINT(NOEXPR);
+    ADDINT(_DATE_FMT);
+#endif
+#endif /* HAVE_LANGINFO_H */
 }