metaclass: (Default)
[personal profile] metaclass
Белорусско-украинские линуксоиды познакомили меня с кромешным адом - номера дней недели в локалях линукса это пиздец живородящий.
https://github.com/GNOME/gnome-shell/blob/master/js/ui/calendar.js#L599
https://git.gnome.org/browse/gnome-shell/tree/src/shell-util.c#n181
https://bugzilla.gnome.org/show_bug.cgi?id=747346#c5
https://sourceware.org/glibc/wiki/Locales

Дни недели существуют в следующих вариантах:
ISO8601 - 1..7 начиная с понедельника
жабаскриптовый Date.getDay - 0..6 начиная с воскресенья.
Человекочитабельный номер 1..7, зависит от локали.

В локалях линукса есть такие параметры:
week DAYSINWEEK;WEEKSTARTDATE;MINWEEKLEN
first_weekday N - number of day in the week to be shown in the first column of a calendar. Defaults to 1.

Первый параметр состоит из 3 чисед.
DAYSINWEEK is usually 7;
MINWEEKLEN is the minimal length of the first week in year (usually 4).

WEEKSTARTDATE is most confusing - it should be some date that corresponds to the beginning of a week. It is typically either 19971130 (Sunday) or 19971201 (Monday), the former being used almost by all glibc locales (see below). Это параметр NL_TIME_WEEK_1STDAY/week-1stday.

Единственная локаль, в которой я нашел 19971201 (неделя начинается с понедельника) - это ru_UA. Все остальные либо по умолчанию, либо явно указанный 19971130 (неделя начинается с воскресенья)
Причем эти два числа - они захардкожены в gnome-shell/tree/src/shell-util.c для расчета нумерации дней недели.

first_weekday - это безумный параметр, отвечающий за отображение дней недели по колонкам календаря. Это вот самый адовый параметр, его значение, как я понимаю, относится к домену "человекочитабельных номеров для недели, зависящих от локали".

Т.е. мы имеем три разных типа чисел определяющих дни недели, первый и второй - данные, нейтральные по отношению к локали (я надеюсь), но имеющие разные диапазоны значений, третий - данные, зависящие от локали.
И еще число, принадлежащее к третьему типу данных, управляющее отображением календаря.
И хардкодед магическое число, которое определяет соответствие данных третьего типа реальному миру.

Теперь еще вопрос: если в программе-органайзере записано событие "каждое воскресенье" - какой из типов данных там будет использован и не сломается ли оно все в прах, если заменить в локали начало дней недели?

Date: 2015-04-06 05:57 am (UTC)
develop7: (dero)
From: [personal profile] develop7
KDEшники не в пример дружелюбнее и вменяемее.
хз, по третьей ссылке вроде как довольно конструктивно пообщались. хотя лично у меня есть и примеры обратного.
Edited Date: 2015-04-06 05:58 am (UTC)

Date: 2015-04-06 06:58 am (UTC)
From: [identity profile] techquisitor.livejournal.com
Я за тусовку в целом говорю. Нисколько не отрицая, что там есть вменямые люди, говорю, что вся эта шайка — те ещё ебанавты. Вплоть до того, когда локализатор направила им вежливое письмо «У вас тут перевод кривой, возьмите патч, там всё корректно переведено. И вам будет хорошо и нам приятно.» получила письмо в духе «Вас здесь не стояло и вы, вообще, кто такая?». По остальным патчам, вроде исправления багов GTK+ — аналогично. Вплоть до того, что вообще забивают, ссылаясь на якобы проблемы с видеодрайверами.

Date: 2015-04-06 07:27 am (UTC)
develop7: (dero)
From: [personal profile] develop7
я однажды пытался найти патчи из росы в гном. безуспешно.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 07:57 am
Powered by Dreamwidth Studios