Name

locale — Get locale-specific information

Synopsis

locale [-amvhV]
locale [-ck] NAME
locale [-iusfnU]
      

Options

System information:

  -a, --all-locales    List all available supported locales
  -m, --charmaps       List all available character maps
  -v, --verbose        More verbose output

Modify output format:

  -c, --category-name  List information about given category NAME
  -k, --keyword-name   Print information about given keyword NAME

Default locale information:

  -i, --input          Print current input locale
  -u, --user           Print locale of user's default UI language
  -s, --system         Print locale of system default UI language
  -f, --format         Print locale of user's regional format settings
                       (time, numeric & monetary)
  -n, --no-unicode     Print system default locale for non-Unicode programs
  -U, --utf            Attach \".UTF-8\" to the result

Other options:

  -h, --help           This text
  -V, --version        Print program version and exit

Description

locale without parameters prints information about the current locale environment settings.

The -i, -u, -s, -f, and -n options can be used to request the various Windows locale settings. The purpose is to use this command in scripts to set the POSIX locale variables.

The -i option prints the current input language. This is called the "Input language" and basically equivalent to the current keyboard layout setting.

The -u option prints the current user's Windows UI locale to stdout. In Windows this setting is called the "Display Language".

The -s option prints the systems default instead.

The -f option prints the user's setting for time, date, number and currency. That's equivalent to the setting in the "Formats" or "Regional Options" tab in the "Region and Language" or "Regional and Language Options" dialog.

The -n option prints the system's default language used for applications which don't support Unicode.

With the -U option locale appends the string ".UTF-8" to enforce using UTF-8. Using UTF-8 as codeset is recommended.

Usage example:

bash$ export LANG=$(locale -uU)
bash$ echo $LANG
en_US.UTF-8
bash$ export LC_TIME=$(locale -fU)
bash$ echo $LC_TIME
de_DE.UTF-8

The -a option is helpful to learn which locales are supported by your Windows machine. It prints all available locales and the allowed modifiers. Example:

bash$ locale -a
C
C.utf8
POSIX
af_ZA
af_ZA.utf8
am_ET
am_ET.utf8
...
be_BY
be_BY.utf8
be_BY@latin
...
ca_ES
ca_ES.utf8
ca_ES@euro
catalan
...

The -v option prints more detailed information about each available locale. Example:

bash$ locale -av
locale: af_ZA           archive: /cygdrive/c/Windows/system32/kernel32.dll
-------------------------------------------------------------------------------
 language | Afrikaans
territory | South Africa
  codeset | ISO-8859-1

locale: af_ZA.utf8      archive: /cygdrive/c/Windows/system32/kernel32.dll
-------------------------------------------------------------------------------
 language | Afrikaans
territory | South Africa
  codeset | UTF-8

...

locale: ca_ES@euro      archive: /cygdrive/c/Windows/system32/kernel32.dll
-------------------------------------------------------------------------------
 language | Catalan
territory | Spain
  codeset | ISO-8859-15

locale: catalan         archive: /usr/share/locale/locale.alias
-------------------------------------------------------------------------------
 language | Catalan
territory | Spain
  codeset | ISO-8859-1

...

The -m option prints the names of the available charmaps supported by Cygwin to stdout.

Otherwise, if arguments are given, locale prints the values assigned to these arguments. Arguments can be names of locale categories (for instance: LC_CTYPE, LC_MONETARY), or names of keywords supported in the locale categories (for instance: thousands_sep, charmap). The -c option prints additionally the name of the category. The -k option prints additionally the name of the keyword. Example:

bash$ locale -ck LC_MESSAGES
LC_MESSAGES
yesexpr="^[yY]"
noexpr="^[nN]"
yesstr="yes"
nostr="no"
messages-codeset="UTF-8"
bash$ locale noexpr
^[nN]