Index: winsup/utils/locale.cc
===================================================================
RCS file: /cvs/src/src/winsup/utils/locale.cc,v
retrieving revision 1.11
diff -u -r1.11 locale.cc
--- winsup/utils/locale.cc	3 May 2011 10:34:25 -0000	1.11
+++ winsup/utils/locale.cc	8 Oct 2011 08:11:52 -0000
@@ -58,6 +58,7 @@
 	   "  -m, --charmaps       List all available character maps\n"
 	   "  -s, --system         Print system default locale\n"
 	   "  -u, --user           Print user's default locale\n"
+	   "  -i, --interface      Print default UI language instead of locale\n"
 	   "  -U, --utf            Attach \".UTF-8\" to the result\n"
 	   "  -v, --verbose        More verbose output\n"
 	   "  -h, --help           This text\n",
@@ -72,12 +73,13 @@
   {"charmaps", no_argument, NULL, 'm'},
   {"system", no_argument, NULL, 's'},
   {"user", no_argument, NULL, 'u'},
+  {"interface", no_argument, NULL, 'i'},
   {"utf", no_argument, NULL, 'U'},
   {"verbose", no_argument, NULL, 'v'},
   {"help", no_argument, NULL, 'h'},
   {0, no_argument, NULL, 0}
 };
-const char *opts = "achkmsuUv";
+const char *opts = "achkmsuiUv";
 
 int
 getlocale (LCID lcid, char *name)
@@ -747,6 +749,7 @@
 {
   int opt;
   LCID lcid = 0;
+  int ui_lang = 0;
   int all = 0;
   int cat = 0;
   int key = 0;
@@ -777,6 +780,9 @@
       case 'u':
       	lcid = LOCALE_USER_DEFAULT;
 	break;
+      case 'i':
+	ui_lang = 1;
+	break;
       case 'U':
       	utf = ".UTF-8";
 	break;
@@ -796,6 +802,13 @@
     print_charmaps ();
   else if (lcid)
     {
+      if (ui_lang)
+	{
+	  if (lcid == LOCALE_SYSTEM_DEFAULT)
+	    lcid = GetSystemDefaultUILanguage();
+	  else
+	    lcid = GetUserDefaultUILanguage();
+	}
       if (getlocale (lcid, name))
 	printf ("%s%s\n", name, utf);
     }
