.\" Copyright (C) 2014 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH LOCALE 1 2019-03-06 "Linux" "Linux User Manual"
.SH NAME
locale \- get locale-specific information
.SH SYNOPSIS
.nf
.BR locale " [\fIoption\fP]"
.BR locale " [\fIoption\fP] " \-a
.BR locale " [\fIoption\fP] " \-m
.BR locale " [\fIoption\fP] \fIname\fP..."
.fi
.SH DESCRIPTION
The
.B locale
command displays information about the current locale, or all locales,
on standard output.
.PP
When invoked without arguments,
.B locale
displays the current locale settings for each locale category (see
.BR locale (5)),
based on the settings of the environment variables that control the locale
(see
.BR locale (7)).
Values for variables set in the environment are printed without double
quotes, implied values are printed with double quotes.
.PP
If either the
.B \-a
or the
.B \-m
option (or one of their long-format equivalents) is specified,
the behavior is as follows:
.TP
.BR \-a ", " \-\-all\-locales
Display a list of all available locales.
The
.B -v
option causes the
.B LC_IDENTIFICATION
metadata about each locale to be included in the output.
.TP
.BR \-m ", " \-\-charmaps
Display the available charmaps (character set description files).
To display the current character set for the locale, use
\fBlocale -c charmap\fR.
.PP
The
.B locale
command can also be provided with one or more arguments,
which are the names of locale keywords (for example,
.IR date_fmt ,
.IR ctype-class-names ,
.IR yesexpr ,
or
.IR decimal_point )
or locale categories (for example,
.B LC_CTYPE
or
.BR LC_TIME ).
For each argument, the following is displayed:
.IP * 3
For a locale keyword, the value of that keyword to be displayed.
.IP *
For a locale category,
the values of all keywords in that category are displayed.
.PP
When arguments are supplied, the following options are meaningful:
.TP
.BR \-c ", " \-\-category\-name
For a category name argument,
write the name of the locale category
on a separate line preceding the list of keyword values for that category.
.IP
For a keyword name argument,
write the name of the locale category for this keyword
on a separate line preceding the keyword value.
.IP
This option improves readability when multiple name arguments are specified.
It can be combined with the
.B \-k
option.
.TP
.BR \-k ", " \-\-keyword\-name
For each keyword whose value is being displayed,
include also the name of that keyword,
so that the output has the format:
.IP
    \fIkeyword\fP="\fIvalue\fP"
.PP
The
.B locale
command also knows about the following options:
.TP
.BR \-v ", " \-\-verbose
Display additional information for some command-line option and argument
combinations.
.TP
.BR \-? ", " \-\-help
Display a summary of command-line options and arguments and exit.
.TP
.B \-\-usage
Display a short usage message and exit.
.TP
.BR \-V ", " \-\-version
Display the program version and exit.
.SH FILES
.TP
.I /usr/lib/locale/locale-archive
Usual default locale archive location.
.TP
.I /usr/share/i18n/locales
Usual default path for locale definition files.
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008.
.SH EXAMPLE
.EX
$ \fBlocale\fP
LANG=en_US.UTF\-8
LC_CTYPE="en_US.UTF\-8"
LC_NUMERIC="en_US.UTF\-8"
LC_TIME="en_US.UTF\-8"
LC_COLLATE="en_US.UTF\-8"
LC_MONETARY="en_US.UTF\-8"
LC_MESSAGES="en_US.UTF\-8"
LC_PAPER="en_US.UTF\-8"
LC_NAME="en_US.UTF\-8"
LC_ADDRESS="en_US.UTF\-8"
LC_TELEPHONE="en_US.UTF\-8"
LC_MEASUREMENT="en_US.UTF\-8"
LC_IDENTIFICATION="en_US.UTF\-8"
LC_ALL=

$ \fBlocale date_fmt\fP
%a %b %e %H:%M:%S %Z %Y

$ \fBlocale \-k date_fmt\fP
date_fmt="%a %b %e %H:%M:%S %Z %Y"

$ \fBlocale \-ck date_fmt\fP
LC_TIME
date_fmt="%a %b %e %H:%M:%S %Z %Y"

$ \fBlocale LC_TELEPHONE\fP
+%c (%a) %l
(%a) %l
11
1
UTF\-8

$ \fBlocale \-k LC_TELEPHONE\fP
tel_int_fmt="+%c (%a) %l"
tel_dom_fmt="(%a) %l"
int_select="11"
int_prefix="1"
telephone\-codeset="UTF\-8"
.EE
.PP
The following example compiles a custom locale from the
.I ./wrk
directory with the
.BR localedef (1)
utility under the
.I $HOME/.locale
directory, then tests the result with the
.BR date (1)
command, and then sets the environment variables
.B LOCPATH
and
.B LANG
in the shell profile file so that the custom locale will be used in the
subsequent user sessions:
.PP
.EX
$ \fBmkdir -p $HOME/.locale\fP
$ \fBI18NPATH=./wrk/ localedef -f UTF-8 -i fi_SE $HOME/.locale/fi_SE.UTF-8\fP
$ \fBLOCPATH=$HOME/.locale LC_ALL=fi_SE.UTF-8 date\fP
$ \fBecho "export LOCPATH=\e$HOME/.locale" >> $HOME/.bashrc\fP
$ \fBecho "export LANG=fi_SE.UTF-8" >> $HOME/.bashrc\fP
.EE
.SH SEE ALSO
.BR localedef (1),
.BR charmap (5),
.BR locale (5),
.BR locale (7)
