Локали (locale) — набор переменных, которые отвечают за времени и даты (например — первый день недели), кодировка символов (например — отображение кирилических символов в консоли), дефолтный порядок отображения файлов (отображать ли скрытые. сортировать по имени или размеру и т.д.).
Например, при запуске vifm в KDE Konsole на Arch Linux — не отображается кирилица:

А в консоли после выхода их vifm появляется сообщение:
[simterm]
$ vifm /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)
[/simterm]
Содержание
Генерирование locale
Проверяем содержимое каталога /usr/lib/locale/, в которой должны хранится сгенерированные локали:
[simterm]
$ ll /usr/lib/locale/ total 0
[/simterm]
Или используем locale -a, что бы отобразить доступные сейчас в системе локали:
[simterm]
$ locale -a C POSIX
[/simterm]
Проверяем файл locales.gen — ищем en_US.UTF-8:
[simterm]
$ cat /etc/locale.gen | grep en_US.UTF-8 # en_US.UTF-8 UTF-8 #en_US.UTF-8 UTF-8
[/simterm]
Раскоментируем en_US.UTF-8 UTF-8, и генерируем локали:
[simterm]
$ sudo locale-gen /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8) Generating locales... en_US.UTF-8... done Generation complete.
[/simterm]
Проверяем ещё раз:
[simterm]
$ file /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive: locale archive 11 strings
[/simterm]
И locale -a:
[simterm]
$ locale -a C en_US.utf8 POSIX
[/simterm]
Либо с помощью localedef:
[simterm]
$ localedef --list-archive en_US.utf8
[/simterm]
Проверяем vifm:

Параметры файлов локализации
Узнать дефолтную сортировку дней недели — какой будет первым, вторым и т.д.:
[simterm]
$ locale -k LC_TIME abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat" day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday" ... first_weekday=1 first_workday=2
[/simterm]
Локализации описываются в файлах в каталоге /usr/share/i18n/locales/, из которого генерируется локаль во время выполнения locale-gen, например для en_US локаль LC_TIME описана как:
LC_TIME
abday "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
day "Sunday";/
"Monday";/
"Tuesday";/
"Wednesday";/
"Thursday";/
"Friday";/
"Saturday"
week 7;19971130;1
abmon "Jan";"Feb";/
"Mar";"Apr";/
"May";"Jun";/
"Jul";"Aug";/
"Sep";"Oct";/
"Nov";"Dec"
mon "January";/
"February";/
"March";/
"April";/
"May";/
"June";/
"July";/
"August";/
"September";/
"October";/
"November";/
"December"
% Appropriate date and time representation (%c)
d_t_fmt "%a %d %b %Y %r %Z"
%
% Appropriate date representation (%x)
d_fmt "%m//%d//%Y"
%
% Appropriate time representation (%X)
t_fmt "%r"
%
% Appropriate AM/PM time representation (%r)
t_fmt_ampm "%I:%M:%S %p"
%
% Appropriate date and time representation for date(1). This is
% different from d_t_fmt for historical reasons and has been different
% since 2000 when date_fmt was added as a GNU extension. At the end
% of 2018 it was adjusted to use 12H time (bug 24046) instead of 24H.
date_fmt "%a %b %e %r %Z %Y"
%
% Strings for AM/PM
%
am_pm "AM";"PM"
END LC_TIME
А для ru_RU в LC_TIME имеется опция first_weekday, см. man 5 locale, которая указывает первый день недели, т.е. понедельник (второй день из списка дней недели, который всё-таки начинается с воскресенья):
... week 7;19971130;1 first_weekday 2 END LC_TIME ...
Что бы задать по дефолту первым днём понедельник — устанавливаем LC_TIME в ru_RU.UTF-8, в файле /etc/locale.conf, предварительно раскоментировав в /etc/locale.gen и выполнив locale-gen:
LANG=en_US.UTF-8 LC_TIME=ru_RU.UTF-8
Либо используя localectl:
[simterm]
$ localectl set-locale LC_TIME=ru_RU.UTF-8
[/simterm]
В целом, на этом всё.
Ссылки по теме
- Locale на Arch Wiki
- Understanding the Locales on Debian GNU/Linux