Википедия:Обсуждение правил/Википедия:Техническое соглашение о датах и времени
Немного стандартизации, для облегчения работы технических инструментов и людей, которые их обслуживают.
- Вводное слово
Добрался я значит снова до работы над шаблоном {{ambox}} и модуля Модуль:Message box. В прошлый раз, три года назад, я остановился на работе с датами и попытке их вывести в удобный для читателя и категорий формат. В тот раз, поняв, что у нас нет нормальных инструментов для обработки русских дат (12 апреля 2020
или апрель 2020
), прекратил разработку, а потом знаете что было. Так вот, вернувшись я более плотно занялся этой проблемой и обнаружил, что с прошлого раза ничего не изменилось. Готового инструмента определения дат, как не было так и нет.
Мы с двумя инженерами решили определить фронт работ, который нужно закрыть, чтобы понять, нужен ли этот инструмент и что нужно обрабатывать для того, чтобы он работал. И тут выяснилось...
- Проблема
В нашем разделе Википедии абсолютный хлам в указании дат, которые используют шаблоны и модули. Вот возможные примеры:
- 12-12-2222
- 12.12.2222
- 12-2222
- 12.2222
- 2222-12-12
- 2222.12.12
- 2222-12
- 2222.12
- 03-12-2222
- 03.12.2222
- 3-12-2222
- 3.12.2222
- январь 2222
- 12 января 2222
- Jule 12, 2222
Возможно есть что-то еще, что не указано в списке. Данные даты абсолютно не стандартизированы, тяжело поддаются трекингу и конвертации, огромное количество шаблонов и модулей поддерживает только один вид дат и времени, из-за чего приходится делать кучу проверок для корректного отображения информации.
- Решение
Принять в качестве руководства Википедия:Техническое соглашение о датах и времени, который утвердит ISO 8601 как единственный возможный формат для технических дат и времени, что позволит как внешним инструментам парсить вики-страницы (тому же визреду в будущем будет легче работать с датами), так и редакторам не придётся постоянно смотреть какой из форматов даты верный. Это также облегчит разработку модулей и шаблонов.
План работы:
- Принять в качестве руководства Википедия:Техническое соглашение о датах и времени. ->
- Ботом начать вырезать неверные даты в шаблонах и модулях. ->
- Поставить на все шаблоны с датами проверку на соответствие формату и если не соответствует, выводить предупреждение. ->
- Если в течении полугода после принятия руководства все хорошо, то превратить руководство в правило.
Как-то так, предложения по тексту и названию приветствуются.
Обсуждение
- Ну а почему бы и нет? Вроде, как на первый взгляд, вещь полезная. Uchastnik1 (обс.) 18:49, 8 мая 2021 (UTC)
- Стандартизация нужна, потому сейчас в разных шаблонах ставится такое разнообразие дат, что чёрт ногу сломит. Считаю, что, в соответствии с ISO 8601, формат даты должен быть «2222-12-12», отражающий иерархию «год-месяц-число», а по-русски — «12 января 2222», как естественный. Kalendar (обс.) 19:04, 8 мая 2021 (UTC)
- Внутри можно ориентироваться на то как работает mw:Help:Extension:ParserFunctions/ru#.23time. ГОСТ ИСО 8601-2001 есть. Снаружи заставлять пользователей вместо 1.01.2000 1 января 2000 писать только 2000-1-1 бессмысленно, так как этот формат многим не знаком. В разных гостах по оформлению (напр. ГОСТ Р 7.0.97-2016 п5.10, ГОСТ 7.32-2001 п6.10.1), в выходных данных в любой книге люди видят не такой формат. Максимум для редакторов в статьях можно просить указывать цифры вместо слов (и форматы только те, что уже есть в гостах), т.к. #time поймёт цифры других форматов. --Sunpriat 20:23, 8 мая 2021 (UTC)
- @Sunpriat приведенные выше госты один уже не используется, а второй только для документов и печатной продукции, он не предназначен для представления дат и времени в других местах. Для других мест используется ГОСТ ИСО 8601-2001, который является своего рода локализированной версией ISO 8601.
> Снаружи заставлять пользователей вместо 1.01.2000 1 января 2000 писать только 2000-1-1 бессмысленно, так как этот формат многим не знаком.
Значит самое время заняться просветительской деятельностью, более того, это не может быть бессмысленно так как будет высвечиваться предупреждение о том какой формат необходимо ввести. С уважением, Iniquity 20:47, 8 мая 2021 (UTC)
- @Sunpriat приведенные выше госты один уже не используется, а второй только для документов и печатной продукции, он не предназначен для представления дат и времени в других местах. Для других мест используется ГОСТ ИСО 8601-2001, который является своего рода локализированной версией ISO 8601.
- @Iniquity, имеет смысл оставить два варианта:
1. для пользователей/участников —25.12.2020;
2. для обработки внутри любых шаблонов/модулей + как вариант для отображения — 2020-12-25. — Ailbeve (обс.) 20:39, 8 мая 2021 (UTC)- @Ailbeve, от формата через точки нужно избавляться в первую очередь, так как он практически нигде в мире не используется. С уважением, Iniquity 20:42, 8 мая 2021 (UTC)
- Его использование тотально, посмотрите еще раз. — Ailbeve (обс.) 20:44, 8 мая 2021 (UTC)
- @Ailbeve, еще раз посмотрел, такой формат дат используется в России, Казахстане и Венгрии, может еще где, я не нагуглил. С уважением, Iniquity 20:48, 8 мая 2021 (UTC)
- http://new.gramota.ru/spravka/letters/90-data
http://doc-style.ru/SPR/?id=1.11 — Ailbeve (обс.) 20:48, 8 мая 2021 (UTC)- Это только в документах, ГОСТ Р 7.0.97-2016 п5.10, в любом другом представлении используем ГОСТ ИСО 8601-2001. С уважением, Iniquity 20:50, 8 мая 2021 (UTC)
- 8601 можно назвать международным форматом, да. Но рускоязычные с ним мало знакомы. Получится что мы будем требовать их переучиваться. Это усложнение жизни для редакторов. Проще в ежегодный wishlist или таск на фабрикаторе потребовать чего-то системно нового. --Sunpriat 20:50, 8 мая 2021 (UTC)
- Это будет постепенно проводиться, долгое время будет работать бот, который будет просто заменять даты на правильные, потом будем постепенно отключать каждый из неправильных форматов. С уважением, Iniquity 20:52, 8 мая 2021 (UTC)
- Против отключения (как минимум) формата 25.12.2020 в принципе: пускай бот исправляет все время или поддерживается шаблонами. Удобство в техническом плане не должно затмевать удобство редакторов, которых много больше. ~~~~ Jaguar K · 12:17, 24 мая 2021 (UTC)
- Это будет постепенно проводиться, долгое время будет работать бот, который будет просто заменять даты на правильные, потом будем постепенно отключать каждый из неправильных форматов. С уважением, Iniquity 20:52, 8 мая 2021 (UTC)
- Его использование тотально, посмотрите еще раз. — Ailbeve (обс.) 20:44, 8 мая 2021 (UTC)
- @Ailbeve, от формата через точки нужно избавляться в первую очередь, так как он практически нигде в мире не используется. С уважением, Iniquity 20:42, 8 мая 2021 (UTC)
- [1] — тогда нет проблем, выбирает оптимальный формат хранения/обработки, формат представления, и вперед. — Ailbeve (обс.) 20:54, 8 мая 2021 (UTC)
- Скрипты должны облегчать работу участников, а не усложнять. Общеупотребимы только 2 формата: 'YYYY-MM-DD' и для людей 'D.M.YYYY'. Нет проблем поддерживать оба: проверить на наличие точек в строке, если есть парсить один, иначе второй, иначе показать предупреждение с требованием вводить дату только в этих форматах. В скриптах и JSON использовать только ISO. Дело в том, что в российских СМИ фактически используется только формат 'DD.MM.YYYY' или 'D (без ведущего нуля) месяц (словом) YYYY'. Примеры: rg.ru, tass.ru, interfax.ru, lenta.ru. Хотя некоторые используют ведущий нуль, например, N+1. В иностранных АИ: Forbes, bbc, IMDB, YouTube… При добавлении АИ участники копируют даты в {{cite web}} с сайта-источника. Нет проблем заменить «8 мая 2021» на «8.5.2021», но полностью переписывать даты каждого источника на «2021-05-08» это мучение. — Vladis13 (обс.) 06:04, 9 мая 2021 (UTC)
- @Vladis13, по идее сейчас все источники в визуальном редакторе вставляются через генератор Citoid, который сам форматирует в нужную дату, а для обычного редактора есть ProveIt. Но в целом по обсуждению я уже думаю, что возможно числовые форматы деприкировать не стоит, а просто о них нигде не упоминать и заменять ботом. С уважением, Iniquity 11:48, 9 мая 2021 (UTC)
- Если говорить о датах в {{cite web}}, то вставкой источников через визуальный редактор можно пренебречь — это крайне неудобно и обычно делается с ошибками, и если там есть свой конвертер, то и ладно. Гаджет ProveIt вставляет даты как есть, никак не конвертируя. Тоже с гаджетами на вкладке «Ссылки на источники» панели редактирования. Хорошо бы, чтобы эти гаджеты, или даже викификатор, конвертировали даты перед записью страницы, чтобы снизить число мелких ботоправок, засоряющих историю. — Vladis13 (обс.) 23:54, 11 мая 2021 (UTC)
- Если "нигде не упоминать", то ISO 8601 не должен помечаться как "обязательный", например, словами "должен использоваться" и тп. ~~~~ Jaguar K · 10:50, 13 мая 2021 (UTC)
- Скрипты должны облегчать работу участников, а не усложнять. Общеупотребимы только 2 формата: 'YYYY-MM-DD' и для людей 'D.M.YYYY'. Нет проблем поддерживать оба: проверить на наличие точек в строке, если есть парсить один, иначе второй, иначе показать предупреждение с требованием вводить дату только в этих форматах. В скриптах и JSON использовать только ISO. Дело в том, что в российских СМИ фактически используется только формат 'DD.MM.YYYY' или 'D (без ведущего нуля) месяц (словом) YYYY'. Примеры: rg.ru, tass.ru, interfax.ru, lenta.ru. Хотя некоторые используют ведущий нуль, например, N+1. В иностранных АИ: Forbes, bbc, IMDB, YouTube… При добавлении АИ участники копируют даты в {{cite web}} с сайта-источника. Нет проблем заменить «8 мая 2021» на «8.5.2021», но полностью переписывать даты каждого источника на «2021-05-08» это мучение. — Vladis13 (обс.) 06:04, 9 мая 2021 (UTC)
- Я, в целом, за единообразие, и лично мне (лично мне) удобно и понятно записать текущую дату в формате 2021-05-08, но я возражаю против полного запрета на ввод дат в другом формате, хотя бы даже потому, что многие сноски переносятся в русский раздел Википедии из других разделов (в основном английского) с шаблонами, в которых даты записаны так, как это принято в тех разделах. Если наши шаблоны откажутся «переваривать» в том числе и перенесённые даты, это приведёт к очередному завалу в штрафных категориях, а таковых завалов и так слишком много, причём не особо заметно, чтобы такие завалы разгребались даже в тех местах, где это разгребание можно было бы производить ботом (как пример, параметр
|url-status =
в шаблонах {{cite web}}). — Jim_Hokins (обс.) 22:20, 8 мая 2021 (UTC)- @Jim Hokins бот конвертер будет работать всегда, то есть по идее штрафные будут очень быстро разгребаться, предупреждение нужно только для того, чтобы люди запоминали как лучше вводить даты :) С уважением, Iniquity 22:33, 8 мая 2021 (UTC)
- @Iniquity, интересуюсь: почему бы сначала не показать работу бота конвертера? — Jim_Hokins (обс.) 22:40, 8 мая 2021 (UTC)
- @Jim Hokins, я никого не просил его сделать, так как непонятно будет принято это соглашение или нет :) С уважением, Iniquity 22:44, 8 мая 2021 (UTC)
- Прочитал. — Jim_Hokins (обс.) 22:48, 8 мая 2021 (UTC)
- То есть даже в случае если мы не договоримся о предупреждениях, это соглашение позволит ботам заменять даты на нужный нам формат. С уважением, Iniquity 23:09, 8 мая 2021 (UTC)
- Мне кажется, бота можно было бы уже сейчас запускать исправлять формат дат (для начала) в {{cite web}} и других шаблонах, в которых документацией предусмотрен именно формат ГГГГ-ММ-ДД. — Jim_Hokins (обс.) 00:05, 9 мая 2021 (UTC)
- @Jim Hokins, может ты и прав :) Чтобы потестить как он работает с датами. С уважением, Iniquity 11:41, 9 мая 2021 (UTC)
- Мне кажется, бота можно было бы уже сейчас запускать исправлять формат дат (для начала) в {{cite web}} и других шаблонах, в которых документацией предусмотрен именно формат ГГГГ-ММ-ДД. — Jim_Hokins (обс.) 00:05, 9 мая 2021 (UTC)
- То есть даже в случае если мы не договоримся о предупреждениях, это соглашение позволит ботам заменять даты на нужный нам формат. С уважением, Iniquity 23:09, 8 мая 2021 (UTC)
- Прочитал. — Jim_Hokins (обс.) 22:48, 8 мая 2021 (UTC)
- @Jim Hokins, я никого не просил его сделать, так как непонятно будет принято это соглашение или нет :) С уважением, Iniquity 22:44, 8 мая 2021 (UTC)
- @Iniquity, интересуюсь: почему бы сначала не показать работу бота конвертера? — Jim_Hokins (обс.) 22:40, 8 мая 2021 (UTC)
- @Jim Hokins бот конвертер будет работать всегда, то есть по идее штрафные будут очень быстро разгребаться, предупреждение нужно только для того, чтобы люди запоминали как лучше вводить даты :) С уважением, Iniquity 22:33, 8 мая 2021 (UTC)
- Бывает так, что полная дата не известна или примерна. В en:Template:Cite web#Date они вводятся в особом формате. Может добавить такие же, и обрабатывать их как-то иначе? — Vladis13 (обс.) 06:09, 9 мая 2021 (UTC)
- @Vladis13, сейчас ведется обсуждение на фабрикаторе по поводу недавнего введения Citoid формата YYYY-MM-XX, где XX указывает на неизвестность. Я там ругаюсь над технической реализацией, что ни один инструмент это не поддерживает, а они вводят. Но в целом такой формат интересен и в будущем, когда хотя бы #time будет его обрабатывать, то можно и добавить. С уважением, Iniquity 11:38, 9 мая 2021 (UTC)
- Это нововведение вчера отменили. — Vladis13 (обс.) 23:37, 11 мая 2021 (UTC)
- @Vladis13, сейчас ведется обсуждение на фабрикаторе по поводу недавнего введения Citoid формата YYYY-MM-XX, где XX указывает на неизвестность. Я там ругаюсь над технической реализацией, что ни один инструмент это не поддерживает, а они вводят. Но в целом такой формат интересен и в будущем, когда хотя бы #time будет его обрабатывать, то можно и добавить. С уважением, Iniquity 11:38, 9 мая 2021 (UTC)
- За такое соглашение, но надо ясно указать, что знак минуса рядом с годом будет означать ключ, связанный с наличием или отсутствием указания на то, что это дата до нашей эры, а не как в ранних версиях ISO 8601, что «0000-01-01» это 1 января 1 года до нашей эры. Это и для ввода данных проще, меньше будет ошибок. А уж длительности мы в модулях рассчитаем правильно, примем поправки на отсутствующий нулевой год. ·Carn 08:40, 9 мая 2021 (UTC)
- Ещё есть такой момент, может он не совсем сюда, а конкретно к {{cite web}}, но я всегда стараюсь в нём писать дату словами из-за непоследовательной обработки:
Код | Результат |
---|---|
{{cite web|url=http://example.com|title=Example|lang=ru|date=2020-08-09}} | Example (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=de|date=2020-08-09}} | Example (нем.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=en|date=2020-08-09}} | Example (англ.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=fr|date=2020-08-09}} | Example (фр.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=es|date=2020-08-09}} | Example (исп.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=uk|date=2020-08-09}} | Example (укр.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=fa|date=2020-08-09}} | Example (перс.) (9 августа 2020). |
{{cite web|url=http://example.com|title=Example|lang=zh|date=2020-08-09}} | Example (кит.) (9 августа 2020). |
- Вот абсолютно непонятно, почему какие-то языки решают, что им можно отформатировать дату, а какие-то не трогают (ну точнее, для них такое не реализовано, к счастью). А вносить в источники французские или испанские наименования месяцев совершенно не хочется, в идеале бы прибить этот зоопарк при унификации. -- windewrix (обс.) 08:52, 9 мая 2021 (UTC)
- Лучше писать не словами, их потом распознавать может быть будет нужно, а, конечно, вносить изменения в код, причём поближе к источнику ·Carn 09:50, 9 мая 2021 (UTC)
- @WindEwriX, спасибо за кейс, да, это потом исправить надо будет. С уважением, Iniquity 11:33, 9 мая 2021 (UTC)
- Парсить словесные месяцы в параметрах — это ад. Вполне возможно уже есть какие-то модули, которые их парсят, в которых прописаны все варианты названий месяцев со всевозможными морфологиями, падежами, регистром и на разных языках… Но при создании сторонних скриптов (ботов, гаджетов) это большая проблема. Например, на Python можно выкрутится, перед парсингом каждой даты переключая локаль, но надо знать на каком языке месяц, и морфология не поддерживается, какой-нибудь «9 май 2021» не распознается. На Lua для модулей и в википарсере встроенных парсеров дат вообще нет. На JS та же фигня. AWB конечно вообще парсинг не поддерживает, там надо лес регэкспов городить. — Vladis13 (обс.) 11:34, 9 мая 2021 (UTC)
- Модуль:Calendar, только два падежа, но зато с поддержкой иностранных. ·Carn 06:30, 10 мая 2021 (UTC)
- Допустимы ровно 2 числовых формата: ГГГГ-ММ-ДД и ДД.ММ.ГГГГ. Порядок «от большего к меньшему» пишем через дефис, «от меньшего к большому» — через точку. В этом случае не возникнет никаких трудностей с пониманием дат, например, если числа и месяцы почему-то пишутся без нуля: например, очевидно, что нестандартная запись 9.5.2021 — это девятое мая две тысячи двадцать первого года, никаких альтернативных трактовок тут быть не может (американцы и казахи — ССЗБ). Для удобства машинночитаемого времени предлагаю использовать стандартизированный и общепринятый формат через дефис от большего к меньшему (например, 2021-09-05), его понимание живым человеком тоже очевидно и общеизвестно. Ну, ещё можно поддержать словесный формат «9 мая 2021» путём автоконвертации из машинночитаемого. Фред-Продавец звёзд (обс.) 10:59, 9 мая 2021 (UTC)
- Постоянно на служебных страницах пытаюсь ввести дату в формате ГГГГДДММ. 188.170.76.178 19:51, 10 мая 2021 (UTC)
- «Пусть потеет машина». Всё, что вводится пользователем, должно вводиться в удобном ему формате. В том числе потому, что много дат в шаблонах тянется из других разделов, а их вы никак не заставите следовать вашим местным хотелкам. так что пишите единый парсер для всех вариантов и бота, чтобы править. Igel B TyMaHe (обс.) 13:17, 11 мая 2021 (UTC)
- @Igel B TyMaHe, почти во всех других разделах не пользуются точками, это наша и еще парочки разделов приблуда. С уважением, Iniquity 13:19, 11 мая 2021 (UTC)
- Но это чуть ли не единственно верный способ цифровой записи даты по-русски. Igel B TyMaHe (обс.) 13:24, 11 мая 2021 (UTC)
- @Igel B TyMaHe, если мы будем обрабатывать эту дату, но везде рекомендовать использовать гггг-мм-дд, и заменять на нее, как считаете? С уважением, Iniquity 14:17, 11 мая 2021 (UTC)
- Я полностью поддерживаю принятие унифицированной формы, к которой будут приводиться все остальные путём ботоправок. Но никаких обязывающих (то есть влекущих санкции) правил для редакторов быть не должно. Igel B TyMaHe (обс.) 14:20, 11 мая 2021 (UTC)
- @Igel B TyMaHe, если мы будем обрабатывать эту дату, но везде рекомендовать использовать гггг-мм-дд, и заменять на нее, как считаете? С уважением, Iniquity 14:17, 11 мая 2021 (UTC)
- Но это чуть ли не единственно верный способ цифровой записи даты по-русски. Igel B TyMaHe (обс.) 13:24, 11 мая 2021 (UTC)
- @Igel B TyMaHe, почти во всех других разделах не пользуются точками, это наша и еще парочки разделов приблуда. С уважением, Iniquity 13:19, 11 мая 2021 (UTC)
- Добавил в таблицу немецкий. Я за то, чтобы для всех языков была расшифровка на русском. Oleg3280 (обс.) 14:33, 18 мая 2021 (UTC)
- Что не так с записью 18.05.2021? В Украине используется. Для шаблонов согласен 2021-05-18. Oleg3280 (обс.) 14:38, 18 мая 2021 (UTC)
- За! Узнал об обсуждении из этого запроса, так как уже давно прошу вернуть функционал исправления даты и времени Bsivkobot. Бот отключен за выполнение несогласованных консенсусом действий, из-за этого пострадала важнейшая функция — обработка к дат к стандарту 8601. Считаю, что необходимо принять как можно скорее это предложение и реализовать то, что осталось нам в наследие: Участник:BsivkoBot/Формат дат ГГГГ-ММ-ДД. — Voltmetro (обс.) 15:58, 23 мая 2021 (UTC)
- Унификацию в данном случае можно лишь приветствовать, разнобой дат замедляет восприятие. eXcellence contribs 07:48, 25 мая 2021 (UTC)
Промежуточный итог
Всем спасибо кто высказался! Из обсуждения можно сделать следующие выводы:
1. Явный консенсус за унификацию дат.
2. Отсутствие консенсуса за запрет ввода форматов отличных от "стандартного".
В связи с этим и с тем, что мы с участником @Carn допили модуль Calendar ( ну точнее он допилил, а я рядом стоял :) ) предлагаю следующее:
1. Принять, что руководство рекомендует как минимум поддерживать обработку "стандартной даты" для шаблонов и модулей, которые работают с датами и преподносят читателю их в нужном виде, это можно сделать через модуль Calendar или стандартными средствами MediaWiki.
2. Запустить бота, который будет в основных шаблонах, которые чаще всего переносятся заменять даты на стандартный формат. Это всякие предупреждения в статьях, карточки и источники. Отдельное внимание: данное соглашение никак не определяет что делать с форматом, когда каждый кусок даты записан в отдельный параметр {{примершаблона|20|05|1990}}
. Бот не должен их пока трогать. Каждый из этих случаев должен рассматриваться отдельно.
3. Пока через модуль модуль Calendar поддерживаются все форматы дат, которые выше обсуждались. Ошибка выводится на совершенно нестандартные даты, нарушающие любой из стандартов. С уважением, Iniquity 16:57, 31 мая 2021 (UTC)
Предварительный итог
Положения, указанные в промежуточном итоге, вписаны в будущее руководство (если не будет возражений).·Carn 18:28, 7 июня 2021 (UTC)
- Было дублирование, убрал, внёс оформительские правки. ·Carn 22:22, 7 июня 2021 (UTC)
- Всё верно, только хорошо бы было ещё сделать бота-по-вызову или этот «модуль Calendar» как-то внедрить прямо в редактор викитекста или кодовый редактор (прямо рядом с кнопкой «викификатор»). — Voltmetro (обс.) 09:14, 9 июня 2021 (UTC)
- Ну, я буду выкачивать дамп и по нему пускать на замену, это отдельно придётся программировать, увы, т.к. у меня нет фурычащего викибота на lua.Что хочется в кнопке? Приведение дат в шаблонах к стандартному виду? ·Carn 09:31, 9 июня 2021 (UTC)
Итог
Возражений не поступило, предварительный итог утверждён.·Carn 08:48, 14 июня 2021 (UTC)