// Russian primary copy. To add a string:
//   1. add the key + RU value here (this file is the canonical key list — `en.ts`
//      and the `StringKey` type derive from it),
//   2. add the same key + EN value in `en.ts`,
//   3. consume via `t('key', { var: 'x' })` in components.
// Interpolation uses `{name}` placeholders resolved against the second arg.
//
// The widget no longer renders a hero (avatar/name/handle/description) —
// that block lives in the host's BotShellHero. Status is surfaced inline
// inside the relevant section.

export const RU = {
  // --- Inline section status ---------------------------------------------
  'status.unknown': 'Проверка статуса…',
  'status.disconnected': 'Discord не привязан',
  'status.connected': 'Discord привязан',
  'status.connected-as': 'Discord привязан как {handle}',
  'status.connection-dead': 'Соединение с Discord потеряно',
  'status.token-stored': 'Сессия Discord не активна',
  'status.qr-verifying': 'Проверяем вход…',
  'status.logging-out': 'Завершение сеанса…',
  'status.reconnecting': 'Переподключаюсь к Discord…',
  // --- Section headers ---------------------------------------------------
  'card.login-qr.name': 'Войти по QR-коду',
  // Discord QR требует МОБИЛЬНОЕ приложение Discord (legacy remoteauth
  // не работает с десктопным клиентом) — это важная подсказка, чтобы у
  // пользователя без мобильного клиента не возникло тупика «попробовал
  // и не работает».
  'card.login-qr.desc': 'Отсканировать QR из мобильного приложения Discord',
  'card.refresh.aria': 'Обновить статус',
  'card.refresh.label': 'Обновить статус',
  'card.refresh.name': 'Обновить статус',
  'card.refresh.desc': 'Перепроверить, привязан ли Discord',
  'card.refresh.in-flight': 'Проверяю…',
  // --- About panel -------------------------------------------------------
  'card.about.name': 'Как работает Discord-бот',
  'card.about.desc': 'Вход, безопасность и исходный код',
  'about.title': 'О боте Discord',
  'about.body-1':
    'Этот бот подключает Discord к Vojo. После входа личные чаты и серверы Discord появятся в списке чатов Vojo, а ответы из приложения Vojo будут отправляться собеседникам как обычные сообщения в Discord.',
  'about.body-2':
    'Для входа нужен мобильный клиент Discord — отсканируйте QR-код через «Настройки → Сканировать QR-код». Десктопный Discord или браузер для входа не подходят: используется механизм remoteauth, который доступен только в мобильном приложении.',
  'about.body-3':
    'Подключение работает через open-source мост mautrix-discord. Он создаёт Discord-сессию на сервере Vojo и использует её для связи Discord с вашим аккаунтом Vojo: получает сообщения из Discord и отправляет ваши ответы обратно.',
  'about.github-label': 'Исходный код моста открыт на GitHub:',
  'about.github-url': 'https://github.com/mautrix/discord',
  'about.body-4':
    'Отозвать доступ можно в любой момент — кнопкой «Выйти из Discord» здесь, либо в самом Discord через «Настройки → Устройства → Выйти из Vojo».',
  'about.close': 'Закрыть',
  'about.aria-close': 'Закрыть «О боте»',
  // --- QR form -----------------------------------------------------------
  // Discord QR не ротируется в отличие от Telegram MTProto — мост держит
  // одну сессию remoteauth до успеха, ошибки или таймаута. Поэтому в
  // тексте говорим про «отсканируйте этот QR-код», без указаний на
  // обновление, и таймаут показываем «всего окна» одной строкой.
  'auth-card.qr.title': 'Вход по QR-коду',
  'auth-card.qr.hint': 'Откройте мобильный Discord и отсканируйте этот QR-код.',
  'auth-card.qr.preparing': 'Готовим QR-код…',
  'auth-card.qr.aria': 'QR-код для входа в Discord. Отсканируйте его телефоном.',
  'auth-card.qr.countdown': 'На сканирование осталось {minutes}:{seconds}',
  'auth-card.qr.expired': 'Окно входа истекло. Нажмите «Отмена» и попробуйте снова.',
  'auth-card.qr.step-1': 'Откройте мобильное приложение Discord.',
  'auth-card.qr.step-2': 'Откройте «Настройки → Сканировать QR-код».',
  'auth-card.qr.step-3': 'Отсканируйте QR-код и подтвердите вход на телефоне.',
  // --- hCaptcha challenge -----------------------------------------------
  // Discord иногда требует решить hCaptcha перед завершением remoteauth —
  // anti-abuse-сигнал, не зависящий от конкретного юзера. Vojo-патч
  // отдаёт челлендж сюда в виджет; пользователь решает, токен уходит
  // обратно на мост и логин завершается. Текст не упоминает «бан»: это
  // обычный механизм Discord, а не санкция.
  'auth-card.captcha.title': 'Подтвердите, что вы не робот',
  'auth-card.captcha.hint':
    'Discord попросил решить капчу. Решите её ниже — после этого вход продолжится автоматически.',
  'auth-card.captcha.load-error':
    'Не удалось загрузить капчу. Проверьте сеть и нажмите «Отмена», затем войдите снова.',
  // --- Shared form chrome ------------------------------------------------
  // Cancel в Discord-flow ЛОКАЛЬНЫЙ: legacy-мост не имеет команды отмены
  // активного login-qr, поэтому кнопка просто возвращает виджет в
  // disconnected, а серверная сторона сама истекает по таймауту remoteauth
  // (~2 минуты по умолчанию). Это написано в about.body-2, и пользователь,
  // увидев «Окно входа истекло», понимает, что стало с QR.
  'auth-card.cancel': 'Отмена',
  'auth-card.waiting-hint': 'Бот ещё думает… ответ может идти до 30 секунд.',
  // --- Inline errors -----------------------------------------------------
  'auth-error.captcha-required':
    'Discord потребовал CAPTCHA — вход через QR временно недоступен. Попробуйте позже или войдите через токен в чате с ботом.',
  'auth-error.captcha-send-failed':
    'Не удалось отправить ответ на CAPTCHA. Проверьте сеть и попробуйте войти заново.',
  'auth-error.captcha-expired': 'CAPTCHA устарела — нажмите «Войти по QR-коду» и решите её заново.',
  'auth-error.login-failed': 'Не удалось войти: {reason}',
  'auth-error.prepare-failed': 'Не удалось подготовить вход: {reason}',
  'auth-error.websocket-failed': 'Не удалось подключиться к серверу входа: {reason}',
  'auth-error.connect-after-login-failed':
    'Вход прошёл, но соединиться с Discord не получилось: {reason}',
  'auth-error.already-logged-in': 'Вы уже вошли в Discord — обновите статус.',
  'auth-error.unknown-command': 'Бот не знает эту команду — проверьте префикс в config.json.',
  'auth-error.disconnect-failed': 'Не удалось отключиться: {reason}',
  // --- Logout / Reconnect ------------------------------------------------
  // Reconnect-action нужен только в connection_dead / token_stored —
  // здоровая сессия не показывает кнопку. Текст глагольный, без префиксов.
  'card.reconnect.name': 'Переподключиться',
  'card.reconnect.desc': 'Восстановить соединение с Discord без повторного входа',
  'card.logout.name': 'Выйти из Discord',
  'card.logout.desc': 'Завершить сеанс на этом аккаунте',
  'card.logout.confirm-prompt': 'Точно выйти?',
  'card.logout.confirm-yes': 'Выйти',
  'card.logout.confirm-no': 'Отмена',
  // --- Open Discord space (Vojo bridge sentinel) ------------------------
  'card.open-space.name': 'Открыть в Каналах',
  'card.open-space.desc': 'Перейти в спейс Discord со списком чатов и серверов',
  // --- Diagnostics in transcript ----------------------------------------
  'diag.space-ready': 'Discord-спейс готов к открытию.',
  'diag.connecting': 'Соединение с Vojo… ожидаем capability handshake.',
  'diag.ready': 'Готов отправлять команды.',
  'diag.checking-status': 'Проверяю статус подключения…',
  'diag.send-failed': 'ошибка отправки: {message}',
  'diag.history-marker': '─── история ───',
  'diag.history-unavailable': 'Не удалось прочитать историю — проверяю статус заново.',
  // QR-сообщения никогда не выводятся целиком в transcript — body содержит
  // токен `https://discord.com/ra/…`, который мост стирает после скана;
  // сохранять его в DOM-логе виджета означало бы пережить эту защиту.
  // Поэтому в логе только нейтральные диагностические строки.
  'diag.qr-issued': 'QR-код выдан.',
  'diag.qr-consumed': 'QR-код использован — мост подтверждает скан.',
  'diag.captcha-issued': 'Discord прислал CAPTCHA — решите её на форме выше.',
  // --- Bootstrap failure -------------------------------------------------
  'bootstrap.failed': 'Widget не запустился',
  'bootstrap.missing-params': 'Отсутствуют обязательные параметры URL: {names}.',
  'bootstrap.embedded-only': 'Эта страница предназначена для встраивания Vojo по маршруту {route}.',
} as const;

export type StringKey = keyof typeof RU;
