diff --git a/web/public/static/langs/uk.json b/web/public/static/langs/uk.json
index 0967ef42..9420b8d5 100644
--- a/web/public/static/langs/uk.json
+++ b/web/public/static/langs/uk.json
@@ -1 +1,191 @@
-{}
+{
+ "action_bar_logo_alt": "логотип ntfy",
+ "action_bar_settings": "Налаштування",
+ "message_bar_type_message": "Введіть повідомлення тут",
+ "message_bar_error_publishing": "Помилка публікації сповіщення",
+ "message_bar_show_dialog": "Показати діалогове вікно публікації",
+ "nav_topics_title": "Підписки на теми",
+ "nav_button_settings": "Налаштування",
+ "nav_button_documentation": "Документація",
+ "nav_button_subscribe": "Підписатися на тему",
+ "nav_button_muted": "Сповіщення вимкнено",
+ "nav_button_connecting": "підключення",
+ "alert_grant_title": "Сповіщення вимкнено",
+ "alert_grant_description": "Дозвольте браузеру показувати сповіщення.",
+ "alert_grant_button": "Дозволити",
+ "alert_not_supported_title": "Сповіщення не підтримуються",
+ "notifications_list_item": "Сповіщення",
+ "notifications_attachment_image": "Прикріплене зображення",
+ "notifications_attachment_open_title": "Перейти на {{url}}",
+ "notifications_attachment_open_button": "Відкрити вкладення",
+ "notifications_attachment_link_expires": "термін дії посилання закінчується {{date}}",
+ "notifications_actions_http_request_title": "Надіслати HTTP {{method}} на {{url}}",
+ "notifications_none_for_any_title": "Ви не отримали жодних сповіщень.",
+ "notifications_no_subscriptions_description": "Натисніть \"{{linktext}}\" посилання, щоб створити або підписатися на тему. Після цього ви зможете надсилати повідомлення за допомогою PUT або POST, і ви отримуватимете тут повідомлення.",
+ "notifications_more_details": "Додаткову інформацію можна знайти на сайті або в документації.",
+ "notifications_loading": "Завантаження сповіщень…",
+ "publish_dialog_title_topic": "Опублікувати в {{topic}}",
+ "publish_dialog_title_no_topic": "Опублікувати сповіщення",
+ "publish_dialog_progress_uploading": "Завантаження…",
+ "publish_dialog_message_published": "Сповіщення опубліковано",
+ "publish_dialog_attachment_limits_quota_reached": "перевищує квоту, залишилося {{remainingBytes}}",
+ "publish_dialog_priority_low": "Низький пріоритет",
+ "publish_dialog_topic_label": "Назва теми",
+ "publish_dialog_topic_placeholder": "Назва теми, наприклад phil_alerts",
+ "publish_dialog_topic_reset": "Скинути тему",
+ "publish_dialog_title_label": "Заголовок",
+ "publish_dialog_title_placeholder": "Заголовок сповіщення, наприклад Сповіщення про дисковий простір",
+ "publish_dialog_message_label": "Повідомлення",
+ "publish_dialog_message_placeholder": "Введіть повідомлення",
+ "publish_dialog_tags_label": "Теги",
+ "publish_dialog_tags_placeholder": "Список тегів розділений комою, наприклад warning, srv1-backup",
+ "publish_dialog_click_placeholder": "URL-адреса, яка відкривається після натискання сповіщення",
+ "publish_dialog_email_label": "Електронна пошта",
+ "publish_dialog_attach_placeholder": "Прикріпіть файл за URL-адресою, наприклад https://f-droid.org/F-Droid.apk",
+ "publish_dialog_attach_reset": "Видалити URL вкладення",
+ "publish_dialog_filename_placeholder": "Ім'я файлу вкладення",
+ "publish_dialog_delay_reset": "Видалити затримку доставлення",
+ "publish_dialog_chip_click_label": "Адреса",
+ "publish_dialog_chip_email_label": "Переслати на електронну пошту",
+ "publish_dialog_chip_topic_label": "Змінити тему",
+ "publish_dialog_attached_file_remove": "Видалити прикріплений файл",
+ "subscribe_dialog_subscribe_topic_placeholder": "Назва теми, наприклад phil_alerts",
+ "subscribe_dialog_subscribe_use_another_label": "Використовувати інший сервер",
+ "subscribe_dialog_subscribe_base_url_label": "URL служби",
+ "subscribe_dialog_login_password_label": "Пароль",
+ "subscribe_dialog_login_button_back": "Назад",
+ "subscribe_dialog_error_user_not_authorized": "{{username}} користувач не авторизований",
+ "prefs_notifications_sound_description_none": "Сповіщення не відтворюють жодного звуку при надходженні",
+ "prefs_notifications_sound_description_some": "Сповіщення відтворюють звук {{sound}}",
+ "prefs_notifications_min_priority_description_any": "Показати всі сповіщень, незалежно від пріоритету",
+ "prefs_notifications_min_priority_any": "Будь-який пріоритет",
+ "prefs_notifications_min_priority_default_and_higher": "Пріоритет за замовчуванням та високий",
+ "prefs_notifications_delete_after_title": "Видалити сповіщення",
+ "prefs_notifications_delete_after_never": "Ніколи",
+ "prefs_notifications_delete_after_one_day": "Через день",
+ "prefs_notifications_delete_after_one_week": "Через тиждень",
+ "prefs_notifications_delete_after_one_month": "Через місяць",
+ "prefs_notifications_delete_after_never_description": "Сповіщення ніколи не видаляються автоматично",
+ "prefs_notifications_delete_after_three_hours_description": "Сповіщення автоматично видаляються через три години",
+ "prefs_notifications_delete_after_one_day_description": "Сповіщення автоматично видаляються через один день",
+ "prefs_notifications_delete_after_one_week_description": "Сповіщення автоматично видаляються через тиждень",
+ "prefs_notifications_delete_after_one_month_description": "Сповіщення автоматично видаляються через місяць",
+ "prefs_users_title": "Керувати користувачами",
+ "prefs_users_table": "Таблиця користувачів",
+ "prefs_users_edit_button": "Редагувати користувача",
+ "prefs_users_dialog_button_save": "Зберегти",
+ "prefs_appearance_title": "Зовнішній вигляд",
+ "priority_default": "за замовчуванням",
+ "priority_high": "високий",
+ "priority_max": "макс",
+ "error_boundary_title": "Ой, ntfy впав",
+ "error_boundary_button_copy_stack_trace": "Копіювати трасування стека",
+ "action_bar_show_menu": "Показати меню",
+ "action_bar_toggle_action_menu": "Відкрити/закрити меню",
+ "action_bar_send_test_notification": "Надіслати тестове сповіщення",
+ "action_bar_clear_notifications": "Очистити всі сповіщення",
+ "action_bar_toggle_mute": "Вимкнути/увімкнути сповіщення",
+ "action_bar_unsubscribe": "Відписатися",
+ "message_bar_publish": "Опублікувати повідомлення",
+ "nav_button_all_notifications": "Усі сповіщення",
+ "alert_not_supported_description": "Ваш браузер не підтримує сповіщення.",
+ "notifications_list": "Список сповіщень",
+ "notifications_mark_read": "Позначити як прочитане",
+ "notifications_delete": "Видалити",
+ "notifications_tags": "Теги",
+ "nav_button_publish_message": "Опублікувати сповіщення",
+ "notifications_attachment_copy_url_title": "Копіювати URL-адресу вкладення",
+ "notifications_attachment_link_expired": "термін дії посилання для завантаження закінчився",
+ "publish_dialog_progress_uploading_detail": "Завантажується {{loaded}}/{{total}} ({{percent}}%) …",
+ "notifications_priority_x": "Пріоритет {{priority}}",
+ "notifications_attachment_copy_url_button": "Копіювати URL-адресу",
+ "notifications_copied_to_clipboard": "Скопійовано в буфер обміну",
+ "notifications_attachment_file_video": "відео файл",
+ "notifications_attachment_file_audio": "звуковий файл",
+ "publish_dialog_emoji_picker_show": "Виберіть емодзі",
+ "notifications_new_indicator": "Нове сповіщення",
+ "notifications_attachment_file_image": "файл зображення",
+ "notifications_attachment_file_document": "інший документ",
+ "notifications_click_copy_url_title": "Копіювати URL-адресу посилання",
+ "notifications_click_copy_url_button": "Копіювати посилання",
+ "notifications_actions_not_supported": "Дія не підтримується у браузері",
+ "notifications_attachment_file_app": "Файл програми Android",
+ "notifications_click_open_button": "Відкрити посилання",
+ "notifications_actions_open_url_title": "Перейти на {{url}}",
+ "notifications_none_for_topic_description": "Щоб надіслати сповіщення до цієї теми, просто надішліть PUT або POST на URL-адресу цієї теми.",
+ "notifications_no_subscriptions_title": "Схоже, у вас ще немає жодної підписки.",
+ "publish_dialog_drop_file_here": "Перетягніть файл сюди",
+ "notifications_none_for_topic_title": "Ви ще не отримували сповіщення на цю тему.",
+ "notifications_example": "Приклад",
+ "notifications_none_for_any_description": "Щоб надіслати сповіщення до теми, просто надішліть PUT або POST на URL-адресу теми. Ось приклад, використовуючи одну з ваших тем.",
+ "publish_dialog_attachment_limits_file_and_quota_reached": "перевищує {{fileSizeLimit}} розмір файлу, {{remainingBytes}} залишилося",
+ "publish_dialog_priority_default": "Пріоритет за замовчуванням",
+ "publish_dialog_attachment_limits_file_reached": "перевищує {{fileSizeLimit}} розмір файлу",
+ "publish_dialog_priority_min": "Мін. пріоритет",
+ "publish_dialog_priority_high": "Високий пріоритет",
+ "publish_dialog_priority_max": "Макс. пріоритет",
+ "publish_dialog_base_url_placeholder": "URL-адреса сервісу, наприклад https://example.com",
+ "publish_dialog_base_url_label": "URL служби",
+ "publish_dialog_other_features": "Інші можливості:",
+ "publish_dialog_chip_attach_file_label": "Прикріпити локальний файл",
+ "publish_dialog_priority_label": "Пріоритет",
+ "publish_dialog_click_label": "Натисніть URL",
+ "publish_dialog_click_reset": "Видалити URL-адресу для натискання",
+ "publish_dialog_email_placeholder": "Адреса для пересилання сповіщення, наприклад phil@example.com",
+ "publish_dialog_attach_label": "URL-адреса вкладення",
+ "publish_dialog_filename_label": "Ім'я файлу",
+ "publish_dialog_delay_label": "Затримка",
+ "publish_dialog_email_reset": "Видалити пересилання електронної пошти",
+ "publish_dialog_chip_attach_url_label": "Прикріпити файл за URL",
+ "publish_dialog_details_examples_description": "Приклади та докладний опис усіх функцій, зверніться до документації.",
+ "publish_dialog_button_cancel_sending": "Скасувати відправку",
+ "publish_dialog_attached_file_filename_placeholder": "Ім'я прикріпленого файлу",
+ "publish_dialog_delay_placeholder": "Затримка доставлення, наприклад {{unixTimestamp}}, {{relativeTime}} або \"{{naturalLanguage}}\" (лише англійською)",
+ "publish_dialog_button_send": "Надіслати",
+ "publish_dialog_checkbox_publish_another": "Опублікувати ще",
+ "publish_dialog_chip_delay_label": "Затримка доставлення",
+ "publish_dialog_button_cancel": "Скасувати",
+ "publish_dialog_attached_file_title": "Прикріплений файл:",
+ "subscribe_dialog_subscribe_description": "Теми можуть не бути захищені паролем, тому виберіть назву, яку нелегко вгадати. Після підписки ви можете PUT/POST сповіщення.",
+ "emoji_picker_search_placeholder": "Пошук емодзі",
+ "emoji_picker_search_clear": "Очистити пошук",
+ "subscribe_dialog_subscribe_title": "Підпишіться на тему",
+ "subscribe_dialog_login_username_label": "Ім'я користувача, наприклад phil",
+ "prefs_notifications_title": "Сповіщення",
+ "subscribe_dialog_subscribe_button_cancel": "Скасувати",
+ "subscribe_dialog_subscribe_button_subscribe": "Підписатися",
+ "subscribe_dialog_error_user_anonymous": "анонімний",
+ "subscribe_dialog_login_title": "Потрібна авторизація",
+ "subscribe_dialog_login_description": "Ця тема захищена паролем. Будь ласка, введіть ім'я користувача та пароль, щоб підписатися.",
+ "prefs_notifications_sound_title": "Звук сповіщення",
+ "subscribe_dialog_login_button_login": "Логін",
+ "prefs_notifications_sound_no_sound": "Без звука",
+ "prefs_notifications_sound_play": "Відтворення вибраного звуку",
+ "prefs_users_description": "Додайте/видаляйте користувачів для захищених тем. Зверніть увагу, що ім'я користувача та пароль зберігаються у локальному сховищі браузера.",
+ "prefs_notifications_min_priority_title": "Мінімальний пріоритет",
+ "prefs_notifications_min_priority_high_and_higher": "Високий пріоритет і вище",
+ "prefs_notifications_min_priority_description_x_or_higher": "Показувати сповіщення, якщо пріоритет {{number}} ({{name}}) або вище",
+ "prefs_notifications_min_priority_description_max": "Показувати сповіщення, якщо пріоритет 5 (макс.)",
+ "prefs_notifications_min_priority_low_and_higher": "Низький та високий пріоритет",
+ "prefs_notifications_min_priority_max_only": "Тільки максимальний пріоритет",
+ "prefs_users_table_base_url_header": "URL служби",
+ "prefs_users_dialog_password_label": "Пароль",
+ "prefs_notifications_delete_after_three_hours": "Через три години",
+ "prefs_users_add_button": "Додати користувача",
+ "prefs_users_dialog_title_edit": "Редагувати користувача",
+ "prefs_users_dialog_base_url_label": "URL-адреса служби, наприклад https://ntfy.sh",
+ "prefs_users_delete_button": "Видалити користувача",
+ "prefs_users_table_user_header": "Користувач",
+ "prefs_users_dialog_title_add": "Додати користувача",
+ "prefs_users_dialog_username_label": "Ім'я користувача, наприклад phil",
+ "prefs_users_dialog_button_cancel": "Скасувати",
+ "prefs_users_dialog_button_add": "Додати",
+ "prefs_appearance_language_title": "Мова",
+ "error_boundary_gathering_info": "Зберіть більше інформації…",
+ "priority_min": "мін",
+ "error_boundary_description": "Очевидно, цього не повинно статися. Дуже шкода.
Якщо у вас є хвилина, повідомте про це на GitHub або повідомте нам через Discord або Matrix .",
+ "priority_low": "низький",
+ "error_boundary_stack_trace": "Трасування стека",
+ "error_boundary_unsupported_indexeddb_title": "Приватний перегляд не підтримується",
+ "error_boundary_unsupported_indexeddb_description": "Веб-програма ntfy потребує IndexedDB для роботи, а ваш браузер не підтримує IndexedDB у режимі приватного перегляду.
На жаль, використання ntfy web не має сенсу у режимі приватного перегляду, оскільки все зберігається в пам’яті браузера. Ви можете прочитати більше про це у цьому випуску GitHub або поспілкуватися з нами на Discord або Matrix."
+}