Newer
Older
hard-panel / panel / frontend / src / i18n / messages / uk.js
// Ukrainian dictionary — same slugs as en.js; a missing slug falls back to English.
export default {
  // app / shell / nav
  "app.docTitle": "GHard Monitor",
  "shell.title": "Моніторинг",
  "nav.dashboard": "Дашборд",
  "nav.storage": "Сховища",
  "nav.settings": "Налаштування",
  "nav.signOut": "Вийти",

  // login screen
  "login.title": "Вхід",
  "login.subtitle": "GHard Monitor захищений gnexus-auth",
  "login.action": "Увійти",

  // dashboard
  "dash.title": "Дашборд",
  "dash.addServer": "Додати сервер",
  "dash.summary": "{servers} · {online}", // лічильники збираються вкладеним t()
  "dash.servers": { one: "{n} сервер", few: "{n} сервери", many: "{n} серверів" },
  "dash.online": "{m} у мережі",
  "dash.emptyTitle": "Серверів ще немає",
  "dash.emptyText": "Додайте перший сервер — панель видасть ключ для агента hard-monitor",
  "dash.serverCreated": "Сервер створено",
  "dash.newServer": "Новий сервер",
  "dash.nameHint": "Ім'я потрібно лише панелі — ім'я хоста агент повідомляє сам.",
  "dash.serverName": "Ім'я сервера",
  "dash.keyHint": "Ключ показується {once} — збережіть його та налаштуйте агента з ним.",
  "dash.installOn": "Встановлення на сервері:",
  "dash.failed": "Помилка",

  // server card / server page
  "server.open": "Відкрити",
  "server.uptime": "аптайм {value}",
  "server.disk": "Диск {mount}",
  "server.nodata": "даних ще немає — встановіть агента",
  "server.back": "До дашборду",
  "server.notFound": "Сервер не знайдено",
  "server.notFoundText": "Можливо, його було видалено",
  "server.rename": "Перейменувати",
  "server.renameTitle": "Перейменувати сервер",
  "server.serverName": "Ім'я сервера",
  "server.delete": "Видалити",
  "server.deleteTitle": "Видалити сервер?",
  "server.deleteMessage": "«{name}» і вся історія його метрик буде видалена назавжди.",
  "server.infoTitle": "Інфо",
  "server.noteTitle": "Нотатка",
  "server.serverNote": "Нотатка про сервер",
  "server.notePlaceholder": "Для чого сервер, що на ньому працює. Без секретів :)",
  "server.hostname": "Ім'я хоста",
  "server.os": "ОС",
  "server.kernel": "Ядро",
  "server.ips": "IP-адреси",
  "server.connIp": "IP підключення",
  "server.interval": "Інтервал агента",
  "server.lastPacket": "Останній пакет",
  "server.network": "Мережа",
  "server.history": "Історія:",
  "server.tabOverview": "Огляд",
  "server.tabDisks": "Диски",
  "server.tabNetwork": "Мережа",
  "server.tabProcesses": "Процеси",
  "server.tabDocker": "Docker",
  "server.cpuRamChart": "CPU та RAM, %",
  "server.diskChart": "Заповненість дисків, %",
  "server.netChart": "Швидкість мережі, MB/s",
  "server.colMount": "Точка монтування",
  "server.colSize": "Розмір",
  "server.colUsed": "Зайнято",
  "server.colUsage": "Заповненість",
  "server.colPid": "PID",
  "server.colProcess": "Процес",
  "server.colStatus": "Статус",
  "server.colContainer": "Контейнер",
  "server.colImage": "Образ",
  "server.noDisks": "В останньому пакеті немає дисків",
  "server.noProcesses": "Немає даних про процеси",
  "server.noDocker": "Docker-контейнери не знайдено",
  "server.of": "з {total}",
  "server.noteSaved": "Нотатку збережено",
  "server.renamed": "Перейменовано",
  "server.serverDeleted": "Сервер видалено",
  "server.failedToSave": "Не вдалося зберегти",
  "server.failedToRename": "Не вдалося перейменувати",
  "server.failedToDelete": "Не вдалося видалити",
  "server.historyFailed": "Не вдалося завантажити історію",

  // storage
  "storage.title": "Сховища",
  "storage.subtitle": "Мережеві шари, примонтовані до хоста панелі",
  "storage.addShare": "Додати шару",
  "storage.emptyTitle": "Шар ще немає",
  "storage.emptyText": "Примонтуйте мережевий диск до хоста панелі та додайте його шлях сюди — панель сама стежитиме за заповненістю",
  "storage.usedLabel": "Зайнято",
  "storage.used": "зайнято",
  "storage.free": "вільно",
  "storage.total": "всього",
  "storage.nodata": "немає даних — перевірте монтування",
  "storage.sampledAt": "замір: {time}",
  "storage.notSampled": "замірів ще не було",
  "storage.historyTitle": "Заповненість за 24 год, %",
  "storage.addTitle": "Додати мережеву шару",
  "storage.name": "Назва",
  "storage.mountPath": "Шлях монтування на хості панелі",
  "storage.shareAdded": "Шару додано",
  "storage.deleteTitle": "Видалити шару?",
  "storage.deleteMessage": "«{name}» буде прибрано з моніторингу. Саме монтування та дані не зачіпаються.",
  "storage.historyFailed": "Не вдалося завантажити історію сховищ",
  "storage.shareDeleted": "Шару видалено",

  // services (health checker)
  "nav.services": "Сервіси",
  "nav.mcpKeys": "MCP-ключі",
  "services.title": "Сервіси",
  "services.subtitle": "Здоров'я зовнішніх сервісів за їх health-ендпоінтами",
  "services.addService": "Додати сервіс",
  "services.emptyTitle": "Сервісів ще немає",
  "services.emptyText": "Додайте health-URL сервісу (наприклад gnexus-auth) — панель опитуватиме його сама",
  "services.addTitle": "Додати сервіс",
  "services.name": "Назва",
  "services.url": "Health-URL",
  "services.urlHint": "Адреса, яку панель опитує (GET) для перевірки здоров'я, наприклад http://gnexus-creds.local/api/v1/health",
  "services.latency": "відгук {n} ms",
  "services.stateUp": "у порядку",
  "services.stateDegraded": "деградація",
  "services.stateDown": "недоступний",
  "services.statePending": "очікування",
  "services.modeMaintenance": "обслуговування",
  "services.modeReadonly": "лише читання",
  "services.modeDraining": "зняття з навантаження",
  "services.notResponding": "не відповідає — {message}",
  "services.serviceAdded": "Сервіс додано",
  "services.historyFailed": "Не вдалося завантажити історію сервісів",
  "services.serviceDeleted": "Сервіс видалено",
  "services.serviceUpdated": "Сервіс оновлено",
  "services.deleteTitle": "Видалити сервіс?",
  "services.deleteMessage": "«{name}» буде прибрано з health-моніторингу. Сам сервіс не зачіпається.",
  "services.back": "До списку",
  "services.notFound": "Сервіс не знайдено",
  "services.notFoundText": "Можливо, його прибрали з моніторингу",
  "services.edit": "Редагувати",
  "services.editTitle": "Редагувати сервіс",
  "services.chartTitle": "Час відгуку, ms",
  "services.logTitle": "Моменти недоступності",
  "services.colStart": "Початок",
  "services.colDuration": "Тривалість",
  "services.colWhat": "Що",
  "services.colReason": "Причина",
  "services.ongoing": "триває",
  "services.noIncidents": "Недоступності не зафіксовано",
  "services.durD": "д",
  "services.durH": "год",
  "services.durM": "хв",
  "services.durS": "с",

  // settings
  "settings.title": "Налаштування",
  "settings.languageToolbar": "Мова інтерфейсу",
  "settings.languageDescription": "Усталено панель слідує мові акаунта gnexus-auth; вибір тут перекриває її лише для GHard Monitor. «Авто» повертає мову акаунта.",
  "settings.languageDescriptionOpen": "Панель відкрита без акаунта — вибір зберігається у цьому браузері.",
  "settings.languageSaved": "Мову оновлено.",

  // language picker (native names — invariant across UI languages)
  "profile.languageAuto": "Авто (з акаунта)",
  "profile.langEn": "English",
  "profile.langUk": "Українська",
  "profile.langRu": "Русский",

  // status (single source for card/page/storage badges)
  "status.online": "у мережі",
  "status.offline": "офлайн",
  "status.waiting": "очікування",

  // relative time (fmtAgo / fmtUptime)
  "time.never": "ніколи",
  "time.now": "щойно",
  "time.secondsAgo": "{n} с тому",
  "time.minutesAgo": "{n} хв тому",
  "time.hoursAgo": "{n} год тому",
  "time.daysAgo": "{n} д тому",
  "time.upDaysHours": "{d} д {h} год",
  "time.upHoursMinutes": "{h} год {m} хв",
  "time.upMinutesSeconds": "{m} хв {s} c",

  // common
  "common.cancel": "Скасувати",
  "common.close": "Закрити",
  "common.copy": "Копіювати",
  "common.create": "Створити",
  "common.save": "Зберегти",
  "common.add": "Додати",
  "common.delete": "Видалити",
  "common.once": "один раз",
  "common.error": "Помилка",
  "common.failedToLoad": "Не вдалося завантажити",

  // MCP personal keys (handbook 10-platform/mcp.md)
  "mcpKeys.title": "MCP-ключі",
  "mcpKeys.myKeys": "Мої ключі",
  "mcpKeys.myKeysNote": "Bearer-токени ваших ІІ-агентів до /mcp цієї панелі.",
  "mcpKeys.defaultName": "Агент",
  "mcpKeys.namePlaceholder": "агент",
  "mcpKeys.generate": "Видати ключ",
  "mcpKeys.newKey": "Новий MCP-ключ",
  "mcpKeys.plaintextOnceName": "Ключ показується один раз при створенні; далі у списку — лише хвіст-хінт.",
  "mcpKeys.createdTitle": "Ключ створено",
  "mcpKeys.plaintextHint": "Скопіюйте ключ зараз — повторно він показаний не буде.",
  "mcpKeys.colKey": "Ключ",
  "mcpKeys.colTail": "Хвіст",
  "mcpKeys.colRole": "Роль",
  "mcpKeys.colCreated": "Створено",
  "mcpKeys.colUsed": "Викликано",
  "mcpKeys.colStatus": "Статус",
  "mcpKeys.colOwner": "Власник",
  "mcpKeys.badgeActive": "Активний",
  "mcpKeys.badgeRevoked": "Відкликано",
  "mcpKeys.revoke": "Відкликати",
  "mcpKeys.revokeTitle": "Відкликати ключ",
  "mcpKeys.revokeMessage": "Агенти з ключем \"{name}\" перестануть отримувати відповіді від /mcp.",
  "mcpKeys.revokedTitle": "Ключ відкликано",
  "mcpKeys.failed": "Не вдалося",
  "mcpKeys.emptyOwn": "Ключів немає — видайте ключ для свого агента.",
  "mcpKeys.emptyAll": "Поки ніхто не видавав ключів.",
  "mcpKeys.allKeysAdmin": "Ключі всіх користувачів",
  "mcpKeys.allKeysNote": "Усі видані персональні ключі; будь-який можна відкликати.",
  "mcpKeys.limits": "активних ключів: {count} з {limit}",
  "mcpKeys.howToConnect": "Як підключити агента",
  "mcpKeys.connectNote": "Транспорт — streamable HTTP; авторизація — персональним ключем з цієї сторінки. Приклад для Claude Code:",
  "mcpKeys.authOff": "Персональні MCP-ключі працюють за увімкненого входу gnexus-auth. У відкритій панелі (та для скриптів) використовуйте GHARD_ADMIN_TOKEN.",
};