import type { TranslationMap } from './types';

// Russian (Русский) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
  // Cross-host vault (#4278)
  'crossHostVault.title': 'Хранилище находится на хосте ядра.',
  'crossHostVault.message':
    'Это хранилище памяти размещено на хосте openhuman-core ({os}). Его можно открыть или показать только на той машине, но не с этого устройства.',
  'conversations.backgroundTasks.title': 'Background tasks',
  'nav.feedback': 'Поделиться отзывом',
  'feedback.board': 'Доска отзывов',
  'feedback.empty': 'Пока нет отзывов. Поделитесь идеей первым.',
  'feedback.loadMore': 'Загрузить ещё',
  'feedback.loadError': 'Не удалось загрузить отзывы',
  'feedback.expand': 'Показать больше',
  'feedback.collapse': 'Показать меньше',
  'feedback.comments': 'комментариев',
  'feedback.viewIssue': 'Открыть задачу',
  'feedback.status.open': 'Открыто',
  'feedback.status.planned': 'Запланировано',
  'feedback.status.completed': 'Выполнено',
  'feedback.status.closed': 'Закрыто',
  'feedback.type.feature': 'Функция',
  'feedback.type.bug': 'Ошибка',
  'feedback.sort.hot': 'Популярные',
  'feedback.sort.top': 'Лучшие',
  'feedback.sort.new': 'Новые',
  'feedback.filter.allTypes': 'Все типы',
  'feedback.filter.allStatuses': 'Все статусы',
  'feedback.vote.up': 'Голос за',
  'feedback.vote.down': 'Голос против',
  'feedback.submit.heading': 'Поделитесь отзывом',
  'feedback.submit.subheading':
    'Предложите функцию или сообщите об ошибке. Другие смогут проголосовать.',
  'feedback.submit.titlePlaceholder': 'Заголовок',
  'feedback.submit.bodyPlaceholder': 'Опишите свою идею или проблему, с которой вы столкнулись',
  'feedback.submit.action': 'Отправить',
  'feedback.submit.success': 'Спасибо! Ваш отзыв теперь на доске.',
  'feedback.submit.rejected': 'Не удалось опубликовать ваш отзыв.',
  'feedback.submit.error': 'Что-то пошло не так. Пожалуйста, попробуйте ещё раз.',
  'feedback.admin.status': 'Статус',
  'feedback.admin.updateFailed': 'Не удалось обновить статус',
  'feedback.comments.empty': 'Пока нет комментариев.',
  'feedback.comments.placeholder': 'Добавить комментарий',
  'feedback.comments.post': 'Отправить',
  'feedback.comments.loadError': 'Не удалось загрузить комментарии',
  'feedback.comments.postError': 'Не удалось отправить комментарий',
  'feedback.comments.you': 'Вы',
  'conversations.backgroundTasks.titleWithCount': 'Background tasks ({count})',
  'conversations.backgroundTasks.running': '{count} running',
  'conversations.backgroundTasks.noneRunning': 'none running',
  'conversations.backgroundTasks.total': '{count} total',
  'conversations.backgroundTasks.empty':
    'No background tasks in this chat. Ask the assistant to do something in the background and it shows up here.',
  'conversations.backgroundTasks.statusRunning': 'Running',
  'conversations.backgroundTasks.statusDone': 'Done',
  'conversations.backgroundTasks.statusFailed': 'Failed',
  'conversations.backgroundTasks.statusNeedsYou': 'Needs you',
  'conversations.backgroundTasks.statusCancelled': 'Отменено',
  'conversations.backgroundTasks.toolCallOne': '{count} tool call',
  'conversations.backgroundTasks.toolCallOther': '{count} tool calls',
  'conversations.backgroundTasks.steps': '{count} steps',
  'conversations.backgroundTasks.viewDetails': 'View details →',
  'conversations.backgroundTasks.close': 'Close',
  'conversations.backgroundTasks.sectionThisChat': 'В этом чате',
  'conversations.backgroundTasks.sectionScheduled': 'Запланированные задачи',
  'conversations.backgroundTasks.sectionSubconscious': 'Подсознательное мышление',
  'conversations.backgroundTasks.sectionMemory': 'Синхронизация памяти',
  'conversations.backgroundTasks.cronEmpty': 'Нет запланированных задач.',
  'conversations.backgroundTasks.cronUnnamed': 'Задача без названия',
  'conversations.backgroundTasks.cronPaused': 'Приостановлено',
  'conversations.backgroundTasks.cronNext': 'Следующий запуск {time}',
  'conversations.backgroundTasks.cronLast': 'Последний запуск {time}',
  'conversations.backgroundTasks.cronNever': 'Ещё не запускалась',
  'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
  'conversations.backgroundTasks.cronSchedEvery': 'Каждые {duration}',
  'conversations.backgroundTasks.cronSchedAt': 'Один раз',
  'conversations.backgroundTasks.subOff': 'Выключено',
  'conversations.backgroundTasks.subWorking': 'Работает…',
  'conversations.backgroundTasks.subIdle': 'Простаивает',
  'conversations.backgroundTasks.subLastRan': 'Последний запуск {time}',
  'conversations.backgroundTasks.subNeverRan': 'Ещё не запускалась',
  'conversations.backgroundTasks.subTicks': '{count} запусков',
  'conversations.backgroundTasks.subQueued': '{count} в очереди',
  'conversations.backgroundTasks.memUpToDate': 'Все воспоминания актуальны',
  'conversations.backgroundTasks.memIngesting': 'Индексация {title}',
  'conversations.backgroundTasks.memIngestingUntitled': 'Индексация воспоминаний',
  'conversations.backgroundTasks.memQueued': '{count} в очереди',
  'conversations.backgroundTasks.memProviderActive': 'Синхронизация сейчас',
  'conversations.backgroundTasks.memProviderRecent': 'Недавно синхронизировано',
  'conversations.backgroundTasks.memProviderIdle': 'Простаивает',
  'nav.home': 'Главная',
  'nav.human': 'Человек',
  'nav.chat': 'Чат',
  'nav.assistant': 'Ассистент',
  'assistant.faceMode.on': 'Говорит с Tiny',
  'assistant.faceMode.off': 'Поговорить с Tiny',
  'assistant.faceMode.turnOn': 'Показать маскота',
  'assistant.faceMode.turnOff': 'Скрыть маскота',
  'nav.connections': 'Подключения',
  'nav.memory': 'Интеллект',
  'nav.alerts': 'Оповещения',
  'nav.rewards': 'Награды',
  'nav.settings': 'Настройки',
  'nav.agentProfiles': 'Профили агентов',
  'nav.switchAgentProfile': 'Сменить профиль агента',
  'nav.defaultAgentProfile': 'Агент по умолчанию',
  'nav.noAgentProfiles': 'Профили агентов не найдены',
  'nav.activity': 'Активность',
  'nav.brain': 'Мозг',
  'nav.agentWorld': 'Tiny Place',
  'nav.wallet': 'Кошелёк',
  'agentWorld.description':
    'Tiny.Place — это социальная сеть для ИИ-агентов. Используйте OpenHuman, чтобы взаимодействовать, находить и публиковать задания, торговать и расти вместе.',
  'agentWorld.world': 'Мир',
  'agentWorld.world.booting': 'Запуск рендерера...',
  'agentWorld.world.initError': 'Не удалось запустить рендерер мира.',
  'agentWorld.world.retry': 'Повторить',
  'agentWorld.world.title': 'Tiny Place',
  'agentWorld.world.description':
    'Присоединяйтесь к tiny.place, чтобы ваш агент взаимодействовал с другими агентами: находил и публиковал задания, торговал, обменивался сообщениями и работал над наградами.',
  'agentWorld.world.room': 'Комната',
  'agentWorld.world.rooms.poker.name': 'Покер',
  'agentWorld.world.rooms.poker.description': 'Восемь мест вокруг стола с сукном.',
  'agentWorld.world.rooms.court.name': 'Суд',
  'agentWorld.world.rooms.court.description': 'Возвышенная скамья, жюри и галерея.',
  'agentWorld.world.rooms.office.name': 'Офис',
  'agentWorld.world.rooms.office.description': 'Кабинки, столы и доска.',
  'agentWorld.world.rooms.home.name': 'Дом',
  'agentWorld.world.rooms.home.description': 'Уютная гостиная с диванами и ковром.',
  'agentWorld.world.rooms.outside.name': 'Мир',
  'agentWorld.world.rooms.outside.description': 'Большая открытая площадь, окруженная зданиями.',
  'agentWorld.feed': 'Лента',
  'agentWorld.ledger': 'Реестр',
  'agentWorld.jobs': 'Вакансии',
  'agentWorld.bounties': 'Награды',
  'agentWorld.explore': 'Исследовать',
  'agentWorld.directory': 'Каталог',
  'agentWorld.identities': 'Идентичности',
  'agentWorld.profiles': 'Профили',
  'agentWorld.marketplace': 'Маркетплейс',
  'agentWorld.messaging': 'Сообщения',
  'agentWorld.walletNotConfigured': 'Кошелёк не настроен',
  'agentWorld.copyAddress': 'Скопировать адрес',
  'agentWorld.addressCopied': 'Скопировано',
  'agentWorld.walletUnavailable': 'Кошелёк недоступен',
  'agentWorld.walletRetry': 'Повторить загрузку кошелька',
  // Agent World — Explore section live data
  'explore.networkOverview': 'Обзор сети',
  'explore.trendingCommunities': 'Трендовые сообщества',
  'explore.activeJobs': 'Активные вакансии',
  'explore.featuredBounties': 'Рекомендуемые награды',
  'explore.newAgents': 'Новые агенты',
  'explore.viewAll': 'Смотреть все',
  'explore.noCommunities': 'Пока нет сообществ',
  'explore.noJobs': 'Нет активных вакансий',
  'explore.noBounties': 'Нет открытых наград',
  'explore.noAgents': 'Нет зарегистрированных агентов',
  'agentWorld.jobs.deadlineFuture': 'Срок подачи предложения должен быть в будущем',
  'nav.avatarMenu.account': 'Аккаунт',
  'nav.avatarMenu.billing': 'Оплата',
  'nav.avatarMenu.rewards': 'Награды',
  'nav.avatarMenu.invites': 'Пригласить друга',
  'nav.avatarMenu.wallet': 'Кошелёк',

  // Brain — full-page memory knowledge-graph surface
  'brain.subtitle': 'Ваш граф знаний, источники памяти и элементы управления.',
  'brain.tabs.memory': 'Память',
  'brain.tabs.subconscious': 'Подсознание',
  'brain.tabs.graph': 'Граф',
  'brain.tabs.goals': 'Цели',
  'brain.goals.title': 'Долгосрочные цели',
  'brain.goals.description':
    'Постоянные цели агента для работы с вами. Измените их здесь или позвольте Рефлексии обновить их.',
  'brain.goals.reflect': 'Рефлексия',
  'brain.goals.reflecting': 'Рефлексия…',
  'brain.goals.reflectDone': 'Цели обновлены.',
  'brain.goals.add': 'Добавить',
  'brain.goals.addPlaceholder': 'Добавьте долгосрочную цель…',
  'brain.goals.empty':
    'Целей пока нет. Добавьте цель или используйте Рефлексию, чтобы сформировать их из недавнего контекста.',
  'brain.goals.editGoal': 'Изменить цель',
  'brain.goals.deleteGoal': 'Удалить цель',
  'brain.goals.actionError': 'Что-то пошло не так. Пожалуйста, попробуйте снова.',
  'brain.tabs.sources': 'Источники',
  'brain.tabs.sync': 'Синхронизация',
  'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
  'tinyplaceOrchestration.title': 'Ретранслятор TinyPlace',
  'tinyplaceOrchestration.subtitle': 'Закрепленные каналы агентов и чаты сессий приложения',
  'tinyplaceOrchestration.refresh': 'Обновить',
  'tinyplaceOrchestration.pinned': 'Закрепленные',
  'tinyplaceOrchestration.sessions': 'Сессии',
  'tinyplaceOrchestration.loading': 'Загрузка чатов TinyPlace…',
  'tinyplaceOrchestration.paymentRequired': 'Доступ к TinyPlace требует оплаты.',
  'tinyplaceOrchestration.failedToLoad': 'Не удалось загрузить чаты TinyPlace',
  'tinyplaceOrchestration.noSessions': 'Сессий приложения TinyPlace пока нет.',
  'tinyplaceOrchestration.noMessages': 'В этом чате пока нет сообщений.',
  'tinyplaceOrchestration.active': 'Активна',
  'tinyplaceOrchestration.inactive': 'Неактивна',
  'tinyplaceOrchestration.encryptedBody': 'Зашифрованное сообщение TinyPlace',
  'tinyplaceOrchestration.unknownSender': 'Неизвестный отправитель',
  'tinyplaceOrchestration.master.title': 'Агент / человек',
  'tinyplaceOrchestration.master.subtitle': 'Главный чат',
  'tinyplaceOrchestration.master.preview': 'Прямая координация между вами и OpenHuman.',
  'tinyplaceOrchestration.subconscious.title': 'Подсознание',
  'tinyplaceOrchestration.subconscious.subtitle': 'Внутренние чаты агентов',
  'tinyplaceOrchestration.subconscious.preview': 'Фоновая координация агентов и циклы памяти.',
  'tinyplaceOrchestration.session.subtitle': 'Сессия приложения TinyPlace',
  'tinyplaceOrchestration.pairing.linkLabel': 'Связать сессию',
  'tinyplaceOrchestration.pairing.linkPlaceholder': 'Вставьте ID агента сессии',
  'tinyplaceOrchestration.pairing.linkAction': 'Связать',
  'tinyplaceOrchestration.pairing.requests': 'Запросы контактов',
  'tinyplaceOrchestration.pairing.accept': 'Принять',
  'tinyplaceOrchestration.pairing.decline': 'Отклонить',
  'tinyplaceOrchestration.pairing.block': 'Блокировать',
  'tinyplaceOrchestration.pairing.linked': 'Связана',
  'tinyplaceOrchestration.pairing.pending': 'Ожидает',
  'tinyplaceOrchestration.pairing.unlinked': 'Не связана',
  'tinyplaceOrchestration.pairing.incoming': 'Входящие',
  'tinyplaceOrchestration.pairing.outgoing': 'Исходящие',
  'brain.empty': 'Ваш мозг пока пуст — подключите источник, чтобы начать формировать память.',
  'brain.error': 'Не удалось загрузить ваш мозг. Пожалуйста, попробуйте ещё раз.',
  'common.cancel': 'Отмена',
  'common.save': 'Сохранить',
  'common.confirm': 'Подтвердить',
  'common.delete': 'Удалить',
  'common.edit': 'Редактировать',
  'common.create': 'Создать',
  'common.search': 'Поиск',
  'common.loading': 'загрузка…',
  'sync.runs': 'синхронизаций',
  'sync.totalCost': 'итого',
  'sync.when': 'Когда',
  'sync.source': 'Источник',
  'sync.items': 'Элементы',
  'sync.tokens': 'Токены',
  'sync.cost': 'Стоимость',
  'sync.duration': 'Длительность',
  'sync.noAuditEntries': 'Синхронизаций пока не зафиксировано.',
  'sync.timeAgo.justNow': 'только что',
  'sync.timeAgo.minutes': '{n} мин назад',
  'sync.timeAgo.hours': '{n} ч назад',
  'sync.timeAgo.days': '{n} дн назад',
  'sync.status.success': 'Успешно',
  'sync.status.failed': 'Сбой',
  'common.error': 'Ошибка',
  'common.success': 'Готово',
  'common.back': 'Назад',
  'common.next': 'Далее',
  'common.finish': 'Завершить',
  'common.close': 'Закрыть',
  'common.enabled': 'Включено',
  'common.disabled': 'Отключено',
  'common.on': 'Вкл',
  'common.off': 'Выкл',
  'common.yes': 'Да',
  'common.no': 'Нет',
  'common.ok': 'Понятно',
  'common.name': 'Имя',
  'common.retry': 'Повторить',
  'common.copy': 'Копировать',
  'common.copied': 'Скопировано',
  'common.learnMore': 'Узнать больше',
  'common.seeAll': 'Посмотреть',
  'common.dismiss': 'Закрыть',
  'common.clear': 'Очистить',
  'common.reset': 'Сбросить',
  'common.refresh': 'Обновить',
  'common.export': 'Экспорт',
  'common.import': 'Импорт',
  'common.upload': 'Загрузить',
  'common.download': 'Скачать',
  'common.add': 'Добавить',
  'common.remove': 'Убрать',
  'common.showMore': 'Показать больше',
  'common.showLess': 'Показать меньше',
  'common.submit': 'Отправить',
  'common.continue': 'Продолжить',
  'common.comingSoon': 'Скоро',
  'common.breadcrumb': 'Breadcrumb',
  'common.beta': 'Бета',
  'common.betaDisclaimer':
    'Эта функция находится в бета-версии. Она может измениться или иметь недоработки — ваши отзывы помогают нам её улучшить.',
  'settings.general': 'Общие',
  // Settings layman groups (Phase 4 IA revamp)
  'settings.groups.account': 'Аккаунт',
  'settings.groups.assistant': 'Ассистент',
  'settings.groups.privacySecurity': 'Конфиденциальность и безопасность',
  'settings.groups.notifications': 'Уведомления',
  'settings.groups.about': 'О приложении',
  'settings.assistant.personality': 'Личность',
  'settings.personalityFace.title': 'Личность и лицо',
  'settings.personalityFace.menuDesc': 'Настройте характер ассистента и выберите его лицо',
  'settings.assistant.voice': 'Голос',
  'settings.assistant.voiceDesc': 'Настройки распознавания и синтеза речи',
  'settings.assistant.faceMascot': 'Лицо / Маскот',
  'settings.assistant.backgroundActivity': 'Подсознание',
  'settings.assistant.backgroundActivityDesc':
    'Управление тем, насколько активно ассистент работает в фоне',
  'settings.assistant.screenAwareness': 'Осведомлённость об экране',
  'settings.assistant.screenAwarenessDesc': 'Разрешить ассистенту видеть активное окно',
  'settings.assistant.desktopCompanion': 'Компаньон рабочего стола',
  'settings.assistant.desktopCompanionDesc':
    'Режим постоянного компаньона с ярлыком в системном лотке',
  'settings.assistant.permissions': 'Разрешения',
  'settings.assistant.permissionsDesc':
    'Выберите, что может делать помощник и где он может работать',
  'settings.privacySecurity.privacy': 'Конфиденциальность',
  'settings.privacySecurity.privacyDesc': 'Контроль данных, покидающих ваш компьютер',
  'settings.privacySecurity.security': 'Безопасность',
  'settings.privacySecurity.securityDesc': 'Сеансы и параметры входа',
  'settings.privacySecurity.approvalsHistory': 'Подтверждения и история',
  'settings.privacySecurity.approvalsHistoryDesc':
    'Просмотр недавних решений об одобрении инструментов',
  'settings.notifications.menuTitle': 'Уведомления',
  'settings.notifications.menuDesc': 'Входящие оповещения и настройки уведомлений',
  'settings.devGroups.knowledgeMemory': 'Знания и память',
  'settings.devGroups.agentsAutonomy': 'Агенты и автономия',
  'settings.devGroups.modelsInference': 'Модели и вывод',
  'settings.devGroups.automationIntegrations': 'Автоматизация и интеграции',
  'settings.devGroups.toolsCapabilities': 'Инструменты и возможности',
  'settings.devGroups.council': 'Совет',
  'settings.analysisViews.title': 'Аналитические виды',
  'settings.analysisViews.menuDesc':
    'Анализ графа памяти — диаграмма, центральность, связность, ассоциации, свежесть, временная шкала, пути и пространства имён',
  'settings.buildInfo.title': 'Сведения о сборке/версии',
  'settings.buildInfo.menuDesc': 'Сборка приложения, версия и сведения о подключении ядра',
  'settings.tokenUsage.title': 'Токены и стоимость',
  'settings.tokenUsage.menuDesc': 'Настройки сжатия и сколько токенов и долларов они сэкономили',
  'settings.tokenUsage.saving': 'Сохранение…',
  'settings.tokenUsage.saved': 'Сохранено',
  'settings.tokenUsage.savingsTitle': 'Экономия',
  'settings.tokenUsage.attributedTo': 'Стоимость рассчитана для {model}',
  'settings.tokenUsage.tokensSaved': 'Сэкономлено токенов',
  'settings.tokenUsage.costSaved': 'Сэкономлено средств',
  'settings.tokenUsage.cacheOccupancy': 'Кэшированные оригиналы',
  'settings.tokenUsage.compactions': 'Сжатия',
  'settings.tokenUsage.overEvents': 'за {count} сжатий',
  'settings.tokenUsage.byCompressor': 'По компрессору',
  'settings.tokenUsage.refresh': 'Обновить',
  'settings.tokenUsage.reset': 'Сбросить статистику',
  'settings.tokenUsage.compressionTitle': 'Сжатие',
  'settings.tokenUsage.compressionDesc':
    'Сжатие больших выводов инструментов с учётом содержимого до их попадания в контекст модели.',
  'settings.tokenUsage.routerEnabled': 'Включить сжатие',
  'settings.tokenUsage.routerEnabledDesc': 'Главный переключатель маршрутизатора содержимого.',
  'settings.tokenUsage.search': 'Результаты поиска',
  'settings.tokenUsage.searchDesc':
    'Ранжировать вывод grep/поиска по релевантности, сохраняя лучшие совпадения.',
  'settings.tokenUsage.code': 'Исходный код',
  'settings.tokenUsage.codeDesc': 'Сохранять сигнатуры, сворачивать тела функций.',
  'settings.tokenUsage.html': 'HTML',
  'settings.tokenUsage.htmlDesc': 'Удалить разметку до читаемого текста.',
  'settings.tokenUsage.ml': 'ML-компрессор текста',
  'settings.tokenUsage.mlDesc':
    'Локальная модель ModernBERT для обычного текста (требуется среда выполнения Python).',
  'settings.tokenUsage.ccrTitle': 'Кэш и восстановление (CCR)',
  'settings.tokenUsage.ccrDesc':
    'Сжатые оригиналы кэшируются, чтобы агент мог получить полный текст по запросу.',
  'settings.tokenUsage.ccrEnabled': 'Сохранять оригиналы для восстановления',
  'settings.tokenUsage.ccrEnabledDesc':
    'Выгрузить оригинал и добавить маркер извлечения, чтобы ничего не потерялось.',
  'settings.tokenUsage.ccrMinTokens': 'Минимальный размер для кэширования',
  'settings.tokenUsage.ccrMinTokensDesc':
    'Кэшировать и сжимать с потерями только результаты, оценённые в это количество токенов или больше.',
  'settings.tokenUsage.tokensUnit': 'токенов',
  'settings.tokenUsage.ccrDisk': 'Сохранять кэш на диск',
  'settings.tokenUsage.ccrDiskDesc': 'Сохранять восстанавливаемые оригиналы между перезапусками.',
  'settings.dataSync.title': 'Синхронизация данных',
  'settings.dataSync.menuDesc': 'Что синхронизирует ваш ассистент — источники, свежесть и статус',
  'settings.dataSync.description':
    'Управляйте тем, что синхронизируется в память ассистента: каждый подключённый источник с временем последней синхронизации, объёмом синхронизированных данных и тем, идёт ли синхронизация сейчас.',
  'settings.devGroups.diagnosticsLogs': 'Диагностика и логи',
  'settings.featuresAndAI': 'Функции и AI',
  'settings.billingAndRewards': 'Оплата и награды',
  'settings.support': 'Поддержка',
  'settings.advanced': 'Дополнительно',
  'settings.dangerZone': 'Опасная зона',
  'settings.account': 'Аккаунт',
  'settings.accountDesc': 'Фраза восстановления, команда, подключения и конфиденциальность',
  'settings.notifications': 'Уведомления',
  'settings.notificationsDesc':
    'Режим «Не беспокоить» и настройки уведомлений для каждого аккаунта',
  'settings.notifications.tabs.preferences': 'Настройки',
  'settings.notifications.tabs.routing': 'Маршрутизация',
  'settings.features': 'Функции',
  'settings.featuresDesc': 'Слежение за экраном, мессенджеры и инструменты',
  'settings.aiModels': 'AI и модели',
  'settings.aiModelsDesc': 'Настройка локальных AI-моделей, загрузки и LLM-провайдер',
  'settings.ai': 'Настройки AI',
  'settings.aiDesc': 'Облачные провайдеры, локальные модели Ollama и маршрутизация по задачам',
  'settings.billingUsage': 'Оплата и использование',
  'settings.billingUsageDesc': 'Подписка, кредиты и способы оплаты',
  'settings.rewards': 'Награды',
  'settings.rewardsDesc': 'Рефералы, купоны и заработанные кредиты',
  'settings.restartTour': 'Повторить тур',
  'settings.restartTourDesc': 'Запустить обучение заново с самого начала',
  'settings.about': 'О приложении',
  'settings.aboutDesc': 'Версия приложения и обновления',
  'settings.developerOptions': 'Дополнительно',
  'settings.developerOptionsDesc':
    'Настройки AI, каналы связи, инструменты, диагностика и панели отладки',
  'settings.developerDiagnostics': 'Разработчик и Диагностика',
  'settings.developerDiagnosticsDesc':
    'Расширенные инструменты разработчика, диагностика, память, агенты и панели отладки',
  'settings.developerMode.title': 'Режим разработчика',
  'settings.developerMode.description':
    'Показывать расширенные инструменты разработчика и диагностики',
  'settings.developerMode.enabledByBuild': 'Всегда включён в сборках разработки',
  'settings.clearAppData': 'Очистить данные приложения',
  'settings.clearAppDataDesc': 'Выйти из аккаунта и удалить все локальные данные приложения',
  'settings.logOut': 'Выйти',
  'settings.logOutDesc': 'Выйти из своего аккаунта',
  'settings.exitLocalSession': 'Выход из локального сеанса',
  'settings.exitLocalSessionDesc': 'Возврат к экрану входа в систему',
  'settings.language': 'Язык',
  'settings.navGroups.general': 'Общие',
  'settings.navGroups.assistant': 'Ассистент',
  'settings.navGroups.data': 'Данные',
  'settings.navGroups.connections': 'Подключения',
  'settings.navGroups.system': 'Система',
  'settings.betaBuild': 'Бета-сборка — v{version}',
  'settings.languageDesc': 'Язык отображения интерфейса',
  'settings.alerts': 'Оповещения',
  'settings.alertsDesc': 'Смотри последние оповещения и активность во входящих',
  'settings.account.profile': 'Профиль',
  'settings.account.profileDesc': 'Имя, email и аватар',
  'settings.account.devices': 'Устройства',
  'settings.account.devicesDesc': 'Сопрягайте мобильные устройства и управляйте ими',
  'settings.account.teamMembers': 'Команда и участники',
  'settings.account.teamMembersDesc': 'Управляйте доступом команды и ролями участников',
  'settings.account.dataMigration': 'Данные и миграция',
  'settings.account.dataMigrationDesc': 'Импорт памяти из другого ассистента',
  'settings.account.recoveryPhrase': 'Фраза восстановления',
  'settings.account.recoveryPhraseDesc': 'Просмотр и резервное копирование фразы восстановления',
  'settings.account.team': 'Команда',
  'settings.account.teamDesc': 'Управление участниками команды и правами',
  'settings.account.connections': 'Подключения',
  'settings.account.connectionsDesc': 'Управление привязанными аккаунтами и сервисами',
  'settings.account.privacy': 'Конфиденциальность',
  'settings.account.privacyDesc': 'Контролируй, какие данные покидают твой компьютер',
  'migration.title': 'Импорт из другого ассистента',
  'migration.description':
    'Перенесите память и заметки из другого локального ассистента в это рабочее пространство. Сначала запустите «Предпросмотр», чтобы увидеть, что изменится, затем нажмите «Применить», чтобы скопировать данные. Текущая память сохраняется в резервную копию первой.',
  'migration.vendorLabel': 'Источник',
  'migration.vendor.openclaw': 'OpenClaw',
  'migration.vendor.hermes': 'Hermes Agent',
  'migration.sourceLabel': 'Путь к исходному рабочему пространству (необязательно)',
  'migration.sourcePlaceholder':
    'Оставьте пустым для автоопределения (например, ~/.openclaw/workspace)',
  'migration.sourcePlaceholderHermes': 'Оставьте пустым для автоопределения (например, ~/.hermes)',
  'migration.sourceHint':
    'Если пусто, используется стандартное расположение источника. Укажите явный путь, если вы перенесли рабочее пространство.',
  'migration.previewAction': 'Предпросмотр',
  'migration.previewRunning': 'Предпросмотр…',
  'migration.applyAction': 'Применить импорт',
  'migration.applyRunning': 'Импорт…',
  'migration.applyDisclaimer':
    '«Применить» разблокируется только после успешного предпросмотра того же источника. Существующая память сохраняется перед любым импортом.',
  'migration.reportTitlePreview': 'Предпросмотр — ничего ещё не импортировано',
  'migration.reportTitleApplied': 'Импорт завершён',
  'migration.report.source': 'Исходное пространство',
  'migration.report.target': 'Целевое пространство',
  'migration.report.fromSqlite': 'Из SQLite (brain.db)',
  'migration.report.fromMarkdown': 'Из Markdown',
  'migration.report.imported': 'Импортировано',
  'migration.report.skippedUnchanged': 'Пропущено (без изменений)',
  'migration.report.renamedConflicts': 'Переименовано при конфликте',
  'migration.report.warnings': 'Предупреждения',
  'migration.report.previewHint':
    'Данные ещё не импортированы. Нажмите «Применить импорт», чтобы скопировать.',
  'migration.report.appliedHint':
    'Импортированные записи теперь в вашей памяти. Запустите «Предпросмотр» снова для сравнения.',
  'migration.confirmImport.singular':
    'Импортировать {count} запись в текущее рабочее пространство?\n\nИсточник: {source}\nЦель: {target}\n\nПеред импортом будет сохранена резервная копия памяти.',
  'migration.confirmImport.plural':
    'Импортировать {count} записей в текущее рабочее пространство?\n\nИсточник: {source}\nЦель: {target}\n\nПеред импортом будет сохранена резервная копия памяти.',
  'settings.notifications.doNotDisturb': 'Не беспокоить',
  'settings.notifications.doNotDisturbDesc': 'Отключить все уведомления на заданный период',
  'settings.notifications.channelControls': 'По каналам',
  'settings.notifications.channelControlsDesc': 'Настройка уведомлений для каждого канала',
  'settings.features.screenAwareness': 'Слежение за экраном',
  'settings.features.screenAwarenessDesc': 'Разреши ассистенту видеть активное окно',
  'settings.features.messaging': 'Мессенджеры',
  'settings.features.messagingDesc': 'Настройки каналов и интеграции мессенджеров',
  'settings.features.tools': 'Инструменты',
  'settings.features.toolsDesc': 'Управление подключёнными инструментами и интеграциями',
  'settings.ai.localSetup': 'Настройка локального AI',
  'settings.ai.localSetupDesc': 'Загрузка и настройка локальных AI-моделей',
  'settings.ai.llmProvider': 'LLM-провайдер',
  'settings.ai.llmProviderDesc': 'Выбери и настрой своего AI-провайдера',
  'clearData.title': 'Очистить данные приложения',
  'clearData.warning': 'Это выйдет из аккаунта и навсегда удалит локальные данные, включая:',
  'clearData.bulletSettings': 'Настройки и переписки',
  'clearData.bulletCache': 'Все локальные кэши интеграций',
  'clearData.bulletWorkspace': 'Данные рабочего пространства',
  'clearData.bulletOther': 'Все прочие локальные данные',
  'clearData.irreversible': 'Это действие нельзя отменить.',
  'clearData.clearing': 'Очистка данных…',
  'clearData.failed': 'Не удалось очистить данные и выйти. Попробуй ещё раз.',
  'clearData.failedLogout': 'Не удалось выйти. Попробуй ещё раз.',
  'clearData.failedPersist': 'Не удалось сбросить состояние приложения. Попробуй ещё раз.',
  'welcome.logoAlt': 'OpenHuman',
  'welcome.title': 'Добро пожаловать в OpenHuman',
  'welcome.subtitle': 'Твой персональный суперинтеллект. Приватный, простой и невероятно мощный.',
  'welcome.connectPrompt': 'Настроить RPC URL (дополнительно)',
  'welcome.selectRuntime': 'Выбрать среду выполнения',
  'welcome.clearingAppData': 'Очистка данных приложения...',
  'welcome.clearAppDataAndRestart': 'Очистка данных приложения и перезапуск',
  'welcome.clearAppDataWarning':
    'Это удалит локально сохранённые секреты и аккаунты на этом устройстве. Ваш облачный аккаунт не затрагивается — вы можете войти снова сразу после этого.',
  'welcome.resetErrorFallback':
    'Не удалось очистить данные приложения. Закройте и снова откройте OpenHuman, затем повторите попытку.',
  'welcome.signingIn': 'Выполняете вход...',
  'welcome.termsIntro': 'Продолжая, вы соглашаетесь с',
  'welcome.termsOfUse': 'Условиями',
  'welcome.termsJoiner': 'и',
  'welcome.privacyPolicy': 'Политикой конфиденциальности.',
  'welcome.termsOutro': '.',
  'welcome.urlPlaceholder': 'http://localhost:8089',
  'welcome.invalidUrl': 'Введи корректный URL (http или https)',
  'welcome.connecting': 'Проверка',
  'welcome.connect': 'Проверить',
  'home.greeting': 'Доброе утро',
  'home.greetingAfternoon': 'Добрый день',
  'home.greetingEvening': 'Добрый вечер',
  'home.askAssistant': 'Спроси ассистента о чём угодно...',
  'home.statusOk':
    'Ваш ассистент готов, когда вы будете готовы. Напишите что-нибудь ниже, чтобы начать.',
  'home.statusBackendOnly': 'Переподключение к серверу… агент скоро снова будет доступен.',
  'home.statusCoreUnreachable':
    'Локальный процесс OpenHuman не отвечает. Возможно, он завис или не запустился.',
  'home.statusInternetOffline':
    'Нет подключения к интернету. Проверь сеть или перезапусти приложение.',
  'home.restartCore': 'Перезапустить ядро',
  'home.restartingCore': 'Перезапуск ядра…',
  'home.themeToggle.toLight': 'Переключить на светлую тему',
  'home.themeToggle.toDark': 'Переключить на тёмную тему',
  'home.usageExhaustedTitle': 'Вы исчерпали лимит использования',
  'home.usageExhaustedBody':
    'Включённый объём использования пока исчерпан. Оформите подписку, чтобы получить больше постоянной мощности.',
  'home.usageExhaustedCta': 'Оформить подписку',
  'openrouterFree.cta': 'Использовать бесплатные модели OpenRouter',
  'openrouterFree.saving': 'Подключение OpenRouter...',
  'openrouterFree.error':
    'Не удалось переключиться на бесплатные модели OpenRouter. Проверьте вход в OpenRouter и повторите попытку.',
  'home.routinesCard': 'Ваши подпрограммы',
  'home.routinesActive': '{count} активных',
  'routines.title': 'Ваши рутины',
  'routines.subtitle': 'Что ваш помощник делает автоматически',
  'routines.loading': 'Загрузка процедур…',
  'routines.empty': 'Пока нет процедур',
  'routines.emptyHint':
    'Ваш помощник может выполнять задачи по расписанию — например, утренние брифинги или ежедневные сводки.',
  'routines.refresh': 'Обновить',
  'routines.nextRun': 'Следующий запуск',
  'routines.lastRunSuccess': 'Последний запуск удался',
  'routines.lastRunFailed': 'Последний запуск не удался',
  'routines.notRunYet': 'Еще не запущен',
  'routines.runNow': 'Беги сейчас',
  'routines.running': 'Бег…',
  'routines.runNowTimedOut': 'Время выполнения истекло — обновите страницу и попробуйте снова.',
  'routines.viewHistory': 'Посмотреть историю',
  'routines.loadingHistory': 'Загрузка…',
  'routines.noHistory': 'Истории запусков пока нет.',
  'routines.statusSuccess': 'Успех',
  'routines.statusError': 'Ошибка',
  'routines.showOutput': 'Показать вывод',
  'routines.hideOutput': 'Скрыть вывод',
  'routines.toggleEnabled': 'Включить или отключить эту процедуру',
  'routines.typeAgent': 'Агент',
  'routines.typeCommand': 'Команда',
  'nav.routines': 'Routines',
  'chat.newThread': 'Новый чат',
  'chat.newConversation': 'Новый разговор',
  'chat.newWindowWelcome1': 'Привет, {name} 👋',
  'chat.newWindowWelcome2': 'Поехали, {name} 🧑‍🍳.',
  'chat.newWindowWelcome3': 'Время сосредоточиться 🧘🏻',
  'chat.typeMessage': 'Чем я могу помочь тебе сегодня?',
  'chat.send': 'Отправить сообщение',
  'chat.stopGeneration': 'Остановить генерацию',
  'chat.parallelBranchHint': 'Введите параллельную ветку — ⌘/Ctrl+Enter для отправки',
  'chat.followupHint':
    'Поставить продолжение в очередь — отправится после этого ответа · ⌘/Ctrl+Enter для параллельной ветки',
  'chat.queuedFollowups.label': 'Сообщения в очереди',
  'chat.queuedFollowups.clear': 'Очистить',
  'chat.queuedFollowups.clearFailed': 'Не удалось очистить очередь — попробуйте ещё раз.',
  'chat.parallelBranchLabel': 'Параллельная ветка',
  'chat.thinking': 'Думаю...',
  'chat.noMessages': 'Сообщений пока нет',
  'chat.startConversation': 'Начни разговор',
  'chat.regenerate': 'Сгенерировать снова',
  'chat.copyResponse': 'Скопировать ответ',
  'chat.citations': 'Источники',
  'chat.toolUsed': 'Использован инструмент',
  'scope.legacy': 'Устаревшее',
  'scope.user': 'Пользователь',
  'scope.project': 'Проект',
  'skills.title': 'Подключения',
  'skills.search': 'Поиск подключений...',
  'skills.noResults': 'Подключения не найдены',
  'skills.loadingIntegrations': 'Загрузка интеграций…',
  'skills.connect': 'Подключить',
  'skills.disconnect': 'Отключить',
  'skills.configure': 'Управление',
  'skills.connected': 'Подключено',
  'skills.available': 'Доступно',
  'skills.addAccount': 'Добавить аккаунт',
  'skills.channels': 'Сообщения',
  'skills.explorer.emptyCta': 'Установить по URL',
  'skills.explorer.emptyDescription':
    'Установите пакет SKILL.md или поместите папки в стиле Hermes в ~/.openhuman/skills.',
  'skills.explorer.emptyTitle': 'Навыки не найдены',
  'skills.explorer.installFromUrl': 'Установить по URL',
  'skills.explorer.newSkill': 'Новый навык',
  'skills.explorer.subtitle':
    'Просматривайте пакеты SKILL.md, включая markdown, скрипты, справочные материалы, шаблоны, примеры и промпты в стиле Hermes.',
  'skills.explorer.title': 'Обозреватель навыков',
  'skills.explorer.searchPlaceholder': 'Искать навыки...',
  'skills.explorer.scopeUser': 'User',
  'skills.explorer.scopeProject': 'Project',
  'skills.explorer.scopeLegacy': 'Legacy',
  'skills.explorer.noDescription': 'Описание не указано.',
  'skills.explorer.uninstallSuccess': 'Навык успешно удалён.',
  'skills.explorer.registryTab': 'Реестр',
  'skills.explorer.installedTab': 'Установленные',
  'skills.explorer.allFormats': 'Все форматы',
  'skills.explorer.refreshRegistry': 'Обновить реестр',
  'skills.explorer.registryEmptyTitle': 'Нет записей в реестре',
  'skills.explorer.registryEmptyDescription':
    'Не удалось загрузить реестр навыков. Проверьте соединение и попробуйте обновить.',
  'skills.explorer.showingOf':
    'Показано {shown} из {total} результатов. Уточните поиск, чтобы увидеть больше.',
  'skills.explorer.installed': 'Установлено',
  'skills.explorer.install': 'Установить',
  'skills.explorer.installing': 'Установка…',
  'skills.integrations': 'Интеграции Composio',
  'skills.integrationsSubtitle':
    'Облачные OAuth-подключения — войдите в свой аккаунт, и Composio управляет токенами, чтобы агенты могли читать и действовать от вашего имени. Никаких API-ключей для управления.',
  'skills.composio.noApiKeyTitle': 'Ключ API Composio не настроен',
  'skills.composio.noApiKeyDescription':
    'Локальный режим использует ваш собственный ключ API Composio. Откройте Настройки → Дополнительно → Composio, чтобы добавить ключ перед подключением интеграций здесь.',
  'skills.composio.noApiKeyCta': 'Открыть в настройках',
  'skills.tabs.composio': 'Composio',
  'skills.tabs.channels': 'Каналы',
  'skills.tabs.explorer': 'Навыки',
  'skills.tabs.meetings': 'Встречи Google Meet',
  'skills.tabs.mcp': 'MCP Серверы',
  'connections.tabs.composio': 'Composio',
  'connections.tabs.channels': 'Каналы',
  'connections.tabs.mcp': 'MCP-серверы',
  'connections.tabs.skills': 'Навыки',
  'connections.tabs.meetings': 'Встречи',
  'connections.groups.integrations': 'Интеграции',
  'connections.tabs.oauth': 'OAuth',
  'connections.tabs.composioKey': 'Composio',
  'connections.groups.apiKeys': 'API-ключи',
  'connections.groups.intelligence': 'Интеллект',
  'memory.title': 'Память',
  'memory.search': 'Поиск воспоминаний...',
  'memory.noResults': 'Воспоминания не найдены',
  'memory.empty': 'Воспоминаний пока нет. Они создаются автоматически в процессе общения.',
  'memory.tab.memory': 'Память',
  'memory.tab.memoryTree': 'Дерево памяти',
  'memory.tab.tasks': 'Задачи',
  'memory.tab.tasksDescription':
    'Создавайте и отслеживайте задачи — ваши личные дела и доски, которые агенты формируют в ходе разговоров.',
  'memory.tab.subconscious': 'Подсознание',
  'memory.tab.agentWork': 'Работа агента',
  'memory.tab.agentWorkDescription':
    'Центр управления для каждого фонового запуска агента — сгруппировано по тому, что требует вашего участия, что выполняется и что завершено.',
  'memory.tab.worktrees': 'Worktree',
  'memory.tab.worktreesDescription':
    'Изолированные рабочие деревья git от параллельных воркеров-агентов — просматривайте изменения, открывайте их или удаляйте.',
  'memory.tab.teams': 'Команды',
  'memory.tab.teamsDescription':
    'Скоординированные команды агентов — кто отвечает за каждую задачу, что заблокировано и что участники говорят друг другу.',
  'memory.tab.agents': 'Библиотека',
  'memory.tab.agentsDescription':
    'Просматривайте и запускайте доступных агентов — у каждого свои инструменты, возможности и область специализации.',
  'memory.tab.workflows': 'Workflows',
  'memory.tab.workflowsDescription':
    'Многоразовые исполняемые процедуры — цель и шаги к её достижению. Создайте, установите по URL или откройте рабочий процесс для запуска.',
  'memory.tab.dreams': 'Сны',
  'memory.tab.calls': 'Звонки',
  'memory.tab.diagram': 'Diagram',
  'memory.tab.centrality': 'Centrality',
  'memory.tab.namespaces': 'Пространства имён',
  'memory.tab.timeline': 'Timeline',
  'memory.tab.settings': 'Настройки',
  'memory.analyzeNow': 'Анализировать сейчас',
  'memoryTimeline.title': 'Хронология памяти',
  'memoryTimeline.intro':
    'Когда ассистент узнавал о вас — факты, сгруппированные по месяцу последнего подкрепления. Показывает рост, всплески активности и спокойные периоды.',
  'memoryTimeline.loading': 'Построение хронологии…',
  'memoryTimeline.errorPrefix': 'Не удалось загрузить граф:',
  'memoryTimeline.retry': 'Retry',
  'memoryTimeline.namespaceLabel': 'Namespace',
  'memoryTimeline.namespaceAll': 'Все пространства имён',
  'memoryTimeline.empty': 'Граф знаний пока отсутствует.',
  'memoryTimeline.emptyHint': 'Когда ассистент запишет факты о вас, хронология появится здесь.',
  'memoryTimeline.metricTotal': 'Facts',
  'memoryTimeline.metricMonths': 'Активные месяцы',
  'memoryTimeline.metricRecent': 'Последние 30 дней',
  'memoryTimeline.heading': 'Факты, изученные за месяц',
  'memoryTimeline.busiestCaption': 'Самый активный: {period} ({count})',
  'memoryTimeline.undatedNote': '{count} факт(ов) без зарегистрированной даты.',
  'memoryTimeline.truncated': 'Показаны {shown} самых свежих из {total} месяцев.',
  'namespaceOverview.title': 'Обзор пространств имён',
  'namespaceOverview.intro':
    'Как ваши знания распределены по контекстам — количество фактов и уникальных сущностей, записанных в каждом пространстве имён.',
  'namespaceOverview.loading': 'Агрегирование пространств имён…',
  'namespaceOverview.errorPrefix': 'Не удалось загрузить график:',
  'namespaceOverview.retry': 'Повторить попытку',
  'namespaceOverview.empty': 'Графа знаний пока нет.',
  'namespaceOverview.emptyHint':
    'По мере того как ассистент записывает факты в разных контекстах, каждое пространство имён будет появляться здесь.',
  'namespaceOverview.metricNamespaces': 'Пространства имён',
  'namespaceOverview.metricFacts': 'Факты',
  'namespaceOverview.metricEntities': 'Сущности',
  'namespaceOverview.heading': 'По пространству имён',
  'namespaceOverview.unnamespaced': '(без пространства имён)',
  'namespaceOverview.factsLabel': '{count} фактов',
  'namespaceOverview.entitiesLabel': '{count} сущностей',
  'namespaceOverview.entitiesShort': '{count} сущ.',
  'namespaceOverview.truncated': 'Показаны топ-{shown} из {total} пространств имён.',
  'graphCentrality.title': 'Централизованность графа знаний',
  'graphCentrality.intro':
    'PageRank по вашему графику памяти отображает несущие нагрузку концентраторы — и объекты-соединители, которые связывают отдельные кластеры, которые не может выявить необработанный подсчет частоты.',
  'graphCentrality.loading': 'Вычислительная центральность…',
  'graphCentrality.errorPrefix': 'Не удалось загрузить график:',
  'graphCentrality.retry': 'Повторить попытку',
  'graphCentrality.empty': 'Графа знаний пока нет.',
  'graphCentrality.emptyHint':
    'По мере того, как помощник записывает факты о вас, здесь всплывают наиболее связанные между собой сущности.',
  'graphCentrality.namespaceLabel': 'Пространство имен',
  'graphCentrality.namespaceAll': 'Все пространства имен',
  'graphCentrality.metricEntities': 'Сущности',
  'graphCentrality.metricConnections': 'Соединения',
  'graphCentrality.metricClusters': 'Кластеры',
  'graphCentrality.clustersCaption': 'Кластеры {components} · крупнейшие холдинги {largest}',
  'graphCentrality.approximateBadge': 'approximate',
  'graphCentrality.approximateTitle': 'Остановился на пределе итерации перед полной сходимостью',
  'graphCentrality.rankedHeading': 'Лучшие организации по влиянию',
  'graphCentrality.colRank': '#',
  'graphCentrality.colEntity': 'Сущность',
  'graphCentrality.colInfluence': 'Влияние',
  'graphCentrality.colLinks': 'Ссылки',
  'graphCentrality.bridgeBadge': 'connector',
  'graphCentrality.bridgeTitle':
    'Коннектор — более влиятельный, чем предполагает количество ссылок.',
  'graphCentrality.degreeTitle': '{in} вход · {out} выход',
  'memory.tab.associations': 'Associations',
  'entityAssociations.title': 'Ассоциации сущностей',
  'entityAssociations.intro':
    'Сущности, разделяющие множество одинаковых связей, ассоциированы — даже если ни один факт не связывает их напрямую. Сходство Жаккара выявляет эти скрытые связи.',
  'entityAssociations.loading': 'Вычисление ассоциаций…',
  'entityAssociations.errorPrefix': 'Не удалось загрузить граф:',
  'entityAssociations.retry': 'Retry',
  'entityAssociations.empty': 'Пока нет ассоциаций.',
  'entityAssociations.emptyHint':
    'Когда сущности начнут разделять связи, самые сильные пары появятся здесь.',
  'entityAssociations.namespaceLabel': 'Namespace',
  'entityAssociations.namespaceAll': 'Все пространства имён',
  'entityAssociations.metricEntities': 'Entities',
  'entityAssociations.metricPairs': 'Associations',
  'entityAssociations.rankedHeading': 'Сильнейшие ассоциации',
  'entityAssociations.linkedBadge': 'linked',
  'entityAssociations.inferredBadge': 'inferred',
  'entityAssociations.linkedTitle': 'Эти сущности связаны напрямую.',
  'entityAssociations.inferredTitle': 'Нет прямой связи — ассоциированы только через общие связи.',
  'entityAssociations.sharedLabel': '{shared} общих',
  'entityAssociations.pairTitle': '{jaccard}% сходства · {shared} из {union} общих связей',
  'entityAssociations.truncated': 'Показано {shown} из {total} — сильнейшие первыми.',
  'memory.tab.freshness': 'Freshness',
  'memoryFreshness.title': 'Свежесть знаний',
  'memoryFreshness.intro':
    'Факты, которые ассистент не подтверждал в последнее время, угасают по кривой забывания. Это показывает, что устаревает и заслуживает повторной проверки, чтобы старые факты не считались достоверными.',
  'memoryFreshness.loading': 'Вычисление свежести…',
  'memoryFreshness.errorPrefix': 'Не удалось загрузить граф:',
  'memoryFreshness.retry': 'Retry',
  'memoryFreshness.empty': 'Граф знаний пока отсутствует.',
  'memoryFreshness.emptyHint':
    'Когда ассистент запишет факты о вас, их свежесть будет отслеживаться здесь.',
  'memoryFreshness.namespaceLabel': 'Namespace',
  'memoryFreshness.namespaceAll': 'Все пространства имён',
  'memoryFreshness.metricFresh': 'Fresh',
  'memoryFreshness.metricFading': 'Fading',
  'memoryFreshness.metricStale': 'Stale',
  'memoryFreshness.recallCaption': 'Средний отзыв {recall}% по {total} фактам',
  'memoryFreshness.queueHeading': 'Очередь повторного подтверждения',
  'memoryFreshness.queueTruncated':
    'Показано {shown} из {total} — обработайте эти в первую очередь.',
  'memoryFreshness.allFresh': 'Все факты ещё свежие — ничего не нужно подтверждать повторно.',
  'memoryFreshness.statusFading': 'fading',
  'memoryFreshness.statusStale': 'stale',
  'memoryFreshness.ageLabel': '{days} дн. назад',
  'memoryFreshness.recallTitle': '{recall}% отзыва · период полураспада {halfLife} дн.',
  'memory.tab.path': 'Пути',
  'connectionPath.title': 'Путь связи',
  'connectionPath.intro':
    'Проследите кратчайшую цепочку связей между любыми двумя сущностями — как граф соединяет их, даже через несколько переходов.',
  'connectionPath.loading': 'Загрузка графа…',
  'connectionPath.errorPrefix': 'Не удалось загрузить граф:',
  'connectionPath.retry': 'Повторить',
  'connectionPath.namespaceLabel': 'Пространство имён',
  'connectionPath.namespaceAll': 'Все пространства имён',
  'connectionPath.sourceLabel': 'От',
  'connectionPath.targetLabel': 'До',
  'connectionPath.sourcePlaceholder': 'Начальная сущность',
  'connectionPath.targetPlaceholder': 'Конечная сущность',
  'connectionPath.prompt': 'Выберите две сущности, чтобы проследить, как они связаны.',
  'connectionPath.empty': 'Граф знаний пока пуст.',
  'connectionPath.emptyHint':
    'Как только ассистент запишет связанные факты, вы сможете прослеживать связи здесь.',
  'connectionPath.resultHeading': 'Кратчайший путь',
  'connectionPath.pathSummary': 'расстояние — {length} переход(ов)',
  'connectionPath.sameMessage': 'Выберите две разные сущности.',
  'connectionPath.missingSource': '«{entity}» отсутствует в графе.',
  'connectionPath.missingTarget': '«{entity}» отсутствует в графе.',
  'connectionPath.noPath': 'Связь между «{source}» и «{target}» не найдена.',
  'memoryTree.status.title': 'Дерево памяти',
  'memoryTree.status.autoSyncLabel': 'Автосинхронизация',
  'memoryTree.status.autoSyncDescription':
    'Пауза, чтобы остановить новый прием. Существующая вики остается доступной для запросов.',
  'memoryTree.status.statusTile': 'Статус',
  'memoryTree.status.lastSyncTile': 'Последняя синхронизация',
  'memoryTree.status.totalChunksTile': 'Всего кусков',
  'memoryTree.status.wikiSizeTile': 'Размер вики',
  'memoryTree.status.statusRunning': 'Бег',
  'memoryTree.status.statusPaused': 'Приостановлено',
  'memoryTree.status.statusSyncing': 'Синхронизация',
  'memoryTree.status.statusError': 'Ошибка',
  'memoryTree.status.statusIdle': 'Праздный',
  'memoryTree.status.never': 'Никогда',
  'memoryTree.status.fetchError': 'Не удалось получить статус дерева памяти.',
  'memoryTree.status.retry': 'Повторить попытку',
  'memoryTree.status.toggleFailed': 'Не удалось включить автосинхронизацию.',
  'memoryTree.status.justNow': 'прямо сейчас',
  'memoryTree.status.secondsAgo': '{count} сек. назад',
  'memoryTree.status.minuteAgo': '1 минуту назад',
  'memoryTree.status.minutesAgo': '{count} мин назад',
  'memoryTree.status.hourAgo': '1 час назад',
  'memoryTree.status.hoursAgo': '{count} час назад',
  'memoryTree.status.dayAgo': '1 день назад',
  'memoryTree.status.daysAgo': '{count} дней назад',
  'memoryTree.status.integrationsTitle': 'Состояние интеграций',
  'memoryTree.status.integrationsEmpty': 'Нет подключённых интеграций',
  'memoryTree.status.integrationActive': 'Активна',
  'memoryTree.status.integrationStale': 'Устарела',
  'memoryTree.status.integrationChunks': 'Куски: {count}',
  'alerts.title': 'Оповещения',
  'alerts.empty': 'Оповещений пока нет',
  'alerts.markAllRead': 'Отметить всё прочитанным',
  'alerts.unread': 'непрочитано',
  'rewards.title': 'Награды',
  'rewards.referrals': 'Рефералы',
  'rewards.coupons': 'Активировать',
  'rewards.localUnavailable':
    'Локальный вход не приносит награды, купоны или реферальный кредит. Выйдите и войдите с аккаунтом OpenHuman, если хотите, чтобы награды начислялись.',
  'rewards.localUnavailableCta': 'Открыть настройки аккаунта',
  'rewards.credits': 'Кредиты',
  'rewards.referralCode': 'Твой реферальный код',
  'rewards.copyCode': 'Скопировать код',
  'rewards.share': 'Поделиться',
  'onboarding.welcome': 'Привет. Я OpenHuman.',
  'onboarding.welcomeDesc':
    'Твой суперинтеллектуальный AI-ассистент, работающий прямо на твоём компьютере. Приватный, простой и невероятно мощный.',
  'onboarding.context': 'Сбор контекста',
  'onboarding.contextDesc': 'Подключи инструменты и сервисы, которыми пользуешься каждый день.',
  'onboarding.localAI': 'Локальный AI',
  'onboarding.localAIDesc': 'Настрой локальную AI-модель, работающую прямо на твоём устройстве.',
  'onboarding.chatProvider': 'Чат-провайдер',
  'onboarding.chatProviderDesc': 'Выбери, как хочешь общаться с ассистентом.',
  'onboarding.referral': 'Реферал',
  'onboarding.referralDesc': 'Введи реферальный код, если он у тебя есть.',
  'onboarding.finish': 'Завершить настройку',
  'onboarding.finishDesc': 'Всё готово! Начни пользоваться OpenHuman.',
  'onboarding.skip': 'Пропустить',
  'onboarding.getStarted': 'Начать',
  'onboarding.runtimeChoice.title': 'Как ты хочешь запустить OpenHuman?',
  'onboarding.runtimeChoice.subtitle':
    'Выбери подходящий вариант. Изменить можно позже в Настройках.',
  'onboarding.runtimeChoice.cloud.title': 'Просто',
  'onboarding.runtimeChoice.cloud.tagline': 'Пусть OpenHuman сам обо всём позаботится.',
  'onboarding.runtimeChoice.cloud.f1': 'Встроенная безопасность',
  'onboarding.runtimeChoice.cloud.f2': 'Сжатие токенов для экономии ресурсов',
  'onboarding.runtimeChoice.cloud.f3': 'Одна подписка — все модели включены',
  'onboarding.runtimeChoice.cloud.f4': 'Никаких API-ключей',
  'onboarding.runtimeChoice.cloud.f5': 'Простая настройка',
  'onboarding.runtimeChoice.custom.title': 'Свои настройки',
  'onboarding.runtimeChoice.custom.tagline':
    'Используй свои ключи. Полный контроль над тем, что используется.',
  'onboarding.runtimeChoice.custom.f1': 'Для большинства функций потребуются API-ключи',
  'onboarding.runtimeChoice.custom.f2': 'Переиспользует сервисы, за которые ты уже платишь',
  'onboarding.runtimeChoice.custom.f3': 'Может быть бесплатным, если всё запускать локально',
  'onboarding.runtimeChoice.custom.f4': 'Больше настроек и параметров',
  'onboarding.runtimeChoice.custom.f5':
    'Лучший выбор для продвинутых пользователей и разработчиков',
  'onboarding.runtimeChoice.cloud.creditHighlight': 'Бесплатные кредиты при регистрации',
  'onboarding.runtimeChoice.continueCloud': 'Продолжить с простым режимом',
  'onboarding.runtimeChoice.continueCustom': 'Продолжить со своими настройками',
  'onboarding.runtimeChoice.recommended': 'Рекомендуется',
  'onboarding.runtimeChoice.exitError':
    'Не удалось завершить настройку. Пожалуйста, попробуйте ещё раз.',
  'onboarding.apiKeys.title': 'Добавь свои API-ключи',
  'onboarding.apiKeys.subtitle':
    'Вставь их сейчас или пропусти и добавь позже в Настройки › AI. Ключи хранятся на этом устройстве в зашифрованном виде.',
  'onboarding.apiKeys.openaiLabel': 'API-ключ OpenAI',
  'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
  'onboarding.apiKeys.openaiOauthHint':
    'Используйте ChatGPT Plus/Pro (подписка) или ключ OpenAI API — не оба обязательны.',
  'onboarding.apiKeys.openaiOauthOpening': 'Открытие входа…',
  'onboarding.apiKeys.openaiOauthConnect': 'Войти через ChatGPT',
  'onboarding.apiKeys.openaiOauthConnected': 'Подключено через ChatGPT',
  'onboarding.apiKeys.openaiOauthCallbackHint':
    'После входа вставьте полный URL перенаправления из браузера (начинается с {url}).',
  'onboarding.apiKeys.oauthDesktopOnly':
    'Вход через ChatGPT доступен только в десктопном приложении.',
  'onboarding.apiKeys.oauthStartFailed':
    'Не удалось начать вход через ChatGPT. Повторите попытку или используйте ключ API.',
  'onboarding.apiKeys.oauthPasteRedirect': 'Вставьте URL перенаправления из браузера после входа.',
  'onboarding.apiKeys.oauthCompleteFailed':
    'Вход через ChatGPT не завершён. Проверьте URL перенаправления и повторите попытку.',
  'onboarding.apiKeys.finishSignIn': 'Завершите вход в ChatGPT',
  'onboarding.apiKeys.orApiKey': 'или ключ API',
  'onboarding.apiKeys.anthropicLabel': 'API-ключ Anthropic',
  'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
  'onboarding.apiKeys.saveError': 'Не удалось сохранить ключ. Проверь его и попробуй снова.',
  'onboarding.apiKeys.skipForNow': 'Пропустить',
  'onboarding.apiKeys.continue': 'Сохранить и продолжить',
  'onboarding.apiKeys.saving': 'Сохранение…',
  'onboarding.custom.stepperInference': 'Инференс',
  'onboarding.custom.stepperVoice': 'Голос',
  'onboarding.custom.stepperOAuth': 'OAuth',
  'onboarding.custom.stepperSearch': 'Поиск',
  'onboarding.custom.stepperEmbeddings': 'Embeddings',
  'onboarding.custom.stepperMemory': 'Память',
  'onboarding.custom.stepCounter': 'Шаг {n} из {total}',
  'onboarding.custom.defaultTitle': 'По умолчанию',
  'onboarding.custom.defaultSubtitle': 'Пусть OpenHuman сам управляет этим.',
  'onboarding.custom.configureTitle': 'Настроить',
  'onboarding.custom.configureSubtitle': 'Я сам выберу, что использовать.',
  'onboarding.custom.progressAriaLabel': 'Прогресс настройки',
  'onboarding.custom.continue': 'Продолжить',
  'onboarding.custom.back': 'Назад',
  'onboarding.custom.finish': 'Завершить настройку',
  'onboarding.custom.configureLater':
    'Можно завершить настройку после онбординга. Мы откроем нужную страницу настроек.',
  'onboarding.custom.openSettings': 'Открыть в настройках',
  'onboarding.custom.inference.title': 'Инференс (текст)',
  'onboarding.custom.inference.subtitle':
    'Какая языковая модель будет отвечать на вопросы и запускать агентов?',
  'onboarding.custom.inference.defaultDesc':
    'OpenHuman автоматически выбирает подходящую модель. Без ключей и настроек.',
  'onboarding.custom.inference.configureDesc':
    'Используй свой ключ OpenAI или Anthropic для всех текстовых задач.',
  'onboarding.custom.voice.title': 'Голос',
  'onboarding.custom.voice.subtitle': 'Распознавание и синтез речи для голосового режима.',
  'onboarding.custom.voice.defaultDesc':
    'OpenHuman поставляется с управляемым STT/TTS, который работает сразу. Ничего настраивать не нужно.',
  'onboarding.custom.voice.configureDesc':
    'Используй свой ElevenLabs / OpenAI Whisper / другой сервис. Настрой в Настройки › Голос.',
  'onboarding.custom.oauth.title': 'Подключения (OAuth)',
  'onboarding.custom.oauth.subtitle': 'Gmail, Slack, Notion и другие сервисы, требующие OAuth.',
  'onboarding.custom.oauth.defaultDesc':
    'OpenHuman использует управляемое рабочее пространство Composio. Один клик для подключения каждого сервиса.',
  'onboarding.custom.oauth.configureDesc':
    'Используй свой аккаунт Composio / API-ключ. Настрой в Настройки › Подключения.',
  'onboarding.custom.search.title': 'Поиск в интернете',
  'onboarding.custom.search.subtitle': 'Как OpenHuman ищет информацию в интернете.',
  'onboarding.custom.search.defaultDesc':
    'OpenHuman использует управляемый поисковый бэкенд. Ключи не нужны.',
  'onboarding.custom.search.configureDesc':
    'Используй свой ключ поискового провайдера (Tavily, Brave и др.). Настрой в Настройки › Инструменты.',
  'onboarding.custom.embeddings.title': 'Embeddings',
  'onboarding.custom.embeddings.subtitle':
    'Как OpenHuman создаёт векторные эмбеддинги для семантического поиска в памяти.',
  'onboarding.custom.embeddings.defaultDesc':
    'OpenHuman использует управляемый сервис эмбеддингов. API-ключ не требуется.',
  'onboarding.custom.embeddings.configureDesc':
    'Используйте собственного провайдера эмбеддингов (OpenAI, Voyage, Ollama и др.).',
  'onboarding.custom.memory.title': 'Память',
  'onboarding.custom.memory.subtitle':
    'Как OpenHuman запоминает контекст, предпочтения и предыдущие разговоры.',
  'onboarding.custom.memory.defaultDesc':
    'OpenHuman автоматически управляет хранением и извлечением воспоминаний. Ничего настраивать не нужно.',
  'onboarding.custom.memory.configureDesc':
    'Просматривай, экспортируй или очищай память самостоятельно. Настрой в Настройки › Память.',
  'accounts.addAccount': 'Добавить аккаунт',
  'accounts.addApps': 'Добавить приложения',
  'accounts.manageAccounts': 'Управление аккаунтами',
  'accounts.noAccounts': 'Аккаунты не подключены',
  'accounts.connectAccount': 'Подключи аккаунт для начала работы',
  'accounts.agent': 'Агент',
  'accounts.respondQueue': 'Очередь ответов',
  'accounts.disconnect': 'Отключить',
  'accounts.disconnectConfirm': 'Ты уверен, что хочешь отключить этот аккаунт?',
  'accounts.disconnectClearMemory': 'Также удалить память из этого источника',
  'accounts.disconnectClearMemoryHint':
    'Навсегда удаляет локальные фрагменты памяти, связанные с этим подключением.',
  'accounts.searchAccounts': 'Поиск аккаунтов...',
  'channels.title': 'Каналы',
  'channels.configure': 'Настроить канал',
  'channels.setup': 'Настройка',
  'channels.noChannels': 'Каналы не настроены',
  'channels.localManagedUnavailable': 'Управляемые каналы недоступны для локальных пользователей.',
  'channels.addChannel': 'Добавить канал',
  'channels.status.connected': 'Подключено',
  'channels.status.disconnected': 'Отключено',
  'channels.status.error': 'Ошибка',
  'channels.status.configuring': 'Настройка',
  'channels.defaultMessaging': 'Канал по умолчанию',
  'channels.setAsDefault': 'Сделать по умолчанию',
  'channels.defaultBadge': 'По умолчанию',
  'webhooks.title': 'Вебхуки',
  'webhooks.create': 'Создать вебхук',
  'webhooks.noWebhooks': 'Вебхуки не настроены',
  'webhooks.url': 'URL',
  'webhooks.secret': 'Секрет',
  'webhooks.events': 'События',
  'webhooks.archiveDirectory': 'Директория архива',
  'webhooks.todayFile': 'Файл за сегодня',
  'invites.title': 'Приглашения',
  'invites.create': 'Создать приглашение',
  'invites.noInvites': 'Активных приглашений нет',
  'invites.code': 'Код приглашения',
  'invites.copyLink': 'Скопировать ссылку',
  'invites.generate': 'Создать приглашение',
  'invites.generating': 'Создание...',
  'invites.refreshing': 'Обновление приглашений...',
  'invites.loading': 'Загрузка приглашений...',
  'invites.copyCodeAria': 'Скопировать код приглашения',
  'invites.revokeAria': 'Отозвать приглашение',
  'invites.usedUp': 'Использовано',
  'invites.uses': 'Используется: {current}{max}',
  'invites.expiresOn': 'Срок действия истекает {date}',
  'invites.empty': 'Пока нет приглашений',
  'invites.emptyHint': 'Создайте код приглашения для обмена с другими',
  'invites.revokeTitle': 'Отозвать код приглашения',
  'invites.revokePromptPrefix': 'Вы уверены, что хотите отозвать код приглашения?',
  'invites.revokeWarning':
    'Этот код приглашения станет недействительным и не может быть использован для вступления в команду.',
  'invites.revoking': 'Отзыв...',
  'invites.revokeAction': 'Отозвать приглашение',
  'invites.failedGenerate': 'Не удалось создать приглашение.',
  'invites.failedRevoke': 'Не удалось отозвать приглашение.',
  'team.refreshingMembers': 'Обновление участников...',
  'team.loadingMembers': 'Загрузка участников...',
  'team.memberCount': '{count} участник',
  'team.memberCountPlural': '{count} участников',
  'team.you': '(Вы)',
  'team.removeAria': 'Удалить {name}',
  'team.noMembers': 'Участники не найдены.',
  'team.removeTitle': 'Удалить участника команды',
  'team.removePromptPrefix': 'Вы уверены, что хотите удалить',
  'team.removePromptSuffix': 'из команды?',
  'team.removeWarning': 'Они потеряют доступ к команде и всем ее ресурсам.',
  'team.removing': 'Удаление...',
  'team.removeAction': 'Удалить участника',
  'team.changeRoleTitle': 'Изменить роль участника',
  'team.changeRolePrompt': 'Изменить роль {name} с {oldRole} на {newRole}?',
  'team.changeRoleAdminGrant':
    'Это предоставит им полные права администратора, включая возможность управлять участниками команды.',
  'team.changeRoleAdminRemove':
    'Это лишит их прав администратора, и они больше не смогут управлять командой.',
  'team.changing': 'Изменение...',
  'team.changeRoleAction': 'Изменить роль',
  'team.failedChangeRole': 'Не удалось изменить роль.',
  'team.failedRemoveMember': 'Не удалось удалить участника.',
  'devOptions.title': 'Дополнительно',
  'devOptions.titleDiagnostics': 'Разработчик и Диагностика',
  'devOptions.diagnostics': 'Диагностика',
  'devOptions.diagnosticsDesc': 'Состояние системы, логи и метрики производительности',
  'devOptions.toolPolicyDiagnosticsDesc':
    'Инвентаризация инструментов, положение политики, белые списки MCP и недавние блокировки',
  'devOptions.toolPolicyDiagnostics.loading': 'Загрузка…',
  'devOptions.toolPolicyDiagnostics.unavailable': 'Диагностика недоступна',
  'devOptions.toolPolicyDiagnostics.posture.title': 'Политическая позиция',
  'devOptions.toolPolicyDiagnostics.posture.autonomy': 'Автономия:',
  'devOptions.toolPolicyDiagnostics.posture.workspaceOnly': 'Только рабочее пространство:',
  'devOptions.toolPolicyDiagnostics.posture.maxActionsPerHour': 'Макс actions/hr:',
  'devOptions.toolPolicyDiagnostics.posture.approvalMediumRisk': 'Одобрение (средний риск):',
  'devOptions.toolPolicyDiagnostics.posture.blockHighRisk': 'Блокировать высокий риск:',
  'devOptions.toolPolicyDiagnostics.inventory.title': 'Инвентарь',
  'devOptions.toolPolicyDiagnostics.inventory.totalTools': 'Всего инструментов',
  'devOptions.toolPolicyDiagnostics.inventory.enabledTools': 'Включенные инструменты',
  'devOptions.toolPolicyDiagnostics.inventory.mcpStdioTools': 'MCP инструменты stdio',
  'devOptions.toolPolicyDiagnostics.inventory.jsonRpcTools': 'JSON-RPC инструменты',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.title': 'Белые списки MCP',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.summary':
    'Включено: {enabled} · Серверы: ZXHOLD1ZX/ZXHOLD2ZX',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.unnamed': '<без имени>',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.allowDeny':
    'разрешить = {allowCount} запретить = {denyCount}',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.title': 'MCP аудит записи',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.summary':
    'Включено: {enabled} · Последние (24 часа): {recentRows}',
  'devOptions.toolPolicyDiagnostics.recentBlocked.title': 'Недавние заблокированные вызовы',
  'devOptions.toolPolicyDiagnostics.recentBlocked.empty':
    'Заблокированных вызовов не зарегистрировано.',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.title': 'Отредактированные поверхности',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.summary':
    'Возможность записи: {writeCount} · Поверхности политик: {policyCount}',
  'devOptions.debugPanels': 'Панели отладки',
  'devOptions.debugPanelsDesc': 'Флаги функций, инспекция состояния и инструменты отладки',
  'devOptions.webhooks': 'Вебхуки',
  'devOptions.webhooksDesc': 'Настройка и тестирование вебхуков',
  'devOptions.memoryInspection': 'Инспекция памяти',
  'devOptions.memoryInspectionDesc': 'Просмотр, запросы и управление записями памяти',
  'voice.pushToTalk': 'Нажми и говори',
  'voice.recording': 'Запись...',
  'voice.processing': 'Обработка...',
  'voice.languageHint': 'Язык',
  'misc.rehydrating': 'Загрузка данных...',
  'misc.checkingServices': 'Проверка сервисов...',
  'misc.serviceUnavailable': 'Сервис недоступен',
  'misc.somethingWentWrong': 'Что-то пошло не так',
  'misc.tryAgainLater': 'Попробуй позже.',
  'misc.restartApp': 'Перезапустить приложение',
  'misc.updateAvailable': 'Доступно обновление',
  'misc.updateNow': 'Обновить сейчас',
  'misc.updateLater': 'Позже',
  'misc.downloading': 'Загрузка...',
  'misc.installing': 'Установка...',
  'misc.beta':
    'OpenHuman находится в стадии раннего бета-тестирования. Делись отзывами и сообщай об ошибках — каждый репорт помогает нам двигаться быстрее.',
  'misc.betaFeedback': 'Отправить отзыв',
  'mnemonic.title': 'Фраза восстановления',
  'mnemonic.warning': 'Запиши эти слова по порядку и храни в надёжном месте.',
  'mnemonic.copyWarning':
    'Никогда не делись фразой восстановления. Любой, кто её знает, получит доступ к твоему аккаунту.',
  'mnemonic.copied': 'Фраза восстановления скопирована в буфер обмена',
  'mnemonic.reveal': 'Показать фразу',
  'mnemonic.revealPhrase': 'Показать фразу восстановления',
  'mnemonic.hidden': 'Фраза восстановления скрыта',
  'privacy.title': 'Конфиденциальность и безопасность',
  'privacy.description': 'Отчёт о данных, отправляемых во внешние сервисы.',
  'privacy.empty': 'Передачи данных во внешние сервисы не обнаружены.',
  'privacy.whatLeavesComputer': 'Что покидает твой компьютер',
  'privacy.loading': 'Загрузка данных о конфиденциальности...',
  'privacy.loadError':
    'Не удалось загрузить список. Настройки аналитики ниже по-прежнему работают.',
  'privacy.noCapabilities': 'Ни одна функция не передаёт данные.',
  'privacy.sentTo': 'Отправляется в',
  'privacy.leavesDevice': 'Покидает устройство',
  'privacy.staysLocal': 'Остаётся локально',
  'privacy.anonymizedAnalytics': 'Аналитика продукта',
  'privacy.shareAnonymizedData': 'Отправлять аналитику продукта и диагностику',
  'privacy.shareAnonymizedDataDesc':
    'Помоги улучшить OpenHuman, отправляя ограниченные по приватности отчёты о сбоях и события использования, включая стабильный ID аккаунта и метаданные версии приложения. Сообщения, ключи кошелька, API-ключи и токены сессии никогда не собираются.',
  'privacy.meetingFollowUps': 'Действия после встреч',
  'privacy.autoHandoffMeet': 'Автоматически передавать транскрипты Google Meet оркестратору',
  'privacy.autoHandoffMeetDesc':
    'Когда звонок в Google Meet заканчивается, оркестратор OpenHuman может прочитать транскрипт и выполнить действия: составить сообщения, запланировать задачи или опубликовать итоги в Slack. По умолчанию выключено.',
  'privacy.analyticsDisclaimer':
    'При включении аналитика продукта и диагностика могут включать ограниченные по приватности отчёты о сбоях и события использования, стабильный ID аккаунта и метаданные версии приложения. Сообщения, ключи кошелька, API-ключи и токены сессии никогда не собираются. Этот параметр можно изменить в любое время.',
  'settings.about.version': 'Версия',
  'settings.about.updateAvailable': 'доступна',
  'settings.about.softwareUpdates': 'Обновления ПО',
  'settings.about.lastChecked': 'Последняя проверка',
  'settings.about.checking': 'Проверка...',
  'settings.about.checkForUpdates': 'Проверить обновления',
  'settings.about.releases': 'Релизы',
  'settings.about.releasesDesc': 'Просмотр заметок к релизам и предыдущих сборок на GitHub.',
  'settings.about.openReleases': 'Открыть релизы на GitHub',
  'settings.about.connection': 'Соединение',
  'settings.about.connectionMode': 'Режим',
  'settings.about.connectionModeLocal': 'Локальный',
  'settings.about.connectionModeCloud': 'Облачный',
  'settings.about.connectionModeUnset': 'Не выбран',
  'settings.about.serverUrl': 'Сервер URL',
  'settings.about.serverUrlUnavailable': 'Недоступно',
  'settings.about.connectionHelperLocal':
    'Создается внутри процесса оболочкой Tauri при запуске приложения. Порт выбирается при запуске, поэтому этот URL меняется между запусками.',
  'settings.about.connectionHelperCloud':
    'Подключен к удаленному ядру. Измените это в BootCheck или в средстве выбора облачного режима.',
  'settings.heartbeat.title': 'Heartbeat и циклы',
  'settings.usage.title': 'Использование и лимиты',
  'settings.usage.menuDesc': 'Расходы, использование токенов, бюджеты и фоновая активность',
  'settings.costDashboard.title': 'Панель затрат',
  'settings.costDashboard.sevenDayCost': '7-дневная ежедневная стоимость',
  'settings.costDashboard.sevenDayTokens': '7-дневное использование токена',
  'settings.costDashboard.totalSpend': 'всего 7 дней',
  'settings.costDashboard.monthlyPace': 'Ежемесячный темп',
  'settings.costDashboard.budgetLimit': 'Ограничение бюджета',
  'settings.costDashboard.utilization': 'Использование',
  'settings.costDashboard.modelBreakdown': 'Разбивка по моделям',
  'settings.costDashboard.model': 'Модель',
  'settings.costDashboard.provider': 'Поставщик',
  'settings.costDashboard.cost': 'Расходы',
  'settings.costDashboard.tokens': 'Токены',
  'settings.costDashboard.requests': 'Запросы',
  'settings.costDashboard.percentOfTotal': '% от общего количества',
  'settings.costDashboard.inputTokens': 'Вход',
  'settings.costDashboard.outputTokens': 'Выход',
  'settings.costDashboard.budgetNormal': 'На ходу',
  'settings.costDashboard.budgetWarning': 'Предупреждение',
  'settings.costDashboard.budgetExceeded': 'Превышение бюджета',
  'settings.costDashboard.noBudget': 'Ограничение не установлено',
  'settings.costDashboard.noData': 'За последние 7 дней стоимость еще не зафиксирована.',
  'settings.costDashboard.noModels': 'Никакой активности модели за последние 7 дней.',
  'settings.costDashboard.loading': 'Загрузка сводки расходов…',
  'settings.costDashboard.disabledHint':
    'Панель затрат отключена в конфигурации. Установите [cost.dashboard] Enabled = True в config.toml, чтобы повторно включить.',
  'settings.costDashboard.subtitle':
    'Расходы в реальном времени и сжигание токенов по всему множеству. Бары автоматически обновляются каждые несколько секунд — перезагрузка страницы не требуется.',
  'settings.costDashboard.summaryAriaLabel': 'Сводные показатели затрат',
  'settings.costDashboard.lastSevenDays': 'последние 7 дней',
  'settings.costDashboard.utilizationOf': 'из',
  'settings.costDashboard.thisMonth': 'в этом месяце',
  'settings.costDashboard.monthlyPaceHint':
    'Прогнозируемые ежемесячные расходы при текущем ежедневном расходе (в среднем × 30).',
  'settings.costDashboard.budgetLimitHint':
    'Ежемесячный бюджет считывается из Cost.monthly_limit_usd в config.toml.',
  'settings.costDashboard.dailyTarget': 'Ежедневная цель',
  'settings.costDashboard.today': 'Сегодня',
  'settings.costDashboard.todayBadge': 'TODAY',
  'settings.costDashboard.unknownProvider': '—',
  'settings.costDashboard.justNow': 'Прямо сейчас',
  'settings.costDashboard.secondsAgo': '{value} сек. назад',
  'settings.costDashboard.minutesAgo': '{value}мин назад',
  'settings.costDashboard.hoursAgo': '{value}ч назад',
  'settings.costDashboard.daysAgo': '{value} дней назад',
  'settings.costDashboard.updated': 'Обновлено',
  'settings.costDashboard.refresh': 'Обновить',
  'settings.costDashboard.utcNote': 'Дни, разбитые по UTC',
  'settings.costDashboard.stackedNote': 'Вход + выход сложены',
  'settings.costDashboard.modelBreakdownHint': 'Совокупно за последние 7 дней.',
  'settings.costDashboard.categoryDistribution': 'Расходы по категориям',
  'settings.costDashboard.categoryDistributionHint':
    'Определено по последним записям вызовов чата, эмбеддингов, голоса, изображений и реранкинга.',
  'settings.costDashboard.noCategories': 'Расходы по категориям пока не записаны.',
  'settings.costDashboard.categoryMeta': '{requests} запросов • {tokens} токенов',
  'settings.costDashboard.usageLog': 'Журнал использования',
  'settings.costDashboard.usageLogHint':
    'Новые записи за последние {days} дней, не более {limit} строк.',
  'settings.costDashboard.logTotal': '{requests} запросов • {cost}',
  'settings.costDashboard.noUsageLog': 'За этот период записи использования не найдены.',
  'settings.costDashboard.when': 'Когда',
  'settings.costDashboard.category': 'Категория',
  'settings.costDashboard.session': 'Сессия',
  'settings.costDashboard.noDataHint':
    'Отправьте сообщение агенту — использование токена при следующем вызове провайдера заполнит диаграмму в течение примерно 10 секунд.',
  'settings.search.title': 'Поисковая система',
  'settings.search.menuDesc':
    'По умолчанию используется поиск, управляемый OpenHuman, или подключите собственного провайдера с помощью ключа API.',
  'settings.search.description':
    'Выберите поисковую систему, которую использует агент, или полностью отключите инструменты поиска. Управляемый режим использует серверную часть OpenHuman (настройка не требуется). Parallel, Brave и Querit работают напрямую с вашего устройства, используя ваш API-ключ.',
  'settings.search.engineAria': 'Поисковая система',
  'settings.search.engineDisabledLabel': 'Disabled',
  'settings.search.engineDisabledDesc':
    'Удалить инструменты поиска из контекста агента и списка доступных инструментов.',
  'settings.search.engineManagedLabel': 'OpenHuman Управляемый',
  'settings.search.engineManagedDesc':
    'По умолчанию. Маршрутизируется через серверную часть OpenHuman — ключ API не ​​требуется.',
  'settings.search.localManagedUnavailable':
    'Поиск OpenHuman Managed недоступен для локальных пользователей. Добавьте свой ключ API Parallel или Brave, чтобы включить веб-поиск.',
  'settings.search.engineParallelLabel': 'Параллельно',
  'settings.search.engineParallelDesc':
    'Direct Parallel API: инструменты поиска, извлечения, общения, исследования, обогащения и набора данных.',
  'settings.search.engineBraveLabel': 'Brave Поиск',
  'settings.search.engineBraveDesc':
    'Прямой поиск Brave API: инструменты для Интернета, новостей, изображений и видео.',
  'settings.search.engineQueritLabel': 'Керит',
  'settings.search.engineQueritDesc':
    'Direct Querit API: поиск в Интернете с фильтрами по сайту, временному диапазону, стране и языку.',
  'settings.search.statusConfigured': 'Настроено',
  'settings.search.statusNeedsKey': 'Требуется ключ API',
  'settings.search.fallbackToManaged':
    'Ключ не настроен — поиск будет переведен в режим «Управляемый», пока ключ не будет сохранен.',
  'settings.search.getApiKey': 'Получите ключ API',
  'settings.search.save': 'Сохранить',
  'settings.search.clear': 'Очистить',
  'settings.search.show': 'Показать',
  'settings.search.hide': 'Скрыть',
  'settings.search.statusSaving': 'Сохранение…',
  'settings.search.statusSaved': 'Сохранено.',
  'settings.search.statusError': 'Ошибка',
  'settings.search.parallelKeyLabel': 'Parallel API ключ',
  'settings.search.braveKeyLabel': 'Brave Поиск API ключ',
  'settings.search.queritKeyLabel': 'Запросить ключ API',
  'settings.search.placeholderStored': '•••••••• (сохранено)',
  'settings.search.placeholderParallel': 'pk_...',
  'settings.search.placeholderBrave': 'BSA...',
  'settings.search.placeholderQuerit': 'Запросить ключ API',
  'settings.search.allowedSitesLabel': 'Разрешенные веб-сайты',
  'settings.search.allowedSitesHint':
    'Хосты, которые ассистент может открывать и читать — через веб-запросы и браузерный инструмент — по одному на строку, например reuters.com. Хост также охватывает все его поддомены. Веб-поиск не ограничивается этим списком.',
  'settings.search.allowedSitesAllOn':
    'Помощник может открыть любой общедоступный веб-сайт. Локальные и частные адреса остаются заблокированными.',
  'settings.search.allowedSitesPlaceholder': 'reuters.com\napnews.com\ngithub.com',
  'settings.search.allowedSitesSave': 'Сохранение веб-сайтов',
  'settings.search.accessModeAria': 'Режим веб-доступа',
  'settings.search.accessAllowAll': 'Разрешить все',
  'settings.search.accessCustom': 'Обычай',
  'settings.search.accessBlockAll': 'Блокировать все',
  'settings.search.accessBlockAllHint':
    'Весь веб-доступ заблокирован — помощник не может открыть или прочитать какой-либо веб-сайт.',
  // ─── Settings global search bar ────────────────────────────
  'settings.settingsSearch.placeholder': 'Поиск в настройках…',
  'settings.settingsSearch.ariaLabel': 'Поиск в настройках',
  'settings.settingsSearch.clear': 'Очистить поиск',
  'settings.settingsSearch.resultsLabel': 'Результаты поиска',
  'settings.settingsSearch.noResults': 'Настройки по запросу «{query}» не найдены',
  'settings.embeddings.title': 'Эмбеддинги',
  'settings.embeddings.description':
    'Выберите провайдера эмбеддингов, который преобразует память в векторы для семантического поиска. Изменение провайдера, модели или размерности делает сохранённые векторы недействительными и требует полного сброса памяти.',
  'settings.embeddings.providerAria': 'Провайдер эмбеддингов',
  'settings.embeddings.statusConfigured': 'Настроено',
  'settings.embeddings.statusNeedsKey': 'Нужен API-ключ',
  'settings.embeddings.requiresSignIn': 'Требуется вход в OpenHuman',
  'settings.embeddings.managedLoginRequired':
    'Для управляемых эмбеддингов требуется вход в OpenHuman. Войдите, чтобы использовать backend OpenHuman.',
  'settings.embeddings.managedBannerIntro':
    'Управляемые эмбеддинги проходят через backend OpenHuman и требуют сеанс учетной записи OpenHuman.',
  'settings.embeddings.managedBannerLocalSession':
    'Выйдите из локального сеанса и войдите, чтобы использовать этого провайдера, или переключитесь на локального провайдера эмбеддингов либо провайдера с собственным ключом.',
  'settings.embeddings.managedBannerRemoteSession':
    'Войдите снова, чтобы обновить сеанс OpenHuman, или переключитесь на локального провайдера эмбеддингов либо провайдера с собственным ключом.',
  'settings.embeddings.signInAgain': 'Войти снова',
  'settings.embeddings.apiKeyLabel': 'API-ключ {provider}',
  'settings.embeddings.placeholderStored': '•••••••• (сохранено)',
  'settings.embeddings.placeholderKey': 'Вставьте API-ключ…',
  'settings.embeddings.keyStoredEncrypted':
    'Ваш API-ключ хранится в зашифрованном виде на этом устройстве.',
  'settings.embeddings.show': 'Показать',
  'settings.embeddings.hide': 'Скрыть',
  'settings.embeddings.save': 'Сохранить',
  'settings.embeddings.clear': 'Очистить',
  'settings.embeddings.model': 'Модель',
  'settings.embeddings.dimensions': 'Размерность',
  'settings.embeddings.customEndpoint': 'Пользовательский эндпоинт',
  'settings.embeddings.customModelPlaceholder': 'Название модели',
  'settings.embeddings.customDimsPlaceholder': 'Разм.',
  'settings.embeddings.applyCustom': 'Применить',
  'settings.embeddings.testConnection': 'Проверить подключение',
  'settings.embeddings.testing': 'Проверка…',
  'settings.embeddings.testSuccess': 'Подключено — {dims} измерений',
  'settings.embeddings.connectionTestFailed': 'Проверка не удалась',
  'settings.embeddings.verifyFallback':
    'Не удалось проверить конечную точку эмбеддингов. Убедитесь, что она запущена и предоставляет модель эмбеддингов, затем сохраните снова.',
  'settings.embeddings.testFailed': 'Ошибка: {error}',
  'settings.embeddings.saving': 'Сохранение…',
  'settings.embeddings.saved': 'Сохранено.',
  'settings.embeddings.errorPrefix': 'Ошибка',
  'settings.embeddings.wipeTitle': 'Сбросить векторы памяти?',
  'settings.embeddings.wipeBody':
    'Изменение провайдера эмбеддингов, модели или размерности удалит все сохранённые векторы памяти. Память должна быть перестроена, прежде чем поиск снова заработает. Это действие нельзя отменить.',
  'settings.embeddings.cancel': 'Отмена',
  'settings.embeddings.confirmWipe': 'Очистить и применить',
  'settings.embeddings.setupTitle': 'Настройка {provider}',
  'settings.embeddings.saveAndSwitch': 'Сохранить и переключить',
  'settings.embeddings.optional': 'необязательно',
  'settings.embeddings.vectorSearchDisabled':
    'Векторный поиск отключен. При вызове из памяти будут использоваться только сопоставление ключевых слов и актуальность — без семантического ранжирования.',
  'settings.embeddings.clearKey': 'Удалить API-ключ',
  'pages.settings.ai.embeddings': 'Эмбеддинги',
  'pages.settings.ai.embeddingsDesc': 'Модель векторного кодирования для извлечения из памяти',
  'mcp.alphaBadge': 'Альфа',
  'mcp.alphaBannerText':
    'Поддержка сервера MCP находится в ранней альфа-версии. Реестр, процесс установки и подключение инструментов могут работать неправильно или изменять форму между выпусками.',
  'mcp.toolList.noTools': 'Инструменты недоступны.',
  'mcp.setup.secretDialog.title': 'MCP Настройка — введите секретный код',
  'mcp.setup.secretDialog.bodyPrefix': 'Агенту установки MCP требуется',
  'mcp.setup.secretDialog.bodySuffix':
    '. Ваше значение отправляется непосредственно в основной процесс и никогда не попадает в диалог AI.',
  'mcp.setup.secretDialog.inputLabel': 'Значение',
  'mcp.setup.secretDialog.inputPlaceholder': 'Вставить сюда',
  'mcp.setup.secretDialog.show': 'Показать',
  'mcp.setup.secretDialog.hide': 'Скрыть',
  'mcp.setup.secretDialog.submit': 'Отправить',
  'mcp.setup.secretDialog.cancel': 'Отмена',
  'mcp.setup.secretDialog.submitting': 'Отправка…',
  'mcp.setup.secretDialog.errorPrefix': 'Не удалось отправить:',
  'mcp.setup.secretDialog.privacyNote':
    'Хранится в зашифрованном виде в локальной таблице секретов MCP. Никогда не регистрировался и не отправлялся модели.',
  'devices.betaBadge': 'Бета-версия',
  'devices.betaText':
    'Эта функция находится в стадии бета-тестирования. Подключите iPhone к этому OpenHuman для использования в качестве удалённого клиента.',
  'devices.comingSoonDescription':
    'Сопряжение устройств скоро появится. Эта страница будет местом для подключения iPhone и управления подключёнными устройствами.',
  'devices.title': 'Устройства',
  'devices.pairIphone': 'Сопряжение с iPhone',
  'devices.noPaired': 'Нет сопряженных устройств',
  'devices.emptyState':
    'Отсканируйте QR-код на своём iPhone, чтобы подключить его к текущей сессии OpenHuman.',
  'devices.devicePairedTitle': 'Устройство сопряжено.',
  'devices.devicePairedMessage': 'iPhone успешно подключен.',
  'devices.deviceRevokedTitle': 'Устройство отозвано.',
  'devices.deviceRevokedMessage': '{label} удалено.',
  'devices.revokeFailedTitle': 'Не удалось отозвать',
  'devices.online': 'В сети',
  'devices.offline': 'Не в сети',
  'devices.lastSeenNever': 'Никогда',
  'devices.lastSeenNow': 'Только сейчас',
  'devices.lastSeenMinutes': '{count}м назад',
  'devices.lastSeenHours': '{count}ч назад',
  'devices.lastSeenDays': '{count}д назад',
  'devices.revoke': 'Отозвать',
  'devices.revokeAria': 'Отозвать {label}',
  'devices.confirmRevokeTitle': 'Отозвать устройство?',
  'devices.confirmRevokeBody': '{label} больше не сможет подключиться. Это невозможно отменить.',
  'devices.loadFailed': 'Не удалось загрузить устройства: {message}',
  'devices.pairModal.title': 'Сопряжение с iPhone',
  'devices.pairModal.loading': 'Генерация кода сопряжения…',
  'devices.pairModal.instructions':
    'Откройте приложение OpenHuman на iPhone и отсканируйте этот код.',
  'devices.pairModal.expiresIn': 'Срок действия кода истекает через ~{count} минуту.',
  'devices.pairModal.expiresInPlural': 'Срок действия кода истекает через ~{count} минут.',
  'devices.pairModal.showDetails': 'Показать подробности',
  'devices.pairModal.hideDetails': 'Скрыть подробности',
  'devices.pairModal.channelId': 'Идентификатор канала',
  'devices.pairModal.pairingUrl': 'Сопряжение URL',
  'devices.pairModal.expiredTitle': 'Срок действия QR code истек',
  'devices.pairModal.expiredBody': 'Создайте новый код для продолжения сопряжения.',
  'devices.pairModal.generateNewCode': 'Создать новый код.',
  'devices.pairModal.successTitle': 'Соединение с iPhone.',
  'devices.pairModal.autoClose': 'Автоматическое закрытие…',
  'devices.pairModal.errorPrefix': 'Не удалось создать соединение: {message}',
  'devices.pairModal.errorTitle': 'Что-то пошло не так',
  'devices.pairModal.copyUrl': 'Копировать',
  'mcp.catalog.searchAria': 'Поиск в каталоге кузнечного дела',
  'mcp.catalog.searchPlaceholder': 'Поиск в каталоге кузнечного дела...',
  'mcp.catalog.loadFailed': 'Не удалось загрузить каталог.',
  'mcp.catalog.noResults': 'Серверы не найдены.',
  'mcp.catalog.noResultsFor': 'Серверы для «{query}» не найдены.',
  'mcp.catalog.loadMore': 'Загрузить больше',
  'mcp.configAssistant.title': 'Помощник по настройке',
  'mcp.configAssistant.empty':
    'Спросите о конфигурации, необходимых переменных окружения или этапах настройки.',
  'mcp.configAssistant.autoPromptCta': 'Пошаговая помощь по настройке',
  'mcp.configAssistant.suggestedValues': 'Рекомендуемые значения:',
  'mcp.configAssistant.valueHidden': '(значение скрыто)',
  'mcp.configAssistant.applySuggested': 'Примените предложенные значения.',
  'mcp.configAssistant.reinstallHint': 'Переустановите с этими значениями, чтобы применить их.',
  'mcp.configAssistant.thinking': 'Думаю...',
  'mcp.configAssistant.inputPlaceholder':
    'Задайте вопрос (Enter для отправки, Shift+Enter для перевода строки)',
  'mcp.configAssistant.send': 'Отправить',
  'mcp.configAssistant.failedResponse': 'Не удалось получить ответ',
  'mcp.toolList.availableSingular': 'Доступен инструмент {count}',
  'mcp.toolList.availablePlural': 'Доступен инструмент {count}',
  'mcp.toolList.tryTool': 'Пытаться',
  'mcp.toolList.tryToolAria': 'Открытая площадка для исполнения {name}',
  'mcp.playground.title': 'Запустите {name}',
  'mcp.playground.close': 'Закрыть игровую площадку',
  'mcp.playground.inputSchema': 'Входная схема',
  'mcp.playground.argsLabel': 'Аргументы (JSON)',
  'mcp.playground.argsHelp':
    'Введите JSON, соответствующий входной схеме. Пустой ввод рассматривается как {}.',
  'mcp.playground.runShortcut': '⌘/Ctrl + Enter для запуска',
  'mcp.playground.format': 'Формат',
  'mcp.playground.invalidJson': 'Неверный JSON',
  'mcp.playground.run': 'Запустить инструмент',
  'mcp.playground.running': 'Бег…',
  'mcp.playground.result': 'Результат',
  'mcp.playground.resultError': 'Инструмент возвратил ошибку',
  'mcp.playground.copyResult': 'Копировать результат',
  'mcp.playground.copied': 'Скопировано',
  'mcp.playground.history': 'История',
  'mcp.playground.historyEmpty': 'В этом сеансе пока нет вызовов.',
  'mcp.playground.historyLoad': 'Нагрузка',
  'mcp.playground.unexpectedError': 'Неожиданная ошибка при вызове инструмента.',
  'mcp.catalog.deployed': 'Развернуто',
  'mcp.catalog.installCount': '{count} устанавливает',
  'app.update.dismissNotification': 'Отклонить уведомление об обновлении',
  'bootCheck.rpcAuthSuffix': 'каждый раз RPC.',
  'app.localAiDownload.expandAria': 'Развернуть ход загрузки',
  'app.localAiDownload.collapseAria': 'Свернуть ход загрузки',
  'app.localAiDownload.dismissAria': 'Закрыть уведомление о загрузке.',
  'mobile.nav.ariaLabel': 'Мобильная навигация',
  'progress.stepsAria': 'Шаги выполнения',
  'progress.stepAria': 'Шаг {current} из {total}',
  'workspace.vaultsTitle': 'Хранилища знаний',
  'workspace.vaultsDesc':
    'Укажите локальную папку; файлы разбиваются на части и зеркально отображаются в памяти.',
  'calls.title': 'Звонки',
  'calls.comingSoonBody': 'Скоро появятся звонки с помощью ИИ. Следите за обновлениями.',
  'art.rotatingTetrahedronAria': 'Вращающийся космический корабль в виде перевернутого тетраэдра',
  'mcp.installed.title': 'Установлен',
  'mcp.installed.browseCatalog': 'Просмотр каталога',
  'mcp.installed.empty': 'Серверы MCP пока не установлены.',
  'mcp.installed.toolSingular': '{count} инструмент',
  'mcp.installed.toolPlural': '{count} инструменты',
  'mcp.health.title': 'Здоровье',
  'mcp.health.summaryAria': 'Сводная информация о состоянии соединения MCP',
  'mcp.health.connectedCount': '{count} подключен',
  'mcp.health.connectingCount': '{count} подключение',
  'mcp.health.errorCount': 'Ошибка {count}',
  'mcp.health.disconnectedCount': '{count} простой',
  'mcp.health.retryAll': 'Повторить все ({count})',
  'mcp.health.retryAllAria': 'Повторить попытку на всех серверах {count} с ошибкой MCP.',
  'mcp.health.disconnectAll': 'Отключить все ({count})',
  'mcp.health.disconnectAllAria': 'Отключите все подключенные к {count} серверы MCP.',
  'mcp.health.disconnectConfirm.title': 'Отключить все серверы MCP?',
  'mcp.health.disconnectConfirm.body':
    'Это отключит {count}, подключенные в данный момент серверы MCP. Установленные конфигурации и секреты сохраняются; вы можете повторно подключить любой сервер позже.',
  'mcp.health.disconnectConfirm.cancel': 'Отмена',
  'mcp.health.disconnectConfirm.confirm': 'Отключить все',
  'mcp.health.opErrorGeneric': 'Массовая операция не удалась. Смотрите журналы.',
  'mcp.health.bulkPartialFailure': '{failed} из {total} серверов дали сбой. Смотрите журналы.',
  'mcp.installed.search.landmarkAria': 'Поиск установленных серверов MCP',
  'mcp.installed.search.inputAria': 'Фильтровать установленные серверы MCP по имени',
  'mcp.installed.search.placeholder': 'Фильтровать серверы…',
  'mcp.installed.search.clearAria': 'Очистить фильтр',
  'mcp.installed.search.countMatches': '{shown} из серверов {total}',
  'mcp.installed.search.noMatches': 'Нет серверов, соответствующих «{query}».',
  'mcp.inventory.openButton': 'Инвентарь',
  'mcp.inventory.openAria': 'Откройте общую панель инвентаря MCP.',
  'mcp.inventory.title': 'Общий инвентарь MCP',
  'mcp.inventory.subtitle':
    'Экспортируйте установленные серверы MCP в виде переносимого, несекретного манифеста или импортируйте его у товарища по команде. Секретные значения env никогда не включаются и не импортируются.',
  'mcp.inventory.close': 'Закрыть панель инвентаря',
  'mcp.inventory.tablistAria': 'Разделы инвентаря',
  'mcp.inventory.tab.export': 'Экспорт',
  'mcp.inventory.tab.import': 'Импорт',
  'mcp.inventory.export.empty':
    'Серверы MCP пока не установлены — экспортировать нечего. Сначала установите один из каталога.',
  'mcp.inventory.export.privacyTitle': 'Что в этом манифесте',
  'mcp.inventory.export.privacyBody':
    'Только имена серверов, полные имена, ИМЕНА КЛЮЧЕЙ переменных env и несекретная конфигурация. Секретные значения, идентификаторы вашего компьютера и временные метки каждой установки намеренно удаляются.',
  'mcp.inventory.export.serverCount': 'Серверы {count} в этом манифесте',
  'mcp.inventory.export.copy': 'Копировать',
  'mcp.inventory.export.copied': 'Скопировано',
  'mcp.inventory.export.copyAria': 'Скопируйте манифест JSON в буфер обмена.',
  'mcp.inventory.export.download': 'Скачать',
  'mcp.inventory.export.downloadAria': 'Загрузите манифест в виде файла JSON.',
  'mcp.inventory.import.trustTitle': 'Считайте импортированные манифесты ненадежным кодом.',
  'mcp.inventory.import.trustBody':
    'Сервер MCP — это инструмент, который вы предоставляете своему агенту. Импортируйте манифесты только из источников, которым вы доверяете. Каждая установка требует вашего явного щелчка мышью; ничего не устанавливается автоматически.',
  'mcp.inventory.import.pasteLabel': 'Вставить манифест JSON',
  'mcp.inventory.import.pastePlaceholder': 'Вставьте манифест сюда или загрузите файл.json ниже.',
  'mcp.inventory.import.preview': 'Предварительный просмотр',
  'mcp.inventory.import.clear': 'Прозрачный',
  'mcp.inventory.import.uploadFile': 'или загрузите файл.json',
  'mcp.inventory.import.uploadFileAria': 'Загрузите файл манифеста.json.',
  'mcp.inventory.import.fileTooLarge': 'Файл слишком велик (более 1 МБ). Отказ загружаться.',
  'mcp.inventory.import.fileReadFailed': 'Не удалось прочитать файл.',
  'mcp.inventory.import.parseErrorPrefix': 'Не удалось разобрать манифест:',
  'mcp.inventory.import.previewHeading': 'Предварительный просмотр',
  'mcp.inventory.import.previewCounts': 'Серверы {total} — {newly} новый, {already} уже установлен',
  'mcp.inventory.import.previewEmpty': 'Манифест не содержит серверов.',
  'mcp.inventory.import.exportedFrom': 'Экспортировано из {exporter}.',
  'mcp.inventory.import.exportedAt': 'в {when}',
  'mcp.inventory.import.statusNew': 'Новый',
  'mcp.inventory.import.statusAlreadyInstalled': 'Уже установлено',
  'mcp.inventory.import.envKeysLabel': 'Ключи окружения',
  'mcp.inventory.import.install': 'Установить',
  'mcp.inventory.import.installAria': 'Установите {name} из этого манифеста.',
  'mcp.inventory.import.skipped': 'skipped',
  'mcp.inventory.parseError.empty': 'Манифест пуст.',
  'mcp.inventory.parseError.invalidJson': 'Неверный JSON.',
  'mcp.inventory.parseError.rootNotObject': 'Манифест должен быть объектом JSON в корне.',
  'mcp.inventory.parseError.unsupportedSchema':
    'Неподдерживаемая схема манифеста — этот файл не был создан совместимым экспортером.',
  'mcp.inventory.parseError.missingExportedAt': 'Поле `exported_at` отсутствует или неверно.',
  'mcp.inventory.parseError.missingExportedBy': 'Поле `exported_by` отсутствует или неверно.',
  'mcp.inventory.parseError.invalidServers': 'Массив `servers` отсутствует или недействителен.',
  'mcp.inventory.parseError.serverNotObject': 'Запись сервера не является объектом.',
  'mcp.inventory.parseError.serverMissingQualifiedName':
    'В записи сервера отсутствует квалифицированное_имя.',
  'mcp.inventory.parseError.serverMissingDisplayName':
    'В записи сервера отсутствует отображаемое_имя.',
  'mcp.inventory.parseError.serverEnvKeysNotArray':
    'Запись сервера имеет поле env_keys, которое не является массивом строк.',
  'mcp.inventory.parseError.serverContainsEnv':
    'Запись сервера содержит карту значений `env`. Отказ от импорта — манифесты должны содержать только env_keys (имена), а не секретные значения.',
  'mcp.inventory.parseError.duplicateQualifiedName':
    'В манифесте найдено повторяющееся квалифицированное_имя. Каждый сервер должен появиться не более одного раза.',
  'mcp.tab.loading': 'Загрузка серверов MCP...',
  'mcp.tab.emptyDetail': 'Выберите сервер или просмотрите каталог.',
  'mcp.tab.filter.all': 'Все',
  'mcp.tab.filter.installed': 'Установлено ({count})',
  'mcp.tab.filter.registry': 'Реестр',
  'mcp.tab.column.name': 'Название',
  'mcp.tab.column.description': 'Описание',
  'mcp.tab.column.type': 'Тип',
  'mcp.tab.column.author': 'Автор',
  'mcp.tab.column.action': 'Действие',
  'mcp.tab.transport.hosted': 'Размещённый',
  'mcp.tab.transport.local': 'Stdio',
  'mcp.tab.transportFilter.label': 'Тип',
  'mcp.tab.transportFilter.aria': 'Фильтр серверов по транспорту',
  'mcp.tab.link.website': 'Сайт',
  'mcp.tab.link.repo': 'Репозиторий',
  'mcp.tab.transport.hostedHint':
    'Работает на удалённом сервере — вход или токен настраивается при установке',
  'mcp.tab.transport.localHint':
    'Работает на вашем устройстве — может потребоваться токен при установке',
  'mcp.tab.officialBadge': 'Официальный',
  'mcp.tab.officialHint': 'Официальный сервер от поставщика',
  'mcp.tab.badge.installed': 'Установлено',
  'mcp.tab.badge.registry': 'Реестр',
  'mcp.tab.action.manage': 'Управление',
  'mcp.tab.aria.viewDetails': 'Просмотреть детали {name}',
  'mcp.tab.aria.installServer': 'Установить {name}',
  'mcp.install.loadingDetail': 'Загрузка сведений о сервере...',
  'mcp.install.back': 'Вернитесь назад',
  'mcp.install.title': 'Установите {name}',
  'mcp.install.requiredEnv': 'Необходимые переменные среды',
  'mcp.install.enterValue': 'Введите {key}',
  'mcp.install.show': 'Показать',
  'mcp.install.hide': 'Скрыть',
  'mcp.install.configLabel': 'Конфигурация (необязательный JSON)',
  'mcp.install.configPlaceholder': '{"ключ": "значение"}',
  'mcp.install.missingRequired': 'Требуется «{key}»',
  'mcp.install.invalidJson': 'Конфигурация JSON недействительна. JSON',
  'mcp.install.failedDetail': 'Не удалось загрузить сведения о сервере.',
  'mcp.install.failedInstall': 'Не удалось установить',
  'mcp.install.button': 'Установить',
  'mcp.install.installing': 'Установка...',
  'mcp.install.by': 'от',
  'mcp.install.useCount': '{count} установок',
  'mcp.install.connections': 'Доступные подключения',
  'mcp.install.published': 'опубликовано',
  'mcp.install.configureAndInstall': 'Настроить и установить',
  'mcp.install.configureTitle': 'Настройка {name}',
  'mcp.install.advancedConfig': 'Расширенная настройка',
  'mcp.detail.suggestedEnvReady': 'Рекомендуемые значения среды готовы',
  'mcp.detail.suggestedEnvBody':
    'Чтобы применить их, переустановите этот сервер с предложенными значениями: {keys}.',
  'mcp.detail.connect': 'Подключитесь',
  'mcp.detail.connecting': 'Подключение...',
  'mcp.detail.authenticate': 'Войти',
  'mcp.detail.authRequired':
    'Этот сервер требует, чтобы вы вошли в систему или добавили токен доступа, прежде чем он сможет подключиться. Нажмите «Войти», чтобы пройти аутентификацию.',
  'mcp.detail.disconnect': 'Отключите',
  'mcp.detail.hideAssistant': 'Скрыть помощника',
  'mcp.detail.helpConfigure': 'Помогите мне настроить',
  'mcp.detail.confirmUninstall': 'Подтвердить удаление?',
  'mcp.detail.confirmUninstallAction': 'Да, удалить',
  'mcp.detail.uninstall': 'Удалить',
  'mcp.detail.envVars': 'Переменные среды',
  'mcp.detail.reconfigure': 'Перенастроить',
  'mcp.detail.reconfigureHint':
    'Введите новые значения для каждой переменной, затем переподключитесь. Это заменит сохранённые значения.',
  'mcp.detail.saveReconnect': 'Сохранить и переподключиться',
  'mcp.detail.reconfigureSaving': 'Сохранение…',
  'mcp.detail.reconfigureSuccess': 'Окружение обновлено, выполнено переподключение.',
  'mcp.detail.reconfigureReconnectFailed':
    'Сохранено, но переподключиться с новыми значениями не удалось.',
  'mcp.detail.enable': 'Включить',
  'mcp.detail.disable': 'Отключить',
  'mcp.status.disabled': 'Отключён',
  'mcp.status.unauthorized': 'Требуется вход',
  'mcp.detail.tools': 'Инструменты',
  'mcp.connectAuth.title': 'Подключить {name}',
  'mcp.connectAuth.hint':
    'Добавьте аутентификацию, необходимую этому серверу, затем подключитесь. Токены хранятся в зашифрованном виде. Оставьте поле пустым для серверов, не требующих аутентификации.',
  'mcp.connectAuth.requiredLabel': 'Обязательно',
  'mcp.connectAuth.customHeadersLabel': 'Пользовательские заголовки',
  'mcp.connectAuth.customHeadersEmpty':
    'Нет пользовательских заголовков. Добавьте, если этому серверу нужен заголовок аутентификации, не объявленный в реестре.',
  'mcp.connectAuth.addHeader': '+ Добавить заголовок',
  'mcp.connectAuth.headerName': 'Имя заголовка',
  'mcp.connectAuth.headerValue': 'Значение',
  'mcp.connectAuth.removeHeader': 'Удалить заголовок',
  'mcp.connectAuth.howToGetToken': 'Справка и настройка',
  'mcp.connectAuth.tokenProvider': 'Получите токен на:',
  'mcp.connectAuth.findToken': 'Где взять токен?',
  'mcp.connectAuth.hideHelp': 'Скрыть справку',
  'mcp.connectAuth.schemeLabel': 'Как отправить значение',
  'mcp.connectAuth.schemeBearer': 'Bearer',
  'mcp.connectAuth.schemeRaw': 'Нет',
  'mcp.connectAuth.reconnectFailed': 'Учётные данные сохранены, но подключиться не удалось.',
  'mcp.connectAuth.oauthHint':
    'Этот сервер использует OAuth. Войдите через браузер, чтобы авторизовать OpenHuman.',
  'mcp.connectAuth.signIn': 'Войти через браузер',
  'mcp.connectAuth.oauthWaiting': 'Ожидание входа…',
  'mcp.connectAuth.oauthOrToken':
    'Уже есть токен доступа? Вставьте его ниже как заголовок Authorization.',
  'mcp.connectAuth.oauthTimeout': 'Истекло время ожидания входа через браузер. Попробуйте снова.',
  'mcp.connectAuth.authError.oauthRequired':
    'Этот сервер использует OAuth. Используйте “Войти через браузер” — вставленный токен не будет принят.',
  'mcp.connectAuth.authError.tokenRejected':
    'Сервер отклонил этот токен. Убедитесь, что он правильный и не истёк.',
  'mcp.connectAuth.authError.credentialRequired':
    'Этот сервер требует аутентификации. Добавьте токен или войдите.',
  'onboarding.skipForNow': 'Пропустить сейчас',
  'onboarding.localAI.continueWithCloud': 'Продолжить с Облако',
  'onboarding.localAI.useLocalAnyway':
    'Всё равно использовать локальный ИИ (не рекомендуется для вашего устройства)',
  'onboarding.localAI.useLocalInstead': 'Использовать локальный ИИ (подключить Ollama сейчас)',
  'onboarding.localAI.setupIssue': 'При настройке локального AI возникла проблема',
  'autonomy.title': 'Автономия агента.',
  'autonomy.maxActionsLabel': 'Максимальное количество действий в час.',
  'autonomy.maxActionsHelp':
    'Максимальное количество действий инструментов, которое агент может выполнить за скользящий час. Новое значение применяется к следующему чату. Задания cron и слушатели каналов сохраняют текущий лимит до перезапуска OpenHuman.',
  'autonomy.statusSaving': 'Сохранение…',
  'autonomy.statusSaved': 'Сохранено.',
  'autonomy.statusFailed': 'Ошибка',
  'autonomy.unlimitedNote': 'Unlimited — ограничение скорости отключено.',
  'autonomy.invalidIntegerMsg':
    'Должно быть положительным целым числом (используйте пресет «Без ограничений» для отключения лимита).',
  'autonomy.presetUnlimited': 'Неограниченно (по умолчанию)',
  'triggers.toggleFailed': '{action} не удалось для {trigger}: {message}',
  'settings.ai.overview': 'Обзор AI-системы',
  'settings.ai.configStatus': 'Статус конфигурации',
  'settings.ai.fallbackMode': 'Резервный режим',
  'settings.ai.loadedFromRuntime': 'Загружено из среды выполнения',
  'settings.ai.loadingDuration': 'Время загрузки',
  'settings.ai.localRuntime': 'Локальная среда выполнения модели',
  'settings.ai.openManager': 'Открыть менеджер',
  'settings.ai.retryDownload': 'Повторить загрузку',
  'settings.ai.state': 'Состояние',
  'settings.ai.targetModel': 'Целевая модель',
  'settings.ai.download': 'Скачать',
  'settings.ai.localModelUnavailable': 'Статус локальной модели недоступен.',
  'settings.ai.soulConfig': 'Конфигурация персоны SOUL',
  'settings.ai.refreshing': 'Обновление...',
  'settings.ai.refreshSoul': 'Обновить SOUL',
  'settings.ai.loadingSoul': 'Загрузка конфигурации SOUL...',
  'settings.ai.identity': 'Идентичность',
  'settings.ai.personality': 'Личность',
  'settings.ai.safetyRules': 'Правила безопасности',
  'settings.ai.source': 'Источник',
  'settings.ai.loaded': 'Загружено',
  'settings.ai.toolsConfig': 'Конфигурация TOOLS',
  'settings.ai.refreshTools': 'Обновить TOOLS',
  'settings.ai.toolsAvailable': 'Доступно инструментов',
  'settings.ai.tools': 'инструменты',
  'settings.ai.activeSkills': 'Активные навыки',
  'settings.ai.skills': 'навыки',
  'settings.ai.skillsOverview': 'Обзор навыков',
  'settings.ai.refreshingAll': 'Обновление всего...',
  'settings.ai.refreshAll': 'Обновить всю конфигурацию AI',
  'settings.notifications.suppressAll': 'Отключить все уведомления',
  'settings.notifications.suppressAllDesc':
    'Блокировать все всплывающие уведомления ОС из встроенных приложений независимо от фокуса.',
  'settings.notifications.toggleDnd': 'Включить/выключить «Не беспокоить»',
  'settings.notifications.categories': 'Категории',
  'settings.notifications.categoryFooter':
    'Отключение категории останавливает появление новых уведомлений этого типа в центре уведомлений. Существующие уведомления остаются до их очистки.',
  'settings.billing.movedToWeb': 'Оплата перенесена на сайт',
  'settings.billing.openDashboard': 'Открыть панель оплаты',
  'settings.billing.movedToWebDesc':
    'Изменение подписки, способы оплаты, кредиты и счета теперь управляются в TinyHumans на сайте.',
  'settings.billing.backToSettings': 'Назад к настройкам',
  'settings.billing.openingBrowser': 'Открытие браузера...',
  'settings.billing.browserNotOpen': 'Если браузер не открылся, используй кнопку выше.',
  'settings.billing.browserOpenFailed': 'Браузер не открылся автоматически. Используй кнопку выше.',
  'settings.tools.chooseCapabilities':
    'Выбери, какие возможности OpenHuman может использовать от твоего имени.',
  'settings.tools.saveChanges': 'Сохранить изменения',
  'settings.tools.preferencesSaved': 'Настройки сохранены',
  'settings.tools.saveFailed': 'Не удалось сохранить настройки. Попробуй ещё раз.',
  'settings.screenAwareness.mode': 'Режим',
  'settings.screenAwareness.allExceptBlacklist': 'Всё, кроме исключений',
  'settings.screenAwareness.whitelistOnly': 'Только разрешённые',
  'settings.screenAwareness.screenMonitoring': 'Мониторинг экрана',
  'settings.screenAwareness.saveSettings': 'Сохранить настройки',
  'settings.screenAwareness.session': 'Сессия',
  'settings.screenAwareness.status': 'Статус',
  'settings.screenAwareness.active': 'Активно',
  'settings.screenAwareness.stopped': 'Остановлено',
  'settings.screenAwareness.remaining': 'Осталось',
  'settings.screenAwareness.startSession': 'Начать сессию',
  'settings.screenAwareness.stopSession': 'Завершить сессию',
  'settings.screenAwareness.analyzeNow': 'Анализировать сейчас',
  'settings.screenAwareness.macosOnly':
    'Захват экрана и управление разрешениями поддерживаются только на macOS.',
  'connections.comingSoon': 'Скоро',
  'connections.setUp': 'Настроить',
  'connections.configured': 'Настроено',
  'connections.unavailable': 'Недоступно',
  'connections.checking': 'Проверка…',
  'connections.walletConfigured':
    'Локальные идентификаторы EVM, BTC, Solana и Tron настроены на основе твоей фразы восстановления.',
  'connections.walletReady':
    'Настрой локальные идентификаторы EVM, BTC, Solana и Tron из одной фразы восстановления.',
  'connections.walletError':
    'Не удалось проверить статус кошелька. Нажми, чтобы повторить в панели фразы восстановления.',
  'connections.walletChecking': 'Проверка статуса кошелька...',
  'connections.walletIdentities': 'Идентификаторы кошелька',
  'connections.walletDerived':
    'Вычислено локально из фразы восстановления и хранится только как безопасные метаданные.',
  'connections.privacySecurity': 'Конфиденциальность и безопасность',
  'connections.privacySecurityDesc':
    'Все данные и учётные данные хранятся локально по политике нулевого хранения. Информация зашифрована и никогда не передаётся третьим лицам.',
  'channels.status.connecting': 'Подключение',
  'channels.status.notConfigured': 'Не настроено',
  'channels.noActiveRoute': 'Нет активного маршрута',
  'channels.activeRoute': 'Активный маршрут',
  'channels.loadingDefinitions': 'Загрузка определений каналов...',
  'channels.channelConnections': 'Подключения каналов',
  'channels.configureAuthModes': 'Настрой режимы авторизации для каждого канала связи.',
  'channels.configNotAvailable': 'Конфигурация для',
  'channels.channel': 'канал',
  'devOptions.coreModeNotSet': 'Режим ядра: не задан',
  'devOptions.coreModeNotSetDesc':
    'Выбор в загрузочном экране ещё не подтверждён. Используй «Сменить режим» для выбора между «Локальный» и «Облако».',
  'devOptions.local': 'Локальный',
  'devOptions.embeddedCoreSidecar': 'Встроенный процесс ядра',
  'devOptions.sidecarSpawned': 'Запущен внутри процесса Tauri при старте приложения.',
  'devOptions.cloud': 'Облако',
  'devOptions.remoteCoreRpc': 'Удалённый RPC ядра',
  'devOptions.token': 'Токен',
  'devOptions.tokenNotSet': 'не задан — RPC вернёт 401',
  'devOptions.triggerSentryTest': 'Тест Sentry (staging)',
  'devOptions.triggerSentryTestDesc':
    'Отправляет тегированную ошибку для проверки пайплайна Sentry. Issue #1072 — удалить после проверки.',
  'devOptions.sendTestEvent': 'Отправить тестовое событие',
  'devOptions.sending': 'Отправка…',
  'devOptions.eventSent': 'Событие отправлено',
  'devOptions.sentryDisabled': '(идентификатор отсутствует — охрана отключена в этой сборке)',
  'devOptions.failed': 'Ошибка',
  'devOptions.appLogs': 'Логи приложения',
  'devOptions.appLogsDesc':
    'Открыть папку с ежедневными лог-файлами. Прикрепляй последний файл при сообщении об ошибке.',
  'devOptions.openLogsFolder': 'Открыть папку с логами',
  'mnemonic.phraseSaved': 'Фраза восстановления сохранена',
  'mnemonic.walletReady': 'Мультичейн-идентификаторы готовы. Возврат к настройкам...',
  'mnemonic.writeDownWords': 'Запиши эти',
  'mnemonic.wordsInOrder':
    'слова по порядку и храни в надёжном месте. Эта фраза защищает твой локальный ключ шифрования и идентификаторы кошельков EVM, BTC, Solana и Tron.',
  'mnemonic.cannotRecover':
    'Эту фразу невозможно восстановить при потере — она должна оставаться только на твоём устройстве.',
  'mnemonic.copyToClipboard': 'Скопировать в буфер обмена',
  'mnemonic.alreadyHavePhrase': 'У меня уже есть фраза восстановления',
  'mnemonic.consentSaved':
    'Я сохранил эту фразу и соглашаюсь использовать её для настройки локального кошелька',
  'mnemonic.enterPhraseToRestore':
    'Введи фразу восстановления ниже для восстановления идентификаторов кошелька, или вставь полную фразу в любое поле (12 слов для новых бэкапов; фразы из 24 слов от старых версий тоже работают).',
  'mnemonic.words': 'Слова',
  'mnemonic.validPhrase': 'Верная фраза восстановления',
  'mnemonic.generateNewPhrase': 'Сгенерировать новую фразу восстановления',
  'mnemonic.securingData': 'Защита данных...',
  'mnemonic.saveRecoveryPhrase': 'Сохранить фразу восстановления',
  'mnemonic.userNotLoaded': 'Пользователь не загружен. Войди снова или обнови страницу.',
  'mnemonic.invalidPhrase': 'Неверная фраза восстановления. Проверь слова и попробуй снова.',
  'mnemonic.somethingWentWrong': 'Что-то пошло не так. Попробуй ещё раз.',
  'mnemonic.walletAlreadyConfigured': 'Ваш кошелёк уже настроен.',
  'mnemonic.walletSource': 'Источник',
  'mnemonic.walletWordCount': 'Длина фразы восстановления',
  'mnemonic.walletLastUpdated': 'Последнее обновление',
  'mnemonic.replaceWallet': 'Заменить кошелёк',
  'mnemonic.replaceWalletWarning':
    'Это навсегда заменит ваш текущий кошелёк. Убедитесь, что вы сделали резервную копию фразы восстановления, прежде чем продолжить.',
  'mnemonic.replaceWalletConfirm': 'Я понимаю, заменить мой кошелёк',
  'mnemonic.loadingWalletStatus': 'Проверка статуса кошелька...',
  'mnemonic.viewAccounts': 'Счета кошелька',
  'mnemonic.revealRecoveryPhrase': 'Показать фразу восстановления',
  'mnemonic.hidePhrase': 'Скрыть фразу',
  'team.failedToCreate': 'Не удалось создать команду',
  'team.invalidInviteCode': 'Неверный или устаревший код приглашения',
  'team.failedToSwitch': 'Не удалось переключить команду',
  'team.failedToLeave': 'Не удалось покинуть команду',
  'team.role.owner': 'Владелец',
  'team.role.admin': 'Администратор',
  'team.role.billingManager': 'Менеджер по оплате',
  'team.role.member': 'Участник',
  'team.active': 'Активная',
  'team.personalTeam': 'Личная команда',
  'team.manageTeam': 'Управление командой',
  'team.switching': 'Переключение...',
  'team.switch': 'Переключить',
  'team.leaving': 'Выход...',
  'team.leave': 'Покинуть',
  'team.yourTeams': 'Твои команды',
  'team.createNewTeam': 'Создать новую команду',
  'team.teamName': 'Название команды',
  'team.creating': 'Создание...',
  'team.joinExistingTeam': 'Вступить в существующую команду',
  'team.personalAutoCreatedNote':
    'Ваша личная команда создаётся автоматически. Чтобы работать вместе, присоединитесь к существующей команде по коду приглашения ниже.',
  'team.inviteCode': 'Код приглашения',
  'team.joining': 'Вход...',
  'team.join': 'Вступить',
  'team.leaveTeam': 'Покинуть команду',
  'team.confirmLeave': 'Ты уверен, что хочешь покинуть',
  'team.leaveWarning':
    'Ты потеряешь доступ к команде и всем её ресурсам. Для повторного входа потребуется новое приглашение.',
  'team.management': 'Управление командой',
  'team.notFound': 'Команда не найдена',
  'team.accessDenied': 'Доступ запрещён',
  'team.members': 'Участники',
  'team.membersDesc': 'Управление участниками и ролями команды',
  'team.invites': 'Приглашения',
  'team.invitesDesc': 'Создание кодов приглашения и управление ими',
  'team.settings': 'Настройки группы',
  'team.settingsDesc': 'Изменить название и настройки команды',
  'team.editSettings': 'Изменить настройки группы',
  'team.enterName': 'Введите название команды',
  'team.saving': 'Сохранение...',
  'team.saveChanges': 'Сохранить изменения',
  'team.delete': 'Удалить команду',
  'team.deleteDesc': 'Удалить эту команду навсегда',
  'team.deleting': 'Удаление...',
  'team.failedToUpdate': 'Не удалось обновить команду.',
  'team.failedToDelete': 'Не удалось удалить команду.',
  'team.manageTitle': 'Управление {name}',
  'team.planCreated': '{plan} План • Создано {date}',
  'team.confirmDelete': 'Вы уверены, что хотите удалить {name}?',
  'team.deleteWarning': 'Это действие нельзя отменить. Все данные команды будут навсегда удалены.',
  'voice.title': 'Голосовой ввод',
  'voice.settings': 'Настройки голоса',
  'voice.settingsDesc': 'Удерживай горячую клавишу для диктовки и вставки текста в активное поле.',
  'voice.hotkey': 'Горячая клавиша',
  'voice.activationMode': 'Режим активации',
  'voice.tapToToggle': 'Нажать для переключения',
  'voice.writingStyle': 'Стиль письма',
  'voice.verbatimTranscription': 'Дословная транскрипция',
  'voice.naturalCleanup': 'Естественная обработка',
  'voice.autoStart': 'Запускать голосовой сервер автоматически вместе с ядром',
  'voice.customDictionary': 'Пользовательский словарь',
  'voice.customDictionaryDesc':
    'Добавляй имена, технические термины и специальные слова для улучшения точности распознавания.',
  'voice.addWord': 'Добавить слово...',
  'voice.sttDisabled':
    'Голосовой ввод отключён, пока локальная STT-модель не загружена и не готова.',
  'voice.openLocalAiModel': 'Открыть локальную AI-модель',
  'voice.serverRestarted': 'Голосовой сервер перезапущен с новыми настройками.',
  'voice.settingsSaved': 'Настройки голоса сохранены.',
  'voice.serverStarted': 'Голосовой сервер запущен.',
  'voice.serverStopped': 'Голосовой сервер остановлен.',
  'voice.saveVoiceSettings': 'Сохранить настройки голоса',
  'voice.startVoiceServer': 'Запустить голосовой сервер',
  'voice.stopVoiceServer': 'Остановить голосовой сервер',
  'voice.debugTitle': 'Отладка голоса',
  'voice.failedToLoadSettings': 'Не удалось загрузить голосовые настройки.',
  'voice.failedToSaveSettings': 'Не удалось сохранить голосовые настройки.',
  'voice.failedToStartServer': 'Не удалось запустить голосовой сервер.',
  'voice.failedToStopServer': 'Не удалось остановить голосовой сервер.',
  'voice.sttDisabledPrefix':
    'Голосовой ввод отключён, пока не загружена локальная модель STT. Используйте',
  'voice.sttDisabledSuffix': 'выше, чтобы установить Whisper.',
  'voice.debug.failedToLoadVoiceDebugData': 'Не удалось загрузить данные голосовой отладки.',
  'voice.debug.settingsSaved': 'Настройки отладки сохранены.',
  'voice.debug.failedToSaveSettings': 'Не удалось сохранить голосовые настройки.',
  'voice.debug.runtimeStatus': 'Статус выполнения.',
  'voice.debug.runtimeStatusDesc':
    'Живая диагностика голосового сервера и движка преобразования речи в текст.',
  'voice.debug.server': 'Сервер',
  'voice.debug.unavailable': 'Недоступно',
  'voice.debug.ready': 'Готов',
  'voice.debug.notReady': 'Не готов',
  'voice.debug.hotkey': 'Горячая клавиша',
  'voice.debug.notAvailable': 'н/д',
  'voice.debug.mode': 'Режим',
  'voice.debug.transcriptions': 'Транскрипции',
  'voice.debug.serverError': 'Ошибка сервера',
  'voice.debug.advancedSettings': 'Расширенные настройки',
  'voice.debug.advancedSettingsDesc':
    'Низкоуровневые параметры настройки записи и определения тишины.',
  'voice.debug.minimumRecordingSeconds': 'Минимальное количество секунд записи',
  'voice.debug.silenceThreshold': 'Порог тишины (RMS)',
  'voice.debug.silenceThresholdDesc':
    'Записи с энергией ниже этого значения считаются тишиной и пропускаются. Меньше = чувствительнее.',
  'voice.debug.alwaysOn': 'Постоянное прослушивание',
  'voice.debug.alwaysOnDesc':
    'Держит микрофон включённым и автоматически отправляет сказанное агенту без горячей клавиши. Приостанавливается при блокировке экрана.',
  'voice.providers.saved': 'Поставщики голосовой связи сохранены.',
  'voice.providers.failedToSave': 'Не удалось сохранить поставщиков голосовой связи.',
  'voice.providers.ellipsis': '…',
  'voice.providers.installing': 'Установка',
  'voice.providers.installingBusy': 'Установка…',
  'voice.providers.reinstallLocally': 'Переустановить локально',
  'voice.providers.repair': 'Восстановить',
  'voice.providers.retryLocally': 'Повторить локально.',
  'voice.providers.installLocally': 'Установить локально.',
  'voice.providers.whisperReady': 'Whisper готов.',
  'voice.providers.whisperInstallStarted': 'Установка Whisper началась.',
  'voice.providers.queued': 'поставлен в очередь.',
  'voice.providers.failedToInstallWhisper': 'Не удалось установить Whisper.',
  'voice.providers.piperReady': 'Piper готов.',
  'voice.providers.piperInstallStarted': 'Началась установка Piper.',
  'voice.providers.failedToInstallPiper': 'Не удалось установить Piper.',
  'voice.providers.title': 'Поставщики голоса.',
  'voice.providers.desc':
    'Выберите, где выполняется транскрипция и синтез речи. Используйте кнопки «Установить локально» для загрузки бинарных файлов и моделей в вашу рабочую область. Локальные провайдеры можно сохранить до завершения установки — ручная настройка WHISPER_BIN или PIPER_BIN не требуется.',
  'voice.providers.sttProvider': 'Поставщик преобразования речи в текст',
  'voice.providers.sttProviderAria': 'Поставщик STT',
  'voice.providers.cloudWhisperProxy': 'Облако (прокси-сервер Whisper)',
  'voice.providers.localWhisper': 'Локальный Whisper',
  'voice.providers.installRequired': '(требуется установка)',
  'voice.providers.whisperInstalledTitle': 'Whisper установлен. Нажмите, чтобы переустановить.',
  'voice.providers.whisperDownloadTitle':
    'Загрузить whisper.cpp и модель GGML в вашу рабочую область.',
  'voice.providers.installed': 'Установлено',
  'voice.providers.installFailed': 'Не удалось установить',
  'voice.providers.notInstalled': 'Не установлено',
  'voice.providers.whisperModel': 'Модель Whisper',
  'voice.providers.whisperModelAria': 'Модель Whisper',
  'voice.providers.whisperModelTiny': 'Tiny (39 МБ, самый быстрый)',
  'voice.providers.whisperModelBase': 'Базовый (74 МБ)',
  'voice.providers.whisperModelSmall': 'Маленький (244 МБ)',
  'voice.providers.whisperModelMedium': 'Средний (769 МБ, рекомендуется)',
  'voice.providers.whisperModelLargeTurbo': 'Large v3 Turbo (1,5 ГБ, наилучшая точность)',
  'voice.providers.ttsProvider': 'Поставщик преобразования текста в речь',
  'voice.providers.ttsProviderAria': 'Поставщик TTS',
  'voice.providers.cloudElevenLabsProxy': 'Облако (прокси-сервер ElevenLabs)',
  'voice.providers.localPiper': 'Локальный Piper',
  'voice.providers.piperInstalledTitle': 'Piper установлен. Нажмите, чтобы переустановить.',
  'voice.providers.piperDownloadTitle':
    'Загрузить Piper и встроенный голос en_US-lessac-medium в вашу рабочую область.',
  'voice.providers.piperVoice': 'Голос Пайпера',
  'voice.providers.piperVoiceAria': 'Голос Пайпера',
  'voice.providers.customVoiceOption': 'Другое (введите ниже)…',
  'voice.providers.customVoiceAria': 'Идентификатор голоса Пайпера (пользовательский)',
  'voice.providers.customVoicePlaceholder': 'en_US-lessac-medium',
  'voice.providers.piperVoicesDesc':
    'Голоса поставляются с huggingface.co/rhasspy/piper-voices. Переключение голосов может потребовать нажатия «Установить/Переустановить» для загрузки нового файла .onnx.',
  'voice.providers.mascotVoice': 'Голос талисмана',
  'voice.providers.mascotVoiceDescPrefix':
    'Голос ElevenLabs, используемый маскотом для устных ответов, настраивается в разделе',
  'voice.providers.mascotSettings': 'Настройки талисмана',
  'voice.providers.mascotVoiceDescSuffix': '.',
  'voice.providers.hotkeyPlaceholder': 'Fn',
  'voice.providers.piperPreset.lessacMedium': 'US · Лессак (нейтральный, рекомендуется)',
  'voice.providers.piperPreset.lessacHigh': 'США · Лессак (более высокое качество, больше)',
  'voice.providers.piperPreset.ryanMedium': 'США · Райан (мужчина)',
  'voice.providers.piperPreset.amyMedium': 'США · Эми (женщина)',
  'voice.providers.piperPreset.librittsHigh': 'США · LibriTTS (мультидинамик)',
  'voice.providers.piperPreset.alanMedium': 'ГБ · Алан (мужчина)',
  'voice.providers.piperPreset.jennyDiocoMedium': 'ГБ · Дженни Диоко (женщина)',
  'voice.providers.piperPreset.northernEnglishMaleMedium': 'ГБ · Северный английский (мужчина)',
  'voice.providers.chip.cloud': 'OpenHuman (управляемый)',
  'voice.providers.chip.cloudAria': 'Управляемый провайдер OpenHuman всегда включён',
  'voice.providers.chip.whisper': 'Whisper (локальный)',
  'voice.providers.chip.enableWhisper': 'Включить локальный Whisper STT',
  'voice.providers.chip.disableWhisper': 'Отключить локальный Whisper STT',
  'voice.providers.chip.piper': 'Piper (локальный)',
  'voice.providers.chip.enablePiper': 'Включить локальный Piper TTS',
  'voice.providers.chip.disablePiper': 'Отключить локальный Piper TTS',
  'voice.providers.chip.enableProvider': 'Enable',
  'voice.providers.chip.disableProvider': 'Disable',
  'voice.providers.chip.apiKeyLabel': 'API-ключ',
  'voice.providers.chip.apiKeyPlaceholder': 'sk-…',
  'voice.providers.chip.comingSoon': 'скоро',
  'voice.modal.title': 'Configure',
  'voice.modal.desc':
    'Введите API-ключ для активации этого провайдера. Можно проверить подключение перед сохранением.',
  'voice.modal.testKey': 'Проверить ключ',
  'voice.modal.testing': 'Тестирование…',
  'voice.modal.saveAndEnable': 'Сохранить и включить',
  'voice.modal.enable': 'Enable',
  'voice.modal.whisperDesc':
    'Выберите размер модели и установите бинарный файл Whisper и модель GGML в вашу рабочую область. Более крупные модели точнее, но медленнее.',
  'voice.modal.piperDesc':
    'Выберите голос и установите бинарный файл Piper и модель ONNX в вашу рабочую область. Piper работает полностью офлайн с низкой задержкой.',
  'voice.routing.title': 'Маршрутизация голоса',
  'voice.routing.desc':
    'Выберите, какие включённые провайдеры обрабатывают преобразование речи в текст и текста в речь.',
  'voice.routing.save': 'Save',
  'voice.routing.testStt': 'Тест STT',
  'voice.routing.testTts': 'Тест TTS',
  'voice.routing.elevenlabsVoice': 'Голос ElevenLabs',
  'voice.routing.elevenlabsVoiceAria': 'Выбор голоса ElevenLabs',
  'voice.routing.elevenlabsVoiceIdAria': 'ID голоса ElevenLabs (пользовательский)',
  'voice.routing.elevenlabsVoiceDesc':
    'Выберите подобранный голос или вставьте пользовательский ID голоса из вашей панели ElevenLabs.',
  'voice.externalProviders.title': 'Внешние голосовые провайдеры',
  'voice.externalProviders.desc':
    'Подключайте сторонние STT/TTS API, такие как Deepgram, ElevenLabs или OpenAI, напрямую.',
  'voice.externalProviders.keySet': 'Ключ установлен',
  'voice.externalProviders.noKey': 'Нет API-ключа',
  'voice.externalProviders.test': 'Test',
  'voice.externalProviders.testing': 'Тестирование…',
  'voice.externalProviders.remove': 'Remove',
  'voice.externalProviders.provider': 'Provider',
  'voice.externalProviders.selectProvider': 'Выберите провайдера…',
  'voice.externalProviders.apiKey': 'API-ключ',
  'voice.externalProviders.apiKeyPlaceholder': 'sk-…',
  'voice.externalProviders.add': 'Add',
  'pttSettings.title': 'Нажми и говори',
  'pttSettings.description':
    'Удерживайте клавишу, чтобы говорить с OpenHuman, пока вы находитесь в другом приложении. При отпускании запись отправляется; если включён параметр «Озвучивать ответы», OpenHuman озвучит ответ.',
  'pttSettings.shortcutLabel': 'Сочетание клавиш',
  'pttSettings.shortcutPlaceholder': 'Нажмите клавишу (например, F13)',
  'pttSettings.shortcutUnsetHint':
    'Нажми и говори выключено — выберите сочетание клавиш, чтобы включить.',
  'pttSettings.speakRepliesLabel': 'Озвучивать ответы агента',
  'pttSettings.showOverlayLabel': 'Показывать наложение во время удержания',
  'pttSettings.errorConflictsWithDictation':
    'Это сочетание уже используется диктовкой. Выберите другую клавишу.',
  'pttSettings.errorModifierOnly':
    'Выберите обычную клавишу (например, F13) — сочетания только из модификаторов не работают для «нажми и говори».',
  'pttSettings.errorEmpty': 'Выберите клавишу для назначения.',
  'pttSettings.errorAccessibility':
    'macOS требует разрешения «Универсальный доступ» для этого сочетания. Откройте Системные настройки → Конфиденциальность и безопасность → Универсальный доступ и включите OpenHuman.',
  'pttSettings.errorShortcutInUse':
    'Это сочетание уже использует другое приложение. Выберите другое.',
  'pttSettings.errorUnsupportedWayland':
    'Сессии Wayland пока не поддерживают глобальные сочетания клавиш в OpenHuman — перейдите на сессию X11 или используйте встроенный переключатель диктовки.',
  'pttSettings.exclusiveFullscreenHint':
    'В играх с эксклюзивным полноэкранным режимом наложение не отобразится — вы услышите только звуковой сигнал. Переключитесь на оконный полноэкранный режим, чтобы видеть наложение.',
  'pttOverlay.listening': 'Слушаю…',
  'pttOverlay.idle': 'Ожидание',
  'autocomplete.title': 'Автодополнение',
  'autocomplete.settings': 'Настройки',
  'autocomplete.acceptWithTab': 'Принять с помощью Tab',
  'autocomplete.stylePreset': 'Стиль',
  'autocomplete.style.balanced': 'Сбалансированный',
  'autocomplete.style.concise': 'Краткий',
  'autocomplete.style.formal': 'Официальный',
  'autocomplete.style.casual': 'Неформальный',
  'autocomplete.style.custom': 'Пользовательский',
  'autocomplete.disabledApps': 'Отключённые приложения (по одному bundle/токену на строку)',
  'autocomplete.saveSettings': 'Сохранить настройки',
  'autocomplete.saving': 'Сохранение…',
  'autocomplete.runtime': 'Среда выполнения',
  'autocomplete.running': 'Работает',
  'autocomplete.start': 'Запустить',
  'autocomplete.stop': 'Остановить',
  'autocomplete.settingsSaved': 'Настройки автодополнения сохранены.',
  'autocomplete.started': 'Автодополнение запущено.',
  'autocomplete.didNotStart': 'Автодополнение не запустилось. Проверь, включено ли оно.',
  'autocomplete.stopped': 'Автодополнение остановлено.',
  'autocomplete.advancedSettings': 'Дополнительные настройки',
  'autocomplete.debugTitle': 'Отладка автодополнения',
  'chat.agentChat': 'Чат с агентом',
  'chat.overrides': 'Переопределения',
  'chat.model': 'Модель',
  'chat.temperature': 'Температура',
  'chat.conversation': 'Разговор',
  'chat.startAgentConversation': 'Начни разговор с агентом.',
  'chat.you': 'Ты',
  'chat.agent': 'Агент',
  'chat.askAgent': 'Спроси агента о чём угодно...',
  'chat.sendMessage': 'Отправить сообщение',
  'composio.triageTitle': 'Триггеры интеграций',
  'composio.triageDesc':
    'Когда активно, каждый входящий триггер Composio проходит через шаг AI-сортировки, который классифицирует событие и может запустить автоматические действия — один локальный LLM-запрос на триггер. Отключи глобально или для конкретных интеграций, если предпочитаешь ручной просмотр. Если переменная окружения',
  'composio.disableAllTriage': 'Отключить AI-сортировку для всех триггеров',
  'composio.triggersStillRecorded':
    'Триггеры по-прежнему записываются в историю — LLM-запросы не выполняются.',
  'composio.disableSpecificIntegrations': 'Отключить AI-сортировку для конкретных интеграций',
  'composio.settingsSaved': 'Настройки сохранены',
  'composio.saveFailed': 'Не удалось сохранить. Попробуй ещё раз.',
  'cron.title': 'Задания по расписанию',
  'cron.scheduledJobs': 'Запланированные задания',
  'cron.manageCronJobs': 'Управление заданиями из основного планировщика.',
  'cron.refreshCronJobs': 'Обновить задания',
  'localModel.modelStatus': 'Статус модели',
  'localModel.downloadModels': 'Скачать модели',
  'localModel.usage': 'Использование',
  'localModel.usageDesc':
    'Выбери, какие подсистемы используют локальную модель. Остальное использует облако.',
  'localModel.enableRuntime': 'Включить локальную AI-среду',
  'localModel.enableRuntimeDesc':
    'Главный переключатель. По умолчанию выключен — Ollama простаивает. При включении суммаризатор деревьев, интеллект экрана и автодополнение всегда используют локальную модель.',
  'localModel.advancedSettings': 'Дополнительные настройки',
  'localModel.debugTitle': 'Отладка локальной модели',
  'screenAwareness.debugTitle': 'Отладка слежения за экраном',
  'screenAwareness.debug.debugAndDiagnostics': 'Отладка и диагностика',
  'screenAwareness.debug.collapse': 'Свернуть',
  'screenAwareness.debug.expand': 'Развернуть',
  'screenAwareness.debug.failedToSave': 'Не удалось сохранить интеллект экрана.',
  'screenAwareness.debug.policyTitle': 'Политика интеллекта экрана',
  'screenAwareness.debug.baselineFps': 'Базовый показатель FPS',
  'screenAwareness.debug.useVisionModel': 'Использовать модель концепции.',
  'screenAwareness.debug.useVisionModelDesc':
    'Отправлять снимки экрана в визуальную языковую модель для более богатого контекста. Если отключено, используется только OCR-текст с текстовой моделью — быстрее и без требований к визуальной модели.',
  'screenAwareness.debug.keepScreenshots': 'Сохранять снимки экрана.',
  'screenAwareness.debug.keepScreenshotsDesc':
    'Сохранять снимки экрана в рабочей области вместо удаления после обработки',
  'screenAwareness.debug.allowlist': 'Список разрешенных (одно правило в строке)',
  'screenAwareness.debug.denylist': 'Список запрещенных (одно правило в строке)',
  'screenAwareness.debug.saveSettings': 'Сохранить настройки интеллекта экрана',
  'screenAwareness.debug.sessionStats': 'Статистика сеанса',
  'screenAwareness.debug.framesEphemeral': 'Кадры (эфемерные)',
  'screenAwareness.debug.panicStop': 'Паника-стоп',
  'screenAwareness.debug.defaultPanicHotkey': 'Cmd+Shift+.',
  'screenAwareness.debug.vision': 'Видение',
  'screenAwareness.debug.idle': 'бездействующее',
  'screenAwareness.debug.visionQueue': 'Очередь видений',
  'screenAwareness.debug.lastVision': 'Последнее видение',
  'screenAwareness.debug.notAvailable': 'н/д',
  'screenAwareness.debug.visionSummaries': 'Сводки видений',
  'screenAwareness.debug.refreshing': 'Обновление…',
  'screenAwareness.debug.noSummaries': 'Сводок пока нет.',
  'screenAwareness.debug.unknownApp': 'Неизвестное приложение.',
  'screenAwareness.debug.macosOnly':
    'Screen Intelligence V1 в настоящее время поддерживается только на macOS.',
  'memory.debugTitle': 'Отладка памяти',
  'memory.documents': 'Документы',
  'memory.filterByNamespace': 'Фильтровать по пространству имен...',
  'memory.refresh': 'Обновить',
  'memory.noDocumentsFound': 'Документы не найдены.',
  'memory.delete': 'Удалить',
  'memory.rawResponse': 'Необработанный ответ',
  'memory.namespaces': 'Пространства имен',
  'memory.noNamespacesFound': 'Пространства имен не найдены.',
  'memory.queryRecall': 'Запрос и вызов',
  'memory.namespace': 'Пространство имен',
  'memory.queryText': 'Текст запроса...',
  'memory.defaultMaxChunks': '10',
  'memory.maxChunks': 'максимальное количество фрагментов',
  'memory.query': 'Запрос',
  'memory.recall': 'Вызов',
  'memory.queryLabel': 'Запрос',
  'memory.recallLabel': 'Вызов',
  'memory.queryResult': 'Результат запроса',
  'memory.recallResult': 'Результат вызова',
  'memory.clearNamespace': 'Очистить пространство имен',
  'memory.clearNamespaceDescription': 'Безвозвратно удалить все документы в пространстве имен.',
  'memory.selectNamespace': 'Выберите пространство имен...',
  'memory.exampleNamespace': 'например. навык:gmail:user@example.com',
  'memory.clear': 'Очистить',
  'memory.deleteConfirm': 'Удалить документ «{documentId}» в пространстве имен «{namespace}»?',
  'memory.clearNamespaceConfirm':
    'Это навсегда удалит ВСЕ документы в пространстве имён «{namespace}». Продолжить?',
  'memory.clearNamespaceSuccess': 'Пространство имен «{namespace}» очищено.',
  'memory.clearNamespaceEmpty': 'В «{namespace}» нечего очищать.',
  'webhooks.debugTitle': 'Отладка вебхуков',
  'webhooks.failedToLoadDebugData': 'Не удалось загрузить данные отладки веб-перехватчика.',
  'webhooks.clearLogsConfirm': 'Очистить все записанные журналы отладки веб-перехватчиков?',
  'webhooks.failedToClearLogs': 'Не удалось очистить журналы веб-перехватчиков.',
  'webhooks.loading': 'Загрузка...',
  'webhooks.refresh': 'Обновить',
  'webhooks.clearing': 'Очистка...',
  'webhooks.clearLogs': 'Очистить журналы',
  'webhooks.registered': 'зарегистрирован',
  'webhooks.captured': 'захвачен',
  'webhooks.live': 'в прямом эфире',
  'webhooks.disconnected': 'отключен',
  'webhooks.lastEvent': 'Последнее событие',
  'webhooks.at': 'в',
  'webhooks.registeredWebhooks': 'Зарегистрированные вебхуки.',
  'webhooks.noActiveRegistrations': 'Активных регистраций нет.',
  'webhooks.resolvingBackendUrl': 'Разрешение серверной части URL…',
  'webhooks.capturedRequests': 'Захваченные запросы',
  'webhooks.noRequestsCaptured': 'Запросы веб-перехватчика еще не зафиксированы.',
  'webhooks.unrouted': 'не маршрутизировано',
  'webhooks.pending': 'в ожидании',
  'webhooks.requestHeaders': 'Заголовки запроса',
  'webhooks.queryParams': 'Параметры запроса',
  'webhooks.requestBody': 'Тело запроса',
  'webhooks.responseHeaders': 'Заголовки ответа',
  'webhooks.responseBody': 'Тело ответа',
  'webhooks.rawPayload': 'Необработанные полезные данные',
  'webhooks.empty': '[пусто]',
  'providerSetup.error.defaultDetails': 'Не удалось настроить поставщика.',
  'providerSetup.error.providerFallback': 'Поставщик',
  'providerSetup.error.credentialsRejected':
    '{provider} отклонил учётные данные. Проверьте API-ключ и повторите попытку.',
  'providerSetup.error.endpointNotRecognized':
    '{provider} не распознал конечную точку. Проверьте базовый URL и повторите попытку.',
  'providerSetup.error.providerUnavailable':
    '{provider} временно недоступен. Повторите попытку или проверьте статус провайдера.',
  'providerSetup.error.unreachable':
    'Не удалось подключиться к {provider}. Проверьте URL конечной точки и сетевое подключение, затем повторите попытку.',
  'providerSetup.error.couldNotReachWithMessage': 'Не удалось связаться с {provider}: {message}',
  'providerSetup.error.technicalDetails': 'Технические подробности',
  'notifications.routingTitle': 'Маршрутизация уведомлений',
  'notifications.routing.pipelineStats': 'Статистика конвейера',
  'notifications.routing.total': 'Всего',
  'notifications.routing.unread': 'Непрочитано',
  'notifications.routing.unscored': 'Без оценок',
  'notifications.routing.intelligenceTitle': 'Аналитика уведомлений',
  'notifications.routing.intelligenceDesc':
    'Каждое уведомление из подключённых аккаунтов оценивается локальной моделью ИИ. Важные уведомления автоматически передаются агенту-оркестратору, чтобы ничто критическое не осталось незамеченным.',
  'notifications.routing.howItWorks': 'Как это работает',
  'notifications.routing.level.drop': 'Удаление',
  'notifications.routing.level.dropDesc': 'Шум/спам — сохраняется, но не отображается',
  'notifications.routing.level.acknowledge': 'Подтверждение',
  'notifications.routing.level.acknowledgeDesc':
    'Низкий приоритет — отображается в центре уведомлений',
  'notifications.routing.level.react': 'Реагировать',
  'notifications.routing.level.reactDesc':
    'Средний приоритет — запускает сфокусированный ответ агента',
  'notifications.routing.level.escalate': 'Эскалация',
  'notifications.routing.level.escalateDesc': 'Высокий приоритет — передаётся агенту-оркестратору',
  'notifications.routing.perProvider': 'Маршрутизация для каждого поставщика',
  'notifications.routing.threshold': 'Порог',
  'notifications.routing.routeToOrchestrator': 'Маршрут к оркестратору',
  'notifications.routing.loadSettingsError':
    'Не удалось загрузить настройки. Закройте и повторно откройте эту панель.',
  'common.reload': 'Перезагрузить',
  'common.skip': 'Пропустить',
  'common.disable': 'Отключить',
  'common.enable': 'Включить',
  'chat.safetyTimeout':
    'Агент не ответил в течение 2 минут. Попробуй снова или проверь соединение.',
  'chat.filter.general': 'Общее',
  'chat.filter.subconscious': 'Подсознание',
  'chat.filter.meetings': 'Встречи',
  'chat.filter.tasks': 'Задачи',
  'chat.selectThread': 'Выбери чат',
  'chat.threads': 'Чаты',
  'chat.noThreads': 'Чатов пока нет',
  'chat.noLabelThreads': 'Нет чатов «{label}»',
  'chat.deleteThread': 'Удалить чат',
  'chat.deleteThreadConfirm': 'Удалить «{title}»?',
  'chat.untitledThread': 'Чат без названия',
  'chat.editThreadTitle': 'Изменить название ветки',
  'chat.hideSidebar': 'Скрыть боковую панель',
  'chat.showSidebar': 'Показать боковую панель',
  'chat.searchThreads': 'Поиск бесед',
  'layout.resizeSidebar': 'Изменить размер боковой панели',
  'layout.showSidebar': 'Показать боковую панель',
  'chat.newThreadShortcut': 'Новый чат (/new)',
  'chat.new': 'Новый',
  'chat.failedToLoadMessages': 'Не удалось загрузить сообщения',
  'chat.thinkingIteration': 'Думаю... ({n})',
  'chat.thinkingDots': 'Думаю...',
  'chat.approachingLimit': 'Лимит использования близко',
  'chat.approachingLimitMsg': 'Ты использовал {pct}% доступной квоты.',
  'chat.upgrade': 'Улучшить',
  'chat.weeklyLimitHit': 'Ты достиг еженедельного лимита.',
  'chat.resets': 'Сбросится',
  'chat.topUpToContinue': 'Пополни баланс для продолжения.',
  'chat.budgetComplete':
    'Включённый бюджет исчерпан. Добавь кредиты или улучши план для продолжения.',
  'chat.topUp': 'Пополнить',
  'chat.cycle': 'Цикл',
  'chat.cycleSpent': 'Потрачено за цикл',
  'chat.cycleRemaining': 'Осталось',
  'chat.left': 'осталось',
  'chat.setup': 'Настроить',
  'chat.switchToText': 'Переключиться на текст',
  'chat.superContext.label': 'Супер-контекст',
  'chat.superContext.hint':
    'Супер-контекст позволяет OpenHuman собирать и подготавливать контекст из всех доступных ему данных, чтобы давать максимально релевантный ответ. Супер-контекст находится на стадии раннего бета-тестирования.',
  'chat.transcribing': 'Транскрипция...',
  'chat.stopAndSend': 'Остановить и отправить',
  'chat.startTalking': 'Начни говорить',
  'chat.playingVoiceReply': 'Воспроизведение голосового ответа',
  'chat.voiceHint': 'Используй микрофон для речи',
  'chat.micUnavailable': 'Микрофон недоступен',
  'chat.turn': 'ход',
  'chat.turns': 'ходов',
  'chat.openWorkerThread': 'Открыть чат воркера',
  'chat.attachment.attach': 'Прикрепить изображение',
  'chat.attachment.remove': 'Удалить {name}',
  'chat.attachment.tooMany': 'Максимум {max} изображений на сообщение',
  'chat.attachment.tooManyFiles': 'Максимум {max} файлов на сообщение',
  'chat.attachment.tooManyVideos': 'Максимум {max} видео на сообщение',
  'chat.attachment.videoNotSupported':
    'Эта модель не может читать видео. Вы можете использовать уровень «Рассуждение» от OpenHuman, чтобы прикрепить видео.',
  'chat.attachment.dropToAttach': 'Перетащите файлы, чтобы прикрепить',
  'chat.attachment.tooLarge': 'Изображение превышает ограничение размера {max}',
  'chat.attachment.unsupportedType':
    'Неподдерживаемый тип файла. Используйте изображение (PNG, JPEG, WebP, GIF, BMP) или файл PDF, TXT либо Markdown.',
  'chat.attachment.imageNotSupported':
    'Эта модель не может читать изображения. Вы можете использовать уровень «Рассуждение» от OpenHuman, чтобы прикрепить изображение.',
  'chat.attachment.readFailed': 'Не удалось прочитать файл',
  'memory.searchAria': 'Поиск в памяти',
  'memory.searchPlaceholder': 'Поиск записей памяти...',
  'memory.sourceFilter.all': 'Все источники',
  'memory.sourceFilter.email': 'Электронная почта',
  'memory.sourceFilter.calendar': 'Календарь',
  'memory.sourceFilter.telegram': 'Telegram',
  'memory.sourceFilter.aiInsight': 'AI-инсайт',
  'memory.sourceFilter.system': 'Система',
  'memory.sourceFilter.trading': 'Трейдинг',
  'memory.sourceFilter.security': 'Безопасность',
  'memory.ingestionActivity': 'Активность загрузки',
  'memory.events': 'событий',
  'memory.event': 'событие',
  'memory.overTheLast': 'за последние',
  'memory.months': 'месяцев',
  'memory.peak': 'Пик',
  'memory.perDay': '/день',
  'memory.less': 'Меньше',
  'memory.more': 'Больше',
  'memory.on': 'в',
  'memory.loading': 'Загрузка памяти',
  'memory.fetching': 'Получение записей памяти...',
  'memory.analyzing': 'Анализ памяти',
  'memory.analyzingHint': 'Обработка воспоминаний для извлечения инсайтов...',
  'memory.noMatches': 'Ничего не найдено',
  'memory.noMatchesHint': 'Попробуй изменить условия поиска или фильтры.',
  'memory.allCaughtUp': 'Всё просмотрено',
  'memory.allCaughtUpHint': 'Новых записей для обработки нет.',
  'memory.noAnalysis': 'Анализа ещё нет',
  'memory.noAnalysisHint': 'Запусти анализ, чтобы найти закономерности в воспоминаниях.',
  'memory.emptyHint': 'Начни общаться, чтобы создать первые воспоминания.',
  'mic.unavailable': 'Микрофон недоступен',
  'mic.permissionDenied': 'Доступ к микрофону запрещён',
  'mic.failedToStartRecorder': 'Не удалось запустить запись',
  'mic.deviceUnavailable': 'Выбранный микрофон недоступен — попробуйте другое устройство.',
  'mic.deviceInUse': 'Микрофон используется другим приложением.',
  'mic.error': 'Ошибка микрофона',
  'mic.transcribing': 'Транскрипция...',
  'mic.retryingTranscription': 'Повторная попытка… ({attempt} из {max})',
  'mic.tapToSend': 'Нажми для отправки',
  'mic.waitingForAgent': 'Ожидание агента...',
  'mic.tapAndSpeak': 'Нажми и говори',
  'mic.stopRecording': 'Остановить запись и отправить',
  'mic.startRecording': 'Начать запись',
  'mic.deviceSelector': 'Микрофонное устройство',
  'mic.tapToSendCountdown': 'Нажми для отправки ({seconds}с)',
  'token.usageLimitReached': 'Лимит использования достигнут',
  'token.approachingLimit': 'Лимит близко',
  'token.planClickForDetails': 'план — нажми для подробностей',
  'token.sessionTokens': 'Вход: {in} | Выход: {out} | Ходов: {turns}',
  'token.limit': 'Лимит достигнут',
  'token.inLabel': 'ВХ',
  'token.outLabel': 'ВЫХ',
  'token.inputTokens': 'Входные токены за сессию',
  'token.outputTokens': 'Выходные токены за сессию',
  'token.turnsCount': 'Циклы вывода за сессию',
  'token.turn': 'цикл',
  'token.turns': 'циклов',
  'token.ctxLabel': 'CTX',
  'token.contextWindow': 'Использование окна контекста (последний цикл)',
  'token.cachedLabel': 'Из кэша',
  'token.costLabel': 'Стоимость',
  'token.costTitle': 'Оценочная стоимость этой сессии (USD)',
  'token.sessionUsageTitle': 'Использование сессии',
  'token.subAgentsHeading': 'Использование субагентов',
  'token.byAgentHeading': 'По агенту',
  'token.orchestrator': 'Оркестратор',
  'token.noSubAgents': 'Пока нет использования субагентов',
  'token.popInput': 'Входные токены',
  'token.popOutput': 'Выходные токены',
  'token.popCacheHit': 'Попадание в кэш',
  'token.popContext': 'Окно контекста',
  'token.tipInput': 'Токены, отправленные модели в этой сессии — ваши запросы и история разговора.',
  'token.tipOutput': 'Токены, сгенерированные моделью в этой сессии.',
  'token.tipCacheHit':
    'Входные токены, выданные из кэшированного префикса запроса и тарифицируемые по сниженной ставке.',
  'token.clickForDetails': 'Нажмите, чтобы увидеть детали использования сессии',
  'catalog.noCapabilityBinding': 'Нет привязки возможностей',
  'catalog.downloadFailed': 'Загрузка не удалась',
  'catalog.active': 'Активно',
  'catalog.installed': 'Установлено',
  'catalog.notDownloaded': 'Не загружено',
  'catalog.inUse': 'Используется',
  'catalog.use': 'Использовать',
  'catalog.deleteModel': 'Удалить модель',
  'catalog.download': 'Скачать',
  'navigator.recent': 'Недавние',
  'navigator.today': 'Сегодня',
  'navigator.thisWeek': 'На этой неделе',
  'navigator.sources': 'Источники',
  'navigator.email': 'Электронная почта',
  'navigator.slack': 'Slack',
  'navigator.chat': 'Чат',
  'navigator.documents': 'Документы',
  'navigator.people': 'Люди',
  'navigator.topics': 'Темы',
  'dreams.description':
    'Сны — это AI-отражения, которые синтезируют закономерности из твоих воспоминаний.',
  'dreams.comingSoon': 'Скоро',
  'assignment.memoryLlm': 'LLM памяти',
  'assignment.memoryLlmAria': 'Выбор Memory LLM',
  'assignment.embedder': 'Эмбеддер',
  'assignment.loaded': 'Загружено',
  'assignment.notDownloaded': 'Не загружено',
  'assignment.usedForExtractSummarise': 'Используется для извлечения и суммаризации',
  'insights.knownFacts': 'Известные факты',
  'insights.preferences': 'Предпочтения',
  'insights.relationships': 'Отношения',
  'insights.skills': 'Навыки',
  'insights.opinions': 'Мнения',
  'insights.other': 'Другое',
  'insights.title': 'Инсайты',
  'insights.empty': 'Инсайтов пока нет. Они появляются по мере роста памяти.',
  'insights.description': 'На основе {count} связей в твоём графе памяти.',
  'insights.items': 'элементов',
  'insights.more': 'ещё',
  'calls.joiningCall': 'Подключение к звонку',
  'calls.meetWindowOpening': 'Окно Meet открывается...',
  'calls.failedToStart': 'Не удалось начать звонок Meet',
  'calls.couldNotStart': 'Не удалось начать звонок',
  'calls.failedToClose': 'Не удалось завершить звонок',
  'calls.couldNotClose': 'Не удалось закрыть звонок',
  'calls.joinMeet': 'Подключиться к звонку Google Meet',
  'calls.joinMeetDescription': 'Введи ссылку Google Meet для подключения.',
  'calls.meetLink': 'Ссылка Meet',
  'calls.displayName': 'Отображаемое имя',
  'calls.openingMeet': 'Открытие Meet...',
  'calls.joinCall': 'Подключиться к звонку',
  'calls.activeCalls': 'Активные звонки',
  'calls.leave': 'Выйти',
  'workspace.wipeConfirm': 'Ты уверен, что хочешь очистить всю память? Это нельзя отменить.',
  'workspace.resetTreeConfirm': 'Ты уверен, что хочешь перестроить дерево памяти?',
  'workspace.wipeTitle': 'Очистить память',
  'workspace.resetting': 'Сброс...',
  'workspace.resetMemory': 'Сбросить память',
  'workspace.resetTreeTitle': 'Перестроить дерево памяти',
  'workspace.rebuilding': 'Перестройка...',
  'workspace.resetMemoryTree': 'Сбросить дерево памяти',
  'workspace.building': 'Построение...',
  'workspace.buildSummaryTrees': 'Построить деревья суммаризации',
  'workspace.viewVault': 'Открыть хранилище',
  'workspace.openingVaultTitle': 'Открытие хранилища в Obsidian',
  'workspace.openingVaultMessage':
    'Если Obsidian не открывается, установите его с obsidian.md или используйте «Показать папку». Путь к хранилищу:',
  'workspace.openVaultFailedTitle': 'Не удалось открыть хранилище в Obsidian',
  'workspace.openVaultFailedMessage':
    'Используйте Reveal Folder, чтобы напрямую открыть каталог хранилища. Путь к хранилищу:',
  'workspace.revealVaultFailed': 'Не удалось показать папку хранилища',
  'workspace.revealFolder': 'Показать папку',
  'workspace.checkingVault': 'Проверка…',
  'workspace.vaultNotRegisteredHelp':
    'Obsidian открывает только папки, добавленные как хранилище. В Obsidian выберите «Открыть папку как хранилище» и укажите папку ниже — это нужно сделать только один раз. Затем нажмите «Просмотр хранилища» снова.',
  'workspace.obsidianNotFoundHelp':
    'Obsidian не найден на этом устройстве. Установите его или — если он установлен в нестандартном месте — укажите папку конфигурации в разделе «Дополнительно».',
  'workspace.openAnyway': 'Всё равно открыть в Obsidian',
  'workspace.installObsidian': 'Установить Obsidian',
  'workspace.obsidianAdvanced': 'Obsidian установлен в другом месте?',
  'workspace.obsidianConfigDirLabel': 'Папка конфигурации Obsidian',
  'workspace.obsidianConfigDirHint':
    'Путь к папке, содержащей obsidian.json (например, ~/.config/obsidian). Оставьте пустым для автоопределения.',
  'workspace.obsidianConfigDirPlaceholder': '~/.config/obsidian',
  'workspace.graphLoadFailed': 'Не удалось загрузить граф памяти',
  'workspace.loadingGraph': 'Загрузка графа памяти...',
  'workspace.graphViewMode': 'Режим просмотра графа памяти',
  'workspace.trees': 'Деревья',
  'workspace.contacts': 'Контакты',
  'graph.noContactMentions': 'Нет упоминаний контактов',
  'graph.noMemory': 'Памяти нет',
  'graph.source': 'Источник',
  'graph.topic': 'Тема',
  'graph.global': 'Глобальное',
  'graph.document': 'Документ',
  'graph.contact': 'Контакт',
  'graph.nodes': 'узлов',
  'graph.parentChild': 'родитель-потомок',
  'graph.documentContact': 'документ-контакт',
  'graph.link': 'связь',
  'graph.links': 'связей',
  'graph.children': 'потомки',
  'graph.clickToOpenObsidian': 'Нажми, чтобы открыть в Obsidian',
  'graph.person': 'Человек',
  'graph.resetView': 'Сбросить вид',
  'modal.dontShowAgain': 'Не показывать похожие предложения',
  'reflections.loading': 'Загрузка рефлексий...',
  'reflections.empty': 'Рефлексий пока нет',
  'reflections.title': 'Рефлексии',
  'reflections.proposedAction': 'Предлагаемое действие',
  'reflections.act': 'Выполнить',
  'reflections.dismiss': 'Закрыть',
  'reflections.viewConversation': 'Просмотр',
  'subconscious.mode.label': 'Режим подсознания',
  'subconscious.mode.off.title': 'Выкл',
  'subconscious.mode.off.desc': 'Подсознание отключено.',
  'subconscious.mode.simple.title': 'Простой',
  'subconscious.mode.simple.desc': 'Наблюдение в режиме чтения. Только доступ к памяти и файлам.',
  'subconscious.mode.aggressive.title': 'Агрессивный',
  'subconscious.mode.aggressive.desc':
    'Полный доступ к инструментам. Может писать, создавать агентов и делегировать задачи.',
  'subconscious.mode.aggressiveWarning':
    'Агрессивный режим даёт подсознанию полный доступ к инструментам, включая запись и создание подагентов.',
  'subconscious.interval.label': 'Частота',
  'subconscious.interval.minutes': '{n} мин',
  'subconscious.interval.hours': '{n} ч',
  'subconscious.interval.oneHour': '1 час',
  'subconscious.interval.oneDay': '24 часа',
  'whatsapp.chatsSynced': 'чатов синхронизировано',
  'whatsapp.chatSynced': 'чат синхронизирован',
  'sync.active': 'Активно',
  'sync.recent': 'Недавние',
  'sync.idle': 'Ожидание',
  'sync.memorySources': 'Источники памяти',
  'sync.noConnectedSources': 'Нет подключённых источников',
  'sync.chunks': 'блоков',
  'sync.lastChunk': 'Последний блок:',
  'sync.pending': 'ожидает',
  'sync.processed': 'обработано',
  'sync.syncing': 'Синхронизация…',
  'sync.sync': 'Синхронизировать',
  'sync.failedToLoad': 'Не удалось загрузить статус синхронизации',
  'sync.noContent': 'Контент в память ещё не синхронизирован. Подключи интеграцию для начала.',
  'memorySyncInterval.title': 'Расписание синхронизации',
  'memorySyncInterval.lastSynced': 'Последняя синхронизация',
  'memorySyncInterval.never': 'никогда',
  'memorySyncInterval.everyHours': 'Каждые {h} ч',
  'memorySyncInterval.everyMinutes': 'Каждые {m} мин',
  'memorySyncInterval.manual': 'Только вручную',
  'memorySyncInterval.saveFailed': 'Не удалось обновить расписание синхронизации',
  'memorySources.title': 'Источники памяти',
  'memorySources.empty': 'Источников памяти пока нет. Добавьте один, чтобы начать кормить память.',
  'memorySources.customSources': 'Пользовательские источники',
  'memorySources.addSource': 'Добавить источник',
  'memorySources.noCustomSources':
    'Пользовательских источников пока нет. Для начала добавьте папку, репозиторий GitHub, канал RSS или веб-страницу.',
  'memorySources.loadingConnections': 'Загрузка подключений…',
  'memorySources.noConnections':
    'Активных соединений Composio не ​​найдено. Сначала подключите интеграцию.',
  'memorySources.pickConnection': 'Выберите соединение',
  'memorySources.selectConnection': '— Выберите соединение —',
  'memorySources.comingSoon': 'Скоро',
  'memorySources.composioListFailed': 'Не удалось загрузить соединения Composio.',
  'memorySources.browse': 'Просматривать…',
  'memorySources.folderPathPlaceholder': '/Users/you/notes',
  'memorySources.globPatternPlaceholder': '**/*.md',
  'memorySources.repoUrlPlaceholder': 'https://github.com/org/repo',
  'memorySources.branchPlaceholder': 'main',
  'memorySources.feedUrlPlaceholder': 'https://example.com/feed.xml',
  'memorySources.pageUrlPlaceholder': 'https://example.com/article',
  'memorySources.cssSelectorPlaceholder': 'article',
  'memorySources.searchQueryPlaceholder': 'от:пользователь AI безопасность',
  'memorySources.kind.composio': 'Интеграция',
  'memorySources.kind.conversation': 'Разговор',
  'memorySources.kind.folder': 'Локальная папка',
  'memorySources.kind.github_repo': 'Репо GitHub',
  'memorySources.kind.twitter_query': 'Поиск в Твиттере',
  'memorySources.kind.rss_feed': 'RSS Лента',
  'memorySources.kind.web_page': 'Веб-страница',
  'memorySources.sync.successTitle': 'Синхронизация',
  'memorySources.sync.successMessage': 'Прогресс появится в ближайшее время.',
  'memorySources.sync.failedTitle': 'Синхронизация не удалась:',
  'memorySources.sync.completeTitle': 'Синхронизировано',
  'memorySources.sync.itemsSynced': 'элементов синхронизировано',
  'memorySources.sync.upToDate': 'Актуально',
  'memorySources.sync.failedLabel': 'Не удалось',
  'time.justNow': 'только что',
  'time.secondsAgoSuffix': 'с назад',
  'time.minutesAgoSuffix': 'мин назад',
  'time.hoursAgoSuffix': 'ч назад',
  'time.daysAgoSuffix': 'д назад',
  'memorySources.pickKind': 'Какой источник вы хотите добавить?',
  'memorySources.backToKinds': 'Вернуться к типам источников',
  'memorySources.label': 'Этикетка',
  'memorySources.labelPlaceholder': 'Мои исследовательские заметки',
  'memorySources.add': 'Добавлять',
  'memorySources.adding': 'Добавление…',
  'memorySources.added': 'Источник добавлен',
  'memorySources.removed': 'Источник удален.',
  'memorySources.remove': 'Удалять',
  'memorySources.enable': 'Давать возможность',
  'memorySources.disable': 'Запрещать',
  'memorySources.toggleFailed': 'Переключить не удалось',
  'memorySources.removeFailed': 'Удалить не удалось',
  'memorySources.folderPath': 'Путь к папке',
  'memorySources.globPattern': 'Шаблон глобуса',
  'memorySources.repoUrl': 'Репозиторий URL',
  'memorySources.branch': 'Ветвь',
  'memorySources.feedUrl': 'Подача URL',
  'memorySources.pageUrl': 'Страница URL',
  'memorySources.cssSelector': 'Селектор CSS (опционально)',
  'memorySources.searchQuery': 'Поисковый запрос',
  'memorySources.build.title': 'Построить',
  'memorySources.build.building': 'Построение…',
  'memorySources.build.successTitle': 'Дерево построено',
  'memorySources.build.failedTitle': 'Ошибка построения',
  'memorySources.build.sealsMessage': 'запечатывание завершено',
  'memorySources.allIn.button': 'Включить всё',
  'memorySources.allIn.title': 'Включить всё?',
  'memorySources.allIn.message':
    'Это активирует все источники памяти и снимет все ограничения синхронизации. Создаёт наиболее богатый граф памяти, но может использовать больше кредитов.',
  'memorySources.allIn.confirm': 'Да',
  'memorySources.allIn.cancel': 'Нет',
  'memorySources.allIn.success':
    'Все источники активированы без ограничений. Синхронизация запущена.',
  'memorySources.allIn.failed':
    'Не удалось применить «Включить всё». Пожалуйста, попробуйте снова.',
  'memorySources.settings.button': 'Настройки',
  'memorySources.settings.title': 'Настройки синхронизации',
  'memorySources.settings.maxPrs': 'Максимум pull request',
  'memorySources.settings.maxIssues': 'Максимум задач',
  'memorySources.settings.maxCommits': 'Максимум коммитов',
  'memorySources.settings.maxItems': 'Максимум элементов',
  'memorySources.settings.sinceDays': 'Период (дней)',
  'memorySources.settings.syncDepthDays': 'Глубина синхронизации (дней)',
  'memorySources.settings.maxTokens': 'Максимум токенов за синхронизацию',
  'memorySources.settings.maxCost': 'Максимальная стоимость за синхронизацию (USD)',
  'memorySources.settings.unlimited': 'Без лимита',
  'memorySources.settings.unlimitedTooltip':
    'Вы выбрали синхронизацию максимума для {toolkit}. Лимиты можно изменить здесь.',
  'memorySources.settings.maxed': 'Заполнено',
  'memorySources.settings.save': 'Сохранить',
  'memorySources.settings.saving': 'Сохранение…',
  'memorySources.settings.saved': 'Настройки сохранены',
  'memorySources.settings.saveFailed': 'Не удалось сохранить настройки',
  'backend.aiBackend': 'AI-бэкенд',
  'backend.cloud': 'Облако',
  'backend.recommended': 'Рекомендуется',
  'backend.cloudDescription':
    'Быстрые и мощные модели на наших серверах. Готовы к использованию сразу.',
  'backend.privacyNote':
    'Личные данные, сообщения и ключи никогда не отправляются на наши серверы.',
  'backend.local': 'Локально',
  'backend.advanced': 'Дополнительно',
  'backend.localDescription':
    'Запускай модели на своём устройстве с помощью Ollama. Полная приватность, требует настройки.',
  'backend.ramRecommended': 'Рекомендуется 16 ГБ+ RAM',
  'subconscious.tasks': 'задач',
  'subconscious.ticks': 'тиков',
  'subconscious.last': 'Последний',
  'subconscious.failed': 'ошибка',
  'subconscious.tickInterval': 'Интервал тика',
  'subconscious.runNow': 'Запустить сейчас',
  'subconscious.providerUnavailableTitle': 'Подсознание приостановлено',
  'subconscious.providerSettings': 'Настройки ИИ',
  'subconscious.scratchpadInfo':
    'На каждом цикле подсознание проверяет, что изменилось в ваших подключённых источниках, а затем записывает задачи в ваш список дел, обновляет ваши цели или уведомляет вас, когда что-то требует внимания. Откройте Настройки → Доступ агента, чтобы настроить режим и частоту.',
  'subconscious.approvalNeeded': 'Требуется подтверждение',
  'subconscious.requiresApproval': 'Требует подтверждения',
  'subconscious.fixInConnections': 'Исправить в подключениях',
  'subconscious.goAhead': 'Продолжить',
  'subconscious.activeTasks': 'Активные задачи',
  'subconscious.noActiveTasks': 'Активных задач нет',
  'subconscious.default': 'По умолчанию',
  'subconscious.addTaskPlaceholder': 'Добавить новую задачу...',
  'subconscious.activityLog': 'Журнал активности',
  'subconscious.noActivity': 'Активности пока нет',
  'subconscious.decision.nothingNew': 'Ничего нового',
  'subconscious.decision.completed': 'Завершено',
  'subconscious.decision.evaluating': 'Оценка',
  'subconscious.decision.waitingApproval': 'Ожидание подтверждения',
  'subconscious.decision.failed': 'Ошибка',
  'subconscious.decision.cancelled': 'Отменено',
  'subconscious.decision.skipped': 'Пропущено',
  // Subconscious triggers (event-driven orchestrator) debug panel
  'subconsciousTriggers.title': 'Триггеры подсознания',
  'subconsciousTriggers.subtitle': 'Фоновый оркестратор на основе событий',
  'subconsciousTriggers.pipeline': 'Конвейер',
  'subconsciousTriggers.mode': 'Режим',
  'subconsciousTriggers.orchestrator': 'Оркестратор',
  'subconsciousTriggers.running': 'Работает',
  'subconsciousTriggers.stopped': 'Остановлен',
  'subconsciousTriggers.promotionsPerHour': 'Продвижения / час',
  'subconsciousTriggers.queueDepth': 'Глубина очереди',
  'subconsciousTriggers.orchestratorThread': 'Поток оркестратора',
  'subconsciousTriggers.userThread': 'Поток пользователя',
  'subconsciousTriggers.disabledHint':
    'Включите режим на основе событий, чтобы запустить конвейер.',
  'subconsciousTriggers.enable': 'Включить',
  'subconsciousTriggers.disable': 'Отключить',
  'actionable.complete': 'Выполнить',
  'actionable.dismiss': 'Закрыть',
  'actionable.snooze': 'Отложить',
  'actionable.new': 'Новое',
  'stats.storage': 'Хранилище',
  'stats.files': 'файлов',
  'stats.documents': 'Документы',
  'stats.today': 'сегодня',
  'stats.namespaces': 'Пространства имён',
  'stats.relations': 'Связи',
  'stats.firstMemory': 'Первое воспоминание',
  'stats.latest': 'Последнее',
  'stats.sessions': 'Сессии',
  'stats.tokens': 'токенов',
  'bootCheck.invalidUrl': 'Введи URL среды выполнения.',
  'bootCheck.urlMustStartWith': 'URL должен начинаться с http:// или https://',
  'bootCheck.validUrlRequired':
    'Похоже, это не корректный URL (попробуй https://core.example.com/rpc)',
  'bootCheck.tokenRequired': 'Для подключения нужен токен авторизации.',
  'bootCheck.httpPublicWarning':
    'Это обычный HTTP-адрес на публичном хосте — трафик не будет зашифрован. Используйте HTTPS, если вы не доверяете этой сети.',
  'bootCheck.chooseCoreMode': 'Выбрать среду выполнения',
  'bootCheck.connectToCore': 'Подключиться к среде выполнения',
  'bootCheck.desktopDescription':
    'OpenHuman нужна среда выполнения для работы. Выбери, где она должна находиться.',
  'bootCheck.webDescription':
    'В браузере OpenHuman подключается к среде выполнения под твоим управлением. Введи URL и токен авторизации, или скачай настольное приложение для локального запуска.',
  'bootCheck.preferDesktop': 'Хочешь держать всё на своём устройстве?',
  'bootCheck.downloadDesktop': 'Скачать настольное приложение',
  'bootCheck.localRecommended': 'Запустить локально (рекомендуется)',
  'bootCheck.localDescription':
    'Работает прямо на твоём компьютере. Быстро, полностью приватно, ничего настраивать не нужно.',
  'bootCheck.cloudMode': 'Запустить в облаке (сложно)',
  'bootCheck.cloudDescription':
    'Подключись к среде выполнения, которую ты размещаешь в другом месте. Работает 24×7, не нужно держать это устройство включённым.',
  'bootCheck.coreRpcUrl': 'URL среды выполнения',
  'bootCheck.rpcUrlPlaceholder': 'https://core.example.com/rpc',
  'bootCheck.authToken': 'Токен авторизации',
  'bootCheck.bearerTokenPlaceholder': 'Bearer-токен от твоей удалённой среды выполнения',
  'bootCheck.storedLocally': 'Хранится только на этом устройстве. Отправляется как ',
  'bootCheck.testing': 'Проверка…',
  'bootCheck.testConnection': 'Проверить соединение',
  'bootCheck.connectedOk': 'Подключено. Всё готово.',
  'bootCheck.authFailed': 'Токен не подошёл. Проверь его и попробуй снова.',
  'bootCheck.unreachablePrefix': 'Не удалось достучаться:',
  'bootCheck.checkingCore': 'Пробуждение среды выполнения…',
  'bootCheck.cannotReach': 'Нет доступа к среде выполнения',
  'bootCheck.cannotReachDesc': 'Не удалось подключиться к среде выполнения. Попробовать другую?',
  'bootCheck.switchMode': 'Выбрать другую среду',
  'bootCheck.quit': 'Выйти',
  'bootCheck.legacyDetected': 'Обнаружена устаревшая фоновая среда',
  'bootCheck.legacyDescription':
    'На этом устройстве уже запущен отдельно установленный демон OpenHuman. Нужно его убрать, прежде чем встроенная среда сможет взять управление.',
  'bootCheck.removing': 'Удаление…',
  'bootCheck.removeContinue': 'Удалить и продолжить',
  'bootCheck.localNeedsRestart': 'Требуется перезапуск локальной среды',
  'bootCheck.localNeedsRestartDesc':
    'Локальная среда выполнения и приложение используют разные версии. Быстрый перезапуск синхронизирует их.',
  'bootCheck.restarting': 'Перезапуск…',
  'bootCheck.restartCore': 'Перезапустить среду',
  'bootCheck.cloudNeedsUpdate': 'Требуется обновление облачной среды',
  'bootCheck.cloudNeedsUpdateDesc':
    'Облачная среда и приложение используют разные версии. Запусти обновление для синхронизации.',
  'bootCheck.updating': 'Обновление…',
  'bootCheck.updateCloudCore': 'Обновить облачную среду',
  'bootCheck.versionCheckFailed': 'Проверка версии среды не удалась',
  'bootCheck.versionCheckFailedDesc':
    'Среда работает, но не сообщает свою версию. Возможно, она устарела. Перезапусти или обнови её для продолжения.',
  'bootCheck.working': 'Работаю…',
  'bootCheck.restartUpdateCore': 'Перезапустить / обновить среду',
  'bootCheck.unexpectedError': 'Неожиданная ошибка при загрузке',
  'bootCheck.actionFailed': 'Что-то пошло не так. Попробуй ещё раз.',
  'bootCheck.portConflictTitle': 'Не удалось запустить движок приложения',
  'bootCheck.portConflictBody':
    'Другой процесс использует сетевой порт, необходимый OpenHuman. Попробуем устранить это автоматически.',
  'bootCheck.portConflictFixButton': 'Исправить автоматически',
  'bootCheck.portConflictFixing': 'Исправление…',
  'bootCheck.portConflictFixFailed':
    'Автоматическое исправление не сработало. Перезагрузите компьютер и попробуйте снова.',
  'bootCheck.portConflictOwner': '{name} (PID {pid}) использует сетевой порт, нужный OpenHuman.',
  'bootCheck.portConflictGuidance':
    'Закройте эту программу, чтобы освободить порт, или принудительно завершите её ниже, затем повторите попытку.',
  'bootCheck.portConflictForceQuit': 'Принудительно закрыть {name}',
  'bootCheck.portConflictForceQuitting': 'Закрытие {name}…',
  'bootCheck.portConflictForceQuitFailed':
    'Не удалось закрыть эту программу. Возможно, потребуется закрыть её вручную и повторить попытку.',
  'notifications.justNow': 'только что',
  'notifications.minAgo': '{n} мин назад',
  'notifications.hrAgo': '{n} ч назад',
  'notifications.dayAgo': '{n} д назад',
  'notifications.category.messages': 'Сообщения',
  'notifications.category.agents': 'Агенты',
  'notifications.category.skills': 'Навыки',
  'notifications.category.system': 'Система',
  'notifications.category.meetings': 'Встречи',
  'notifications.category.reminders': 'Напоминания',
  'notifications.category.important': 'Важное',
  'notifications.filterAll': 'Все',
  'notifications.filterEmpty': 'Нет уведомлений в этой категории',
  'about.update.status.checking': 'Проверка...',
  'about.update.status.available': 'доступна v{version}',
  'about.update.status.availableNoVersion': 'Доступно обновление',
  'about.update.status.downloading': 'Загрузка...',
  'about.update.status.readyToInstall': 'v{version} готова к установке',
  'about.update.status.readyToInstallNoVersion':
    'Новая версия загружена и готова. Перезапусти для применения.',
  'about.update.status.installing': 'Установка...',
  'about.update.status.restarting': 'Перезапуск...',
  'about.update.status.upToDate': 'У тебя установлена последняя версия.',
  'about.update.status.error': 'Ошибка проверки обновлений',
  'about.update.status.default': 'Проверить обновления',
  'welcome.connectionFailed': 'Ошибка подключения: {status} {statusText}',
  'welcome.connectionFailedMsg': 'Ошибка подключения: {message}',
  'welcome.continueLocally': 'Продолжить локально',
  'welcome.continueLocallyExperimental': 'Продолжить локально (Экспериментально)',
  'welcome.localSessionStarting': 'Запуск локального сеанса...',
  'welcome.localSessionDesc':
    'Использует автономный локальный профиль и пропускает TinyHumans OAuth.',
  'chat.agentChatDesc': 'Открыть прямой чат с агентом.',
  'chat.modelPlaceholder': 'gpt-4o',
  'channels.activeRouteValue': '{channel} через {authMode}',
  'privacy.dataKind.messages': 'Сообщения',
  'privacy.dataKind.agents': 'Агенты',
  'privacy.dataKind.skills': 'Навыки',
  'privacy.dataKind.system': 'Система',
  'privacy.dataKind.meetings': 'Встречи',
  'privacy.dataKind.reminders': 'Напоминания',
  'privacy.dataKind.important': 'Важное',
  'onboarding.enableLocalAI': 'Включить локальный AI',
  'onboarding.skills.status.available': 'Доступно',
  'onboarding.skills.status.connected': 'Подключено',
  'onboarding.skills.status.connecting': 'Подключение',
  'onboarding.skills.status.error': 'Ошибка',
  'onboarding.skills.status.unavailable': 'Недоступно',
  'composio.statusUnavailable': 'Статус недоступен',
  'composio.authExpired': 'Срок авторизации истёк',
  'composio.reconnect': 'Переподключить',
  'composio.expiredAuthorization': 'Срок действия авторизации {name} истек',
  'composio.expiredDescription':
    'Повторно подключитесь, чтобы повторно включить инструменты {name}. OpenHuman будет держать эту интеграцию недоступной, пока вы не обновите доступ к OAuth.',
  'composio.envVarOverrides': 'задана, она переопределяет этот параметр.',
  'composio.previewBadge': 'Предварительный просмотр',
  'composio.previewTooltip':
    'Скоро интеграция агента — вы можете подключиться, но агент пока не может использовать этот набор инструментов.',
  'memory.day.sun': 'Вс',
  'memory.day.mon': 'Пн',
  'memory.day.tue': 'Вт',
  'memory.day.wed': 'Ср',
  'memory.day.thu': 'Чт',
  'memory.day.fri': 'Пт',
  'memory.day.sat': 'Сб',
  'memory.ingesting': 'Загрузка',
  'memory.ingestionQueued': 'В очереди',
  'memory.ingestingTitle': 'Загрузка {title}',
  'mic.noAudioCaptured': 'Аудио не захвачено',
  'mic.noSpeechDetected': 'Речь не обнаружена',
  'mic.lowConfidenceResult': 'Не удалось чётко распознать аудио — попробуйте ещё раз',
  'mic.failedToStopRecording': 'Не удалось остановить запись: {message}',
  'mic.transcriptionFailed': 'Ошибка транскрипции: {message}',
  'reflections.kind.retrospective': 'Ретроспектива',
  'reflections.kind.derivedFact': 'Выведенный факт',
  'reflections.kind.moodInsight': 'Инсайт о настроении',
  'reflections.kind.relationshipInsight': 'Инсайт об отношениях',
  'graph.tooltip.summary': 'Краткое содержание',
  'graph.tooltip.contact': 'Контакт',
  'localModel.usage.never': 'Никогда',
  'localModel.usage.mediumLoad': 'Средняя нагрузка',
  'localModel.usage.lowLoad': 'Низкая нагрузка',
  'localModel.usage.idleMode': 'Режим ожидания',
  'localModel.rebootstrapComplete': 'Повторная инициализация модели завершена.',
  'localModel.modelsVerified': 'Локальные модели проверены.',
  'accounts.addModal.allConnected': 'Все подключены',
  'accounts.addModal.title': 'Добавить аккаунт',
  'accounts.respondQueue.empty': 'Пусто',
  'accounts.respondQueue.hide': 'Скрыть очередь ответов',
  'accounts.respondQueue.loadFailed': 'Не удалось загрузить очередь ответов',
  'accounts.respondQueue.loading': 'Загрузка очереди…',
  'accounts.respondQueue.pending': 'Ожидает',
  'accounts.respondQueue.show': 'Показать очередь ответов',
  'accounts.respondQueue.title': 'Очередь ответов',
  'accounts.webviewHost.almostReady': 'Почти готово...',
  'accounts.webviewHost.loadTimeout': 'Таймаут загрузки',
  'accounts.webviewHost.loading': 'Загрузка {providerName}...',
  'accounts.webviewHost.loadingAccount': 'Загрузка аккаунта',
  'accounts.webviewHost.restoringSession': 'Восстановление сессии...',
  'accounts.webviewHost.retryLoading': 'Повторить загрузку',
  'accounts.webviewHost.takingLonger': '{providerName} загружается дольше обычного.',
  'accounts.webviewHost.timeoutHint': 'Подсказка по таймауту',
  'app.connectionBadge.composio': 'Composio',
  'app.connectionBadge.messaging': 'Мессенджеры',
  'app.connectionIndicator.connected': 'Подключено к OpenHuman AI 🚀',
  'app.connectionIndicator.connecting': 'Подключение',
  'app.connectionIndicator.coreOffline': 'Ядро офлайн',
  'app.connectionIndicator.disconnected': 'Отключено',
  'app.connectionIndicator.offline': 'Офлайн',
  'app.connectionIndicator.reconnecting': 'Переподключение…',
  'app.errorFallback.componentStack': 'Стек компонентов',
  'app.errorFallback.contactSupport': 'Связаться с поддержкой',
  'app.errorFallback.copyEventId': 'Копировать',
  'app.errorFallback.eventIdCopied': 'Скопировано',
  'app.errorFallback.eventIdLabel': 'Идентификатор ошибки',
  'app.errorFallback.revealLogs': 'Показать журналы',
  'app.errorFallback.downloadLatest': 'Скачать последнюю версию',
  'app.errorFallback.heading': 'Заголовок',
  'app.errorFallback.hint': 'Подсказка',
  'app.errorFallback.reloadApp': 'Перезагрузить приложение',
  'app.errorFallback.subheading': 'Подзаголовок',
  'app.errorFallback.tryRecover': 'Попробовать восстановить',
  'app.localAiDownload.installing': 'Установка...',
  'app.localAiDownload.preparing': 'Подготовка...',
  'app.openhumanLink.accounts.continueWith': 'Продолжить со входом через {label}',
  'app.openhumanLink.accounts.done': 'Готово',
  'app.openhumanLink.accounts.intro': 'Введение',
  'app.openhumanLink.accounts.webviewNote': 'Примечание о Webview',
  'app.openhumanLink.billing.openDashboard': 'Открыть панель',
  'app.openhumanLink.billing.stayOnTrial': 'Остаться на пробном периоде',
  'app.openhumanLink.billing.trialCredit': 'Кредиты за регистрацию',
  'app.openhumanLink.billing.trialDesc':
    'Предложения кредитов могут зависеть от акции и соответствия аккаунта условиям.',
  'app.openhumanLink.defaultBody':
    'Ещё не готово во всплывающем окне. Откройте полную страницу настроек, когда понадобится.',
  'app.openhumanLink.discord.intro': 'Введение',
  'app.openhumanLink.discord.openInvite': 'Открыть приглашение',
  'app.openhumanLink.discord.perk1': 'Преимущество 1',
  'app.openhumanLink.discord.perk2': 'Преимущество 2',
  'app.openhumanLink.discord.perk3': 'Преимущество 3',
  'app.openhumanLink.discord.perk4': 'Преимущество 4',
  'app.openhumanLink.discordReport.intro':
    'Приносим извинения — что-то пошло не так с нашей стороны. Мы стараемся фиксировать такие ошибки автоматически, но если вы поделитесь подробностями в Discord, мы исправим их быстрее.',
  'app.openhumanLink.discordReport.openDiscord': 'Открыть Discord',
  'app.openhumanLink.done': 'Готово',
  'app.openhumanLink.notifications.desktopOnly':
    'Нативные уведомления доступны только в настольном приложении (выполните `pnpm dev:app`).',
  'app.openhumanLink.notifications.permissionOff':
    'Разрешение на уведомления отключено. Включите OpenHuman в Системных настройках → Уведомления, затем повторите попытку.',
  'app.openhumanLink.notifications.triggerFailed':
    'OpenHuman не удалось вызвать системное уведомление. Проверьте настройки уведомлений операционной системы и повторите попытку.',
  'app.openhumanLink.notifications.welcomeBody':
    'Вы будете получать оповещения здесь, когда что-то потребует вашего внимания.',
  'app.openhumanLink.notifications.welcomeTitle': 'OpenHuman готов к работе',
  'app.openhumanLink.status.closed': 'Закрыто',
  'app.openhumanLink.status.connected': 'Подключено',
  'app.openhumanLink.status.error': 'Ошибка',
  'app.openhumanLink.status.loading': 'Загрузка…',
  'app.openhumanLink.status.needsSignIn': 'Требуется вход',
  'app.openhumanLink.status.timedOut': 'Время истекло',
  'app.openhumanLink.loadingChannelSetup': 'Загрузка настроек канала',
  'app.openhumanLink.maybeLater': 'Может, потом',
  'app.openhumanLink.notifications.asking': 'Запрос у ОС…',
  'app.openhumanLink.notifications.blocked': 'Заблокировано',
  'app.openhumanLink.notifications.blockedStep1': 'Заблокировано, шаг 1',
  'app.openhumanLink.notifications.blockedStep2': 'Заблокировано, шаг 2',
  'app.openhumanLink.notifications.blockedStep3': 'Заблокировано, шаг 3',
  'app.openhumanLink.notifications.intro': 'Введение',
  'app.openhumanLink.notifications.promptHint': 'Подсказка',
  'app.openhumanLink.notifications.retry': 'Повторить тестовое уведомление',
  'app.openhumanLink.notifications.send': 'Отправить тестовое уведомление',
  'app.openhumanLink.notifications.sendFailed': 'Не удалось отправить: {error}',
  'app.openhumanLink.notifications.sent':
    'Тестовое уведомление отправлено. Если вы его не получили, откройте «Системные настройки» → «Уведомления» → OpenHuman, включите «Разрешить уведомления» и установите стиль баннера «Постоянный».',
  'app.openhumanLink.skipForNow': 'Пропустить',
  'app.openhumanLink.telegramUnavailable': 'Telegram недоступен',
  'app.openhumanLink.title.accounts': 'Подключи свои приложения',
  'app.openhumanLink.title.billing': 'Оплата и кредиты',
  'app.openhumanLink.title.discord': 'Вступи в сообщество',
  'app.openhumanLink.title.discordReport': 'Сообщить об ошибке',
  'app.openhumanLink.title.messaging': 'Подключи канал связи',
  'app.openhumanLink.title.notifications': 'Разрешить уведомления',
  'app.persistRehydration.body': 'Текст',
  'app.persistRehydration.heading': 'Заголовок',
  'app.persistRehydration.resetCta': 'Сброс…',
  'app.persistRehydration.resetting': 'Сброс…',
  'app.routeLoading.initializing': 'Инициализация OpenHuman...',
  'app.update.currentlyOn': '{version}',
  'app.update.errorFallback': 'Что-то пошло не так при обновлении.',
  'app.update.header.default': 'Обновление',
  'app.update.header.error': 'Ошибка обновления',
  'app.update.header.installing': 'Установка обновления',
  'app.update.header.readyToInstall': 'Обновление готово к установке',
  'app.update.header.restarting': 'Перезапуск…',
  'app.update.later': 'Позже',
  'app.update.newVersionReady': 'Новая версия готова к установке.',
  'app.update.progress.downloaded': 'Загружено: {amount}',
  'app.update.progress.installing': 'Установка новой версии…',
  'app.update.progress.restarting': 'Перезапуск приложения…',
  'app.update.progress.working': '{percent}%',
  'app.update.restartNote': 'Примечание о перезапуске',
  'app.update.restartNow': 'Перезапустить сейчас',
  'app.update.versionReady': 'Версия {newVersion} готова к установке.',
  'channels.discord.accountLinked': 'Аккаунт привязан',
  'channels.discord.connect': 'Подключить',
  'channels.discord.linkTokenExpired': 'Токен привязки истёк. Попробуй ещё раз.',
  'channels.discord.linkTokenInstruction': '{token}',
  'channels.discord.linkTokenLabel': 'Метка токена привязки',
  'channels.discord.linkTokenOnce': 'Токен привязки (однократно)',
  'channels.discord.picker.allPermissionsOk': 'Бот имеет все необходимые права в этом канале.',
  'channels.discord.picker.botNotInServers': 'Бот не на серверах',
  'channels.discord.picker.category': 'Категория',
  'channels.discord.picker.channel': 'Канал',
  'channels.discord.picker.checkingPermissions': 'Проверка прав',
  'channels.discord.picker.loadingChannels': 'Загрузка каналов...',
  'channels.discord.picker.loadingServers': 'Загрузка серверов...',
  'channels.discord.picker.missingPermissions': 'Недостаточно прав',
  'channels.discord.picker.noChannels': 'Текстовые каналы не найдены',
  'channels.discord.picker.noServers': 'Серверы не найдены',
  'channels.discord.picker.selectChannel': 'Выбери канал',
  'channels.discord.picker.selectServer': 'Выбери сервер',
  'channels.discord.picker.server': 'Сервер',
  'channels.discord.picker.serverChannelSelection': 'Выбор сервера и канала',
  'channels.discord.savedRestartRequired': 'Канал сохранён. Перезапусти приложение для активации.',
  'channels.telegram.connect': 'Подключить',
  'channels.telegram.managedDmConnecting': 'Подключение управляемого DM',
  'channels.telegram.managedDmTimeout': 'Таймаут управляемого DM',
  'channels.telegram.reconnect': 'Переподключить',
  'channels.telegram.savedRestartRequired': 'Канал сохранён. Перезапусти приложение для активации.',
  'channels.web.alwaysAvailable': 'Всегда доступно',
  'chat.approval.approve': 'Утвердить',
  'chat.approval.alwaysAllow': 'Всегда разрешать',
  'chat.approval.alwaysAllowHint':
    'Перестаньте запрашивать этот инструмент — добавьте его в свой список «Всегда разрешено».',
  'chat.approval.deciding': 'Работающий…',
  'chat.approval.deny': 'Отрицать',
  'chat.approval.error': 'Не удалось записать свое решение — попробуйте еще раз.',
  'chat.approval.fallback': 'Агент хочет выполнить действие, требующее вашего одобрения.',
  'chat.approval.title': 'Требуется одобрение',
  'chat.approval.tool': 'Инструмент:',
  'channels.authMode.managed_dm': 'Войдите с помощью OpenHuman',
  'channels.authMode.oauth': 'OAuth Вход в систему',
  'channels.authMode.bot_token': 'Используйте свой собственный токен бота',
  'channels.authMode.api_key': 'Используйте свой собственный ключ API',
  'channels.fieldRequired': 'Требуется {field}',
  'channels.mcp.title': 'MCP Серверы',
  'channels.mcp.description':
    'Просматривайте серверы протокола контекста модели и управляйте ими — они расширяют возможности ИИ новыми инструментами.',
  'channels.discord.displayName': 'Discord',
  'channels.discord.description': 'Отправляйте и получайте сообщения через Discord.',
  'channels.discord.authMode.bot_token.description':
    'Предоставьте свой собственный токен бота Discord.',
  'channels.discord.authMode.oauth.description':
    'Установите бот OpenHuman на свой сервер Discord через OAuth.',
  'channels.discord.authMode.managed_dm.description':
    'Свяжите свою личную учетную запись Discord с ботом OpenHuman.',
  'channels.discord.fields.bot_token.label': 'Токен бота',
  'channels.discord.fields.bot_token.placeholder': 'Ваш токен бота Discord',
  'channels.discord.fields.guild_id.label': 'Идентификатор сервера (гильдии)',
  'channels.discord.fields.guild_id.placeholder': 'Необязательно: ограничить конкретным сервером',
  'channels.telegram.displayName': 'Telegram',
  'channels.telegram.description': 'Отправка и получение сообщений через Telegram.',
  'channels.telegram.authMode.managed_dm.description':
    'Отправьте сообщение боту OpenHuman Telegram напрямую.',
  'channels.telegram.authMode.bot_token.description':
    'Предоставьте свой собственный токен бота Telegram от @BotFather.',
  'channels.telegram.fields.bot_token.label': 'Токен бота',
  'channels.telegram.fields.bot_token.placeholder': '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11',
  'channels.telegram.fields.allowed_users.label': 'Разрешенные пользователи',
  'channels.telegram.fields.allowed_users.placeholder':
    'Имена пользователей Telegram, разделенные запятыми',
  'channels.telegram.remoteControlTitle': 'Удаленное управление (Telegram)',
  'channels.telegram.remoteControlBody':
    'Из разрешенного чата Telegram отправьте /status, /sessions, /new или /help. В маршрутизации моделей по-прежнему используются /model и /models.',
  'channels.web.displayName': 'Интернет',
  'channels.web.description': 'Общайтесь через встроенный веб-интерфейс.',
  'channels.web.authMode.managed_dm.description':
    'Используйте встроенный веб-чат — настройка не требуется.',
  'channels.yuanbao.connect': 'Connect',
  'channels.yuanbao.connecting': 'Подключение…',
  'channels.yuanbao.fieldRequired': '{field} обязателен',
  'channels.yuanbao.reconnect': 'Reconnect',
  'channels.yuanbao.savedRestartRequired':
    'Канал сохранён. Перезапустите приложение для его активации.',
  'channels.yuanbao.unexpectedStatus': 'Неожиданный статус подключения: {status}',
  'chat.unsubscribeApproval.approve': 'Подтвердить и отписаться',
  'chat.unsubscribeApproval.approved': '✓ Подписка успешно отменена.',
  'chat.unsubscribeApproval.denied': '✕ Запрос отклонён.',
  'chat.unsubscribeApproval.deny': 'Отклонить',
  'chat.unsubscribeApproval.processing': 'Обработка...',
  'chat.unsubscribeApproval.title': 'Запрос на отписку',
  'commandPalette.ariaLabel': 'Палитра команд',
  'commandPalette.description': 'Описание',
  'commandPalette.label': 'Команды',
  'commandPalette.noResults': 'Ничего не найдено',
  'commandPalette.placeholder': 'Введи команду или поиск…',
  'commandPalette.searchAria': 'Поиск команд',
  'commandPalette.shortcutHint': 'Нажмите ?, чтобы увидеть все сочетания',
  'commandPalette.title': 'Палитра команд',
  'kbd.ariaLabel': 'Сочетание клавиш: {shortcut}',
  'shortcuts.title': 'Горячие клавиши',
  'shortcuts.subtitle': 'Ускорьте работу с помощью этих горячих клавиш.',
  'shortcuts.menuDesc': 'Просмотрите все горячие клавиши приложения.',
  'shortcuts.empty': 'Сейчас нет доступных горячих клавиш.',
  'shortcuts.openHint': 'Откройте этот список в любой момент с помощью',
  'shortcuts.group.navigation': 'Навигация',
  'shortcuts.group.profiles': 'Профили',
  'shortcuts.group.chat': 'Чат',
  'shortcuts.group.view': 'Вид',
  'shortcuts.group.general': 'Общие',
  'shortcuts.group.help': 'Справка',
  'shortcuts.action.home': 'На главную',
  'shortcuts.action.chat': 'Перейти в чат',
  'shortcuts.action.knowledge': 'Знания и память',
  'shortcuts.action.connections': 'Перейти к подключениям',
  'shortcuts.action.activity': 'Перейти к активности',
  'shortcuts.action.settings': 'Открыть настройки',
  'shortcuts.action.newChat': 'Новый чат',
  'shortcuts.action.toggleSidebar': 'Переключить боковую панель',
  'shortcuts.action.commandPalette': 'Палитра команд',
  'iosMascot.connectedTo': 'Подключен к',
  'iosMascot.defaultPairedLabel': 'Рабочий стол',
  'iosMascot.disconnect': 'Отключиться',
  'iosMascot.error.generic': 'Что-то пошло не так. Пожалуйста, попробуйте еще раз.',
  'iosMascot.error.sendFailed': 'Не удалось отправить. Проверьте свое соединение.',
  'iosMascot.pushToTalk': 'Нажми и говори',
  'iosMascot.sendMessage': 'Отправить сообщение',
  'iosMascot.thinking': 'Думаю...',
  'iosMascot.typeMessage': 'Введите a сообщение...',
  'iosPair.connectedLoading': 'Подключено! Загрузка... Срок действия',
  'iosPair.connecting': 'Подключение к рабочему столу...',
  'iosPair.desktopLabel': 'Рабочий стол',
  'iosPair.error.camera':
    'Сканирование камерой не удалось. Проверьте разрешения камеры и повторите попытку.',
  'iosPair.error.connectionFailed':
    'Не удалось подключиться. Убедитесь, что десктопное приложение запущено, и повторите попытку.',
  'iosPair.error.invalidQr':
    'Неверный QR-код. Убедитесь, что вы сканируете код сопряжения OpenHuman.',
  'iosPair.error.unreachableDesktop':
    'Не удалось подключиться к рабочему столу. Убедитесь, что оба устройства в сети, и повторите попытку.',
  'iosPair.expired': 'QR code истек. Попросите рабочий стол повторно сгенерировать код.',
  'iosPair.instructions':
    'Откройте OpenHuman на рабочем столе, перейдите в Настройки > Устройства и нажмите «Привязать телефон», чтобы показать QR-код.',
  'iosPair.retryScan': 'Повторить сканирование',
  'iosPair.scanQrCode': 'Сканирование QR code',
  'iosPair.scannerOpening': 'Открытие сканера...',
  'iosPair.step.openDesktop': 'Откройте OpenHuman на рабочем столе',
  'iosPair.step.openSettings': 'Перейдите в «Настройки» > «Устройства»',
  'iosPair.step.showQr': 'Нажмите «Подключить телефон», чтобы отобразить QR',
  'iosPair.title': 'Сопряжение с рабочим столом',
  'composio.connect.additionalConfigRequired': 'Требуется дополнительная настройка',
  'composio.connect.atlassianSubdomainHint': 'acme',
  'composio.connect.atlassianSubdomainLabel': 'Поддомен Atlassian',
  'composio.connect.connect': 'Подключить',
  'composio.connect.connectedAccounts': 'Подключённые аккаунты',
  'composio.connect.defaultLabel': 'По умолчанию',
  'composio.connect.disconnectAccount': 'Удалить',
  'composio.connect.addAnotherAccount': 'Добавить другой аккаунт',
  'composio.connect.dynamicsOrgNameHint':
    'Например, "myorg" для myorg.crm.dynamics.com. Введите только короткое название организации, а не полный URL.',
  'composio.connect.dynamicsOrgNameLabel': 'Название организации Dynamics 365',
  'composio.connect.connectionFailed': 'Не удалось подключиться (статус: {status}).',
  'composio.connect.disconnectFailed': 'Ошибка отключения: {msg}',
  'composio.connect.disconnecting': 'Отключение…',
  'composio.connect.idleDescription': 'Подключите свой',
  'composio.connect.idleDescriptionSuffix':
    'аккаунт. Мы откроем окно браузера, вы предоставите доступ там, и приложение автоматически обнаружит подключение.',
  'composio.connect.isConnected': 'подключён.',
  'composio.connect.manage': 'Управлять',
  'composio.connect.needsFieldsPrefix': 'Чтобы подключить',
  'composio.connect.needsFieldsSuffix':
    'нам нужно немного больше информации. Заполните недостающие поля ниже и повторите попытку.',
  'composio.connect.needsSubdomain': 'Чтобы подключить',
  'composio.connect.needsSubdomainSuffix':
    'введите ваш поддомен Atlassian (например, acme для acme.atlassian.net) и попробуйте снова.',
  'composio.connect.oauthComplete': 'Ожидание завершения OAuth…',
  'composio.connect.oauthTimeout': 'Таймаут OAuth',
  'composio.connect.permissions': 'Разрешения',
  'composio.connect.permissionsDefault': 'Чтение + запись включены по умолчанию',
  'composio.connect.permissionsNote': 'может раскрыть',
  'composio.connect.permissionsNoteSuffix':
    'Собственные права агента OpenHuman настраиваются ниже переключателями чтения, записи и администратора.',
  'composio.connect.reopenBrowser': 'Открыть браузер снова',
  'composio.connect.requestingUrl': 'Запрос URL подключения…',
  'composio.connect.requiredFieldEmpty': 'Это поле обязательно для заполнения.',
  'composio.connect.retryConnection': 'Повторить подключение',
  'composio.connect.scopeLoadError': 'Не удалось загрузить настройки области: {msg}',
  'composio.connect.scopeSaveError': 'Не удалось сохранить область {key}: {msg}',
  'composio.connect.scope.read': 'Чтение',
  'composio.connect.scope.readHint': 'Разрешить агенту читать данные из этого соединения.',
  'composio.connect.scope.write': 'Запись',
  'composio.connect.scope.writeHint':
    'Разрешить агенту создавать или изменять данные через это соединение.',
  'composio.connect.scope.admin': 'Администратор',
  'composio.connect.scope.adminHint':
    'Разрешить агенту управлять настройками, разрешениями или деструктивными действиями.',
  'composio.connect.subdomainInvalid':
    'Введите только короткий поддомен (например, "acme"), а не полный URL. Допустимы только буквы, цифры и дефисы.',
  'composio.connect.subdomainRequired': 'Введи свой поддомен Atlassian для продолжения.',
  'composio.connect.wabaIdHint':
    'Найдите его через GET /me/businesses, затем GET /{business_id}/owned_whatsapp_business_accounts, используя ваш токен доступа Meta.',
  'composio.connect.wabaIdLabel': 'ID аккаунта WhatsApp Business',
  'composio.connect.atlassianSubdomainPlaceholder': 'your-subdomain',
  'composio.connect.dynamicsOrgNamePlaceholder': 'myorg',
  'composio.connect.wabaIdPlaceholder': 'e.g. 123456789012345',
  'composio.connect.wabaIdRequired':
    'Введи ID аккаунта WhatsApp Business (WABA ID) для продолжения.',
  'composio.connect.waitingFor': 'Ожидание',
  'composio.connect.waitingHint': 'Подсказка ожидания',
  'composio.triggers.heading': 'Триггеры',
  'composio.triggers.listenFrom': 'Слушать события от',
  'composio.triggers.loadError': 'Не удалось загрузить триггеры',
  'composio.triggers.sessionExpired':
    'Срок действия сессии OpenHuman истёк. Войдите снова, чтобы загрузить триггеры.',
  'composio.triggers.needsConfiguration': 'Требуется настройка',
  'composio.triggers.noneAvailable': 'Сейчас нет доступных триггеров для',
  'conversations.taskKanban.moveLeft': 'Переместить влево',
  'conversations.taskKanban.moveRight': 'Переместить вправо',
  'conversations.taskKanban.title': 'Задачи',
  'conversations.threadTodo.title': 'План',
  'conversations.planReview.title': 'Проверить план',
  'conversations.planReview.subtitle':
    'Одобрите для запуска, отклоните для отмены или отправьте отзыв для доработки.',
  'conversations.planReview.approve': 'Одобрить и запустить',
  'conversations.planReview.reject': 'Отклонить',
  'conversations.planReview.feedbackLabel': 'Запросить изменения',
  'conversations.planReview.feedbackPlaceholder': 'Опишите, что изменить…',
  'conversations.planReview.sendFeedback': 'Отправить отзыв',
  'conversations.threadGoal.label': 'Цель',
  'conversations.threadGoal.setCta': 'Задать цель',
  'conversations.threadGoal.placeholder': 'Чего должен достичь этот тред?',
  'conversations.threadGoal.save': 'Сохранить',
  'conversations.threadGoal.cancel': 'Отмена',
  'conversations.threadGoal.edit': 'Изменить цель',
  'conversations.threadGoal.clear': 'Очистить цель',
  'conversations.threadGoal.complete': 'Отметить выполненным',
  'conversations.threadGoal.pause': 'Пауза',
  'conversations.threadGoal.resume': 'Возобновить',
  'conversations.threadGoal.tokensSuffix': 'токены',
  'conversations.threadGoal.status.active': 'Активна',
  'conversations.threadGoal.status.paused': 'На паузе',
  'conversations.threadGoal.status.budget_limited': 'Бюджет исчерпан',
  'conversations.threadGoal.status.complete': 'Завершена',
  'conversations.taskKanban.approval.default': 'По умолчанию',
  'conversations.taskKanban.approval.notRequired': 'Не требуется',
  'conversations.taskKanban.approval.notRequiredBadge': 'нет одобрения',
  'conversations.taskKanban.approval.required': 'Необходимый',
  'conversations.taskKanban.approval.requiredBadge': 'approval',
  'conversations.taskKanban.approval.requiredBeforeExecution': 'Требуется перед выполнением',
  'conversations.taskKanban.briefButton': 'Краткое описание задачи',
  'conversations.taskKanban.briefTitle': 'Краткое описание задачи',
  'conversations.taskKanban.closeBrief': 'Закрыть краткое описание задачи',
  'conversations.taskKanban.field.acceptanceCriteria': 'Критерии приемки',
  'conversations.taskKanban.field.allowedTools': 'Разрешенные инструменты',
  'conversations.taskKanban.field.approval': 'Одобрение',
  'conversations.taskKanban.field.assignedAgent': 'Назначенный агент',
  'conversations.taskKanban.field.blocker': 'Блокатор',
  'conversations.taskKanban.field.evidence': 'Доказательство',
  'conversations.taskKanban.field.notes': 'Примечания',
  'conversations.taskKanban.field.objective': 'Цель',
  'conversations.taskKanban.field.plan': 'План',
  'conversations.taskKanban.field.status': 'Статус',
  'conversations.taskKanban.field.title': 'Заголовок',
  'conversations.taskKanban.saveChanges': 'Сохранить изменения',
  'conversations.taskKanban.deleteCard': 'Удалить',
  'conversations.taskKanban.workTask': 'Работать над задачей',
  'conversations.taskKanban.viewWork': 'Показать работу',
  'conversations.taskKanban.startingTask': 'Запуск…',
  'conversations.taskKanban.updateFailed': 'Не удалось обновить задачу; изменения не сохранились.',
  'conversations.taskKanban.sourcesButton': 'Источники',
  'conversations.taskKanban.source.openExternal': 'Открыть внешнюю задачу',
  'conversations.taskKanban.source.openExternalShort': 'Открыть',
  'conversations.taskKanban.source.unknownProvider': 'Неизвестный источник',
  'conversations.taskKanban.source.urgencyValue': 'Срочность {percent}%',
  'conversations.taskKanban.sources.desktopOnly':
    'Управление источниками задач доступно в настольном приложении.',
  'conversations.taskKanban.sources.title': 'Источники задач',
  'conversations.taskKanban.sources.statusEnabled': 'Автоматический опрос включен',
  'conversations.taskKanban.sources.manage': 'Управлять источниками',
  'conversations.taskKanban.source.title': 'Источник',
  'conversations.taskKanban.source.sourceId': 'ID источника',
  'conversations.taskKanban.source.externalId': 'Внешний ID',
  'conversations.taskKanban.source.repo': 'Репозиторий',
  'conversations.taskKanban.source.urgency': 'Срочность',
  'conversations.toolTimeline.turn': 'ход',
  'conversations.toolTimeline.step': 'Шаг',
  'conversations.toolTimeline.workerThread': 'чат воркера',
  'conversations.subagent.viewProcessing': 'Посмотреть весь процесс',
  'conversations.subagent.parent': 'Родительский',
  'conversations.subagent.thinking': 'Думает',
  'conversations.subagent.thoughts': 'Мысли',
  'conversations.subagent.response': 'Ответ',
  'conversations.subagent.toolCalls': 'Вызовы инструментов',
  'conversations.subagent.working': 'Выполняется…',
  'conversations.subagent.noOutputYet': 'Пока нет результата',
  'conversations.subagent.input': 'Ввод',
  'conversations.subagent.output': 'Вывод',
  'conversations.subagent.noOutput': 'Вывод отсутствует',
  'conversations.subagent.close': 'Закрыть',
  'conversations.subagent.cancel': 'Отменить задачу',
  'conversations.subagent.cancelling': 'Отмена…',
  'conversations.subagent.cancelFailed': 'Не удалось отменить задачу. Попробуйте снова.',
  'conversations.subagent.statusRunning': 'выполняется',
  'conversations.subagent.statusCompleted': 'завершено',
  'conversations.subagent.statusFailed': 'ошибка',
  'conversations.subagent.statusAwaitingUser': 'ожидание пользователя',
  'conversations.subagent.statusCancelled': 'отменено',
  'conversations.agentTaskInsights.title': 'Сведения о задачах агента',
  'conversations.agentTaskInsights.response': 'Ответ',
  'conversations.agentTaskInsights.processSourceTitle': 'Источник процесса агента',
  'conversations.agentTaskInsights.stepsHeading': 'Шаги',
  'conversations.agentTaskInsights.sourcesHeading': 'Источники',
  'conversations.agentTaskInsights.noSteps': 'Шаги не записаны',
  'conversations.agentTaskInsights.viewProcessSource': 'Показать полный источник процесса агента',
  'conversations.agentTaskInsights.processing': 'Обработка',
  'conversations.agentTaskInsights.done': 'Готово',
  'conversations.agentTaskInsights.failed': 'Ошибка',
  'conversations.agentTaskInsights.running': 'Выполняется',
  'conversations.agentTaskInsights.cancelled': 'Отменено',
  'conversations.agentTaskInsights.awaitingUser': 'Ожидание ввода',
  'conversations.agentTaskInsights.viewDetails': 'Подробнее',
  'conversations.agentTaskInsights.subagentsHeading': 'Субагенты',
  'daemon.serviceBlockingGate.body': 'Текст',
  'daemon.serviceBlockingGate.downloadHint': 'Подсказка по загрузке',
  'daemon.serviceBlockingGate.downloadLatest': 'Скачать последнюю версию',
  'daemon.serviceBlockingGate.retryCore': 'Повторить запуск Core',
  'daemon.serviceBlockingGate.retryFailed':
    'Повтор не удался. Скачай последнюю версию и попробуй снова.',
  'daemon.serviceBlockingGate.retrying': 'Повтор...',
  'daemon.serviceBlockingGate.title': 'Ядро OpenHuman недоступно',
  'home.banners.discordSubtitle': 'Подзаголовок Discord',
  'home.banners.discordTitle': 'Вступи в наш Discord',
  'home.banners.earlyBirdDismiss': 'Закрыть баннер',
  'home.banners.earlyBirdFirstSub': 'первую подписку.',
  'home.banners.earlyBirdOn': 'Скидка раннего доступа на',
  'home.banners.earlyBirdTitle': 'Первые 1 000 пользователей получают скидку 60%.',
  'home.banners.earlyBirdUseCode': 'Используйте промокод для раннего доступа',
  'home.banners.getSubscription': 'оформить подписку',
  'home.banners.promoCreditsBody': 'У вас есть {amount} промокредитов. Вы можете',
  'home.banners.promoCreditsUsage': 'Использование промо-кредитов',
  'intelligence.memoryChunk.detail.chunk': 'Блок',
  'intelligence.memoryChunk.detail.copyChunkId': 'Скопировать ID блока',
  'intelligence.memoryChunk.detail.embeddingInfo': 'bge-m3 1024dim',
  'intelligence.memoryChunk.detail.noEmbedding': 'Векторного вложения нет',
  'intelligence.memoryChunk.letterhead.from': 'от',
  'intelligence.memoryChunk.letterhead.to': 'кому',
  'intelligence.memoryChunk.mentioned.chunkOne': '1 фрагмент',
  'intelligence.memoryChunk.mentioned.chunkOther': '{count} фрагментов',
  'intelligence.memoryChunk.mentioned.heading': 'у п о м я н у т о',
  'intelligence.memoryChunk.scoreBars.ariaScore': '{name} оценка {pct} процентов',
  'intelligence.memoryChunk.scoreBars.atThreshold': 'при {threshold}',
  'intelligence.memoryChunk.scoreBars.dropped': 'отброшено',
  'intelligence.memoryChunk.scoreBars.heading': 'п о ч е м у   с о х р а н е н о',
  'intelligence.memoryChunk.scoreBars.kept': 'сохранено',
  'intelligence.diagram.title': 'Архитектурная диаграмма',
  'intelligence.diagram.description':
    'Последний локальный результат архитектуры с настроенного конечного точки диаграммы.',
  'intelligence.diagram.refresh': 'Refresh',
  'intelligence.diagram.refreshAria': 'Обновить диаграмму',
  'intelligence.diagram.emptyTitle': 'Диаграмма пока недоступна',
  'intelligence.diagram.emptyDescription':
    'Создайте архитектурную диаграмму из оркестратора, и эта панель обновится с настроенной локальной конечной точки.',
  'intelligence.diagram.skillInstallCommand': 'npx skills add yizhiyanhua-ai/fireworks-tech-graph',
  'intelligence.diagram.promptExample':
    'Создай архитектурную диаграмму текущего роя в тёмном терминальном стиле',
  'intelligence.diagram.imageAlt': 'Последняя сгенерированная архитектурная диаграмма OpenHuman',
  'intelligence.diagram.refreshesEvery': 'Обновляется каждые {seconds} с',
  'intelligence.memoryText.entityTypePrefix': 'Тип сущности',
  'intelligence.screenDebug.active': 'Активно',
  'intelligence.screenDebug.app': 'Приложение',
  'intelligence.screenDebug.bounds': 'Границы',
  'intelligence.screenDebug.captureAlt': 'Результат тестового захвата',
  'intelligence.screenDebug.captureFailed': 'Ошибка',
  'intelligence.screenDebug.captureSuccess': 'Успех',
  'intelligence.screenDebug.captureTest': 'Тест захвата',
  'intelligence.screenDebug.capturing': 'Захват',
  'intelligence.screenDebug.frames': 'Кадры',
  'intelligence.screenDebug.idle': 'Ожидание',
  'intelligence.screenDebug.lastApp': 'Последнее приложение',
  'intelligence.screenDebug.mode': 'Режим',
  'intelligence.screenDebug.permAccessibility': 'Доступность',
  'intelligence.screenDebug.permInput': 'Ввод',
  'intelligence.screenDebug.permScreen': 'Доступность',
  'intelligence.screenDebug.permissions': 'Разрешения',
  'intelligence.screenDebug.platformNotSupported': 'Платформа не поддерживается',
  'intelligence.screenDebug.recentVisionSummaries': 'Недавние визуальные резюме',
  'intelligence.screenDebug.session': 'Сессия',
  'intelligence.screenDebug.size': 'Размер',
  'intelligence.screenDebug.status': 'Статус',
  'intelligence.screenDebug.testCapture': 'Тестовый захват',
  'intelligence.screenDebug.time': 'Время',
  'intelligence.screenDebug.title': 'Заголовок',
  'intelligence.screenDebug.unknown': 'Неизвестно',
  'intelligence.screenDebug.visionQueue': 'Очередь обработки изображений',
  'intelligence.screenDebug.visionState': 'Состояние обработки изображений',
  'intelligence.tasks.activeBoardOne': '1 активная доска в разговорах',
  'intelligence.tasks.activeBoardOther': '{count} активных досок в разговорах',
  'intelligence.tasks.empty': 'Досок задач агента пока нет',
  'intelligence.tasks.emptyHint': 'Пусто',
  'intelligence.tasks.failedToLoad': 'Не удалось загрузить',
  'intelligence.tasks.live': 'в реальном времени',
  'intelligence.tasks.loadingBoards': 'Загрузка досок задач…',
  'intelligence.tasks.threadPrefix': 'Тред {thread}',
  'intelligence.tasks.subtitle': 'Ваши задачи и доски задач агентов в рабочей области.',
  'intelligence.tasks.newTask': 'Новая задача',
  'intelligence.tasks.personalBoardTitle': 'Задачи агента',
  'intelligence.tasks.personalEmpty': 'Личных задач пока нет',
  'intelligence.tasks.composer.title': 'Новая задача',
  'intelligence.tasks.composer.titleLabel': 'Заголовок',
  'intelligence.tasks.composer.titlePlaceholder': 'Что нужно сделать?',
  'intelligence.tasks.composer.statusLabel': 'Статус',
  'intelligence.tasks.composer.attachLabel': 'Прикрепить к беседе',
  'intelligence.tasks.composer.attachNone': 'Личное (без разговора)',
  'intelligence.tasks.composer.objectiveLabel': 'Цель',
  'intelligence.tasks.composer.objectivePlaceholder': 'Необязательно — желаемый результат',
  'intelligence.tasks.composer.notesLabel': 'Примечания',
  'intelligence.tasks.composer.notesPlaceholder': 'Дополнительные примечания',
  'intelligence.tasks.composer.create': 'Создать задачу',
  'intelligence.tasks.composer.creating': 'Создание…',
  'intelligence.tasks.composer.createFailed': 'Не удалось создать задачу',
  'intelligence.tasks.composer.assignAgentLabel': 'Поручить агенту выполнить это автоматически',
  'intelligence.tasks.composer.assignAgentHint':
    'Доска задач возьмёт её и выполнит за вас. Оставьте выключенным для обычной личной задачи.',
  'intelligence.tasks.sourceList.subtitle':
    'Задачи из источников, ожидающие превращения в работу агента.',
  'intelligence.tasks.sourceList.empty': 'Нет ожидающих задач из источников.',
  'intelligence.tasks.sourceList.queued': 'В очереди',
  'intelligence.tasks.sourceList.workOnTask': 'Работать над задачей',
  'intelligence.tasks.sourcePlan.title': 'Уточнить задачу из источника',
  'intelligence.tasks.sourcePlan.subtitle':
    'Проверьте черновик исследования перед созданием задачи агента.',
  'intelligence.tasks.sourcePlan.researchAgent': 'Черновик исследовательского агента',
  'intelligence.tasks.sourcePlan.approve': 'Утвердить план',
  'intelligence.tasks.sourcePlan.creating': 'Создание задачи…',
  'intelligence.tasks.sourcePlan.createFailed': 'Не удалось создать задачу агента',
  'intelligence.tasks.workTaskFailed': 'Не удалось начать работу над задачей',
  'intelligence.workTask.sourceTaskHeading': 'Исходная задача:',
  'intelligence.workTask.repositoryLine': '- Репозиторий: {repo}',
  'intelligence.workTask.externalIdLine': '- Внешний ID: {externalId}',
  'intelligence.workTask.urlLine': '- Ссылка: {url}',
  'intelligence.workTask.closingInstruction':
    'Начните с краткого повторения конкретного плана реализации, затем выполните его. Поддерживайте видимость прогресса в этой ветке и обновляйте доску задач при изменении состояния работы.',
  'intelligence.agentWork.subtitle':
    'Каждый фоновый запуск агента, сгруппированный по состоянию жизненного цикла.',
  'intelligence.agentWork.loading': 'Загрузка работы агента…',
  'intelligence.agentWork.failedToLoad': 'Не удалось загрузить работу агента',
  'intelligence.agentWork.empty': 'Фоновых запусков агента пока нет.',
  'intelligence.agentWork.bucket.needsInput': 'Нужны данные',
  'intelligence.agentWork.bucket.working': 'В работе',
  'intelligence.agentWork.bucket.completed': 'Завершено',
  'intelligence.agentWork.bucket.failed': 'Ошибка',
  'intelligence.agentWork.bucket.stopped': 'Остановлено',
  'intelligence.agentWork.column.agent': 'Агент',
  'intelligence.agentWork.column.status': 'Статус',
  'intelligence.agentWork.column.elapsed': 'Прошло',
  'intelligence.agentWork.column.cost': 'Расходы',
  'intelligence.agentWork.column.tokens': 'Токены',
  'intelligence.agentWork.status.pending': 'В ожидании',
  'intelligence.agentWork.status.running': 'В работе',
  'intelligence.agentWork.status.awaitingUser': 'Нужны данные',
  'intelligence.agentWork.status.paused': 'Приостановлено',
  'intelligence.agentWork.status.completed': 'Завершено',
  'intelligence.agentWork.status.failed': 'Ошибка',
  'intelligence.agentWork.status.cancelled': 'Отменено',
  'intelligence.agentWork.status.interrupted': 'Прервано',
  'intelligence.agentWork.kind.subagent': 'Субагент',
  'intelligence.agentWork.kind.workerThread': 'Чат воркера',
  'intelligence.agentWork.kind.backgroundAgent': 'Фоновый агент',
  'intelligence.agentWork.kind.teamMember': 'Участник команды',
  'intelligence.agentWork.kind.workflowChild': 'Дочерний элемент рабочего процесса',
  'intelligence.agentWork.openThread': 'Открыть тред',
  'intelligence.agentWork.openWorker': 'Открыть воркер',
  'worktree.label': 'Worktree',
  'worktree.dirty': 'Незакоммиченные изменения',
  'worktree.clean': 'Чисто',
  'worktree.changedFile': 'изменённый файл',
  'worktree.changedFiles': 'изменённых файлов',
  'worktree.removing': 'Удаление…',
  'worktree.removeFailed': 'Не удалось удалить worktree',
  'worktree.diffFailed': 'Не удалось загрузить diff',
  'worktree.diffLoading': 'Загрузка diff…',
  'worktree.diffEmpty': 'Нет изменений относительно HEAD.',
  'worktree.dirtyConfirm':
    'В этом worktree есть незакоммиченные изменения. При удалении эта работа будет потеряна. Ветка воркера сохраняется.',
  'worktree.action.open': 'Открыть папку',
  'worktree.action.diff': 'Diff',
  'worktree.action.hideDiff': 'Скрыть diff',
  'worktree.action.remove': 'Удалить',
  'worktree.action.removeAnyway': 'Отклонить и удалить',
  'worktree.action.preserve': 'Сохранить',
  'worktree.panel.subtitle':
    'Изолированные рабочие деревья git, созданные параллельными воркерами-агентами.',
  'worktree.panel.loading': 'Загрузка worktree…',
  'worktree.panel.failedToLoad': 'Не удалось загрузить worktree',
  'worktree.panel.empty':
    'Нет изолированных worktree. Здесь появятся параллельные воркеры с изоляцией worktree.',
  'worktree.panel.overlapsTitle': 'Пересекающиеся изменения',
  'worktree.panel.overlapHint':
    'Эти файлы были изменены более чем одним worktree — согласуйте их перед слиянием.',
  'intelligence.agentWork.action.stop': 'Остановить',
  'intelligence.agentWork.action.retry': 'Повторить',
  'intelligence.agentWork.action.continue': 'Продолжить',
  'intelligence.agentWork.action.followUp': 'Уточнить',
  'intelligence.agentWork.action.send': 'Отправить',
  'intelligence.agentWork.action.cancel': 'Отмена',
  'intelligence.agentWork.action.continuePlaceholder':
    'Ответьте, чтобы разблокировать этого агента…',
  'intelligence.agentWork.action.followUpPlaceholder': 'Отправьте уточняющую инструкцию…',
  'intelligence.agentWork.action.failed': 'Не удалось выполнить действие',
  'intelligence.teams.subtitle':
    'Скоординированные команды агентов и задачи, которые они разделяют.',
  'intelligence.teams.loading': 'Загрузка команд…',
  'intelligence.teams.failedToLoad': 'Не удалось загрузить команды',
  'intelligence.teams.empty': 'Пока нет команд агентов',
  'intelligence.teams.emptyHint':
    'Команды появляются здесь, когда агент создаёт скоординированных субагентов для совместного достижения цели.',
  'intelligence.teams.refresh': 'Обновить',
  'intelligence.teams.backToList': 'Все команды',
  'intelligence.teams.status.active': 'Активна',
  'intelligence.teams.status.closed': 'Закрыта',
  'intelligence.teams.header.lead': 'ведущий',
  'intelligence.teams.header.taskCount': '{count} задач',
  'intelligence.teams.header.memberCount': '{count} участников',
  'intelligence.teams.member.active': 'Активен',
  'intelligence.teams.member.pending': 'Ожидает',
  'intelligence.teams.member.idle': 'Простаивает',
  'intelligence.teams.member.stopped': 'Остановлен',
  'intelligence.teams.column.todo': 'К выполнению',
  'intelligence.teams.column.ready': 'Готово к работе',
  'intelligence.teams.column.inProgress': 'В работе',
  'intelligence.teams.column.blocked': 'Заблокировано',
  'intelligence.teams.column.done': 'Завершено',
  'intelligence.teams.emptyColumn': 'Пусто',
  'intelligence.teams.unclaimed': 'Не назначено',
  'intelligence.teams.pickedUpBy': 'Взял в работу {name}',
  'intelligence.teams.depLockTitle': '{count} невыполненных зависимостей',
  'intelligence.teams.gate.pending': 'Проверка ожидается',
  'intelligence.teams.gate.passed': 'Проверка пройдена',
  'intelligence.teams.gate.failed': 'Проверка не пройдена',
  'intelligence.teams.gate.label': 'Проверка: {status}',
  'intelligence.teams.activity.title': 'Активность команды',
  'intelligence.teams.activity.empty': 'Сообщений пока нет',
  'intelligence.teams.activity.toTeam': 'команда',
  'intelligence.teams.member.start': 'Запустить',
  'intelligence.teams.composer.placeholder': 'Сообщение участнику…',
  'intelligence.teams.composer.send': 'Отправить',
  'intelligence.teams.composer.recipient': 'Получатель',
  'intelligence.teams.composer.toTeam': 'Вся команда',
  'intelligence.teams.action.blocked': 'Ожидание зависимостей',
  'intelligence.teams.action.alreadyClaimed': 'Уже взято другим участником',
  'intelligence.teams.action.alreadyActive': 'Участник уже выполняется',
  'intelligence.teams.action.noClaimableTask': 'Нет готовой задачи для этого участника',
  'intelligence.teams.action.unknownTask': 'Задача не найдена',
  'intelligence.refine.objectiveDefault':
    'Превратите исходную задачу в готовую к реализации задачу агента: {title}',
  'intelligence.refine.sourceLine': 'Источник: {url}',
  'intelligence.refine.sourceIntake': 'Источник: приём источников задач',
  'intelligence.refine.repositoryLine': 'Репозиторий: {repo}',
  'intelligence.refine.externalTaskLine': 'Внешняя задача: {externalId}',
  'intelligence.refine.planStep1':
    'Прочитайте связанную исходную задачу и подтвердите точно запрошенное поведение.',
  'intelligence.refine.planStep2':
    'Изучите соответствующие пути кода и определите наименьшую границу реализации.',
  'intelligence.refine.planStep3':
    'Реализуйте изменение с целевыми тестами вокруг видимого пользователю поведения.',
  'intelligence.refine.planStep4':
    'Запустите целевую проверку и зафиксируйте оставшиеся риски или последующую работу.',
  'intelligence.refine.acceptance1': 'Требования исходной задачи отражены в итоговой реализации.',
  'intelligence.refine.acceptance2':
    'Соответствующие модульные или интеграционные тесты покрывают изменённое поведение.',
  'intelligence.refine.acceptance3':
    'Результаты проверки и любые нерешённые риски фиксируются при завершении.',
  'notifications.card.dismiss': 'Закрыть уведомление',
  'notifications.card.importanceTitle': 'Важность: {pct}%',
  'notifications.center.empty': 'Уведомлений пока нет',
  'notifications.center.emptyHint': 'Пусто',
  'notifications.center.filterAll': 'Все',
  'notifications.center.markAllRead': 'Отметить всё прочитанным',
  'notifications.center.title': 'Уведомления',
  'notifications.meeting.joinListen': 'Присоединиться (только слушать)',
  'notifications.meeting.joinActive': 'Присоединиться и отвечать',
  'notifications.meeting.skip': 'Пропустить',
  'notifications.meeting.alwaysJoin': 'Всегда присоединяться',
  'notifications.meeting.actionError': 'Не удалось выполнить действие. Попробуйте снова.',
  'oauth.button.connecting': 'Подключение...',
  'oauth.button.loopbackTimeout':
    'Время входа истекло — браузер не завершил перенаправление OAuth. Пожалуйста, попробуйте снова.',
  'oauth.login.continueWith': 'Продолжить через',
  'onboarding.contextGathering.buildingDesc': 'Сборка профиля',
  'onboarding.contextGathering.buildingProfile': 'Составление профиля...',
  'onboarding.contextGathering.continueToChat': 'Перейти в чат',
  'onboarding.contextGathering.coreAlive': 'Ядро доступно — первый запуск может занять минуту.',
  'onboarding.contextGathering.coreAliveProbing': 'Проверка соединения с ядром…',
  'onboarding.contextGathering.coreUnreachable':
    'Ядро не отвечает. Можно продолжить и попробовать позже.',
  'onboarding.contextGathering.errorDesc':
    'Мы не смогли построить ваш полный профиль прямо сейчас, но это нормально — вы можете продолжить, и профиль будет дополняться со временем.',
  'onboarding.contextGathering.stillWorkingDesc':
    'Первый запуск может занять 30–60 секунд, пока мы прогреваем локальную модель и инструменты. Вы можете перейти в чат в любой момент — построение профиля продолжится в фоне.',
  'onboarding.contextGathering.stillWorkingTitle': 'Профиль ещё составляется…',
  'onboarding.contextGathering.title': 'Сбор контекста',
  'openhuman.team_list_teams': 'Список команд',
  'overlay.ariaAttention': 'Сообщение',
  'overlay.ariaCompanion': 'Спутник активен',
  'overlay.ariaOrb': 'Оверлей OpenHuman',
  'overlay.ariaVoiceActive': 'Голосовой ввод активен',
  'overlay.companion.error': 'Ошибка',
  'overlay.companion.listening': 'Слушает…',
  'overlay.companion.pointing': 'Указывает…',
  'overlay.companion.speaking': 'Говорит…',
  'overlay.companion.thinking': 'Думает…',
  'overlay.orbTitle': 'Перетащи для перемещения · Двойной клик для сброса позиции',
  'pages.settings.account.connections': 'Подключения',
  'pages.settings.account.connectionsDesc': 'Описание подключений',
  'pages.settings.account.migration': 'Импорт из другого ассистента',
  'pages.settings.account.migrationDesc':
    'Перенесите память и заметки из OpenClaw (а вскоре и Hermes) в это рабочее пространство.',
  'pages.settings.account.privacy': 'Конфиденциальность',
  'pages.settings.account.privacyDesc': 'Описание конфиденциальности',
  'pages.settings.account.recoveryPhrase': 'Фраза восстановления',
  'pages.settings.account.recoveryPhraseDesc': 'Описание фразы восстановления',
  'pages.settings.account.team': 'Команда',
  'pages.settings.account.teamDesc': 'Описание команды',
  'pages.settings.accountSection.description':
    'Фраза восстановления, команда, подключения и настройки конфиденциальности.',
  'pages.settings.accountSection.title': 'Аккаунт',
  'pages.settings.ai.llm': 'LLM',
  'pages.settings.ai.llmDesc': 'Описание LLM',
  'pages.settings.ai.voice': 'Голос',
  'pages.settings.ai.voiceDesc': 'Описание голоса',
  'pages.settings.aiSection.description': 'Языковые модели, локальный Ollama и голос (STT / TTS).',
  'pages.settings.aiSection.title': 'ИИ',
  'settings.developerMenu.composio.title': 'Composio',
  'settings.developerMenu.composio.desc':
    'Режим маршрутизации, триггеры интеграции и архив истории триггеров.',
  'pages.settings.features.desktopCompanion': 'Десктоп-спутник',
  'pages.settings.features.desktopCompanionDesc':
    'Голосовой ассистент с распознаванием экрана — слушает, видит, говорит, указывает',
  'pages.settings.features.messagingChannels': 'Каналы мессенджеров',
  'pages.settings.features.messagingChannelsDesc': 'Описание каналов сообщений',
  'pages.settings.features.notifications': 'Уведомления',
  'pages.settings.features.notificationsDesc': 'Описание уведомлений',
  'pages.settings.features.screenAwareness': 'Слежение за экраном',
  'pages.settings.features.screenAwarenessDesc': 'Описание распознавания экрана',
  'pages.settings.features.tools': 'Инструменты',
  'pages.settings.features.toolsDesc': 'Описание инструментов',
  'pages.settings.featuresSection.description': 'Слежение за экраном, мессенджеры и инструменты.',
  'pages.settings.featuresSection.title': 'Функции',
  'privacy.dataKind.credentials': 'Учётные данные',
  'privacy.dataKind.derived': 'Производные данные',
  'privacy.dataKind.diagnostics': 'Диагностика',
  'privacy.dataKind.metadata': 'Метаданные',
  'privacy.dataKind.raw': 'Необработанные данные',
  'privacy.whatLeaves.link.label': 'Что покидает мой компьютер?',
  'rewards.community.achievementsUnlocked': 'Открыто достижений: {unlocked} из {total}',
  'rewards.community.connectDiscord': 'Подключить Discord',
  'rewards.community.connectDiscordError':
    'Не удалось начать подключение к Discord. Повторите попытку.',
  'rewards.community.connectingDiscord': 'Подключение…',
  'rewards.community.cumulativeTokens': 'Токенов всего',
  'rewards.community.currentStreak': 'Текущая серия',
  'rewards.community.disconnectDiscord': 'Отключить',
  'rewards.community.disconnectDiscordError': 'Не удалось отключить Discord. Попробуйте ещё раз.',
  'rewards.community.disconnectingDiscord': 'Отключение…',
  'rewards.community.discordAccount': 'Аккаунт Discord',
  'rewards.community.discordConnected': 'Discord подключён',
  'rewards.community.discordConnectedAs': 'Подключено как {username}',
  'rewards.community.discordLinkedNotInGuild': 'Discord привязан, но не в сервере',
  'rewards.community.discordMember': 'Присоединился к серверу',
  'rewards.community.discordNotLinked': 'Discord не привязан',
  'rewards.community.discordServer': 'Сервер Discord',
  'rewards.community.discordStatusUnavailable': 'Статус Discord недоступен',
  'rewards.community.discordWaiting': 'Ожидание Discord',
  'rewards.community.heroSubtitle': 'Подзаголовок',
  'rewards.community.heroTitle': 'Заголовок',
  'rewards.community.joinDiscord': 'Присоединиться к Discord',
  'rewards.community.loadingRewards': 'Загрузка наград…',
  'rewards.community.locked': 'Разблокировано',
  'rewards.community.retrying': 'Повтор…',
  'rewards.community.roleAssigned': 'Роль назначена',
  'rewards.community.roleAssignmentCount': 'Назначено ролей: {assigned} из {unlocked}',
  'rewards.community.roleClaimDesc':
    'Вы разблокировали роли Discord, но ещё не присоединились к серверу OpenHuman. Присоединитесь, чтобы они назначились автоматически.',
  'rewards.community.roleClaimTitle': 'Получите свои роли в Discord',
  'rewards.community.roleJoinToClaim': 'Присоединиться к серверу',
  'rewards.community.rolePending': 'Синхронизация роли…',
  'rewards.community.rolesAndRewards': 'Роли и награды',
  'rewards.community.streakDays': '{n}',
  'rewards.community.syncPending': 'Синхронизация наград ожидает',
  'rewards.community.syncPendingDesc': 'Ожидание синхронизации',
  'rewards.community.syncUnavailable': 'Синхронизация недоступна',
  'rewards.community.tryAgain': 'Повтор…',
  'rewards.community.unknown': 'Неизвестно',
  'rewards.community.unlocked': 'Разблокировано',
  'rewards.community.yourProgress': 'Твой прогресс',
  'rewards.coupon.colCode': 'Код',
  'rewards.coupon.colRedeemed': 'Активирован',
  'rewards.coupon.colReward': 'Награда',
  'rewards.coupon.colStatus': 'Статус',
  'rewards.coupon.loadingHistory': 'Загрузка истории наград…',
  'rewards.coupon.noCodes': 'Промокоды ещё не использованы.',
  'rewards.coupon.pending': 'Ожидает',
  'rewards.coupon.placeholder': 'Промокод',
  'rewards.coupon.promoCredits': 'Промокредиты',
  'rewards.coupon.recentRedemptions': 'Недавние активации',
  'rewards.coupon.redeemAccepted':
    '{code} принят. {amount} разблокируется после выполнения требуемого действия.',
  'rewards.coupon.redeemButton': 'Использовать код',
  'rewards.coupon.redeemSuccess': '{code} применён. {amount} добавлено к вашим кредитам.',
  'rewards.coupon.redeemedCodes': 'Активированные коды',
  'rewards.coupon.redeeming': 'Активация...',
  'rewards.coupon.statusApplied': 'Применён',
  'rewards.coupon.statusPendingAction': 'Ожидает действия',
  'rewards.coupon.statusRedeemed': 'Использован',
  'rewards.coupon.subtitle': 'Подзаголовок',
  'rewards.coupon.title': 'Активировать промокод',
  'rewards.referralSection.activity': 'Реферальная активность',
  'rewards.referralSection.apply': 'Применение…',
  'rewards.referralSection.applying': 'Применение…',
  'rewards.referralSection.colReferredUser': 'Приглашённый пользователь',
  'rewards.referralSection.colReward': 'Награда',
  'rewards.referralSection.colStatus': 'Статус',
  'rewards.referralSection.colUpdated': 'Обновлено',
  'rewards.referralSection.completed': 'Завершено',
  'rewards.referralSection.copyCode': 'Скопировать код',
  'rewards.referralSection.copyFailed': 'Не удалось скопировать',
  'rewards.referralSection.haveCode': 'Есть реферальный код?',
  'rewards.referralSection.haveCodeDesc': 'Есть код',
  'rewards.referralSection.linked': 'Привязан',
  'rewards.referralSection.linkedCode': '(код {code})',
  'rewards.referralSection.loading': 'Загрузка реферальной программы…',
  'rewards.referralSection.retry': 'Повторить',
  'rewards.referralSection.noReferrals': 'Рефералов нет',
  'rewards.referralSection.pendingReferrals': 'Ожидающие рефералы',
  'rewards.referralSection.placeholder': 'Реферальный код',
  'rewards.referralSection.share': 'Поделиться',
  'rewards.referralSection.statusCompleted': 'Завершено',
  'rewards.referralSection.statusExpired': 'Истёк срок',
  'rewards.referralSection.statusJoined': 'Вступил',
  'rewards.referralSection.subtitle': 'Подзаголовок',
  'rewards.referralSection.title': 'Приглашай друзей, зарабатывай кредиты',
  'rewards.referralSection.totalEarned': 'Заработано всего',
  'rewards.referralSection.yourCode': 'Твой код',
  'settings.ai.addCloudProvider': 'Добавить облачного провайдера',
  'settings.ai.addProvider': 'Сохранение…',
  'settings.ai.apiKeyFieldLabel': 'Поле API-ключа',
  'settings.ai.apiKeyRequired': 'Вставь свой API-ключ для продолжения.',
  'settings.ai.apiKeyStoredEncrypted': 'API-ключ хранится в зашифрованном виде',
  'settings.ai.apiKeysEncrypted': 'auth-profiles.json',
  'settings.ai.clearStoredKey': 'Очистить сохранённый ключ',
  'settings.ai.connectProvider': 'Подключить провайдера',
  'settings.ai.customRouting': 'Пользовательская маршрутизация',
  'settings.ai.defaultResolvesTo': 'По умолчанию используется',
  'settings.ai.discard': 'Отменить',
  'settings.ai.editProvider': 'Изменить провайдера',
  'settings.ai.llmProviders': 'LLM-провайдеры',
  'settings.ai.llmProvidersDesc': 'Описание провайдеров LLM',
  'settings.ai.localOllama': 'Локально (Ollama)',
  'settings.ai.modelLabel': 'Модель',
  'settings.ai.noCustomProviders': 'Нет пользовательских провайдеров',
  'settings.ai.openAiCompat.authHeaderExample': 'Авторизация: Носитель <ваш ключ>',
  'settings.ai.openAiCompat.authHeaderLabel': 'Заголовок аутентификации',
  'settings.ai.openAiCompat.baseUrlLabel': 'База URL',
  'settings.ai.openAiCompat.baseUrlUnavailable': 'Недоступно',
  'settings.ai.openAiCompat.clearKey': 'Очистить ключ',
  'settings.ai.openAiCompat.description':
    'Направьте локальные жгуты на этот сервер /v1 для маршрутизации через поставщиков, настроенных ниже. Для аутентификации используется стабильный ключ, который вы здесь установили, а не внутренний основной носитель приложения.',
  'settings.ai.openAiCompat.keyConfigured': 'Ключ настроен',
  'settings.ai.openAiCompat.keyRequired': 'Требуется ключ',
  'settings.ai.openAiCompat.rotateKey': 'Повернуть ключ',
  'settings.ai.openAiCompat.setKey': 'Установить ключ',
  'settings.ai.openAiCompat.title': 'OpenAI-совместимая конечная точка',
  'settings.ai.providerLabel': 'Провайдер',
  'skills.mcpComingSoon.title': 'MCP Серверы',
  'skills.mcpComingSoon.description':
    'Управление MCP-серверами скоро появится. Этот раздел станет центром для обнаружения, подключения и мониторинга интеграций с MCP-серверами.',
  'settings.ai.routing': 'Маршрутизация',
  'settings.ai.claudeCode.button': 'Claude Code',
  'settings.ai.claudeCode.inlineNotConnected':
    'Не подключено — направляет чат через ваш локальный Claude Code CLI.',
  'settings.ai.claudeCode.checkingSignIn': 'Проверка входа…',
  'settings.ai.claudeCode.inlineConnected': 'Подключено.',
  'settings.ai.claudeCode.signedInAs': 'Выполнен вход как',
  'settings.ai.claudeCode.subscriptionFallback': 'Подписка Claude',
  'settings.ai.claudeCode.usingApiKeyEnv': 'Используется ANTHROPIC_API_KEY',
  'settings.ai.claudeCode.cliNotInstalled': 'CLI не установлен',
  'settings.ai.claudeCode.signInUnknown': 'Состояние входа неизвестно',
  'settings.ai.claudeCode.connectedNotSignedIn': 'Подключено · вход не выполнен',
  'settings.ai.claudeCode.modalTitle': 'Claude Code CLI',
  'settings.ai.claudeCode.modalDescription':
    'Направляет задачи чата, агентные и рассуждающие нагрузки через локально установленный Claude Code CLI. Без ключа API — используется собственный вход CLI.',
  'settings.ai.claudeCode.close': 'Закрыть',
  'settings.ai.claudeCode.connection': 'Подключение',
  'settings.ai.claudeCode.enabled': 'Включено',
  'settings.ai.claudeCode.notEnabled': 'Не включено',
  'settings.ai.claudeCode.disconnect': 'Отключить',
  'settings.ai.claudeCode.disconnecting': 'Отключение…',
  'settings.ai.claudeCode.enable': 'Включить Claude Code',
  'settings.ai.claudeCode.enabling': 'Включение…',
  'settings.ai.claudeCode.authentication': 'Аутентификация',
  'settings.ai.claudeCode.recheck': 'Проверить снова',
  'settings.ai.claudeCode.checking': 'Проверка…',
  'settings.ai.claudeCode.openingTerminal': 'Открытие терминала…',
  'settings.ai.claudeCode.signIn': 'Войти через Claude',
  'settings.ai.claudeCode.reconnect': 'Переподключить',
  'settings.ai.claudeCode.loginHint':
    'Открывает терминал с командой claude login. После завершения нажмите «Проверить снова».',
  'settings.ai.claudeCode.loginError':
    'Не удалось открыть терминал входа. Пожалуйста, попробуйте снова.',
  'settings.ai.claudeCode.fullAccess': 'Полный доступ',
  'settings.ai.claudeCode.fullAccessOn':
    'Claude Code может выполнять команды, использовать сеть и запускать субагентов.',
  'settings.ai.claudeCode.fullAccessOff':
    'Принимать только правки — автоматически применяет правки файлов, ограничивает команды и сеть.',
  'settings.ai.claudeCode.sandboxNoteMac':
    'В macOS каталог ~/.openhuman остаётся защищённым песочницей в обоих режимах.',
  'settings.ai.claudeCode.sandboxNoteOther':
    'Полный доступ не ограничен на этой платформе — включайте его только если доверяете рабочему пространству.',
  'settings.ai.claudeCode.enableToCheck': 'Включите Claude Code, чтобы проверить вход.',
  'settings.ai.claudeCode.usingApiKeyEnvDetail': 'Используется ANTHROPIC_API_KEY из окружения.',
  'settings.ai.claudeCode.notFoundInstall':
    'Claude Code CLI не найден — установите командой: npm install -g @anthropic-ai/claude-code',
  'settings.ai.claudeCode.unknownDetail':
    'Не удалось определить состояние входа. Ваш claude CLI может быть старше поддержки статуса аутентификации — попробуйте «Переподключить», затем «Проверить снова».',
  'settings.ai.claudeCode.notSignedIn': 'Вход не выполнен.',
  'settings.ai.routingCustom': 'Пользовательская маршрутизация',
  'settings.ai.routingDefault': 'По умолчанию',
  'settings.ai.routingDesc': 'Описание маршрутизации',
  'settings.ai.saveChanges': 'Сохранение…',
  'settings.ai.saving': 'Сохранение…',
  'settings.ai.unsavedChange': 'несохранённое изменение',
  'settings.ai.unsavedChanges': 'несохранённые изменения',
  'settings.ai.workloadGroupBackground': 'Фоновые задачи',
  'settings.ai.workloadGroupChat': 'Чат',
  'settings.ai.disconnectProvider': 'Отключить {label}',
  'settings.ai.connectProviderLabel': 'Подключить {label}',
  'settings.ai.editProviderEndpoint': 'Изменить конечную точку {label}',
  'settings.ai.defaultLocalEndpoint': 'http://localhost:11434/v1',
  'settings.ai.editEndpoint': 'Изменить конечную точку',
  'settings.ai.endpointUrlLabel': 'Конечная точка URL',
  'settings.ai.localRuntimeHelper':
    'Где доступен {label}. По умолчанию используется локальный хост; укажите это на удаленном хосте (например, http://10.0.0.4:11434/v1), чтобы использовать общий экземпляр.',
  'settings.ai.endpointUrlRequired': 'Требуется конечная точка URL.',
  'settings.ai.endpointProtocolRequired':
    'Конечная точка должна начинаться с http:// или https://..',
  'settings.ai.connectProviderDialog': 'Подключиться {label}',
  'settings.ai.getProviderApiKey': 'Получить API Key',
  'settings.ai.or': 'Или',
  'settings.ai.codexOauthMissingAuthUrl':
    'Codex OAuth не вернул URL авторизации. Попробуйте войти снова.',
  'settings.ai.codexOauthMissingCallbackUrl':
    'Вставьте URL перенаправления из браузера после входа.',
  'settings.ai.openRouterOauthDescription':
    'Войдите в систему с помощью OpenRouter и импортируйте управляемый пользователем ключ API с помощью PKCE.',
  'settings.ai.connecting': 'Подключение...',
  'settings.ai.backgroundLoops': 'Фоновые циклы',
  'settings.ai.backgroundLoopsDesc':
    'Посмотрите, что выполняется без сообщения чата, приостановите работу Heartbeat и проверьте последние строки кредитной книги.',
  'settings.ai.heartbeatControls': 'Управление пульсом.',
  'settings.ai.heartbeatControlsDesc':
    'По умолчанию выключено. Включение запускает цикл; отключение прерывает выполняемую задачу.',
  'settings.ai.heartbeatLoop': 'Цикл Heartbeat',
  'settings.ai.heartbeatLoopDesc':
    'Главный планировщик для планировщика + дополнительный подсознательный вывод.',
  'settings.ai.subconsciousInference': 'Подсознательный вывод.',
  'settings.ai.subconsciousInferenceDesc':
    'Выполняет оценку task/reflection на основе модели по тактам пульса.',
  'settings.ai.calendarMeetingChecks': 'Проверка собраний в календаре.',
  'settings.ai.calendarMeetingChecksDesc':
    'Вызывает список событий календаря для активных соединений календаря Google.',
  'settings.ai.calendarCap': 'Окончание календаря',
  'settings.ai.connectionsPerTick': '{count} подкл./тик',
  'settings.ai.meetingLookahead': 'Предварительный просмотр собрания',
  'settings.ai.minutesShort': '{count} мин',
  'settings.ai.reminderLookahead': 'Предварительный просмотр напоминания',
  'settings.ai.cronReminderChecks': 'Проверка напоминаний Cron.',
  'settings.ai.cronReminderChecksDesc':
    'Сканирование включает задания cron для предстоящих элементов, похожих на напоминания.',
  'settings.ai.relevantNotificationChecks': 'Соответствующие проверки уведомлений.',
  'settings.ai.relevantNotificationChecksDesc':
    'Превращает срочные локальные уведомления в упреждающие оповещения.',
  'settings.ai.externalDelivery': 'Внешняя доставка.',
  'settings.ai.externalDeliveryDesc':
    'Позволяет оповещениям о пульсе отправлять упреждающие сообщения во внешние каналы.',
  'settings.ai.interval': 'Интервал',
  'settings.ai.running': 'Выполняется...',
  'settings.ai.plannerTickNow': 'Планировщик отметьте сейчас',
  'settings.ai.loadingHeartbeatControls': 'Загрузка элементов управления пульсом...',
  'settings.ai.heartbeatControlsUnavailable': 'Элементы управления пульсом недоступны.',
  'settings.ai.loopMap': 'Карта цикла',
  'settings.ai.plannerSummary':
    'Планировщик: исходные события {sourceEvents}, отправлено {sent}, дедуплицировано {deduped}.',
  'settings.ai.routeLabel': 'маршрут: {route}',
  'settings.ai.on': 'на',
  'settings.ai.off': 'выкл.',
  'settings.ai.recentUsageLedger': 'Журнал недавнего использования',
  'settings.ai.recentUsageLedgerDesc':
    'Внутренние строки сегодня предоставляют доступ к action/time; исходные теги нуждаются в внутренней поддержке.',
  'settings.ai.latestSpend': 'Последние расходы: {amount} в {time} ({action})',
  'settings.ai.topActions': 'Популярные действия',
  'settings.ai.noSpendRows': 'Строки расходов не загружены.',
  'settings.ai.topHours': 'Максимальное количество часов',
  'settings.ai.noHourlySpend': 'Почасовых затрат пока нет.',
  'settings.ai.openhumanDefault': 'OpenHuman (по умолчанию)',
  'settings.ai.localModelResolved': 'Ollama · {model}',
  'settings.ai.customRoutingForWorkload': 'Пользовательская маршрутизация для {label}',
  'settings.ai.loadingModels': 'Загрузка моделей...',
  'settings.ai.enterModelIdManually': 'или введите идентификатор модели вручную:',
  'settings.ai.modelIdPlaceholderForProvider': '{slug} идентификатор модели',
  'settings.ai.modelIdPlaceholder': 'model-id',
  'settings.ai.selectModel': 'Выберите модель...',
  'settings.ai.temperatureOverride': 'Переопределение температуры',
  'settings.ai.temperatureOverrideSlider': 'Переопределение температуры (ползунок)',
  'settings.ai.temperatureOverrideValue': 'Переопределение температуры (значение)',
  'settings.ai.temperatureOverrideDesc':
    'Ниже = более детерминированно. Оставьте флажок неактивным, чтобы использовать поставщика по умолчанию.',
  'settings.ai.modelVision': 'Поддерживает зрение (ввод изображений)',
  'settings.ai.modelVisionDesc':
    'Включите, если модель принимает изображения. Позволяет прикреплять изображения в чате, когда выбрана эта модель.',
  'settings.ai.testFailed': 'Тест не пройден.',
  'settings.ai.testingModel': 'Модель тестирования...',
  'settings.ai.modelResponse': 'Ответ модели',
  'settings.ai.providerWithValue': 'Поставщик: {value}',
  'settings.ai.noneDash': '—',
  'settings.ai.promptHelloWorld': 'Подсказка: Привет, мир.',
  'settings.ai.startedAt': 'Начало: {value}',
  'settings.ai.waitingForModelResponse': 'Ожидание ответа от выбранной модели...',
  'settings.ai.response': 'Ответ',
  'settings.ai.testing': 'Тестирование...',
  'settings.ai.test': 'Тест',
  'settings.ai.slugMissingError': 'Введите имя провайдера для создания пула.',
  'settings.ai.slugInUseError': 'Это имя провайдера уже используется.',
  'settings.ai.slugReservedError': 'Выберите другое имя провайдера.',
  'settings.ai.providerNamePlaceholder': 'Мой провайдер',
  'settings.ai.slugLabel': 'Слаг:',
  'settings.ai.openAiUrlLabel': 'URL OpenAI',
  'settings.ai.openAiUrlPlaceholder': 'https://api.openai.com/v1',
  'settings.ai.keepExistingKeyPlaceholder': 'Оставьте пустым, чтобы сохранить существующий ключ.',
  'settings.ai.reindexingMemory': 'Переиндексация памяти',
  'settings.ai.reindexingMemoryMessage':
    'Вложения перерабатываются. Элементы памяти {pending} повторно встраиваются в текущую модель — семантический вызов снижается до тех пор, пока это не завершится. Поиск по ключевым словам продолжает работать, и повторное встраивание продолжается в фоновом режиме, если вы закроете это.',
  'settings.ai.signInWithOpenRouter': 'Войдите с помощью OpenRouter',
  'settings.ai.weekBudget': 'Недельный бюджет',
  'settings.ai.cycleRemaining': 'Оставшийся цикл',
  'settings.ai.cycleTotalSpend': 'Общие расходы за цикл',
  'settings.ai.avgSpendRow': 'Строка средних расходов',
  'settings.ai.backgroundApiReads': 'Bg API читает',
  'settings.ai.backgroundWakeups': 'Bg пробуждения',
  'settings.ai.budgetMath': 'Математические расчеты бюджета',
  'settings.ai.rowsLeft': 'Осталось строк',
  'settings.ai.rowsPerFullWeekBudget': 'Строков на полную неделю бюджета',
  'settings.ai.sampleBurnRate': 'Скорость записи выборки',
  'settings.ai.projectedEmpty': 'Прогнозируемая пустая',
  'settings.ai.apiReadsPerDollarRemaining': 'API операций чтения на каждый оставшийся доллар',
  'settings.ai.loopCallBudget': 'Бюджет циклических вызовов',
  'settings.ai.heartbeatTicks': 'Тактов контрольного сигнала',
  'settings.ai.calendarPlannerCalls': 'Звонки планировщика календаря',
  'settings.ai.calendarFanoutCap': 'Крышка разветвления календаря',
  'settings.ai.subconsciousModelCalls': 'Звонки модели подсознания',
  'settings.ai.composioSyncScans': 'Composio синхронизируют сканирование',
  'settings.ai.totalBackgroundApiReadBudget': 'Общий бюджет чтения API',
  'settings.ai.memoryWorkerPolls': 'Опросы работников памяти',
  'settings.ai.defaultProviderName': 'OpenHuman',
  'settings.ai.routing.managed': 'Управляемый',
  'settings.ai.routing.managedAlwaysOn': 'Always on',
  'settings.ai.routing.managedHint':
    'Managed is always available as a fallback. To use your own model, choose a routing mode below.',
  'settings.ai.routing.managedDesc':
    'OpenHuman выполнит все логические выводы в облаке, выберет лучшую модель для задачи, оптимизирует затраты и сохранит самые безопасные настройки маршрутизации по умолчанию.',
  'settings.ai.routing.managedMsg':
    'OpenHuman будет обрабатывать все выводы для каждой рабочей нагрузки и автоматически выбирать лучший маршрут с точки зрения стоимости, качества и безопасности.',
  'settings.ai.routing.useYourOwn': 'Используйте свои собственные модели',
  'settings.ai.routing.useYourOwnDesc':
    'Выберите одного поставщика + модель и направляйте через него всю рабочую нагрузку. Это просто, но может быть неэффективно, поскольку легкий и тяжелый вывод используют один и тот же маршрут.',
  'settings.ai.routing.advanced': 'Расширенный',
  'settings.ai.routing.advancedDesc':
    'Выбирайте разные модели для разных задач. Это лучший вариант для жесткой оптимизации затрат и максимального контроля.',
  'settings.ai.routing.customDesc':
    'Детальная маршрутизация обеспечивает наилучшую оптимизацию затрат и максимальный контроль. Используйте строки ниже, чтобы решить, какие рабочие нагрузки остаются управляемыми, какие используют общие настройки по умолчанию и какие привязываются к конкретной модели.',
  'settings.ai.routing.chatAndConversations': 'Чат и беседы',
  'settings.ai.routing.chatDesc':
    'Модели, используемые во время прямого взаимодействия с пользователем, ответов, рассуждений, циклов агента и помощи в кодировании.',
  'settings.ai.routing.backgroundTasks': 'Фоновые задачи',
  'settings.ai.routing.bgTasksDesc':
    'Модели, используемые вне основного потока разговора для подведения итогов, сердцебиения, обучения и подсознательной оценки.',
  'settings.ai.routing.workload.chat.label': 'Chat',
  'settings.ai.routing.workload.chat.description':
    'Direct conversational back-and-forth — “Quick” mode in Conversations',
  'settings.ai.routing.workload.chat.hint':
    'Recommended: a cheap or mid-cost fast chat model with high tokens/sec and low latency. Open-source local models can work well here if they feel responsive.',
  'settings.ai.routing.workload.reasoning.label': 'Reasoning',
  'settings.ai.routing.workload.reasoning.description':
    'Main chat agent, meeting summarizer — “Reasoning” mode in Conversations',
  'settings.ai.routing.workload.reasoning.hint':
    'Recommended: a more expensive frontier or strong reasoning model for deep thinking. This is used for the main chat agent, meeting summaries, and heavier answer synthesis.',
  'settings.ai.routing.workload.agentic.label': 'Agentic',
  'settings.ai.routing.workload.agentic.description':
    'Sub-agent runners, tool loops, GIF decisions',
  'settings.ai.routing.workload.agentic.hint':
    'Recommended: a reliable instruction-following model with strong tool use. Mid-cost frontier models are usually safest; capable open-source models can work if tool calling is stable.',
  'settings.ai.routing.workload.coding.label': 'Coding',
  'settings.ai.routing.workload.coding.description': 'Code generation and refactor passes',
  'settings.ai.routing.workload.coding.hint':
    'Recommended: a coding-tuned model with strong instruction following, edit quality, and long-context performance. This is usually worth spending more on.',
  'settings.ai.routing.workload.vision.label': 'Vision',
  'settings.ai.routing.workload.vision.description':
    'Image understanding for the vision sub-agent — always multimodal',
  'settings.ai.routing.workload.vision.hint':
    'Recommended: a multimodal model that accepts image input. The managed default (vision-v1) is image-capable; any provider you route here is always treated as vision-enabled.',
  'settings.ai.routing.workload.memory.label': 'Memory summarization',
  'settings.ai.routing.workload.memory.description': 'Tree-extracts and consolidations',
  'settings.ai.routing.workload.memory.hint':
    'Recommended: a cheaper summarization model. It should be consistent and compact, but it does not need premium frontier-level reasoning.',
  'settings.ai.routing.workload.heartbeat.label': 'Heartbeat',
  'settings.ai.routing.workload.heartbeat.description': 'Background reasoning between user turns',
  'settings.ai.routing.workload.heartbeat.hint':
    'Recommended: a cheap, efficient background model. This runs often between turns, so low cost matters more than maximum intelligence.',
  'settings.ai.routing.workload.learning.label': 'Learning · Reflections',
  'settings.ai.routing.workload.learning.description': 'Periodic reflection over recent history',
  'settings.ai.routing.workload.learning.hint':
    'Recommended: a stronger reflective model. This can be mid-cost or premium because it benefits from better synthesis over recent history.',
  'settings.ai.routing.workload.subconscious.label': 'Subconscious',
  'settings.ai.routing.workload.subconscious.description': 'Eventfulness scoring + drift checks',
  'settings.ai.routing.workload.subconscious.hint':
    'Recommended: a very cheap monitoring model, ideally one that is lightweight and predictable. This is for eventfulness scoring, drift checks, and quiet background evaluation.',
  'settings.ai.routing.addCustomProvider': 'Добавить специального поставщика.',
  'settings.ai.globalModel.title': 'Выберите одну модель для всего.',
  'settings.ai.globalModel.desc':
    'Это направляет все выводы через одну модель. Это проще, но может оказаться неэффективным с точки зрения стоимости и качества, поскольку легкие и тяжелые задачи будут использовать один и тот же маршрут.',
  'settings.ai.globalModel.noProviders':
    'Сначала добавьте или подключите провайдера. Тогда вы сможете маршрутизировать каждую рабочую нагрузку через одну модель здесь.',
  'settings.ai.globalModel.provider': 'Поставщик',
  'settings.ai.globalModel.model': 'Модель',
  'settings.ai.globalModel.loadingModels': 'Загрузка моделей…',
  'settings.ai.globalModel.enterModelId': 'Введите идентификатор модели',
  'settings.ai.globalModel.appliesToAll':
    'Применяет один и тот же поставщик + модель к чату, рассуждениям, кодированию, памяти, сердцебиению, обучению и подсознанию. Вложения настраиваются отдельно. Изменения сохраняются при нажатии кнопки «Сохранить».',
  'settings.ai.globalModel.saving': 'Сохранение…',
  'settings.ai.globalModel.saved': 'Сохранено',
  'settings.ai.workload.noModel': 'Модель не выбрана',
  'settings.ai.workload.changeModel': 'Изменить модель',
  'settings.ai.workload.chooseModel': 'Выберите модель',
  'settings.ai.provider.ollama': 'Ollama',
  'settings.autocomplete.appFilter.acceptSuggestion': 'Принять предложение',
  'settings.autocomplete.appFilter.app': 'Приложение',
  'settings.autocomplete.appFilter.currentSuggestion': 'Текущее предложение',
  'settings.autocomplete.appFilter.contextOverride': 'Переопределение контекста (необязательно)',
  'settings.autocomplete.appFilter.debounce': 'Отладка',
  'settings.autocomplete.appFilter.debugFocus': 'Отладка фокуса',
  'settings.autocomplete.appFilter.enabled': 'Включено',
  'settings.autocomplete.appFilter.getSuggestion': 'Получить предложение',
  'settings.autocomplete.appFilter.lastError': 'Последняя ошибка',
  'settings.autocomplete.appFilter.liveLogs': 'Логи в реальном времени',
  'settings.autocomplete.appFilter.model': 'Модель',
  'settings.autocomplete.appFilter.noLogs': '):',
  'settings.autocomplete.appFilter.phase': 'Фаза',
  'settings.autocomplete.appFilter.platformSupported': 'Платформа поддерживается',
  'settings.autocomplete.appFilter.refreshStatus': 'Обновление…',
  'settings.autocomplete.appFilter.refreshing': 'Обновление…',
  'settings.autocomplete.appFilter.running': 'Выполняется',
  'settings.autocomplete.appFilter.runtime': 'Среда выполнения',
  'settings.autocomplete.appFilter.test': 'Тест',
  'settings.autocomplete.completionStyle.acceptedCompletion':
    'Сохранено {count} принятое автозаполнение — используется для персонализации будущих подсказок.',
  'settings.autocomplete.completionStyle.acceptedCompletions':
    'Сохранено {count} принятых автозаполнений — используется для персонализации будущих подсказок.',
  'settings.autocomplete.completionStyle.clearHistory': 'Очистка…',
  'settings.autocomplete.completionStyle.clearing': 'Очистка…',
  'settings.autocomplete.completionStyle.debounce': 'Задержка (ms)',
  'settings.autocomplete.completionStyle.enabled': 'Включено',
  'settings.autocomplete.completionStyle.maxChars': 'Макс. символов',
  'settings.autocomplete.completionStyle.noHistory':
    'Принятых предложений пока нет. Принимай предложения с помощью Tab, чтобы начать персонализацию.',
  'settings.autocomplete.completionStyle.overlayTtl': 'Время отображения (ms)',
  'settings.autocomplete.completionStyle.personalizationHistory': 'История персонализации',
  'settings.autocomplete.completionStyle.styleExamples': 'Примеры стиля (по одному на строку)',
  'settings.autocomplete.completionStyle.styleInstructions': 'Инструкции по стилю',
  'settings.autocomplete.debug.acceptedPrefix': 'Принято: {value}',
  'settings.autocomplete.debug.acceptFailed': 'Не удалось принять предложение',
  'settings.autocomplete.debug.alreadyRunning': 'Автозаполнение уже запущено.',
  'settings.autocomplete.debug.clearHistoryFailed': 'Не удалось очистить историю.',
  'settings.autocomplete.debug.didNotStart': 'Автозаполнение не запустилось.',
  'settings.autocomplete.debug.disabledInSettings':
    'Автозаполнение отключено в настройках. Включите его и сначала сохраните.',
  'settings.autocomplete.debug.fetchSuggestionFailed': 'Не удалось получить текущее предложение.',
  'settings.autocomplete.debug.inspectFocusedElementFailed':
    'Не удалось проверить элемент в фокусе.',
  'settings.autocomplete.debug.loadSettingsFailed':
    'Не удалось загрузить настройки автозаполнения.',
  'settings.autocomplete.debug.noSuggestionApplied': 'Предложение не было применено.',
  'settings.autocomplete.debug.noSuggestionReturned': 'Ни одно предложение не вернулось.',
  'settings.autocomplete.debug.refreshStatusFailed': 'Не удалось обновить статус автозаполнения.',
  'settings.autocomplete.debug.saveAdvancedSettingsFailed':
    'Не удалось сохранить дополнительные настройки.',
  'settings.autocomplete.debug.startFailed': 'Не удалось запустить автозаполнение.',
  'settings.autocomplete.debug.stopFailed': 'Не удалось остановить автозаполнение.',
  'settings.autocomplete.debug.suggestionPrefix': 'Предложение: {value}',
  'settings.autocomplete.shared.none': 'Нет',
  'settings.autocomplete.shared.notApplicable': 'н/д',
  'settings.autocomplete.shared.unknown': 'Неизвестно',
  'settings.billing.autoRecharge.addAmount': 'Добавить эту сумму',
  'settings.billing.autoRecharge.addCard': 'Добавить карту',
  'settings.billing.autoRecharge.amountHint': 'Подсказка по сумме',
  'settings.billing.autoRecharge.defaultCard': 'Карта по умолчанию',
  'settings.billing.autoRecharge.lastRechargeFailed': 'Последнее пополнение не удалось',
  'settings.billing.autoRecharge.lastRecharged': 'Последнее пополнение',
  'settings.billing.autoRecharge.expires': 'Срок действия истекает {date}',
  'settings.billing.autoRecharge.noCards': 'Нет карт',
  'settings.billing.autoRecharge.paymentMethods': 'Способы оплаты',
  'settings.billing.autoRecharge.rechargeInProgress': 'Пополнение в процессе',
  'settings.billing.autoRecharge.spentThisWeek':
    '${spent} из ${limit}, использовано на этой неделе',
  'settings.billing.autoRecharge.rechargeWhen': 'Пополнять, когда баланс ниже',
  'settings.billing.autoRecharge.saveSettings': 'Сохранение…',
  'settings.billing.autoRecharge.saving': 'Сохранение…',
  'settings.billing.autoRecharge.setDefault': ':',
  'settings.billing.autoRecharge.subtitle': 'Подзаголовок',
  'settings.billing.autoRecharge.title': 'Включить автопополнение',
  'settings.billing.autoRecharge.toggleAriaLabel': 'Переключить автопополнение',
  'settings.billing.autoRecharge.weeklyLimit': 'Еженедельный лимит расходов',
  'settings.billing.history.desc': 'Описание',
  'settings.billing.history.empty': 'Пусто',
  'settings.billing.history.openPortal': 'Открыть портал',
  'settings.billing.history.posted': 'Проведено',
  'settings.billing.history.title': 'Заголовок',
  'settings.billing.inferenceBudget.cycleEnds': 'Цикл заканчивается',
  'settings.billing.inferenceBudget.exhausted': 'Исчерпан',
  'settings.billing.inferenceBudget.loadError': 'Ошибка загрузки',
  'settings.billing.inferenceBudget.noBudgetDesc': 'Бюджет не задан',
  'settings.billing.inferenceBudget.noRecurringBudget': 'Нет регулярного бюджета',
  'settings.billing.inferenceBudget.noRecurringPlanBudget': 'Нет повторяющегося бюджета плана.',
  'settings.billing.inferenceBudget.noRecurringWeeklyDesc':
    'Ваш текущий план не включает повторяющийся еженедельный бюджет вывода. Вместо этого использование оплачивается из имеющихся кредитов.',
  'settings.billing.inferenceBudget.remaining': 'Осталось',
  'settings.billing.inferenceBudget.remainingSummary': 'Осталось {remaining} / {budget}',
  'settings.billing.inferenceBudget.spentThisCycle': 'В этом цикле потрачено {amount}',
  'settings.billing.inferenceBudget.cycleEndsOn': 'Цикл заканчивается {date}',
  'settings.billing.inferenceBudget.exhaustedDesc':
    'Использование включенной подписки исчерпано. Пополняйте кредиты, чтобы продолжать использовать AI, не дожидаясь следующего цикла.',
  'settings.billing.inferenceBudget.discountVsPayg':
    '{pct}% дешевле за звонок, чем при оплате по мере использования.',
  'settings.billing.inferenceBudget.cycleSpend': 'Циклические расходы',
  'settings.billing.inferenceBudget.totalAmount': '{amount} всего',
  'settings.billing.inferenceBudget.inference': 'Вывод',
  'settings.billing.inferenceBudget.integrations': 'Интеграции',
  'settings.billing.inferenceBudget.calls': '{count} вызовы',
  'settings.billing.inferenceBudget.dailySpend': 'Ежедневные расходы',
  'settings.billing.inferenceBudget.dailySpendPoint': '{date}: {amount}',
  'settings.billing.inferenceBudget.topModels': 'Лучшие модели',
  'settings.billing.inferenceBudget.noInferenceUsage': 'В этом цикле не используются выводы.',
  'settings.billing.inferenceBudget.topIntegrations': 'Топ интеграций',
  'settings.billing.inferenceBudget.noIntegrationUsage': 'В этом цикле интеграция не используется.',
  'settings.billing.inferenceBudget.tenHourCap': 'Ограничение 10 часов',
  'settings.billing.inferenceBudget.title': 'Заголовок',
  'settings.billing.inferenceBudget.unableToLoad': 'Невозможно загрузить данные об использовании.',
  'settings.billing.inferenceBudget.notAvailable': 'н/д',
  'settings.billing.payAsYouGo.available': 'Доступно',
  'settings.billing.payAsYouGo.chargeCustomAmount': 'Открытие…',
  'settings.billing.payAsYouGo.chooseTopUpDesc': 'Описание выбора пополнения',
  'settings.billing.payAsYouGo.chooseTopUpTitle': 'Выберите сумму пополнения',
  'settings.billing.payAsYouGo.creditBalanceDesc': 'Описание баланса кредитов',
  'settings.billing.payAsYouGo.creditBalanceTitle': 'Баланс кредитов',
  'settings.billing.payAsYouGo.customAmount': 'Произвольная сумма',
  'settings.billing.payAsYouGo.enterAmount': 'Введи сумму',
  'settings.billing.payAsYouGo.opening': 'Открытие',
  'settings.billing.payAsYouGo.promotionalCredits': 'Промокредиты',
  'settings.billing.payAsYouGo.topUpBalance': 'Пополнение баланса',
  'settings.billing.payAsYouGo.topUpCredits': 'Пополнить кредиты',
  'settings.billing.payAsYouGo.unableToLoad': 'Не удалось загрузить баланс.',
  'settings.billing.subscription.annual': 'Годовая',
  'settings.billing.subscription.billedAnnually': 'Оплата раз в год',
  'settings.billing.subscription.chooseSubtitle': 'Подзаголовок выбора',
  'settings.billing.subscription.chooseTitle': 'Заголовок выбора',
  'settings.billing.subscription.cryptoDesc': 'Описание крипто',
  'settings.billing.subscription.cryptoQuestion': 'Вопрос о крипто',
  'settings.billing.subscription.current': 'Текущий',
  'settings.billing.subscription.currentPlan': 'Текущий план',
  'settings.billing.subscription.monthly': 'Ежемесячная',
  'settings.billing.subscription.paymentConfirmed': 'Оплата подтверждена',
  'settings.billing.subscription.perMonth': 'В месяц',
  'settings.billing.subscription.popular': 'Популярное',
  'settings.billing.subscription.save': '{pct}',
  'settings.billing.subscription.upgrade': 'Улучшить',
  'settings.billing.subscription.waiting': 'Ожидание',
  'settings.billing.subscription.waitingPayment': 'Ожидание оплаты',
  'settings.composio.apiKeyDesc': 'API-ключ Composio сейчас сохранён на этом устройстве.',
  'settings.composio.apiKeyExamplePlaceholder': 'ck_live_xxxxxxxxxxxxxxxx',
  'settings.composio.apiKeyLabel': 'API-ключ Composio',
  'settings.composio.apiKeyStored': 'API-ключ сохранён',
  'settings.composio.apiKeyStoredPlaceholder': '•••••••••••••••',
  'settings.composio.clearedToBackend': 'Переключено в режим Backend',
  'settings.composio.confirmItem1': 'Аккаунт на app.composio.dev с API-ключом',
  'settings.composio.confirmItem2':
    'Заново привязать каждую интеграцию через ваш личный аккаунт Composio',
  'settings.composio.confirmItem3':
    'Примечание: триггеры Composio (вебхуки в реальном времени) пока не работают в прямом режиме — только синхронные вызовы инструментов',
  'settings.composio.confirmNeedItems': 'Вам понадобится:',
  'settings.composio.confirmSwitch': 'Понятно, переключить на «Прямой»',
  'settings.composio.confirmTitle': '⚠️ Переключение на прямой режим',
  'settings.composio.confirmWarning':
    'Ваши существующие интеграции (Gmail, Slack, GitHub и т. д., привязанные через OpenHuman) не будут видны — они находятся в управляемом OpenHuman тенанте Composio.',
  'settings.composio.intro':
    'Composio интегрирует 250+ внешних приложений как инструменты, которые может вызывать ваш агент. Выберите способ маршрутизации этих вызовов.',
  'settings.composio.title': 'Composio',
  'settings.composio.modeDirect': 'Прямой (собственный API-ключ)',
  'settings.composio.modeDirectDesc':
    'Вызовы идут напрямую на backend.composio.dev. Суверенно и подходит для офлайн. Выполнение инструментов работает синхронно; вебхуки триггеров в реальном времени пока не маршрутизируются в прямом режиме (см. отдельную задачу).',
  'settings.composio.modeManaged': 'Управляемый (OpenHuman управляет за тебя)',
  'settings.composio.modeManagedDesc':
    'OpenHuman проксирует вызовы инструментов через наш бэкенд (рекомендуется). Авторизация брокеруется; вам не нужно вставлять API-ключ Composio. Вебхуки полностью маршрутизируются.',
  'settings.composio.routingMode': 'Режим маршрутизации',
  'settings.composio.saveErrorNoKey':
    'Не удалось сохранить. Прямой режим требует непустой API-ключ.',
  'settings.composio.saving': 'Сохранение…',
  'settings.composio.switching': 'Переключение…',
  'settings.companion.title': 'Настольный компаньон',
  'settings.companion.session': 'Сеанс',
  'settings.companion.activeLabel': 'Активен',
  'settings.companion.inactiveStatus': 'Неактивен',
  'settings.companion.stopping': 'Остановка…',
  'settings.companion.stopSession': 'Остановить сеанс',
  'settings.companion.starting': 'Начало…',
  'settings.companion.startSession': 'Начало сеанса',
  'settings.companion.sessionId': 'Идентификатор сеанса',
  'settings.companion.turns': 'Выключает',
  'settings.companion.remaining': 'Оставшуюся',
  'settings.companion.configuration': 'конфигурацию',
  'settings.companion.hotkey': 'Горячая клавиша',
  'settings.companion.activationMode': 'Режим активации',
  'settings.companion.sessionTtl': 'TTL сеанса',
  'settings.companion.screenCapture': 'Снимок экрана',
  'settings.companion.appContext': 'Контекст приложения',
  'settings.cron.jobs.commandRequired': 'Для shell-задач требуется команда',
  'settings.cron.jobs.createJob': 'Новая запланированная задача',
  'settings.cron.jobs.created': 'Задача создана',
  'settings.cron.jobs.custom': 'Свой вариант',
  'settings.cron.jobs.desc': 'Описание',
  'settings.cron.jobs.edit': 'Изменить',
  'settings.cron.jobs.editJob': 'Изменить запланированную задачу',
  'settings.cron.jobs.empty': 'Заданий по расписанию не найдено.',
  'settings.cron.jobs.errorCreate': 'Не удалось создать cron-задачу: {message}',
  'settings.cron.jobs.errorLoadList': 'Не удалось загрузить cron-задачи ядра: {message}',
  'settings.cron.jobs.errorLoadRuns': 'Не удалось загрузить историю запусков: {message}',
  'settings.cron.jobs.errorRemove': 'Не удалось удалить cron-задачу ядра: {message}',
  'settings.cron.jobs.errorRun': 'Не удалось запустить cron-задачу ядра: {message}',
  'settings.cron.jobs.errorToggle': 'Не удалось обновить cron-задачу ядра: {message}',
  'settings.cron.jobs.errorUpdate': 'Не удалось обновить cron-задачу: {message}',
  'settings.cron.jobs.formAtLabel': 'Запустить в',
  'settings.cron.jobs.formCancel': 'Отмена',
  'settings.cron.jobs.formCommand': 'Shell-команда',
  'settings.cron.jobs.formCommandPlaceholder': 'напр. curl https://example.com/health',
  'settings.cron.jobs.formCreate': 'Создать',
  'settings.cron.jobs.formCronCustom': 'Своё выражение',
  'settings.cron.jobs.formCronCustomPlaceholder': 'напр. */30 * * * *',
  'settings.cron.jobs.formCronPreset': 'Шаблон',
  'settings.cron.jobs.formCronPreview': 'Запуски: {preview}',
  'settings.cron.jobs.formDeleteAfterRun': 'Удалить после первого запуска',
  'settings.cron.jobs.formDelivery': 'Режим доставки',
  'settings.cron.jobs.formDeliveryNone': 'Нет (только вывод)',
  'settings.cron.jobs.formDeliveryProactive': 'Проактивный (push-уведомление)',
  'settings.cron.jobs.formError': 'Не удалось сохранить задачу',
  'settings.cron.jobs.formEveryLabel': 'Интервал (миллисекунды)',
  'settings.cron.jobs.formEveryPlaceholder': 'напр. 3600000',
  'settings.cron.jobs.formJobType': 'Тип задачи',
  'settings.cron.jobs.formJobTypeAgent': 'Agent (запрос к ИИ)',
  'settings.cron.jobs.formJobTypeShell': 'Shell-команда',
  'settings.cron.jobs.formName': 'Название задачи',
  'settings.cron.jobs.formNamePlaceholder': 'напр. daily-report, cleanup-task',
  'settings.cron.jobs.formPrompt': 'Запрос для агента',
  'settings.cron.jobs.formPromptPlaceholder': 'Что агент должен делать при каждом запуске?',
  'settings.cron.jobs.formPromptRequired': 'Для задач агента требуется запрос',
  'settings.cron.jobs.formSave': 'Сохранить',
  'settings.cron.jobs.formSaving': 'Сохранение…',
  'settings.cron.jobs.formScheduleAt': 'Однократно (запуск в)',
  'settings.cron.jobs.formScheduleCron': 'Повторяющаяся (cron)',
  'settings.cron.jobs.formScheduleEvery': 'Интервал (каждые N мс)',
  'settings.cron.jobs.formScheduleRequired': 'Требуется расписание',
  'settings.cron.jobs.formScheduleType': 'Тип расписания',
  'settings.cron.jobs.formSessionIsolated': 'Изолированная (рекомендуется)',
  'settings.cron.jobs.formSessionMain': 'Основная сессия',
  'settings.cron.jobs.formSessionTarget': 'Целевая сессия',
  'settings.cron.jobs.lastStatus': 'Последний статус',
  'settings.cron.jobs.loading': 'Загрузка заданий...',
  'settings.cron.jobs.loadingRuns': 'Загрузка запусков',
  'settings.cron.jobs.nextRun': 'Следующий запуск',
  'settings.cron.jobs.pause': 'Приостановить',
  'settings.cron.jobs.paused': 'Приостановлено',
  'settings.cron.jobs.recentRuns': 'Последние запуски',
  'settings.cron.jobs.removing': 'Удаление',
  'settings.cron.jobs.resume': 'Возобновить',
  'settings.cron.jobs.runningNow': 'Выполняется сейчас',
  'settings.cron.jobs.saving': 'Сохранение…',
  'settings.cron.jobs.schedule': 'Расписание',
  'settings.cron.jobs.title': 'Задания ядра по расписанию',
  'settings.cron.jobs.updated': 'Задача обновлена',
  'settings.cron.jobs.viewRuns': 'Посмотреть запуски',
  'settings.cron.schedule.every2hours': 'Каждые 2 часа',
  'settings.cron.schedule.every30min': 'Каждые 30 минут',
  'settings.cron.schedule.every6hours': 'Каждые 6 часов',
  'settings.cron.schedule.everyHour': 'Каждый час',
  'settings.cron.schedule.onceDaily': 'Раз в день (9:00)',
  'settings.localModel.deviceCapability.active': 'Активно',
  'settings.localModel.deviceCapability.appliedTier': 'Применённый уровень',
  'settings.localModel.deviceCapability.applying': 'Применение',
  'settings.localModel.deviceCapability.cores': '{count}',
  'settings.localModel.deviceCapability.couldNotLoadPresets': 'Не удалось загрузить пресеты',
  'settings.localModel.deviceCapability.cpu': 'CPU',
  'settings.localModel.deviceCapability.customModelIds': 'Пользовательские ID моделей',
  'settings.localModel.deviceCapability.detected': 'Обнаружено',
  'settings.localModel.deviceCapability.disabled': 'Отключено',
  'settings.localModel.deviceCapability.disabledDesc': 'Отключено',
  'settings.localModel.deviceCapability.downloadingModels': '(загрузка моделей)',
  'settings.localModel.deviceCapability.downloadingSetupDesc':
    'Загрузка установщика OllamaSetup (~2 ГБ) и распаковка. При первой установке это может занять минуту.',
  'settings.localModel.deviceCapability.failedToApplyPreset': 'Не удалось применить пресет',
  'settings.localModel.deviceCapability.gpu': 'GPU',
  'settings.localModel.deviceCapability.installFailed': 'Установка Ollama не удалась',
  'settings.localModel.deviceCapability.installFailedDesc':
    'Установщик завершил работу до того, как Ollama стала готова к использованию. Нажми «Повторить» или установи вручную с ollama.com.',
  'settings.localModel.deviceCapability.installFirst': 'Сначала запустите Ollama.',
  'settings.localModel.deviceCapability.installFirstDesc':
    'Локальные уровни зависят от внешне управляемого эндпоинта Ollama. Запустите его самостоятельно, загрузите нужные модели и используйте «Отключено (облачный fallback)», пока среда выполнения недоступна.',
  'settings.localModel.deviceCapability.installOllamaFirst':
    'Сначала запустите Ollama, чтобы использовать этот уровень',
  'settings.localModel.deviceCapability.installingOllama': 'Установка Ollama',
  'settings.localModel.deviceCapability.loadingDeviceInfo': 'Загрузка информации об устройстве',
  'settings.localModel.deviceCapability.localAiDisabled':
    'Локальный AI отключён — используется облачный резерв.',
  'settings.localModel.deviceCapability.modelTier': 'Уровень модели',
  'settings.localModel.deviceCapability.needsOllama': 'Требуется Ollama',
  'settings.localModel.deviceCapability.notDetected': 'Не обнаружено',
  'settings.localModel.deviceCapability.disabledLowercase': 'отключен',
  'settings.localModel.deviceCapability.presetDetails':
    'Чат: {chatModel} · Vision: {visionModel} · Целевая оперативная память: {targetRamGb} ГБ',
  'settings.localModel.deviceCapability.ram': 'RAM',
  'settings.localModel.deviceCapability.recommended': 'Рекомендуется',
  'settings.localModel.deviceCapability.retryInstall': 'Повтор…',
  'settings.localModel.deviceCapability.retrying': 'Повтор…',
  'settings.localModel.deviceCapability.starting': 'Запуск…',
  'settings.localModel.download.audioPathPlaceholder': 'Абсолютный путь к аудиофайлу',
  'settings.localModel.download.capabilityChat': 'Чат',
  'settings.localModel.download.capabilityEmbedding': 'Встраивание',
  'settings.localModel.download.capabilityAssets': 'Ресурсы возможностей',
  'settings.localModel.download.capabilityStt': 'STT',
  'settings.localModel.download.capabilityTts': 'TTS',
  'settings.localModel.download.capabilityVision': 'Зрение',
  'settings.localModel.download.downloading': 'Загрузка...',
  'settings.localModel.download.embeddingDimensions': 'Размеры: {dimensions}',
  'settings.localModel.download.embeddingModel': 'Модель: {modelId}',
  'settings.localModel.download.embeddingPlaceholder': 'По одной строке на вход...',
  'settings.localModel.download.embeddingVectors': 'Векторы: {count}',
  'settings.localModel.download.noThinkMode': 'Без режима обдумывания',
  'settings.localModel.download.notAvailable': 'н/д',
  'settings.localModel.download.promptPlaceholder':
    'Введи любой запрос для тестирования локальной модели...',
  'settings.localModel.download.quantizationPref': 'Предпочтения квантизации',
  'settings.localModel.download.runEmbeddingTest': 'Выполнение...',
  'settings.localModel.download.runPromptTest': 'Запустить тест промпта',
  'settings.localModel.download.runSummaryTest': 'Запустить тест сводки',
  'settings.localModel.download.runTranscriptionTest': 'Выполнение...',
  'settings.localModel.download.runTtsTest': 'Выполнение...',
  'settings.localModel.download.runVisionTest': 'Выполнение...',
  'settings.localModel.download.running': 'Выполнение...',
  'settings.localModel.download.runningPrompt': 'Выполнение запроса',
  'settings.localModel.download.summaryHelper':
    'Вызовы `openhuman.inference_summarize` через ядро Rust',
  'settings.localModel.download.summarizePlaceholder':
    'Вставь текст для суммаризации локальной моделью...',
  'settings.localModel.download.testCustomPrompt': 'Тест произвольного запроса',
  'settings.localModel.download.testEmbeddings': 'Тест векторных вложений',
  'settings.localModel.download.testSummarization': 'Тест суммаризации',
  'settings.localModel.download.testVisionPrompt': 'Тест визуального запроса',
  'settings.localModel.download.testVoiceInput': 'Тест голосового ввода (STT)',
  'settings.localModel.download.testVoiceOutput': 'Тест голосового вывода (TTS)',
  'settings.localModel.download.transcript': 'Расшифровка:',
  'settings.localModel.download.ttsOutput': 'Выход: {outputPath}',
  'settings.localModel.download.ttsOutputPlaceholder': 'Необязательный путь к выходному WAV-файлу',
  'settings.localModel.download.ttsPlaceholder': 'Введи текст для синтеза...',
  'settings.localModel.download.ttsVoice': 'Голос: {voiceId}',
  'settings.localModel.download.visionImagePlaceholder':
    'По одной ссылке на изображение на строку (data URI, URL или локальный маркер пути)',
  'settings.localModel.download.visionPromptPlaceholder': 'Введи запрос для визуальной модели...',
  'settings.localModel.status.allChecksPassed': 'Все проверки пройдены',
  'settings.localModel.status.artifact': 'Артефакт',
  'settings.localModel.status.backend': 'Бэкенд',
  'settings.localModel.status.binary': 'Бинарный файл',
  'settings.localModel.status.bootstrapResume': 'Инициализация / возобновление',
  'settings.localModel.status.checking': 'Проверка...',
  'settings.localModel.status.checkingOllama': 'Проверка Ollama',
  'settings.localModel.status.contextBelowMinimumBadge':
    '{contextLength} ctx - ниже {required} мин.',
  'settings.localModel.status.contextBelowMinimumTitle':
    'Отклонено: количество токенов {contextLength} контекстного окна ниже минимального значения токена {required}, требуемого для уровня памяти. Напоминание будет повреждено молчаливым усечением.',
  'settings.localModel.status.contextOkBadge': '{contextLength} контекст ✓',
  'settings.localModel.status.contextOkTitle':
    'Токены контекстного окна {contextLength} соответствуют минимуму уровня памяти для токенов {required}.',
  'settings.localModel.status.contextUnknownBadge': 'ctx неизвестно',
  'settings.localModel.status.contextUnknownTitle':
    'Контекстное окно неизвестно; не удалось подтвердить, что он соответствует минимуму уровня памяти токена {required}.',
  'settings.localModel.status.customLocation': 'Пользовательский путь',
  'settings.localModel.status.customLocationDesc': 'Описание пользовательского расположения',
  'settings.localModel.status.diagnosticsHint':
    'Нажмите «Запустить диагностику», чтобы убедиться, что Ollama запущен и модели установлены.',
  'settings.localModel.status.downloadingUnknown': 'Загрузка (размер неизвестен)',
  'settings.localModel.status.eta': 'ETA',
  'settings.localModel.status.expectedModels': 'Ожидаемые модели',
  'settings.localModel.status.expectedChat': 'Чат: {model}',
  'settings.localModel.status.expectedEmbedding': 'Встраивание: {model}',
  'settings.localModel.status.expectedVision': 'Видение: {model}',
  'settings.localModel.status.externalProcess': 'Внешний процесс',
  'settings.localModel.status.forceRebootstrap': 'Принудительная переинициализация',
  'settings.localModel.status.generationTps': 'Скорость генерации (TPS)',
  'settings.localModel.status.hideErrorDetails': 'Скрыть детали ошибки',
  'settings.localModel.status.installManually': 'Установить вручную',
  'settings.localModel.status.installManuallyFrom': 'Установить вручную с',
  'settings.localModel.status.installOllama': 'Запуск…',
  'settings.localModel.status.installedModels': 'Установленные модели',
  'settings.localModel.status.installing': 'Установка...',
  'settings.localModel.status.installingOllama': 'Установка среды Ollama...',
  'settings.localModel.status.issues': 'Проблемы',
  'settings.localModel.status.issuesFound': 'Найдено проблем: {count}',
  'settings.localModel.status.lastLatency': 'Последняя задержка',
  'settings.localModel.status.model': 'Модель',
  'settings.localModel.status.notAvailable': 'н/д',
  'settings.localModel.status.notFound': 'Не найдено',
  'settings.localModel.status.notRunning': 'Не запущено',
  'settings.localModel.status.ollamaBinaryPath': 'Путь к бинарному файлу Ollama',
  'localModel.ollamaServer.helperText': 'Пример: http://192.168.1.5:11434',
  'localModel.ollamaServer.label': 'URL сервера Ollama',
  'localModel.ollamaServer.modelCount': 'моделей',
  'localModel.ollamaServer.placeholder': 'http://localhost:11434',
  'localModel.ollamaServer.reachable': 'Доступен',
  'localModel.ollamaServer.resetButton': 'Сбросить до значения по умолчанию',
  'localModel.ollamaServer.saveButton': 'Сохранить',
  'localModel.ollamaServer.testButton': 'Проверить соединение',
  'localModel.ollamaServer.unreachable': 'Недоступен',
  'localModel.ollamaServer.validationError':
    'Должен быть допустимым URL с протоколом http:// или https://',
  'settings.localModel.status.ollamaDiagnostics': 'Диагностика Ollama',
  'settings.localModel.status.ollamaNotInstalled': 'Среда выполнения Ollama недоступна',
  'settings.localModel.status.ollamaNotInstalledDesc':
    'OpenHuman теперь рассматривает Ollama как внешнюю среду инференса. Запустите собственный сервер Ollama, загрузите нужные модели и направьте маршрутизацию нагрузки на него.',
  'settings.localModel.status.progress': 'Прогресс',
  'settings.localModel.status.provider': 'Провайдер',
  'settings.localModel.status.retryBootstrap': 'Повторить Bootstrap',
  'settings.localModel.status.runDiagnostics': 'Проверка...',
  'settings.localModel.status.running': 'Работает',
  'settings.localModel.status.runningExternalProcess': 'Запущено через внешний процесс',
  'settings.localModel.status.runtimeStatus': 'Статус среды выполнения',
  'settings.localModel.status.server': 'Сервер',
  'settings.localModel.status.setPath': 'Установка...',
  'settings.localModel.status.setting': 'Установка...',
  'settings.localModel.status.showErrorDetails': 'Скрыть детали ошибки',
  'settings.localModel.status.showInstallErrorDetails': 'Скрыть детали ошибки',
  'settings.localModel.status.suggestedFixes': 'Предлагаемые исправления',
  'settings.localModel.status.thenSetPath': 'Затем укажи путь',
  'settings.localModel.status.triggering': 'Запуск...',
  'settings.localModel.status.unavailable': 'Недоступно',
  'settings.localModel.status.working': 'Работаю...',
  'settings.developerMenu.ai.title': 'Конфигурация ИИ',
  'settings.developerMenu.ai.desc':
    'Облачные провайдеры, локальные модели Ollama и маршрутизация по типам нагрузки',
  'settings.developerMenu.screenAwareness.title': 'Осведомленность об экране',
  'settings.developerMenu.screenAwareness.desc':
    'Разрешения на захват экрана, политика мониторинга и управление сессиями',
  'settings.developerMenu.messagingChannels.title': 'Каналы сообщений',
  'settings.developerMenu.messagingChannels.desc':
    'Настройка режимов аутентификации Telegram/Discord и маршрутизации канала по умолчанию',
  'settings.developerMenu.tools.title': 'Инструменты',
  'settings.developerMenu.tools.desc':
    'Включайте или отключайте возможности, которые OpenHuman может использовать от вашего имени',
  'settings.developerMenu.agentChat.title': 'Чат агента',
  'settings.developerMenu.agentChat.desc':
    'Тестируйте разговор агента с переопределениями модели и температуры',
  'settings.developerMenu.devWorkflow.title': 'Рабочий процесс разработки',
  'settings.developerMenu.devWorkflow.desc':
    'Автономный агент, который выбирает ваши проблемы с GitHub и поднимает PR по расписанию.',
  'settings.developerMenu.devWorkflow.panelDesc':
    'Настройте автономный агент разработчика, который выбирает назначенные вам проблемы GitHub и автоматически отправляет запросы на включение по расписанию.',
  'settings.developerMenu.skillsRunner.title': 'Навыки бегуна',
  'settings.developerMenu.skillsRunner.desc':
    'Запустите любой связанный навык в произвольном порядке — заполните его входные данные и запустите фоновый автономный запуск.',
  'settings.developerMenu.skillsRunner.panelDesc':
    'Выберите связанный навык, заполните его заявленные входные данные и запустите фоновый прогон по принципу «выстрелил и забыл». Вместо этого используйте Dev Workflow, если вам нужно повторяющееся задание, запланированное cron.',
  'settings.skillsRunner.skill': 'Навык',
  'settings.skillsRunner.selectSkill': 'Выберите навык…',
  'settings.skillsRunner.loadingSkills': 'Загрузка навыков…',
  'settings.skillsRunner.loadingDescription': 'Загрузка входных данных о навыках…',
  'settings.skillsRunner.noInputs': 'Этот навык не декларирует никаких входных данных.',
  'settings.skillsRunner.placeholder.required': 'необходимый',
  'settings.skillsRunner.runNow': 'Беги сейчас',
  'settings.skillsRunner.starting': 'Начало…',
  'settings.skillsRunner.started': 'Запущено — идентификатор запуска:',
  'settings.skillsRunner.logPath': 'Бревно:',
  'settings.skillsRunner.error.listSkills': 'Не удалось загрузить навыки:',
  'settings.skillsRunner.error.describe': 'Не удалось загрузить входные данные:',
  'settings.skillsRunner.error.missingRequired': 'Отсутствуют необходимые входные данные:',
  'settings.skillsRunner.error.run': 'Не удалось запустить запуск:',
  'settings.skillsRunner.error.preflightGate': 'Предполетный шлюз вышел из строя',
  'settings.skillsRunner.error.runtimeUnavailable': 'Среда выполнения недоступна',
  'settings.skillsRunner.error.runtimeUnavailableDefault': 'недоступно',
  'settings.skillsRunner.schedule.heading': 'Расписание (повторяющееся)',
  'settings.skillsRunner.schedule.help':
    'Сохраните этот навык + входные данные как повторяющееся задание cron. Агент будет вызывать run_workflow при каждом тике.',
  'settings.skillsRunner.schedule.frequency': 'Частота',
  'settings.skillsRunner.schedule.every30min': 'Каждые 30 минут',
  'settings.skillsRunner.schedule.everyHour': 'Каждый час',
  'settings.skillsRunner.schedule.every2hours': 'Каждые 2 часа',
  'settings.skillsRunner.schedule.every6hours': 'Каждые 6 часов',
  'settings.skillsRunner.schedule.onceDaily': 'Один раз в день (9:00)',
  'settings.skillsRunner.schedule.save': 'Сохранить расписание',
  'settings.skillsRunner.schedule.saving': 'Сохранение…',
  'settings.skillsRunner.schedule.saved': 'Расписание сохранено.',
  'settings.skillsRunner.schedule.error': 'Не удалось сохранить расписание:',
  'settings.skillsRunner.schedule.loadingJobs': 'Загрузка существующих расписаний…',
  'settings.skillsRunner.schedule.noJobs': 'Для этого навыка пока не сохранено расписание.',
  'settings.skillsRunner.schedule.existing': 'Запланированные задания для этого навыка:',
  'settings.skillsRunner.schedule.inputsLabel': 'Входные данные',
  'settings.skillsRunner.schedule.inputsNone': 'Нет входных данных',
  'settings.skillsRunner.schedule.runNow': 'Бегать',
  'settings.skillsRunner.schedule.remove': 'Удалять',
  'settings.skillsRunner.scheduleEnabled': 'Включено',
  'settings.skillsRunner.scheduleDisabled': 'Приостановлено',
  'settings.skillsRunner.scheduleToggleAria': 'Переключить расписание включено',
  'settings.skillsRunner.schedule.history': 'История',
  'settings.skillsRunner.schedule.historyLoading': 'Загрузка истории…',
  'settings.skillsRunner.schedule.historyEmpty': 'По этому расписанию пока нет запусков.',
  'settings.skillsRunner.schedule.historyNoOutput': 'Выходные данные не зафиксированы.',
  'settings.skillsRunner.schedule.active': 'Активный',
  'settings.skillsRunner.schedule.lastRunLabel': 'последний:',
  'settings.skillsRunner.recentRuns.headingForSkill': 'Недавние запуски этого навыка',
  'settings.skillsRunner.recentRuns.headingAll': 'Недавние прогоны навыков (все)',
  'settings.skillsRunner.recentRuns.refresh': 'Обновить',
  'settings.skillsRunner.recentRuns.loading': 'Загрузка последних запусков…',
  'settings.skillsRunner.recentRuns.empty': 'Нет недавних запусков.',
  'settings.skillsRunner.viewer.loading': 'Загрузка журнала…',
  'settings.skillsRunner.viewer.tailing': 'Живой хвостохранилище',
  'settings.skillsRunner.viewer.fetching': 'fetching',
  'settings.skillsRunner.viewer.error': 'Не удалось прочитать журнал:',
  'settings.skillsRunner.repoPicker.loading': 'Загрузка репозиториев…',
  'settings.skillsRunner.repoPicker.select': 'Выберите репозиторий…',
  'settings.skillsRunner.repoPicker.empty':
    'Ни один репозиторий не вернулся. Подключите GitHub через Composio, чтобы заполнить этот список.',
  'settings.skillsRunner.repoPicker.notConnected':
    'GitHub не ​​подключен через Composio. Сначала подключите его в разделе «Навыки» → Composio.',
  'settings.skillsRunner.repoPicker.privateTag': '(частный)',
  'settings.skillsRunner.branchPicker.needRepo': 'Сначала выберите репозиторий…',
  'settings.skillsRunner.branchPicker.loading': 'Загрузка веток…',
  'settings.skillsRunner.branchPicker.select': 'Выберите филиал…',
  'settings.devWorkflow.githubRepository': 'Репозиторий GitHub',
  'settings.devWorkflow.loadingRepositories': 'Загрузка репозиториев...',
  'settings.devWorkflow.selectRepository': 'Выберите репозиторий',
  'settings.devWorkflow.privateTag': '(частный)',
  'settings.devWorkflow.detectingForkInfo': 'Обнаружение информации о вилке...',
  'settings.devWorkflow.forkDetected': 'Обнаружена вилка',
  'settings.devWorkflow.upstream': 'Вверх по течению:',
  'settings.devWorkflow.forkPrNote': 'ОР будут выдвинуты против вышестоящего хранилища.',
  'settings.devWorkflow.notForkNote':
    'Не вилка. PR будут выдвинуты непосредственно против этого хранилища.',
  'settings.devWorkflow.targetBranch': 'Целевой филиал',
  'settings.devWorkflow.targetBranchNote': 'Против этой ветки будут подняты ПР',
  'settings.devWorkflow.loadingBranches': 'Загрузка веток...',
  'settings.devWorkflow.runFrequency': 'Частота запуска',
  'settings.devWorkflow.runFrequencyNote':
    'Как часто агент должен проверять наличие проблем и поднимать PR.',
  'settings.devWorkflow.updateConfiguration': 'Обновить конфигурацию',
  'settings.devWorkflow.saveConfiguration': 'Сохранить конфигурацию',
  'settings.devWorkflow.remove': 'Удалять',
  'settings.devWorkflow.saved': 'Сохранено',
  'settings.devWorkflow.activeConfiguration': 'Активная конфигурация',
  'settings.devWorkflow.activeConfigRepository': 'Репозиторий:',
  'settings.devWorkflow.activeConfigUpstream': 'Вверх по течению:',
  'settings.devWorkflow.activeConfigTargetBranch': 'Целевая ветка:',
  'settings.devWorkflow.activeConfigSchedule': 'Расписание:',
  'settings.devWorkflow.enabled': 'Включено',
  'settings.devWorkflow.paused': 'Приостановлено',
  'settings.devWorkflow.nextRun': 'Следующий запуск',
  'settings.devWorkflow.lastRun': 'Последний запуск',
  'settings.devWorkflow.runNow': 'Беги сейчас',
  'settings.devWorkflow.running': 'Бег…',
  'settings.devWorkflow.recentRuns': 'Недавние запуски',
  'settings.devWorkflow.cronSaveError': 'Не удалось сохранить конфигурацию.',
  'settings.devWorkflow.lastOutput': 'Последний вывод',
  'settings.devWorkflow.noOutput': 'Выходные данные не зафиксированы',
  'settings.devWorkflow.runningStatus':
    'Агент работает — выбирает проблему и работает над ее исправлением...',
  'settings.devWorkflow.errorNotConnected':
    'GitHub не ​​подключен. Сначала подключите GitHub через «Настройки» > «Дополнительно» > Composio.',
  'settings.devWorkflow.errorToolNotEnabled':
    'Инструмент GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER не включён на этом сервере. Попросите своего администратора включить его в интеграции Composio (backend#842).',
  'settings.devWorkflow.errorNotAuthenticated':
    'Не аутентифицирован. Пожалуйста, сначала войдите в систему.',
  'settings.devWorkflow.errorNoRepositories':
    'Для этой учетной записи GitHub не ​​найдено репозиториев.',
  'settings.devWorkflow.schedule.every30min': 'Каждые 30 минут',
  'settings.devWorkflow.schedule.everyHour': 'Каждый час',
  'settings.devWorkflow.schedule.every2hours': 'Каждые 2 часа',
  'settings.devWorkflow.schedule.every6hours': 'Каждые 6 часов',
  'settings.devWorkflow.schedule.onceDaily': 'Один раз в день (9 утра)',
  'settings.developerMenu.tasks.title': 'Задачи',
  'settings.developerMenu.tasks.desc':
    'Просматривайте доски задач и управляйте ими — ваши собственные дела и доски, которые агенты создают в разговорах.',
  'settings.developerMenu.cronJobs.title': 'Задачи cron',
  'settings.developerMenu.cronJobs.desc':
    'Просмотр и настройка запланированных задач для runtime-навыков',
  'settings.developerMenu.localModelDebug.title': 'Отладка локальной модели',
  'settings.developerMenu.localModelDebug.desc':
    'Конфигурация Ollama, загрузка ресурсов, тесты модели и диагностика',
  'settings.developerMenu.webhooks.title': 'Вебхуки',
  'settings.developerMenu.webhooks.desc':
    'Проверяйте регистрации runtime-вебхуков и журналы захваченных запросов',
  'settings.developerMenu.eventLog.title': 'Журнал событий',
  'settings.developerMenu.eventLog.desc':
    'Живой поток с цветовой кодировкой обо всех событиях агента, инструмента и системы.',
  'settings.developerMenu.eventLog.allTypes': 'Все типы',
  'settings.developerMenu.eventLog.filterAgent': 'Фильтр...',
  'settings.developerMenu.eventLog.download': 'Скачать',
  'settings.developerMenu.eventLog.events': 'events',
  'settings.developerMenu.eventLog.live': 'Жить',
  'settings.developerMenu.eventLog.disconnected': 'Отключено',
  'settings.developerMenu.eventLog.waiting': 'Ждем событий...',
  'settings.developerMenu.eventLog.notConnected': 'Не подключен к ядру',
  'settings.developerMenu.eventLog.jumpToLatest': 'Перейти к последней версии',
  'settings.developerMenu.eventLog.badge.tool': 'TOOL',
  'settings.developerMenu.eventLog.badge.agent': 'AGENT',
  'settings.developerMenu.eventLog.badge.info': 'INFO',
  'settings.developerMenu.eventLog.badge.mem': 'MEM',
  'settings.developerMenu.eventLog.badge.chan': 'CHAN',
  'settings.developerMenu.eventLog.badge.cron': 'CRON',
  'settings.developerMenu.eventLog.badge.hook': 'HOOK',
  'settings.developerMenu.eventLog.badge.warn': 'WARN',
  'settings.developerMenu.eventLog.badge.skill': 'SKILL',
  'settings.developerMenu.eventLog.badge.comp': 'COMP',
  'settings.developerMenu.eventLog.badge.mcp': 'MCP',
  'settings.developerMenu.intelligence.title': 'Интеллект',
  'settings.developerMenu.intelligence.desc':
    'Рабочая область памяти, подсознательный движок, сны и настройки',
  'settings.developerMenu.notificationRouting.title': 'Маршрутизация уведомлений',
  'settings.developerMenu.notificationRouting.desc':
    'Оценка важности ИИ и эскалация оркестратору для интеграционных оповещений',
  'settings.developerMenu.composeioTriggers.title': 'Триггеры ComposeIO',
  'settings.developerMenu.composeioTriggers.desc': 'Просмотр истории и архива триггеров ComposeIO',
  'settings.developerMenu.composioRouting.title': 'Маршрутизация Composio (прямой режим)',
  'settings.developerMenu.composioRouting.desc':
    'Используйте собственный API-ключ Composio и направляйте вызовы напрямую в backend.composio.dev',
  'settings.developerMenu.integrationTriggers.title': 'Триггеры интеграций',
  'settings.developerMenu.integrationTriggers.desc':
    'Настройка параметров AI-триажа для триггеров интеграций Composio',
  'settings.developerMenu.mcpServer.title': 'MCP Сервер',
  'settings.developerMenu.mcpServer.desc':
    'Настройка внешних клиентов MCP для подключения к серверу OpenHuman',
  'settings.developerMenu.autonomy.title': 'Автономия агента',
  'settings.developerMenu.autonomy.desc':
    'Ограничения частоты действий инструментов и пороги безопасности',
  'settings.developerMenu.autocomplete.title': 'Автодополнение',
  'settings.developerMenu.autocomplete.desc':
    'Настройки встроенного автодополнения ИИ и панель отладки',
  'settings.developerMenu.voiceDebug.title': 'Голос (отладка)',
  'settings.developerMenu.voiceDebug.desc':
    'Состояние среды выполнения голосового диктовки и настройки отладки',
  'settings.mcpServer.title': 'MCP',
  'settings.mcpServer.toolsSectionTitle': 'Доступные инструменты',
  'settings.mcpServer.toolsSectionDesc':
    'Инструменты, предоставляемые через сервер MCP stdio при запуске openhuman-core mcp',
  'settings.mcpServer.configSectionTitle': 'Конфигурация клиента',
  'settings.mcpServer.configSectionDesc':
    'Выберите клиент MCP для создания правильного фрагмента конфигурации.',
  'settings.mcpServer.copySnippet': 'Копировать в буфер обмена',
  'settings.mcpServer.copied': 'Скопировано!',
  'settings.mcpServer.openConfigFile': 'Открыть файл конфигурации.',
  'settings.mcpServer.binaryPathNotFound':
    'Двоичный файл OpenHuman не найден. При запуске из исходного кода выполните сборку с помощью: Cargo build --bin openhuman-core',
  'settings.mcpServer.openConfigError': 'Не удалось открыть файл конфигурации',
  'settings.mcpServer.clientClaudeDesktop': 'Claude Рабочий стол',
  'settings.mcpServer.clientCursor': 'Курсор',
  'settings.mcpServer.clientCodex': 'Кодекс',
  'settings.mcpServer.clientZed': 'Зед',
  'settings.mcpServer.configFilePath': 'Файл конфигурации',
  'settings.mcpServer.clientSelectorAriaLabel': 'MCP селектор клиента',
  'settings.appearance.menuDesc': 'Выберите светлую, темную или системную тему',
  'settings.agentAccess.title': 'Доступ агента к ОС',
  'settings.agentAccess.menuDesc':
    'Контролируйте, где агент может использовать read/write и может ли он использовать оболочку.',
  'settings.agentAccess.loadError': 'Не удалось загрузить настройки доступа.',
  'settings.agentAccess.saveError': 'Не удалось сохранить настройки доступа.',
  'settings.agentAccess.saved': 'Сохранено — применяется к следующему сообщению.',
  'settings.agentAccess.desktopOnly': 'Настройки доступа доступны только в настольном приложении.',
  'settings.agentAccess.loading': 'Загрузка…',
  'settings.agentAccess.accessMode': 'Режим доступа',
  'settings.agentAccess.tier.readonly.title': 'Только чтение',
  'settings.agentAccess.tier.readonly.desc':
    'Читает файлы и запускает команды только для чтения для изучения, но никогда не записывает, не редактирует и не запускает ничего, что меняет состояние.',
  'settings.agentAccess.tier.supervised.title': 'Спросить перед редактированием',
  'settings.agentAccess.tier.supervised.desc':
    'Свободно создает новые файлы, но запрашивает ваше одобрение перед редактированием существующего файла, запуском команды, подключением к сети или установкой чего-либо.',
  'settings.agentAccess.tier.full.title': 'Полный доступ',
  'settings.agentAccess.tier.full.desc':
    'Выполняет команды с полным доступом к вашей учетной записи пользователя — read/write может работать где угодно, кроме учетных данных и системных хранилищ. Деструктивные команды, доступ к сети и установки по-прежнему требуют одобрения.',
  'settings.agentAccess.defaultTag': '(по умолчанию)',
  'settings.agentAccess.fullWarning':
    '⚠ Полный доступ запускает команды с полным доступом к вашей учетной записи и не находится в изолированной программной среде. Включайте его только в том случае, если вы доверяете агенту эту машину. Каталоги учетных данных и системные каталоги остаются заблокированными, а деструктивные, сетевые действия и действия по установке по-прежнему требуют одобрения.',
  'settings.agentAccess.confine.label': 'Ограничить рабочее пространство',
  'settings.agentAccess.confine.desc':
    'Ограничьте агента каталогом рабочей области (плюс всеми предоставленными папками), независимо от выбранного режима доступа. Когда этот параметр отключен, он может получить доступ к любому месту, доступному вашему пользователю, за исключением всегда блокируемых учетных данных и системных каталогов.',
  'settings.agentAccess.requireTaskPlanApproval.label': 'Требовать утверждения плана задач',
  'settings.agentAccess.requireTaskPlanApproval.desc':
    'Сделайте паузу перед тем, как назначенный агент выполнит задание, созданное агентом.',
  'settings.agentAccess.tinyplaceAutopilot.title': 'Автономный агент tiny.place',
  'settings.agentAccess.tinyplaceAutopilot.desc':
    'Позвольте OpenHuman действовать в tiny.place самостоятельно: по расписанию он ищет стоящую работу — сначала открытые награды —, выполняет подходящее его навыкам и действует от вашего имени. Работает без присмотра и может тратить средства, поэтому при тестировании используйте devnet. По умолчанию выключено.',
  'settings.agentAccess.tinyplaceAutopilot.label': 'Запускать автоматически',
  'settings.agentAccess.timeout.label': 'Тайм-аут действия',
  'settings.agentAccess.timeout.desc':
    'Сколько времени может выполняться отдельный инструмент или действие до отмены. Увеличьте это значение, если крупная локальная модель прерывается до завершения ответа.',
  'settings.agentAccess.timeout.unit': 'секунды',
  'settings.agentAccess.timeout.invalid':
    'Введите целое число секунд в пределах допустимого диапазона',
  'settings.agentAccess.timeout.envOverride':
    'Переменная окружения OPENHUMAN_TOOL_TIMEOUT_SECS переопределяет эту настройку, поэтому изменения здесь не вступят в силу, пока она не будет сброшена.',
  'settings.agentAccess.grantedFolders': 'Предоставленные папки',
  'settings.agentAccess.alwaysAllow': 'Всегда разрешенные инструменты',
  'settings.agentAccess.alwaysAllowDesc':
    'Инструменты, которые вы отметили в чате как «Всегда разрешать», запускаются без запроса. Удалите один, чтобы запрос появился снова.',
  'settings.agentAccess.alwaysAllowNone': 'Всегда разрешенных инструментов пока нет.',
  'settings.agentAccess.grantedDesc':
    'Папки, которые агент может читать и записывать, помимо рабочей области. Хранилища учетных данных (~/.ssh, ~/.gnupg, ~/.aws, цепочки для ключей) и системные каталоги (/etc, /System, C:\\Windows,…) всегда блокируются, даже внутри предоставленной папки.',
  'settings.agentAccess.noneGranted': 'Папки не предоставлены.',
  'settings.agentAccess.readWrite': 'читать + писать',
  'settings.agentAccess.readOnly': 'read-only',
  'settings.agentAccess.remove': 'Удалять',
  'settings.agentAccess.pathPlaceholder': 'Абсолютный путь к папке',
  'settings.agentAccess.accessLevelLabel': 'Уровень доступа',
  'settings.agentAccess.add': 'Добавлять',
  'settings.agentAccess.saving': 'Сохранение…',
  'settings.agentAccess.changesApply': 'Изменения вступят в силу в следующем сообщении.',
  'settings.agentAccess.directories': 'Каталоги',
  'settings.agentAccess.actionSandbox': 'Песочница действий',
  'settings.agentAccess.readWriteAccess': 'чтение + запись',
  'settings.agentAccess.actionSandboxDesc':
    'Рабочий каталог по умолчанию для инструментов оболочки, файлов и git.',
  'settings.agentAccess.actionDir.edit': 'Изменить',
  'settings.agentAccess.actionDir.save': 'Сохранить',
  'settings.agentAccess.actionDir.cancel': 'Отмена',
  'settings.agentAccess.actionDir.placeholder': 'Абсолютный путь, напр. /Users/you/Projects',
  'settings.agentAccess.actionDir.envLocked':
    'Задано переменной OPENHUMAN_ACTION_DIR. Измените переменную окружения, чтобы переопределить.',
  'settings.agentAccess.actionDir.saved': 'Каталог действий обновлён.',
  'settings.agentAccess.internalState': 'Внутреннее состояние',
  'settings.agentAccess.agentBlocked': 'заблокировано для агента',
  'settings.agentAccess.internalStateDesc':
    'Базы данных памяти, сеансы, токены и другие основные данные. Недоступно для инструментов агента.',
  'settings.agentAccess.actionDirInputLabel': 'Путь к песочнице действий',
  'settings.agentAccess.actionDirSave': 'Сохранить',
  'settings.agentAccess.actionDirSaving': 'Сохранение…',
  'settings.agentAccess.actionDirSaved': 'Песочница действий обновлена.',
  'settings.agentAccess.actionDirEmptyError': 'Путь не может быть пустым.',
  'settings.agentAccess.actionDirSaveError': 'Не удалось обновить песочницу действий.',
  'settings.agentAccess.actionDirEnvOverrideError':
    'OPENHUMAN_ACTION_DIR установлена — снимите переменную окружения, чтобы изменить это в Настройках.',
  'settings.agentAccess.actionDirEnvOverrideNote':
    'Переопределено OPENHUMAN_ACTION_DIR — снимите переменную окружения, чтобы управлять этим в Настройках.',
  'settings.agentAccess.approvalHistory': 'История одобрений',
  'settings.agentAccess.approvalHistoryDesc':
    'Просмотр прошлых решений Одобрить / Отклонить, запрошенных агентом.',
  'settings.agentAccess.viewApprovalHistory': 'Просмотреть историю утверждений',

  // ── Панель разрешений ─────────────────────────────────────────────
  'settings.permissions.title': 'Разрешения',
  'settings.permissions.menuDesc':
    'Выберите, что может делать ваш помощник и где он может работать.',
  'settings.permissions.accessMode': 'Что может делать помощник?',
  'settings.permissions.accessModeDesc':
    'Выберите, насколько свободен помощник при выполнении действий на вашем компьютере.',
  'settings.permissions.preset.readonly.title': 'Смотреть, не трогать',
  'settings.permissions.preset.readonly.desc':
    'Помощник может читать файлы и исследовать систему — но никогда не пишет, не редактирует и не запускает ничего, что изменяет состояние.',
  'settings.permissions.preset.supervised.title': 'Сначала спросить',
  'settings.permissions.preset.supervised.desc':
    'Может свободно создавать новые файлы, но всегда запрашивает ваше одобрение перед редактированием, выполнением команд или доступом к сети.',
  'settings.permissions.preset.full.title': 'Полный контроль',
  'settings.permissions.preset.full.desc':
    'Работает с полным доступом к вашей учётной записи. Деструктивные команды, доступ к сети и установка всё равно требуют одобрения.',
  'settings.permissions.folders': 'Где он может работать?',
  'settings.permissions.foldersDesc':
    'Папка по умолчанию, которую помощник читает и в которую пишет. В расширенных настройках можно добавить другие папки.',

  'settings.meetings.title': 'Встречи',
  'settings.meetings.menuDesc': 'Автоподключение, сводки и расшифровки Ассистента встреч',
  'settings.meetings.desktopOnly': 'Настройки встреч доступны только на компьютере.',
  'settings.meetings.loading': 'Загрузка…',
  'settings.meetings.loadError': 'Не удалось загрузить настройки встреч.',
  'settings.meetings.saveError': 'Не удалось сохранить настройки встреч.',
  'settings.meetings.saved': 'Сохранено',
  'settings.meetings.saving': 'Сохранение…',
  'settings.meetings.autoJoin.title': 'Политика автоподключения',
  'settings.meetings.autoJoin.desc': 'Когда в событии календаря есть ссылка Google Meet',
  'settings.meetings.autoJoin.askEachTime': 'Спрашивать каждый раз',
  'settings.meetings.autoJoin.always': 'Всегда подключаться',
  'settings.meetings.autoJoin.never': 'Никогда не подключаться',
  'settings.meetings.autoSummarize.title': 'Сводка после звонка',
  'settings.meetings.autoSummarize.desc': 'Создавать сводку после завершения звонка',
  'settings.meetings.autoSummarize.ask': 'Спрашивать после звонка',
  'settings.meetings.autoSummarize.always': 'Всегда создавать сводку',
  'settings.meetings.autoSummarize.never': 'Никогда не создавать сводку',
  'settings.meetings.listenOnly': 'Режим только прослушивания',
  'settings.meetings.listenOnlyDesc': 'Подключаться с выключенным микрофоном',
  'settings.meetings.ingestTranscripts': 'Импортировать расшифровки бэкенда',
  'settings.meetings.ingestTranscriptsDesc': 'Хранить расшифровки встреч в памяти',
  'settings.sandbox.title': 'Выполнение в песочнице',
  'settings.sandbox.menuDesc': 'Настройте бэкенды песочницы для изоляции инструментов агента.',
  'settings.sandbox.loading': 'Загрузка…',
  'settings.sandbox.desktopOnly': 'Настройки песочницы доступны только в десктопном приложении.',
  'settings.sandbox.loadError': 'Не удалось загрузить настройки песочницы.',
  'settings.sandbox.saveError': 'Не удалось сохранить настройки песочницы.',
  'settings.sandbox.saved': 'Сохранено — применяется к новым сессиям агента.',
  'settings.sandbox.saving': 'Сохранение…',
  'settings.sandbox.status': 'Статус',
  'settings.sandbox.dockerStatus': 'Docker',
  'settings.sandbox.available': 'Доступен',
  'settings.sandbox.unavailable': 'Недоступен',
  'settings.sandbox.detectedBackend': 'Бэкенд ОС',
  'settings.sandbox.enableLabel': 'Включить выполнение в песочнице',
  'settings.sandbox.enableDesc': 'Запускать инструменты агента в изолированной среде песочницы.',
  'settings.sandbox.backendLabel': 'Бэкенд',
  'settings.sandbox.backendDesc': 'Выберите бэкенд изоляции для выполнения в песочнице.',
  'settings.sandbox.backend.auto': 'Автоматически (определить лучший доступный)',
  'settings.sandbox.backend.docker': 'Docker',
  'settings.sandbox.backend.landlock': 'Landlock (Linux)',
  'settings.sandbox.backend.firejail': 'Firejail (Linux)',
  'settings.sandbox.backend.bubblewrap': 'Bubblewrap (Linux)',
  'settings.sandbox.backend.none': 'Нет (без песочницы)',
  'settings.sandbox.dockerSettings': 'Настройки Docker',
  'settings.sandbox.dockerImage': 'Образ',
  'settings.sandbox.dockerImagePlaceholder': 'alpine:3.20',
  'settings.sandbox.memoryLimit': 'Ограничение памяти',
  'settings.sandbox.memoryUnit': 'MB',
  'settings.sandbox.cpuLimit': 'Ограничение CPU',
  'settings.sandbox.cpuUnit': 'ядра',
  'settings.sandbox.envPassthrough': 'Проброс переменных окружения',
  'settings.sandbox.envPassthroughDesc': 'Переменные окружения, передаваемые в песочницу.',
  'settings.sandbox.noEnvVars': 'Переменные окружения не настроены.',
  'settings.approvalHistory.title': 'История одобрений',
  'settings.approvalHistory.subtitle':
    'Последние решения об одобрении инструментов, новейшие первыми.',
  'settings.approvalHistory.refresh': 'Обновить',
  'settings.approvalHistory.loading': 'Загрузка истории одобрений…',
  'settings.approvalHistory.retry': 'Повторить',
  'settings.approvalHistory.emptyState': 'Решения об одобрении ещё не записаны.',
  'settings.approvalHistory.errorGeneric':
    'Не удалось загрузить историю одобрений. Попробуйте снова.',
  'settings.approvalHistory.decidedAt': 'Решено {date}',
  'settings.approvalHistory.decision.approveOnce': 'Одобрено однократно',
  'settings.approvalHistory.decision.approveAlways': 'Всегда разрешено',
  'settings.approvalHistory.decision.deny': 'Denied',
  'settings.theme.variantLight': 'Светлая',
  'settings.theme.variantDark': 'Тёмная',
  'settings.theme.variantAuto': 'Авто',
  'settings.theme.variantAria': 'Вариант темы',
  'settings.theme.backdropHeading': 'Фон',
  'settings.theme.backdrop.mesh': 'Сетка',
  'settings.theme.backdrop.solid': 'Сплошной',
  'settings.theme.backdrop.image': 'Изображение',
  'settings.theme.backdropImageUrl': 'URL фонового изображения',
  'settings.theme.backdropDots': 'Показывать точки фона',
  'settings.theme.backdropHint':
    'Сетка показывает анимированный градиент; Сплошной использует ровный фон; Изображение задаёт ваш собственный.',
  'settings.theme.autoForkHint':
    'При редактировании пресета изменения автоматически сохраняются как новая пользовательская тема.',
  'settings.theme.title': 'Студия тем',
  'settings.theme.menuDesc': 'Полностью настройте цвета и шрифты или выберите готовую тему.',
  'settings.theme.presetsHeading': 'Темы',
  'settings.theme.builtInBadge': 'Готовая',
  'settings.theme.customBadge': 'Своя',
  'settings.theme.customizeHint':
    'Встроенные готовые темы доступны только для чтения. Создайте копию этой темы, чтобы изменить её цвета и шрифты.',
  'settings.theme.duplicate': 'Дублировать и настроить',
  'settings.theme.copyName': '{name} (своя)',
  'settings.theme.importedName': 'Импортированная тема',
  'settings.theme.contrastWarn':
    'Низкая контрастность между текстом и фоном — эту тему может быть трудно читать.',
  'settings.theme.group.surfaces': 'Поверхности',
  'settings.theme.group.text': 'Текст',
  'settings.theme.group.borders': 'Границы',
  'settings.theme.group.accents': 'Акцентные цвета',
  'settings.theme.showShades': 'Показать все оттенки акцента',
  'settings.theme.hideShades': 'Скрыть все оттенки акцента',
  'settings.theme.fontsHeading': 'Шрифты',
  'settings.theme.fontRole.title': 'Заголовок',
  'settings.theme.fontRole.heading': 'Подзаголовок',
  'settings.theme.fontRole.body': 'Основной текст',
  'settings.theme.fontRole.mono': 'Моноширинный',
  'settings.theme.fontRole.serif': 'С засечками',
  'settings.theme.fontCurrent': 'Текущий',
  'settings.theme.actions': 'Управление темой',
  'settings.theme.reset': 'Сбросить переопределения',
  'settings.theme.delete': 'Удалить тему',
  'settings.theme.export': 'Копировать JSON',
  'settings.theme.copied': 'Скопировано!',
  'settings.theme.import': 'Импортировать тему',
  'settings.theme.importHint':
    'Вставьте экспортированный JSON темы, чтобы добавить её как свою тему.',
  'settings.theme.importApply': 'Импортировать',
  'settings.theme.importError': 'Не удалось разобрать этот JSON темы.',
  'settings.appearance.title': 'Внешний вид',
  'settings.appearance.themeHeading': 'Тема',
  'settings.appearance.themeAria': 'Тема',
  'settings.appearance.modeLight': 'Светлая',
  'settings.appearance.modeLightDesc': 'Яркие поверхности, темный текст.',
  'settings.appearance.modeDark': 'Темный',
  'settings.appearance.modeDarkDesc':
    'Тусклые поверхности, меньше раздражают глаза после наступления сумерек.',
  'settings.appearance.modeSystem': 'Система соответствия',
  'settings.appearance.modeSystemDesc': 'Следуйте настройкам внешнего вида вашей ОС.',
  'settings.appearance.helperText':
    'Темный режим переключает все приложение — чат, настройки, панели — на тусклую палитру. «Система сопоставления» следит за внешним видом вашей ОС и обновляет ее в реальном времени.',
  'settings.appearance.fontSizeHeading': 'Размер шрифта',
  'settings.appearance.fontSizeAria': 'Размер шрифта',
  'settings.appearance.fontSizeSmall': 'Маленький',
  'settings.appearance.fontSizeSmallDesc': 'Компактный текст — больше на экране.',
  'settings.appearance.fontSizeMedium': 'Средний',
  'settings.appearance.fontSizeMediumDesc': 'Стандартный сбалансированный размер.',
  'settings.appearance.fontSizeLarge': 'Большой',
  'settings.appearance.fontSizeLargeDesc': 'Более крупный текст для удобного чтения.',
  'settings.appearance.fontSizeXLarge': 'Очень большой',
  'settings.appearance.fontSizeXLargeDesc': 'Самый крупный текст для максимальной читаемости.',
  'settings.appearance.fontSizeHelperText':
    'Масштабирует текст во всём приложении — чат, настройки и панели — независимо от системных настроек шрифта.',
  'settings.appearance.tabBarHeading': 'Нижняя панель вкладок',
  'settings.appearance.tabBarAlwaysShowLabels': 'Всегда показывать метки',
  'settings.appearance.tabBarAlwaysShowLabelsDesc':
    'Если этот параметр отключен, метки отображаются только при наведении курсора мыши или на активной вкладке.',
  'settings.appearance.chatHeading': 'Чат',
  'settings.appearance.assistantTextMode': 'Ответы ассистента текстом',
  'settings.appearance.hideAgentInsights': 'Скрыть размышления агента',
  'settings.appearance.hideAgentInsightsDesc':
    'Сворачивает пошаговую ленту действий агента в чате. Мигающая ссылка «Обработка» по-прежнему позволяет открыть весь процесс.',
  'settings.appearance.assistantTextModeDesc':
    'Показывает ответы ассистента как текст без рамки, оставляя ваши сообщения в пузырьках.',
  'settings.mascot.active': 'Активно',
  'settings.mascot.characterDesc': 'Описание персонажа',
  'settings.mascot.characterDraft': 'Черновик',
  'settings.mascot.characterHeading': 'Персонаж',
  'settings.mascot.customGifError':
    'Введите HTTPS .gif URL, петлевой путь HTTP .gif URL, file:// .gif URL или локальный путь .gif.',
  'settings.mascot.customGifHeading': 'Пользовательский аватар GIF',
  'settings.mascot.customGifLabel': 'Пользовательский аватар GIF URL',
  'settings.mascot.customGifPlaceholder': 'https://example.com/avatar.gif',
  'settings.mascot.characterPreview': 'Предварительный просмотр',
  'settings.mascot.characterStates': 'содержит',
  'settings.mascot.characterVisemes': 'виземы',
  'settings.mascot.colorAria': 'OpenHuman цвет',
  'settings.mascot.colorDesc': 'Описание цвета',
  'settings.mascot.colorHeading': 'Цвет',
  'settings.mascot.colorBlack': 'Черный',
  'settings.mascot.colorBurgundy': 'Бордовый',
  'settings.mascot.colorCustom': 'Обычай',
  'settings.mascot.colorNavy': 'Темно-синий',
  'settings.mascot.primaryColor': 'Основной цвет',
  'settings.mascot.secondaryColor': 'Вторичный цвет',
  'settings.mascot.colorYellow': 'Желтый',
  'settings.mascot.libraryUnavailable': 'OpenHuman библиотека недоступна',
  'settings.mascot.title': 'OpenHuman',
  'settings.mascot.loadingLibrary': 'Загрузка библиотеки OpenHuman…',
  'settings.mascot.loadDetailError': 'Не удалось загрузить талисман.',
  'settings.mascot.loadLibraryError': 'Не удалось загрузить библиотеку талисманов.',
  'settings.mascot.localDefault': 'Локальный OpenHuman (по умолчанию)',
  'settings.mascot.menuTitle': 'Маскот',
  'settings.mascot.menuDesc': 'Выберите цвет маскота, используемый во всем приложении',
  'settings.mascot.noCharacters': 'Персонажи OpenHuman пока недоступны',
  'settings.mascot.noColorVariants': 'Нет цветовых вариантов',
  'settings.mascot.voice.current': 'текущий',
  'settings.mascot.voice.customDesc':
    'Идентификаторы голосов можно найти на api.elevenlabs.io/v1/voices или в вашей панели ElevenLabs. Сохраняется только идентификатор — ваш API-ключ остаётся на бэкенде.',
  'settings.mascot.voice.customHeading': 'Пользовательский идентификатор голоса',
  'settings.mascot.voice.customOption': 'Другое (вставить идентификатор голоса)…',
  'settings.mascot.voice.customPlaceholder': 'например. 21m00Tcm4TlvDq8ikWAM',
  'settings.mascot.voice.desc':
    'Выберите голос ElevenLabs, который маскот использует для устных ответов. Фильтруйте по полу, выбирайте из подобранного списка, вставьте свой идентификатор или позвольте приложению выбрать голос, соответствующий языку интерфейса.',
  'settings.mascot.voice.genderFemale': 'Женский',
  'settings.mascot.voice.genderHeading': 'Пол голоса',
  'settings.mascot.voice.genderMale': 'Мужской',
  'settings.mascot.voice.heading': 'Голос',
  'settings.mascot.voice.preset': 'Предустановка голоса',
  'settings.mascot.voice.presetHeading': 'Предустановка голоса',
  'settings.mascot.voice.preview': 'Предпросмотр голоса',
  'settings.mascot.voice.previewError': 'Не удалось воспроизвести предпросмотр голоса',
  'settings.mascot.voice.previewText':
    'Привет, я твой помощник. Это голосовой предварительный просмотр.',
  'settings.mascot.voice.previewing': 'Воспроизведение предпросмотра…',
  'settings.mascot.voice.reset': 'Сбросить к значениям по умолчанию',
  'settings.mascot.voice.useLocaleDefault': 'Соответствовать языку приложения',
  'settings.mascot.voice.useLocaleDefaultDesc':
    'Автоматически выбрать голос для текущего языка интерфейса.',
  'settings.persona.title': 'Персона',
  'settings.persona.menuTitle': 'Персона',
  'settings.persona.menuDesc': 'Имя, личность, аватар и голос — ваш помощник как одна личность',
  'settings.persona.identityHeading': 'Личность',
  'settings.persona.identityDesc':
    'Отображаемое имя и краткое описание вашего помощника. Отображается в приложении; не меняет того, как рассуждает помощник.',
  'settings.persona.displayNameLabel': 'Отображаемое имя',
  'settings.persona.displayNamePlaceholder': 'например Новая звезда',
  'settings.persona.descriptionLabel': 'Описание',
  'settings.persona.descriptionPlaceholder':
    'например Спокойный, лаконичный помощник для моей команды.',
  'settings.persona.soul.heading': 'Личность (SOUL.md)',
  'settings.persona.soul.desc':
    'Личностные подсказки помощника следует в каждом разговоре. Изменения сохраняются в вашем рабочем пространстве и вступают в силу при следующем ответе.',
  'settings.persona.soul.editorLabel': 'Содержимое SOUL.md',
  'settings.persona.soul.reset': 'Сбросить настройки по умолчанию',
  'settings.persona.soul.usingDefault': 'Использование встроенного по умолчанию',
  'settings.persona.soul.loadError': 'Не удалось загрузить SOUL.md.',
  'settings.persona.soul.saveError': 'Не удалось сохранить SOUL.md.',
  'settings.persona.soul.resetError': 'Не удалось сбросить SOUL.md.',
  'settings.persona.appearanceHeading': 'Аватар и голос',
  'settings.persona.appearanceDesc':
    'Цвет талисмана, пользовательский аватар GIF и голос ответа настраиваются в настройках талисмана.',
  'settings.persona.openMascotSettings': 'Открыть настройки талисмана',
  'settings.memoryWindow.balanced.badge': 'Рекомендуется',
  'settings.memoryWindow.balanced.hint':
    'Разумное значение по умолчанию — хорошая непрерывность без лишних трат токенов на каждом запуске.',
  'settings.memoryWindow.balanced.label': 'Сбалансированный',
  'settings.memoryWindow.description':
    'Сколько запомненного контекста OpenHuman добавляет в каждый новый запуск агента. Более широкие окна дают ощущение лучшей памяти о прошлых разговорах, но используют больше токенов — и стоят дороже — на каждом запуске.',
  'settings.memoryWindow.extended.badge': 'Больше контекста',
  'settings.memoryWindow.extended.hint':
    'Больше долгосрочной памяти на каждый запуск. Выше расход токенов за ход.',
  'settings.memoryWindow.extended.label': 'Расширенный',
  'settings.memoryWindow.maximum.badge': 'Самый дорогой',
  'settings.memoryWindow.maximum.hint':
    'Самое большое безопасное окно. Лучшая непрерывность, заметно выше расход токенов на каждом запуске.',
  'settings.memoryWindow.maximum.label': 'Максимум',
  'settings.memoryWindow.minimal.badge': 'Самый дешёвый',
  'settings.memoryWindow.minimal.hint':
    'Самое маленькое окно памяти. Дешевле, быстрее, минимальная непрерывность между запусками.',
  'settings.memoryWindow.minimal.label': 'Минимальный',
  'settings.memoryWindow.title': 'Окно долгосрочной памяти',
  'settings.agentbox.title': 'AgentBox',
  'settings.agentbox.desc': 'Состояние адаптера маркетплейса GMI Cloud и настройка поставщика',
  'settings.agentbox.intro':
    'Состояние адаптера маркетплейса AgentBox только для чтения. Режим и поставщик GMI MaaS задаются переменными окружения при запуске ядра.',
  'settings.agentbox.modeLabel': 'Режим маркетплейса',
  'settings.agentbox.providerHeading': 'Поставщик GMI MaaS',
  'settings.agentbox.slug': 'Идентификатор поставщика',
  'settings.agentbox.baseUrl': 'Базовый URL',
  'settings.agentbox.model': 'Модель',
  'settings.agentbox.notConfigured':
    'Не настроено. Задайте переменные окружения GMI_MAAS_BASE_URL, GMI_MAAS_API_KEY и GMI_MODELS.',
  'settings.agentbox.unavailable': 'Состояние AgentBox недоступно',
  'settings.modelHealth.title': 'Модель здоровья',
  'settings.modelHealth.desc':
    'Качество каждой модели, уровень галлюцинаций и сравнение стоимости активных моделей.',
  'settings.modelHealth.allStatuses': 'Все статусы',
  'settings.modelHealth.models': 'models',
  'settings.modelHealth.loading': 'Загрузка данных модели...',
  'settings.modelHealth.empty': 'Ни одна модель не зарегистрирована',
  'settings.modelHealth.col.model': 'Модель',
  'settings.modelHealth.col.quality': 'Качество',
  'settings.modelHealth.col.halluc': 'Халлюк. Ставка',
  'settings.modelHealth.col.cost': 'Стоимость / выход 1 миллион',
  'settings.modelHealth.col.agents': 'Агенты',
  'settings.modelHealth.col.status': 'Статус',
  'settings.modelHealth.badge.keep': 'Держать',
  'settings.modelHealth.badge.replace': 'Заменять',
  'settings.modelHealth.badge.staging': 'Постановочный тест',
  'settings.modelHealth.badge.vision': 'Только видение',
  'settings.modelHealth.swap': 'Менять?',
  'settings.modelHealth.modal.title': 'Заменить модель?',
  'settings.modelHealth.modal.hallucRate': 'Частота галлюцинаций',
  'settings.modelHealth.modal.cancel': 'Отмена',
  'settings.modelHealth.modal.apply': 'Применить замену',
  'settings.modelHealth.tag.cheaper': 'CHEAPER',
  'settings.modelHealth.tag.better': 'BETTER',
  'settings.desktopAgent.title': 'Агент рабочего стола',
  'settings.desktopAgent.description':
    'Проверьте и предоставьте разрешения, необходимые агенту рабочего стола.',
  'settings.desktopAgent.microphone': 'Микрофон',
  'settings.desktopAgent.grant': 'Предоставить',
  'settings.desktopAgent.notRequiredOnOs': 'Не требуется в этой операционной системе',
  'settings.desktopAgent.allGranted':
    'Всё готово — у агента рабочего стола есть все необходимые разрешения.',
  'settings.desktopAgent.recheck': 'Проверить снова',
  'settings.desktopAgent.restartAndRecheck': 'Перезапустить ядро и проверить снова',
  'settings.desktopAgent.seamless.title': 'Действия агента',
  'settings.desktopAgent.seamless.label': 'Разрешить агенту действовать без запроса',
  'settings.desktopAgent.seamless.description':
    'Предоставьте полный доступ и автоматически одобряйте действия на рабочем столе (открытие приложений, управление их интерфейсами), чтобы агент выполнял их без запроса на подтверждение.',
  'settings.desktopAgent.seamless.note':
    'Запрос пропускают только действия на рабочем столе — выполнение команд оболочки, редактирование файлов, сетевые запросы и установка программ по-прежнему запрашивают подтверждение. Отключение этой опции прекращает автоматическое одобрение действий на рабочем столе, но уровень доступа остаётся прежним.',
  'settings.desktopAgent.beta':
    'Бета — агент рабочего стола является экспериментальным и может не всегда работать как ожидается.',
  'settings.desktopAgent.wakeWordHint':
    'Скажите «Hey Tiny» перед командой, чтобы разбудить агента.',
  'settings.screenIntel.permissions.accessibility': 'Доступность',
  'settings.screenIntel.permissions.grantHint': 'Подсказка по предоставлению',
  'settings.screenIntel.permissions.inputMonitoring': 'Мониторинг ввода',
  'settings.screenIntel.permissions.macosAppliesPrivacy': 'macOS применяет конфиденциальность',
  'settings.screenIntel.permissions.openInputMonitoring': 'Запрос…',
  'settings.screenIntel.permissions.refreshStatus': 'Обновление…',
  'settings.screenIntel.permissions.refreshing': 'Обновление…',
  'settings.screenIntel.permissions.requestAccessibility': 'Запрос…',
  'settings.screenIntel.permissions.requestScreenRecording': 'Запрос…',
  'settings.screenIntel.permissions.requesting': 'Запрос…',
  'settings.screenIntel.permissions.restartRefresh': 'Перезапуск ядра…',
  'settings.screenIntel.permissions.restartingCore': 'Перезапуск ядра…',
  'settings.screenIntel.permissions.screenRecording': 'Запись экрана',
  'settings.screenIntel.permissions.title': 'Разрешения',
  'skills.card.moreActions': 'Ещё действия',
  'skills.channelIcon.discord': 'Discord',
  'skills.channelIcon.imessage': 'iMessage',
  'skills.channelIcon.telegram': 'Telegram',
  'skills.channelIcon.web': 'Интернет',
  'skills.channelIcon.yuanbao': 'Yuanbao',
  'skills.composio.poweredBy': 'Работает на Composio',
  'skills.composio.staleStatusTitle': 'Соединения показывают устаревший статус',
  'skills.create.allowedTools': 'Разрешённые инструменты',
  'skills.create.allowedToolsHelp': 'Отображается в SKILL.md как',
  'skills.create.allowedToolsPlaceholder': 'node_exec, fetch',
  'skills.create.author': 'Автор',
  'skills.create.authorPlaceholder': 'Твоё имя',
  'skills.create.commaSeparated': '(через запятую)',
  'skills.create.createBtn': 'Создать навык',
  'skills.create.createError': 'Не удалось создать навык',
  'skills.create.creating': 'Создание…',
  'skills.create.description': 'Описание',
  'skills.create.descriptionPlaceholder': 'Что делает этот навык?',
  'skills.create.optional': '(необязательно)',
  'skills.create.inputs.heading': 'Inputs',
  'skills.create.inputs.help':
    'Объявите параметры, необходимые навыку. Skills Runner сформирует форму для них во время выполнения.',
  'skills.create.inputs.add': 'Добавить входной параметр',
  'skills.create.inputs.row.name': 'Имя входного параметра',
  'skills.create.inputs.row.namePlaceholder': 'например, repo',
  'skills.create.inputs.row.nameError':
    'Только буквы, цифры, подчёркивания и дефисы; должно начинаться с буквы.',
  'skills.create.inputs.row.description': 'Описание входного параметра',
  'skills.create.inputs.row.descriptionPlaceholder': 'Что вводится в это поле?',
  'skills.create.inputs.row.type': 'Type',
  'skills.create.inputs.row.required': 'Required',
  'skills.create.inputs.row.remove': 'Удалить входной параметр',
  'skills.create.inputs.type.string': 'Text',
  'skills.create.inputs.type.integer': 'Number',
  'skills.create.inputs.type.boolean': 'Да / Нет',
  'skills.create.license': 'Лицензия',
  'skills.create.licensePlaceholder': 'MIT',
  'skills.create.name': 'Название',
  'skills.create.namePlaceholder': 'напр. Trade Journal',
  'skills.create.scope': 'Область',
  'skills.create.scopeProjectHint': '/.openhuman/skills/',
  'skills.create.scopeUserHint':
    'Записывается в ~/.openhuman/skills/<slug>/SKILL.md — доступно во всех рабочих пространствах.',
  'skills.create.slugLabel': 'Slug',
  'skills.create.subtitle': 'SKILL.md',
  'skills.create.tags': 'Теги',
  'skills.create.tagsPlaceholder': 'торговля, исследование',
  'skills.create.title': 'Новый навык',
  'skills.detail.allowedTools': 'Разрешённые инструменты',
  'skills.detail.author': 'Автор',
  'skills.detail.license': 'Лицензия',
  'skills.detail.bundledResources': 'Встроенные ресурсы',
  'skills.detail.description': 'Описание',
  'skills.detail.closeAriaLabel': 'Закрыть детали навыка',
  'skills.detail.location': 'Расположение',
  'skills.detail.noBundledResources': 'Встроенных ресурсов нет.',
  'skills.detail.platforms': 'Платформы',
  'skills.detail.relatedSkills': 'Связанные навыки',
  'skills.detail.source': 'URL источника',
  'skills.detail.sourceFormat': 'Формат',
  'skills.detail.stars': 'Звёзды',
  'skills.detail.tags': 'Теги',
  'skills.detail.warnings': 'Предупреждения',
  'skills.detail.version': 'Версия',
  'skills.install.errors.alreadyInstalledHint':
    'Навык работы с этим пулеметом уже существует в рабочей области. Сначала удалите его или измените заголовок `metadata.id`/`name`.',
  'skills.install.errors.alreadyInstalledTitle': 'Навык уже установлен.',
  'skills.install.errors.fetchFailedHint':
    'Запрос не выполнен успешно. Проверьте, что URL указывает на доступный общедоступный файл и что хост вернул ответ 2xx.',
  'skills.install.errors.fetchFailedTitle': 'Ошибка получения.',
  'skills.install.errors.fetchTimedOutHint':
    'Удаленный хост не ответил вовремя. Попробуйте еще раз или увеличьте таймаут (1–600 с).',
  'skills.install.errors.fetchTimedOutTitle': 'Время ожидания получения истекло',
  'skills.install.errors.fetchTooLargeHint':
    'Размер файла SKILL.md не должен превышать 1 МБ. Разделите связанные ресурсы на файлы `references/` или `scripts/` вместо их встраивания.',
  'skills.install.errors.fetchTooLargeTitle': 'SKILL.md слишком велик.',
  'skills.install.errors.genericHint':
    'Серверная часть вернула ошибку. Необработанное сообщение показано ниже.',
  'skills.install.errors.genericTitle': 'Не удалось установить навык.',
  'skills.install.errors.invalidSkillHint':
    'Вводный заголовок должен быть допустимым YAML с непустыми полями `name` и `description`, заканчивающимися `---`.',
  'skills.install.errors.invalidSkillTitle': 'SKILL.md не анализировал',
  'skills.install.errors.invalidUrlHint':
    'Разрешены только общедоступные HTTPS URL. Частные узлы, узлы обратной связи и узлы метаданных блокируются.',
  'skills.install.errors.invalidUrlTitle': 'URL отклонено',
  'skills.install.errors.unsupportedUrlHint':
    'Работают только прямые ссылки `.md`. Для GitHub ссылка на файл (github.com/owner/repo/blob/.../SKILL.md) — корни дерева и репо не установлены.',
  'skills.install.errors.unsupportedUrlTitle': 'Форма URL не поддерживается.',
  'skills.install.errors.writeFailedHint':
    'Каталог навыков рабочей области не был доступен для записи. Проверьте разрешения файловой системы для `<workspace>/.openhuman/skills/`.',
  'skills.install.errors.writeFailedTitle': 'Не удалось записать SKILL.md.',
  'skills.install.fetchLog': 'Получить лог',
  'skills.install.fetchingPrefix': 'Получение',
  'skills.install.fetchingSuffix': 'может занять заданное вами время ожидания.',
  'skills.install.installBtn': 'Установка…',
  'skills.install.installComplete': 'Установка завершена',
  'skills.install.installing': 'Установка…',
  'skills.install.parseWarnings': 'Предупреждения парсинга',
  'skills.install.rawError': 'Необработанная ошибка',
  'skills.install.subtitleMiddle': 'поверх HTTPS и устанавливает его в',
  'skills.install.subtitlePrefix': 'Выбирает только один',
  'skills.install.subtitleSuffix': 'HTTPS; частные хосты и хосты обратной связи заблокированы.',
  'skills.install.successDiscovered': 'Обнаружил {count} новых навыков.',
  'skills.install.successNoNewIds':
    'Навык установлен, но новые идентификаторы навыков не появились — возможно, в каталоге уже есть навык с таким же ярлыком.',
  'skills.install.timeoutHint': '(секунды, необязательно)',
  'skills.install.timeoutHelp':
    'По умолчанию — 60 секунд. Значения за пределами 1–600 фиксируются на стороне сервера.',
  'skills.install.timeoutInvalid': 'Должно быть целым числом от 1 до 600.',
  'skills.install.timeoutLabel': 'Таймаут',
  'skills.install.timeoutPlaceholder': '60',
  'skills.install.title': 'Установить навык по URL',
  'skills.install.urlHelpMiddle': 'файл.',
  'skills.install.urlHelpPrefix': 'Прямая ссылка на',
  'skills.install.urlHelpSuffix': 'URLs автоматически перезаписывается на',
  'skills.install.urlInvalidPrefix': 'URL должен быть правильно сформированным',
  'skills.install.urlInvalidSuffix': 'связь.',
  'skills.install.urlLabel': 'URL навыка',
  'skills.install.urlPlaceholder': 'https://raw.githubusercontent.com/owner/repo/main/SKILL.md',
  'skills.meetingBots.bannerDesc': 'Описание баннера',
  'skills.meetingBots.bannerTitle': 'Заголовок баннера',
  'skills.meetingBots.busyTitle': 'OpenHuman занят',
  'skills.meetingBots.comingSoon': 'Скоро',
  'skills.meetingBots.couldNotLeaveTitle': 'Не удалось покинуть встречу',
  'skills.meetingBots.couldNotStartTitle': 'Не удалось запустить OpenHuman',
  'skills.meetingBots.displayName': 'Отображаемое имя',
  'skills.meetingBots.failedToStart': 'Не удалось запустить OpenHuman.',
  'skills.meetingBots.joiningMessage': 'Он должен появиться как участник через несколько секунд.',
  'skills.meetingBots.joiningTitle': 'OpenHuman подключается к встрече',
  'skills.meetingBots.meetingLink': 'Ссылка на встречу',
  'skills.meetingBots.modalAriaLabel': 'Отправить OpenHuman на встречу',
  'skills.meetingBots.modalDesc': 'Описание окна',
  'skills.meetingBots.modalTitle': 'Отправить OpenHuman на встречу',
  'skills.meetingBots.newBadge': 'Новое',
  'skills.meetingBots.platformComingSoon': 'Поддержка {label} скоро появится.',
  'skills.meetingBots.platformHints.gmeet': 'meet.google.com/abc-defg-hij',
  'skills.meetingBots.platformHints.teams': 'Teams.microsoft.com/...',
  'skills.meetingBots.platformHints.webex': 'webex.com/meet/...',
  'skills.meetingBots.platformHints.zoom': 'Zoom.us/j/...',
  'skills.meetingBots.platforms.gmeet': 'Google Встречайте',
  'skills.meetingBots.platforms.teams': 'Microsoft Teams',
  'skills.meetingBots.platforms.webex': 'Webex',
  'skills.meetingBots.platforms.zoom': 'Zoom',
  'skills.meetingBots.sendTo': 'Отправить',
  'skills.meetingBots.serverOverloaded':
    'OpenHuman сейчас сильно загружен. Пожалуйста, повторите попытку через несколько минут.',
  'skills.meetingBots.soonSuffix': 'скоро',
  'skills.meetingBots.starting': 'Запуск…',
  'skills.meetingBots.recentCallsAriaLabel': 'Недавние звонки на встречах',
  'skills.meetingBots.recentCallsHeading': 'Недавние звонки',
  'skills.meetingBots.recentCallsEmpty': 'Предыдущих звонков нет — история встреч появится здесь.',
  'skills.meetingBots.recentCallsLoading': 'Загрузка\u2026',
  'skills.meetingBots.recentCallAddedBy': 'Добавил {name}',
  'skills.meetingBots.recentCallParticipants': 'С {names}',
  'skills.meetingBots.recentCallTurnSingular': '{count} реплика',
  'skills.meetingBots.recentCallTurnPlural': '{count} реплик',
  'skills.meetingBots.recentCallDuration': '{seconds} с в разговоре',
  'skills.meetingBots.callDetailLoading': 'Загрузка стенограммы…',
  'skills.meetingBots.callDetailError': 'Не удалось загрузить стенограмму.',
  'skills.meetingBots.callDetailRetry': 'Повторить',
  'skills.meetingBots.callDetailEmpty': 'Для этого звонка не записаны стенограмма или сводка.',
  'skills.meetingBots.callSummaryHeading': 'Сводка',
  'skills.meetingBots.callKeyPointsHeading': 'Ключевые моменты',
  'skills.meetingBots.callActionItemsHeading': 'Задачи',
  'skills.meetingBots.callTranscriptHeading': 'Стенограмма',
  'skills.meetingBots.liveBadge': 'Эфир',
  'skills.meetingBots.liveTitle': 'На встрече',
  'skills.meetingBots.liveStatusJoining': 'Подключение\u2026',
  'skills.meetingBots.liveStatusActive': 'В прямом эфире на встрече',
  'skills.meetingBots.liveStatusListening': 'Прослушивание (без звука)',
  'skills.meetingBots.liveStatusEnded': 'Встреча завершена',
  'skills.meetingBots.liveStatusError': 'Ошибка подключения',
  'skills.meetingBots.liveTranscriptHeading': 'Транскрипция в реальном времени',
  'skills.meetingBots.liveTranscriptEmpty': 'Ожидание речи…',
  'skills.meetingBots.leaveButton': 'Выйти',
  'skills.meetingBots.leavingButton': 'Выход…',
  'skills.meetingBots.respondToParticipant': 'Ваше имя на этой встрече',
  'skills.meetingBots.respondToParticipantHint': 'напр. Иван (ваше отображаемое имя в звонке)',
  'skills.meetingBots.respondToParticipantDesc':
    'Введите своё точное отображаемое имя из встречи. Бот реагирует только когда вы произносите его имя (фраза активации).',
  'skills.meetingBots.wakePhrase': 'Фраза активации',
  'skills.meetingBots.wakePhraseHint': 'Hey OpenHuman',
  'skills.meetingBots.wakePhraseDesc': 'Участник должен произнести это, прежде чем бот ответит.',
  'skills.meetingBots.activeMode': 'Отвечать, когда я обращаюсь',
  'skills.meetingBots.activeModeDesc':
    'Когда включено, бот отвечает вслух после того, как вы произнесёте фразу-обращение. Когда выключено, он только слушает и расшифровывает.',
  'skills.meetingBots.history.allPlatforms': 'Все платформы',
  'skills.meetingBots.history.copyTranscript': 'Копировать',
  'skills.meetingBots.history.downloadTranscript': 'Скачать',
  'skills.meetingBots.history.earlier': 'Ранее',
  'skills.meetingBots.history.participantCount': '{count} участник',
  'skills.meetingBots.history.participantCountPlural': '{count} участников',
  'skills.meetingBots.history.runWithOpenHuman': 'Запустить с OpenHuman',
  'skills.meetingBots.history.searchPlaceholder': 'Поиск звонков…',
  'skills.meetingBots.history.selectPrompt': 'Выберите звонок для просмотра сводки и транскрипта.',
  'skills.meetingBots.history.today': 'Сегодня',
  'skills.meetingBots.history.yesterday': 'Вчера',
  'skills.meetingBots.upcoming.heading': 'Предстоящие',
  'skills.meetingBots.upcoming.when': 'Когда',
  'skills.meetingBots.upcoming.meeting': 'Встреча',
  'skills.meetingBots.upcoming.platform': 'Платформа',
  'skills.meetingBots.upcoming.people': 'Люди',
  'skills.meetingBots.upcoming.joinPolicy': 'Политика входа',
  'skills.meetingBots.upcoming.joinNow': 'Войти сейчас',
  'skills.meetingBots.upcoming.joinNowAriaLabel': 'Войти в {title}',
  'skills.meetingBots.upcoming.join': 'Войти',
  'skills.meetingBots.upcoming.auto': 'Авто',
  'skills.meetingBots.upcoming.ask': 'Спросить',
  'skills.meetingBots.upcoming.skip': 'Пропустить',
  'skills.meetingBots.upcoming.today': 'Сегодня',
  'skills.meetingBots.upcoming.tomorrow': 'Завтра',
  'skills.meetingBots.upcoming.empty':
    'Нет предстоящих встреч — подключите Google Calendar, чтобы увидеть их здесь.',
  'skills.meetingBots.upcoming.error': 'Не удалось загрузить предстоящие встречи.',
  'skills.meetingBots.upcoming.retry': 'Повторить',
  'skills.meetingBots.upcoming.refresh': 'Обновить',
  'skills.meetingBots.upcoming.filterAll': 'Все платформы',
  'skills.meetingBots.upcoming.participants': '{count} участников',
  'skills.meetingBots.upcoming.imminent': 'Скоро начнётся',
  'skills.meetingBots.upcoming.autoJoinsAt': 'Автовход ~в {time}',
  'skills.meetingBots.upcoming.asksAtStart': 'Спрашивает при старте',
  'skills.meetingBots.upcoming.watchCalendarHint':
    'Включите «Следить за календарём» в настройках по умолчанию (значок шестерёнки), чтобы политики «Авто» и «Спросить» работали — иначе они сохранятся, но не будут срабатывать.',
  'skills.meetingBots.relative.now': 'сейчас',
  'skills.meetingBots.relative.inMinutes': 'через {count}м',
  'skills.meetingBots.relative.inHours': 'через {count}ч',
  'skills.meetingBots.relative.minutesAgo': '{count}м назад',
  'skills.meetingBots.relative.hoursAgo': '{count}ч назад',
  'skills.meetingBots.relative.daysAgo': '{count}д назад',
  'skills.meetingBots.relative.yesterday': 'вчера',
  'skills.meetingBots.defaults.drawerTitle': 'Настройки встреч',
  'skills.meetingBots.defaults.closeDrawer': 'Закрыть',
  'skills.meetingBots.defaults.openDefaults': 'Настройки встреч',
  'skills.meetingBots.defaults.watchCalendar': 'Следить за календарём',
  'skills.meetingBots.defaults.watchCalendarDesc':
    'Разрешите OpenHuman отслеживать подключённый календарь, чтобы автоматически входить на встречи или запрашивать подтверждение в соответствии с приведёнными ниже политиками. Это не зависит от уведомлений-напоминаний о встречах.',
  'skills.meetingBots.defaults.globalPolicy': 'Глобальная политика автовхода',
  'skills.meetingBots.defaults.perPlatformTitle': 'Настройки по платформам',
  'skills.meetingBots.defaults.perPlatformDesc':
    'Переопределить глобальную политику для конкретных платформ.',
  'skills.meetingBots.defaults.useDefault': 'Использовать по умолчанию',
  'skills.resource.preview.closeAriaLabel': 'Закрыть предпросмотр',
  'skills.resource.preview.failed': 'Не удалось показать превью',
  'skills.resource.preview.loading': 'Загрузка предпросмотра…',
  'skills.resource.tree.assets': 'Ресурсы',
  'skills.resource.tree.examples': 'Примеры',
  'skills.resource.tree.other': 'Другое',
  'skills.resource.tree.prompts': 'Промпты',
  'skills.resource.tree.references': 'Справка',
  'skills.resource.tree.scripts': 'Скрипты',
  'skills.resource.tree.templates': 'Шаблоны',
  'skills.resource.tree.empty': 'Встроенных ресурсов нет.',
  'skills.search.placeholder': 'Поиск',
  'skills.setup.autocomplete.acceptKey': 'Клавиша принятия',
  'skills.setup.autocomplete.activeDesc': 'Активно',
  'skills.setup.autocomplete.activeTitle': 'Автодополнение активно',
  'skills.setup.autocomplete.customizeSettings': 'Настроить параметры',
  'skills.setup.autocomplete.debounce': 'Задержка',
  'skills.setup.autocomplete.description': 'Описание',
  'skills.setup.autocomplete.enableBtn': 'Включение...',
  'skills.setup.autocomplete.enableError': 'Не удалось включить автодополнение',
  'skills.setup.autocomplete.enabling': 'Включение...',
  'skills.setup.autocomplete.notSupported': 'Не поддерживается',
  'skills.setup.autocomplete.stepEnable': 'Включить встроенные подсказки',
  'skills.setup.autocomplete.stepSuccess': 'Готово к работе',
  'skills.setup.autocomplete.stylePreset': 'Пресет стиля',
  'skills.setup.autocomplete.stylePresetValue': 'Сбалансированный (можно изменить позже)',
  'skills.setup.autocomplete.title': 'Автодополнение текста',
  'skills.setup.screenIntel.activeDesc': 'Активно',
  'skills.setup.screenIntel.activeTitle': 'Интеллект экрана включён',
  'skills.setup.screenIntel.advancedSettings': 'Дополнительные настройки',
  'skills.setup.screenIntel.allGranted': 'Все разрешения предоставлены',
  'skills.setup.screenIntel.captureMode': 'Режим захвата',
  'skills.setup.screenIntel.captureModeValue': 'Все окна (можно изменить позже)',
  'skills.setup.screenIntel.deniedHint':
    'После предоставления разрешений в Системных настройках нажми ниже для перезапуска и применения изменений.',
  'skills.setup.screenIntel.enableBtn': 'Включение...',
  'skills.setup.screenIntel.enableDesc':
    'Видеть, что происходит на вашем экране, и передавать полезный контекст вашему агенту',
  'skills.setup.screenIntel.enableError': 'Не удалось включить интеллект экрана',
  'skills.setup.screenIntel.enabling': 'Включение...',
  'skills.setup.screenIntel.grant': 'Открытие...',
  'skills.setup.screenIntel.granted': 'Предоставлено',
  'skills.setup.screenIntel.macosOnly': 'Только macOS',
  'skills.setup.screenIntel.opening': 'Открытие...',
  'skills.setup.screenIntel.panicHotkey': 'Экстренная горячая клавиша',
  'skills.setup.screenIntel.permAccessibility': 'Доступность',
  'skills.setup.screenIntel.permInputMonitoring': 'Мониторинг ввода',
  'skills.setup.screenIntel.permScreenRecording': 'Запись экрана',
  'skills.setup.screenIntel.permissionsDesc': 'Описание разрешений',
  'skills.setup.screenIntel.permissionPathLabel': 'macOS применяет конфиденциальность к:',
  'skills.setup.screenIntel.refreshStatus': 'Обновить статус',
  'skills.setup.screenIntel.restartRefresh': 'Перезапуск...',
  'skills.setup.screenIntel.restarting': 'Перезапуск...',
  'skills.setup.screenIntel.stepEnable': 'Включить навык',
  'skills.setup.screenIntel.stepPermissions': 'Предоставить разрешения',
  'skills.setup.screenIntel.stepSuccess': 'Готово к работе',
  'skills.setup.screenIntel.title': 'Интеллект экрана',
  'skills.setup.screenIntel.visionModel': 'Визуальная модель',
  'skills.setup.voice.activation': 'Активация',
  'skills.setup.voice.activeDescPrefix': 'Fn',
  'skills.setup.voice.activeDescSuffix': 'Fn',
  'skills.setup.voice.activeTitle': 'Голосовой интеллект активен',
  'skills.setup.voice.customizeSettings': 'Настроить параметры',
  'skills.setup.voice.downloadSttBtn': 'Скачать STT-модель',
  'skills.setup.voice.enableDesc': 'Включить',
  'skills.setup.voice.hotkey': 'Горячая клавиша',
  'skills.setup.voice.startBtn': 'Запуск...',
  'skills.setup.voice.startError': 'Не удалось запустить голосовой сервер',
  'skills.setup.voice.starting': 'Запуск...',
  'skills.setup.voice.stepEnable': 'Запустить голосовой сервер',
  'skills.setup.voice.stepSetup': 'Требуется загрузка модели',
  'skills.setup.voice.stepSuccess': 'Готово к работе',
  'skills.setup.voice.sttNotReady': 'Модель распознавания речи не готова',
  'skills.setup.voice.sttNotReadyDesc':
    'Голосовой интеллект требует локальной модели Whisper для транскрипции. Скачай её в настройках локальной модели.',
  'skills.setup.voice.sttReady': 'Модель распознавания речи готова',
  'skills.setup.voice.sttReturnHint': 'Подсказка возврата STT',
  'skills.setup.voice.title': 'Голосовой интеллект',
  'skills.uninstall.couldNotUninstall': 'Не удалось удалить',
  'skills.uninstall.description':
    'Это навсегда удалит каталог навыка и все его ресурсы. Агент перестанет видеть его на следующем ходу.',
  'skills.uninstall.title': 'Удалить',
  'skills.uninstall.uninstallBtn': 'Удалить',
  'skills.uninstall.uninstalling': 'Удаление…',
  'upsell.global.limitMessage': 'Улучши план или пополни кредиты для продолжения',
  'upsell.global.limitTitle': 'Ты',
  'upsell.global.nearLimitMessage':
    'Ты использовал {pct}% лимита. Улучши план для увеличения лимитов.',
  'upsell.global.nearLimitTitle': 'Лимит использования близко',
  'upsell.usageLimit.bodyBudget':
    'Вы достигли недельного лимита.{reset} Обновите план или пополните кредиты, чтобы избежать ограничений.',
  'upsell.usageLimit.bodyRate':
    'Вы достигли 10-часового лимита частоты инференса.{reset} Обновите план для более высоких лимитов.',
  'upsell.usageLimit.heading': 'Лимит использования достигнут',
  'upsell.usageLimit.notNow': 'Не сейчас',
  'upsell.usageLimit.perWindow': '{amount}',
  'upsell.usageLimit.planIncludes': '{plan}',
  'upsell.usageLimit.resetsIn': 'Сбросится {time}.',
  'upsell.usageLimit.upgradePlan': 'Улучшить план',
  'upsell.usageLimit.weeklyInference': '{amount}',
  'walkthrough.steps.startChat.title': 'Начните в чате',
  'walkthrough.steps.startChat.content':
    'Чат — ваша отправная точка. Новые окна открываются с тем же приветствием и быстрыми действиями, которые вы видели после настройки.',
  'walkthrough.steps.sayHello.title': 'Поздоровайтесь',
  'walkthrough.steps.sayHello.content':
    'Нажмите здесь, чтобы в любой момент начать разговор с ИИ-ассистентом.',
  'walkthrough.steps.meetAi.title': 'Познакомьтесь с ИИ',
  'walkthrough.steps.meetAi.content':
    'Здесь проходят разговоры. Задавайте вопросы, получайте сводки или обдумывайте идеи. Все остается доступным для поиска.',
  'walkthrough.steps.connectWorld.title': 'Подключите свой мир',
  'walkthrough.steps.connectWorld.content':
    'Gmail, Slack, WhatsApp и другое: каждое подключение дает ассистенту новые возможности.',
  'walkthrough.steps.messagingApps.title': 'Общайтесь там, где уже работаете',
  'walkthrough.steps.messagingApps.content':
    'WhatsApp, Telegram, Slack, Discord: подключите мессенджеры, чтобы ассистент мог связаться с вами где угодно.',
  'walkthrough.steps.settings.title': 'Настройте под себя',
  'walkthrough.steps.settings.content':
    'Предпочтения, приватность и уведомления находятся здесь. Этот тур можно перезапустить с этой страницы в любое время.',
  'walkthrough.steps.chatTab.title': 'Вернуться в чат',
  'walkthrough.steps.chatTab.content':
    'Используйте вкладку Chat, когда хотите вернуться к разговорам.',
  'walkthrough.steps.humanTab.title': 'Ваш профиль Human',
  'walkthrough.steps.humanTab.content':
    'Human объединяет личный контекст, идентичность и профиль, видимый ассистенту.',
  'walkthrough.steps.brainTab.title': 'Откройте Brain',
  'walkthrough.steps.brainTab.content':
    'Brain — это граф памяти: здесь можно увидеть, что знает OpenHuman и как связаны идеи.',
  'walkthrough.steps.agentWorldTab.title': 'Исследуйте Agent World',
  'walkthrough.steps.agentWorldTab.content':
    'Agent World — место для переиспользуемых агентов и общих автоматизаций.',
  'walkthrough.steps.connectionsTab.title': 'Управляйте подключениями',
  'walkthrough.steps.connectionsTab.content':
    'Connections всегда доступен в основной навигации, когда нужно добавить или настроить сервисы.',
  'walkthrough.steps.feedbackTab.title': 'Отправить отзыв',
  'walkthrough.steps.feedbackTab.content':
    'Feedback дает прямое место для сообщений о проблемах и просьб об улучшениях.',
  'walkthrough.steps.allSet.title': 'Все готово!',
  'walkthrough.steps.allSet.content':
    'Ассистент оставил приветственную заметку: здесь можно общаться, задавать вопросы и развивать идеи. Удачи!',
  'walkthrough.tooltip.letsGo': 'Поехали!',
  'walkthrough.tooltip.next': 'Далее →',
  'walkthrough.tooltip.skip': 'Пропустить тур',
  'walkthrough.tooltip.stepCounter': '{n} из {total}',
  'webhooks.activity.empty': 'Пусто',
  'webhooks.activity.title': 'Последняя активность',
  'webhooks.composioHistory.empty': 'Пусто',
  'webhooks.composioHistory.metadataId': 'ID метаданных',
  'webhooks.composioHistory.metadataUuid': 'UUID метаданных',
  'webhooks.composioHistory.payload': 'Полезная нагрузка',
  'webhooks.composioHistory.title': 'История триггеров ComposeIO',
  'webhooks.tunnels.active': 'Активно',
  'webhooks.tunnels.createFailed': 'Не удалось создать туннель',
  'webhooks.tunnels.creating': 'Создание...',
  'webhooks.tunnels.deleteFailed': 'Не удалось удалить туннель',
  'webhooks.tunnels.descriptionPlaceholder': 'Описание (необязательно)',
  'webhooks.tunnels.echo': 'Эхо',
  'webhooks.tunnels.empty': 'Пусто',
  'webhooks.tunnels.enableEcho': 'Включить эхо',
  'webhooks.tunnels.inactive': 'Неактивно',
  'webhooks.tunnels.namePlaceholder': 'Название туннеля (напр. telegram-bot)',
  'webhooks.tunnels.newTunnel': 'Новый туннель',
  'webhooks.tunnels.removeEcho': 'Убрать эхо',
  'webhooks.tunnels.title': 'Вебхук-туннели',
  'webhooks.tunnels.toggleFailed': 'Не удалось переключить эхо',
  'composio.directModeRequiresKey': 'Не удалось сохранить. Прямой режим требует непустой API-ключ.',
  'composio.integrationSlugsHelp': 'Интеграция через запятую слизни, напр.',
  'composio.integrationSlugsExample': 'gmail, slack',
  'composio.integrationSlugsCaseInsensitive': 'Регистронезависим.',
  'composio.integrationSlugsPlaceholder': 'gmail, slack, ...',
  'composio.notYetRouted': 'пока не маршрутизируется',
  'composio.triggers.loading': 'Загрузка…',
  'conversations.taskKanban.todo': 'К выполнению',
  'chat.addReaction': 'Добавить реакцию',
  'chat.agentProfile.create': 'Создать профиль агента',
  'chat.agentProfile.createFailed': 'Не удалось создать профиль агента.',
  'chat.agentProfile.customDescription': 'Пользовательский профиль агента',
  'chat.agentProfile.defaultAgentLabel': 'Оркестратор',
  'chat.agentProfile.exists': 'Профиль агента «{name}» уже существует.',
  'chat.agentProfile.label': 'Профиль агента',
  'chat.agentProfile.quick': 'Быстрый',
  'chat.agentProfile.reasoning': 'Рассуждение',
  'chat.agentProfile.namePlaceholder': 'Имя профиля',
  'chat.agentProfile.promptStylePlaceholder': 'Стиль подсказки',
  'chat.agentProfile.allowedToolsPlaceholder': 'Разрешенные инструменты',
  'chat.backToThread': 'вернуться к {title}',
  'chat.parentThread': 'родительский поток',
  'chat.removeReaction': 'Удалить {emoji}',
  'settings.composio.loading': 'Загрузка…',
  'settings.mascot.noCharactersAvailable': 'Персонажи OpenHuman пока недоступны',
  'skills.uninstall.confirmTitle': 'Удалить {name}?',
  'conversations.taskKanban.blocked': 'Заблокировано',
  'conversations.taskKanban.done': 'Готово',
  'conversations.taskKanban.pending': 'В ожидании',
  'conversations.taskKanban.working': 'Работающий',
  'conversations.taskKanban.awaitingApproval': 'Ожидает одобрения',
  'conversations.taskKanban.ready': 'Готовый',
  'conversations.taskKanban.rejected': 'Отклоненный',
  'conversations.taskKanban.inProgress': 'В работе',
  'conversations.taskKanban.awaitingApprovalColumn': 'Ожидает одобрения',
  'conversations.taskKanban.blockedColumn': 'Заблокировано',
  'conversations.taskKanban.evidenceBadge': 'Доказательства ({count})',
  'conversations.taskKanban.needsInput': 'Эти задачи требуют вашего участия',
  'conversations.taskKanban.emptyColumn': 'Нет задач',
  'conversations.taskKanban.dragHint': 'Перетащите для перемещения между колонками',
  'conversations.taskKanban.movingCard': 'Перемещение…',
  'conversations.taskKanban.statusBadge.ready': 'Готово к запуску',
  'conversations.taskKanban.statusBadge.rejected': 'Отклонено',
  'intelligence.memoryChunk.detail.copiedHint': 'скопировано',
  'settings.composio.notYetRouted': 'пока не маршрутизируется',
  'settings.localModel.download.manageExternal':
    'Управляйте этой моделью во внешней среде выполнения.',
  'settings.localModel.status.manageOllamaExternal':
    'Управляйте процессом Ollama и загрузкой моделей вне OpenHuman, затем повторите диагностику.',
  'settings.localModel.status.ollamaDocs': 'Документация Ollama',
  'settings.localModel.status.thenRetry':
    'для инструкций по настройке, затем повторите, когда среда выполнения станет доступна.',
  'devOptions.menuAi': 'Конфигурация AI',
  'devOptions.menuAiDesc':
    'Облачные поставщики, локальные модели Ollama и маршрутизация для каждой рабочей нагрузки',
  'devOptions.menuScreenAware': 'Функция Screen Aware',
  'devOptions.menuScreenAwareDesc':
    'Разрешения на захват экрана, мониторинг политика и элементы управления сеансом',
  'devOptions.menuMessaging': 'Каналы обмена сообщениями',
  'devOptions.menuMessagingDesc':
    'Настройка режимов аутентификации Telegram/Discord и маршрутизации каналов по умолчанию',
  'devOptions.menuTools': 'Инструменты',
  'devOptions.menuToolsDesc':
    'Включение или отключение возможностей, которые OpenHuman может использовать от вашего имени',
  'devOptions.menuAgentChat': 'Чат агента',
  'devOptions.menuAgentChatDesc':
    'Диалог агента тестирования с переопределением модели и температуры',
  'devOptions.menuCronJobs': 'Задания Cron',
  'devOptions.menuCronJobsDesc':
    'Просмотр и настройка запланированных заданий для навыков выполнения',
  'devOptions.menuLocalModelDebug': 'Отладка локальной модели',
  'devOptions.menuLocalModelDebugDesc':
    'Конфигурация Ollama, загрузка ресурсов, тесты моделей и диагностика',
  'devOptions.menuWebhooksDebug': 'Веб-перехватчики',
  'devOptions.menuWebhooksDebugDesc':
    'Проверка регистрации веб-перехватчиков во время выполнения и записанные журналы запросов',
  'devOptions.menuIntelligence': 'Аналитика',
  'devOptions.menuIntelligenceDesc':
    'Рабочая область памяти, механизм подсознания, сны и настройки',
  'devOptions.menuNotificationRouting': 'Маршрутизация уведомлений',
  'devOptions.menuNotificationRoutingDesc':
    'Оценка важности ИИ и эскалация оркестратора для предупреждений интеграции',
  'devOptions.menuComposeIOTriggers': 'Триггеры ComposeIO',
  'devOptions.menuComposeIOTriggersDesc': 'Просмотр истории и архива триггеров ComposeIO.',
  'devOptions.menuComposioRouting': 'Composio Маршрутизация (прямой режим)',
  'devOptions.menuComposioRoutingDesc':
    'Используйте свой собственный ключ Composio API и направляйте вызовы непосредственно на backend.composio.dev',
  'devOptions.menuComposioTriggers': 'Интеграция Триггеры',
  'devOptions.menuComposioTriggersDesc':
    'Настройка параметров сортировки AI для триггеров интеграции Composio',
  'memory.sourceFilterAria': 'Фильтровать по источнику',
  'calls.comingSoonDescription': 'Звонки с поддержкой ИИ скоро появятся. Следите за обновлениями.',
  'whatsapp.title': 'WhatsApp',
  'subconscious.priority.critical': 'критический',
  'subconscious.priority.important': 'важный',
  'subconscious.priority.normal': 'нормальный',
  'subconscious.durationSeconds': '{seconds} с',
  'subconscious.durationMilliseconds': '{milliseconds} мс',
  'settings.appearance': 'Внешний вид',
  'settings.appearanceDesc': 'Выберите светлую, темную или соответствующую теме вашей системы.',
  'settings.mascot': 'Талисман',
  'settings.mascotDesc': 'Выберите цвет талисмана, используемый в приложении.',
  'pages.settings.account.walletBalances': 'Баланс кошелька',
  'pages.settings.account.walletBalancesDesc':
    'Просмотр мультичейн-балансов вашего локального кошелька',
  'walletBalances.title': 'Баланс кошелька',
  'walletBalances.refresh': 'Refresh',
  'walletBalances.loading': 'Загрузка балансов…',
  'walletBalances.retry': 'Retry',
  'walletBalances.emptyState':
    'Аккаунтов кошелька пока нет — настройте кошелёк в разделе «Фраза восстановления».',
  'walletBalances.copyAddress': 'Копировать адрес',
  'walletBalances.providerMissing': 'провайдер недоступен',
  'walletBalances.rawBalance': 'Исходный: {raw}',
  'walletBalances.errorGeneric':
    'Не удалось загрузить балансы кошелька. Настройте кошелёк в разделе «Фраза восстановления» и повторите попытку.',
  'walletBalances.setupHint':
    'Ваша фраза восстановления ещё не настроена. Настройте её, чтобы включить кошелёк и видеть актуальные балансы.',
  'walletBalances.setupCta': 'Настроить фразу восстановления',
  'walletBalances.notSetUp': 'Не настроено',
  'walletBalances.send': 'Отправить',
  'walletBalances.receive': 'Получить',
  'walletReceive.scanHint':
    'Отсканируйте этот код или скопируйте адрес ниже, чтобы получить средства.',
  'walletReceive.addressLabel': 'Адрес {network}',
  'walletReceive.onlyChainWarning':
    'Отправляйте на этот адрес только активы сети {network}. Отправка активов из другой сети может привести к безвозвратной потере.',
  'walletSend.available': 'Доступно',
  'walletSend.recipient': 'Адрес получателя',
  'walletSend.recipientPlaceholder': 'Вставьте адрес назначения',
  'walletSend.recipientRequired': 'Введите адрес получателя',
  'walletSend.amount': 'Сумма',
  'walletSend.invalidAmount': 'Введите корректную сумму',
  'walletSend.review': 'Проверить',
  'walletSend.preparing': 'Подготовка…',
  'walletSend.confirmHint':
    'Проверьте детали ниже. Подпись выполняется локально — ничего не отправляется, пока вы не подтвердите.',
  'walletSend.estimatedFee': 'Ориентировочная комиссия сети',
  'walletSend.confirmSend': 'Подтвердить и отправить',
  'walletSend.sending': 'Отправка…',
  'walletSend.sent': 'Транзакция отправлена',
  'walletSend.txHash': 'Хеш транзакции',
  'walletSend.viewExplorer': 'Открыть в обозревателе',
  'walletSend.done': 'Готово',
  'walletSend.genericError': 'Не удалось выполнить перевод. Повторите попытку.',
  'settings.taskSources.title': 'Источники задач',
  'settings.integrations.title': 'Интеграции',
  'settings.integrations.menuDesc': 'Источники задач, маршрутизация Composio и веб-хук триггеры',
  'settings.taskSources.subtitle': 'Переносите задачи из своих инструментов на доску задач агента.',
  'settings.taskSources.description':
    'Собирайте рабочие элементы из GitHub, Notion, Linear и ClickUp, обогащайте их и направляйте на доску задач агента.',
  'settings.taskSources.connectHint':
    'Источники задач используют ваши подключенные учетные записи. Сначала подключите их в разделе «Интеграции».',
  'settings.taskSources.disabledBanner':
    'Источники задач отключены в настройках. Разрешите им автоматически проводить опросы.',
  'settings.taskSources.loadError': 'Не удалось загрузить источники задач.',
  'settings.taskSources.addTitle': 'Добавить источник задачи',
  'settings.taskSources.provider': 'Поставщик',
  'settings.taskSources.name': 'Имя (необязательно)',
  'settings.taskSources.namePlaceholder': 'например Мои открытые вопросы',
  'settings.taskSources.github.repo': 'Репозиторий (владелец/имя, необязательно)',
  'settings.taskSources.github.labels': 'Ярлыки (через запятую)',
  'settings.taskSources.notion.database': 'Идентификатор базы данных (доски)',
  'settings.taskSources.notion.browseDatabases': 'Обзор баз данных',
  'settings.taskSources.notion.loadingDatabases': 'Загрузка баз данных…',
  'settings.taskSources.notion.selectDatabase': 'Выберите базу данных…',
  'settings.taskSources.notion.noDatabases': 'Базы данных для этого подключения не найдены.',
  'settings.taskSources.linear.team': 'Идентификатор команды (необязательно)',
  'settings.taskSources.clickup.team': 'Идентификатор рабочей области (команды) (необязательно)',
  'settings.taskSources.assignedToMe': 'Только элементы, назначенные мне',
  'settings.taskSources.add': 'Добавить источник',
  'settings.taskSources.adding': 'Добавление…',
  'settings.taskSources.preview': 'Предварительный просмотр',
  'settings.taskSources.previewResult': 'Задачи {count} соответствуют этому фильтру',
  'settings.taskSources.fetchNow': 'Получить сейчас',
  'settings.taskSources.fetching': 'Получение…',
  'settings.taskSources.fetchResult':
    'Направлено {routed} из {fetched} задач; удалено устаревших задач: {pruned}',
  'settings.taskSources.syncAll': 'Синхронизировать все',
  'settings.taskSources.syncing': 'Синхронизация…',
  'settings.taskSources.configured': 'Настроенные источники',
  'settings.taskSources.empty': 'Источники задач пока не настроены.',
  'settings.taskSources.proactive': 'Проактивный',
  'settings.taskSources.lastFetch': 'Последняя выборка',
  'settings.taskSources.never': 'Никогда',
  'settings.taskSources.statusEnabled': 'Включено',
  'settings.taskSources.statusDisabled': 'Неполноценный',
  'settings.taskSources.enable': 'Давать возможность',
  'settings.taskSources.disable': 'Запрещать',
  'settings.taskSources.remove': 'Удалять',
  'settings.taskSources.removeConfirm':
    'Удалить этот источник задачи? Вся загруженная история задач будет удалена, и ее нельзя будет отменить.',
  'settings.taskSources.refresh': 'Обновить',
  'settings.taskSources.providers.github': 'GitHub',
  'settings.taskSources.providers.notion': 'Понятие',
  'settings.taskSources.providers.linear': 'Линейный',
  'settings.taskSources.providers.clickup': 'КликАп',
  'skills.dashboard.enable': 'Включить запланированный рабочий процесс',
  'skills.dashboard.disable': 'Отключить запланированный рабочий процесс',
  'skills.dashboard.lastRun': 'Последний запуск',
  'skills.dashboard.nextRun': 'Следующий запуск',
  'skills.dashboard.cardOpenRunner': 'Открыть в исполнителе',
  'skills.new.title': 'Создать рабочий процесс',
  'settings.agents.title': 'Агенты',
  'settings.agents.subtitle':
    'Управляйте агентами, доступными для делегирования — встроенными агентами по умолчанию и вашими собственными агентами.',
  'settings.agents.menuDesc': 'Управление встроенными и пользовательскими агентами',
  'settings.agents.newAgent': 'Новый агент',
  'settings.agents.loadError': 'Не удалось загрузить агенты',
  'settings.agents.empty': 'Агентов пока нет',
  'settings.agents.sourceDefault': 'Встроенный',
  'settings.agents.sourceCustom': 'Обычай',
  'settings.agents.enable': 'Включить агент',
  'settings.agents.disable': 'Отключить агент',
  'settings.agents.edit': 'Редактировать',
  'settings.agents.delete': 'Удалить',
  'settings.agents.reset': 'Сбросить настройки по умолчанию',
  'settings.agents.modelLabel': 'Модель',
  'settings.agents.toolsLabel': 'Инструменты',
  'settings.agents.toolsAll': 'Все инструменты',
  'settings.agents.toolsCount': '{count} инструменты',
  'settings.agents.actionFailed': 'Не удалось обновить агент',
  'settings.agents.orchestratorLocked': 'Оркестратор всегда включен.',
  'settings.agents.editor.createTitle': 'Новый агент',
  'settings.agents.editor.editTitle': 'Редактировать агента',
  'settings.agents.editor.id': 'ID',
  'settings.agents.editor.idHint': 'Только строчные буквы, цифры, _ и -.',
  'settings.agents.editor.name': 'Имя',
  'settings.agents.editor.description': 'Описание',
  'settings.agents.editor.model': 'Модель (необязательно)',
  'settings.agents.editor.modelPlaceholder':
    'например наследовать, подсказку: быстро или идентификатор модели',
  'settings.agents.editor.systemPrompt': 'Системное приглашение (необязательно)',
  'settings.agents.editor.tools': 'Разрешенные инструменты',
  'settings.agents.editor.toolsHint':
    'Одно имя инструмента в строке. Используйте * для всех инструментов.',
  'settings.agents.editor.defaultsNote':
    'При редактировании встроенного агента сохраняется переопределение, которое можно сбросить позже.',
  'settings.agents.editor.save': 'Сохранять',
  'settings.agents.editor.create': 'Создать агента',
  'settings.agents.editor.saving': 'Сохранение…',
  'nav.workflows': 'Workflows',
  'workflows.title': 'Рабочие процессы',
  'workflows.subtitle':
    'Многоразовые исполняемые процедуры — цель и шаги к её достижению. Создайте, установите по URL или откройте рабочий процесс для запуска.',
  'workflows.createNew': 'Новый рабочий процесс',
  'workflows.listHeading': 'Workflows',
  'workflows.delete': 'Удалить рабочий процесс',
  'workflows.deleteError': 'Не удалось удалить рабочий процесс',
  'workflows.warnings': '{count} предупреждение(й)',
  'workflows.empty.title': 'Рабочих процессов пока нет',
  'workflows.empty.body':
    'Создайте рабочий процесс для определения правил и скриптов фаз жизненного цикла задач.',
  'workflows.create.title': 'Новый рабочий процесс',
  'workflows.create.subtitle': 'Определите набор правил, привязанный к жизненному циклу агента.',
  'workflows.create.name': 'Name',
  'workflows.create.namePlaceholder': 'напр. Рабочий процесс Python-проекта',
  'workflows.create.description': 'Description',
  'workflows.create.descriptionPlaceholder': 'Что делает этот рабочий процесс?',
  'workflows.create.whenToUse': 'Когда использовать',
  'workflows.create.whenToUsePlaceholder': 'Когда агент должен использовать этот рабочий процесс?',
  'workflows.create.optional': '(необязательно)',
  'workflows.create.createBtn': 'Создать рабочий процесс',
  'workflows.create.creating': 'Creating…',
  'workflows.create.createError': 'Не удалось создать рабочий процесс',
  'workflows.create.successTitle': 'Рабочий процесс создан',
  'workflows.create.successMessage': 'успешно создан.',
  'workflows.deleteConfirm.title': 'Удалить рабочий процесс',
  'workflows.deleteConfirm.body': 'Удалить «{name}»? Это действие нельзя отменить.',
  'workflows.detail.tags': 'Tags',
  'workflows.detail.location': 'Location',
  'workflows.detail.warnings': 'Warnings',
  'workflows.detail.phases': 'Phases',
  'workflows.detail.noPhases': 'Фазы не определены.',
  'workflows.detail.loadError': 'Не удалось загрузить полный рабочий процесс',
  'workflows.phase.rules': 'Rules',
  'workflows.phase.rules.empty': 'Нет правил.',
  'workflows.phase.scripts': 'Scripts',
  'workflows.phase.scripts.empty': 'Нет скриптов.',
  'workflows.phase.toolScope': 'Область инструментов',
  'workflows.phase.toolScope.allow': 'Allow',
  'workflows.phase.toolScope.deny': 'Deny',
  'workflows.phase.toolScope.inherited': 'Унаследовано из настроек рабочего процесса по умолчанию.',
  'workflows.phase.toolScope.empty': 'Нет ограничений инструментов.',
  'workflows.phase.context': 'Context',
  'workflows.phase.context.empty': 'Нет провайдеров контекста.',
  'settings.agentsSection.title': 'Agents',
  'settings.agentsSection.description':
    'Управляйте агентами, их автономностью и доступом к ресурсам компьютера.',
  'settings.agentsSection.menuDesc': 'Реестр, автономность и доступ к ОС',
  'settings.cryptoSection.title': 'Крипто',
  'settings.cryptoSection.description':
    'Управляйте секретной фразой восстановления и просматривайте балансы своих кошельковых счетов.',
  'settings.cryptoSection.menuDesc': 'Фраза восстановления и балансы кошелька',
  'settings.notificationsHub.title': 'Уведомления',
  'settings.notificationsHub.description':
    'Просматривайте папку оповещений и управляйте настройками уведомлений и маршрутизацией.',
  'settings.notificationsHub.menuDesc': 'Папка оповещений и настройки уведомлений',
  'settings.notificationsHub.settingsItem': 'Настройки уведомлений',
  'settings.notificationsHub.settingsItemDesc': 'Настройки и маршрутизация',
  'settings.agents.editor.notFound': 'Агент не найден.',
  'settings.agents.editor.modelInherit': 'Унаследовать (системное по умолчанию)',
  'settings.agents.editor.modelHints': 'Подсказки маршрутизации',
  'settings.agents.editor.modelTiers': 'Уровни моделей',
  'settings.agents.editor.modelCustom': 'Идентификатор модели…',
  'settings.agents.editor.modelCustomPlaceholder': 'напр. anthropic/claude-sonnet-4',
  'settings.agents.editor.selectTools': 'Добавить инструменты',
  'settings.agents.editor.toolsAllSelected': 'Все инструменты',
  'settings.agents.editor.toolsNoneSelected': 'Инструменты не выбраны',
  'settings.agents.editor.removeToolAria': 'Удалить {tool}',
  'settings.agents.editor.toolsModalTitle': 'Разрешённые инструменты',
  'settings.agents.editor.toolsSelectedCount': 'Выбрано: {count}',
  'settings.agents.editor.toolsSearchPlaceholder': 'Поиск инструментов…',
  'settings.agents.editor.toolsAllowAll': 'Разрешить все инструменты (*)',
  'settings.agents.editor.toolsAllowAllHint':
    'Этот агент может использовать любой доступный инструмент.',
  'settings.agents.editor.toolsLoading': 'Загрузка инструментов…',
  'settings.agents.editor.toolsLoadError': 'Не удалось загрузить инструменты',
  'settings.agents.editor.toolsEmpty': 'Инструменты по вашему запросу не найдены.',
  'settings.agents.editor.toolsDone': 'Done',
  'settings.agents.editor.builtInReadonly':
    'Встроенные агенты нельзя редактировать. Вы можете включить, отключить или сбросить их в списке агентов.',
  // Chat — agent-generated artifacts (#2779)
  'chat.artifact.aria': 'Артефакт: {title}',
  'chat.artifact.generating': 'Создание {kind}…',
  'chat.artifact.ready': 'Готово',
  'chat.artifact.failed': 'Сбой генерации',
  'chat.artifact.download': 'Скачать',
  'chat.artifact.downloading': 'Скачивание…',
  'chat.artifact.downloaded': 'Сохранено в {path}',
  'chat.artifact.download_failed': 'Сбой скачивания: {reason}',
  'chat.artifact.retry': 'Повторить',
  'chat.artifact.reveal': 'Показать в папке',
  'chat.artifact.show_more': 'Показать больше',
  'chat.artifact.show_less': 'Свернуть',

  // Chat — files panel (#3024)
  'chat.files.chip.aria.one': '{count} файл в этом чате',
  'chat.files.chip.aria.other': '{count} файлов в этом чате',
  'chat.files.panel.aria': 'Файлы в этом чате',
  'chat.files.panel.title': 'Файлы ({count})',
  'chat.files.panel.empty': 'Файлов пока нет. Попросите агента создать один.',
  'chat.files.panel.close': 'Закрыть панель файлов',
  'chat.files.delete.aria': 'Удалить {title}',
  'chat.files.delete.confirm': 'Удалить этот файл?',
  'chat.files.delete.cancel': 'Отмена',
  'chat.files.delete.action': 'Удалить',
  'chat.files.delete.failed': 'Не удалось удалить файл. Попробуйте ещё раз.',
  'chat.files.error.not_desktop': 'Загрузки доступны только в настольном приложении.',
  'chat.files.error.missing_artifact_id': 'Отсутствует идентификатор артефакта.',
  'chat.files.error.missing_artifact_path': 'В ответе ядра отсутствует путь к артефакту.',
  'chat.files.error.resolve_failed': 'Не удалось получить артефакт. Попробуйте ещё раз.',
  'chat.files.error.download_failed': 'Не удалось загрузить файл. Попробуйте ещё раз.',
  'chat.files.error.delete_failed': 'Не удалось удалить файл. Попробуйте ещё раз.',
  'autocomplete.debounceMs': 'Задержка (мс)',
  'autocomplete.maxChars': 'Макс. символов контекста',
  'autocomplete.overlayTtlMs': 'Тайм-аут наложения (мс)',
  'memory.tab.council': 'Council',
  'activity.tabs.automations': 'Автоматизации',
  'activity.tabs.automationsDescription':
    'Многократно используемые, запускаемые процедуры — цель и шаги для её достижения.',
  'activity.tabs.backgroundActivity': 'Подсознание',
  'activity.tabs.alerts': 'Уведомления',

  'intelligence.agents.title': 'Библиотека агентов',
  'intelligence.agents.subtitle':
    'Просматривайте доступных специалистов и отправляйте задачу выбранному агенту.',
  'intelligence.agents.refresh': 'Обновить',
  'intelligence.agents.loading': 'Загрузка агентов…',
  'intelligence.agents.failedToLoad': 'Не удалось загрузить агентов',
  'intelligence.agents.empty': 'Нет доступных запускаемых агентов.',
  'intelligence.agents.readOnly': 'Только чтение',
  'intelligence.agents.writeCapable': 'Может изменять',
  'intelligence.agents.allTools': 'Все инструменты',
  'intelligence.agents.toolCountOne': '{count} инструмент',
  'intelligence.agents.toolCountOther': '{count} инструментов',
  'intelligence.agents.subagentCountOne': '{count} субагент',
  'intelligence.agents.subagentCountOther': '{count} субагентов',
  'intelligence.agents.startChat': 'Начать чат',
  'intelligence.agents.startChatPrompt':
    'Начни чат с этим агентом. Представь свою специализацию, спроси нужный контекст и жди мою задачу.',
  'intelligence.agents.copyId': 'Копировать ID',
  'intelligence.agents.copied': 'Скопировано',
  'intelligence.agents.taskPlaceholder': 'Задача для этого агента',
  'intelligence.agents.runTask': 'Запустить задачу',
  'intelligence.agents.running': 'Выполняется…',
  'intelligence.agents.runFailed': 'Не удалось запустить выбранного агента',
  'intelligence.agents.model.inherit': 'Наследовать',
  'intelligence.agents.tier.chat': 'Чат',
  'intelligence.agents.tier.reasoning': 'Рассуждение',
  'intelligence.agents.tier.worker': 'Исполнитель',
  'modelCouncil.title': 'Совет моделей',
  'modelCouncil.intro':
    'Задайте один вопрос, получите независимые ответы от нескольких моделей параллельно, затем модель-председатель синтезирует, в чём они согласны, где расходятся и что уникально привносит каждая.',
  'modelCouncil.listTitle': 'Councils',
  'modelCouncil.listIntro':
    'Выберите сохранённый совет, отредактируйте его агентов и судью или создайте новый для определённого типа решений.',
  'modelCouncil.addCouncil': 'Новый совет',
  'modelCouncil.openCouncil': 'Открыть совет',
  'modelCouncil.editCouncil': 'Редактировать совет',
  'modelCouncil.editCurrentCouncil': 'Редактировать текущий совет',
  'modelCouncil.editCouncilAria': 'Редактировать {name}',
  'modelCouncil.deleteCouncilAria': 'Удалить {name}',
  'modelCouncil.backToCouncils': 'Назад к советам',
  'modelCouncil.saveCouncil': 'Сохранить совет',
  'modelCouncil.savingCouncil': 'Saving…',
  'modelCouncil.cancelEdit': 'Cancel',
  'modelCouncil.loadingCouncils': 'Загрузка советов…',
  'modelCouncil.noCouncils': 'Советов пока нет. Добавьте один, чтобы начать.',
  'modelCouncil.noCouncilDescription': 'Без описания',
  'modelCouncil.registryErrorPrefix': 'Реестр советов не удался:',
  'modelCouncil.councilNameLabel': 'Название совета',
  'modelCouncil.councilDescriptionLabel': 'Description',
  'modelCouncil.councilDescriptionPlaceholder': 'Когда использовать этот совет',
  'modelCouncil.selectModel': 'Select',
  'modelCouncil.modelPickerHelp':
    'Выберите подсказку маршрутизации или закрепите точную модель провайдера.',
  'modelCouncil.closeModelPicker': 'Close',
  'modelCouncil.hint.chat': 'Чат',
  'modelCouncil.hint.code': 'Код',
  'modelCouncil.hint.default': 'По умолчанию',
  'modelCouncil.hint.reasoning': 'Рассуждение',
  'modelCouncil.hint.summarize': 'Сводка',
  'modelCouncil.modelPickerHints': 'Hints',
  'modelCouncil.modelPickerProviderModel': 'Провайдер + модель',
  'modelCouncil.modelProviderLabel': 'Провайдер модели',
  'modelCouncil.modelIdLabel': 'ID модели',
  'modelCouncil.useProviderModel': 'Использовать модель провайдера',
  'modelCouncil.questionLabel': 'Question',
  'modelCouncil.questionPlaceholder': 'Задайте вопрос совету…',
  'modelCouncil.membersLabel': 'Модели участников',
  'modelCouncil.maxMembersNote': 'до {max}',
  'modelCouncil.memberPlaceholder': 'напр. gpt-5.2',
  'modelCouncil.memberAria': 'Модель участника {n}',
  'modelCouncil.removeMemberAria': 'Удалить модель участника {n}',
  'modelCouncil.addMember': '+ Добавить модель',
  'modelCouncil.settingsTitle': 'Настройки совета',
  'modelCouncil.settingsSummary': '{count} присяжных · судья: {judge}',
  'modelCouncil.juryCountLabel': 'Число присяжных',
  'modelCouncil.debateRoundsLabel': 'Раунды дебатов',
  'modelCouncil.debateRoundsHelp':
    'Каждый присяжный продолжает дебатировать в нескольких раундах, прежде чем судья напишет итоговый синтез.',
  'modelCouncil.judgeAgentLabel': 'Агент-судья',
  'modelCouncil.defaultJudge': 'Судья по умолчанию',
  'modelCouncil.savedProfile': 'Сохраненный профиль',
  'modelCouncil.customAgent': 'Пользовательский агент',
  'modelCouncil.judgeProfileLabel': 'Профиль судьи',
  'modelCouncil.chooseProfile': 'Выберите профиль',
  'modelCouncil.judgeNameLabel': 'Имя судьи',
  'modelCouncil.judgeNamePlaceholder': 'Главный судья',
  'modelCouncil.rosterHeading': 'Состав совета',
  'modelCouncil.rosterHelp':
    'Каждый присяжный может наследовать агента по умолчанию, использовать сохраненный профиль или стать пользовательским профилем для этого запуска.',
  'modelCouncil.loadingProfiles': 'Загрузка профилей…',
  'modelCouncil.jurorLabel': 'Присяжный {n}',
  'modelCouncil.profileModeLabel': 'Источник профиля',
  'modelCouncil.mode.default': 'По умолчанию',
  'modelCouncil.mode.profile': 'Профиль',
  'modelCouncil.mode.custom': 'Свой',
  'modelCouncil.memberProfileAria': 'Профиль присяжного {n}',
  'modelCouncil.memberNameAria': 'Имя присяжного {n}',
  'modelCouncil.memberNamePlaceholder': 'Имя агента',
  'modelCouncil.profileModelPlaceholder': 'Переопределить модель профиля',
  'modelCouncil.memberBriefAria': 'Бриф присяжного {n}',
  'modelCouncil.memberBriefPlaceholder': 'Перспектива этого присяжного',
  'modelCouncil.jurorFallback': 'Присяжный',
  'modelCouncil.sharedReasoningLabel': 'Общий файл рассуждений',
  'modelCouncil.sharedReasoningHelp':
    'Совет работает с этим общим черновиком до того, как судья пишет синтез.',
  'modelCouncil.liveScratchpadHelp':
    'Обновления присяжных добавляются сюда после каждого раунда и используются в следующем.',
  'modelCouncil.liveScratchpadBadge': 'Live',
  'modelCouncil.scratchpadRoundHeading': 'Обновления раунда {round}',
  'modelCouncil.scratchpadNoResponse': 'Нет ответа',
  'modelCouncil.chairLabel': 'Модель председателя',
  'modelCouncil.chairPlaceholder': 'напр. claude-opus-4-8',
  'modelCouncil.chairHelp': 'Председатель читает каждый ответ участников и пишет синтез.',
  'modelCouncil.run': 'Созвать совет',
  'modelCouncil.running': 'Convening…',
  'modelCouncil.runningHint': 'Опрос участников параллельно, затем синтез…',
  'modelCouncil.deliberationHeading': 'Совещание совета',
  'modelCouncil.deliberationHelp':
    'Маскоты показывают мыслительный процесс каждого агента во время использования общего файла рассуждений.',
  'modelCouncil.debateRoundInstruction':
    'Ответьте другим присяжным. Сохраняйте разногласия, пересматривайте свою позицию при наличии оснований и явно формулируйте текущее заключение.',
  'modelCouncil.debateFinalInstruction':
    'Это ваш последний раунд в качестве присяжного. Сойдитесь там, где доказательства это поддерживают, укажите оставшиеся разногласия и дайте судье чёткое заключение.',
  'modelCouncil.roundLabel': 'Раунд {round}',
  'modelCouncil.currentRoundThinking': 'Продолжение следующего раунда…',
  'modelCouncil.thinkingBadge': 'Thinking',
  'modelCouncil.thinkingWithBrief': 'Работа с данной перспективы: {brief}',
  'modelCouncil.thought.evidence':
    'Проверка доказательств, допущений и того, что общий файл рассуждений уже содержит.',
  'modelCouncil.thought.plan':
    'Набросок практического пути и возможных затруднений при реализации.',
  'modelCouncil.thought.risk': 'Поиск режимов сбоя, недостающего контекста и хрупких выводов.',
  'modelCouncil.thought.tradeoffs': 'Сравнение компромиссов перед передачей судье краткой позиции.',
  'modelCouncil.thought.synthesis':
    'Подготовка отдельной точки зрения, чтобы судья мог сравнить реальные разногласия.',
  'modelCouncil.judgeWaitingBadge': 'Judge',
  'modelCouncil.judgeWaitingThought':
    'Ожидание ответов присяжных, затем чтение общего файла рассуждений для синтеза.',
  'modelCouncil.judgeSynthesizingBadge': 'Synthesizing',
  'modelCouncil.judgeSynthesizingThought':
    'Чтение мыслей присяжных в реальном времени и написание итогового синтеза совета.',
  'modelCouncil.errorPrefix': 'Совет не удался:',
  'modelCouncil.resultsHeading': 'Результаты совета',
  'modelCouncil.memberAnswered': 'Answered',
  'modelCouncil.memberFailed': 'Failed',
  'modelCouncil.synthesisHeading': 'Synthesis',
  'modelCouncil.synthesisBy': 'от {model}',
  'modelCouncil.usageHeading': 'Использование дебатов',
  'modelCouncil.usageEstimated':
    'Оценочное количество токенов из промптов и ответов дебатов. Реальная стоимость требует данных об использовании провайдера из RPC совета.',
  'modelCouncil.usageEstimatedBadge': 'Оценочные токены',
  'modelCouncil.usageInputTokens': 'Input',
  'modelCouncil.usageOutputTokens': 'Output',
  'modelCouncil.usageTotalTokens': 'Total',
  'graphCohesion.brokerBadge': 'брокер',
  'graphCohesion.brokerTitle':
    'Структурная дыра: соседи этой сущности не связаны друг с другом — она единственная связь между ними.',
  'graphCohesion.colCohesion': 'Связность',
  'graphCohesion.colEntity': 'Сущность',
  'graphCohesion.colLinks': 'Связки',
  'graphCohesion.colRank': '#',
  'graphCohesion.empty': 'Пока нет графа знаний.',
  'graphCohesion.emptyHint':
    'По мере того как ассистент фиксирует связанные факты о вас, здесь появится их кластерная структура.',
  'graphCohesion.errorPrefix': 'Не удалось загрузить граф:',
  'graphCohesion.intro':
    'Насколько плотно сплетено окружение каждой сущности. Брокеры — сущности, чьи соседи не связаны друг с другом, — это единичные точки, удерживающие вместе иначе разделённые кластеры, чего сортировка по частоте или PageRank не вскроет.',
  'graphCohesion.loading': 'Вычисление связности…',
  'graphCohesion.metricConnections': 'Связи',
  'graphCohesion.metricEntities': 'Сущности',
  'graphCohesion.metricTriangles': 'Треугольники',
  'graphCohesion.namespaceAll': 'Все пространства имён',
  'graphCohesion.namespaceLabel': 'Пространство имён',
  'graphCohesion.noBrokers': 'Пока нет сущностей с двумя или более связями.',
  'graphCohesion.rankedHeading': 'Брокеры — самые разреженные окрестности',
  'graphCohesion.retry': 'Повторить',
  'graphCohesion.summaryCaption': 'Средняя кластеризация {avg} · транзитивность {transitivity}',
  'graphCohesion.title': 'Связность графа',
  'memory.tab.cohesion': 'Cohesion',

  'harnessInit.title': 'Идёт настройка',

  'announcement.gotIt': 'Понятно',
  'harnessInit.subtitle': 'OpenHuman готовит компоненты, необходимые при первом запуске.',
  'harnessInit.stepPython': 'Среда выполнения Python',
  'harnessInit.stepSpacy': 'Языковая модель',
  'harnessInit.stepNode': 'Среда выполнения Node.js',
  'harnessInit.statePending': 'Ожидание',
  'harnessInit.stateRunning': 'Установка…',
  'harnessInit.stateDone': 'Готово',
  'harnessInit.stateSkipped': 'Пропущено',
  'harnessInit.stateFailed': 'Ошибка',
  'harnessInit.failedMessage':
    'Некоторые шаги настройки не завершились. Вы можете повторить попытку или продолжить — OpenHuman использует встроенный резервный вариант.',
  'harnessInit.retry': 'Повторить',
  'harnessInit.continueAnyway': 'Всё равно продолжить',
  'harnessInit.runInBackground': 'Запустить в фоновом режиме',
  'harnessInit.backgroundHint':
    'Вы можете продолжать пользоваться OpenHuman, пока это завершается.',

  'keyring.consent.title': 'Безопасное хранилище недоступно',
  'keyring.consent.description':
    'Связка ключей вашей операционной системы недоступна. OpenHuman необходимо ваше разрешение на хранение секретов в локальном зашифрованном хранилище.',
  'keyring.consent.reasonPrefix': 'Причина:',
  'keyring.consent.showDetails': 'Что это значит?',
  'keyring.consent.hideDetails': 'Скрыть подробности',
  'keyring.consent.tradeoffTitle': 'Компромисс безопасности',
  'keyring.consent.tradeoffBody':
    'При локальном зашифрованном хранении ваши секреты шифруются на диске с помощью мастер-ключа, который хранится рядом с данными. Это менее безопасно, чем связка ключей ОС, которая использует аппаратную защиту. Резервные копии или синхронизация файлов могут включать зашифрованные данные.',
  'keyring.consent.consentButton': 'Использовать локальное зашифрованное хранилище',
  'keyring.consent.retryButton': 'Повторить OS Keychain',
  'keyring.consent.declineButton': 'Отклонить',
  'keyring.consent.retrying': 'Повторная попытка…',
  'keyring.consent.error': 'Не удалось сохранить настройку. Попробуйте снова.',
  'keyring.consent.retryFailed': 'Связка ключей по-прежнему недоступна.',
  'keyring.settings.title': 'Безопасность',
  'keyring.settings.storageMode': 'Режим хранения секретов',
  'keyring.settings.mode.osKeychain': 'Связка ключей ОС',
  'keyring.settings.mode.encryptedFile': 'Локальное шифрование',
  'keyring.settings.mode.consentPending': 'Не настроено',
  'keyring.settings.mode.declined': 'Отклонено',
  'keyring.settings.availability': 'Доступность связки ключей',
  'keyring.settings.available': 'Связка ключей ОС доступна',
  'keyring.settings.unavailable': 'Связка ключей ОС недоступна',
  'keyring.settings.backend': 'Движок',
  'keyring.settings.retryButton': 'Повторить обнаружение связки ключей',
  'keyring.settings.retryFailed':
    'Повторная попытка не удалась. Связка ключей по-прежнему недоступна.',
  'keyring.settings.consentTitle': 'Согласие на хранение',
  'keyring.settings.consentDescription':
    'Выберите способ хранения секретов, когда связка ключей ОС недоступна.',
  'keyring.settings.grantConsent': 'Разрешить локальное зашифрованное хранилище',
  'keyring.settings.revokeConsent': 'Отклонить локальное хранилище',
  'pages.settings.account.security': 'Безопасность',
  'pages.settings.account.securityDesc': 'Режим хранения секретов и статус связки ключей',
  // #002 memory-pipeline-hardening: degraded badges + typed remediation.
  'memoryTree.status.statusDegraded': 'Ухудшено',
  'memoryTree.status.degradedRecall': 'Семантический поиск отключён',
  'memoryTree.status.degradedStructure': 'Структура вики неполная',
  'memoryTree.status.extractionCoverage': 'Охват извлечения: {pct}% фрагментов имеют структуру',
  'memory.health.remediation.budget_exhausted':
    'Эмбеддинги памяти исчерпали управляемый бюджет. Настройте локальные эмбеддинги Ollama (Настройки → ИИ → Эмбеддинги) или добавьте свой ключ API для эмбеддингов, чтобы продолжить построение памяти.',
  'memory.health.remediation.auth_missing':
    'Учётные данные для эмбеддингов не найдены. Войдите в OpenHuman или настройте локальные эмбеддинги Ollama в разделе Настройки → ИИ → Эмбеддинги.',
  'memory.health.remediation.auth_invalid':
    'Ваши учётные данные для эмбеддингов отклонены. Пройдите аутентификацию заново или переключитесь на локальные эмбеддинги Ollama в разделе Настройки → ИИ → Эмбеддинги.',
  'memory.health.remediation.embeddings_unconfigured':
    'Поставщик эмбеддингов не настроен, поэтому семантический поиск отключён. Настройте локальные эмбеддинги Ollama (рекомендуется) или добавьте ключ эмбеддингов в разделе Настройки → ИИ → Эмбеддинги.',
  'memory.health.remediation.embedding_dim_mismatch':
    'Модель эмбеддингов возвращает неверный размер вектора (память ожидает 1024 измерения). Выберите модель с 1024 измерениями или запросите 1024 измерения у своего поставщика.',
  'memory.health.remediation.local_model_unavailable':
    'Требуемая локальная модель недоступна. Установите/запустите Ollama и загрузите модель либо переключите эту задачу на облачного поставщика в разделе Настройки → ИИ.',
  'memory.health.remediation.extraction_timeout':
    'Модель извлечения памяти превышает время ожидания, поэтому в вики мало структуры. Выберите более быструю модель извлечения памяти в разделе Настройки → ИИ.',
  'memory.health.remediation.summarizer_unavailable':
    'Нет доступного поставщика суммаризации для «Построить деревья сводок». Включите локальный ИИ (Ollama) или включите облачную суммаризацию в разделе Настройки → ИИ → Память.',
  'memory.health.remediation.empty_input_refused':
    'Элемент памяти пропущен, так как его текст был пуст. Действия не требуются — новые элементы продолжают встраиваться как обычно.',
  'memory.health.remediation.storage_unavailable':
    'OpenHuman не может записывать в хранилище памяти — диск или SD-карта, похоже, неисправны, заполнены или доступны только для чтения. Проверьте накопитель и освободите место; обработка памяти возобновится автоматически, как только запись снова станет возможной.',
  'memory.health.remediation.transient':
    'Временная ошибка прервала обработку памяти. Повтор произойдёт автоматически.',
  'memory.health.remediation.unknown':
    'При обработке памяти возникла проблема. Проверьте конфигурацию в разделе Настройки → ИИ.',
  // Chat — agent-generated artifacts (#2779)

  // Chat composer toolbar
  'composer.attachFile': 'Прикрепить файл',
  'composer.modelSelector': 'Модель',
  'composer.voiceMode': 'Голосовой режим',
  'composer.qualityHigh': 'Высокое',
  // Agent activity level
  'activityLevel.title': 'Уровень активности агента',
  'activityLevel.description':
    'Управляйте проактивностью вашего агента. Более высокие уровни потребляют больше токенов.',
  'activityLevel.off': 'Выкл.',
  'activityLevel.offDesc': 'Нет фоновой обработки. Синхронизация только по нажатию кнопки.',
  'activityLevel.minimal': 'Минимальный',
  'activityLevel.minimalDesc': 'Синхронизация источников раз в день. Нет проактивных сообщений.',
  'activityLevel.moderate': 'Умеренный',
  'activityLevel.moderateDesc': 'Синхронизация каждый час. Ежедневная сводка. Предлагает действия.',
  'activityLevel.active': 'Активный',
  'activityLevel.activeDesc':
    'Синхронизация каждые 10 мин. Мониторинг каналов, сортировка и составление ответов.',
  'activityLevel.alwaysOn': 'Всегда включён',
  'activityLevel.alwaysOnDesc':
    'Синхронизация в реальном времени. Полная автономия в рамках ограничений.',
  'activityLevel.currentMonth': 'В этом месяце: ${amount}',
  'activityLevel.saved': 'Уровень активности обновлён.',
  'activityLevel.default': 'по умолчанию',
  'activityLevel.costFree': '0 $',
  'activityLevel.costRange': '~${min}–${max}/мес.',

  // Sync budget dialog
  'syncBudget.title': 'Бюджет синхронизации',
  'syncBudget.maxTokens': 'Макс. токенов на синхронизацию',
  'syncBudget.maxTokensHelp':
    'Остановить синхронизацию после потребления указанного количества токенов.',
  'syncBudget.maxCost': 'Макс. стоимость на синхронизацию (USD)',
  'syncBudget.maxCostHelp': 'Жёсткий лимит в долларах за один запуск синхронизации.',
  'syncBudget.syncDepth': 'Глубина синхронизации',
  'syncBudget.syncDepthHelp': 'Загружать только элементы из этого временного окна.',
  'syncBudget.days7': 'Последние 7 дней',
  'syncBudget.days30': 'Последние 30 дней',
  'syncBudget.days90': 'Последние 90 дней',
  'syncBudget.allTime': 'За всё время',
  'syncBudget.unlimited': 'Без ограничений',
  'syncBudget.saved': 'Бюджет сохранён.',

  // Sync confirm dialog
  'syncConfirm.title': 'Подтвердить синхронизацию',
  'syncConfirm.message':
    'Эта синхронизация обработает ~{items} элементов (~{tokens} токенов, ест. ${cost}).',
  'syncConfirm.budgetNote': 'Лимит бюджета: ${max}',
  'syncConfirm.proceed': 'Продолжить',
  'syncConfirm.cancel': 'Отмена',
  'syncConfirm.estimating': 'Оценка стоимости...',

  // Monthly cost badge
  'monthlyCost.badge': '${amount} в этом месяце',
  'monthlyCost.noData': 'Синхронизаций в этом месяце нет',

  // Onboarding: Custom > Activity
  'onboarding.custom.stepperActivity': 'Активность',
  'onboarding.custom.stepperVault': 'Хранилище',
  'onboarding.custom.activity.title': 'Активность агента',
  'onboarding.custom.activity.subtitle':
    'Насколько проактивно агент отслеживает события и действует в фоне.',
  'onboarding.custom.activity.defaultDesc':
    'Умеренная активность — синхронизация каждый час, ежедневная сводка.',
  'onboarding.custom.activity.configureDesc':
    'Выберите свой уровень активности. Настройка в Параметры › Уровень активности агента.',
  'onboarding.custom.vault.title': 'Настройка памяти и хранилища',
  'onboarding.custom.vault.subtitle':
    'Подтвердите, куда записываются заметки памяти, как считываются исходные данные и исправно ли работает конвейер хранилища.',
  'onboarding.custom.vault.defaultDesc':
    'Использовать настройки памяти по умолчанию, управляемые OpenHuman. Путь к хранилищу и состояние синхронизации можно проверить позже.',
  'onboarding.custom.vault.configureDesc':
    'Проверьте владельца хранилища, выполните проверки состояния и настройте параметры памяти прямо сейчас.',
  'onboarding.custom.vault.localDisabledReason':
    'Управляемая настройка требует входа в OpenHuman и недоступна в локальном режиме.',
  'onboarding.custom.vault.exitError':
    'Не удалось завершить настройку. Пожалуйста, попробуйте ещё раз.',
  'vaultHealth.title': 'Контрольный список состояния хранилища',
  'vaultHealth.setupTitle': 'Состояние настройки хранилища',
  'vaultHealth.workspaceVault': 'Хранилище рабочего пространства:',
  'vaultHealth.refresh': 'Обновить',
  'vaultHealth.refreshing': 'Обновление…',
  'vaultHealth.revealFolder': 'Показать папку',
  'vaultHealth.openInObsidian': 'Открыть в Obsidian',
  'vaultHealth.installObsidian': 'Установить Obsidian',
  'vaultHealth.openObsidianError': 'Не удалось открыть Obsidian',
  'vaultHealth.revealError': 'Не удалось показать папку хранилища',
  'vaultHealth.downloadError': 'Не удалось открыть страницу загрузки Obsidian',
  'vaultHealth.loadError': 'Не удалось загрузить состояние хранилища:',
  'vaultHealth.lastSync': 'Последняя синхронизация:',
  'vaultHealth.passed': 'Пройдено',
  'vaultHealth.needsAttention': 'Требует внимания',
  'vaultHealth.existsLabel': 'Путь к хранилищу рабочего пространства существует',
  'vaultHealth.existsRecovery':
    'Папка хранилища отсутствует. Запустите синхронизацию или создайте эту папку, затем обновите контрольный список.',
  'vaultHealth.writableLabel': 'Хранилище доступно для записи OpenHuman',
  'vaultHealth.writableRecovery':
    'OpenHuman пока не может записывать в это хранилище. Предоставьте права на запись и обновите страницу.',
  'vaultHealth.obsidianLabel': 'Хранилище зарегистрировано в Obsidian',
  'vaultHealth.obsidianRecovery':
    'В Obsidian выберите «Открыть папку как хранилище» для этого пути, затем обновите контрольный список.',
  'vaultHealth.pipelineLabel': 'Конвейер памяти работает исправно',
  'vaultHealth.pipelineRecovery':
    'Конвейер памяти приостановлен или находится в состоянии ошибки. Повторно включите автосинхронизацию в статусе дерева памяти и повторите попытку.',
  'vaultHealth.timeNever': 'Никогда',
  'vaultHealth.timeJustNow': 'только что',
  'vaultHealth.timeMinAgo': '{n} мин назад',
  'vaultHealth.timeHrAgo': '{n} ч назад',
  'vaultHealth.timeDayAgo': '{n} день назад',
  'vaultHealth.timeDaysAgo': '{n} дн назад',
  'memoryData.howItWorks': 'Как работает хранение памяти',
  'memoryData.workspaceVault': 'Хранилище рабочего пространства · запись',
  'memoryData.workspaceVaultDesc':
    'OpenHuman записывает сгенерированные заметки памяти в memory_tree/content.',
  'memoryData.connectedSources': 'Подключённые источники · чтение',
  'memoryData.connectedSourcesDesc':
    'Папки, почтовые ящики, чаты и репозитории импортируются для индексирования памяти — исходные файлы никогда не перезаписываются.',
  'memoryData.internalFiles': 'Внутренние файлы дерева памяти',
  'memoryData.internalFilesDesc':
    'Индексы, состояние очереди и сводки управляются OpenHuman для поддержания исправного восстановления и синхронизации.',
  'memoryData.windowError': 'Окно памяти',
  'memoryData.windowUpdated': 'Окно памяти обновлено',
  'memoryData.windowUpdatedMsg': 'Установлено значение {window}.',
  'skills.create.whenToUse': 'Когда использовать',
  'skills.create.whenToUsePlaceholder': 'напр., когда пользователь просит разобрать входящие',
  'skills.create.whenToUseHelp':
    'Триггер, по которому агент решает запустить этот рабочий процесс. Оставьте пустым, чтобы использовать описание.',
  'skills.create.inputs.row.descriptionError': 'Для каждого ввода требуется описание.',
  'skills.detail.run': 'Запустить',
  'skills.detail.runAriaLabel': 'Запустить этот рабочий процесс',
  'skills.run.title': 'Рабочий процесс',
  'workflows.installFromUrl': 'Установить по URL',
  // Security banner (approval-gate host-aware boot state)
  'security.approvalGateDisabled.title': 'Шлюз одобрения отключён',
  'security.approvalGateDisabled.body':
    'В вашей среде установлено OPENHUMAN_APPROVAL_GATE=0. Инструменты с внешним эффектом будут запускаться без запроса подтверждения.',
  'security.approvalGateOverrideIgnored.title': 'Переопределение заблокировано',
  'security.approvalGateOverrideIgnored.body':
    'Обнаружено переопределение OPENHUMAN_APPROVAL_GATE=0, но оно проигнорировано: настольное приложение всегда держит шлюз одобрения включённым.',

  // Run queue
  'runQueue.mode.interrupt': 'Прервать',
  'runQueue.mode.steer': 'Направить',
  'runQueue.mode.followup': 'Продолжение',
  'runQueue.mode.collect': 'Добавить контекст',
  'runQueue.queued': 'Сообщение в очереди',
  'runQueue.steerHint': 'Направить текущий ход',
  'runQueue.followupHint': 'Добавить в очередь как продолжение',
  'runQueue.collectHint': 'Добавить как дополнительный контекст',
  'runQueue.status': '{total} в очереди',
  'runQueue.cleared': 'Очередь очищена',
  'notch.ready': 'Готово',
  'notch.processing': 'Обработка…',
  'notch.listening': 'Слушаю…',
  'notch.thinking': 'Думаю…',
  'notch.speaking': 'Говорю…',
  'notch.transcribing': 'Транскрибирую…',
  'notch.executing': 'Выполняю…',
  'memory.tab.orchestration': 'Оркестрация',
  'memory.tab.orchestrationDescription':
    'Запускайте мультиагентные рабочие процессы — распределяйте вопрос между параллельными агентами, перепроверяйте их выводы и наблюдайте, как каждая фаза сходится в единый синтезированный ответ.',
  'orchestration.subtitle':
    'Запустите мультиагентный рабочий процесс, следите за ходом его фаз и читайте синтезированный результат.',
  'orchestration.loading': 'Загрузка рабочих процессов…',
  'orchestration.failedToLoad': 'Не удалось загрузить рабочие процессы',
  'orchestration.definitions': 'Доступные рабочие процессы',
  'orchestration.noDefinitions': 'Нет доступных определений рабочих процессов.',
  'orchestration.approvalRequired': 'Требуется подтверждение',
  'orchestration.start': 'Запустить',
  'orchestration.confirmStart': 'Запустить выполнение',
  'orchestration.starting': 'Запуск…',
  'orchestration.questionLabel': 'Исследовательский вопрос (необязательно)',
  'orchestration.questionPlaceholder': 'Что должны исследовать агенты?',
  'orchestration.runProgress': 'Ход выполнения',
  'orchestration.recentRuns': 'Недавние выполнения',
  'orchestration.noRuns': 'Пока нет выполнений рабочих процессов.',
  'orchestration.close': 'Закрыть',
  'orchestration.tier.readOnly': 'Только чтение',
  'orchestration.tier.standard': 'Стандартный',
  'orchestration.tier.editCapable': 'С правом изменения',
  'orchestration.approval.title': 'Подтвердить это выполнение рабочего процесса',
  'orchestration.approval.body':
    'Это дорогостоящее или высокопараллельное выполнение, требующее вашего явного подтверждения перед запуском:',
  'orchestration.approval.reason.tier':
    'Его агенты могут выполнять действия за пределами исследования только для чтения.',
  'orchestration.approval.reason.concurrency': 'Он одновременно запускает множество агентов.',
  'orchestration.approval.reason.children':
    'Он может в совокупности порождать очень большое число агентов.',
  'orchestration.approval.tier': 'Уровень безопасности',
  'orchestration.approval.concurrency': 'Параллелизм',
  'orchestration.approval.maxChildren': 'Макс. агентов',
  'orchestration.approval.approve': 'Подтвердить и запустить',
  'orchestration.approval.starting': 'Запуск…',
  'orchestration.approval.cancel': 'Отмена',
  'orchestration.runStatus.pending': 'В ожидании',
  'orchestration.runStatus.running': 'Выполняется',
  'orchestration.runStatus.completed': 'Завершено',
  'orchestration.runStatus.failed': 'Не удалось',
  'orchestration.runStatus.cancelled': 'Отменено',
  'orchestration.runStatus.interrupted': 'Прервано',
  'orchestration.phaseStatus.pending': 'В ожидании',
  'orchestration.phaseStatus.running': 'Выполняется',
  'orchestration.phaseStatus.completed': 'Завершена',
  'orchestration.phaseStatus.failed': 'Не удалась',
  'orchestration.detail.stop': 'Остановить',
  'orchestration.detail.resume': 'Возобновить',
  'orchestration.detail.agents': 'агенты',
  'orchestration.detail.childRefs': 'Дочерние агенты',
  'orchestration.detail.synthesis': 'Итоговый синтез',
  // ── Agent Profiles ───────────────────────────────────────────────────────
  'settings.profiles.title': 'Профили агента',
  'settings.profiles.subtitle':
    'Агенты с характером — у каждого своя душа, память, коннекторы и навыки.',
  'settings.profiles.menuDesc': 'Создавайте профили агента и управляйте ими',
  'settings.profiles.new': 'Новый профиль',
  'settings.profiles.empty': 'Профилей агента пока нет',
  'settings.profiles.loadError': 'Не удалось загрузить профили',
  'settings.profiles.active': 'Активный',
  'settings.profiles.setActive': 'Сделать активным',
  'settings.profiles.sourceBuiltIn': 'Встроенный',
  'settings.profiles.sourceCustom': 'Пользовательский',
  'settings.profiles.deleteConfirm': 'Удалить этот профиль? Это действие нельзя отменить.',
  'settings.profiles.editor.createTitle': 'Новый профиль',
  'settings.profiles.editor.editTitle': 'Изменить профиль',
  'settings.profiles.editor.name': 'Имя',
  'settings.profiles.editor.id': 'Идентификатор',
  'settings.profiles.editor.idHint': 'Только строчные буквы, цифры и дефисы.',
  'settings.profiles.editor.description': 'Описание',
  'settings.profiles.editor.soul': 'Душа (SOUL.md)',
  'settings.profiles.editor.soulHint':
    'Пользовательская идентичность этого профиля. Пусто — используется SOUL.md рабочей области.',
  'settings.profiles.editor.baseAgent': 'Базовый агент',
  'settings.profiles.editor.baseAgentHint':
    'Под каким определением агента работает этот профиль (например, orchestrator).',
  'settings.profiles.editor.model': 'Модель',
  'settings.profiles.editor.modelHint':
    'Необязательная замена модели. Пусто — наследует значение по умолчанию.',
  'settings.profiles.editor.temperature': 'Температура',
  'settings.profiles.editor.systemPromptSuffix': 'Суффикс системного запроса',
  'settings.profiles.editor.agentConversations': 'Вспоминать разговоры агента',
  'settings.profiles.editor.agentConversationsHint':
    'Включать память прошлых и межчатовых разговоров в контекст этого профиля.',
  'settings.profiles.editor.memorySources': 'Источники памяти',
  'settings.profiles.editor.memorySourcesHint':
    'Источники памяти, из которых вспоминает этот профиль.',
  'settings.profiles.editor.connectors': 'Коннекторы',
  'settings.profiles.editor.connectorsHint':
    'Наборы инструментов Composio, которые может использовать этот профиль.',
  'settings.profiles.editor.skills': 'Навыки',
  'settings.profiles.editor.skillsHint':
    'Рабочие процессы, которые этот профиль может перечислять и запускать.',
  'settings.profiles.editor.mcpServers': 'Серверы MCP',
  'settings.profiles.editor.mcpServersHint':
    'Серверы MCP, к которым может обращаться этот профиль.',
  'settings.profiles.editor.all': 'Все',
  'settings.profiles.editor.selected': 'Выбранные',
  'settings.profiles.editor.addPlaceholder': 'Введите идентификатор и нажмите Enter',
  'settings.profiles.editor.removeAria': 'Удалить {item}',
  'settings.profiles.editor.notFound': 'Профиль не найден',
  'settings.profiles.editor.saving': 'Сохранение…',
  'settings.profiles.editor.idRequired': 'Идентификатор профиля не может быть пустым',
  'agentworld.jobs.applyModal.title': 'Откликнуться на вакансию',
  'agentworld.jobs.applyModal.successHeading': 'Предложение успешно отправлено!',
  'agentworld.jobs.applyModal.successBody': 'Работодатель рассмотрит вашу заявку.',
  'agentworld.jobs.applyModal.coverLetterLabel': 'Сопроводительное письмо',
  'agentworld.jobs.applyModal.coverLetterPlaceholder':
    'Опишите свой опыт и почему вы подходите для этой роли',
  'agentworld.jobs.applyModal.bidAmountLabel': 'Сумма предложения',
  'agentworld.jobs.applyModal.bidAmountPlaceholder': 'напр. 450 USDC',
  'agentworld.jobs.applyModal.deliveryLabel': 'Ориентировочный срок выполнения',
  'agentworld.jobs.applyModal.deliveryPlaceholder': 'напр. 2 недели',
  'agentworld.jobs.applyModal.cancel': 'Отмена',
  'agentworld.jobs.applyModal.submit': 'Отправить заявку',
  'agentworld.jobs.applyModal.submitting': 'Отправка…',
  'agentworld.messaging.missingSignalBundle':
    'Этот пользователь еще не включил зашифрованные сообщения. Попросите его открыть Agent World и включить безопасные личные сообщения перед отправкой.',

  // User-actionable runtime errors (#3931)
  'userErrors.title': 'Требуется действие',
  'userErrors.dismiss': 'Отклонить',
  'userErrors.action.openBilling': 'Открыть оплату',
  'userErrors.action.openProviderSettings': 'Настройки провайдера',
  'userErrors.budgetExceeded.title': 'Управляемый бюджет исчерпан',
  'userErrors.budgetExceeded.body': 'Управляемый бюджет ИИ исчерпан. Измените план.',
  'userErrors.insufficientCredits.title': 'Требуются кредиты провайдера',
  'userErrors.insufficientCredits.body': 'У провайдера закончились кредиты. Пополните их.',
  'userErrors.apiKeyMissing.title': 'Требуется ключ API',
  'userErrors.apiKeyMissing.body':
    'У провайдера ИИ не задан ключ API. Добавьте его в настройках провайдера.',
  'userErrors.scope.chat': 'Чат',
  'userErrors.scope.cron': 'Запланированная задача',
  // Agent World — Identity trading (confirm-before-spend + balance gate)
  'agentWorld.trading.amountLabel': 'Сумма',
  'agentWorld.trading.networkLabel': 'Сеть',
  'agentWorld.trading.balanceLabel': 'Ваш баланс',
  'agentWorld.trading.walletLabel': 'Кошелёк',
  'agentWorld.trading.balanceUnknown': 'Неизвестно',
  'agentWorld.trading.cancel': 'Отмена',
  'agentWorld.trading.addFunds': 'Пополнить',
  'agentWorld.trading.confirmPay': 'Подтвердить и оплатить',
  'agentWorld.trading.confirmCommit': 'Подтвердить',
  'agentWorld.trading.continue': 'Продолжить',
  'agentWorld.trading.submitting': 'Отправка…',
  'agentWorld.trading.placeBid': 'Сделать ставку',
  'agentWorld.trading.submitOffer': 'Отправить предложение',
  'agentWorld.trading.bidTitlePrefix': 'Ставка на',
  'agentWorld.trading.offerTitlePrefix': 'Предложение для',
  'agentWorld.trading.bidReviewTitlePrefix': 'Подтвердите ставку на',
  'agentWorld.trading.offerReviewTitlePrefix': 'Подтвердите предложение для',
  'agentWorld.trading.spendInsufficient':
    'Недостаточно средств для совершения этого платежа. Пополните кошелёк, чтобы продолжить.',
  'agentWorld.trading.spendBroadcastNote': 'Ваш кошелёк подпишет и отправит этот платёж в сети',
  'agentWorld.trading.commitInsufficientWarning':
    'Вашего баланса может не хватить, если обязательство будет принято. Вы всё равно можете его отправить — средства списываются только при принятии.',
  'agentWorld.trading.commitSettleNote':
    'Это подписанное обязательство — средства списываются только при его принятии.',
  'agentWorld.trading.commitReviewSubtitle': 'Проверьте обязательство перед отправкой.',
  'agentWorld.trading.balanceUnverified':
    'Нам не удалось проверить баланс вашего кошелька. Вы всё равно можете продолжить — платёж проверяется при отправке.',
  'agentWorld.trading.amountTooManyDecimals': 'В этой сумме слишком много знаков после запятой.',
  'agentWorld.trading.amountMustBePositive': 'Введите сумму больше нуля.',
  'agentWorld.trading.amountInvalid': 'Введите корректную сумму.',

  // Code block chrome
  'codeBlock.copy': 'Копировать',
  'codeBlock.copied': 'Скопировано!',
};

export default messages;
