Lightning_(ПО)|Lightning мощный календарь для Thunderbird . Вкупе с Exchange EWS Provider может явиться полноценной заменой Outlook.
Беда которую заметил буквально сегодня - сдвинутое время в календаре. Из за нашего перехода на перманентное зимнее время. Оказалось, что расширение содержит свою базу описания временных зон (руки отбить за такое, не даёт им покоя слава Java). И обновляться оно пока не собирается. Решил посмотреть сам.
Оказалось, что база часовых поясов хранится в sqlite: timezones.sqlite
- ищем этот файлик в одной из поддиректорий в директории extensions в профиле TB.
Для всех временных зон обновления не дам, но покажу, на примере Владивостока, как их можно поменять.
Для начала закрываем TB.
UPD: описание ниже - изначальный путь решения проблемы, кто не понимает о чём тут речь, лучше сразу перейти в конец заметки и воспользоваться sqlitebrowser.
Вторым шагом, делаем дамп текущей базы (не отдельной зоны, календарь очень придирчив к переносу строк в VCARD, так будет проще)
sqlite3 timezones.sqlite .dump > timezones.dump
По строке ‘Asia/Vladivostok’ находим нужную зону:
INSERT INTO "tz_data" VALUES('Asia/Vladivostok',NULL,'+0431000','+1315600','BEGIN:VTIMEZONE
TZID:Asia/Vladivostok
X-LIC-LOCATION:Asia/Vladivostok
BEGIN:STANDARD
TZOFFSETFROM:+1100
TZOFFSETTO:+1100
TZNAME:VLAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
');
Видим некорректные значение полей:
TZOFFSETFROM:+1100
TZOFFSETTO:+1100
Исправляем их на +1000
, итог получается такой:
INSERT INTO "tz_data" VALUES('Asia/Vladivostok',NULL,'+0431000','+1315600','BEGIN:VTIMEZONE
TZID:Asia/Vladivostok
X-LIC-LOCATION:Asia/Vladivostok
BEGIN:STANDARD
TZOFFSETFROM:+1000
TZOFFSETTO:+1000
TZNAME:VLAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
');
Теперь грохаем базу: rm timezones.sqlite
И восстанавливаем её из нашего отредактированного дампа: cat timezones.dump | sqlite3 timezones.sqlite
Для проверки, запускаем TB из терминала, смотрим, что нет ругани вроде такой:
Exception:[Exception... "Component returned failure code: 0x804a0100 [calIICSService.parseICS]" nsresult: "0x804a0100 (<unknown>)" location: "JS frame :: resource:*calendar/modules/calUtils.jsm -> file:*/home/user/.thunderbird/8q56g6ui.default/extensions/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/calendar-js/calTimezone.js :: calLibicalTimezone.prototype.icalComponent :: line 84" data: no]
Если есть, значит таки напороли с переносом строк. Исправляем внимательно.
Всё, теперь запускаем TB и радуемся правильному времени в календаре.
Эту процедуру можно сделать чуть проще при помощи
sqlitebrowser: просто открываем timezones.sqlite
, находим нужную строку и правим аккуратно в нём, применяем, сохраняем, запускаем TB.