import { en, type TranslationResources } from "./en"; import { pluginSettings } from "./plugin-settings"; export const ru: TranslationResources = { common: { back: "Назад", loading: "Загрузка...", actions: { back: "Назад", cancel: "Отмена", close: "Закрывать", copy: "Копировать", dismiss: "Увольнять", retry: "Повторить попытку", search: "Поиск", select: "Выбирать", }, placeholders: { search: "Поиск...", }, empty: { noResults: "Результаты не найдены", noOptionsMatchSearch: "Нет вариантов, соответствующих вашему запросу.", }, states: { loading: "Загрузка...", starting: "Начало...", copied: "Скопировано", copiedLabel: "Скопировано{{label}}", downloadComplete: "Загрузка завершена", downloadFailed: "Загрузка не удалась", }, errors: { error: "Ошибка", unableToSave: "Не удалось сохранить", nameRequired: "Требуется имя", daemonUnavailable: "Daemon недоступен", daemonClientUnavailable: "Клиент Daemon недоступен", daemonClientDisconnected: "Клиент Daemon отключен", noFileFound: "Файл для{{token}}не найден", unexpectedDictationError: "При обработке диктовки произошла непредвиденная ошибка.", }, connectionStatus: { online: "Онлайн", connecting: "Подключение", offline: "Оффлайн", error: "Ошибка", idle: "Праздный", }, }, shell: { menu: { toggleSidebar: "Переключить боковую панель", open: "Открыть меню", close: "Закрыть меню", }, commandCenter: { placeholder: "Поиск команд, файлов, рабочих пространств и агентов...", filePlaceholder: "Поиск файлов...", searchingFiles: "Поиск файлов...", noMatches: "Нет совпадений", actions: "Действия", files: "Файлы", workspaces: "Рабочие пространства", agents: "Агенты", newAgent: "Новый агент", addProject: "Добавить проект", home: "Дом", groupByProject: "Группировать по проекту", groupByStatus: "Группировать по статусу", modelGroupLabel: "Модель", modelSearchKeywords: "сменить модель изменить модель выбрать модель установить модель", thinkingGroupLabel: "Мышление", thinkingSearchKeywords: "рассуждение усилие мышление", modeGroupLabel: "Режим", modeSearchKeywords: "доступ разрешение одобрение режим", planModeGroupLabel: "Режим плана", planModeSearchKeywords: "план планирование режим плана", fastModeGroupLabel: "Быстрый", fastModeSearchKeywords: "быстрый скорость низкая задержка", settingOn: "Вкл", settingOff: "Выкл", }, }, composer: { placeholders: { desktop: "Напишите агенту сообщение, отметьте @files или используйте /commands и /skills.", mobile: "Сообщение,@files,/commands", fallback: "Сообщение...", terminal: "Prompt", }, input: { accessibilityLabel: "Агент сообщений...", terminalAccessibilityLabel: "Terminal prompt", focusHint: "{{shortcut}}, чтобы сосредоточиться", addAttachment: "Добавить вложение", interruptAgent: "Агент прерываний", queueMessage: "Сообщение в очереди", sendAndInterrupt: "Отправить и прервать", sendAndSteer: "Отправить и направить", sendMessage: "Отправить сообщение", queue: "Очередь", send: "Отправлять", }, cancel: { cancelingAgent: "Отменяющий агент", stopAgent: "Остановить агент", interrupt: "Прерывать", }, voice: { enableVoiceMode: "Включить голосовой режим", voiceMode: "Голосовой режим", unmuteVoiceMode: "Включить голосовой режим", muteVoiceMode: "Отключить голосовой режим", stopDictation: "Остановить диктовку", startDictation: "Начать диктовку", unmuteVoice: "Включить звук", muteVoice: "Отключить голос", dictation: "Диктант", interruptBeforeVoice: "Прерывайте агента перед запуском голосового режима", }, attachments: { addImage: "Добавить изображение", pasteImage: "Вставить изображение", addFile: "Upload file", addIssueOrPr: "Добавить проблему или PR", addIssueOrPr_mr: "Добавить проблему или MR", dropImagesHere: "Скиньте изображения сюда", dropFilesHere: "Drop files here", editQueuedMessage: "Изменить сообщение в очереди", sendQueuedMessageNow: "Отправить сообщение в очереди сейчас", openImage: "Открыть прикрепленное изображение", removeImage: "Удалить прикрепленное изображение", removeFile: "Remove file attachment", openGithub: "Открыть {{kind}} {{number}}", removeGithub: "Удалить {{kind}} {{number}}", element: "Элемент", openBrowserElement: "Открыть вложение элемента браузера", removeBrowserElement: "Удалить вложение элемента браузера", openReview: "Открыть прикрепленный файл с отзывом", removeReview: "Удалить прикрепленный отзыв", }, errors: { failedToSend: "Не удалось отправить сообщение", failedToCreateAgent: "Не удалось создать агента.", noHostSelected: "Хост не выбран", initialPromptRequired: "Требуется начальное приглашение", alreadyLoading: "Уже загружается", uploadFailed: "Failed to upload file", noClipboardImage: "В буфере обмена нет изображения", pasteImageFailed: "Не удалось вставить изображение", fileTooLarge: "{{fileName}} is too large (max {{size}})", }, clientCommands: { archiveAgent: "Архивировать текущего агента", freshDraft: "Архивируйте этот агент и начните новый черновик", }, github: { searching: "Идет поиск...", noResults: "Результаты не найдены.", searchPlaceholder: "Поиск проблем и пиар...", searchPlaceholder_mr: "Поиск проблем и MR...", title: "Прикрепите проблему или PR", title_mr: "Прикрепите проблему или MR", }, }, agentControls: { provider: { fallback: "Поставщик", select: "Выберите поставщика агентов", }, thinking: { title: "мышление", unknown: "Неизвестный", extraHigh: "Очень высокий", select: "Выберите вариант мышления", selectWithValue: "Выберите вариант мышления ({{value}})", }, model: { unknown: "Неизвестная модель", }, features: { title: "Функции", open: "Открытые возможности агента", on: "На", off: "Выключенный", }, mode: { title: "Режим", searchPlaceholder: "Режимы поиска...", selectWithValue: "Выберите режим агента ({{value}})", }, hints: { thinking: "Режим мышления", model: "Изменить модель", mode: "Изменить режим", }, }, agentStream: { empty: "Начните общаться с этим агентом...", scrollToBottom: "Прокрутить вниз", historyLoadFailed: "Не удалось загрузить историю агента", permission: { plan: "План", required: "Требуется разрешение", deny: "Отрицать", accept: "Принимать", implement: "Осуществлять", question: "Как бы вы хотели продолжить?", proposedPlan: "Предлагаемый план", }, }, agentPanel: { states: { notFound: "Agent не найден", failedToLoad: "Не удалось загрузить агент", reconnecting: "Повторное подключение", timelineSyncFailed: "Не удалось обновить историю агента.", timelineSyncRetrying: "Повторная попытка…", archivingTitle: "Архивный агент...", archivingSubtitle: "Пожалуйста, подождите, пока мы архивируем этого агента.", }, unavailable: { selectedHost: "Выбранный хост", unknownHost: "Невозможно открыть этот агент, поскольку{{serverLabel}}не настроен на этом устройстве.", addHost: "Добавьте хост в настройках или откройте агент на настроенном сервере, чтобы продолжить.", preparingSession: "Подготовка сеанса{{serverLabel}}...", connecting: "Подключение к{{serverLabel}}...", showSoon: "Мы покажем этого агента через минуту.", showWhenOnline: "Мы покажем этого агента, как только хост будет онлайн.", reconnectingTo: "Повторное подключение к{{serverLabel}}...", showAgainWhenReachable: "Мы снова покажем этого агента, как только хост станет доступен.", }, archived: { callout: "Этот агент находится в архиве", unarchive: "Разархивировать", }, }, sessions: { title: "История", empty: "Сеансов пока нет", noMatches: "Нет подходящих сеансов", tooManyMatches: "Слишком много совпадений — уточните запрос", hostLoadFailed: "{{host}}: Не удалось загрузить историю", searchPlaceholder: "Поиск по истории", actions: { loadMore: "Загрузить больше", clearSearch: "Очистить поиск", }, }, agentList: { fallbackTitle: "Новая сессия", dateSections: { recent: "Недавний", today: "Сегодня", yesterday: "Вчера", thisWeek: "На этой неделе", thisMonth: "В этом месяце", older: "Старше", }, status: { initializing: "Начало", idle: "Праздный", running: "Бег", error: "Ошибка", closed: "Закрыто", }, badges: { archived: "В архиве", pending: "{{count}}на рассмотрении", attention: "Внимание", }, archiveSheet: { hostOffline: "Host оффлайн", runningAgent: "Этот агент все еще работает. Архивирование остановит агент.", archive: "Архив", }, }, message: { diagram: { diagram: "Диаграмма", zoomIn: "Приблизить", zoomOut: "Отдалить", resetZoom: "Сбросить вид", viewSource: "Показать код", viewDiagram: "Показать диаграмму", }, actions: { copyCode: "Скопировать код", copyTurn: "Копировать ход", copyMessage: "Копировать сообщение", forkMenu: "Форкнуть сообщение", forkInNewTab: "Форкнуть в новой вкладке", forkInNewWorkspace: "Форкнуть в новом рабочем пространстве", forkUnavailable: "Обновите хост, чтобы использовать это.", forkMissingWorkspace: "Этот агент не находится в рабочем пространстве.", forkFailed: "Не удалось форкнуть чат", openFile: "Открыть файл", copied: "Скопировано", }, attachments: { dismissImage: "Закрыть изображение", closeImage: "Закрыть изображение", imageLoadFailed: "Не удалось загрузить изображение", imageUnavailable: "Изображение недоступно", imagePreviewUnavailable: "Предварительный просмотр изображения недоступен.", imagePreviewLoadFailed: "Невозможно загрузить предварительный просмотр изображения.", review: "Ревью", commentsOne: "1 комментарий", commentsMany: "Комментарии: {{count}}", textAttachment: "Текстовое вложение", text: "Текст", file: "Файл", }, speak: { header: "Говорил", }, activity: { details: "Подробности", }, dictation: { start: "Начать голосовой диктовку", cancel: "Отменить диктовку", retry: "Повторить диктовку", insert: "Вставить транскрипцию", insertAndSend: "Вставьте транскрипцию и отправьте", failed: "Диктовка не удалась:{{error}}", failedRetry: "Диктант не удался. Нажмите «Повторить».", }, question: { submit: "Представлять на рассмотрение", next: "Далее", answerPlaceholder: "Введите ответ...", otherPlaceholder: "Другой...", }, todo: { title: "Задачи", empty: "Заданий пока нет.", tasksProgress: "{{completed}}/{{total}} задач", activity: { created: "Создано задач: {{count}}", added: "Добавлена", started: "Начата", completed: "Завершена", reopened: "Возобновлена", }, }, compaction: { loading: "Уплотнение...", auto: "Контекст автоматически сжимается", manual: "Контекст сжимается вручную", withTokens: "Сжатый контекст (токены{{tokens}}K)", completed: "Контекст сжат", }, }, importSession: { title: "Импортировать сеанс", filters: { all: "Все", }, status: { connectHost: "Подключитесь к хосту, чтобы импортировать сеансы", updateHost: "Обновите хост для импорта сеансов.", noProviders: "Импортируемые поставщики не включены.", loading: "Загрузка последних сеансов...", failedAll: "Не удалось загрузить последние сеансы.", failedProviders: "Не удалось загрузить сеансы для{{providers}}.", failedImport: "Не удалось импортировать выбранный сеанс.", }, actions: { refresh: "Обновить сеансы", }, preview: { untitledSession: "Сессия без названия", noPrompt: "Нет быстрого предварительного просмотра", }, empty: { noRecent: "Нет последних сеансов для импорта.", alreadyImported: "Все последние сеансы уже импортированы.", noProviderSessions: "Сеансы{{provider}}не найдены.", }, row: { importing: "Импорт...", }, }, workspace: { route: { loading: "Загрузка рабочей области", connecting: "Подключение", hostOffline: "{{hostName}}не в сети", cannotReachHost: "Невозможно связаться с{{hostName}}", hostStatus: "Статус Host:{{status}}", needsHostUpgrade: "Обновите хост, чтобы восстановить эту рабочую область", manageHost: "Управление хостом", recovery: { archivedTitle: "Рабочая область в архиве", restoreDescription: "{{workspaceName}} была архивирована, а её worktree удалён. Восстановите ветку {{branch}}, чтобы открыть её снова.", unarchiveDescription: "{{workspaceName}} находится в архиве. Разархивируйте её, чтобы открыть снова.", restoreAction: "Восстановить", unarchiveAction: "Разархивировать", restoringTitle: "Восстановление рабочей области", restoringAction: "Восстановление...", unavailableTitle: "Рабочая область недоступна", checkFailedTitle: "Не удалось проверить рабочую область", }, }, hoverCard: { scriptsAccessibility: "Скрипты Workspace", copyPath: "Копировать путь", copyBranchName: "Копировать имя ветки", copied: "Скопировано", }, fileActions: { openFile: "Открыть файл", copyPath: "Копировать путь", copyRelativePath: "Копировать относительный путь", revealIn: "Показать в {{target}}", download: "Скачать", addToChat: "Добавить в чат", moreActions: "Дополнительные действия", newFile: "Новый файл", newFolder: "Новая папка", collapseFolder: "Свернуть папку", rename: "Переименовать", duplicate: "Дублировать", revert: "Отменить изменения", delete: "Удалить", confirmDelete: { fileTitle: "Удалить файл?", folderTitle: "Удалить папку?", message: "«{{name}}» будет удалён безвозвратно.", confirm: "Удалить", cancel: "Отмена", }, confirmRevert: { title: "Отменить изменения?", message: "Изменения в «{{name}}» будут безвозвратно отменены.", confirm: "Отменить", cancel: "Отмена", failed: "Не удалось отменить изменения", }, }, fileExplorer: { sort: { name: "Имя", modified: "Модифицированный", size: "Размер", }, context: { size: "Размер", modified: "Модифицированный", }, actions: { back: "Назад", retry: "Повторить попытку", refresh: "Обновить файлы", refreshing: "Обновление файлов", hideHiddenFiles: "Скрыть скрытые файлы", showHiddenFiles: "Показать скрытые файлы", }, empty: { noFiles: "Нет файлов", noVisibleFiles: "Нет видимых файлов", }, states: { unavailable: "Workspace недоступен", loading: "Загрузка файлов...", }, errors: { failedToListDirectory: "Не удалось указать каталог", createFailed: "Не удалось создать элемент", renameFailed: "Не удалось переименовать элемент", duplicateFailed: "Не удалось дублировать элемент", revealFailed: "Не удалось показать элемент", deleteFailed: "Не удалось удалить элемент", }, draft: { filePlaceholder: "Имя файла", folderPlaceholder: "Имя папки", }, }, setup: { descriptor: { label: "Настраивать", completed: "Настройка завершена", failed: "Установка не удалась", workspace: "Настройка Workspace", }, status: { running: "Бег", completed: "Завершенный", failed: "Неуспешный", waiting: "Ожидание вывода настройки", }, waiting: "Настройка рабочего места...", empty: { noCommands: "Для этой рабочей области не выполнялись команды настройки.", }, accessibility: { noCommands: "Для этой рабочей области не выполнялись команды настройки.", log: "Журнал настройки Workspace", }, log: { noOutput: "Нет вывода", }, }, browser: { unavailable: { title: "Браузер доступен только на рабочем столе", subtitle: "Откройте это рабочее пространство в Electron, чтобы использовать встроенный браузер.", }, session: "Сеанс браузера{{browserId}}", controls: { back: "Назад", forward: "Вперед", stopLoading: "Остановить загрузку", refresh: "Обновить", browserUrl: "Браузер URL", enterUrl: "Введите URL", openDevTools: "Открыть инструменты разработки браузера", cancelSelector: "Отменить выбор элемента", annotateElement: "Аннотировать элемент", screenshotElement: "Снимок элемента", screenshotCopied: "Снимок скопирован в буфер обмена", elementCopied: "Элемент скопирован в буфер обмена", screenshotFailed: "Не удалось скопировать снимок", selectorLoading: "Дождитесь окончания загрузки страницы", selectorFailed: "Не удалось запустить выбор элемента", }, annotate: { title: "Аннотировать элемент", placeholder: "Сообщение агенту об этом элементе…", submit: "Прикрепить", cancel: "Отмена", }, devices: { label: "Размер устройства", responsive: "Адаптивный", }, errors: { failedToLoad: "Не удалось загрузить страницу", invalidUrl: "Неверный браузер URL", unsupportedProtocol: "Заблокирован неподдерживаемый браузер URL:{{protocol}}", }, }, terminal: { hostDisconnected: "Host не подключен", updateHost: "Обновите хост, чтобы использовать нативный терминал.", unableToSubscribe: "Невозможно подписаться на терминал", }, tabs: { loading: "Загрузка...", modified: "Несохранённые изменения", loadingAgentTitle: "Название агента загрузки", emptyPane: "На этой панели нет вкладок.", fallback: { newAgent: "Новый агент", setup: "Настраивать", workspaceSetup: "Настройка Workspace", terminal: "Terminal", browser: "Браузер", agent: "Agent", workspace: "Workspace", }, switcher: { trigger: "Переключить вкладки ({{count}}открыт)", title: "Переключить вкладку", searchPlaceholder: "Вкладки поиска", }, menu: { openFor: "Открыть меню для{{label}}", copyResumeCommand: "Копировать команду возобновления", copyAgentId: "Скопировать идентификатор агента", copyTerminalId: "Скопировать идентификатор терминала", copyFilePath: "Copy file path", rename: "Переименовать", closeAbove: "Закрыть вкладки выше", closeBelow: "Закройте вкладки ниже", closeLeft: "Ближе к левому краю", closeRight: "Ближе к правому", closeOthers: "Закрыть другие вкладки", reloadAgent: "Перезагрузить агент", reloadAgentTooltip: "Перезагрузите агента, чтобы обновить навыки, MCP или статус входа.", close: "Закрывать", renameTerminal: "Переименование терминала", renameAgent: "Переименовать агента", }, actions: { newTab: "Новая вкладка", newAgent: "Новый агент", newTerminal: "Новый терминал", preparingTerminal: "Подготовка вкладки терминала", preparingTerminalTooltip: "Подготовка терминала...", newBrowser: "Новый браузер", maximizePane: "Развернуть панель", restorePane: "Восстановить панель", exitFocusMode: "Выйти из режима фокусировки", splitRight: "Разделить панель справа", splitDown: "Разделить панель вниз", changes: "Изменения", files: "Файлы", pullRequest: "Запрос на слияние", terminalProfilesMenu: "Terminal profiles", editTerminalProfiles: "Edit profiles…", }, explorer: { open: "Открыть проводник", close: "Закрыть проводник", toggle: "Переключить проводник", changes: "Изменения", files: "Файлы", }, toasts: { copyFailed: "Не удалось скопировать", agentIdCopiedLabel: "AgentID", terminalIdCopiedLabel: "Идентификатор терминала", resumeCommandCopiedLabel: "команда возобновления", filePathCopiedLabel: "File path", resumeIdUnavailable: "Резюме ID недоступно", resumeCommandUnavailable: "Команда возобновления недоступна", reloadingAgent: "Перезагрузка агента...", reloadedAgent: "Перезагруженный агент", failedToReloadAgent: "Не удалось перезагрузить агент", failedToCloseAgent: "Не удалось закрыть агент", }, confirmations: { unsavedTitle: "Несохранённые изменения", unsavedMessage: "В этой вкладке есть несохранённые изменения. При закрытии черновик будет удалён.", closeWithoutSaving: "Закрыть без сохранения", closePaneTitle: "Закрыть панель?", bulkUnsaved: "В {{count}} вкладках есть несохранённые изменения. При закрытии черновики будут удалены.", close: "Закрывать", cancel: "Отмена", archive: "Архив", closeTerminalTitle: "Закрыть терминал?", closeTerminalMessage: "Любой запущенный процесс в этом терминале будет немедленно остановлен.", archiveRunningAgentTitle: "Агент запуска архива?", archiveRunningAgentMessage: "Этот агент все еще работает. Архивирование остановит агент и закроет вкладку.", closeTabsLeftTitle: "Закрыть вкладки слева?", closeTabsRightTitle: "Закрыть вкладки справа?", closeOtherTabsTitle: "Закрыть другие вкладки?", bulk: { all: "При этом агенты{{agents}}будут заархивированы, терминалы{{terminals}}закроются, а вкладки{{tabs}}будут закрыты. Любой запущенный процесс в закрытом терминале будет немедленно остановлен.", agentsAndTerminals: "Это приведет к архивированию агентов{{agents}}и закрытию терминалов{{terminals}}. Любой запущенный процесс в закрытом терминале будет немедленно остановлен.", terminalsAndTabs: "Это закроет терминал(ы){{terminals}}и закроет вкладки(и){{tabs}}. Любой запущенный процесс в закрытом терминале будет немедленно остановлен.", agentsAndTabs: "При этом агенты{{agents}}будут заархивированы, а вкладки{{tabs}}закроются.", terminals: "Это закроет терминал(ы){{terminals}}. Любой запущенный процесс в закрытом терминале будет немедленно остановлен.", tabs: "Это закроет вкладки{{tabs}}.", agents: "Это приведет к архивированию агентов{{agents}}.", }, }, }, header: { actions: { workspaceActions: "Действия Workspace", newAgent: "Новый агент", newTerminal: "Новый терминал", newBrowser: "Новая вкладка браузера", importSession: "Импортировать сеанс", copyPath: "Копировать путь к рабочей области", copyBranchName: "Скопировать название ветки", showSetup: "Показать настройки", }, toasts: { workspacePathUnavailable: "Путь Workspace пока недоступен.", branchNameUnavailable: "Название филиала недоступно", terminalQueued: "Подготовка рабочего пространства, открытие терминала по готовности...", workspacePathCopiedLabel: "Путь Workspace", branchNameCopiedLabel: "Название филиала", }, }, scripts: { title: "Скрипты", actions: { chooseUrl: "Выбрать URL", copyUrl: "Скопировать URL", openService: "Просмотреть сервис", restart: "Перезапустить", run: "Бегать", stop: "Остановить", view: "Открыть терминал", }, accessibility: { trigger: "Скрипты Workspace", openService: "Просмотреть сервис {{scriptName}}", viewTerminal: "Посмотреть терминал{{scriptName}}", runScript: "Запустите скрипт{{scriptName}}", stopScript: "Остановить{{scriptName}}", restartScript: "Перезапустить{{scriptName}}", copyUrl: "Скопировать URL {{scriptName}}", chooseUrl: "Выбрать URL для {{scriptName}}", script: "скрипт{{scriptName}}", }, routes: { public: "Обратный прокси", paseo: "Memorable", direct: "Прямой адрес", }, states: { exitCode: "выйти из{{code}}", startFailed: "Не удалось запустить{{scriptName}}", stopFailed: "Не удалось остановить{{scriptName}}", }, }, git: { actions: { moreOptions: "Больше возможностей", moreActions: "Дополнительные действия", commit: { label: "Совершить", pending: "Совершение...", success: "Преданный идее", }, pull: { label: "Тянуть", pending: "Тяну...", success: "Вытащил", }, push: { label: "Толкать", pending: "Толкаю...", success: "Нажатый", }, pullAndPush: { label: "Тяни и толкай", pending: "Тянет и толкает...", success: "Вытащил и толкнул", }, viewPr: "Посмотреть PR", createPr: { label: "Создать PR", pending: "Создание PR...", success: "PR создано", label_mr: "Создать MR", pending_mr: "Создание MR...", success_mr: "MR создано", }, mergeBranch: { label: "Объединить локально", pending: "Слияние...", success: "Объединено", }, mergeFromBase: { label: "Обновление от{{baseRef}}", pending: "Обновление...", success: "Обновлено", }, archive: { label: "Архивировать рабочее пространство", pending: "Архивирование...", success: "В архиве", }, mergePr: { squash: "Объединить PR (squash)", merge: "Объединить PR (merge)", rebase: "Объединить PR (rebase)", pending: "Объединение PR...", success: "PR объединен", squash_mr: "Объединить MR (squash)", merge_mr: "Объединить MR (merge)", rebase_mr: "Объединить MR (rebase)", pending_mr: "Объединение MR...", success_mr: "MR объединен", }, viewPr_mr: "Посмотреть MR", autoMerge: { enableSquash: "Автообъединение (squash)", enableMerge: "Автообъединение (merge)", enableRebase: "Автообъединение (rebase)", enabled: "Автоматическое объединение включено", enabling: "Включение автоматического объединения...", disabling: "Отключение автоматического объединения...", disabled: "Автоматическое объединение отключено", }, unavailable: { viewPrNoForge: "Просмотр {{noun}} сейчас недоступен, поскольку {{brand}} не подключен.", pullNoRemote: "Функция Pull здесь недоступна, поскольку эта ветка еще не подключена к удаленному серверу.", pullDirty: "Функция Pull недоступна, пока у вас есть локальные изменения, поэтому сначала зафиксируйте или сохраните их.", pullUpToDate: "Функция Pull недоступна, поскольку эта ветка уже обновлена.", pushNoRemote: "Push здесь недоступен, поскольку эта ветка еще не подключена к удаленному устройству.", pushBehind: "Push пока недоступен, поскольку сначала нужно внести новые изменения.", pushNothing: "Push недоступен, поскольку нет ничего нового для отправки.", pullAndPushNoRemote: "Функция Pull and Push здесь недоступна, поскольку эта ветка еще не подключена к удаленному устройству.", pullAndPushDirty: "Функция извлечения и отправки недоступна, пока у вас есть локальные изменения, поэтому сначала зафиксируйте или сохраните их.", pullAndPushNoIncoming: "Функция Pull and Push недоступна, поскольку сначала нечего получать.", pullAndPushInSync: "Функция Pull and Push недоступна, поскольку эта ветвь уже синхронизирована.", pullAndPushNothingToPush: "Функция Pull and Push недоступна, поскольку после pull нечего отправлять.", createPrNoForge: "Функция «Создать {{noun}}» сейчас недоступна, поскольку {{brand}} не подключен.", createPrNoCommits: "Функция «Создать PR» недоступна, поскольку в этой ветке еще нет новых коммитов.", mergeNoBase: "Объединение недоступно, поскольку нам не удалось определить базовую ветку.", mergeDirty: "Объединение недоступно, пока у вас есть локальные изменения, поэтому сначала зафиксируйте или сохраните их.", mergeNothing: "Объединение недоступно, поскольку в этой ветке еще нет ничего нового для объединения.", updateNoBase: "Обновление недоступно, поскольку нам не удалось определить базовую ветку.", updateDirty: "Обновление недоступно, пока у вас есть локальные изменения, поэтому сначала зафиксируйте или сохраните их.", updateCurrent: "Обновление недоступно, поскольку эта ветка уже обновлена ​​до версии{{baseRef}}.", mergePrNoGithub: "Объединение PR сейчас недоступно, поскольку GitHub не подключен.", archiveNotWorktree: "Архив здесь недоступен, поскольку это рабочее пространство не было создано как рабочее дерево Paseo.", mergePrNoForge: "Объединение {{noun}} сейчас недоступно, поскольку {{brand}} не подключен.", mergePrMissing: "Объединение PR недоступно, поскольку еще нет запроса на включение", mergePrDraft: "Объединение PR недоступно, поскольку запрос на включение все еще находится на стадии черновика.", mergePrMerged: "Объединение PR недоступно, поскольку запрос на включение уже объединен.", mergePrClosed: "Объединение PR недоступно, поскольку запрос на включение закрыт.", mergePrConflicts: "Объединение PR недоступно, поскольку запрос на включение содержит конфликты.", mergePrQueue: "Слияние PR здесь недоступно, поскольку этот репозиторий использует очередь слияния.", mergePrNotReady: "Функция слияния {{noun}} недоступна до тех пор, пока {{brand}} не сообщит, что {{noun}} готов к слиянию.", autoMergeCannotDisable: "Автоматическое объединение включено, но этот аккаунт не может его отключить.", }, toasts: { failedCommit: "Не удалось совершить фиксацию", failedPull: "Не удалось вытащить", failedPush: "Не удалось нажать", failedPullAndPush: "Не удалось тянуть и толкать", failedCreatePr: "Не удалось создать PR.", failedMergePr: "Не удалось объединить PR.", failedEnableAutoMerge: "Не удалось включить автоматическое объединение", failedDisableAutoMerge: "Не удалось отключить автоматическое объединение", baseRefUnavailable: "Базовый номер недоступен.", failedMerge: "Не удалось объединиться", failedMergeFromBase: "Не удалось объединиться с базой.", }, archiveWarning: { title: 'Архив "{{workspaceName}}"?', confirm: "Архив", cancel: "Отмена", uncommittedChanges: "Незафиксированные изменения", uncommittedChangesWithDiff: "Незафиксированные изменения ({{diffStat}})", addedLine: "{{count}}добавлена ​​строка", addedLines: "{{count}}добавил строки", deletedLine: "{{count}}удалена строка", deletedLines: "{{count}}удалил строки", unpushedCommit: "Неотправленная фиксация{{count}}", unpushedCommits: "Неотправленные коммиты{{count}}", }, }, diff: { openChangesTab: "Открыть вкладку «Изменения»", closeChangesTab: "Закрыть вкладку «Изменения»", binaryFile: "Бинарный файл", tooLarge: "Разница слишком велика для отображения", previewTooLargeTitle: "Этот diff слишком велик для предпросмотра", previewTooLargeDescription: "Сузьте сравнение, чтобы просмотреть его здесь", unified: "Единый дифференциал", split: "Параллельная разница", switchToUnified: "Переключить на объединенный diff", switchToSplit: "Переключить на diff рядом", showTreeView: "Показать дерево папок", hideTreeView: "Скрыть дерево папок", options: "Параметры diff", hideWhitespace: "Скрыть пробелы", showWhitespace: "Показать пробелы", scrollLongLines: "Прокручивать длинные строки", wrapLongLines: "Перенос длинных строк", collapseAllFolders: "Свернуть все папки", expandAllFolders: "Развернуть все папки", collapseAllFiles: "Свернуть все файлы", expandAllFiles: "Развернуть все файлы", refreshing: "Освежающий", refresh: "Обновить", refreshState: "Обновить состояние git и {{brand}}", failedRefresh: "Не удалось обновить состояние git.", emptyHiddenWhitespace: "Никаких видимых изменений после скрытия пробелов", emptyUncommitted: "Нет незафиксированных изменений", emptyAgainstBase: "Никаких изменений по сравнению с{{baseRef}}", checkingRepository: "Проверяем репозиторий...", notRepository: "Не git- репозиторий", diffMode: "Режим разницы", uncommitted: "Незафиксированный", committed: "Преданный идее", branchUnknown: "Неизвестный", base: "база", newFile: "Новый", deletedFile: "Удалено", modifiedFile: "Изменено", commits: { title: "Коммиты", countLabel: "{{count}} коммитов рабочего пространства", noneAhead: "Коммитов впереди {{baseRef}} пока нет", fileDiffEmpty: "Нет изменений для отображения", fileDiffError: "Не удалось загрузить различия файла", loading: "Загрузка коммитов…", loadError: "Не удалось загрузить коммиты", empty: "Коммитов пока нет", }, }, openInEditor: { open: "Открыть", chooseEditor: "Выбрать редактор", openIn: "Открыть рабочую область в{{target}}", openFileIn: "Open {{fileName}} in {{target}}", failedOpen: "Не удалось открыть рабочую область", }, pr: { actions: { viewPullRequest: "Открыть", openOn: "Открыть на {{brand}}", }, checksSummary: { passedLabel: "успешно", failedLabel: "ошибка", runningLabel: "выполняется", passedAccessible: "Проверки пройдены", failedAccessible: "Проверки не пройдены", runningAccessible: "Проверки выполняются", }, sections: { checks: "Чеки", pipeline: "Пайплайн", reviews: "Отзывы", }, empty: { noJobs: "Нет задач", loadingPipeline: "Загрузка пайплайна...", pipelineJobsLoadFailed: "Не удалось загрузить задачи пайплайна", allowedToFail: "допускается сбой", }, approvals: "{{given}} из {{required}} одобрений", accessibility: { pullRequest: "Запрос на извлечение №{{number}}", pullRequest_mr: "Запрос на слияние !{{number}}", }, states: { draft: "Черновик", merged: "Объединено", closed: "Закрыто", open: "Открыть", }, activity: { commented: "Прокомментировал", approved: "Одобренный", requestedChanges: "Запрошенные изменения", reviewed: "Рассмотрено", }, time: { justNow: "прямо сейчас", }, thread: { discussion: "Обсуждение", }, errors: { statusLoadFailed: "Невозможно загрузить статус запроса на включение", activityLoadFailed: "Невозможно загрузить активность запроса на включение", }, }, forgeSetup: { installCli: "Установите CLI {{cli}}, чтобы использовать возможности {{brand}}.", signIn: "Выполните {{command}}, чтобы использовать возможности {{brand}}.", generic: "Настройте {{brand}} на этом хосте, чтобы использовать его функции.", }, }, }, workspaceLabels: { title: "Метки", unlabelled: "Без метки", create: "Создать метку", createConfirm: "Создать", creating: "Создание…", name: "Название метки", updateHostUse: "Обновите этот хост, чтобы использовать метки.", errors: { update: "Не удалось обновить метку", load: "Не удалось загрузить метки" }, colors: { violet: "Фиолетовый", sky: "Небесный", emerald: "Изумрудный", orange: "Оранжевый", pink: "Розовый", indigo: "Индиго", teal: "Бирюзовый", red: "Красный", amber: "Янтарный", blue: "Синий", }, filter: { clear: "Очистить фильтр", noMatchesTitle: "Нет подходящих рабочих пространств", noMatchesDescription: "Измените или очистите фильтр меток, чтобы увидеть рабочие пространства.", }, manage: { open: "Управление метками…", title: "Управление метками", search: "Поиск меток", empty: "На этом хосте нет меток.", edit: "Изменить метку", editLabel: "Изменить {{name}}", name: "Название", color: "Цвет", save: "Сохранить", delete: "Удалить", deleteTitle: "Удалить {{name}}?", deleteMessage_one: "Метка будет удалена из {{count}} рабочего пространства на этом хосте.", deleteMessage_other: "Метка будет удалена из {{count}} рабочих пространств на этом хосте.", offline: "Этот хост не в сети.", updateHost: "Обновите этот хост для управления метками.", }, }, sidebar: { display: { trigger: "Настройки отображения", heading: "Отображение", grouping: { label: "Группировка", project: "Проект", status: "Статус", labels: "Метки", }, titleSource: { label: "Заголовок", title: "Заголовок", branch: "Имя ветки", }, show: { label: "Показывать", branch: "Ветка", project: "Проект", host: "Хост", changeRequest: "Pull request", checks: "Проверки", services: "Сервисы", labels: "Метки", diff: "Статистика изменений", timestamp: "Последняя активность", }, checks: { iconAndText: "Значок и текст", icon: "Только значок", none: "Скрыто", }, hostFilter: { label: "Хост", all: "Все хосты", }, }, pinned: { title: "Закреплённые", }, host: { noHost: "Нет хоста", switchTitle: "Сменить хост", searchPlaceholder: "Поиск хостов...", }, actions: { addProject: "Добавить проект", newWorkspace: "Новое рабочее пространство", hosts: "Хосты", home: "Дом", settings: "Настройки", closeSidebar: "Закрыть боковую панель", }, help: { trigger: "Помощь и поддержка", sectionHelp: "Помощь", diagnostics: "Запустить диагностику", shortcuts: "Сочетания клавиш", reportIssue: "Сообщить о проблеме", discord: "Discord", github: "Создать issue в GitHub", whatsNew: "Что нового", appName: "Paseo", }, sections: { sessions: "История", schedules: "Расписания", }, worktreeSetup: { title: "Настройка сценариев рабочего дерева", description: "Добавьте команды настройки, чтобы новые рабочие деревья могли автоматически устанавливать зависимости и готовиться.", openProjectSettings: "Открыть настройки проекта", }, project: { actions: { menu: "Действия проекта", openSettings: "Открыть настройки проекта", openNewWindow: "Open in new window", openNewWindowFailed: "Couldn't open a new window", openFolder: "Open in file manager", openFolderFailed: "Couldn't open folder", remove: "Удалить проект", removing: "Удаление...", }, confirmations: { removeTitle: "Удалить проект?", removeMessage: "Удалить «{{projectName}}» с боковой панели?\n\n Файлы на диске не будут изменены.", removeConfirm: "Удалять", cancel: "Отмена", }, toasts: { hostDisconnected: "Host не подключен", removeFailed: "Не удалось удалить некоторые рабочие области.", updateHostToRemove: "Обновите host, чтобы удалять проекты.", }, empty: { title: "Пока нет проектов", description: "Добавьте проект, чтобы начать", }, }, workspace: { status: { serviceRunning: "Сервис {{name}} запущен", serviceUnhealthy: "Сервис {{name}} неисправен", creating: "Создание...", }, actions: { menu: "Действия Workspace", newWorkspace: "Новое рабочее пространство", showMore: "Показать ещё", showLess: "Показать меньше", createWorkspaceFor: "Создайте новое рабочее пространство для{{projectName}}.", copyPath: "Копировать путь", copyBranchName: "Скопировать название ветки", rename: "Переименовать рабочую область", pin: "Закрепить вверху", unpin: "Открепить", archive: "Архив", archiveWorkspace: "Архивировать рабочее пространство", hideFromSidebar: "Скрыть с боковой панели", archiving: "Архивирование...", hiding: "Скрытие...", }, confirmations: { hideTitle: "Скрыть рабочее пространство?", hideMessage: "Скрыть «{{workspaceName}}» на боковой панели?\n\n Файлы на диске не будут изменены.", hideConfirm: "Скрывать", cancel: "Отмена", }, rename: { title: "Переименовать рабочую область", submit: "Переименовать", invalidBranchName: "Неверное название ветки", }, toasts: { workspacePathUnavailable: "Путь Workspace недоступен", pathCopied: "Путь скопирован", branchNameCopied: "Название филиала скопировано.", hostDisconnected: "Host не подключен", hideFailed: "Не удалось скрыть рабочую область.", archiveFailed: "Не удалось заархивировать рабочее пространство.", }, }, }, newWorkspace: { title: "Новое рабочее пространство", create: "Создавать", isolation: { local: "Локально", worktree: "Новый worktree", label: "Изоляция", }, fields: { project: "Проект", base: "База", baseNotApplicable: "Неприменимо", }, titlePlaceholder: "Название (необязательно)", errors: { hostDisconnected: "Host не подключен", createWorktreeFailed: "Не удалось создать рабочее дерево.", composerStateRequired: "Требуется состояние композитора.", selectModel: "Выберите модель", }, tooltips: { project: "Choose the project", host: "Choose the host", isolation: "Choose the isolation level", startingRef: "Выберите, с чего начать", launch: "Choose what to launch", }, refPicker: { startingRef: "Начальная ссылка", intoBase: "в {{baseRef}}", searching: "Идет поиск...", noMatchingRefs: "Нет подходящих ссылок.", searchPlaceholder: "Поиск филиалов и PR", title: "Начать с", }, launch: { title: "What to launch", chat: "Chat", terminal: "Terminal", manageProfiles: "Manage profiles", submit: "Launch", promptPlaceholder: "Prompt {{name}}", commandPlaceholder: "Run a command, or leave empty for a blank terminal", }, }, desktop: { quitting: { title: "Выход из Paseo...", detail: "Остановка локального демона.", }, daemon: { title: "Daemon", status: { title: "Статус", builtInOnly: "Здесь показан только встроенный демон рабочего стола.", running: "бег", notRunning: "не работает", pid: "PID{{pid}}", }, management: { title: "Управление встроенным демоном", hint: "Позвольте Paseo запустить и остановить встроенный демон.", pauseTitle: "Приостановить встроенный демон", pauseMessage: "Это немедленно остановит встроенный демон. Запущенные агенты и терминалы, подключенные к встроенному демону, будут остановлены.", pauseAndStop: "Пауза и остановка", registrationFailed: "Built-in daemon started, but Paseo could not save the localhost connection. Toggle daemon management off and on again, or add localhost manually.", pausedStopFailed: "Встроенное управление демоном было приостановлено, но Paseo не смог остановить демон.", updateFailed: "Невозможно обновить встроенное управление демонами.", }, keepRunning: { title: "Продолжать работу демона после выхода", hint: "Daemon продолжает работать, когда вы выходите из Paseo", }, logs: { title: "Файл журнала", modalTitle: "Журналы Daemon", unavailable: "Путь к журналу недоступен", empty: "(файл журнала пуст)", copied: "Путь к журналу скопирован.", copyFailed: "Невозможно скопировать путь к журналу.", open: "Открыть журналы", copyPath: "Копировать путь", }, fullStatus: { title: "Полный статус", modalTitle: "Статус Daemon", hint: "Запускает`paseo daemon status`и показывает результат", view: "Посмотреть статус", copied: "Статус скопирован в буфер обмена.", fetchFailed: "Не удалось получить статус демона:{{message}}.", }, advancedSettings: "Расширенные настройки", openAdvancedSettings: "Открыть дополнительные настройки демона", versionMismatch: "Версии приложения и демона не совпадают. Обновите обе версии до одной и той же версии для лучшего опыта.", loadFailed: "Невозможно загрузить статус демона рабочего стола.", }, updates: { status: { checking: "Проверка обновлений приложения...", installing: "Установка обновления приложения...", upToDate: "Приложение актуально.", upToDateWithLastChecked: "Up to date. Last checked at {{time}}.", pending: "Мы сообщим вам, когда обновление будет готово.", pendingWithLastChecked: "Мы сообщим вам, когда обновление будет готово. Последняя проверка в {{time}}.", pendingWithVersion: "Найдено обновление: {{version}}. Загрузка...", pendingWithVersionAndLastChecked: "Найдено обновление: {{version}}. Загрузка... Последняя проверка в {{time}}.", availableWithVersion: "Обновление готово:{{version}}", availableWithVersionAndLastChecked: "Обновление готово:{{version}}. Последняя проверка в {{time}}.", available: "Обновление приложения готово к установке.", availableWithLastChecked: "Обновление приложения готово к установке. Последняя проверка в {{time}}.", installed: "Обновление приложения установлено. Требуется перезагрузка.", failed: "Не удалось обновить приложение.", idle: "Статус обновления еще не проверен.", }, installError: "Невозможно установить обновление настольного приложения.", callout: { installingTitle: "Установка обновления", failedTitle: "Обновление не выполнено", availableTitle: "Доступно обновление", genericError: "Что- то пошло не так.", whatsNew: "Что нового", installingAction: "Установка...", installAndRestart: "Установить и перезапустить", installingDescription: "Установка и перезапуск...", versionReady: "{{version}}готов к установке.", newVersionReady: "Новая версия готова к установке.", restartWarning: "Обновление приложения приведет к остановке работы агентов и закрытию сеансов терминала.", }, }, settings: { loadFailed: "Невозможно загрузить настройки рабочего стола.", saveFailed: "Невозможно сохранить настройки рабочего стола.", }, rosetta: { title: "Загрузите сборку Apple Silicon", runningIntel: "Вы используете сборку Intel для Paseo под Rosetta на Apple Silicon.", highCpu: "Это приводит к высокой загрузке ЦП. Загрузите сборку Apple Silicon, чтобы исправить это.", download: "Скачать", }, permissions: { notifications: { allowed: "Уведомления разрешены операционной системой.", denied: "Уведомления запрещены в настройках системы.", notGranted: "Уведомления еще не были предоставлены.", webOnly: "Статус уведомлений на рабочем столе доступен только в веб- среде выполнения.", supported: "Уведомления на рабочем столе поддерживаются.", unsupported: "Уведомления на рабочем столе не поддерживаются на этой платформе.", apiUnavailable: "API веб- уведомлений недоступен в этой среде.", requestsWebOnly: "Запросы уведомлений на рабочем столе доступны только в веб- среде выполнения.", requestUnavailable: "API веб- уведомлений requestPermission() недоступен.", requestFailed: "Не удалось запросить разрешение на уведомление:{{message}}.", unexpectedState: "Состояние разрешения на непредвиденное уведомление:{{state}}.", }, microphone: { webOnly: "Статус настольного микрофона доступен только в веб- среде выполнения.", navigatorUnavailable: "Навигатор недоступен в этой среде.", granted: "Доступ к микрофону разрешен.", denied: "Доступ к микрофону запрещен в настройках системы.", notGranted: "Разрешение на использование микрофона еще не получено.", unexpectedState: "Неожиданное состояние разрешения микрофона:{{state}}.", statusApiUnavailable: "API состояния микрофона недоступен в этой среде выполнения. Используйте Запрос, чтобы проверить доступ.", queryFailed: "Не удалось запросить статус микрофона:{{message}}.", captureUnavailable: "В этой среде захват микрофона недоступен.", permissionApiUnavailable: "API статуса разрешения недоступен. Используйте Запрос, чтобы проверить доступ.", requestsWebOnly: "Запросы настольного микрофона доступны только в веб- среде выполнения.", captureApiUnavailable: "API захвата микрофона недоступен в этой среде.", requestDenied: "Разрешение на использование микрофона было отклонено пользователем или системой.", noDevice: "Микрофонное устройство не обнаружено.", requestFailed: "Не удалось запросить разрешение микрофона:{{message}}.", }, empty: { notifications: "Статус уведомления еще не проверен.", microphone: "Состояние микрофона еще не проверялось.", }, testNotification: { title: "Тест уведомлений Paseo", body: "Если вы это видите, уведомления на рабочем столе работают.", notDelivered: "Уведомление не было доставлено. Проверьте Системные настройки > Уведомления.", failed: "Не удалось отправить уведомление.", }, }, integrations: { cli: { statusFailed: "Невозможно проверить статус установки CLI.", installFailed: "Невозможно установить PaseoCLI.", }, }, }, rootError: { title: "В Paseo возникла проблема.", body: "Попробуйте снова перезагрузить приложение. Если это повторяется, приложите приведенные ниже подробности к отчету.", details: "Подробности", }, startup: { errorTitle: "Что- то пошло не так", errorDescription: "Локальный сервер не удалось запустить. Если это повторяется, сообщите о проблеме на GitHub и приложите журналы ниже.", logs: { loading: "Загрузка журналов демона...", unavailable: "Журналы демона отсутствуют.", loadFailed: "Невозможно загрузить журналы демона:{{message}}", }, }, openProject: { tiles: { addProject: { title: "Добавить проект", description: "Откройте папку на своем компьютере", }, importSession: { title: "Импортировать сеанс", description: "Добавьте последние внешние сеансы CLI.", }, setupProviders: { title: "Поставщики установки", description: "Настройте Claude Code,Codex и другие", }, pairDevice: { title: "Сопряжение устройства", description: "Подключите свой телефон к этому демону", }, }, }, projectPicker: { placeholder: "Введите текст для поиска...", browse: "Обзор…", opening: "Открытие проекта...", searching: "Идет поиск...", empty: "Начните вводить путь", errors: { directory_not_found: "Каталог не найден.", open_failed: "Не удалось открыть проект.", }, openPath: "Открыть путь", }, branchSwitcher: { triggerTooltip: "Переключить ветку рабочего пространства", currentBranch: "Текущая ветка:{{branchName}}. Нажмите, чтобы переключить ветку.", placeholder: "Сменить ветку...", searchPlaceholder: "Фильтровать ветки...", empty: "Филиалов не найдено.", title: "Переключить ветку", uncommittedTitle: "Незафиксированные изменения", uncommittedMessage: "У вас есть незафиксированные изменения. Спрятать их перед переключением веток?", stashAndSwitch: "Тайник и переключатель", failedToStash: "Не удалось сохранить изменения.", failedToSwitch: "Не удалось переключить ветку", restoreStashTitle: "Восстановить спрятанные изменения?", restoreStashMessage: "В этой ветке сохранены изменения с предыдущего сеанса. Хотели бы вы их восстановить?", restore: "Восстановить", later: "Позже", stashRestored: "Спрятанные изменения восстановлены.", }, agentAutocomplete: { searchingWorkspace: "Ищем рабочее место...", loadingCommands: "Загрузка команд...", noFiles: "Файлы и каталоги не найдены", noCommands: "Команды не найдены", failedToLoad: "Не удалось загрузить", }, loadOlderHistory: { failed: "Не удалось загрузить старую историю.", }, imageAttachmentPicker: { permissionTitle: "Требуется разрешение", permissionMessage: "Пожалуйста, разрешите доступ к вашей библиотеке фотографий, чтобы прикреплять изображения.", errorTitle: "Ошибка", failedToSelect: "Не удалось выбрать изображение", dialogTitle: "Прикрепите изображения", dialogFilterName: "Изображения", }, workspaceSetup: { title: "Создать рабочую область", errors: { failedCreateWorktree: "Не удалось создать рабочее дерево.", failedOpenProject: "Не удалось открыть проект", selectModel: "Выберите модель", hostDisconnected: "Host не подключен", pendingRequired: "Никакой настройки рабочей области не ожидается.", composerStateRequired: "Требуется состояние композитора настройки Workspace.", }, }, onboarding: { title: "Добро пожаловать в Paseo", subtitle: "Подключите компьютер, чтобы начать", actions: { settings: "Настройки", }, }, modelSelector: { title: "Выберите провайдера", selectModel: "Выберите модель", selectedModel: "Выберите модель ({{model}})", loading: "Загрузка...", loadingShort: "Загрузка", loadingSelector: "Загрузка выбора модели...", error: "Ошибка", defaultModel: "По умолчанию", profiles: "Профили", providers: "Провайдеры", model: "Модель", editProfiles: "Изменить", editProfilesLabel: "Изменить профили агентов", createProfile: "Создать профиль", modelCount: "{{count}} модель", modelCountPlural: "{{count}} моделей", retry: "Повторить попытку", retrying: "Повторная попытка...", noMatches: "Ни одна модель не соответствует вашему запросу", noMatchesForQuery: "Нет моделей, соответствующих «{{query}}»", searchAllPlaceholder: "Поиск по всем моделям...", searchPlaceholder: "Поиск моделей...", openProviderSettings: "Открыть настройки{{provider}}", }, providerCatalog: { title: "Добавить провайдера", search: "Поиск поставщиков", noProviders: "Поставщики не найдены", actions: { add: "Добавлять", adding: "Добавление", installed: "Установлено", cancel: "Отмена", installInstructions: "Инструкции по установке", installInstructionsFor: "Инструкция по установке{{provider}}", }, errors: { unableToInstall: "Невозможно установить провайдера", }, }, providerSelection: { defaultModel: "По умолчанию", selectModel: "Выберите модель", loading: "Загрузка...", error: "Ошибка", unavailable: "Недоступно", unknownError: "Неизвестная ошибка", readiness: { initialPromptRequired: "Требуется начальное приглашение", noProviders: "На выбранном хосте нет доступных провайдеров", modelDefaultsLoading: "Настройки модели по умолчанию все еще загружаются", noModelAvailable: "Для выбранного поставщика модель недоступна.", workspaceDirectoryNotFound: "Каталог Workspace не найден", hostDisconnected: "Host не подключен", }, }, pairing: { connectionMethods: { title: "Добавить соединение", direct: { title: "Прямое подключение", description: "Локальная сеть или VPN.", }, scanQr: { title: "Сканировать код QR", description: "Зашифрованное релейное соединение.", }, pasteLink: { title: "Вставьте ссылку на сопряжение", description: "Зашифрованное релейное соединение.", }, }, direct: { title: "Прямое подключение", helper: "Введите адрес сервера Paseo.", fields: { host: "Host", port: "Порт", password: "Пароль", optional: "Необязательный", useSsl: "Использовать SSL", connectionUri: "URI подключения", }, advanced: { label: "Передовой", show: "Показать расширенные", hide: "Скрыть расширенные", }, passwordVisibility: { show: "Показать пароль", hide: "Скрыть пароль", }, actions: { cancel: "Отмена", connect: "Соединять", connecting: "Подключение...", }, errors: { hostRequired: "Требуется Host", invalidPort: "Порт должен быть в диапазоне от 1 до 65535.", invalidConnection: "Неверное соединение", failedTitle: "Соединение не удалось", failedToConnect: "Нам не удалось подключиться к{{endpoint}}.", noAdditionalDetails: "{{detail}}(дополнительная информация не предоставлена)", timedOut: "Время подключения истекло. Проверьте хост /port и вашу сеть.", refused: "В соединении отказано. Сервер работает по этому адресу?", hostNotFound: "Host не найден. Проверьте имя хоста и повторите попытку.", hostUnreachable: "Host недоступен. Проверьте свою сеть и брандмауэр.", tlsError: "Ошибка TLS. Прямые соединения используют SSL только тогда, когда перед демоном находится терминатор TLS.", unableToConnect: "Не удалось подключиться. Проверьте хост /port и убедитесь, что демон доступен.", details: "Подробности:{{detail}}", }, }, link: { title: "Вставьте ссылку на сопряжение", helper: "Вставьте ссылку на сопряжение с вашего сервера.", label: "Ссылка на сопряжение", errors: { required: "Вставьте ссылку для сопряжения (.../#offer=...)", missingOffer: "Ссылка должна содержать #offer=...", emptyOffer: "Полезная нагрузка предложения пуста.", invalid: "Неверная ссылка для сопряжения", unableToPair: "Невозможно подключить хост", }, alert: { failedTitle: "Сопряжение не удалось", }, actions: { cancel: "Отмена", pair: "Пара", pairing: "Сопряжение...", }, }, scan: { title: "Сканировать QR", webUnavailableTitle: "Недоступно в Интернете", webUnavailableBody: "Сканирование QR не поддерживается в веб- сборке. Вместо этого используйте «Вставить ссылку».", backToSettings: "Вернуться к настройкам", cameraPermissionTitle: "Разрешение камеры", cameraPermissionBody: "Разрешите камере доступ к сканированию кода сопряжения QR с вашего демона.", grantPermission: "Предоставить разрешение", pairing: "Сопряжение...", unableToPair: "Невозможно подключить хост", errorTitle: "Ошибка", }, device: { loadingOffer: "Загрузка предложения по сопряжению...", failedToLoadOffer: "Не удалось загрузить предложение сопряжения.", relayDisabled: "Реле не включено. Включите реле для сопряжения устройства.", enableTitle: "Включить реле?", enableDescription: "Реле позволяет подключаться с этого устройства откуда угодно. Трафик сопряжения защищён сквозным шифрованием.", relayDocs: "Как работает реле", relayDocsAccessibility: "Прочитать, как работает реле Paseo", enableRelay: "Включить реле", enablingRelay: "Включение...", notNow: "Не сейчас", directConnectionHint: "Без реле подключайтесь напрямую через TCP, Tailscale или другую VPN. QR-код не создаётся.", updateRequired: "Обновите хост, чтобы включить реле из Paseo Desktop.", unavailable: "Предложение по сопряжению недоступно.", hint: "Отсканируйте этот код QR с помощью Paseo на своем телефоне или скопируйте ссылку ниже.", qrUnavailable: "Код QR недоступен.", qrAccessibility: "QR-код сопряжения", retry: "Повторить попытку", copy: "Копировать", copied: "Скопировано", }, }, realtimeVoice: { actions: { mute: "Отключить звук в реальном времени", unmute: "Включить звук голоса в реальном времени", stop: "Остановить голос в реальном времени и прервать поворот", }, }, rewind: { tooltip: "Перемотка назад к этому сообщению", warning: "Это действие нельзя отменить.", actions: { conversation: "Перемотать разговор назад", files: "Перемотка файлов", both: "Перемотка разговора и файлов назад", }, errors: { failed: "Не удалось перемотать агент", }, }, diffViewer: { empty: "Нет изменений для отображения", }, serviceUrl: { title: "Открыть сервис URL", message: "Открыть{{url}}?", inPaseo: "В Paseo", externalBrowser: "Внешний браузер", dontAskAgain: "Не спрашивай больше", }, downloads: { requestTokenFailed: "Не удалось запросить токен загрузки.", hostUnavailable: "Хост загрузки недоступен.", cancelled: "Загрузка отменена.", failed: "Не удалось загрузить файл.", shareFile: "Поделиться файлом", shareFileNamed: "Поделиться {{fileName}}", }, menu: { backdrop: "Фон меню", }, subagents: { title: "Субагенты", pillLabelOne: "1 субагент", pillLabelMany: "{{count}} субагентов", pillLabelRunning: "{{count}} в работе", pillLabelFailed: "{{count}} с ошибкой", pillLabelNeedsInputOne: "1 ожидает ввода", pillLabelNeedsInputMany: "{{count}} ожидают ввода", pillLabelReadyToReview: "{{count}} на проверку", detachAction: "Отсоединить {{label}}", detachTooltip: "Отсоединить субагент", archiveAction: "Архив{{label}}", archiveTooltip: "Архивный субагент", archiveFinishedAction: "Архивировать завершенные субагенты", archiveFinishedRetry: "Повторить ({{failed}}/{{total}})", }, panels: { draft: { newAgent: "Новый агент", creatingAgent: "Создание агента", }, file: { directoryMissing: "Каталог Workspace не найден.", loading: "Загрузка файла...", noPreview: "Предварительный просмотр недоступен", binaryPreviewUnavailable: "Предварительный просмотр двоичного файла недоступен.", failedToLoad: "Не удалось загрузить файл", failedToLoadPreview: "Не удалось загрузить предварительный просмотр файла.", editor: { fileSize: "Размер файла {{size}}", lines: "Строк: {{count}}", editorStatus: "Состояние редактора: {{status}}", unsavedChanges: "Несохранённые изменения", saving: "Сохранение...", saveFailed: "Не удалось сохранить", changedOnDisk: "Изменён на диске", vimMode: "Режим Vim {{mode}}", cursor: "Строка {{line}}, столбец {{column}}", preview: "Просмотр", source: "Исходник", deletedTitle: "Файл удалён с диска", checkFailedTitle: "Не удалось проверить файл на диске", preservedDescription: "Открытая копия сохранена.", conflictDescription: "Локальный буфер сохранён. Выберите версию, которую нужно оставить.", overwrite: "Перезаписать", reload: "Перезагрузить", reloadTitle: "Перезагрузить с диска?", reloadMessage: "Локальные изменения будут потеряны.", }, }, files: { label: "Файлы", subtitle: "Файлы рабочего пространства", tooltip: "Просмотр файлов рабочего пространства", }, pullRequest: { label: "Запрос на слияние", subtitle: "Сведения о запросе на слияние", emptyTitle: "Запроса на слияние пока нет", emptyDescription: "Создайте запрос на слияние для этой рабочей копии, чтобы увидеть здесь его сведения.", }, diff: { changesLabel: "Изменения", changesSubtitle: "Различия рабочего дерева", commitSubtitle: "Различия коммита", uncommittedSubtitle: "Незафиксированные изменения", baseSubtitle: "Сравнение с {{baseRef}}", directoryMissing: "Каталог Workspace не найден.", empty: "Нет изменений", loadError: "Не удалось загрузить различия", capabilityMissing: "Обновите хост, чтобы просматривать различия коммитов.", }, }, toolCallDetails: { error: "Ошибка", empty: "Дополнительные сведения отсутствуют", subAgentActivity: "Субагентская деятельность", input: "Вход", output: "Выход", }, toolCallGroup: { editedFiles: { one: "изменён {{count}} файл", other: "изменено {{count}} файлов", }, commands: { one: "выполнена {{count}} команда", other: "выполнено {{count}} команд", }, readFiles: { one: "прочитан {{count}} файл", other: "прочитано {{count}} файлов", }, searches: { one: "выполнен {{count}} поиск", other: "выполнено {{count}} поисков", }, otherTools: { one: "использован {{count}} другой инструмент", other: "использовано {{count}} других инструментов", }, paseoCalls: { one: "Paseo вызван {{count}} раз", other: "Paseo вызван {{count}} раз", }, and: "и", }, renameModal: { rename: "Переименовать", saving: "Сохранение...", }, sidebarCallout: { dismiss: "Увольнять", }, contextWindow: { title: "Контекстное окно", used: "{{percentage}}% использовано", tokens: "Токены{{used}}/{{max}}", sessionCost: "Стоимость сеанса{{cost}}", accessibility: "Контекстное окно{{percentage}}% использовано", }, review: { comment: { add: "Добавить комментарий к обзору", edit: "Изменить комментарий к отзыву", delete: "Удалить комментарий к отзыву", label: "Посмотреть комментарий", placeholder: "Оставить комментарий", cancel: "Отмена", cancelAccessibility: "Отменить комментарий к отзыву", save: "Комментарий", saveAccessibility: "Сохранить комментарий к отзыву", }, }, settings: { title: "Настройки", loading: "Загрузка настроек...", groups: { app: "Приложение", host: "Host", }, hostPicker: { switchHost: "Сменить хост", local: "Местный", }, backToWorkspace: "Назад", addHost: "Добавить хост", enableBuiltInDaemon: "Включить встроенный демон", projects: "Проекты", projectList: { hostLoadFailed: "Не удалось загрузить проекты с хоста{{hostName}}:{{message}}.", editProject: "Изменить{{projectName}}", }, groupInfo: "О{{title}}", sections: { general: "Общий", appearance: "Появление", editor: "Редактор", shortcuts: "Ярлыки", integrations: "Интеграции", notifications: "Уведомления", permissions: "Разрешения", diagnostics: "Диагностика", about: "О", }, editor: { title: "Редактор", vimKeybindings: "Клавиши Vim", vimHint: "Применяется к исходным файлам в веб- и настольной версии.", }, notifications: { title: "Уведомления", permission: "Разрешение на уведомления", refreshAccessibility: "Обновить разрешение на уведомления", playSound: "Воспроизводить звук", playSoundHint: "Воспроизводит звук при получении уведомления на компьютере", test: "Проверить уведомление", testHint: "Отправляет уведомление с текущими настройками", permissionRequired: "Разрешите доступ к уведомлениям перед проверкой", send: "Отправить", sending: "Отправка...", sentTitle: "Тестовое уведомление отправлено", sentDescription: "Paseo передал уведомление операционной системе.", sendFailedTitle: "Не удалось отправить тестовое уведомление", }, hostSections: { projects: "Проекты", connections: "Соединения", agents: "Agents", metadata: "Метаданные", workspaces: "Workspaces", providers: "Провайдеры", usage: "Использование", terminals: "Terminals", plugins: "Plugins", host: "Обзор", }, plugins: pluginSettings.ru, metadataGeneration: { title: "Создание метаданных", description: "Выберите модель, которую Paseo использует для названий рабочих пространств, веток, сообщений коммитов и черновиков pull request", selection: "Выбор модели", automatic: "Автоматически", preferred: "Вручную", automaticHint: "Paseo выбирает быструю доступную модель", preferredHint: "Выберите модель, которую использует Paseo", model: "Модель", fallbackHint: "Если она недоступна, Paseo использует другую доступную модель", docs: "Документация", saveError: "Не удалось обновить создание метаданных", }, general: { title: "Общий", browserData: { title: "Данные браузера", siteData: "Файлы cookie и данные сайтов", description: "Вкладки браузера используют общие данные входа и данные сайтов в Paseo.", clear: "Очистить данные браузера", clearing: "Очистка...", confirmTitle: "Очистить данные браузера?", confirmMessage: "На сайтах будет выполнен выход, а открытые вкладки браузера перезагрузятся.", success: "Данные браузера очищены.", error: "Не удалось очистить данные браузера.", }, defaultSend: { label: "Отправка по умолчанию", descriptions: { interrupt: "Когда агент работает, Enter прерывает. Command/Ctrl+Enter ставит в очередь.", steer: "Когда агент работает, Enter направляет текущий ход. Command/Ctrl+Enter ставит в очередь.", queue: "Когда агент работает, Enter ставит в очередь. Command/Ctrl+Enter отправляет.", }, options: { interrupt: "Прерывать", steer: "Направить", queue: "Очередь", }, }, serviceUrls: { label: "URL- адреса служб", description: "Где открыть URL- адреса запущенных скриптов", options: { ask: "Просить", inApp: "В Paseo", external: "Внешний браузер", }, }, terminalScrollback: { label: "Terminal прокрутка назад", description: "Строки, хранящиеся во встроенном буфере терминала.", accessibilityLabel: "Линии прокрутки Terminal", }, autoExpandReasoning: { label: "Всегда разворачивать размышления", description: "По умолчанию показывать блоки размышлений и логики агента полностью развернутыми", }, toolCallDetail: { label: "Отображение вызовов инструментов", description: "Как вызовы инструментов отображаются на временной шкале", accessibilityLabel: "Выбрать отображение вызовов инструментов ({{value}})", options: { overview: "Сводка", detailed: "Полная детализация", }, }, language: { label: "Язык", description: "Язык приложения", options: { system: "Система", ar: "العربية", en: "English", es: "Español", fr: "Français", ja: "日本語", ko: "한국어", ptBR: "Português brasileiro", ru: "Русский", zhCN: "中文", }, }, }, diagnostics: { title: "Диагностика", legacyTerminalRenderer: { label: "Использовать прежний рендерер терминала", description: "Использовать прежний WebView-терминал после повторного открытия", accessibilityLabel: "Использовать прежний рендерер терминала", }, testAudio: "Тестирование звука", playTest: "Игровой тест", playing: "Игра...", playbackFailed: "Ошибка воспроизведения:{{message}}", app: { title: "App diagnostic", rowTitle: "App diagnostic", rowHint: "Collect connection, daemon, provider, desktop, and log details", run: "Run", running: "Running diagnostic...", copyLabel: "diagnostic", copyAccessibility: "Copy diagnostic", copyFailed: "Failed to copy diagnostic", refreshAccessibility: "Refresh diagnostic", refreshingAccessibility: "Refreshing diagnostic", progress: { client: "Client", desktop: "Desktop", }, }, }, about: { title: "О", appVersion: "Версия приложения", thisDevice: "Это устройство", connectedHosts: "Подключенные хосты", offline: "Оффлайн", versionDiffers: "Версия отличается от этого устройства", releaseChannel: { label: "Канал выпуска", description: "Перейдите на Beta, чтобы получать обновления раньше и помогать их формировать.", stable: "Stable", beta: "Beta", }, updates: { label: "Обновления приложений", readyToInstall: "Готово к установке:{{version}}", installTitle: "Установить обновление рабочего стола", installMessage: "Это обновит Paseo на этом компьютере.", installConfirm: "Установить обновление", update: "Обновлять", updateTo: "Обновление до{{version}}", installing: "Установка...", check: "Проверять", checking: "Проверка...", alertTitle: "Ошибка", alertMessage: "Невозможно открыть диалоговое окно подтверждения обновления.", }, }, appearance: { theme: { title: "Тема", accessibilityLabel: "Тема:{{value}}", options: { light: "Свет", dark: "Темный", zinc: "Цинк", midnight: "Полночь", claude: "Клод", ghostty: "Призрачный", pureBlack: "Чистый чёрный", auto: "Система", }, }, detailLevel: { title: "Уровень детализации", }, chatOutline: { title: "Структура чата", description: "Показывать структуру для перехода между запросами", }, fonts: { title: "Шрифты", systemDefault: "Система по умолчанию", interfaceFont: "Шрифт интерфейса", interfaceFontHint: "Используется во всем приложении. Оставьте пустым для системного значения по умолчанию.", interfaceFontAccessibility: "Семейство интерфейсных шрифтов", baseSize: "Базовый размер", baseSizeAccessibility: "Базовый размер шрифта", codeFont: "Шрифт кода", codeFontHint: "Используется в коде, различиях и выводе терминала. Оставьте пустым для системного значения по умолчанию.", codeFontAccessibility: "Семейство шрифтов кода", codeSize: "Размер кода", codeSizeAccessibility: "Размер шрифта кода", }, syntax: { title: "Синтаксис", highlightTheme: "Выделить тему", highlightThemeHint: "Цвета кода независимо от темы приложения", highlightThemeAccessibility: "Выделить тему:{{value}}", previewAccessibility: "Предварительный просмотр темы синтаксиса и шрифта кода в реальном времени.", }, }, shortcuts: { dialogTitle: "Ярлыки", searchPlaceholder: "Поиск сочетаний клавиш", unavailableOnMobile: "Сочетания клавиш доступны только на рабочем столе.", capturePrompt: "Нажмите ярлык...", unassigned: "Не задано", actions: { menu: "Действия для {{name}}", done: "Сделанный", cancel: "Отмена", bind: "Привязать", rebind: "Перепривязка", clear: "Очистить", reset: "Сбросить к значению по умолчанию", resetAll: "Сбросить все", }, sections: { general: "Общие", workspaces: "Проекты и рабочие пространства", tabsPanes: "Вкладки и панели", layout: "Макет", agentInput: "Вход Agent", }, help: { openProject: "Открыть проект", newWorkspace: "Новое рабочее пространство", newWorktree: "Новое рабочее дерево", archiveWorkspace: "Архивировать рабочее пространство", newTab: "Новая вкладка", closeCurrentTab: "Закрыть текущую вкладку", jumpToWorkspace: "Перейти в рабочую область", jumpToTab: "Перейти на вкладку", previousWorkspace: "Предыдущая рабочая область", nextWorkspace: "Следующая рабочая область", previousTab: "Предыдущая вкладка", nextTab: "Следующая вкладка", splitPaneRight: "Разделить панель справа", splitPaneDown: "Разделить панель вниз", focusPaneLeft: "Панель фокусировки слева", focusPaneRight: "Панель фокусировки справа", focusPaneUp: "Панель фокусировки вверх", focusPaneDown: "Панель фокусировки вниз", moveTabLeft: "Переместить вкладку влево", moveTabRight: "Переместить вкладку вправо", moveTabUp: "Переместить вкладку вверх", moveTabDown: "Переместить вкладку вниз", closePane: "Закрыть панель", newTerminal: "Новый терминал", searchFiles: "Поиск файлов", toggleCommandCenter: "Переключить командный центр", showKeyboardShortcuts: "Показать сочетания клавиш", toggleLeftSidebar: "Переключить левую боковую панель", toggleRightSidebar: "Переключить правую боковую панель", toggleBothSidebars: "Переключить обе боковые панели", toggleSettings: "Переключить настройки", toggleFocusMode: "Переключить режим фокусировки", toggleExplorerPaneMaximization: "Переключить разворачивание панели Проводника", cycleTheme: "Циклическая тема", focusMessageInput: "Фокус ввода сообщения", cycleAgentMode: "Переключить режим агента", toggleVoiceMode: "Переключить голосовой режим", startStopDictation: "Начать диктовку /stop", interruptAgent: "Агент прерываний", sendMessage: "Отправить сообщение", queueMessage: "Сообщение в очереди", muteUnmuteVoiceMode: "Отключить голосовой режим /unmute", switchProject: "Сменить проект", }, helpNotes: { showKeyboardShortcuts: "Доступно, когда фокус находится не в текстовом поле или терминале.", }, }, integrations: { title: "Интеграции", docs: { cli: "Документация CLI", openCli: "Открыть документацию CLI", }, commandLine: { title: "Командная строка", description: "Агенты управления и сценариев с вашего терминала", }, actions: { install: "Установить", installing: "Установка...", installed: "Установлено", }, }, permissions: { title: "Разрешения", microphone: "Микрофон", refresh: "Обновить", refreshing: "Освежающий...", refreshAccessibility: "Обновить разрешения рабочего стола", actions: { granted: "Предоставленный", request: "Запрос", requesting: "Запрос...", }, }, host: { appearance: { title: "Оформление", name: { label: "Имя", }, color: { label: "Цвет", accessibilityLabel: "Цвет, {{value}}", options: { none: "По умолчанию", violet: "Фиолетовый", sky: "Небесный", emerald: "Изумрудный", orange: "Оранжевый", pink: "Розовый", indigo: "Индиго", teal: "Бирюзовый", red: "Красный", amber: "Янтарный", blue: "Синий", }, }, badge: { label: "Значок на боковой панели", accessibilityLabel: "Значок на боковой панели, {{value}}", options: { name: "Имя", icon: "Только значок", hidden: "Скрыт", }, }, preview: { workspaceName: "my-workspace", }, }, notFound: "Host не найден", badges: { relay: "Реле", local: "Местный", }, connections: { title: "Соединения", removeTitle: "Удалить соединение", removeMessage: "Удалить{{name}}? Это невозможно отменить.", removeAction: "Удалять", removeErrorTitle: "Ошибка", removeErrorMessage: "Невозможно удалить соединение", timeout: "Тайм- аут", }, pairDevices: { title: "Сопряжение устройств", rowTitle: "Сопряжение устройства", rowHint: "Отсканируйте код QR или скопируйте ссылку, чтобы подключить свой телефон к этому хосту.", }, skills: { ...en.settings.host.skills, sectionTitle: "Навыки оркестровки", title: "Навыки оркестровки", description: "Научите своих агентов организовывать работу через CLI", updateAvailable: "Доступно обновление", updateTitle: "Обновить навыки Paseo?", updateFallback: "Синхронизируйте связанные навыки с вашим компьютером.", uninstallTitle: "Удалить навыки Paseo?", uninstallMessage: "Удаляет все навыки оркестровки Paseo из ~/.agents, ~/.claude, ~/.codex.", choose: "Выбрать навыки", chooseAll: "Все навыки", chooseAllHint: "Держите установленными все входящие навыки, включая добавленные позже.", chooseList: "Входящие навыки", chooseEmpty: "В этой сборке нет навыков.", removeTitle: "Удалить снятые навыки?", removeMessage: "{{skills}} будут удалены из ~/.agents, ~/.claude и ~/.codex. Всё, что вы добавили внутри этих папок навыков, тоже удаляется.", saveFailed: "Не удалось сохранить выбор навыков.", statusFailed: "Невозможно проверить статус навыков оркестровки.", updateFailed: "Невозможно обновить навыки оркестровки.", uninstallFailed: "Невозможно удалить навыки оркестровки.", saveSelectionFailed: "Не удалось сохранить выбор навыков оркестровки.", actions: { install: "Установить", installing: "Установка...", installed: "Установлено", update: "Обновлять", working: "Работающий...", remove: "Удалить", uninstall: "Удалить", save: "Сохранить", saving: "Сохранение...", cancel: "Отмена", }, operations: { add: "Добавить навык", update: "Обновить навык", delete: "Удалить навык", }, }, orchestration: { title: "оркестровка", unavailable: "Подключитесь к этому хосту, чтобы управлять оркестрацией.", enableTools: { title: "Включить инструменты Paseo", hint: "Агенты смогут управлять рабочими деревьями, агентами и расписаниями.", accessibilityLabel: "Инструменты внедрения Paseo", }, systemPrompt: { title: "Системная подсказка", hint: "Добавляет системное приглашение всем агентам", sheetTitle: "Добавить системное приглашение", accessibilityLabel: "Добавить системное приглашение", placeholder: "Всегда отвечайте кратко.", edit: "Редактировать", reset: "Сбросить", save: "Сохранить", saving: "Сохранение...", }, }, agents: { unavailable: "Connect to this host to manage agents", }, workspaces: { unavailable: "Connect to this host to manage workspaces", }, terminalProfiles: { unavailable: "Connect to this host to manage terminal profiles", sectionTitle: "Terminal profiles", editProfile: "Edit profile", addProfileTitle: "Add terminal profile", editProfileTitle: "Edit terminal profile", namePlaceholder: "Claude Code", commandPlaceholder: "claude", argsPlaceholder: "--dangerously-skip-permissions", nameLabel: "Name", commandLabel: "Command", argsLabel: "Arguments", nameRequired: "Name is required", commandRequired: "Command is required", argsHint: "Space-separated arguments passed to the command", saving: "Saving...", remove: "Remove", removeConfirmTitle: "Remove profile?", removeConfirmMessage: 'Remove "{{name}}"?', moveUp: "Move up", moveDown: "Move down", save: "Save", emptyState: "No profiles yet. Add one to launch terminals with a specific command.", }, agentProfiles: { sectionTitle: "Профили агента", unavailable: "Подключитесь к этому хосту, чтобы управлять профилями агента", unsupported: "На этом хосте работает daemon, который пока не поддерживает профили агента", emptyState: "Пока нет профилей. Добавьте один, чтобы запускать агентов с сохранённым провайдером и моделью.", addProfileTitle: "Добавить профиль агента", newProfile: "Новый профиль", editProfile: "Изменить профиль", editProfileTitle: "Изменить профиль агента", nameLabel: "Имя", namePlaceholder: "Работа над UI", iconLabel: "Значок", noIcon: "Нет", providerLabel: "Провайдер", providerPlaceholder: "Выберите провайдера", noProviders: "На этом хосте нет доступных провайдеров", modelLabel: "Модель", noModels: "У этого провайдера нет моделей для выбора", modeLabel: "Режим", noModes: "У этого провайдера нет режимов для выбора", thinkingLabel: "Мышление", noThinkingOptions: "У этой модели нет уровней мышления", featuresLabel: "Функции", featureCount: "{{count}} функций", featureCountOne: "{{count}} функция", notesLabel: "Заметки для агентов", notesPlaceholder: "Используйте для работы над UI — компоненты, макет и токены дизайна.", notesHint: "Возвращается инструментом MCP «list_profiles». Напишите это как инструкцию для другого агента.", save: "Сохранить", saving: "Сохранение...", remove: "Удалить", removeConfirmTitle: "Удалить профиль?", removeConfirmMessage: "Удалить «{{name}}»?", moveUp: "Переместить вверх", moveDown: "Переместить вниз", }, daemon: { rename: { editLabel: "Изменить ярлык", title: "Переименовать хост", placeholder: "Мой Host", submit: "Переименовать", }, restart: { title: "Перезапустить демон", hint: "Перезапускает процесс демона. Приложение автоматически переподключится", confirm: "Перезапустить", confirmTitle: "Перезапустите{{name}}", confirmMessage: "Это перезапустит демон. Агенты, работающие на нем, будут продолжать работать; приложение автоматически повторно подключится.", restarting: "Перезапуск...", unableToReconnectTitle: "Невозможно повторно подключиться", unableToReconnectMessage: "{{name}}не вернулся в онлайн. Пожалуйста, убедитесь, что он перезапущен.", unavailableTitle: "Host недоступен", unavailableMessage: "Этот хост не подключен. Подождите, пока он подключится к сети, прежде чем перезапустить.", offlineTitle: "Host оффлайн", offlineMessage: "Этот хост не в сети.Paseo автоматически повторно подключается — подождите, пока он снова подключится к сети, прежде чем перезапускаться.", requestFailedTitle: "Ошибка", requestFailedMessage: "Не удалось отправить запрос на перезапуск.Paseo автоматически повторно подключается. Повторите попытку, как только хост окажется в сети.", dialogFailedMessage: "Невозможно открыть диалоговое окно подтверждения перезапуска.", }, update: { desktopManagedHint: "Этот демон управляется Paseo Desktop. Обновите Paseo Desktop на хосте.", title: "Update daemon", hint: "Update the daemon to the latest version and restart it", confirm: "Update", confirmTitle: "Update {{name}}", confirmMessage: "This will update the daemon to the latest version and restart it. Running agents will be briefly interrupted.", updating: "Updating...", phaseStarting: "Preparing update...", phaseDownloading: "Downloading packages...", phaseInstalling: "Installing...", phaseComplete: "Update complete, restarting...", unableToReconnectTitle: "Unable to reconnect", unableToReconnectMessage: "{{name}} did not come back online after updating. Please verify the daemon restarted.", unavailableTitle: "Host unavailable", unavailableMessage: "This host is not connected. Wait for it to come online before updating.", offlineTitle: "Host offline", offlineMessage: "This host is offline. Wait until it is back online before updating.", requestFailedTitle: "Update failed", requestFailedMessage: "Failed to update the daemon: {{error}}", dialogFailedMessage: "Unable to open the update confirmation dialog.", }, dangerZone: "Опасная зона", remove: { title: "Удалить хост", localTitle: "Remove localhost connection", hint: "Удаляет этот хост и его сохраненные подключения с этого устройства.", localHint: "Removes localhost from this device and stops the built-in daemon", localConfirmTitle: "Remove localhost connection and stop daemon?", confirmMessage: "Удалить{{name}}? Это приведет к удалению сохраненных соединений.", localConfirmMessage: "This will remove the localhost connection, turn off built-in daemon management, and stop the managed daemon. Remote hosts remain connected.", errorTitle: "Ошибка", errorMessage: "Невозможно удалить хост", localErrorMessage: "Unable to remove localhost connection", }, }, }, providers: { title: "Провайдеры", addProvider: "Добавить провайдера", providerDetails: "Подробности о провайдере{{name}}", enableProvider: "Включить{{name}}", unavailable: "Подключитесь к этому хосту, чтобы увидеть поставщиков", loading: "Загрузка...", addErrorTitle: "Unable to add provider", updateErrorTitle: "Невозможно обновить провайдера", actions: { menu: "{{name}} actions", remove: "Remove provider", removing: "Removing...", }, remove: { confirmTitle: "Remove {{name}}?", confirmMessage: "This deletes the provider entry from config.json. It cannot be undone.", confirm: "Remove", errorTitle: "Unable to remove provider", }, statuses: { disabled: "Неполноценный", loading: "Загрузка", error: "Ошибка", available: "Доступный", notInstalled: "Не установлено", }, models: { one: "1 модель", many: "{{count}} моделей", addModel: "Добавить модель", addCustomTitle: "Добавить пользовательскую модель", modelId: "Модель ID", modelIdPlaceholder: "например опенай /gpt-5", add: "Добавлять", adding: "Добавление...", failedToSave: "Не удалось сохранить модель.", removeModel: "Удалить{{id}}", searchPlaceholder: "Поиск моделей", loading: "Загрузка моделей...", retry: "Повторить попытку", retrying: "Повторная попытка...", noSearchMatches: "Ни одна модель не соответствует вашему запросу", noneDetected: "Модели не обнаружены", discovered: "Обнаруженный", custom: "Пользовательские модели", updated: "Обновлен{{time}}", }, diagnostic: { title: "Диагностика", button: "Диагностика", refresh: "Обновить", refreshing: "Освежающий...", copyLabel: "диагностика", copyAccessibility: "Скопировать диагностику", copyFailed: "Не удалось скопировать диагностику", refreshAccessibility: "Обновить диагностику", refreshingAccessibility: "Обновление диагностики", running: "Запускаю диагностику...", none: "Диагностика недоступна", failedToFetch: "Не удалось получить диагностику.", unknownError: "Неизвестная ошибка", }, }, project: { noEditableTarget: "Этот проект нельзя редактировать на этом хосте.", backToProjects: "Вернуться к проектам", edit: { title: "Изменить проект", name: "Название", nameLabel: "Название проекта", icon: "Значок", chooseImage: "Выбрать изображение", useAutomatic: "Использовать автоматический", imageUrl: "URL изображения или сайта", save: "Сохранить изменения", savedToast: "Проект обновлён", }, readFailures: { invalidTitle: "paseo.json не удалось разобрать", invalidDescription: "Исправьте файл на диске, затем перезагрузите.", missingTitle: "У этого хоста нет этого проекта", missingSingleHost: "У выбранного хоста нет записей об этом проекте.", transportTitle: "Не удалось загрузить paseo.json.", transportFallback: "Хозяин не ответил.", failedTitle: "Не удалось загрузить paseo.json.", failedDescription: "Перезагрузите, чтобы попробовать еще раз.", }, worktree: { title: "Перехватчики жизненного цикла Worktree", info: "Команды, которые выполняются при создании или удалении рабочего дерева для этого проекта.", docs: "Документы", docsTooltip: "Дополнительную информацию и переменные среды, доступные для этих команд, см. в документации.", setup: "Настраивать", setupAccessibility: "Команды настройки рабочего дерева", uncommittedTitle: "Закоммитьте изменения paseo.json", uncommittedDescription: "Новые рабочие деревья используют сценарий настройки из выбранной базовой ветки.", teardown: "Срывать", teardownAccessibility: "Команды разрушения рабочего дерева", }, scripts: { title: "Скрипты", info: "Долгоработающие службы и одноразовые команды, которые можно запускать из любого агента в этом проекте.", empty: "Скриптов пока нет.", untitled: "Безымянный сценарий", port: "порт{{port}}", menuAccessibility: "Открыть меню скриптов", removeTitle: "Удалить скрипт?", removeMessage: "Удалить{{name}}?", removeFallbackName: "этот сценарий", name: "Имя", command: "Команда", nameAccessibility: "Имя сценария", commandAccessibility: "Команда сценария", nameRequired: "Требуется имя", commandRequired: "Требуется команда", newScript: "Новый сценарий", editScript: "Изменить{{name}}", runAsService: "Запуск как служба", serviceHint: "Paseo контролирует процесс и назначает порт через $PASEO_PORT.", actions: { add: "Добавить скрипт", edit: "Редактировать", remove: "Удалять", }, }, metadata: { title: "Генерация метаданных", info: "Инструкции для конкретного проекта, внедренные в подсказки ИИ, которые Paseo использует для генерации метаданных. Используйте их для обеспечения соблюдения соглашений вашей команды, таких как наименование ветвей, стиль фиксации или формат PR.", branchName: "Названия ветвей", branchNamePlaceholder: "Префиксные ветки с feat/ или fix/, mb/ для личных веток", commitMessage: "Фиксировать сообщения", commitMessagePlaceholder: "Используйте обычные фиксации с областью действия", pullRequest: "Запросы на вытягивание", pullRequestPlaceholder: "Начните с резюме в один абзац, включая раздел «План тестирования».", }, writeFailures: { staleTitle: "Конфигурация изменена на диске", staleDescription: "Перед сохранением перезагрузите компьютер, чтобы получить последнюю версию файла paseo.json.", failedTitle: "Не удалось сохранить paseo.json.", failedDescription: "Попробуйте еще раз или перезагрузите последнюю версию с диска.", }, actions: { reload: "Перезагрузить", tryAgain: "Попробуйте еще раз", save: "Сохранять", saved: "Проект сохранен.", saving: "Сохранение...", cancel: "Отмена", }, }, }, };