RSS Git Download  Clone
Raw Blame History 62kB 1091 lines
const strings = {
  error: {
    server_error: "Помилка сервера, будь ласка, спробуйте ще раз",
    aiPromptTooLong: "Запит AI занадто довгий (максимум 4096 символів)",
  },
  title: {
    donate: "Пожертвувати",
    donateTitle: "Підтримайте P3X Redis UI",
    donateDescription: "P3X Redis UI — безкоштовний проєкт з відкритим кодом. Витрати на підтримку додатку, функцій AI, образів Docker, серверів та інфраструктури оплачуються з власної кишені розробника. Якщо ви вважаєте цей інструмент корисним, будь ласка, підтримайте його подальший розвиток пожертвою. Кожен внесок допомагає проєкту жити та рости. Дякуємо!",
    jsonRecursive: "Розгортання всіх гілок",
    name: "P3X Redis UI",
    nameDonated: "P3X Redis UI+",
    main: "Ви можете вибрати Redis-з'єднання для підключення з меню внизу зліва.",
    statistics: "Статистика",
    error: "Помилка",
    connectingRedis: "Підключення до Redis ...",
    socketioConnectError: "Помилка Socket.IO",
    db: "DB",
    server: "Сервер",
    clients: "Клієнти",
    memory: "Пам'ять",
    persistence: "Збереження",
    stats: "Статистика",
    replication: "Реплікація",
    cpu: "CPU",
    cluster: "Cluster",
    modules: "Модулі",
    errorstats: "Статистика помилок",
    commandstats: "Статистика команд",
    latencystats: "Статистика затримок",
    keysizes: "Розміри ключів",
    threads: "Потоки"
  },
  confirm: {
    dropIndex: "Ви впевнені, що хочете видалити цей індекс?",
    uploadBuffer: "Ви впевнені, що хочете завантажити ці бінарні дані?",
    uploadBufferDone: "Бінарні дані завантажено",
    uploadBufferDoneAndSave: "Бінарні дані завантажено та збережено на сервері",
    title: "Підтвердити",
    alert: "Попередження",
    info: "Інформація",
    deleteListItem: "Ви впевнені, що хочете видалити цей елемент списку?",
    deleteHashKey: "Ви впевнені, що хочете видалити цей хеш-ключ?",
    deleteStreamTimestamp: "Ви впевнені, що хочете видалити цю мітку часу потоку?",
    deleteSetMember: "Ви впевнені, що хочете видалити цього члена множини?",
    deleteZSetMember: "Ви впевнені, що хочете видалити цього члена впорядкованої множини?",
    deleteConnection: "Підтвердити",
    deleteConnectionText: "Ви впевнені, що хочете видалити це Redis-з'єднання?",
    deleteNode: "Ви впевнені, що хочете видалити цей Redis-вузол?",
    deleteAllKeys: opts => {
      return `Видалити це дерево та всі його ключі (${opts.key})?`;
    },
    deleteSearchKeys: opts => {
      return `Ви впевнені, що хочете видалити всі ключі, які відповідають "${opts.pattern}"? Знайдено ${opts.count} ключів.`;
    },
    socketioConnectError: "Socket.IO не може підключитися до сервера, ви можете перезавантажити та спробувати вирішити помилку підключення самостійно, клієнт не знає, як її вирішити.",
    socketioAuthRequired: "Потрібна авторизація Socket.IO. Будь ласка, автентифікуйтесь за допомогою HTTP Basic Auth (ім'я користувача/пароль) та перезавантажте.",
    invalidCredentials: "Невірне ім'я користувача або пароль.",
    delete: "Видалити?",
    deleteKey: "Ви впевнені, що хочете видалити цей ключ?",
    rename: {
      title: "Ви впевнені, що хочете перейменувати цей ключ?",
      textContent: "Ця дія перейменовує ключ назавжди.",
      placeholder: "Redis-ключ (обов'язковий)"
    },
    ttl: {
      title: "Ви впевнені, що хочете змінити TTL цього ключа?",
      textContent: "Зміна TTL оновлює час життя цього ключа. Залиште порожнім, щоб зберегти ключ назавжди.",
      placeholder: "TTL Redis-ключа (ціле число або порожнє)",
      placeholderPlaceholder: "Порожнє означає, що він зберігається назавжди; інакше введіть ціле число.",
      convertTextToTime: "Конвертувати текст у час",
      convertTextToTimePlaceholder: "Напр. 1d буде 86400"
    }
  },
  language: {
    bg: "Български / Bulgarian",
    cs: "Čeština / Czech",
    de: "Deutsch / German",
    el: "Ελληνικά / Greek",
    en: "English",
    es: "Español / Spanish",
    fr: "Français / French",
    hu: "Magyar / Hungarian",
    it: "Italiano / Italian",
    ja: "日本語 / Japanese",
    nl: "Nederlands / Dutch",
    pl: "Polski / Polish",
    "pt-PT": "Português / Portuguese",
    ro: "Română / Romanian",
    ru: "Русский / Russian",
    sk: "Slovenčina / Slovak",
    sr: "Српски / Serbian",
    sv: "Svenska / Swedish",
    tr: "Türkçe / Turkish",
    uk: "Українська / Ukrainian",
    zn: "中文 / Chinese",
    ar: "العربية / Arabic",
    az: "Azərbaycanca / Azerbaijani",
    be: "Беларуская / Belarusian",
    bn: "বাংলা / Bengali",
    da: "Dansk / Danish",
    et: "Eesti / Estonian",
    fi: "Suomi / Finnish",
    fil: "Filipino / Filipino",
    he: "עברית / Hebrew",
    hr: "Hrvatski / Croatian",
    hy: "Հայերեն / Armenian",
    id: "Bahasa Indonesia / Indonesian",
    ka: "ქართული / Georgian",
    kk: "Қазақша / Kazakh",
    km: "ខ្មែរ / Khmer",
    ko: "한국어 / Korean",
    ky: "Кыргызча / Kyrgyz",
    lt: "Lietuvių / Lithuanian",
    mk: "Македонски / Macedonian",
    ms: "Bahasa Melayu / Malay",
    ne: "नेपाली / Nepali",
    no: "Norsk / Norwegian",
    "pt-BR": "Português (Brasil) / Portuguese (Brazil)",
    sl: "Slovenščina / Slovenian",
    tg: "Тоҷикӣ / Tajik",
    th: "ไทย / Thai",
    vi: "Tiếng Việt / Vietnamese",
    "zh-HK": "中文(香港) / Chinese (Hong Kong)",
    "zh-TW": "中文(台灣) / Chinese (Taiwan)",
    bs: 'Bosanski / Bosnian',
    si: 'සිංහල / Sinhala',
    sw: 'Kiswahili / Swahili',
    ta: 'தமிழ் / Tamil'
  },
  intention: {
    copy: "Копіювати",
    downloadBuffer: "Завантажити бінарний файл",
    setBuffer: "Вивантажити бінарний файл",
    exportKeys: "Експорт ключів",
    exportAllKeys: (opts) => `Експорт усіх ${opts.count} ключів`,
    exportSearchResults: (opts) => `Експорт ${opts.count} результатів`,
    deleteAllKeysMenu: (opts) => `Видалити все ${opts.count}`,
    importKeys: "Імпорт ключів",
    deleteSearchKeys: (opts) => `Видалити ${opts.count} відповідних ключів`,
    saveWithFormatJson: "Зберегти з форматуванням",
    formatJson: "Форматувати Json",
    wrap: "Перенос",
    unwrap: "Без переносу",
    downloadJson: "Завантажити JSON",
    pubsubMonitor: "PubSub",
    pulse: "Pulse",
    profiler: "Profiler",
    memoryAnalysis: "Analysis",
    language: "Мова / Language",
    ok: "OK",
    addKey: "Додати до цього ключа",
    addKeyRoot: "Додати кореневий ключ",
    reloadKey: "Перезавантажити ключ",
    reload: "Перезавантажити",
    close: "Закрити",
    commands: "Команди",
    view: "Вигляд",
    statistics: "Статистика",
    refresh: "Оновити",
    pause: "Пауза",
    resume: "Продовжити",
    clear: "Очистити",
    rename: "Перейменувати",
    main: "База даних",
    cancel: "Скасувати",
    theme: "Тема",
    github: "GitHub",
    githubRepo: "Репозиторій",
    githubRelease: "Релізи",
    githubChangelog: "Журнал змін",
    info: "Info",
    settings: "Налаштування",
    connect: "Підключити",
    disconnect: "Відключити",
    logout: "Вийти",
    overview: "Огляд",
    console: "Консоль",
    noConnections: "Немає з'єднань, додайте з'єднання в меню налаштувань.",
    noConnectionsInSettings: "Немає з'єднань, ви можете додати НОВЕ З'ЄДНАННЯ вище.",
    connectionAdd: "Нове з'єднання",
    addGroup: "Додати групу",
    extend: "Розгорнути",
    collapse: "Згорнути",
    add: "Додати",
    edit: "Редагувати",
    save: "Зберегти",
    ttl: "Встановити TTL",
    fieldTtl: "TTL поля",
    digest: "Дайджест",
    delete: "Видалити",
    remove: "Вилучити",
    areYouSure: "Ви впевнені?",
    sure: "Впевнені",
    testConnection: "Тестувати з'єднання",
    getKey: "Завантаження Redis-ключа та пов'язаних даних ...",
    jsonViewShow: "Показати JSON",
    jsonViewEditor: "Редагувати JSON",
    quickConsole: "Швидка консоль",
    moveUp: "Перемістити вгору",
    moveDown: "Перемістити вниз",
  },
  diff: {
    reviewChanges: "\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438 \u0437\u043c\u0456\u043d\u0438",
    inline: "\u0423 \u0440\u044f\u0434\u043a\u0443",
    sideBySide: "\u041f\u043b\u0456\u0447-\u043e-\u043f\u043b\u0456\u0447",
    additions: "\u0434\u043e\u0434\u0430\u0432\u0430\u043d\u043d\u044f",
    deletions: "\u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f",
    unchangedLines: "\u043d\u0435\u0437\u043c\u0456\u043d\u0435\u043d\u0456 \u0440\u044f\u0434\u043a\u0438",
    noChanges: "\u0417\u043c\u0456\u043d \u043d\u0435 \u0432\u0438\u044f\u0432\u043b\u0435\u043d\u043e",
    before: "\u0414\u043e",
    after: "\u041f\u0456\u0441\u043b\u044f",
  },
  label: {
    id: {
      nodeId: 'ID вузла',
      id: "ID з'єднання",
      info: "Якщо ви не хочете змінювати властивості: sshPassword, sshPrivateKey, password, tlsCrt, tlsKey, tlsCa, введіть ID з'єднання в ці властивості, щоб зберегти значення. Якщо ви хочете такої ж логіки для пароля вузла, введіть ID вузла в поле пароля вузла."
    },
    secureFeature: 'Якщо ви бачите значення, яке починається з P3X і виглядає однаково, це функція безпеки. Щоб змінити налаштування, замініть їх порожніми або чимось іншим, і вони будуть збережені. Якщо ви не зміните налаштування, вони залишаться такими, як є на сервері.',
    aiTranslating: "Переклад...",
    aiSettings: "Налаштування ШІ",
    aiGroqApiKey: "Ключ API Groq",
    aiGroqApiKeyInfo: "Необов'язково. Власний ключ API Groq для кращої продуктивності. Отримайте безкоштовний ключ на",
    aiGroqApiKeyPlaceholder: "gsk_...",
    aiGroqApiKeySaved: "Ключ API ШІ збережено",
    aiGroqApiKeyInvalid: "Недійсний ключ API Groq",
    aiGroqApiKeyNotSet: "Не встановлено (за замовчуванням сервера)",
    aiEnabled: "ШІ увімкнено",
    aiEnabledYes: "Так",
    aiEnabledNo: "Ні",
    aiRouteViaNetwork: "Маршрут через network.corifeus.com",
    aiRoutingDirect: "Запити йдуть напряму до Groq з вашим власним API-ключем, оминаючи network.corifeus.com.",
    aiRoutingNetwork: "AI-запити маршрутизуються через network.corifeus.com. Якщо у вас є власний безкоштовний ключ API Groq, ви можете вимкнути цей перемикач.",
    aiMaxTokens: "Максимальна кількість токенів AI",
    aiMaxTokensInfo: "Максимальна кількість токенів для відповідей AI. Більші значення дозволяють довші відповіді, але можуть використовувати більше API-кредитів.",
    consoleDrawer: {
      toggleTooltip: "Перемкнути консоль",
      clearTooltip: "Очистити історію консолі",
      closeTooltip: "Закрити консоль",
      aiSettingsTooltip: "Налаштування AI",
      modeRedis: "REDIS",
      modeAi: "AI",
      connectionChipNoDb: opts => `${opts.name}`,
      connectionChipWithDb: opts => `${opts.name} · db ${opts.db}`,
      pageChip: opts => `сторінка: ${opts.page}`,
      connectingTo: opts => `Підключення до ${opts.name}…`,
      connectedTo: opts => `Підключено до ${opts.name} (Redis ${opts.version} ${opts.mode}, ${opts.modules} модулів завантажено)`,
      connectedToNoInfo: opts => `Підключено до ${opts.name}`,
      disconnectedFrom: opts => `Відключено від ${opts.name}`,
      notConnected: "Не підключено.",
      limitedAiOnly: "Лише обмежений AI — загальні запитання й відповіді про Redis працюють.",
      connectHint: "Для живої діагностики введіть: connect <name>",
      cheatsheetHint: "Введіть ai: help, щоб побачити, що можна запитати.",
      needsConnection: "Для цього потрібне активне підключення. Спочатку введіть \"connect <name>\".",
      aiNeedsConnectionReason: "AI у режимі живого стану (використання інструментів) доступний лише під час підключення до Redis.",
      verbNeedsConnection: opts => `"${opts.verb}" потребує активного підключення — спочатку введіть "connect <name>".`,
      aiLimitedMode: "AI працює в обмеженому режимі — доки ви не підключитесь, доступні лише загальні запитання про Redis.",
      welcomeDisconnected: "Вітаємо. Ви ще не підключені до жодного екземпляра Redis.",
      readyIndicator: "Готово.",
    },
    cheatsheet: {
      title: "Шпаргалка AI — що можна запитати?",
      subtitle: "Клацніть будь-який запит, щоб вставити його в консоль. Потім натисніть Enter.",
      searchPlaceholder: "Фільтрувати запити…",
      openOfficialDocs: "Redis Commands ↗",
      openOfficialDocsTooltip: "Відкрити офіційний довідник команд Redis на redis.io",
      closeTooltip: "Закрити (Esc)",
      empty: "Жоден запит не відповідає фільтру.",
      footerHint: "Підказка: введіть \"ai:\" і будь-який текст будь-якою мовою — AI розуміє 54 мови та за потреби використовує актуальний стан Redis.",

      // Each group has: name (category label), match (search-filter alias), prompts (array of example strings)
      groups: {
        diagnostics: {
          name: "Жива діагностика",
          description: "Попросіть AI дослідити поточний стан сервера за допомогою безпечних інструментів лише для читання.",
          prompts: [
            "чому пам'ять завантажена так сильно?",
            "покажи 10 найповільніших запитів",
            "які клієнти підключені?",
            "яка політика maxmemory?",
            "чи були нещодавно витіснення ключів?",
            "чи є події затримки?",
            "скільки часу працює сервер?",
            "який коефіцієнт попадань у кеш?",
            "покажи завантаження CPU",
            "зроби зведення простору ключів",
            "скільки пам'яті використовує кожен тип даних?",
            "чи щось блокує сервер зараз?"
          ]
        },
        keys: {
          name: "Ключі",
          description: "Досліджуйте, шукайте та аналізуйте ключі без клацань по дереву.",
          prompts: [
            "знайди всі ключі за шаблоном user:*",
            "скільки ключів у кожній базі даних?",
            "покажи найбільший hash у цій базі",
            "знайди ключі з TTL менше 60 секунд",
            "які ключі не мають TTL?",
            "якого типу ключ session:abc?",
            "оціни пам'ять, яку використовує префікс \"session:\"",
            "покажи object encoding для ключа user:42",
            "чи є ключі, що скоро закінчать термін дії?",
            "який простір імен використовує найбільше пам'яті?"
          ]
        },
        dataTypes: {
          name: "Типи даних",
          description: "Формулювання природною мовою для створення/читання/оновлення для кожного типу Redis.",
          prompts: [
            "створи hash з ім'ям user:1 з полями name=Alice age=30",
            "додай три елементи до list tasks",
            "додай членів до set favourites",
            "додай членів з балами до sorted set leaderboard",
            "додай подію до stream events",
            "отримай останні 10 записів зі stream events",
            "отримай усі поля hash user:1",
            "отримай членів set favourites",
            "отримай топ-10 за балами з leaderboard"
          ]
        },
        modules: {
          name: "Модулі",
          description: "Запити до завантажених модулів Redis (категорії нижче з'являються, лише коли модуль присутній).",
          prompts: []
        },
        json: {
          name: "RedisJSON",
          description: "Доступно, коли завантажений модуль ReJSON.",
          prompts: [
            "створи JSON-документ у user:42 з { name: \"Alice\", age: 30 }",
            "прочитай поле name у user:42",
            "онови age у user:42 до 31",
            "перелічи всі ключі JSON",
            "видали поле з JSON-документа",
            "отримай вкладене поле за JSONPath"
          ]
        },
        search: {
          name: "RediSearch",
          description: "Доступно, коли завантажений модуль search.",
          prompts: [
            "перелічи всі повнотекстові індекси",
            "виконай повнотекстовий пошук \"redis\" в індексі idx:products",
            "створи індекс на основі hash з полями title (TEXT) і price (NUMERIC)",
            "отримай інформацію про індекс idx:products",
            "видали індекс idx:products",
            "знайди документи, де price від 10 до 50",
            "напиши гібридний пошук, що поєднує текст і векторну схожість"
          ]
        },
        timeseries: {
          name: "RedisTimeSeries",
          description: "Доступно, коли завантажений модуль timeseries.",
          prompts: [
            "перелічи всі ключі timeseries",
            "додай точку даних у temp:room1",
            "отримай діапазон temp:room1 від вчора до зараз",
            "отримай multi-range за міткою sensor=temp",
            "згенеруй 100 точок синусоїди для temp:room1",
            "покажи retention і мітки для temp:room1"
          ]
        },
        bloom: {
          name: "RedisBloom (Bloom / Cuckoo / Top-K / CMS / T-Digest)",
          description: "Доступно, коли завантажений модуль bf.",
          prompts: [
            "перевір, чи існує елемент foo у bloom filter spam:ips",
            "додай елементи до bloom filter spam:ips",
            "створи top-K з ім'ям popular із K=10",
            "запитай count-min sketch traffic для ключа /home",
            "додай значення до t-digest і отримай 95-й процентиль",
            "покажи інформацію про bloom filter spam:ips"
          ]
        },
        vectorSet: {
          name: "VectorSet (Redis 8+)",
          description: "Доступно, коли виявлено Redis 8+ (нативний тип VECTORSET).",
          prompts: [
            "додай вектор до embeddings",
            "знайди 10 найсхожіших векторів до запитового вектора",
            "покажи розмірність і кількість у vectorset embeddings",
            "видали елемент з vectorset embeddings",
            "шукай за ім'ям елемента через VSIM"
          ]
        },
        redis8: {
          name: "Можливості Redis 8+",
          description: "Показується, коли виявлено Redis 8+.",
          prompts: [
            "встанови TTL для поля hash за допомогою HEXPIRE",
            "отримай digest значення рядка",
            "виконай гібридний повнотекстовий + векторний пошук (FT.HYBRID)",
            "встанови кілька ключів зі спільним терміном дії через MSETEX",
            "видали запис потоку з consumer group (XDELEX)",
            "покажи cluster slot-stats для топ-10 слотів"
          ]
        },
        scripting: {
          name: "Скриптинг",
          description: "Генеруйте скрипти Lua / EVAL з описів природною мовою.",
          prompts: [
            "напиши атомарний скрипт, що збільшує counter X тільки якщо Y > 5",
            "згенеруй 100 випадкових ключів на Lua",
            "перетвори цей shell-конвеєр на один EVAL: keys user:* | GET | grep inactive | DEL",
            "портуй пакетну операцію на Lua для безпечної роботи в кластері",
            "оновлення в стилі check-and-set одним викликом Lua",
            "ітеруй hash і видали поля за шаблоном"
          ]
        },
        cluster: {
          name: "Кластер",
          description: "Показується лише в режимі кластера.",
          prompts: [
            "покажи інформацію про кластер",
            "перелічи вузли кластера",
            "покажи топ-10 слотів за кількістю ключів",
            "покажи топ-10 слотів за пам'яттю",
            "який master володіє слотом 5000?"
          ]
        },
        acl: {
          name: "ACL (Redis 6+)",
          description: "Переглядайте користувачів контролю доступу та поточне підключення.",
          prompts: [
            "під яким користувачем я підключений?",
            "перелічи всіх користувачів ACL",
            "які в мене дозволи?",
            "покажи правила користувача default"
          ]
        },
        qna: {
          name: "Загальні питання",
          description: "Ставте питання про знання Redis — без інструментів, лише відповіді.",
          prompts: [
            "що таке ZADD?",
            "як працює failover у кластері?",
            "поясни SCAN і KEYS",
            "коли використовувати EVAL замість кількох команд?",
            "які є варіанти персистентності Redis?",
            "чим відрізняються RDB і AOF?",
            "як Redis Sentinel обирає новий master?",
            "поясни hash tags у режимі кластера"
          ]
        },
        translate: {
          name: "Природна мова → команда Redis",
          description: "Опишіть, що ви хочете, простою українською (або будь-якою з 54 мов); AI напише команду Redis.",
          prompts: [
            "видали ключ user:42",
            "перейменуй ключ foo на bar",
            "встанови термін дії ключа session:abc на 10 секунд",
            "скопіюй ключ source у destination",
            "збільш counter visits на 5",
            "встанови ключ greeting у \"hello\" на 1 годину",
            "покажи 10 найчастіше запитуваних ключів",
            "видали всі ключі за шаблоном temp:*"
          ]
        }
      }
    },
    ssh: {
      on: 'SSH увімкнено',
      off: 'SSH вимкнено',
      sshHost: 'SSH-хост',
      sshPort: 'SSH-порт',
      sshUsername: "SSH ім'я користувача",
      sshPassword: 'SSH-пароль',
      sshPrivateKey: 'SSH приватний ключ'
    },
    isBuffer: opts => `[object ArrayBuffer] означає, що значення є бінарними даними або значення більше ніж ${opts.maxValueAsBuffer}`,
    streamValue: `Поле та значення Stream записуються в один рядок. Напр.: field1 value1 "field 2" "value 2"`,
    streamTimestampId: `'*' означає автоматично згенероване або специфікація як <мілісекундиЧасу>-<номерПослідовності>`,
    unableToLoadKey: ({
      key
    }) => {
      return `Неможливо завантажити цей ключ: ${key}. Можливо, ключ було видалено. Точна помилка знаходиться в консолі.`;
    },
    bigJson: "Цей JSON-об'єкт більше 10 кб, тому переконайтесь, що ви знаєте, що робите, оскільки деякі функції можуть повільно відображатися.",
    addNode: "Додати вузол",
    validateJson: "Перевірити JSON",
    reducedFunction: `Обмежена функціональність`,
    tooManyKeys: opts => {
      return `Максимальна кількість ключів для повної функціональності — ${opts.maxLightKeysCount}. У цій базі даних ключів більше ніж дозволено: ${opts.count}. Сортування ключів та додаткова інформація дерева вимкнені. Пошук здійснюється лише на сервері, а не на клієнті.`;
    },
    redisCommandNotFound: "Відповідну команду Redis не знайдено ...",
    treeKeyStore: `Сортування (природне порівняння) виконується на клієнті, тобто в браузері, що означає штраф продуктивності для великих наборів, наприклад понад 10 тис. ключів, це може додати трохи часу до рендерингу сторінки. У Redis немає сортування ключів, тільки таким чином.`,
    socketIoTimeout: options => {
      return `Час очікування Socket.IO для цього запиту вичерпано (макс. ${options.timeout / 1000} секунд) ...`;
    },
    resizerInfo: options => {
      return `Мінімальна ширина лівої або правої панелі — ${options.width}px`;
    },
    jsonViewNotParsable: "Це значення не може бути розпізнане як JSON  ",
    ttlTitle: "Встановіть TTL у секундах",
    passwordSecure: "Пароль може бути порожнім, але все одно відображатиме символи, це функція безпеки.",
    aclAuthHint: "Використовуйте ім’я користувача та пароль Redis ACL для автентифікації. Залиште порожнім для користувача за умовчанням без пароля.",
    tlsWithoutCert: "Увімкнути TLS без додаткового сертифіката",
    tlsRejectUnauthorized: "Відхилити неавторизований сертифікат",
    tlsSecure: "Якщо ви бачите конфігурацію TLS, яка починається з P3X, або всі налаштування TLS виглядають однаково, це функція безпеки. Щоб змінити налаштування, замініть їх порожніми або чимось іншим, і вони будуть збережені. Якщо ви не зміните налаштування TLS, вони залишаться такими, як є на сервері.",
    treeSeparatorEmpty: "Якщо роздільник дерева порожній, дерево не матиме вкладених вузлів, лише простий список",
    treeSeparatorEmptyNote: "Немає вкладених вузлів, лише простий список",
    welcomeConsole: "Ласкаво просимо до консолі Redis",
    welcomeConsoleInfo: "SHIFT + Історія курсором ВГОРУ або ВНИЗ увімкнена",
    redisListIndexInfo: "Порожнє для додавання в кінець, -1 для додавання на початок або збережіть на показану позицію.",
    console: "Консоль",
    connectiondAdd: "Додати з'єднання",
    connectiondEdit: "Редагувати з'єднання",
    connectiondView: "Переглянути з'єднання",
    connections: "З'єднання",
    keysSort: {
      on: "Сортування ключів увімкнено",
      off: "Сортування ключів вимкнено"
    },
    cluster: {
      on: "Cluster увімкнено",
      off: "Cluster вимкнено"
    },
    sentinel: {
      on: "Sentinel увімкнено",
      off: "Sentinel вимкнено",
      name: "Назва Sentinel"
    },
    readonly: {
      on: "Лише для читання увімкнено",
      off: "Лише для читання вимкнено"
    },
    theme: {
      light: "Світла",
      dark: "Темна enterprise",
      darkNeu: "Темна",
      darkoBluo: "Darko bluo",
      enterprise: "Enterprise",
      redis: "Redis",
      matrix: "Matrix"
    },
    connected: opts => {
      return `Підключено: ${opts.name}`;
    },
    tree: "Дерево",
    askAuth: "Запитати авторизацію",
    keyboardShortcuts: "Гарячі клавіші",
    about: "Про програму",
    supportedLanguages: "Підтримувані мови",
    version: "Версія",
    redisVersion: "Версія Redis",
    modules: "Модулі",
    shortcutRefresh: "Оновити",
    shortcutSearch: "Фокус на пошуку",
    shortcutNewKey: "Новий ключ",
    shortcutDisconnect: "Відключити",
    themeAuto: "Автоматично (система)",
    languageAuto: "Auto (system)",
    shortcutCommandPalette: "Палітра команд",
    commandPalette: "Палітра команд",
    noResults: "Немає результатів",
    redisCommandsReference: "Команди Redis",
    ungrouped: "Без групи",
    grouped: "Згруповані",
    connectFirst: "Спочатку підключіться до сервера Redis",
    searchLanguage: "Пошук мови...",
    exportProgress: "Експорт ключів...",
    importProgress: "Імпорт ключів...",
    importPreview: "Попередній перегляд",
    importOverwrite: "Перезаписати",
    importSkip: "Пропустити",
    importConflict: "Якщо ключ вже існує:",
    noKeysToExport: "Немає ключів для експорту",
    time: "Час",
    type: "Тип",
    format: "Формат",
    loading: "Завантаження...",
    autoRefresh: "Авто",
    exportSearchHint: "Експортуються лише ключі, що відповідають поточному пошуку",
    importSearchHint: "Імпорт застосовується до всієї бази даних, а не лише до результатів пошуку",
    deleteSearchHint: "Видаляє всі ключі, що відповідають поточному пошуку на сервері",
    deletingSearchKeys: "Видалення відповідних ключів...",
    importNoKeys: "Ключі не знайдено у файлі",
    desktopNotifications: "Сповіщення робочого столу",
    desktopNotificationsEnabled: "Увімкнути сповіщення робочого столу",
    desktopNotificationsInfo: "Отримуйте сповіщення ОС про від'єднання та повторне підключення Redis, коли програма не у фокусі."
  },
  status: {
    dataCopied: "Дані скопійовано в буфер обміну",
    exportDone: "Експорт завершено",
    deletedSearchKeys: (opts) => `Видалено ${opts.count} ключів`,
    indexCreated: "Індекс створено",
    indexDropped: "Індекс видалено",
    importDone: (opts) => `Імпорт завершено: ${opts.created} створено, ${opts.skipped} пропущено, ${opts.errors} помилок`,
    nodeRemoved: "Вузол видалено",
    keyIsNotExisting: "Цей ключ міг бути видалений або його термін дії минув.",
    keyCount: opts => {
      if (opts.keyCount === 0) {
        return "Немає ключів";
      } else if (opts.keyCount === 1) {
        return "1 ключ";
      } else {
        return `${opts.keyCount} ключів`;
      }
    },
    treeExpandAll: "Розгорнути всі гілки дерева. Ця операція може бути ресурсоємною і зайняти час ...",
    noRedisKeys: "У цій базі даних немає ключів.",
    redisConnected: "Redis підключено успішно",
    reverted: "\u0421\u043a\u0430\u0441\u043e\u0432\u0430\u043d\u043e",
    reloadingDataInfo: "Перезавантаження інформації Redis",
    added: "Додано",
    saved: "Оновлено",
    cancelled: "Скасовано",
    deleted: "Видалено",
    savedRedis: "Дані Redis збережено",
    redisDisconnected: opts => {
      return `Поточне з'єднання мало помилку: ${opts.error.message}`;
    },
    dbChanged: opts => {
      return `Індекс БД встановлено на ${opts.db}. `;
    },
    treeDeleted: opts => {
      return `Ключ дерева було видалено (${opts.key}).`;
    },
    deletedKey: opts => {
      return `Ключ було видалено (${opts.key}).`;
    },
    renamedKey: "Цей ключ було перейменовано",
    ttlChanged: "TTL цього ключа було змінено",
    notInteger: "Це введення не є цілим числом",
    persisted: "Цей ключ зберігається назавжди",
    set: "Ключ встановлено/додано",
    connectionRestored: "З'єднання відновлено",
    socketDisconnected: "Від'єднано",
    socketError: "Помилка з'єднання",
    deletedHashKey: "Хеш-ключ видалено",
    deletedSetMember: "Член множини видалено",
    deletedListElement: "Елемент списку видалено",
    deletedZSetMember: "Член відсортованої множини видалено",
    deletedStreamTimestamp: "Запис потоку видалено",
  },
  code: {
    "delete-connection": "Це з'єднання було видалено, тому вас від'єднано від цього екземпляра Redis.",
    "save-connection": "Це з'єднання було змінено, тому вас від'єднано від цього екземпляра Redis. Ви можете підключитися знову.",
    "readonly-connections": "Додавання/збереження/видалення з'єднань доступне лише для читання!",
    "readonly-connection-mode": "Це з'єднання в режимі лише для читання!",
    "list-out-of-bounds": "Цей індекс списку виходить за межі",
    "invalid-json-value": "The value is not valid JSON.",
    "http_auth_required": "Потрібна авторизація: будь ласка, автентифікуйтесь за допомогою HTTP Basic Auth та перезавантажте.",
    "auto-connection-failed": "Можливо, з'єднання було видалено і через це автоматичне підключення не вдалося.",
    invalid_console_command: "Ця команда не працює через GUI.",
    "AI_DISABLED": "AI вимкнено. Увімкніть його в налаштуваннях AI.",
    "AI_PROMPT_REQUIRED": "Потрібен запит AI.",
    "GROQ_API_KEY_READONLY": "Ключ Groq API доступний лише для читання і не може бути змінений.",
    "blocked_api_access": "Ваш план Groq API не дозволяє доступ до цієї моделі. Оновіть план Groq або використовуйте проксі network.corifeus.com.",
    "rate_limit": "Досягнуто ліміт AI. Спробуйте пізніше або використовуйте власний ключ Groq API в налаштуваннях."
  },
  form: {
    error: {
      required: "Обов'язкове",
      port: "Порт повинен бути між 1-65535",
      invalid: "Форма недійсна"
    },
    connection: {
      label: {
        name: "Назва",
        group: "Група",
        host: "Ім'я хоста",
        port: "Порт",
        password: "Пароль",
        username: "Ім'я користувача"
      }
    },
    treeSettings: {
      maxValueDisplay: "Максимальна довжина відображення значення",
      maxValueDisplayInfo: "Якщо встановлено 0, показувати повні значення. Якщо більше 0, обрізати до цієї довжини. Якщо -1: для рядків — приховати значення до редагування; для інших типів — показувати повний вміст.",
      maxKeys: "Максимальна кількість ключів",
      maxKeysInfo: "Щоб GUI не зламався, ми обмежуємо максимальну кількість ключів.",
      keyCount: (opts) => {
        return `Кількість ключів: ${opts?.keyCount ?? 0}`;
      },
      label: {
        animation: "Використовувати анімацію",
        noAnimation: "Без анімації",
        undoEnabled: "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0443\u0432\u0456\u043c\u043a\u043d\u0435\u043d\u043e",
        undoDisabled: "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e",
        diffEnabled: "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 diff \u043f\u0435\u0440\u0435\u0434 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f\u043c",
        diffDisabled: "Diff \u043f\u0435\u0440\u0435\u0434 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f\u043c \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e",
        jsonFormatTwoSpace: "Форматувати JSON з 2 пробілами",
        jsonFormatFourSpace: "Форматувати JSON з 4 пробілами",
        formName: "Налаштування Redis",
        searchModeClient: "Режим пошуку на клієнті",
        searchModeServer: "Режим пошуку на сервері",
        searchModeStartsWith: "Пошук з режимом «починається з»",
        searchModeIncludes: "Пошук з режимом «містить»"
      },
      undoHint: "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0435 \u043b\u0438\u0448\u0435 \u0434\u043b\u044f \u0442\u0438\u043f\u0456\u0432 \u043a\u043b\u044e\u0447\u0456\u0432 string \u0456 JSON",
      field: {
        treeSeparator: "Роздільник дерева",
        treeSeparatorSelector: "Вибір роздільника дерева",
        page: "Кількість сторінок дерева",
        keyPageCount: "Кількість сторінок ключів",
        keysSort: "Сортувати ключі",
        searchMode: "Режим пошуку",
        searchModeStartsWith: "Пошук починається з / містить"
      },
      error: {
        keyPageCount: "Кількість сторінок ключів повинна бути цілим числом від 5 до 100",
        page: "Кількість сторінок повинна бути цілим числом від 10 до 5000",
        maxValueDisplay: "Максимальне значення відображення повинно бути цілим числом від -1 до 32768",
        maxKeys: "Максимальна кількість ключів повинна бути цілим числом від 100 до 100000"
      }
    },
    key: {
      label: {
        formName: {
          add: "Додати новий Redis-ключ",
          edit: "Редагувати Redis-ключ",
          append: "Додати до існуючого Redis-ключа"
        }
      },
      field: {
        streamTimestamp: "Мітка часу",
        key: "Ключ",
        type: "Тип",
        index: "Індекс",
        hashKey: "Хеш-ключ",
        score: "Оцінка",
        value: "Значення",
        errorRate: "Частота помилок",
        capacity: "Ємність",
        topk: "Top K",
        width: "Ширина",
        depth: "Глибина",
        decay: "Згасання",
        compression: "Стиснення",
        increment: "Інкремент",
        item: "Елемент",
        vectorValues: "Значення вектора (через кому)",
        element: "Назва елемента",
      },
      error: {
        streamTimestamp: "Мітка часу обов'язкова, у форматі Redis або як *",
        key: "Ключ повинен містити щонайменше один символ",
        hashKey: "Ключ хеш-таблиці повинен містити щонайменше один символ",
        score: "Оцінка впорядкованої множини обов'язкова",
        value: "Значення обов'язкове",
        errorRate: "Частота помилок повинна бути від 0 до 1 (напр. 0.01)",
        capacity: "Ємність повинна бути додатним цілим числом",
        topk: "Top K повинен бути додатним цілим числом",
        width: "Ширина повинна бути додатним цілим числом",
        depth: "Глибина повинна бути додатним цілим числом",
        item: "Елемент обов'язковий"
      }
    },
    main: {
      label: {
        database: "DB"
      }
    }
  },
  page: {
    search: {
      title: "Пошук",
      index: "Індекс",
      query: "Запит",
      results: "Результати",
      noIndex: "Індекси не знайдено",
      createIndex: "Створити індекс",
      dropIndex: "Видалити індекс",
      indexInfo: "Інформація про індекс",
      indexName: "Назва індексу",
      prefix: "Префікс ключа (необов'язково)",
      fieldName: "Назва поля",
      hybridMode: "Гібридний пошук (FT.HYBRID)",
      vectorField: "Векторне поле",
      vectorValues: "Значення вектора",
    },
    monitor: {
      title: "Моніторинг",
      memory: "Пам'ять",
      opsPerSec: "Операцій/сек",
      clients: "Клієнти",
      blocked: "Заблоковано",
      hitsMisses: "Влучність",
      networkIo: "Мережа I/O",
      slowLog: "Повільний журнал",
      noSlowQueries: "Повільних запитів не зареєстровано.",
      confirmSlowLogReset: "Ви впевнені, що бажаєте скинути повільний журнал?",
      slowLogResetDone: "Повільний журнал було скинуто.",
      totalCommands: "Всього",
      expired: "Прострочено",
      evicted: "Витіснено",
      clientList: "Список клієнтів",
      topKeys: "Найбільші ключі за памяттю",
      killClient: "Завершити клієнта",
      clientKilled: "Клієнта завершено",
      confirmKillClient: "Ви впевнені, що хочете завершити цього клієнта?",
      noKeys: "Немає ключів",
      rss: "RSS",
      peak: "Пік",
      fragmentation: "Фрагментація",
      hitsAndMisses: "Влучання / Промахи",
      noClients: "Немає клієнтів",
      slotStats: "Статистика слотів кластера",
      serverInfo: "Інформація про сервер",
      os: "Операційна система",
      port: "Мережевий порт",
      pid: "ID процесу",
      configFile: "Файл конфігурації",
      uptime: "Час роботи",
      keyspace: "Ключовий простір Redis",
      keys: "Ключі Redis",
      expires: "Термін дії закінчується",
      noKeyspace: "Немає ключів",
      persistence: "Постійність даних",
      rdbLastSave: "Останнє збереження RDB",
      rdbStatus: "Статус RDB",
      rdbChanges: "Зміни після останнього збереження",
      aofEnabled: "AOF увімкнено",
      aofSize: "Розмір AOF",
      replication: "Реплікація Redis",
      role: "Роль реплікації",
      replicas: "Підключені репліки",
      masterHost: "Основний хост",
      linkStatus: "Стан посилання реплікації",
      cpu: "Використання ЦП",
      cpuSys: "система",
      cpuUser: "Користувач",
      modules: "Завантажено модулі Redis",
      noModules: "Немає завантажених модулів Redis",
      clusterSlotMap: "Карта слота кластера Redis",
      slotRange: "Діапазон кластерних слотів",
      totalSlots: "Загальна кількість слотів кластера",
      noClusterData: "Дані кластера Redis відсутні.",
    },
    analysis: {
      title: "Аналіз пам'яті",
      runAnalysis: "Запустити аналіз",
      running: "Аналіз...",
      typeDistribution: "Розподіл типів",
      prefixMemory: "Пам'ять за префіксом",
      topKeysByMemory: "Найбільші ключі за пам'яттю",
      expirationOverview: "Термін дії ключів",
      memoryBreakdown: "Розбивка пам'яті",
      keysScanned: "Проскановано ключів",
      totalMemory: "Загальна пам'ять",
      rssMemory: "RSS пам'ять",
      peakMemory: "Пікова пам'ять",
      luaMemory: "Lua пам'ять",
      overheadMemory: "Накладні витрати",
      datasetMemory: "Набір даних",
      fragmentation: "Фрагментація",
      allocator: "Алокатор",
      withTTL: "З TTL",
      persistent: "Постійні",
      avgTTL: "Середній TTL",
      prefix: "Префікс",
      keyCount: "Кількість ключів",
      memoryUsage: "Використання пам'яті",
      noPrefix: "(без префікса)",
      topN: "Top N",
      maxScanKeys: "Макс. сканованих ключів",
      type: "Тип",
      noData: "Немає даних. Натисніть Запустити аналіз, щоб почати.",
      exportAll: "Експорт усього",
      memoryDoctor: "Memory Doctor",
      doctorNoData: "Натисніть Оновити, щоб запустити діагностику Memory Doctor.",
    },
    acl: {
      title: "Користувачі ACL",
      loadUsers: "Завантажити користувачів",
      loading: "Завантаження...",
      username: "Ім'я користувача",
      status: "Статус",
      enabled: "Увімкнено",
      disabled: "Вимкнено",
      commands: "Команди",
      commandsHint: "наприклад, +@all or +@read -@dangerous",
      keys: "Ключові шаблони Redis",
      keysHint: "наприклад, ~* or ~user:*",
      channels: "Канали Pub/Sub",
      channelsHint: "наприклад, &* or &notifications:*",
      password: "Пароль",
      noPassword: "Без пароля (nopass)",
      passwordHint: "Залиште пустим, щоб зберегти поточний пароль",
      currentUser: "поточний",
      createUser: "Створити користувача",
      editUser: "Редагувати користувача",
      deleteUser: "Видалити",
      confirmDelete: "Ви впевнені, що бажаєте видалити користувача ACL?",
      userDeleted: "Користувача ACL було видалено.",
      userSaved: "Користувача ACL було збережено.",
      cannotDeleteDefault: "Неможливо видалити користувача за умовчанням.",
      cannotDeleteSelf: "Неможливо видалити підключеного користувача.",
      noUsers: "ACL вимагає Redis 6.0+.",
      groupCommon: "Загальні",
      groupDataTypes: "Типи даних",
      groupOperations: "Операції",
      rules: "Правила",
      rulesHint: "Маркери, розділені пробілами (наприклад, on >password +@all ~* &*)",
      defaultUserWarning: "Застереження: зміна користувача за умовчанням може заблокувати всі підключення. Якщо це станеться, вам потрібно буде перезапустити Redis або використати redis-cli, щоб відновити доступ.",
    },
    overview: {
      noConnected: "Немає підключення до Redis.",
      overviewClients: "Перелік підключених за кількістю клієнтів",
      connectedCount: opt => {
        if (opt.length === 1) {
          return "1 клієнт";
        }
        return `${opt.length} клієнтів`;
      }
    },
    key: {
      label: {
        key: "Ключ",
        encoding: "Кодування",
        compression: "Стиснення",
        aiRateLimited: "Досягнуто ліміт запитів AI. Спробуйте пізніше або використовуйте власний ключ Groq API в Налаштуваннях.",
        aiError: "Запит AI не вдався",
        length: "Розмір",
        ttl: "TTL",
        ttlTitle: "Час життя",
        type: "Тип",
        ttlNotExpire: "не закінчується",
        lengthString: "байт",
        lengthItem: "елементів",
        actions: "Дії"
      },
      list: {
        table: {
          index: "Індекс",
          value: "Значення"
        }
      },
      hash: {
        table: {
          hashkey: "Хеш-ключ",
          value: "Значення"
        }
      },
      set: {
        table: {
          value: "Член"
        }
      },
      zset: {
        table: {
          value: "Член",
          score: "Оцінка"
        }
      },
      stream: {
        table: {
          timestamp: "ID мітки часу",
          field: "Поле",
          value: "Значення"
        }
      },
      timeseries: {
        chart: "Графік",
        info: "Інформація",
        addPoint: "Додати точку даних",
        from: "Від (мс або -)",
        to: "До (мс або +)",
        aggregation: "Агрегація",
        timeBucket: "Інтервал (мс)",
        none: "Немає",
        dataPoints: "точки даних",
        labels: "Мітки",
        rules: "Правила",
        retention: "Зберігання",
        timestamp: "Мітка часу",
        value: "Значення",
        retentionHint: "0 = без закінчення терміну, або мілісекунди",
        duplicatePolicy: "Політика дублікатів",
        labelsHint: "ключ1 значення1 ключ2 значення2",
        timestampHint: "'*' означає автоматичне генерування, або мітка часу в мілісекундах",
        editAllHint: "Один запис на рядок: мітка_часу значення (мітка_часу може бути * для авто)",
        autoSpread: "Автоматичний інтервал розподілу *",
        formula: "Формула",
        formulaLinear: "Лінійна",
        formulaRandom: "Випадкова",
        formulaSawtooth: "Пилоподібна",
        formulaPoints: "Точки",
        formulaAmplitude: "Амплітуда",
        formulaOffset: "Зміщення",
        generate: "Згенерувати",
        exportChart: "Експорт PNG",
        overlay: "Накладання ключів",
        overlayHint: "Ключі через кому",
        mrangeFilter: "Фільтр міток",
        bulkMode: "Масова генерація",
        mrangeHint: "напр. sensor=temp"
      },
      probabilistic: {
        info: "Інформація",
        addItem: "Додати елемент",
        checkItem: "Перевірити елемент",
        item: "Елемент",
        exists: "Існує",
        doesNotExist: "Не існує",
        topkList: "Основні елементи",
        topkCount: "Кількість",
        queryCount: "Кількість запитів",
        queryResult: "Результат запиту",
        addedSuccessfully: "Елемент успішно додано",
        deletedSuccessfully: "Елемент успішно видалено",
        quantile: "Квантиль",
        quantileResult: "Результат",
        noItems: "Немає елементів для відображення",
        resetConfirm: "Скинути всі дані в цьому T-Digest?"
      },
      vectorset: {
        info: "Інформація",
        elements: "Елементи",
        similarity: "Пошук за подібністю",
        searchByElement: "Пошук за елементом",
        searchByVector: "Пошук за вектором",
        vectorValues: "Значення вектора",
        element: "Елемент",
        score: "Оцінка",
        count: "Кількість",
        addElement: "Додати елемент",
        attributes: "Атрибути",
        noAttributes: "Немає атрибутів",
        dimensions: "Розмірності",
        removeConfirm: "Видалити цей елемент з VectorSet?",
        noElements: "Немає елементів",
        filter: "Фільтр",
        searchComplete: "Пошук завершено",
      }
    },
    treeControls: {
      settings: "Налаштування дерева",
      expandAll: "Розгорнути все",
      collapseAll: "Згорнути все",
      level: "Рівень",
      search: {
        search: "Пошук серед ключів",
        clear: "Очистити поточний пошук",
        placeholderClient: "Пошук на стороні клієнта",
        placeholderServer: "Пошук на стороні сервера",
        info: (opts) => "Пошук на стороні клієнта означає, що текст збігається з введеним у пошуковому полі. Пошук на стороні сервера означає пошук у шаблонах ключів як *{текст-пошуку}*. Для великих наборів даних краще використовувати пошук на стороні сервера. Для менших наборів даних краще використовувати пошук на стороні клієнта." + ` Якщо кількість ключів перевищує ${opts?.maxLightKeysCount ?? 110000}, ви можете шукати лише на стороні сервера.`,
        largeSetInfo: "У великому наборі даних пошук на стороні клієнта вимкнено, тому зараз можливий лише пошук на стороні сервера.",
        infoDetails: "Щоб дізнатися, як працює пошук, перегляньте налаштування"
      },
      pager: {
        next: "Наступна",
        prev: "Попередня",
        first: "Перша",
        last: "Остання"
      }
    }
  },
  time: {
    years: "років",
    months: "місяців",
    days: "днів",
    year: "рік",
    month: "місяць",
    day: "день",
    second: "секунда",
    seconds: "секунди",
    minute: "хвилина",
    minutes: "хвилини",
    hour: "година",
    hours: "години"
  },
  redisTypes: {
    string: "String",
    list: "List",
    hash: "Hash table",
    set: "Set",
    zset: "Sorted set - zset",
    stream: "Stream",
    json: "JSON",
    timeseries: "Time Series",
    bloom: "Bloom фільтр",
    cuckoo: "Cuckoo фільтр",
    topk: "Top-K",
    cms: "Count-Min Sketch",
    tdigest: "T-Digest",
    vectorset: "VectorSet",
  },
  promo: {
    title: "AI-помічник для мережі",
    description: "Відкрийте для себе наш безкоштовний AI-помічник для мережі на network.corifeus.com — аналізуйте домени, IP-адреси, DNS-записи, SSL-сертифікати, безпеку електронної пошти та мережеву інфраструктуру. Працює на базі AI для миттєвих і всебічних результатів.",
    disclaimer: "Це промо показується лише на demo-сайті й не з’являється в розгортаннях Docker, Electron або вебзастосунку.",
    toastMessage: "Спробуйте наш безкоштовний AI-помічник для мережі на network.corifeus.com — аналізуйте домени, DNS, SSL та багато іншого!",
    visit: "Відкрити network.corifeus.com",
  }
};
module.exports = strings;