{
  "chat": {
    "title": "AI-помощник",
    "tabAssistant": "Чат",
    "tabGenerate": "Генерация 3D-модели",
    "sessionsTooltip": "Сессии чата",
    "sessionsLocked": "Сессии чата (заблокировано во время ответа)",
    "placeholder": "Опишите, что вы хотите создать или исправить...",
    "send": "Отправить",
    "stop": "Остановить",
    "newChat": "+ Новый чат",
    "discordLink": "Нужна помощь? Присоединяйтесь к нашему Discord",
    "thinking": "ParallaxPro AI думает...",
    "sessionIdCopied": "Скопировано!",
    "sessionIdTooltip": "Нажмите, чтобы скопировать ID сессии",
    "changesApplied": "Изменения применены",
    "revertBefore": "Откатить к состоянию до",
    "revertHere": "Откатить к этому состоянию",
    "templateBanner": "Шаблон загружен — ваши предыдущие файлы проекта были заменены.",
    "templateRestore": "Восстановить мой предыдущий проект",
    "createScratch": "Создать с нуля вместо этого шаблона (20-30 мин)",
    "createScratchRecommended": "Обычно даёт лучший результат, чем шаблоны",
    "fixerHint": "Это может занять до 10 минут — можете оставить страницу открытой, но не закрывайте её.",
    "continue": "Продолжить",
    "rawFilesTitle": "Необработанный диалог сессии",
    "rawFilesEmpty": "В этой сессии ещё нет файлов.",
    "buildingPlan": "План сборки",
    "todoPaused": "Приостановлено",
    "tabSoundEffects": "Звуковые эффекты"
  },
  "feedback": {
    "titleCreate": "Спасибо, что попробовали конструктор!",
    "titleFix": "Спасибо, что воспользовались AI-помощником!",
    "thankYou": "Ваш отзыв невероятно ценен и напрямую помогает нам улучшать продукт для всех. Мы очень ценим, что вы нашли время поделиться своим опытом!",
    "promptLabelCreate": "Вы попросили конструктор:",
    "promptLabelFix": "Вы попросили агента:",
    "rateLabel": "Это сработало?",
    "worked": "Сработало",
    "notWorked": "Не сработало",
    "notesLabel": "Что-то сломано или можно улучшить?",
    "notesPlaceholder": "Что работает? Что не так? Что бы вы изменили?",
    "restoreNote": "Не хотите сохранить эту сборку? Вы можете восстановить проект к прежнему состоянию.",
    "restoreButton": "Восстановить проект до этой сборки",
    "restoring": "Восстановление…",
    "dismiss": "Закрыть",
    "dismissTooltip": "Закрыть эту форму обратной связи. Она больше не появится для этого изменения.",
    "submit": "Отправить отзыв",
    "submitting": "Отправка…",
    "noPrompt": "(нет записи запроса)"
  },
  "signup": {
    "createGame": "Чтобы создать игру с нуля вместо использования этого шаблона, вам нужно сначала зарегистрироваться.",
    "fixGame": "Чтобы запустить исправление вашей игры, вам нужно сначала зарегистрироваться.",
    "budget": "Вы исчерпали бесплатный анонимный бюджет — зарегистрируйтесь, чтобы продолжить.",
    "default": "Вам нужно сначала зарегистрироваться.",
    "button": "Зарегистрироваться бесплатно"
  },
  "toolbar": {
    "backToProjects": "Назад к проектам",
    "untitled": "Проект без названия",
    "renameTooltip": "Нажмите, чтобы переименовать",
    "save": "Сохранить (Ctrl+S)",
    "undo": "Отменить (Ctrl+Z)",
    "redo": "Повторить (Ctrl+Y / Ctrl+Shift+Z)",
    "translate": "Перемещение (1)",
    "rotate": "Вращение (2)",
    "scale": "Масштаб (3)",
    "cameraMode": "Переключить Orbit / Fly (4)",
    "gizmoSpace": "Переключить Global / Local (5)",
    "play": "Играть",
    "stop": "Стоп",
    "loading": "Загрузка...",
    "publish": "Опубликовать",
    "feedback": "Обратная связь",
    "settings": "Настройки",
    "multiplayer": "Мультиплеер",
    "multiplayerTooltip": "Ссылка на комнату мультиплеера",
    "shareLink": "Поделитесь этой ссылкой, чтобы пригласить игроков:",
    "copyLink": "Копировать ссылку",
    "copied": "Скопировано!",
    "previewClient": "+ Client",
    "previewClientTooltip": "Открыть ещё одно окно этого проекта для локального тестирования мультиплеера",
    "teamChat": "Чат команды",
    "teamChatPlaceholder": "Введите сообщение...",
    "unsavedConfirm": "У вас есть несохранённые изменения. Выйти без сохранения?",
    "moveLabel": "Перемещение",
    "rotateLabel": "Вращение",
    "scaleLabel": "Масштаб",
    "orbitLabel": "Orbit",
    "flyLabel": "Fly",
    "globalLabel": "Global",
    "localLabel": "Local",
    "flyMode": "Режим Fly (4)",
    "orbitMode": "Режим Orbit (4)",
    "localSpace": "Локальное пространство (5)",
    "globalSpace": "Глобальное пространство (5)",
    "playCtrlP": "Играть (Ctrl+P)",
    "loadingAssets": "Загрузка ассетов",
    "projectSaved": "Проект сохранён",
    "projectRenamed": "Проект переименован",
    "renameFailed": "Не удалось переименовать",
    "renameProject": "Переименовать проект",
    "projectNamePlaceholder": "Название проекта",
    "playerConnected": "{count} игрок подключён",
    "playersConnected": "{count} игроков подключено",
    "joined": "присоединился",
    "left": "вышел",
    "you": "Вы",
    "startedMultiplayer": "начал многопользовательскую сессию"
  },
  "settings": {
    "chatAgent": "Агент чата",
    "editingAgent": "Агент редактирования",
    "graphicsQuality": "Качество графики",
    "cloudSync": "Облачная синхронизация",
    "cloudSignIn": "Войти",
    "cloudSigningIn": "Вход…",
    "cloudSynced": "Этот проект синхронизируется с parallaxpro.ai при каждом сохранении.",
    "cloudHint": "Синхронизируйте этот проект с parallaxpro.ai, чтобы продолжить работу с любого компьютера.",
    "cloudPromote": "Перенести в облако",
    "cloudPromoting": "Синхронизация…",
    "cloudSignedOutHint": "Войдите в parallaxpro.ai, чтобы включить облачную синхронизацию для этого проекта.",
    "cloudSignedOutCloudHint": "Это облачный проект, но вы вышли из системы — сохранения не достигают parallaxpro.ai. Войдите, чтобы возобновить синхронизацию.",
    "cloudSyncedCheck": "✓ Этот проект синхронизируется с parallaxpro.ai при каждом сохранении.",
    "cloudProjectSynced": "Проект синхронизирован с parallaxpro.ai.",
    "signedInToast": "Вы вошли в parallaxpro.ai.",
    "cancel": "Отмена",
    "save": "Сохранить",
    "chatAgentHint": "Рекомендовано: LLM API — быстрее (<1 сек. против 10-20 сек. на сообщение, потому что CLI перезапускается каждый ход), дешевле и выдаёт более чистый результат. CLI-агенты — это удобство, когда у вас нет API-ключа, но они работают в режиме агента, а не чата, и могут работать очень плохо — иногда выдавая вызовы инструментов вместо ответов.",
    "editingAgentHint": "Агент, запускаемый когда AI решает редактировать файлы вашего проекта.",
    "qualityLow": "Низкое",
    "qualityMedium": "Среднее",
    "qualityHigh": "Высокое",
    "qualityLowHint": "Базовый рендеринг, без теней",
    "qualityMediumHint": "Тени, FXAA-сглаживание, HBAO",
    "qualityHighHint": "Тени, MSAA-сглаживание, HBAO, отражения экранного пространства, bloom"
  },
  "editor": {
    "systemUpdated": "Система обновлена — попробуйте обновить страницу",
    "connectionLost": "Соединение потеряно — редактирование отключено до переподключения",
    "reconnecting": "Соединение потеряно. Переподключение...",
    "reconnected": "Подключение восстановлено",
    "reconnectFailed": "Не удалось переподключиться. Пожалуйста, проверьте соединение и обновите страницу.",
    "disconnectOverlay": "Редактирование отключено во время переподключения...",
    "disconnectRefresh": "Соединение потеряно. Пожалуйста, обновите страницу для продолжения редактирования."
  },
  "projectList": {
    "newProject": "+ Новый проект",
    "exit": "Выход",
    "backToLanding": "На главную страницу",
    "searchPlaceholder": "Поиск проектов...",
    "tabAll": "Все",
    "tabLocal": "Локальные проекты",
    "tabCloud": "Облачные проекты",
    "emptyDefault": "Проектов пока нет. Создайте свою первую игру!",
    "emptySearch": "Нет проектов, соответствующих вашему запросу.",
    "emptyCloud": "Облачных проектов пока нет. Публикация или перенос проекта добавит его сюда.",
    "cloudSignIn": "Войдите в parallaxpro.ai для доступа к облачным проектам.",
    "cloudSignInButton": "Войти",
    "selectAll": "Выбрать все",
    "deleteSelected": "Удалить выбранные",
    "prev": "‹ Назад",
    "next": "Далее ›",
    "draft": "Черновик",
    "published": "ОПУБЛИКОВАНО",
    "deprecated": "УСТАРЕЛО",
    "buildFailed": "СБОРКА НЕ УДАЛАСЬ",
    "justBuilt": "✓ ТОЛЬКО ЧТО СОБРАНО",
    "stopBuild": "Стоп",
    "stopTooltip": "Остановить эту сборку (процесс будет убит и проект разблокирован)",
    "anonBanner": "Вы просматриваете анонимно — ваши проекты хранятся только в этом браузере. Зарегистрируйтесь (бесплатно), чтобы сохранять их на разных устройствах и получить больше возможностей.",
    "anonSignup": "Регистрация",
    "anonLogin": "Войти",
    "restartNotice": "Мы можем перезапустить серверы в любое время по мере итерации и устранения проблем — приносим извинения за неудобства! Ваши проекты всегда сохраняются, но длительная AI-сборка может быть прервана и вам придётся повторить.",
    "newProjectModal": "Новый проект",
    "generateFromPrompt": "Сгенерировать по описанию",
    "generateHint": "Опишите идею игры, и AI создаст её для вас.",
    "generatePlaceholder": "Напр. 3D-платформер с двойным прыжком и сбором монет...",
    "buildFromTemplate": "Создать из шаблона",
    "templateHint": "Начните с готового игрового шаблона, который можно настроить.",
    "templateSearch": "Поиск шаблонов...",
    "login": "Войти",
    "loginTooltip": "Войдите в parallaxpro.ai, чтобы опубликовать этот проект",
    "logout": "Выйти",
    "generate": "Сгенерировать",
    "or": "или",
    "noTemplatesMatch": "Нет шаблонов, соответствующих вашему запросу",
    "loadingTemplates": "Загрузка...",
    "statusAll": "Все",
    "statusPublished": "Опубликованные",
    "statusDraft": "Черновики",
    "untitled": "Без названия",
    "moreActions": "Ещё действия",
    "open": "Открыть",
    "rename": "Переименовать",
    "duplicate": "Дублировать",
    "changeThumbnail": "Изменить миниатюру",
    "setThumbnail": "Установить миниатюру",
    "removeThumbnail": "Удалить миниатюру",
    "viewPublishedGame": "Просмотреть опубликованную игру",
    "updatePublish": "Опубликовать новую версию",
    "unpublish": "Снять с публикации",
    "delete": "Удалить",
    "clickToOpen": "Нажмите на карточку, чтобы открыть",
    "renameProject": "Переименовать проект",
    "newNamePlaceholder": "Новое название",
    "deleteProject": "Удалить проект",
    "deleteCloudProject": "Удалить облачный проект",
    "deleteLocalCopy": "Удалить локальную копию",
    "stopBuildConfirmTitle": "Остановить эту сборку?",
    "stopBuildConfirmMsg": "Процесс будет остановлен, и весь прогресс этой попытки будет потерян. Проект будет разблокирован — вы сможете начать заново с другим описанием.",
    "unpublishGame": "Снять игру с публикации",
    "cloudCopyDeleted": "Облачная копия удалена",
    "keepAsLocalOnly": "Оставить только локально",
    "deleteLocalToo": "Удалить и локально"
  },
  "share": {
    "title": "Поделиться проектом",
    "addPeople": "Добавить людей",
    "emailPlaceholder": "Email или имя пользователя",
    "editor": "Редактор",
    "viewer": "Наблюдатель",
    "share": "Поделиться",
    "peopleWithAccess": "Люди с доступом",
    "owner": "Владелец",
    "removeAccess": "Убрать доступ",
    "notSharedYet": "Ещё ни с кем не поделились.",
    "couldNotLoad": "Не удалось загрузить данные о доступе.",
    "enterEmailOrUsername": "Введите email или имя пользователя.",
    "invitationSent": "Приглашение отправлено на {email}",
    "sharedWith": "Доступ предоставлен {email}",
    "done": "Готово"
  },
  "feedbackModal": {
    "title": "Отправить отзыв",
    "whatFeedback": "Какой у вас отзыв?",
    "placeholder": "Опишите проблему, предложение или отзыв...",
    "screenshotsLabel": "Скриншоты (необязательно, макс. 5 изображений, 5 МБ каждое)",
    "addImage": "+ Добавить изображение",
    "exceedsLimit": "{name} превышает лимит 5 МБ.",
    "enterFeedback": "Пожалуйста, введите ваш отзыв.",
    "sendFailed": "Не удалось отправить отзыв.",
    "sent": "Отзыв отправлен! Спасибо.",
    "cancel": "Отмена",
    "send": "Отправить"
  },
  "assets": {
    "title": "Ассеты & Конечные автоматы & Производительность",
    "projectFiles": "Файлы проекта",
    "assetLibrary": "Библиотека ассетов",
    "fsm": "FSM",
    "performance": "Производительность",
    "scenes": "Сцены",
    "untitledScene": "Сцена без названия",
    "usedAssets": "Используемые ассеты",
    "searchAssets": "Поиск ассетов...",
    "allTypes": "Все типы",
    "assetLibraryBreadcrumb": "Библиотека ассетов",
    "noItemsFound": "Ничего не найдено",
    "noAssetsFound": "Ассеты не найдены",
    "prevPage": "‹ Назад",
    "nextPage": "Далее ›"
  },
  "hierarchy": {
    "title": "Иерархия",
    "addEntity": "Добавить сущность",
    "searchEntities": "Поиск сущностей...",
    "noSceneLoaded": "Сцена не загружена",
    "newScene": "Новая сцена",
    "emptyEntity": "Пустая сущность",
    "rename": "Переименовать",
    "deleteScene": "Удалить сцену",
    "createChild": "Создать дочерний",
    "deleteLocked": "Удалить (заблокировано)",
    "show": "Показать",
    "hide": "Скрыть"
  },
  "properties": {
    "title": "Свойства",
    "noSelection": "Сущность не выбрана",
    "entitiesSelected": "Выбрано сущностей: {count}",
    "active": "Активно",
    "enabled": "Включено",
    "addComponent": "Добавить компонент",
    "addComponentToAll": "Добавить компонент всем",
    "removeComponent": "Удалить компонент",
    "removeFromEntities": "Удалить из {count} сущностей",
    "reset": "Сбросить",
    "copyValues": "Копировать значения",
    "pasteValues": "Вставить значения",
    "addTag": "Добавить тег",
    "enterTagName": "Введите имя тега:",
    "scriptProperties": "Свойства",
    "viewFSMs": "Просмотр FSM",
    "viewFSMsTooltip": "Переключиться на вкладку FSM и показать конечные автоматы этой сущности",
    "sculptTerrain": "Скульптирование ландшафта",
    "stopSculpting": "Остановить скульптирование",
    "brush": "Кисть",
    "raise": "Поднять",
    "lower": "Опустить",
    "smooth": "Сгладить",
    "flatten": "Выровнять",
    "radius": "Радиус",
    "strength": "Сила"
  },
  "publish": {
    "title": "Опубликовать игру",
    "manage": "Управление опубликованной игрой",
    "gameName": "Название игры",
    "gameNamePlaceholder": "Моя крутая игра",
    "urlSlug": "URL Slug",
    "urlSlugPlaceholder": "my-awesome-game",
    "version": "Версия",
    "changelogLabel": "Список изменений (необязательно)",
    "changelogPlaceholder": "Что в этой версии...",
    "visibility": "Видимость",
    "visibilityPublic": "Публичная",
    "visibilityUnlisted": "Скрытая",
    "thumbnail": "Миниатюра (необязательно)",
    "noImage": "Нет изображения",
    "upload": "Загрузить",
    "change": "Изменить",
    "cancel": "Отмена",
    "publish": "Опубликовать",
    "gameNameRequired": "Название игры обязательно.",
    "slugInvalid": "Slug должен быть 3-64 символа, строчные буквы и дефисы.",
    "versionInvalid": "Введите корректную версию (напр. 1.0.0).",
    "publishNewVersion": "Опубликовать новую версию",
    "changelogOptional": "Список изменений (необязательно)",
    "versionRequired": "Введите корректную версию.",
    "setLive": "Сделать активной",
    "checkout": "Checkout",
    "revertConfirm": "Откатить проект к v{version}? Текущее состояние редактора будет заменено.",
    "unpublishGame": "Снять игру с публикации",
    "unpublishConfirm": "Снять эту игру с публикации? Она больше не будет доступна игрокам.",
    "successTitle": "Опубликовано!",
    "successMessage": "Версия {version} теперь активна!",
    "done": "Готово",
    "close": "Закрыть",
    "mismatchTitle": "Версия движка не поддерживается",
    "gotIt": "Понятно",
    "saving": "Сохранение…",
    "saved": "Сохранено"
  },
  "profiler": {
    "title": "Производительность",
    "engineNotRunning": "Движок не запущен",
    "copyStats": "Копировать статистику",
    "copied": "Скопировано!",
    "copyFailed": "Не удалось скопировать",
    "smoothness": "Плавность (последние 2 секунды)",
    "smoothnessHint": "Чем ниже и ровнее, тем лучше. Красная линия — плавные 60 fps.",
    "frameBudget": "На что уходит время кадра",
    "frameBudgetHint": "Группированный обзор того, на что движок тратит время каждый кадр.",
    "onScreen": "Что на экране",
    "drawCalls": "Draw calls",
    "triangles": "Треугольники",
    "entities": "Сущности",
    "showDetails": "Показать подробности",
    "cpuPhases": "Фазы CPU (за tickOneFrame)",
    "cpuPhasesHint": "Каждая фаза измеряется отдельно — полоса показывает долю общего времени тика.",
    "renderPasses": "Проходы рендеринга (CPU submit, мс)",
    "renderPassesHint": "Приблизительная стоимость прохода — время CPU на сборку и отправку команд. Не реальное время GPU.",
    "renderer": "Рендерер (последний кадр)",
    "meshesDrawn": "Отрисовано мешей",
    "scripts": "Скрипты",
    "meshesTotal": "Всего мешей",
    "scriptCost": "Стоимость скрипта (этот кадр)",
    "scriptCostHint": "Сумма onUpdate / onFixedUpdate / onLateUpdate по всем сущностям с одним скриптом.",
    "jsHeap": "JS heap (МБ)",
    "jsHeapHint": "Только Chrome — полезно для обнаружения утечек памяти.",
    "noDataYet": "Данных пока нет.",
    "noRenderPasses": "Нет измеренных проходов рендеринга.",
    "noScriptsActive": "Нет активных скриптов (нажмите Play, чтобы увидеть тайминги).",
    "labelSmooth": "Плавно",
    "labelOK": "OK",
    "labelChoppy": "Рывки",
    "labelLaggy": "Тормозит",
    "scripts_budget": "Скрипты",
    "physics_budget": "Физика",
    "animation_budget": "Анимация",
    "rendering_budget": "Рендеринг",
    "other_budget": "Другое"
  },
  "modal": {
    "cancel": "Отмена",
    "ok": "OK",
    "confirm": "Подтвердить"
  },
  "modelGen": {
    "health": {
      "checking": "проверка…",
      "unavailable": "Сервис GPU недоступен",
      "offline": "Офлайн — нет доступных воркеров",
      "onlineSingular": "Онлайн · доступен {count} воркер",
      "onlinePlural": "Онлайн · доступно {count} воркеров",
      "queuedSuffix": " · в очереди {count}"
    },
    "notice": {
      "searchFirstBold": "Сначала поищите в сообществе.",
      "searchFirstBody": "Просмотрите существующие 3D-модели в библиотеке сообщества ниже перед генерацией — это мгновенно и экономит время GPU.",
      "publicBold": "Мы можем сделать ваши генерации публичными.",
      "publicBody": "После проверки и рекомендации ваш промпт и созданная модель становятся видны другим пользователям. Не указывайте личную или защищённую авторским правом информацию."
    },
    "mode": {
      "fromText": "Из текста",
      "fromImage": "Из изображения"
    },
    "text": {
      "label": "Опишите 3D-модель:",
      "placeholder": "напр. \"деревянная бочка\", \"low-poly дерево\", \"меч в стиле аниме\"",
      "previewBtn": "Предпросмотр",
      "needPrompt": "Сначала введите промпт.",
      "tooShort": "Промпт должен содержать не менее {min} символов.",
      "generating": "Создание предпросмотра…",
      "previewFailed": "ошибка предпросмотра"
    },
    "image": {
      "label": "Загрузите изображение объекта:",
      "dropPrimary": "Нажмите, чтобы выбрать, или перетащите изображение",
      "dropHint": "PNG, JPG или WEBP — до 8 МБ",
      "tooLarge": "Изображение должно быть меньше 8 МБ.",
      "uploading": "Загрузка…",
      "uploadFailed": "ошибка загрузки",
      "labelInputLabel": "Подпишите это изображение (используется для поиска):",
      "labelInputPlaceholder": "напр. «красное яблоко», «средневековый шлем»"
    },
    "preview": {
      "labelText": "Предпросмотр — подтвердите, чтобы создать 3D-модель из этого изображения:",
      "labelImage": "Предпросмотр — подтвердите для генерации:",
      "refinePrompt": "Уточнить промпт",
      "chooseDifferent": "Выбрать другой файл",
      "confirm": "Подтвердить и создать 3D"
    },
    "submit": {
      "submitting": "Отправка…",
      "submitFailed": "ошибка отправки",
      "cacheHit": "✓ Найдена подходящая общая модель — добавлена в библиотеку."
    },
    "active": {
      "header": "В процессе",
      "uploadedImage": "(загруженное изображение)",
      "stageQueued": "в очереди",
      "stageStarting": "запуск",
      "stageFetching": "получение изображения",
      "stageGenerating": "генерация",
      "stageUploading": "загрузка",
      "stageOrienting": "ориентирование",
      "failedLabel": "Ошибка",
      "failedUnknown": "неизвестная ошибка",
      "dismissFailed": "Закрыть"
    },
    "library": {
      "scopeMine": "Мои генерации",
      "scopeCommunity": "Сообщество",
      "refresh": "Обновить библиотеку",
      "search": "Поиск по генерациям…",
      "empty": "Генераций пока нет.",
      "emptyMatches": "Совпадений не найдено.",
      "emptyCommunity": "В сообществе пока нет генераций.",
      "notAvailable": "Генерация 3D-моделей недоступна в этом бэкенде."
    },
    "errorPrefix": "Ошибка: {message}"
  },
  "soundFx": {
    "header": "Звуковые эффекты",
    "usageTooltip": "Количество загрузок за день. Сбрасывается в полночь по UTC.",
    "daily": "Сегодня: {today}/{limit}",
    "notice": {
      "privateBold": "Не в публичном списке, но не приватно.",
      "privateBody": "Только вы можете использовать эти клипы в чате или своих играх — но сами аудиофайлы не защищены аутентификацией.",
      "extract": "Любой, у кого есть URL (друг, которому вы поделились ссылкой, кто-то, получивший ссылку, или игрок вашей опубликованной игры с этим клипом), может скачать и переиспользовать аудио.",
      "tokenHint": "URL используют длинные случайные токены, поэтому их сложно угадать, но относитесь ко всему, что вы сюда загружаете, как к фактически публичному — не загружайте аудио, которое вы не хотите, чтобы извлекли."
    },
    "mode": {
      "upload": "Загрузить",
      "record": "Записать"
    },
    "upload": {
      "dropPrimary": "Перетащите аудиофайл или нажмите для выбора",
      "dropHint": "≤10с · wav, mp3, ogg, flac · макс. 2 MB",
      "reading": "Чтение файла…",
      "parseFailed": "Не удалось разобрать аудиофайл. Попробуйте другой формат.",
      "tooLarge": "Файл слишком большой ({mb} MB > 2 MB).",
      "tooLong": "Клип слишком длинный ({s}с > {max}с)."
    },
    "record": {
      "btnStart": "Запись",
      "btnStop": "Стоп",
      "hint": "Запись автоматически остановится через 10 секунд. Нажмите ещё раз, чтобы остановить раньше.",
      "micDenied": "Доступ к микрофону запрещён: {reason}",
      "recorderUnavailable": "Запись недоступна: {reason}",
      "encoding": "Кодирование…",
      "encodeFailed": "Ошибка кодирования: {reason}",
      "noAudio": "Аудио не записано."
    },
    "staged": {
      "headerUpload": "Выбранный клип",
      "headerRecording": "Записанный клип",
      "labelPlaceholder": "Метка (например \"взрыв\", \"прыжок\", \"ой\")",
      "cancel": "Отмена",
      "save": "Сохранить",
      "needLabel": "Пожалуйста, введите метку.",
      "labelTooLong": "Метка слишком длинная (макс. {max})."
    },
    "library": {
      "header": "Мои клипы",
      "refresh": "Обновить",
      "empty": "Загрузите или запишите, чтобы добавить первый клип.",
      "loading": "Загрузка…",
      "couldNotLoad": "Не удалось загрузить: {reason}",
      "deleteConfirm": "Удалить \"{label}\"?",
      "deleteFailed": "Не удалось удалить: {reason}",
      "addToChatTooltip": "Добавить этот клип как подсказку для AI-помощника",
      "deleteTooltip": "Удалить"
    },
    "save": {
      "uploading": "Загрузка…",
      "saved": "Сохранено.",
      "failed": "Не удалось сохранить: {reason}"
    }
  }
}
