Add -i/--input option to locale(1)

The default UI language returned by GetUserDefaultUILanguage does not
necessarily reflect what the user really wants.  E. g., the system could
be en_US, but the desired language is en_CA, without having a CA langpack
installed.

Changing the settings under "Languages" and changing the keyboard layout
is only affecting the so-called  "Input language", while what's returned
by GetUserDefaultUILanguage is the "Display language".  Changing the
latter requires installing MUI langpacks.

Thus, we introduce a way to fetch the "Input language" using the -i or
--input option.

Also clean up documentation of locale(1).

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen
2016-08-17 10:58:04 +02:00
parent b0d341442c
commit c02ac89f28
2 changed files with 34 additions and 14 deletions

View File

@@ -48,7 +48,7 @@ usage ()
printf (
"Usage: %1$s [-amvhV]\n"
" or: %1$s [-ck] NAME\n"
" or: %1$s [-usfnU]\n"
" or: %1$s [-iusfnU]\n"
"\n"
"Get locale-specific information.\n"
"\n"
@@ -65,6 +65,7 @@ usage ()
"\n"
"Default locale information:\n"
"\n"
" -i, --input Print current input locale\n"
" -u, --user Print locale of user's default UI language\n"
" -s, --system Print locale of system default UI language\n"
" -f, --format Print locale of user's regional format settings\n"
@@ -93,6 +94,7 @@ struct option longopts[] = {
{"category-name", no_argument, NULL, 'c'},
{"format", no_argument, NULL, 'f'},
{"help", no_argument, NULL, 'h'},
{"input", no_argument, NULL, 'i'},
{"keyword-name", no_argument, NULL, 'k'},
{"charmaps", no_argument, NULL, 'm'},
{"no-unicode", no_argument, NULL, 'n'},
@@ -103,7 +105,7 @@ struct option longopts[] = {
{"version", no_argument, NULL, 'V'},
{0, no_argument, NULL, 0}
};
const char *opts = "acfhkmnsuUvV";
const char *opts = "acfhikmnsuUvV";
int
getlocale (LCID lcid, char *name)
@@ -786,6 +788,9 @@ main (int argc, char **argv)
case 'm':
maps = 1;
break;
case 'i':
lcid = (UINT_PTR) GetKeyboardLayout (0) & 0xffff;
break;
case 's':
lcid = GetSystemDefaultUILanguage ();
break;