Feature/protocol handlers

* Added account selection for protocol links when multiple connected accounts are available, including mailto: links
* Added support for handling mailto: links in an already-open PWA/session instead of always opening a new tab
* Added webcal: protocol handling for calendar links
* Added account selection for webcal: links when multiple calendar-capable accounts are connected
* Added an import-or-subscribe choice for detected webcal calendars
* Added protocol handler settings for registering mail and calendar handlers and choosing the open mode
* Added service worker/session coordination for passing protocol requests between browser/PWA contexts
* Added tests and translations for the new protocol handler flows
This commit is contained in:
Lucas Gaitzsch
2026-05-12 20:49:05 +02:00
committed by Linus Rath
parent 8b0e2052cf
commit 3f444a8912
40 changed files with 2514 additions and 55 deletions
+44
View File
@@ -134,6 +134,40 @@
"add_app": "Приложения",
"shared": "Общие"
},
"protocol_handlers": {
"title": "Приложения по умолчанию",
"description": "Выберите, должны ли ссылки электронной почты и календаря открываться в Bulwark. Технически Bulwark регистрируется как обработчик протокола для ссылок mailto: и webcal:.",
"unsupported": "Этот браузер или это соединение не поддерживает ручную регистрацию обработчиков протоколов. Возможно, установленное PWA всё же можно использовать через настройки браузера или системы.",
"mailto_label": "Ссылки электронной почты",
"mailto_description": "Открывает ссылки mailto: в Bulwark с предварительно заполненным редактором письма.",
"protocol_open_mode_label": "При открытии ссылок протоколов",
"protocol_open_mode_description": "Выберите, будет ли Bulwark открывать ссылки mailto: и webcal: в новой вкладке или повторно использовать открытую сессию. Для варианта с активной сессией нужно разрешение на уведомления, чтобы можно было нажать на резервное уведомление и вывести Bulwark на передний план, если браузер блокирует фокус.",
"protocol_open_mode_active_session": "Открывать в активной сессии, если возможно",
"protocol_open_mode_new_tab": "Всегда открывать новую вкладку",
"focus_notification_title": "Открыть Bulwark",
"focus_notification_body": "Ссылка была открыта в Bulwark. Нажмите, чтобы вывести окно на передний план.",
"webcal_label": "Ссылки календаря",
"webcal_description": "Открывает ссылки webcal: в Bulwark с предварительно заполненным диалогом подписки на календарь.",
"register_mailto": "Зарегистрировать почтовое приложение",
"register_webcal": "Зарегистрировать приложение календаря",
"mailto_registered": "Запрошена регистрация обработчика электронной почты",
"webcal_registered": "Запрошена регистрация обработчика календаря",
"registration_failed": "Не удалось зарегистрировать обработчик протокола",
"opening_mailto": "Открытие редактора...",
"opening_webcal": "Открытие календаря...",
"browser_note": "Браузер или операционная система может запросить подтверждение и может потребовать, чтобы Bulwark был установлен, прежде чем его можно будет выбрать приложением по умолчанию.",
"select_account_title": "Выберите аккаунт",
"select_mailto_account": "Выберите, в каком аккаунте открыть эту ссылку электронной почты.",
"select_webcal_account": "Выберите, в каком аккаунте открыть эту ссылку календаря.",
"select_account_note": "Этот выбор применяется только к этой ссылке протокола.",
"detail_to": "Кому",
"detail_subject": "Тема",
"detail_no_subject": "Без темы",
"detail_calendar": "Календарь",
"detail_source": "Источник",
"active_account": "Активен",
"switching_account": "Переключение аккаунта..."
},
"sidebar_apps": {
"modal_title": "Приложения боковой панели",
"add_new": "Добавить приложение",
@@ -733,6 +767,7 @@
"files": "Файлы",
"contacts": "Контакты",
"encryption": "Шифрование",
"protocol_handlers": "Приложения по умолчанию",
"sidebar_apps": "Приложения боковой панели",
"notifications": "Уведомления",
"layout": "Макет",
@@ -2431,6 +2466,15 @@
"file_too_large": "Файл превышает лимит 10 МБ",
"invalid_format": "Неверный формат файла календаря"
},
"webcal_action": {
"title": "Открыть ссылку календаря",
"description": "Как вы хотите использовать \"{name}\"?",
"import_title": "Импортировать один раз",
"import_description": "Загрузить события сейчас и скопировать их в один из ваших календарей.",
"subscribe_title": "Подписаться",
"subscribe_description": "Автоматически синхронизировать этот календарь как отдельный календарь.",
"cancel": "Отмена"
},
"management": {
"title": "Управление календарями",
"description": "Создавайте, переименовывайте и настраивайте свои календари. Щёлкните правой кнопкой мыши на календаре в боковой панели для быстрой смены цвета.",