Как стать автором
Обновить

Почему воскресенье — первый день недели в линуксе, и как это исправить

Время на прочтение2 мин
Количество просмотров9.2K
Первый день недели - воскресенье
Первый день недели - воскресенье

В линуксе можно встретить такое явление, что первый день недели по умолчанию - воскресенье.

Если вы не сильно интересовались бытом иностранцев, то может выглядеть дико ?
Я столкнувшись с этим первый раз - подумал: "Моя неделя начинается в понедельник, я хочу видеть у себя календарь нормального человека".

На какое-то время с этим смирился, пока один раз не пропустил важное событие, забыв об этой особенности :-)

И сегодня пришел день, когда я решил разобраться с этой проблемой.
Сразу оговорюсь, что в большинстве дистриутивов, если корректно указывать регион.

Если вкратце, то мультиязычность и мультирешиональность в линуксе построена на локалях (locales).

Посмотреть текущие настройки можно командой locale.
В моём случае проблема на локалиen_US

Вывод команды locale
Вывод команды  "locale"
Вывод команды "locale"


Варианта выходит два:

  1. Сменить локаль времени на en_GB, с подходящим порядком дней недели

  2. Внести изменения в локаль en_US

Вариант 1. Меняем локаль времени LC_TIME

Вариант рабочий, но с нюансами.
Не забываем, что в этой секции файла хранятся названия дней недели, месяцев, их форматы и т.п.

en_GB и en_US
en_GB и en_US

В принципе отличия не критичные, даже более близкие к нашим реалиям ?

Порядок действий для изменения локали времени

Делаем следующие манипуляции, открывая файлы в любимом текстовом редакторе с привилегиями суперпользователя (sudo):

en_GB.UTF-8 UTF-8 в /etc/locale.gen
en_GB.UTF-8 UTF-8 в /etc/locale.gen
  • Открываем файл /etc/locale.gen
    Находим в нём строку en_GB.UTF-8 UTF-8 и раскомментируем её, чтобы сгенерировать нужную локаль.

Вывод команды "locale-gen"
Вывод команды "locale-gen"
  • Перегененрируем локали командой locale-gen
    Естественно с sudo, я же надеюсь не из под рута работаете)

locale.conf с обновленной локлью времени
locale.conf с обновленной локлью времени
  • И обновляем используемую локаль для времени в файле /etc/locale.conf, добавив строчку LC_TIME=en_GB.UTF-8 или заменив значение LC_TIME

Вывод команды "cal"
Вывод команды "cal"
  • Перелогиниваемся или перезагружаем машину и видим чудо! ?

Вариант 2. Модифицируем локаль en_US

Мне этот вариант понравился больше. Я не хочу ничего менять, кроме порядка дней недели, остальное всё меня всё устраивает.

Да и шага всего два, что меня дико радует ?

Порядок действий для модификации локали
Параметр локали, отвечающий за порядок дней недели
Параметр локали, отвечающий за порядок дней недели
  • Открываем в редакторе файл /usr/share/i18n/locales/en_US и находим конец секции LC_TIME по строке END LC_TIME

  • И перед ее концом ставим строчку first_weekday 2

    Вывод команды locale-gen
    Вывод команды locale-gen
  • Далее перегенерируем локали командой locale-gen (Да, с привелениями суперпользовтеля)

  • Перелогиниваемся или перезагружаем машину и видим чудо! ?

Вариант 3. (Бонус)

А то скажете еще, что забыл...
Если у вас дистрибутив - можно порыться в настройках системы или календаря, там тоже может быть)


Теги:
Хабы:
Всего голосов 38: ↑6 и ↓32-25
Комментарии20

Публикации

Истории

Ближайшие события