Newer
Older
navi-1 / webclient / src / i18n / messages / uk.js
// Український інтерфейс Navi. Слаги ті самі, що в en.js, — словник читається за
// ними, а не за порядком рядків. Назви продуктів (Navi, Synapse, MCP, Ollama,
// GitHub…) не перекладаються: це і є назва. Форми множини вибираються за
// params.n, тому в числових рядків тут чотири ключі замість двох.
export default {
  // оболонка застосунку — заголовки документа та інше поза самим чатом
  'app.titleSettings': 'Navi — Налаштування',

  // панель артефактів — опубліковані файли, посилання, файли сесії, фонові
  'artifacts.panelLabel': 'Артефакти сесії',
  'artifacts.resize': 'Змінити ширину панелі',
  'artifacts.close': 'Закрити артефакти',
  'artifacts.closeDetails': 'Закрити подробиці',
  'artifacts.tabArtifacts': 'Артефакти',
  'artifacts.tabLinks': 'Посилання',
  'artifacts.tabFiles': 'Файли',
  'artifacts.tabBackgrounds': 'Фонові',
  'artifacts.viewedImages': 'Переглянуті зображення',
  'artifacts.viewedImageAlt': 'Зображення, яке переглянув Navi {n}',
  'artifacts.emptyArtifacts': 'Немає опублікованих файлів',
  'artifacts.emptyLinks': 'Посилань поки не знайдено',
  'artifacts.emptyFiles': 'У каталозі сесії немає файлів',
  'artifacts.emptyBackgrounds': 'Немає фонових завдань і терміналів',
  'artifacts.openPreview': 'Відкрити перегляд',
  'artifacts.openRaw': 'Відкрити вихідний файл',
  'artifacts.openInline': 'Відкрити у браузері',
  'artifacts.showPreview': 'Показати перегляд',
  'artifacts.showSource': 'Показати вихідний код',
  'artifacts.copyFileLink': 'Скопіювати посилання на файл',
  'artifacts.copyAllLinks': 'Скопіювати всі посилання',
  'artifacts.openAllLinks': 'Відкрити всі посилання',
  'artifacts.refreshFiles': 'Оновити файли',
  'artifacts.linksInSession': {
    one: '{n} посилання в сесії',
    few: '{n} посилання в сесії',
    many: '{n} посилань у сесії',
  },
  'artifacts.loadingSource': 'Завантаження вихідного коду...',
  'artifacts.previewUnavailable': 'Перегляд недоступний',
  'artifacts.sourceFailed': 'Не вдалося завантажити вихідний код: {error}',
  'artifacts.latestProgress': 'Хід виконання',
  'artifacts.noOutput': 'Виводу ще немає — він надійде нотаткою наступного ходу.',
  'artifacts.terminal': 'Термінал',
  'artifacts.directory': 'Каталог',
  'artifacts.toolAndAge': '{tool} · {age} тому',
  'artifacts.statusRunning': 'Виконується',
  'artifacts.statusDone': 'Готово',
  'artifacts.statusFailed': 'Збій',
  'artifacts.statusStopped': 'Зупинено',
  'artifacts.statusBusy': 'Зайнятий',
  'artifacts.statusIdle': 'Вільний',
  'artifacts.statusClosed': 'Закрито',

  // спільна лексика, повторюється всюди, де сенс той самий

  // бічна панель — розмови, смуга профілів, підпис унизу
  'sidebar.newChat': 'Новий чат',
  'sidebar.searchPlaceholder': 'Пошук за розмовами...',
  'sidebar.results': {
    one: '{n} результат',
    few: '{n} результати',
    many: '{n} результатів',
  },
  'sidebar.conversations': 'Розмови',
  'sidebar.serviceSessions': 'Службові сесії',
  'sidebar.pendingRecallsOnly': 'Лише із запланованим поверненням',
  'sidebar.serviceSessionsLabel': 'Службові сесії (Synapse)',
  'sidebar.search': 'Пошук',
  'sidebar.refresh': 'Оновити',
  'sidebar.loadingConversations': 'Завантаження розмов...',
  'sidebar.noConversations': 'Розмов ще немає',
  'sidebar.noMatch': 'Жодна розмова не відповідає фільтру',
  'sidebar.pinned': 'Закріплено',
  'sidebar.recallPending': 'Заплановано повернення до розмови',
  'sidebar.serviceSession': 'Службова сесія (реакція Synapse)',
  'sidebar.cancelRecall': 'Скасувати повернення',
  'sidebar.skipNext': 'Пропустити наступний',
  'sidebar.pin': 'Закріпити',
  'sidebar.unpin': 'Відкріпити',
  'sidebar.noAuthTitle': 'Авторизацію вимкнено',
  'sidebar.localMode': 'Локальний режим',
  'sidebar.localAvatar': 'локальний',
  'sidebar.admin': 'Адмін',
  'sidebar.openProfile': 'Відкрити профіль у gnexus-auth',
  'sidebar.avatar': 'аватар',
  'sidebar.logout': 'Вийти',
  'sidebar.login': 'Увійти',

  'common.error': 'Щось пішло не так',
  'common.menu': 'Меню',
  'common.save': 'Зберегти',
  'common.cancel': 'Скасувати',
  'common.close': 'Закрити',
  'common.create': 'Створити',
  'common.add': 'Додати',
  'common.done': 'Готово',
  'common.never': 'Ніколи',
  'common.always': 'Завжди',
  'common.you': 'Ви',
  'common.revoke': 'Відкликати',
  'common.copyToClipboard': 'Копіювати в буфер обміну',
  'common.copy': 'Копіювати',
  'common.copied': 'Скопійовано!',
  'common.task': 'завдання',
  'common.toolsCount': {
    one: '{n} інструмент',
    few: '{n} інструменти',
    many: '{n} інструментів',
  },

  'common.download': 'Завантажити',
  'common.yes': 'Так',
  'common.no': 'Ні',
  'common.notAvailable': 'Н/Д',
  'common.result': 'Результат',
  'common.liveOutput': 'Живий вивід',

  'common.delete': 'Видалити',
  'common.minutesAgo': {
    one: '{n} хв тому',
    few: '{n} хв тому',
    many: '{n} хв тому',
  },
  'common.pullToRefresh': 'Потягніть, щоб оновити',
  'common.releaseToRefresh': 'Відпустіть, щоб оновити',
  'common.refreshing': 'Оновлення...',
  'common.justNow': 'щойно',

  // область повідомлень — з чого складається повідомлення і що робить агент
  'messages.thinking': 'Роздум',
  'messages.thinkingStatus': 'Розмірковує…',
  'messages.plan': 'План',
  'messages.arguments': 'Аргументи',
  'messages.running': 'виконується',
  'messages.starting': 'запуск',
  'messages.runningTool': 'Виконується {tool}…',
  'messages.preparingNext': 'Готує наступну дію…',
  'messages.showAllTools': 'Показати всі інструменти',
  'messages.hideOlderTools': 'Сховати попередні інструменти',
  'messages.useful': 'Корисно',
  'messages.notUseful': 'Не корисно',
  'messages.scheduledRecall': 'Заплановане повернення',
  'messages.synapseEvent': 'Подія Synapse',
  'messages.openFile': 'Відкрити файл',
  'messages.untitledContent': 'Вміст',
  'messages.unknownUiComponent': 'Невідомий UI-компонент: {name}',
  'messages.jsonItems': {
    one: '{n} елемент',
    few: '{n} елементи',
    many: '{n} елементів',
  },
  'messages.jsonKeys': {
    one: '{n} ключ',
    few: '{n} ключі',
    many: '{n} ключів',
  },
  'messages.contextSummary': 'Підсумок контексту',
  'messages.compressingContext': 'Стискання контексту…',
  'messages.contextCompressed': 'Контекст стиснуто',
  'messages.compressionCounts': {
    one: '({before} → {after} повідомлення)',
    few: '({before} → {after} повідомлення)',
    many: '({before} → {after} повідомлень)',
  },

  // область чату — шапка, список і панель введення під ним
  'chat.rename': 'Перейменувати',
  'chat.scheduledRecall': 'Заплановано {type} повернення на {time}',
  'chat.recallOnce': 'разове',
  'chat.recallRecurring': 'повторюване',
  'chat.recallImmediate': 'негайне',
  'chat.connectionLost': 'Зв’язок втрачено. Перепідключаюся у фоні…',
  'chat.retry': 'Повторити',
  'chat.nothingOpen': 'Нічого не відкрито',
  'chat.startConversation': 'Виберіть розмову або почніть нову',
  'chat.attachFiles': 'Прикріпити файли',
  'chat.messagePlaceholder': 'Повідомлення для Navi…',
  'chat.stopGeneration': 'Зупинити генерацію',
  'chat.sendEnter': 'Надіслати (Enter)',
  'chat.sending': 'Надсилання…',
  'chat.removeAttachment': 'Прибрати',
  'chat.attachment': 'вкладення',
  'chat.loadingOlder': 'Завантажую раніші повідомлення…',
  'chat.scrollToBottom': 'Прокрутити вниз',
  'chat.queued': {
    one: '{n} повідомлення в черзі',
    few: '{n} повідомлення в черзі',
    many: '{n} повідомлень у черзі',
  },
  'chat.queuedHint': 'У черзі, поки триває поточний хід — вони виконаються наступними',

  // дрібні компоненти інтерфейсу — вхід і привітання, діалоги, перегляд
  // фото, сітки карток і форми
  'ui.welcomeTitle': 'Ласкаво просимо до Navi',
  'ui.tagline': 'Ваш персональний ШІ-асистент',
  'ui.loginWithGnexus': 'Увійти через GNEXUS',
  'ui.offline': 'Немає мережі — інтерфейс відкрито з кешу, повідомлення не надсилаються',
  'ui.confirmTitle': 'Потрібне підтвердження',
  'ui.photo': 'Фото',
  'ui.loadImageFailed': 'Не вдалося завантажити зображення',
  'ui.reply': 'Відповісти',
  'ui.replyToSelection': 'Відповісти на виділене',
  'ui.overview': 'Огляд',
  'ui.description': 'Опис',
  'ui.details': 'Деталі',
  'ui.moreCards': '+{n} ще',
  'ui.submitted': 'Надіслано',
  'ui.submit': 'Надіслати',
  'ui.fieldRequired': 'Поле «{field}» обов’язкове',
  'ui.invalidEmail': 'Введіть коректну адресу електронної пошти',
  'ui.invalidUrl': 'Введіть коректну адресу http:// або https://',
  'ui.notANumber': 'Має бути числом',
  'ui.minValue': 'Мінімальне значення — {n}',
  'ui.maxValue': 'Максимальне значення — {n}',
  'ui.minLength': {
    one: 'Мінімальна довжина — {n} символ',
    few: 'Мінімальна довжина — {n} символи',
    many: 'Мінімальна довжина — {n} символів',
  },
  'ui.maxLength': {
    one: 'Максимальна довжина — {n} символ',
    few: 'Максимальна довжина — {n} символи',
    many: 'Максимальна довжина — {n} символів',
  },
  'ui.invalidFormat': 'Невірний формат',

  // колонки таблиць
  'col.name': 'Назва',
  'col.key': 'Ключ',
  'col.created': 'Створено',
  'col.lastUsed': 'Останнє використання',

  'col.tool': 'Інструмент',
  'col.status': 'Статус',
  'col.started': 'Розпочато',
  'col.finished': 'Завершено',
  'col.subagentTokens': 'Токени під-агента',
  'col.pid': 'PID',
  'col.command': 'Команда',
  'col.cwd': 'Робочий каталог',
  'col.uptime': 'Час роботи',
  'col.background': 'Фоновий',
  'col.reason': 'Причина',

  // діалоги підтвердження
  'confirm.revokeKey': 'Відкликати API-ключ «{name}»? Це не можна скасувати.',
  'confirm.revokeTarget': 'Відкликати ціль Synapse «{target}»? Це не можна скасувати.',
  'confirm.mcpResetAdmin': 'Скинути ключ для «{server}» на спільний за замовчуванням?',

  'confirm.deleteSession': 'Видалити цю розмову?',
  'confirm.mcpReset':
    'Видалити ваш ключ для «{server}»? Сервер перестане бути підключеним для вас.',

  // сам акаунт
  'profile.languageAuto': 'Авто (з акаунта)',
  // Мова завжди пишеться сама собою, тому ці три рядки однакові в усіх
  // словниках і перекладу не підлягають.
  'profile.langEn': 'English',
  'profile.langUk': 'Українська',
  'profile.langRu': 'Русский',

  // сповіщення-тости — заголовок, іноді рядок тексту під ним
  'toast.languageSaved': 'Мову збережено',
  'toast.keyCreateFailed': 'Не вдалося створити ключ',
  'toast.keyRevoked': 'API-ключ відкликано',
  'toast.keyRevokeFailed': 'Не вдалося відкликати ключ',
  'toast.notificationsDenied': 'Дозвіл не надано',
  'toast.notificationsAllowApp': 'Дозвольте сповіщення в системних налаштуваннях застосунку.',
  'toast.notificationsAllowBrowser': 'Дозвольте сповіщення в налаштуваннях сайту в браузері.',
  'toast.notificationsUnavailable': 'Push недоступний',
  'toast.notificationsUnavailableText': 'Сервер зараз не приймає підписки на push.',
  'toast.notificationsFailed': 'Помилка push',
  'toast.mcpKeySaved': 'Ключ збережено для {server}',
  'toast.mcpKeySaveFailed': 'Не вдалося зберегти ключ',
  'toast.mcpKeyReset': 'Ключ скинуто для {server}',
  'toast.mcpKeyResetFailed': 'Не вдалося скинути ключ',
  'toast.synapseTargetAdded': 'Ціль додано',
  'toast.synapseTargetAddFailed': 'Не вдалося додати ціль',
  'toast.synapseTargetRevoked': 'Ціль відкликано',
  'toast.synapseTargetRevokeFailed': 'Не вдалося відкликати ціль',
  'toast.reactionsLoadFailed': 'Не вдалося завантажити налаштування реакцій',
  'toast.bgTaskStarted': 'Фонове завдання запущено',
  'toast.bgTaskFinished': 'Фонове завдання завершено',
  'toast.mcpConnected': 'MCP-сервер підключено',
  'toast.mcpDisconnected': 'MCP-сервер відключено',
  'toast.saveFailed': 'Не вдалося зберегти',
  'toast.instructionsSaved': 'Інструкції збережено',
  'toast.instructionsFailed': 'Не вдалося зберегти інструкції',
  'toast.toolsReloaded': {
    one: 'Перезавантажено {n} інструмент',
    few: 'Перезавантажено {n} інструменти',
    many: 'Перезавантажено {n} інструментів',
  },
  'toast.toolsReloadErrors': 'Перезавантаження завершилося помилками — дивіться панель',
  'toast.toolsReloadFailed': 'Не вдалося перезавантажити інструменти',

  // налаштування — оболонка, далі по блоку на вкладку
  'settings.title': 'Налаштування',
  'settings.sectionsLabel': 'Розділи налаштувань',
  'settings.tabApp': 'Застосунок',
  'settings.tabAccount': 'Акаунт',
  'settings.tabNotifications': 'Сповіщення',
  'settings.tabSynapse': 'Synapse',
  'settings.tabMcp': 'MCP',

  'settings.languageToolbar': 'Мова інтерфейсу',
  'settings.languageDescription':
    'Стандартно Navi наслідує мову вашого акаунта gnexus-auth; вибір тут перекриває її лише для Navi. «Авто» повертає мову акаунта.',
  'settings.languageDescriptionOpen':
    'Вхід у цей Navi вимкнено, тому мова зберігається лише в цьому браузері.',

  // налаштування — «Застосунок»
  'settings.appTitle': 'Застосунок',
  'settings.appDescription':
    'Navi — це вебзастосунок, але він може жити на пристрої як звичайний: або встановлений у цей браузер, або як Android-застосунок, що обгортає той самий інтерфейс. Це не взаємовиключні варіанти: на телефоні варто мати Android-застосунок, а всюди інде — встановлений вебзастосунок.',
  'settings.appInstallTitle': 'Встановлення в цей браузер',
  'settings.appInstallText':
    'Встановлення розміщує Navi в окремому вікні без адресного рядка, додає значок у док або на початковий екран і кешує інтерфейс, тож застосунок відкривається миттєво й показує сесії навіть без мережі. Воно ж вмикає сповіщення про готові відповіді — зокрема коли вкладку закрито.',
  'settings.appAndroidAlert':
    'Ви читаєте це всередині Android-застосунку, і він уже встановлений. Щоб оновити його, завантажте APK нижче й установіть поверх старого.',
  'settings.appInstalledAlert':
    'Встановлено — Navi працює в окремому вікні, а не у вкладці браузера.',
  'settings.appInstallAction': 'Встановити',
  'settings.appInstallHint': 'Браузер попросить підтвердити.',
  'settings.appBrowserSafari': 'Safari:',
  'settings.appIosTap': 'натисніть',
  'settings.appIosShare': '«Поділитися», потім',
  'settings.appIosAddHome': 'На початковий екран',
  'settings.appIosNote':
    'Сповіщення там потребують iOS 16.4 або новішої і працюють лише у встановленому застосунку, а не у вкладці Safari.',
  'settings.appBrowserChrome': 'Chrome або Edge:',
  'settings.appChromeClick':
    'натисніть значок встановлення в правому кінці адресного рядка або відкрийте',
  'settings.appChromeMenu': 'меню і виберіть',
  'settings.appChromeInstall': 'Установити Navi',
  'settings.appBrowserAndroid': 'Android:',
  'settings.appAndroidOpen': 'відкрийте',
  'settings.appAndroidMenu': 'меню і виберіть',
  'settings.appAndroidInstall': 'Установити застосунок',
  'settings.appAndroidAlso': '(іноді «На головний екран»)',
  'settings.appHttpsBefore':
    'Браузери пропонують це лише через HTTPS або на localhost — за звичайною адресою',
  'settings.appHttpsAfter':
    'такої можливості не з’явиться, як і офлайн-режиму зі сповіщеннями.',
  'settings.appAndroidTitle': 'Android-застосунок',
  'settings.appAndroidText':
    'Той самий Navi у нативній оболонці. Те, чого не дасть вкладка браузера: сповіщення при заблокованому телефоні — фонова служба тримає з’єднання відкритим — плюс нативна камера й вибір фото, а посилання відкриваються у звичайному браузері. Сесії, профілі та налаштування живуть на сервері, тож застосунок і вебклієнт не розходяться.',
  'settings.appApkMissing': 'APK не опубліковано на цьому сервері — зберіть його командою',
  'settings.appVersion': 'Версія',
  'settings.appSize': 'Розмір',
  'settings.appBuilt': 'Збірка',
  'settings.appDownloadApk': 'Завантажити APK',
  'settings.appAndroidStep1':
    'Відкрийте завантажений файл на телефоні. Android запитає, чи дозволити встановлення застосунків із цього джерела, — дозвольте.',
  'settings.appAndroidStep2': 'При першому запуску застосунок запитає адресу Navi. Введіть',
  'settings.appAndroidStep2Tail':
    ', потім увійдіть через браузер, коли він відкриється; застосунок повернеться сам.',
  'settings.appAndroidStep3':
    'Новіший APK встановлюється поверх старого й зберігає налаштування. Видаляти попередню версію довелося б лише в разі зміни ключа підпису.',

  // налаштування — API-ключі
  'settings.keysTitle': 'API-ключі',
  'settings.keysCreate': 'Новий ключ',
  'settings.keysDescription':
    'API-ключі дозволяють безголовим клієнтам (скриптам, голосовим помічникам, пристроям IoT) автентифікуватися без OAuth у браузері.',
  'settings.keysNoAuthWarning':
    'Авторизацію зараз вимкнено. Будь-які створені тут ключі прив’язані до локального анонімного користувача й дають повний доступ до цього примірника Navi.',
  'settings.keysLoading': 'Завантаження API-ключів',
  'settings.keysEmpty': 'API-ключів ще немає. Створіть перший, щоб почати.',
  'settings.keyCreateTitle': 'Створення API-ключа',
  'settings.keyNamePlaceholder': 'наприклад, Розумний годинник, Скрипт автоматизації',
  'settings.keyCreatedTitle': 'API-ключ створено',
  'settings.keyCopyNow': 'Скопіюйте цей токен зараз — він',
  'settings.keyCopyNowStrong': 'більше не буде показаний',

  // налаштування — сповіщення
  'settings.notificationsTitle': 'Сповіщення',
  'settings.notificationsBridgeText':
    'Застосунок тримає з’єднання відкритим у фоні й показує системне сповіщення, коли відповідь готова, а Navi згорнуто. Якщо закрити сам застосунок, сповіщення припиняться.',
  'settings.notificationsWebText':
    'Push-сповіщення дають Navi змогу повідомити вас про готову відповідь — навіть коли вкладку закрито. На кожну готову відповідь надходить одне сповіщення, але лише якщо жодне вікно Navi не відкрите на цій сесії.',
  'settings.notificationsUnsupported':
    'Цей браузер не підтримує web push (потрібні HTTPS, service worker і Push API). Спробуйте Chrome або свіжий Firefox.',
  'settings.notificationsRowTitle': 'Push-сповіщення',
  'settings.notificationsOnBackground':
    'Увімкнено — фоновий режим тримає з’єднання, поки застосунок згорнуто.',
  'settings.notificationsOn': 'Увімкнено — цей пристрій підписано.',
  'settings.notificationsBlockedApp': 'Заблоковано в системних налаштуваннях застосунку.',
  'settings.notificationsBlockedBrowser': 'Заблоковано в налаштуваннях сайту в браузері.',
  'settings.notificationsOff': 'Вимкнено.',

  // налаштування — MCP-сервери
  'settings.mcpTitle': 'MCP-сервери',
  'settings.mcpDescriptionAdmin':
    'Усе, що підключено до ваших профілів. Сервер зі слотом особистого ключа працює під вашим ключем — не задавайте свій, і він далі використовуватиме спільний ключ, налаштований на цьому Navi.',
  'settings.mcpDescription':
    'Усе, що підключено до ваших профілів. Серверу зі слотом особистого ключа потрібен',
  'settings.mcpDescriptionStrong': 'ваш власний ключ',
  'settings.mcpDescriptionTail':
    '— доки ви його не збережете, для вас він не підключений узагалі. Сервери без слота спільні й доступні завжди.',
  'settings.mcpLoading': 'Завантаження MCP-серверів',
  'settings.mcpEmpty': 'До цього Navi не підключено жодного MCP-сервера в жодному профілі.',
  'settings.mcpKeySet':
    'Особистий ключ збережено {date} — використовується замість спільного ({location}).',
  'settings.mcpKeyAbsentAdmin':
    'Особистого ключа немає — використовується спільний ключ із конфігурації ({location}).',
  'settings.mcpKeyAbsent': 'Особистого ключа немає — цей сервер для вас не підключено.',
  'settings.mcpNoSlot': 'Слота особистого ключа немає — працює на спільній конфігурації.',
  'settings.mcpKeyPlaceholder': '••• збережено — введіть новий ключ, щоб замінити',
  'settings.mcpKeyPlaceholderNew': 'Вставте ваш ключ',
  'settings.mcpReset': 'Скинути на спільний',

  // налаштування — доставки Synapse
  'settings.synapseTargetsTitle': 'Доставки Synapse',
  'settings.synapseTargetAdd': 'Додати ціль',
  'settings.synapseTargetsDescription':
    'Доставки з хаба сповіщень GNEXUS Synapse надходять на вебхук цього Navi й перевіряються за особистим секретом цілі. Створіть ціль в адмін-панелі Synapse, потім зареєструйте її тут, щоб Navi приймав її доставки.',
  'settings.synapseTargetsLoading': 'Завантаження цілей',
  'settings.synapseTargetsEmpty':
    'Жодної цілі Synapse не зареєстровано. Додайте її, щоб почати приймати доставки.',
  'settings.synapseTargetColRef': 'Ідентифікатор цілі',
  'settings.synapseTargetAddTitle': 'Додавання цілі Synapse',
  'settings.synapseTargetRefPlaceholder': 'наприклад, navi-main (як в адмін-панелі Synapse)',
  'settings.synapseTargetSecret': 'Секрет доставки',
  'settings.synapseTargetSecretPlaceholder': 's2s-секрет цілі Synapse',
  'settings.synapseTargetHintBefore': 'В адмін-панелі Synapse створіть ціль, що вказує на',
  'settings.synapseTargetHintAfter':
    'цього Navi, і вставте її секрет тут. Navi використовує його, щоб переконатися, що доставки справді надійшли із Synapse.',

  // налаштування — реакції Synapse
  'settings.reactionsTitle': 'Реакції Synapse',
  'settings.reactionsDescription':
    'Коли надходить подія GNEXUS Synapse, Navi може відреагувати сам: диспетчер обирає профіль за вашими інструкціями, робота йде у прихованій службовій сесії, а переглянути її потім можна через перемикач «Службові сесії» в бічній панелі.',
  'settings.reactionsNotConfigured':
    'Інтеграцію із Synapse не налаштовано на цьому Navi: варіанти, що надсилають події в Synapse, вимкнено. Доставка лише в застосунок працює далі.',
  'settings.reactionsLoading': 'Завантаження налаштувань реакцій',
  'settings.reactionsEnable': 'Увімкнути реакції',
  'settings.reactionsOn': 'Події, що надійшли, запускають фоновий прогін реакції.',
  'settings.reactionsOff': 'Події приймаються й записуються в журнал, але Navi нічого не робить.',
  'settings.reactionsNotify': 'Повідомляти про завершені реакції',
  'settings.reactionsOnlyFailures': 'Лише збої',
  'settings.reactionsPushAlways': 'Push після кожного завершеного прогону.',
  'settings.reactionsPushFailures': 'Push лише коли прогін закінчився помилками.',
  'settings.reactionsPushNever': 'Не надсилати push про завершення.',
  'settings.reactionsTarget': 'Куди йдуть сповіщення',
  'settings.reactionsTargetNote':
    'Стосується інструмента notify у Navi та push про завершення реакцій.',
  'settings.reactionsTargetApp': 'Лише в застосунок',
  'settings.reactionsTargetAppSynapse': 'Застосунок + Synapse',
  'settings.reactionsTargetSynapse': 'Лише Synapse',
  'settings.reactionsInstructions': 'Інструкції для реакцій',
  'settings.reactionsInstructionsNote':
    'Вказівки, за якими диспетчер обирає профіль і будує задачу. Їх можете правити і ви, і Navi; кожна зміна потрапляє в історію нижче.',
  'settings.reactionsInstructionsPlaceholder':
    'наприклад, «Події todo з gntodo йдуть у профіль developer; спам-листи — нікуди».',
  'settings.reactionsInstructionsSave': 'Зберегти інструкції',
  'settings.reactionsHistory': 'Історія правок',
  'settings.reactionsSessionTtl': 'Продовжувати розмову',
  'settings.reactionsSessionTtlNote':
    'Коли диспетчер називає розмову в події, Navi продовжує ту саму сесію замість нової — якщо вона була активна не пізніше цього строку. 0 вимикає продовження.',
  'settings.reactionsSessionTtlUnit': 'хвилин простою',
  'settings.dispatcherInstructions': 'Розподіл подій за профілями',
  'settings.dispatcherInstructionsNote':
    'Вказівки лише для диспетчера: який тип події до якого профілю йде і що вважати однією розмовою (ключ розмови). У сесію та в задачу вони не потрапляють.',
  'settings.dispatcherInstructionsPlaceholder':
    'наприклад, «tg.* → secretary, ключ = id чату; gntodo.* → developer, не продовжувати ніколи».',
  'settings.dispatcherInstructionsSave': 'Зберегти інструкції диспетчеру',

  // налаштування — інструменти (лише для адміна)
  'settings.adminToolsTitle': 'Інструменти',
  'settings.adminToolsReloading': 'Перезавантаження…',
  'settings.adminToolsReload': 'Перезавантажити інструменти',
  'settings.adminToolsDescriptionBefore': 'Перечитує інструменти з',
  'settings.adminToolsDescriptionAfter':
    ', провайдери контексту й перепідключає всі MCP-сервери — без перезапуску й простою. Нові інструменти можна викликати з наступного повідомлення в будь-якій сесії. Лише для адміна: підміняє набір інструментів, з яким працюють усі профілі.',
  'settings.adminToolsLoaded': {
    one: 'завантажено {n} інструмент',
    few: 'завантажено {n} інструменти',
    many: 'завантажено {n} інструментів',
  },
  'settings.adminToolsRegistry': '({n} у реєстрі)',
  'settings.adminToolsMissing':
    'називає {names} — такого інструменту немає, його виключено з усіх профілів.',
  'settings.adminToolsMcpFailed': 'Перепідключення MCP не вдалося: {error}',
  'settings.adminToolsMcpTools': {
    one: '{n} MCP-інструмент',
    few: '{n} MCP-інструменти',
    many: '{n} MCP-інструментів',
  },
  'settings.adminToolsProviders': {
    one: '{n} провайдер контексту',
    few: '{n} провайдери контексту',
    many: '{n} провайдерів контексту',
  },
}