@neuralnomads/codenomad-dev 0.14.0-dev-20260422-e708c565 → 0.14.0-dev-20260502-ff4446a3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-upgrade.js +53 -0
- package/dist/cli-upgrade.test.js +31 -0
- package/dist/filesystem/browser.js +15 -1
- package/dist/index.js +17 -6
- package/dist/opencode-config/package.json +2 -2
- package/dist/opencode-config.js +14 -3
- package/dist/server/http-server.js +42 -112
- package/dist/server/routes/auth.js +6 -7
- package/dist/workspaces/__tests__/git-worktrees.test.js +43 -0
- package/dist/workspaces/__tests__/spawn.test.js +3 -2
- package/dist/workspaces/git-worktrees.js +2 -2
- package/dist/workspaces/manager.js +9 -61
- package/dist/workspaces/opencode-auth.js +18 -0
- package/dist/workspaces/opencode-auth.test.js +34 -0
- package/package.json +6 -8
- package/public/assets/ChangesTab-lyvm8KrD.js +2 -0
- package/public/assets/DiffToolbar-C_u9j1B7.js +1 -0
- package/public/assets/FilesTab-Cff47qHk.js +2 -0
- package/public/assets/GitChangesTab-DktjnpZJ.js +2 -0
- package/public/assets/{SplitFilePanel-DhUmaW0S.js → SplitFilePanel-BOHH3F--.js} +1 -1
- package/public/assets/StatusTab-CMVYg97L.js +1 -0
- package/public/assets/align-justify-CA09D616.js +1 -0
- package/public/assets/{bundle-full-DEU8L99_.js → bundle-full-xFW13Lny.js} +1 -1
- package/public/assets/{diff-viewer-DEO4RYPx.js → diff-viewer-BkQOVrnt.js} +1 -1
- package/public/assets/index-7DpT014-.js +1 -0
- package/public/assets/index-BDK4V9L0.js +1 -0
- package/public/assets/index-Bx-Bezt2.js +1 -0
- package/public/assets/{index-DbMNXyVd.js → index-CCAZZY0l.js} +1 -1
- package/public/assets/index-CEcZq5WB.js +1 -0
- package/public/assets/index-CQCmSDHL.js +1 -0
- package/public/assets/{index--oqVn_K6.js → index-Cz_fl8aY.js} +1 -1
- package/public/assets/index-Dcgftm1m.css +1 -0
- package/public/assets/index-m4C3yx3J.js +1 -0
- package/public/assets/index-mh_z9p40.js +2 -0
- package/public/assets/{loading-CjZdFQ4L.js → loading-HUhLEgb_.js} +1 -1
- package/public/assets/main-B2dfx3K6.js +48 -0
- package/public/assets/{markdown-B5oFzzk8.js → markdown-DIZIkFnr.js} +22 -22
- package/public/assets/monaco-viewer-BgP6xpZ6.js +26 -0
- package/public/assets/{todo-BCVtJDU0.js → todo-CznQMY4c.js} +1 -1
- package/public/assets/{tool-call-Be4o4PeC.js → tool-call-B_fK5Sov.js} +25 -25
- package/public/assets/{unified-picker-Be5bKL4U.js → unified-picker-DuNuUpLy.js} +1 -1
- package/public/assets/wrap-text-bFf5tsQM.js +1 -0
- package/public/index.html +4 -4
- package/public/loading.html +4 -4
- package/public/sw.js +1 -1
- package/dist/runtime-paths.js +0 -67
- package/public/assets/ChangesTab-CVfOyRjB.js +0 -2
- package/public/assets/DiffToolbar-BqTuTuLi.js +0 -1
- package/public/assets/FilesTab-BCaD4sK4.js +0 -2
- package/public/assets/GitChangesTab-GgUiE4m7.js +0 -2
- package/public/assets/StatusTab-CZk-cmFJ.js +0 -1
- package/public/assets/index-Btyhpe4o.js +0 -1
- package/public/assets/index-C6C534z4.js +0 -1
- package/public/assets/index-CMh7_0rm.js +0 -1
- package/public/assets/index-CWmlJG88.css +0 -1
- package/public/assets/index-D7RMnYOz.js +0 -1
- package/public/assets/index-DE6KDkkL.js +0 -2
- package/public/assets/index-NrX0Q8eA.js +0 -1
- package/public/assets/index-z-uWAw1M.js +0 -1
- package/public/assets/main-BIaFBThA.js +0 -48
- package/public/assets/monaco-viewer-DANembz4.js +0 -26
- package/public/assets/wrap-text-BTyaDmSX.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as e}from"./index-mh_z9p40.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-BgP6xpZ6.js";const s={"advancedSettings.title":"Расширенные настройки","advancedSettings.environmentVariables.title":"Переменные окружения","advancedSettings.environmentVariables.subtitle":"Применяются при запуске нового экземпляра OpenCode","advancedSettings.actions.close":"Закрыть"},t={"app.launchError.title":"Не удалось запустить OpenCode","app.launchError.description":"Не удалось запустить выбранный бинарник OpenCode. Просмотрите вывод ошибки ниже или выберите другой бинарник в настройках OpenCode.","app.launchError.binaryPathLabel":"Путь к бинарнику","app.launchError.errorOutputLabel":"Вывод ошибки","app.launchError.openAdvancedSettings":"Открыть настройки OpenCode","app.launchError.close":"Закрыть","app.launchError.closeTitle":"Закрыть (Esc)","app.launchError.fallbackMessage":"Не удалось запустить рабочее пространство","app.stopInstance.confirmMessage":"Остановить экземпляр OpenCode? Это остановит сервер.","app.stopInstance.title":"Остановить экземпляр","app.stopInstance.confirmLabel":"Остановить","app.stopInstance.cancelLabel":"Оставить запущенным","emptyState.logoAlt":"Логотип CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Выберите папку, чтобы начать писать код с AI","emptyState.actions.selectFolder":"Выбрать папку","emptyState.actions.selecting":"Выбор…","emptyState.keyboardShortcut":"Горячая клавиша: {shortcut}","emptyState.examples":"Примеры: {example}","emptyState.multipleInstances":"Можно иметь несколько экземпляров одной и той же папки","releases.upgradeRequired.title":"Требуется обновление","releases.upgradeRequired.message.withVersion":"Обновите CodeNomad до версии {version}, чтобы использовать последний UI.","releases.upgradeRequired.message.noVersion":"Обновите CodeNomad, чтобы использовать последний UI.","releases.upgradeRequired.action.getUpdate":"Получить обновление","releases.uiUpdated.title":"UI обновлён","releases.uiUpdated.message":"UI теперь обновлён до {version}.","releases.devUpdateAvailable.title":"Доступна dev-сборка","releases.devUpdateAvailable.message":"Доступна новая dev-сборка: {version}.","releases.devUpdateAvailable.action":"Открыть релиз"},o={"commandPalette.title":"Палитра команд","commandPalette.description":"Поиск и запуск команд","commandPalette.searchPlaceholder":"Введите команду или начните поиск…","commandPalette.empty":'Команды по запросу "{query}" не найдены',"commandPalette.category.customCommands":"Пользовательские команды","commandPalette.category.instance":"Экземпляр","commandPalette.category.session":"Сессия","commandPalette.category.agentModel":"Агент и модель","commandPalette.category.inputFocus":"Ввод и фокус","commandPalette.category.system":"Система","commandPalette.category.other":"Другое","commands.newInstance.label":"Новый экземпляр","commands.newInstance.description":"Открыть выбор папки для создания нового экземпляра","commands.newInstance.keywords":"папка, проект, рабочее пространство","commands.closeInstance.label":"Закрыть вкладку","commands.closeInstance.description":"Закрыть текущую верхнеуровневую вкладку","commands.closeInstance.keywords":"остановить, выйти, закрыть, вкладка","commands.nextInstance.label":"Следующая вкладка","commands.nextInstance.description":"Переключиться на следующую верхнеуровневую вкладку","commands.nextInstance.keywords":"переключить, навигация, вкладка","commands.previousInstance.label":"Предыдущая вкладка","commands.previousInstance.description":"Переключиться на предыдущую верхнеуровневую вкладку","commands.previousInstance.keywords":"переключить, навигация, вкладка","commands.newSession.label":"Новая сессия","commands.newSession.description":"Создать новую родительскую сессию","commands.newSession.keywords":"создать, начать","commands.closeSession.label":"Закрыть сессию","commands.closeSession.description":"Закрыть текущую родительскую сессию","commands.closeSession.keywords":"закрыть, остановить","commands.scrubSessions.label":"Очистить сессии","commands.scrubSessions.description":"Удалить пустые сессии, завершенные сессии субагентов и лишние форкнутые сессии.","commands.scrubSessions.keywords":"очистка, пустые, сессии, удалить, убрать","commands.instanceInfo.label":"Информация об экземпляре","commands.instanceInfo.description":"Открыть обзор экземпляра с логами и статусом","commands.instanceInfo.keywords":"информация, логи, консоль, вывод","commands.nextSession.label":"Следующая сессия","commands.nextSession.description":"Переключиться на следующую вкладку сессии","commands.nextSession.keywords":"переключить, навигация","commands.previousSession.label":"Предыдущая сессия","commands.previousSession.description":"Переключиться на предыдущую вкладку сессии","commands.previousSession.keywords":"переключить, навигация","commands.compactSession.label":"Компактировать сессию","commands.compactSession.description":"Суммировать и компактировать текущую сессию","commands.compactSession.keywords":"суммировать, сжать","commands.compactSession.errorFallback":"Не удалось компактировать сессию","commands.compactSession.alert.title":"Компактация не удалась","commands.compactSession.alert.message":"Компактация не удалась: {message}","commands.undoLastMessage.label":"Отменить последнее сообщение","commands.undoLastMessage.description":"Откатить последнее сообщение","commands.undoLastMessage.keywords":"откат, отмена","commands.undoLastMessage.none.title":"Нечего отменять","commands.undoLastMessage.none.message":"Нечего отменять","commands.undoLastMessage.failed.title":"Не удалось отменить","commands.undoLastMessage.failed.message":"Не удалось откатить сообщение","commands.openModelSelector.label":"Открыть выбор модели","commands.openModelSelector.description":"Выбрать другую модель","commands.openModelSelector.keywords":"модель, llm, ai","commands.selectModelVariant.label":"Выбрать вариант модели","commands.selectModelVariant.description":"Выбрать интенсивность размышлений для текущей модели","commands.selectModelVariant.keywords":"вариант, thinking, reasoning, интенсивность","commands.openAgentSelector.label":"Открыть выбор агента","commands.openAgentSelector.description":"Выбрать другого агента","commands.openAgentSelector.keywords":"агент, режим","commands.clearInput.label":"Очистить ввод","commands.clearInput.description":"Очистить поле prompt","commands.clearInput.keywords":"очистить, сброс","commands.promptSubmitShortcut.label.default":"Enter: Новая строка, Cmd/Ctrl+Enter: Отправить промпт","commands.promptSubmitShortcut.label.swapped":"Enter: Отправить промпт, Cmd/Ctrl+Enter: Новая строка","commands.promptSubmitShortcut.description":"Поменять местами Enter и Cmd/Ctrl+Enter в поле ввода промпта","commands.promptSubmitShortcut.keywords":"enter, отправить, новая строка, сочетание, cmd, ctrl, промпт","commands.thinkingBlocks.label.show":"Показать размышления","commands.thinkingBlocks.label.hide":"Скрыть размышления","commands.thinkingBlocks.description":"Показать или скрыть секции размышлений ИИ","commands.thinkingBlocks.keywords":"thinking, reasoning, переключить, показать, скрыть","commands.timelineToolCalls.label.show":"Показать Tool Calls в таймлайне","commands.timelineToolCalls.label.hide":"Скрыть Tool Calls в таймлайне","commands.timelineToolCalls.description":"Переключить отображение вызовов инструментов в таймлайне сообщений","commands.timelineToolCalls.keywords":"таймлайн, tool, переключить","commands.keyboardShortcutHints.label.show":"Показать подсказки сочетаний","commands.keyboardShortcutHints.label.hide":"Скрыть подсказки сочетаний","commands.keyboardShortcutHints.description":"Показать или скрыть подсказки сочетаний клавиш в интерфейсе","commands.keyboardShortcutHints.description.disabledWeb":"Отключено в WebUI (подсказки всегда скрыты)","commands.keyboardShortcutHints.keywords":"shortcut, shortcuts, keyboard, keybind, подсказки","commands.common.expanded":"Развернуто","commands.common.collapsed":"Свернуто","commands.common.visible":"Видимо","commands.common.hidden":"Скрыто","commands.common.enabled":"Включено","commands.common.disabled":"Выключено","commands.thinkingBlocksDefault.label":"Вид размышлений: {state}","commands.thinkingBlocksDefault.description":"Свернуть / Развернуть секции размышлений ИИ, когда они показаны","commands.thinkingBlocksDefault.keywords":"thinking, reasoning, развернуть, свернуть, по умолчанию","commands.diffViewSplit.label":"Раздельный просмотр diff","commands.diffViewSplit.description":"Показывать diff вызовов инструментов рядом","commands.diffViewSplit.keywords":"diff, split, просмотр","commands.diffViewUnified.label":"Единый просмотр diff","commands.diffViewUnified.description":"Показывать diff вызовов инструментов в одну колонку","commands.diffViewUnified.keywords":"diff, unified, просмотр","commands.toolOutputsDefault.label":"Выводы инструментов по умолчанию · {state}","commands.toolOutputsDefault.description":"Переключить, разворачивать ли выводы инструментов по умолчанию","commands.toolOutputsDefault.keywords":"tool, output, развернуть, свернуть","commands.diagnosticsDefault.label":"Диагностика по умолчанию · {state}","commands.diagnosticsDefault.description":"Переключить, разворачивать ли вывод диагностики по умолчанию","commands.diagnosticsDefault.keywords":"diagnostics, развернуть, свернуть","commands.toolInputsVisibility.label":"Видимость входных данных инструмента · {state}","commands.toolInputsVisibility.description":"Установить видимость аргументов входа вызовов инструментов по умолчанию","commands.toolInputsVisibility.keywords":"инструмент, вход, аргументы, видимость, скрыть, показать, раскрыть, свернуть, tool, inputs, arguments, visibility, hide, show, expand, collapse","commands.tokenUsageDisplay.label":"Отображение token-статистики · {state}","commands.tokenUsageDisplay.description":"Показать или скрыть статистику token и стоимости для сообщений ассистента","commands.tokenUsageDisplay.keywords":"token, usage, cost, статистика","commands.autoCleanupBlankSessions.label":"Авто-очистка пустых сессий · {state}","commands.autoCleanupBlankSessions.description":"Автоматически очищать пустые сессии при создании новых","commands.autoCleanupBlankSessions.keywords":"auto, cleanup, пустые, сессии, переключить","commands.showHelp.label":"Показать справку","commands.showHelp.description":"Показать горячие клавиши и справку","commands.showHelp.keywords":"горячие клавиши, справка","commands.custom.argumentsPrompt.message":"Аргументы для /{name}","commands.custom.argumentsPrompt.title":"Пользовательская команда","commands.custom.argumentsPrompt.inputLabel":"Аргументы","commands.custom.argumentsPrompt.inputPlaceholder":"например: foo bar","commands.custom.argumentsPrompt.confirmLabel":"Запустить","commands.custom.argumentsPrompt.cancelLabel":"Отмена","commands.custom.argumentsPrompt.openFailed.message":"Не удалось открыть prompt аргументов.","commands.custom.argumentsPrompt.openFailed.title":"Аргументы команды","commands.custom.entries.descriptionFallback":"Пользовательская команда","commands.custom.sessionRequired.message":"Выберите сессию перед запуском пользовательской команды.","commands.custom.sessionRequired.title":"Требуется сессия","commands.custom.runFailed.message":"Не удалось запустить пользовательскую команду. Проверьте консоль для подробностей.","commands.custom.runFailed.title":"Команда не выполнена","unifiedPicker.loading.searching":"Поиск…","unifiedPicker.loading.loadingWorkspace":"Загрузка рабочего пространства…","unifiedPicker.title.command":"Выберите команду","unifiedPicker.title.mention":"Выберите агента или файл","unifiedPicker.empty":"Ничего не найдено","unifiedPicker.sections.commands":"КОМАНДЫ","unifiedPicker.sections.agents":"АГЕНТЫ","unifiedPicker.sections.files":"ФАЙЛЫ","unifiedPicker.badge.subagent":"субагент","unifiedPicker.footer.navigate":"навигация","unifiedPicker.footer.select":"выбрать","unifiedPicker.footer.close":"закрыть"},i={"alertDialog.fallbackTitle.info":"Внимание","alertDialog.fallbackTitle.warning":"Пожалуйста, проверьте","alertDialog.fallbackTitle.error":"Что-то пошло не так","alertDialog.actions.confirm":"Подтвердить","alertDialog.actions.run":"Запустить","alertDialog.actions.ok":"ОК","alertDialog.actions.cancel":"Отмена","alertDialog.prompt.inputLabel":"Ввод","backgroundProcessOutputDialog.title":"Фоновый вывод","backgroundProcessOutputDialog.actions.close":"Закрыть","backgroundProcessOutputDialog.loading":"Загрузка вывода…","backgroundProcessOutputDialog.truncatedNotice":"Вывод обрезан для отображения.","backgroundProcessOutputDialog.loadErrorFallback":"Не удалось загрузить вывод."},n={"directoryBrowser.defaultDescription":"Просматривайте папки в пределах настроенного корня рабочего пространства.","directoryBrowser.close":"Закрыть","directoryBrowser.currentFolder":"Выберите папку или введите путь","directoryBrowser.currentFolder.inputAriaLabel":"Путь к папке","directoryBrowser.currentFolder.inputPlaceholder":"Введите или вставьте путь к папке","directoryBrowser.openCurrent":"Открыть","directoryBrowser.selectCurrent":"Выбрать текущую","directoryBrowser.newFolder":"Новая папка","directoryBrowser.creating":"Создание…","directoryBrowser.loadingFolders":"Загрузка папок…","directoryBrowser.noFolders":"Папки недоступны.","directoryBrowser.upOneLevel":"На уровень выше","directoryBrowser.select":"Выбрать","directoryBrowser.load.errorFallback":"Не удалось загрузить файловую систему","directoryBrowser.createFolder.promptMessage":"Создайте новую папку в текущем каталоге.","directoryBrowser.createFolder.title":"Новая папка","directoryBrowser.createFolder.inputLabel":"Имя папки","directoryBrowser.createFolder.inputPlaceholder":"например my-new-project","directoryBrowser.createFolder.confirmLabel":"Создать","directoryBrowser.createFolder.cancelLabel":"Отмена","directoryBrowser.createFolder.invalidNameMessage":"Введите одно имя папки.","directoryBrowser.createFolder.invalidNameDetail":"Имя папки не может содержать слэши, '..' или '~'.","directoryBrowser.createFolder.errorFallback":"Не удалось создать папку","filesystemBrowser.descriptionFallback":"Найдите путь в пределах настроенного корня рабочего пространства.","filesystemBrowser.rootLabel":"Корень: {root}","filesystemBrowser.actions.close":"Закрыть","filesystemBrowser.actions.retry":"Повторить","filesystemBrowser.actions.select":"Выбрать","filesystemBrowser.filterLabel":"Фильтр","filesystemBrowser.search.placeholder.directories":"Поиск папок","filesystemBrowser.search.placeholder.files":"Поиск файлов","filesystemBrowser.currentFolder.label":"Текущая папка","filesystemBrowser.currentFolder.selectCurrent":"Выбрать текущую","filesystemBrowser.loading.filesystem":"файловую систему","filesystemBrowser.loading.workspaceRoot":"корень рабочего пространства","filesystemBrowser.loading.loadingWithPath":"Загрузка {path}…","filesystemBrowser.empty.noEntries":"Ничего не найдено.","filesystemBrowser.navigation.upOneLevel":"На уровень выше","filesystemBrowser.hints.navigate":"Навигация","filesystemBrowser.hints.select":"Выбрать","filesystemBrowser.hints.close":"Закрыть","filesystemBrowser.errors.loadFilesystemFallback":"Не удалось загрузить файловую систему","filesystemBrowser.errors.openDirectoryFallback":"Не удалось открыть каталог"},a={"folderSelection.language.ariaLabel":"Язык","folderSelection.logoAlt":"Логотип CodeNomad","folderSelection.tagline":"Выберите папку, чтобы начать писать код с AI","folderSelection.links.github":"GitHub CodeNomad","folderSelection.links.githubStars":"Звезды GitHub CodeNomad","folderSelection.links.discord":"Discord CodeNomad","folderSelection.empty.title":"Нет недавних папок","folderSelection.empty.description":"Выберите папку, чтобы начать","folderSelection.recent.title":"Недавние папки","folderSelection.recent.subtitle.one":"Доступна {count} папка","folderSelection.recent.subtitle.other":"Доступно {count} папок","folderSelection.recent.remove":"Убрать из недавних","folderSelection.browse.title":"Выбрать папку","folderSelection.browse.subtitle":"Выберите любую папку на компьютере","folderSelection.browse.button":"Обзор папок","folderSelection.browse.buttonOpening":"Открытие…","folderSelection.actions.title":"Открыть папку или подключить сервер","folderSelection.actions.subtitle":"Откройте локальную папку или подключитесь к серверу CodeNomad","folderSelection.actions.connectButton":"Подключить сервер CodeNomad","folderSelection.advancedSettings":"Расширенные настройки","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Навигация","folderSelection.hints.select":"Выбрать","folderSelection.hints.remove":"Убрать","folderSelection.hints.browse":"Обзор","folderSelection.loading.title":"Запуск экземпляра…","folderSelection.loading.subtitle":"Подождите, пока мы подготовим рабочее пространство.","folderSelection.drop.title":"Перетащите папку, чтобы открыть ее","folderSelection.drop.subtitle":"Запустите новый экземпляр в перетащенной папке.","folderSelection.drop.invalidTitle":"Не удалось открыть перетащенный элемент","folderSelection.drop.invalidMessage":"Перетащите папку, чтобы запустить новый экземпляр.","folderSelection.dialog.title":"Выберите рабочее пространство","folderSelection.dialog.description":"Выберите рабочее пространство, чтобы начать писать код.","folderSelection.tabs.local":"Локальные папки","folderSelection.tabs.servers":"Серверы","folderSelection.servers.title":"Сохраненные серверы","folderSelection.servers.subtitle":"Откройте сохраненный удаленный сервер CodeNomad в новом окне","folderSelection.servers.count":"{count} серверов","folderSelection.servers.empty.title":"Нет сохраненных серверов","folderSelection.servers.empty.description":"Добавьте удаленный сервер, чтобы быстро подключаться к нему с этого устройства","folderSelection.servers.connectTitle":"Подключиться к серверу","folderSelection.servers.connectSubtitle":"Сохраните удаленный сервер CodeNomad и откройте его в новом окне","folderSelection.servers.connectButton":"Подключиться к серверу","folderSelection.servers.remove":"Удалить сохраненный сервер","folderSelection.servers.skipTls":"Самоподписанный TLS","folderSelection.servers.errorTitle":"Ошибка удаленного подключения","folderSelection.servers.dialog.title":"Подключиться к серверу","folderSelection.servers.dialog.description":"Добавьте удаленный сервер CodeNomad и при желании сразу откройте его.","folderSelection.servers.dialog.name":"Имя сервера","folderSelection.servers.dialog.namePlaceholder":"Продакшн сервер","folderSelection.servers.dialog.url":"URL сервера","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Пропустить проверку TLS для самоподписанных сертификатов.","folderSelection.servers.dialog.cancel":"Отмена","folderSelection.servers.dialog.save":"Сохранить","folderSelection.servers.dialog.connect":"Подключиться","folderSelection.servers.dialog.connecting":"Подключение...","folderSelection.servers.dialog.errorRequired":"Имя сервера и URL обязательны.","folderSelection.servers.dialog.errorConnect":"Не удалось подключиться к удаленному серверу.","folderSelection.servers.certificateInstall.title":"Установить локальный сертификат","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad должен установить локальный сертификат, чтобы открывать удаленные HTTPS-окна с самоподписанным сертификатом. Этот сертификат используется только для трафика локального настольного прокси на вашем устройстве. После этого ваша операционная система может показать второе предупреждение о сертификате.","folderSelection.servers.certificateInstall.confirmLabel":"Продолжить","folderSelection.servers.certificateInstall.cancelLabel":"Отмена","folderSelection.servers.certificateInstall.cancelled":"CodeNomad должен доверять локальному сертификату, прежде чем сможет открывать удаленные HTTPS-окна с самоподписанным сертификатом.","folderSelection.sidecars.button":"Open SideCar"},l={"instanceTabs.new.title":"Новый экземпляр (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Новый экземпляр","instanceTabs.remote.title":"Удаленное подключение","instanceTabs.remote.ariaLabel":"Удаленное подключение","instanceInfo.title":"Информация об экземпляре","instanceInfo.labels.folder":"Папка","instanceInfo.labels.project":"Проект","instanceInfo.labels.versionControl":"Система контроля версий","instanceInfo.labels.opencodeVersion":"Версия OpenCode","instanceInfo.labels.binaryPath":"Путь к бинарнику","instanceInfo.labels.environmentVariables":"Переменные окружения ({count})","instanceInfo.loading":"Загрузка…","instanceInfo.server.title":"Сервер","instanceInfo.server.port":"Порт:","instanceInfo.server.pid":"PID:","instanceInfo.server.status":"Статус:","instanceTab.status.permission":"Ожидание разрешения","instanceTab.status.compacting":"Компактация","instanceTab.status.working":"Работает","instanceTab.status.idle":"Простой","instanceTab.status.ariaLabel":"Статус экземпляра: {status}","instanceTab.actions.close.ariaLabel":"Закрыть экземпляр","instanceShell.leftPanel.sessionsTitle":"Сессии","instanceShell.leftPanel.instanceInfo":"Информация об экземпляре","instanceShell.leftDrawer.pin":"Закрепить левую панель","instanceShell.leftDrawer.unpin":"Открепить левую панель","instanceShell.leftDrawer.toggle.pinned":"Левая панель закреплена","instanceShell.leftDrawer.toggle.open":"Открыть левую панель","instanceShell.leftDrawer.toggle.close":"Закрыть левую панель","instanceShell.rightDrawer.pin":"Закрепить правую панель","instanceShell.rightDrawer.unpin":"Открепить правую панель","instanceShell.rightDrawer.toggle.pinned":"Правая панель закреплена","instanceShell.rightDrawer.toggle.open":"Открыть правую панель","instanceShell.rightDrawer.toggle.close":"Закрыть правую панель","instanceShell.fullscreen.enter":"Полный экран","instanceShell.fullscreen.exit":"Выйти из полного экрана","instanceShell.metrics.usedLabel":"Использовано","instanceShell.metrics.availableLabel":"Доступно","instanceShell.commandPalette.openAriaLabel":"Открыть палитру команд","instanceShell.commandPalette.button":"Палитра команд","instanceShell.connection.ariaLabel":"Соединение {status}","instanceShell.connection.connected":"Подключено","instanceShell.connection.connecting":"Подключение…","instanceShell.connection.disconnected":"Отключено","instanceShell.connection.unknown":"Неизвестно","instanceWelcome.shortcuts.newSession":"Новая сессия","instanceWelcome.empty.title":"Нет предыдущих сессий","instanceWelcome.empty.description":"Создайте новую сессию ниже, чтобы начать","instanceWelcome.loading.title":"Загрузка сессий","instanceWelcome.loading.description":"Получаем ваши предыдущие сессии…","instanceWelcome.resume.title":"Продолжить сессию","instanceWelcome.resume.subtitle.one":"{count} сессия доступна","instanceWelcome.resume.subtitle.other":"{count} сессий доступно","instanceWelcome.session.untitled":"Сессия без названия","instanceWelcome.new.title":"Начать новую сессию","instanceWelcome.new.subtitle":"Мы автоматически используем последнего агента/модель","instanceWelcome.new.createButton":"Создать сессию","instanceWelcome.overlay.close":"Закрыть","instanceWelcome.actions.viewInstanceInfo":"Показать информацию об экземпляре","instanceWelcome.actions.renameTitle":"Переименовать сессию","instanceWelcome.actions.deleteTitle":"Удалить сессию","instanceWelcome.hints.navigate":"Навигация","instanceWelcome.hints.jump":"Перейти","instanceWelcome.hints.firstLast":"Первый/последний","instanceWelcome.hints.resume":"Продолжить","instanceWelcome.hints.delete":"Удалить","instanceWelcome.toasts.renameError":"Не удалось переименовать сессию","instanceDisconnected.title":"Экземпляр отключен","instanceDisconnected.folderFallback":"это рабочее пространство","instanceDisconnected.reasonFallback":"Сервер перестал отвечать","instanceDisconnected.description":"{folder} больше недоступно. Закройте вкладку, чтобы продолжить работу.","instanceDisconnected.details.title":"Подробности","instanceDisconnected.details.folderLabel":"Папка:","instanceDisconnected.actions.closeInstance":"Закрыть экземпляр","instanceShell.empty.title":"Сессия не выбрана","instanceShell.empty.description":"Выберите сессию, чтобы просмотреть сообщения","instanceShell.rightPanel.title":"Панель состояния","instanceShell.rightPanel.tabs.changes":"Изменения","instanceShell.rightPanel.tabs.gitChanges":"Изменения Git","instanceShell.rightPanel.tabs.files":"Файлы","instanceShell.rightPanel.tabs.status":"Статус","instanceShell.rightPanel.tabs.ariaLabel":"Вкладки правой панели","instanceShell.rightPanel.actions.refresh":"Обновить","instanceShell.rightPanel.actions.save":"Сохранить (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Сохранить изменения в "{path}" перед переключением?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Сохранить","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Отменить изменения","instanceShell.rightPanel.actions.conflict.message":"Файл был изменён агентом. Перезаписать изменения агента?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Перезаписать","instanceShell.rightPanel.actions.conflict.cancelLabel":"Отмена","instanceShell.rightPanel.actions.refreshDirty.message":"Файл имеет несохранённые изменения. Обновление отменит ваши правки. Продолжить?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Обновить","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Отмена","instanceShell.rightPanel.toast.saveSuccess":"Файл успешно сохранён","instanceShell.rightPanel.toast.saveError":"Не удалось сохранить файл","instanceShell.rightPanel.sections.yoloMode":"Режим Yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Автоматически одобряет запросы разрешений для текущей сессии. Включайте только если доверяете запускаемым инструментам.","instanceShell.rightPanel.sections.sessionChanges":"Изменения сессии","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Файлы, измененные в текущей сессии. Показывает добавления и удаления для каждого файла.","instanceShell.rightPanel.sections.plan":"План","instanceShell.rightPanel.sections.plan.tooltip":"Дорожная карта агента для этой сессии. Отслеживает задачи и их статус выполнения.","instanceShell.rightPanel.sections.backgroundProcesses":"Фоновые оболочки","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Долгоработающие процессы, запущенные агентом. Вы можете следить за их выводом, останавливать или завершать их.","instanceShell.rightPanel.sections.mcp":"MCP-серверы","instanceShell.rightPanel.sections.mcp.tooltip":"Серверы протокола Model Context Protocol, расширяющие возможности агента внешними инструментами.","instanceShell.rightPanel.sections.lsp":"LSP-серверы","instanceShell.rightPanel.sections.lsp.tooltip":"Серверы протокола Language Server Protocol, обеспечивающие интеллектуальную поддержку кода и диагностику.","instanceShell.rightPanel.sections.plugins":"Плагины","instanceShell.rightPanel.sections.plugins.tooltip":"Плагины, настраивающие поведение интерфейса и сервера, добавляющие функции поверх MCP и LSP.","instanceShell.sessionChanges.noSessionSelected":"Выберите сессию, чтобы просмотреть изменения.","instanceShell.sessionChanges.loading":"Загрузка изменений...","instanceShell.sessionChanges.empty":"Пока нет изменений.","instanceShell.sessionChanges.filesChanged":"Изменено файлов: {count}","instanceShell.sessionChanges.actions.show":"Показать изменения","instanceShell.gitChanges.loading":"Загрузка изменений Git...","instanceShell.gitChanges.empty":"Изменений Git пока нет.","instanceShell.gitChanges.deleted":"Удалено","instanceShell.gitChanges.binaryViewer":"Невозможно показать бинарный файл","instanceShell.gitChanges.sections.staged":"Подготовленные изменения","instanceShell.gitChanges.sections.unstaged":"Изменения","instanceShell.gitChanges.actions.insertContext":"Добавить в промпт","instanceShell.gitChanges.actions.stage":"Подготовить файл","instanceShell.gitChanges.actions.unstage":"Убрать из staging","instanceShell.gitChanges.commit.placeholder":"Введите сообщение коммита","instanceShell.gitChanges.commit.submit":"Commit","instanceShell.gitChanges.commit.submitting":"Создание commit...","instanceShell.gitChanges.commit.success":"Commit успешно создан","instanceShell.gitChanges.commit.error":"Не удалось создать commit","instanceShell.filesShell.fileListTitle":"Список файлов","instanceShell.filesShell.mobileSelectorLabel":"Выбрать файл","instanceShell.filesShell.mobileSelectorEmpty":"Выберите файл","instanceShell.filesShell.viewerTitle":"Просмотр изменений","instanceShell.filesShell.viewerPlaceholder":"Подробный рендер изменений будет добавлен на следующем этапе.","instanceShell.filesShell.viewerEmpty":"Файл не выбран.","instanceShell.filesShell.listEmpty":"В этой папке нет файлов.","instanceShell.filesShell.search.placeholder":"Фильтровать файлы в этой папке","instanceShell.filesShell.search.ariaLabel":"Фильтровать файлы в этой папке","instanceShell.filesShell.search.empty":"Совпадающих файлов нет.","instanceShell.filesShell.actions.copyPath":"Скопировать путь","instanceShell.filesShell.toast.copyPathSuccess":"Путь скопирован","instanceShell.filesShell.toast.copyPathError":"Не удалось скопировать путь","instanceShell.filesShell.previewMarkdown":"Предпросмотр Markdown","instanceShell.filesShell.showSource":"Показать исходник","instanceShell.filesShell.enableWordWrap":"Включить перенос строк","instanceShell.filesShell.disableWordWrap":"Отключить перенос строк","instanceShell.plan.noSessionSelected":"Выберите сессию, чтобы просмотреть план.","instanceShell.plan.empty":"Пока ничего не запланировано.","instanceShell.yoloMode.noSessionSelected":"Выберите сессию, чтобы настроить режим Yolo.","instanceShell.yoloMode.title":"Режим Yolo","instanceShell.yoloMode.description":"Автоматически одобряет запросы разрешений для этой сессии. По умолчанию выключен.","instanceShell.yoloMode.badge":"Yolo","instanceShell.yoloMode.badgeAriaLabel":"Режим Yolo включен","instanceShell.backgroundProcesses.empty":"Нет фоновых процессов.","instanceShell.backgroundProcesses.status":"Статус: {status}","instanceShell.backgroundProcesses.output":"Вывод: {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Уведомление о завершении включено","instanceShell.backgroundProcesses.notify.disabled":"Уведомление о завершении выключено","instanceShell.backgroundProcesses.actions.output":"Вывод","instanceShell.backgroundProcesses.actions.stop":"Остановить","instanceShell.backgroundProcesses.actions.terminate":"Завершить","instanceShell.worktree.delete.error.title":"Удаление не удалось","instanceShell.worktree.delete.error.fallback":"Не удалось удалить worktree","instanceShell.worktree.delete.error.causeLabel":"Вероятная причина:","instanceShell.worktree.delete.error.nextStepLabel":"Рекомендуемый следующий шаг:","instanceShell.worktree.delete.error.summary.localChanges":"Git отказался удалять этот worktree, потому что в нем есть измененные или неотслеживаемые файлы.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad не смог удалить этот worktree, потому что что-то все еще использует файлы в каталоге.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad не смог удалить этот worktree, потому что каталог или запись worktree не найдены.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad не смог удалить этот worktree, потому что доступ к каталогу был запрещен.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad не смог удалить этот worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Локальные изменения","instanceShell.worktree.delete.error.cause.inUse":"Другой процесс использует этот worktree","instanceShell.worktree.delete.error.cause.notFound":"Каталог или запись worktree отсутствуют","instanceShell.worktree.delete.error.cause.permissionDenied":"Недостаточно прав файловой системы","instanceShell.worktree.delete.error.cause.unknown":"Бэкенд вернул неклассифицированную ошибку удаления","instanceShell.worktree.delete.error.nextStep.localChanges":"Включите принудительное удаление, если хотите отбросить локальные изменения, либо очистите worktree и попробуйте снова.","instanceShell.worktree.delete.error.nextStep.inUse":"Закройте терминалы, редакторы, watcher-процессы или фоновые процессы, использующие этот worktree, и попробуйте снова.","instanceShell.worktree.delete.error.nextStep.notFound":"Обновите список worktree и попробуйте снова. Если ошибка сохранится, проверьте путь worktree на диске.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Проверьте права файловой системы и закройте приложения, которые могут удерживать этот каталог, затем попробуйте снова.","instanceShell.worktree.delete.error.nextStep.unknown":"Посмотрите необработанную ошибку ниже, затем попробуйте снова после устранения указанной проблемы.","instanceShell.worktree.delete.error.copyRaw":"Копировать ошибку","instanceShell.worktree.delete.error.copySanitized":"Копировать обезличенную","instanceShell.worktree.delete.error.copySuccess":"Ошибка удаления скопирована","instanceShell.worktree.delete.error.copySanitizedSuccess":"Обезличенная ошибка удаления скопирована","instanceShell.worktree.delete.error.copyFailure":"Не удалось скопировать ошибку удаления","versionPill.appWithVersion":"Приложение {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Бинарник OpenCode","opencodeBinarySelector.subtitle":"Выберите, какой исполняемый файл OpenCode запускать","opencodeBinarySelector.customPath.placeholder":"Введите путь к бинарнику opencode…","opencodeBinarySelector.actions.add":"Добавить","opencodeBinarySelector.actions.browse":"Выбрать бинарник…","opencodeBinarySelector.actions.removeTitle":"Удалить бинарник","opencodeBinarySelector.badge.systemPath":"Использовать бинарник из системного PATH","opencodeBinarySelector.status.checkingVersions":"Проверка версий…","opencodeBinarySelector.status.checking":"Проверка…","opencodeBinarySelector.dialog.title":"Выберите бинарник OpenCode","opencodeBinarySelector.dialog.description":"Просматривайте файлы, доступные через CLI-сервер.","opencodeBinarySelector.validation.invalidBinary":"Неверный бинарник OpenCode","opencodeBinarySelector.validation.alreadyValidating":"Проверка уже выполняется","opencodeBinarySelector.display.systemPath":"{name} (system PATH)","opencodeBinarySelector.versionLabel":"v{version}"},r={"loadingScreen.logoAlt":"Логотип CodeNomad","loadingScreen.status.issue":"Возникла проблема","loadingScreen.actions.showAnother":"Показать другое","loadingScreen.errors.missingRoot":"Корневой элемент загрузки не найден","loadingScreen.phrases.neurons":"Разогреваем нейроны AI…","loadingScreen.phrases.daydreaming":"Убеждаем AI перестать мечтать…","loadingScreen.phrases.goggles":"Полируем кодовые очки AI…","loadingScreen.phrases.reorganizingFiles":"Просим AI перестать реорганизовывать ваши файлы…","loadingScreen.phrases.coffee":"Подкармливаем AI дополнительным кофе…","loadingScreen.phrases.nodeModules":"Учимся не удалять node_modules (снова)…","loadingScreen.phrases.actNatural":"Просим AI вести себя естественно до вашего прихода…","loadingScreen.phrases.rewritingHistory":"Просим AI перестать переписывать историю…","loadingScreen.phrases.stretch":"Даем AI размяться перед кодинг-спринтом…","loadingScreen.phrases.keyboardControl":"Убеждаем AI вернуть вам управление клавиатурой…"},c={"logsView.title":"Логи сервера","logsView.actions.show":"Показать логи сервера","logsView.actions.hide":"Скрыть логи сервера","logsView.envVars.title":"Переменные окружения ({count})","logsView.paused.title":"Логи сервера приостановлены","logsView.paused.description":"Включите стриминг, чтобы наблюдать за активностью сервера OpenCode.","logsView.empty.waiting":"Ожидание вывода сервера…","logsView.scrollToBottom":"Прокрутить вниз","infoView.logs.title":"Логи сервера","infoView.logs.actions.show":"Показать логи сервера","infoView.logs.actions.hide":"Скрыть логи сервера","infoView.logs.paused.title":"Логи сервера приостановлены","infoView.logs.paused.description":"Включите стриминг, чтобы наблюдать за активностью сервера OpenCode.","infoView.logs.empty.waiting":"Ожидание вывода сервера…","infoView.logs.scrollToBottom":"Прокрутить вниз","infoView.dispose.actions.dispose":"Сбросить инстанс","infoView.dispose.actions.disposing":"Сброс...","infoView.dispose.confirm.title":"Сбросить инстанс?","infoView.dispose.confirm.message":"Это очистит кэш состояния проекта для этого каталога и перезагрузит инстанс.","infoView.dispose.confirm.confirmLabel":"Сбросить","infoView.dispose.confirm.cancelLabel":"Отмена","infoView.dispose.toast.success":"Инстанс сброшен. Перезагрузка...","infoView.dispose.toast.error":"Не удалось сбросить инстанс."},d={"markdown.codeBlock.copy.label":"Копировать","markdown.codeBlock.copy.copied":"Скопировано!","markdown.codeBlock.copy.failed":"Не удалось","markdown.copy":"Копировать"},m={"messageListHeader.sidebar.openSessionListAriaLabel":"Открыть список сессий","messageListHeader.metrics.usedLabel":"Использовано","messageListHeader.metrics.availableLabel":"Доступно","messageListHeader.commandPalette.ariaLabel":"Открыть палитру команд","messageListHeader.commandPalette.button":"Палитра команд","messageListHeader.connection.connected":"Подключено","messageListHeader.connection.connecting":"Подключение…","messageListHeader.connection.disconnected":"Отключено","messageSection.empty.logoAlt":"Логотип CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Начните разговор","messageSection.empty.description":"Введите сообщение ниже или откройте палитру команд:","messageSection.empty.tips.commandPalette":"Палитра команд","messageSection.empty.tips.askAboutCodebase":"Спросите о своей кодовой базе","messageSection.empty.tips.attachFilesPrefix":"Прикрепляйте файлы через","messageSection.loading.messages":"Загрузка сообщений…","messageSection.scroll.toFirstAriaLabel":"Прокрутить к первому сообщению","messageSection.scroll.toLatestAriaLabel":"Прокрутить к последнему сообщению","messageSection.scroll.enableHoldAriaLabel":"Включить удержание для длинных ответов ассистента","messageSection.scroll.disableHoldAriaLabel":"Выключить удержание для длинных ответов ассистента","messageSection.quote.addAsQuote":"Добавить как цитату","messageSection.quote.addAsCode":"Добавить как код","messageSection.quote.copy":"Копировать","messageSection.quote.copied":"Скопировано!","messageSection.quote.copyFailed":"Не удалось скопировать","messageTimeline.ariaLabel":"Таймлайн сообщений","messageTimeline.segment.user.label":"Вы","messageTimeline.segment.assistant.label":"Асс.","messageTimeline.segment.compaction.label":"Компактация","messageTimeline.tool.fallbackLabel":"Вызов инструмента","messageTimeline.tooltip.userFallback":"Сообщение пользователя","messageTimeline.tooltip.assistantFallback":"Ответ ассистента","messageTimeline.tooltip.compaction.auto":"Автокомпактация","messageTimeline.tooltip.compaction.manual":"Компактация пользователем","messageTimeline.text.filePrefix":"[Файл] {filename}","messageTimeline.text.attachment":"Вложение","messageBlock.tool.header":"Вызов инструмента","messageBlock.tool.unknown":"неизвестно","messageBlock.tool.goToSession.label":"Перейти к сессии","messageBlock.tool.goToSession.title":"Перейти к сессии","messageBlock.tool.goToSession.unavailableTitle":"Сессия пока недоступна","messageBlock.tool.deletePart.label":"Удалить часть","messageBlock.tool.deletePart.deleting":"Удаление...","messageBlock.tool.deletePart.title":"Удалить этот вывод инструмента","messageBlock.tool.deletePart.failed.title":"Ошибка удаления","messageBlock.tool.deletePart.failed.message":"Не удалось удалить вывод инструмента","messageBlock.compaction.ariaLabel":"Компактация сессии","messageBlock.compaction.autoLabel":"Сессия автоматически компактирована","messageBlock.compaction.manualLabel":"Сессия компактирована вами","messageBlock.usage.input":"Ввод","messageBlock.usage.output":"Вывод","messageBlock.usage.reasoning":"Рассуждения","messageBlock.usage.cacheRead":"Чтение кэша","messageBlock.usage.cacheWrite":"Запись кэша","messageBlock.usage.cost":"Стоимость","messageBlock.step.agentLabel":"Агент: {agent}","messageBlock.step.modelLabel":"Модель: {model}","messageBlock.reasoning.thinkingLabel":"Размышления","messageBlock.reasoning.expandAriaLabel":"Развернуть размышления","messageBlock.reasoning.collapseAriaLabel":"Свернуть размышления","messageBlock.reasoning.indicator.hide":"Скрыть","messageBlock.reasoning.indicator.view":"Показать","messageBlock.reasoning.detailsAriaLabel":"Детали рассуждений","codeBlockInline.actions.copy":"Копировать","codeBlockInline.actions.copied":"Скопировано!","messageItem.speaker.you":"Вы","messageItem.speaker.assistant":"Ассистент","messageItem.actions.revert":"Откатить","messageItem.actions.revertTitle":"Отменить изменения до этого места (удалит сообщения)","messageItem.actions.fork":"Форк","messageItem.actions.forkTitle":"Форкнуть от этого сообщения","messageItem.actions.copy":"Копировать","messageItem.actions.copyTitle":"Копировать сообщение","messageItem.actions.copied":"Скопировано!","messageItem.actions.speak":"Озвучить сообщение","messageItem.actions.generatingSpeech":"Генерация аудио","messageItem.actions.stopSpeech":"Остановить воспроизведение","messageItem.actions.speak.error.title":"Не удалось воспроизвести речь","messageItem.actions.speak.error.unsupported":"В этом браузере воспроизведение речи не поддерживается.","messageItem.actions.speak.error.unavailable":"Воспроизведение речи недоступно, пока не настроены голосовые параметры.","messageItem.actions.speak.error.generate":"Не удалось сгенерировать аудио для этого сообщения.","messageItem.actions.deleteMessage":"Удалить сообщение (без отката изменений)","messageItem.actions.deleteMessagesUpTo":"Удалить сообщения до этого места (без отката изменений)","messageItem.actions.deletingMessage":"Удаление...","messageItem.actions.deleteMessageFailedTitle":"Ошибка удаления","messageItem.actions.deleteMessageFailedMessage":"Не удалось удалить сообщение","messageItem.selection.checkboxAriaLabel":"Выбрать сообщение для удаления","messageSection.bulkDelete.toolbarAriaLabel":"Выбранные элементы ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Удалить выбранные элементы","messageSection.bulkDelete.selectAllTitle":"Выбрать все сообщения","messageSection.bulkDelete.moreOptionsTitle":"Больше настроек","messageSection.bulkDelete.selectionModeLabel":"Выбор","messageSection.bulkDelete.selectionModeAll":"Все","messageSection.bulkDelete.selectionModeTools":"Только инструменты","messageSection.bulkDelete.selectionHint.toggle":"Выбрать элемент","messageSection.bulkDelete.selectionHint.range":"Выбрать диапазон","messageSection.bulkDelete.selectionHint.clear":"Очистить выбор","messageSection.bulkDelete.cancelTitle":"Отменить выбор","messageSection.bulkDelete.failedTitle":"Ошибка удаления","messageSection.bulkDelete.failedMessage":"Не удалось удалить выбранные элементы","messageItem.status.queued":"В ОЧЕРЕДИ","messageItem.status.generating":"Генерация…","messageItem.status.sending":"Отправка…","messageItem.status.failedToSend":"Не удалось отправить сообщение","messagePart.actions.delete":"Удалить часть","messagePart.actions.deleting":"Удаление...","messagePart.actions.deleteTitle":"Удалить этот элемент","messagePart.actions.deleteFailedTitle":"Ошибка удаления","messagePart.actions.deleteFailedMessage":"Не удалось удалить элемент","messageItem.attachment.defaultName":"вложение","messageItem.attachment.downloadAriaLabel":"Скачать {name}","messageItem.agentMeta.agentLabel":"Агент: {agent}","messageItem.agentMeta.modelLabel":"Модель: {model}","messageItem.errors.authenticationFallback":"Ошибка аутентификации","messageItem.errors.outputLengthExceeded":"Превышена длина вывода сообщения","messageItem.errors.requestAborted":"Запрос был прерван","messageItem.errors.unknownFallback":"Произошла неизвестная ошибка","attachmentChip.removeAriaLabel":"Удалить вложение","expandButton.toggleAriaLabel":"Переключить высоту поля ввода","promptInput.placeholder.shell":"Выполнить команду shell (Esc для выхода)…","promptInput.placeholder.default":"Введите сообщение, @file, @agent или вставьте изображения и текст…","promptInput.hints.shell.exit":"чтобы выйти из режима shell","promptInput.hints.shell.enable":"Режим shell","promptInput.hints.commands":"Команды","promptInput.history.previousAriaLabel":"Предыдущий prompt","promptInput.history.nextAriaLabel":"Следующий prompt","promptInput.overlay.newLine":"Новая строка","promptInput.overlay.send":"Отправить","promptInput.overlay.filesAgents":"Файлы/агенты","promptInput.overlay.history":"История","promptInput.overlay.attachments":"• прикреплено файлов: {count}","promptInput.overlay.shellModeActive":"Режим shell активен","promptInput.overlay.press":"Нажмите","promptInput.overlay.againToAbort":"еще раз, чтобы прервать сессию","promptInput.stopSession.ariaLabel":"Остановить сессию","promptInput.stopSession.title":"Остановить сессию","promptInput.clear.ariaLabel":"Очистить текст prompt","promptInput.clear.title":"Очистить текст prompt","promptInput.send.ariaLabel":"Отправить сообщение","promptInput.send.errorFallback":"Не удалось отправить сообщение","promptInput.send.errorTitle":"Не удалось отправить","promptInput.conversationMode.enable.title":"Включить режим разговора","promptInput.conversationMode.disable.title":"Выключить режим разговора","promptInput.conversationMode.error.title":"Сбой озвучивания разговора","promptInput.conversationMode.error.message":"Не удалось продолжить озвучивание ответов ассистента.","promptInput.voiceInput.start.title":"Начать голосовой ввод","promptInput.voiceInput.stop.title":"Остановить запись и расшифровать","promptInput.voiceInput.transcribing.title":"Идёт расшифровка аудио","promptInput.voiceInput.error.title":"Сбой голосового ввода","promptInput.voiceInput.error.permission":"Для записи голосового ввода требуется доступ к микрофону.","promptInput.voiceInput.error.permissionDenied":"macOS запретила доступ к микрофону.","promptInput.voiceInput.error.unsupported":"Голосовой ввод не поддерживается в этом браузере.","promptInput.voiceInput.error.transcribe":"Не удалось расшифровать записанное аудио."},p={"remoteAccess.eyebrow":"Удаленная передача управления","remoteAccess.title":"Подключитесь к CodeNomad удаленно","remoteAccess.subtitle":"Используйте адреса ниже, чтобы открыть CodeNomad с другого устройства.","remoteAccess.close":"Закрыть удаленный доступ","remoteAccess.refresh":"Обновить","remoteAccess.sections.listeningMode.label":"Режим прослушивания","remoteAccess.sections.listeningMode.help":"Разрешайте или ограничивайте удаленную передачу управления, привязываясь ко всем интерфейсам или только к localhost.","remoteAccess.toggle.on":"Вкл","remoteAccess.toggle.off":"Выкл","remoteAccess.toggle.title":"Разрешить подключения с других IP","remoteAccess.toggle.caption.all":"Привязка к 0.0.0.0","remoteAccess.toggle.caption.local":"Привязка к 127.0.0.1","remoteAccess.toggle.note":"Изменение требует перезапуска и временно остановит все активные экземпляры. Поделитесь адресами ниже после перезапуска сервера.","remoteAccess.listeningMode.restartConfirm.message":"Перезапустить, чтобы применить режим прослушивания? Это остановит все запущенные экземпляры.","remoteAccess.listeningMode.restartConfirm.title.all":"Открыть для других устройств","remoteAccess.listeningMode.restartConfirm.title.local":"Ограничить этим устройством","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Перезапустить сейчас","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Отмена","remoteAccess.restart.errorManual":"Не удалось перезапустить автоматически. Перезапустите приложение, чтобы применить изменение.","remoteAccess.sections.serverPassword.label":"Пароль сервера","remoteAccess.sections.serverPassword.help":"Для удаленной передачи управления требуется пароль. Установите запоминающийся пароль, чтобы разрешить вход с других устройств.","remoteAccess.authStatus.unavailable":"Статус аутентификации недоступен.","remoteAccess.username":"Имя пользователя: {username}","remoteAccess.password.status.set":"Для удаленного доступа установлен пароль.","remoteAccess.password.status.unset":"Пока не установлен запоминающийся пароль. Установите его, чтобы разрешить вход при удаленной передаче управления.","remoteAccess.password.actions.cancel":"Отмена","remoteAccess.password.actions.change":"Изменить пароль","remoteAccess.password.actions.set":"Установить пароль","remoteAccess.password.form.newPassword":"Новый пароль","remoteAccess.password.form.confirmPassword":"Подтвердите пароль","remoteAccess.password.form.placeholder":"Не менее 8 символов","remoteAccess.password.error.tooShort":"Пароль должен быть не короче 8 символов.","remoteAccess.password.error.mismatch":"Пароли не совпадают.","remoteAccess.password.save.saving":"Сохранение…","remoteAccess.password.save.label":"Сохранить пароль","remoteAccess.sections.addresses.label":"Доступные адреса","remoteAccess.sections.addresses.help":"Откройте или отсканируйте с другой машины, чтобы передать управление.","remoteAccess.addresses.loading":"Загрузка адресов…","remoteAccess.addresses.none":"Пока нет доступных адресов.","remoteAccess.addresses.actions.showOther":"Показать еще {count} адресов","remoteAccess.addresses.actions.hideOther":"Скрыть остальные адреса","remoteAccess.address.scope.network":"Сеть","remoteAccess.address.scope.loopback":"Loopback","remoteAccess.address.scope.internal":"Внутренний","remoteAccess.address.open":"Открыть","remoteAccess.address.showQr":"Показать QR","remoteAccess.address.hideQr":"Скрыть QR","remoteAccess.address.qrAlt":"QR для {url}"},g={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"Нет предыдущих сессий","sessionPicker.resume.title":"Продолжить сессию ({count}):","sessionPicker.session.untitled":"Без названия","sessionPicker.divider.or":"или","sessionPicker.new.title":"Начать новую сессию:","sessionPicker.agents.loading":"Загрузка агентов…","sessionPicker.actions.creating":"Создание…","sessionPicker.actions.createSession":"Создать сессию","sessionPicker.actions.cancel":"Отмена","sessionList.header.title":"Сессии","sessionList.session.untitled":"Без названия","sessionList.status.working":"Работает","sessionList.status.compacting":"Компактация","sessionList.status.idle":"Простой","sessionList.status.retrying":"Повтор","sessionList.status.retryingIn":"Повтор через {seconds}с","sessionList.status.retryTooltip":"{message} (Попытка {attempt})","sessionList.status.retryToast":"{countdown}: {message} (Попытка {attempt})","sessionList.status.needsPermission":"Требуется разрешение","sessionList.status.needsInput":"Требуется ввод","sessionList.expand.collapseAriaLabel":"Свернуть сессию","sessionList.expand.expandAriaLabel":"Развернуть сессию","sessionList.expand.collapseTitle":"Свернуть","sessionList.expand.expandTitle":"Развернуть","sessionList.actions.newSession.ariaLabel":"Новая сессия","sessionList.actions.newSession.title":"Новая сессия","sessionList.actions.copyId.ariaLabel":"Скопировать ID сессии","sessionList.actions.copyId.title":"Скопировать ID сессии","sessionList.actions.reload.ariaLabel":"Обновить сессию","sessionList.actions.reload.title":"Обновить сессию","sessionList.actions.rename.ariaLabel":"Переименовать сессию","sessionList.actions.rename.title":"Переименовать сессию","sessionList.actions.delete.ariaLabel":"Удалить сессию","sessionList.actions.delete.title":"Удалить сессию","sessionList.copyId.success":"ID сессии скопирован","sessionList.copyId.error":"Не удалось скопировать ID сессии","sessionList.reload.error":"Не удалось обновить сессию","sessionList.delete.error":"Не удалось удалить сессию","sessionList.delete.title":"Удалить сессию","sessionList.delete.confirmMessage":'Удалить "{label}"? Это действие нельзя отменить.',"sessionList.delete.confirmLabel":"Удалить","sessionList.delete.cancelLabel":"Отмена","sessionList.rename.error":"Не удалось переименовать сессию","sessionList.filter.placeholder":"Поиск сессий…","sessionList.filter.ariaLabel":"Поиск сессий","sessionList.selection.selectAllLabel":"Выбрать все","sessionList.selection.selectAllAriaLabel":"Выбрать все сессии","sessionList.selection.clearLabel":"Очистить","sessionList.selection.clearAriaLabel":"Очистить выбор","sessionList.selection.checkboxAriaLabel":"Выбрать сессию","sessionList.bulkDelete.button":"Удалить {count}","sessionList.bulkDelete.ariaLabel":"Удалить {count} выбранных сессий","sessionList.bulkDelete.title":"Удалить сессии","sessionList.bulkDelete.confirmMessage":"Удалить {count} выбранных сессий? Это действие нельзя отменить.","sessionList.bulkDelete.confirmLabel":"Удалить","sessionList.bulkDelete.cancelLabel":"Отмена","sessionList.bulkDelete.error":"Не удалось удалить {count} сессий","sessionRenameDialog.title":"Переименовать сессию","sessionRenameDialog.description.withLabel":'Обновите название для "{label}".',"sessionRenameDialog.description.default":"Установите новое название для этой сессии.","sessionRenameDialog.input.label":"Название сессии","sessionRenameDialog.input.placeholder":"Введите название сессии","sessionRenameDialog.actions.cancel":"Отмена","sessionRenameDialog.actions.rename":"Переименовать","sessionRenameDialog.actions.renaming":"Переименование…","sessionView.fallback.sessionNotFound":"Сессия не найдена","sessionView.alerts.abortFailed.message":"Не удалось остановить сессию","sessionView.alerts.abortFailed.title":"Не удалось остановить","sessionView.alerts.revertFailed.message":"Не удалось откатиться к сообщению","sessionView.alerts.revertFailed.title":"Не удалось откатиться","sessionView.alerts.deleteUpToFailed.message":"Не удалось удалить сообщения","sessionView.alerts.deleteUpToFailed.title":"Ошибка удаления","sessionView.alerts.forkFailed.message":"Не удалось форкнуть сессию","sessionView.alerts.forkFailed.title":"Не удалось форкнуть","sessionView.attachments.expandPastedTextAriaLabel":"Развернуть вставленный текст","sessionView.attachments.insertPastedTextTitle":"Вставить вставленный текст","sessionView.attachments.removeAriaLabel":"Удалить вложение","sessionEvents.sessionCompactedToast":"Сессия {label} была компактирована","sessionEvents.sessionError.unknown":"Неизвестная ошибка","sessionEvents.sessionError.title":"Ошибка сессии","sessionEvents.sessionError.message":"Ошибка: {message}","sessionState.cleanup.deepConfirm.message":"Эта очистка может быть медленной и может удалить сессии, которые вы не хотели удалять. Вы уверены?","sessionState.cleanup.deepConfirm.title":"Глубокая очистка сессий","sessionState.cleanup.deepConfirm.detail":"Глубокая очистка сессий удалит все сессии без сообщений, уберет завершенные сессии субагентов и очистит неиспользуемые форки сессий.","sessionState.cleanup.deepConfirm.confirmLabel":"Продолжить","sessionState.cleanup.deepConfirm.cancelLabel":"Отмена","sessionState.cleanup.toast.one":"Удалена {count} пустая сессия","sessionState.cleanup.toast.other":"Удалено {count} пустых сессий"},u={"instanceServiceStatus.sections.lsp":"LSP-серверы","instanceServiceStatus.sections.mcp":"MCP-серверы","instanceServiceStatus.sections.plugins":"Плагины","instanceServiceStatus.lsp.loading":"Загрузка LSP-серверов…","instanceServiceStatus.lsp.empty":"LSP-серверы не обнаружены.","instanceServiceStatus.lsp.status.connected":"Подключено","instanceServiceStatus.lsp.status.error":"Ошибка","instanceServiceStatus.mcp.loading":"Загрузка MCP-серверов…","instanceServiceStatus.mcp.empty":"MCP-серверы не обнаружены.","instanceServiceStatus.mcp.toggleAriaLabel":"Переключить MCP-сервер {name}","instanceServiceStatus.plugins.loading":"Загрузка плагинов…","instanceServiceStatus.plugins.empty":"Плагины не настроены.","permissionBanner.pendingRequests.one":"{count} ожидающий запрос","permissionBanner.pendingRequests.other":"{count} ожидающих запросов","permissionBanner.detail.permission.one":"{count} разрешение","permissionBanner.detail.permission.other":"{count} разрешений","permissionBanner.detail.question.one":"{count} вопрос","permissionBanner.detail.question.other":"{count} вопросов","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Выберите агента…","agentSelector.badge.subagent":"субагент","agentSelector.none":"Нет","agentSelector.trigger.primary":"Агент: {agent}","modelSelector.placeholder.search":"Поиск моделей…","modelSelector.none":"Нет","modelSelector.trigger.primary":"Модель: {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Только избранное","modelSelector.favoritesOnly.showAll":"Показать все модели","modelSelector.favorite.add":"Добавить в избранное","modelSelector.favorite.remove":"Удалить из избранного","thinkingSelector.variant.default":"По умолчанию","thinkingSelector.label":"Размышления: {variant}","envEditor.title":"Переменные окружения","envEditor.count.one":"({count} переменная)","envEditor.count.other":"({count} переменных)","envEditor.fields.name.placeholder":"Имя переменной","envEditor.fields.name.readOnlyTitle":"Имя переменной (только чтение)","envEditor.fields.value.placeholder":"Значение переменной","envEditor.actions.remove.title":"Удалить переменную","envEditor.actions.add.title":"Добавить переменную","envEditor.empty":"Переменные окружения не настроены. Добавьте переменные выше, чтобы настроить окружение OpenCode.","envEditor.help":"Эти переменные будут доступны в окружении OpenCode при запуске экземпляров.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Контекст","contextUsagePanel.labels.input":"Ввод","contextUsagePanel.labels.output":"Вывод","contextUsagePanel.labels.cost":"Стоимость","contextUsagePanel.labels.used":"Использовано","contextUsagePanel.labels.available":"Доступно","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Отключено","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"Уровень логирования OpenCode","settings.opencode.logLevel.subtitle":"Задайте уровень логирования, используемый при запуске новых экземпляров OpenCode.","settings.opencode.logLevel.selector.title":"Подробность логов","settings.opencode.logLevel.selector.subtitle":"Выберите, сколько логов должны выводить новые экземпляры OpenCode.","settings.opencode.logLevel.option.debug":"Отладка","settings.opencode.logLevel.option.info":"Информация","settings.opencode.logLevel.option.warn":"Предупреждение","settings.opencode.logLevel.option.error":"Ошибка","settings.appearance.behavior.title":"Взаимодействие","settings.appearance.behavior.subtitle":"Значения по умолчанию для сообщений, диффов и ввода.","settings.behavior.keyboardHints.title":"Подсказки сочетаний клавиш","settings.behavior.keyboardHints.subtitle":"Показывать подсказки сочетаний клавиш по всему интерфейсу.","settings.behavior.thinking.title":"Разделы размышлений","settings.behavior.thinking.subtitle":"Показывать или скрывать разделы размышлений ИИ в сообщениях.","settings.behavior.thinkingDefault.title":"Размышления по умолчанию","settings.behavior.thinkingDefault.subtitle":"Выберите, начинать ли разделы размышлений развернутыми или свернутыми.","settings.behavior.timelineTools.title":"Вызовы инструментов в таймлайне","settings.behavior.timelineTools.subtitle":"Показывать или скрывать записи вызовов инструментов в таймлайне сообщений.","settings.behavior.diffView.title":"Вид диффа","settings.behavior.diffView.subtitle":"Выберите, как отображаются диффы вызовов инструментов.","settings.behavior.diffView.option.split":"Раздельный","settings.behavior.diffView.option.unified":"Единый","settings.behavior.toolOutputsDefault.title":"Выводы инструментов по умолчанию","settings.behavior.toolOutputsDefault.subtitle":"Выберите, начинать ли выводы инструментов развернутыми или свернутыми.","settings.behavior.diagnosticsDefault.title":"Диагностика по умолчанию","settings.behavior.diagnosticsDefault.subtitle":"Выберите, начинать ли вывод диагностики развернутым или свернутым.","settings.behavior.toolInputsVisibility.title":"Видимость входных данных инструмента","settings.behavior.toolInputsVisibility.subtitle":"Задайте видимость по умолчанию для входных аргументов вызовов инструментов.","settings.behavior.usageMetrics.title":"Метрики использования токенов","settings.behavior.usageMetrics.subtitle":"Показывать или скрывать статистику токенов и стоимости в сообщениях ассистента.","settings.behavior.autoCleanup.title":"Автоочистка пустых сессий","settings.behavior.autoCleanup.subtitle":"Автоматически очищать пустые сессии при создании новых.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Enter для отправки","settings.behavior.promptSubmit.subtitle":"Enter отправляет; Cmd/Ctrl+Enter вставляет новую строку.","settings.speech.title":"Речь","settings.speech.subtitle":"Настройте преобразование речи в текст сейчас и подготовьте основу для синтеза речи в будущих функциях.","settings.speech.provider.title":"Провайдер","settings.speech.provider.subtitle":"Речевые запросы используют серверный речевой адаптер.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Проверка конфигурации...","settings.speech.status.configured":"Настроено","settings.speech.status.missing":"Отсутствует API-ключ","settings.speech.status.error":"Речевой сервис недоступен","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Используется для речевых запросов, управляемых CodeNomad.","settings.speech.apiKey.placeholder":"Введите новый API-ключ","settings.speech.apiKey.storedNote":"Сохранённый API-ключ скрыт. Введите новое значение, чтобы заменить его, или оставьте поле пустым, чтобы сохранить текущий ключ.","settings.speech.apiKey.clearAction":"Удалить сохранённый ключ","settings.speech.apiKey.clearPending":"Сохранённый API-ключ будет удалён после сохранения.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Необязательная переопределяющая ссылка для речевых endpoint'ов, совместимых с OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Модель распознавания","settings.speech.sttModel.subtitle":"Модель, используемая для преобразования голосового ввода в тексте запроса.","settings.speech.ttsModel.title":"Речевая модель","settings.speech.ttsModel.subtitle":"Модель синтеза речи по умолчанию, зарезервированная для будущих функций воспроизведения.","settings.speech.ttsVoice.title":"Голос по умолчанию","settings.speech.ttsVoice.subtitle":"Голос синтеза речи по умолчанию, зарезервированный для будущих функций воспроизведения.","settings.speech.playbackMode.title":"Режим воспроизведения","settings.speech.playbackMode.subtitle":"Выберите, начинать ли воспроизведение TTS во время поступления аудио или только после полной генерации файла.","settings.speech.playbackMode.streaming":"Потоковый","settings.speech.playbackMode.buffered":"Буферизованный","settings.speech.ttsFormat.title":"Формат вывода","settings.speech.ttsFormat.subtitle":"Выберите аудиоформат для синтезированной речи. Поддержка потокового режима зависит от провайдера и браузера.","settings.speech.help":"Голосовой ввод появляется, когда распознавание речи настроено и поддерживается. Для воспроизведения сообщений используются выбранные здесь режим и формат TTS.","settings.speech.compatibility.streamingUnavailable":"Текущая конфигурация голосового провайдера не заявляет поддержку потокового TTS. Переключите режим воспроизведения на buffered, если хотите, чтобы воспроизведение работало уже сейчас.","settings.speech.compatibility.browserStreamingUnavailable":"Ваш текущий браузер не может воспроизводить потоково выбранный формат TTS. Выберите buffered-воспроизведение или переключитесь на другой формат.","settings.speech.compatibility.runtimeNote":"В режиме streaming по-прежнему доступны все форматы. Некоторые сочетания браузера и провайдера все равно могут завершаться ошибкой во время воспроизведения.","settings.speech.testPlayback.action":"Проверить воспроизведение","settings.speech.testPlayback.generating":"Генерация примера","settings.speech.testPlayback.stop":"Остановить пример","settings.speech.testPlayback.sample":"Спасибо, что используете CodeNomad, ваши настройки речи работают нормально.","settings.speech.testPlayback.note":"Тест сразу использует текущие режим и формат. Сначала сохраните изменения API key, Base URL, модели или голоса, если хотите проверить и их.","settings.speech.save.action":"Сохранить","settings.speech.save.saving":"Сохранение...","settings.speech.save.saved":"Сохранено","settings.speech.save.unsaved":"Есть несохранённые изменения","settings.speech.save.error":"Не удалось сохранить","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},h={"time.relative.justNow":"только что","time.relative.daysAgoShort":"{count}д назад","time.relative.hoursAgoShort":"{count}ч назад","time.relative.minutesAgoShort":"{count}м назад"},b={"toolCall.pending.waitingToRun":"Ожидание запуска…","toolCall.error.label":"Ошибка:","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Режим просмотра diff","toolCall.diff.viewMode.split":"Раздельный","toolCall.diff.viewMode.unified":"Единый","toolCall.diff.switchToSplit":"Переключить на раздельный вид","toolCall.diff.switchToUnified":"Переключить на единый вид","toolCall.diff.enableWordWrap":"Включить перенос слов","toolCall.diff.disableWordWrap":"Выключить перенос слов","toolCall.diff.copyPatch":"Скопировать patch","toolCall.diagnostics.title":"Диагностика","toolCall.diagnostics.ariaLabel":"Диагностика","toolCall.diagnostics.ariaLabel.withLabel":"Диагностика {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Неверный","toolCall.renderer.toolName.plan":"План","toolCall.renderer.toolName.applyPatch":"Применить патч","toolCall.renderer.action.working":"Выполняется…","toolCall.renderer.action.writingCommand":"Запись команды…","toolCall.renderer.action.preparingEdit":"Подготовка правки…","toolCall.renderer.action.readingFile":"Чтение файла…","toolCall.renderer.action.preparingWrite":"Подготовка записи…","toolCall.renderer.action.preparingPatch":"Подготовка патча…","toolCall.renderer.action.planning":"Планирование…","toolCall.renderer.action.fetchingFromWeb":"Получение из интернета…","toolCall.renderer.action.findingFiles":"Поиск файлов…","toolCall.renderer.action.searchingContent":"Поиск по содержимому…","toolCall.renderer.action.listingDirectory":"Просмотр каталога…","toolCall.renderer.bash.title.timeout":"Таймаут: {timeout}","toolCall.renderer.read.detail.offset":"Смещение: {offset}","toolCall.renderer.read.detail.limit":"Лимит: {limit}","toolCall.renderer.todo.empty":"Пока нет пунктов плана.","toolCall.renderer.todo.status.pending":"Ожидает","toolCall.renderer.todo.status.inProgress":"В процессе","toolCall.renderer.todo.status.completed":"Завершено","toolCall.renderer.todo.status.cancelled":"Отменено","toolCall.renderer.todo.title.plan":"План","toolCall.renderer.todo.title.creating":"Создание плана","toolCall.renderer.todo.title.completing":"Завершение плана","toolCall.renderer.todo.title.updating":"Обновление плана","toolCall.permission.status.required":"Требуется разрешение","toolCall.permission.status.queued":"Разрешение в очереди","toolCall.permission.requestedDiff.label":"Запрошенный diff","toolCall.permission.requestedDiff.withPath":"Запрошенный diff · {path}","toolCall.permission.queuedText":"Ожидание предыдущих ответов по разрешениям.","toolCall.permission.actions.allowOnce":"Разрешить один раз","toolCall.permission.actions.alwaysAllow":"Всегда разрешать","toolCall.permission.actions.deny":"Запретить","toolCall.permission.shortcuts.allowOnce":"Разрешить один раз","toolCall.permission.shortcuts.alwaysAllow":"Всегда разрешать","toolCall.permission.shortcuts.deny":"Запретить","toolCall.permission.errors.unableToUpdate":"Не удалось обновить разрешение","permissionApproval.title":"Запросы","permissionApproval.empty":"Нет ожидающих запросов.","permissionApproval.kind.permission":"Разрешение","permissionApproval.kind.question":"Вопрос","permissionApproval.questionCount.one":"{count} вопрос","permissionApproval.questionCount.other":"{count} вопросов","permissionApproval.status.active":"Активно","permissionApproval.actions.closeAriaLabel":"Закрыть","permissionApproval.actions.goToSession":"Перейти к сессии","permissionApproval.actions.loadingSession":"Загрузка…","permissionApproval.actions.loadSession":"Загрузить сессию","permissionApproval.actions.allowOnce":"Разрешить один раз","permissionApproval.actions.alwaysAllow":"Всегда разрешать","permissionApproval.actions.deny":"Запретить","permissionApproval.fallbackHint":"Загрузите сессию для получения подробностей.","permissionApproval.errors.unableToUpdatePermission":"Не удалось обновить разрешение","toolCall.question.status.required":"Требуется ответ","toolCall.question.status.queued":"Вопрос в очереди","toolCall.question.status.questions":"Вопросы","toolCall.question.action.awaitingAnswers":"Ожидание ответов…","toolCall.question.title.questions":"Вопросы","toolCall.question.title.askingQuestions":"Задаем вопросы","toolCall.question.type.one":"Вопрос","toolCall.question.type.other":"Вопросы","toolCall.question.number":"В{number}:","toolCall.question.multiple":"Несколько","toolCall.question.custom.title":"Введите свой ответ","toolCall.question.custom.label":"Свой ответ","toolCall.question.custom.placeholder":"Введите свой ответ","toolCall.question.actions.submit":"Отправить","toolCall.question.actions.dismiss":"Скрыть","toolCall.question.shortcuts.submit":"Отправить","toolCall.question.shortcuts.dismiss":"Скрыть","toolCall.question.queuedText":"Ожидание предыдущих ответов.","toolCall.question.validation.answerAll":"Ответьте на все вопросы перед отправкой.","toolCall.question.errors.unableToReply":"Не удалось ответить","toolCall.question.errors.unableToDismiss":"Не удалось скрыть","toolCall.task.action.delegating":"Делегирование…","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Шаги","toolCall.task.sections.output":"Вывод","toolCall.task.steps.count":"{count} шагов","toolCall.task.meta.agentModel":"Агент: {agent} • Модель: {model}","toolCall.task.meta.agent":"Агент: {agent}","toolCall.task.meta.model":"Модель: {model}","toolCall.status.pending":"В ожидании","toolCall.status.running":"Выполняется","toolCall.status.completed":"Завершено","toolCall.status.error":"Ошибка","toolCall.status.unknown":"Неизвестно","toolCall.applyPatch.action.preparing":"Подготовка apply_patch…","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} файл)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} файлов)","toolCall.applyPatch.fileFallback":"Файл {number}"},y=e(a,s,r,h,t,i,n,l,c,g,m,b,d,u,p,o);export{y as ruMessages};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as e}from"./index-mh_z9p40.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-BgP6xpZ6.js";const s={"advancedSettings.title":"Paramètres avancés","advancedSettings.environmentVariables.title":"Variables d'environnement","advancedSettings.environmentVariables.subtitle":"Appliquées à chaque démarrage d'une nouvelle instance OpenCode","advancedSettings.actions.close":"Fermer"},t={"app.launchError.title":"Impossible de lancer OpenCode","app.launchError.description":"Nous n'avons pas pu démarrer le binaire OpenCode sélectionné. Consultez la sortie d'erreur ci-dessous ou choisissez un autre binaire dans les paramètres OpenCode.","app.launchError.binaryPathLabel":"Chemin du binaire","app.launchError.errorOutputLabel":"Sortie d'erreur","app.launchError.openAdvancedSettings":"Ouvrir les paramètres OpenCode","app.launchError.close":"Fermer","app.launchError.closeTitle":"Fermer (Esc)","app.launchError.fallbackMessage":"Échec du lancement de l'espace de travail","app.stopInstance.confirmMessage":"Arrêter l'instance OpenCode ? Cela arrêtera le serveur.","app.stopInstance.title":"Arrêter l'instance","app.stopInstance.confirmLabel":"Arrêter","app.stopInstance.cancelLabel":"Laisser tourner","emptyState.logoAlt":"Logo CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","emptyState.actions.selectFolder":"Sélectionner un dossier","emptyState.actions.selecting":"Sélection...","emptyState.keyboardShortcut":"Raccourci clavier : {shortcut}","emptyState.examples":"Exemples : {example}","emptyState.multipleInstances":"Vous pouvez avoir plusieurs instances du même dossier","releases.upgradeRequired.title":"Mise à jour requise","releases.upgradeRequired.message.withVersion":"Mettez à jour vers CodeNomad {version} pour utiliser la dernière UI.","releases.upgradeRequired.message.noVersion":"Mettez à jour CodeNomad pour utiliser la dernière UI.","releases.upgradeRequired.action.getUpdate":"Obtenir la mise à jour","releases.uiUpdated.title":"UI mise à jour","releases.uiUpdated.message":"L'UI est maintenant mise à jour vers {version}.","releases.devUpdateAvailable.title":"Build dev disponible","releases.devUpdateAvailable.message":"Un nouveau build dev est disponible : {version}.","releases.devUpdateAvailable.action":"Voir la release"},i={"commandPalette.title":"Palette de commandes","commandPalette.description":"Rechercher et exécuter des commandes","commandPalette.searchPlaceholder":"Tapez une commande ou recherchez...","commandPalette.empty":'Aucune commande trouvée pour "{query}"',"commandPalette.category.customCommands":"Commandes personnalisées","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent et modèle","commandPalette.category.inputFocus":"Saisie et focus","commandPalette.category.system":"Système","commandPalette.category.other":"Autre","commands.newInstance.label":"Nouvelle instance","commands.newInstance.description":"Ouvrir le sélecteur de dossiers pour créer une nouvelle instance","commands.newInstance.keywords":"dossier, projet, espace de travail","commands.closeInstance.label":"Fermer l'onglet","commands.closeInstance.description":"Fermer l'onglet de premier niveau actuel","commands.closeInstance.keywords":"arrêter, quitter, fermer, onglet","commands.nextInstance.label":"Onglet suivant","commands.nextInstance.description":"Passer à l'onglet de premier niveau suivant","commands.nextInstance.keywords":"changer, naviguer, suivant, onglet","commands.previousInstance.label":"Onglet précédent","commands.previousInstance.description":"Passer à l'onglet de premier niveau précédent","commands.previousInstance.keywords":"changer, naviguer, précédent, onglet","commands.newSession.label":"Nouvelle session","commands.newSession.description":"Créer une nouvelle session parente","commands.newSession.keywords":"créer, démarrer","commands.closeSession.label":"Fermer la session","commands.closeSession.description":"Fermer la session parente actuelle","commands.closeSession.keywords":"fermer, arrêter","commands.scrubSessions.label":"Nettoyer les sessions","commands.scrubSessions.description":"Supprimer les sessions vides, les sessions de sous-agent ayant terminé leur tâche principale, ainsi que les sessions forkées inutiles.","commands.scrubSessions.keywords":"nettoyage, vide, sessions, supprimer, effacer","commands.instanceInfo.label":"Infos de l'instance","commands.instanceInfo.description":"Ouvrir la vue d'ensemble de l'instance pour les journaux et le statut","commands.instanceInfo.keywords":"infos, journaux, console, sortie, logs","commands.nextSession.label":"Session suivante","commands.nextSession.description":"Passer à l'onglet de session suivant","commands.nextSession.keywords":"changer, naviguer, suivant","commands.previousSession.label":"Session précédente","commands.previousSession.description":"Passer à l'onglet de session précédent","commands.previousSession.keywords":"changer, naviguer, précédent","commands.compactSession.label":"Compacter la session","commands.compactSession.description":"Résumer et compacter la session actuelle","commands.compactSession.keywords":"résumer, compresser, compact","commands.compactSession.errorFallback":"Impossible de compacter la session","commands.compactSession.alert.title":"Échec du compactage","commands.compactSession.alert.message":"Échec du compactage : {message}","commands.undoLastMessage.label":"Annuler le dernier message","commands.undoLastMessage.description":"Revenir sur le dernier message","commands.undoLastMessage.keywords":"revenir, annuler","commands.undoLastMessage.none.title":"Aucune action à annuler","commands.undoLastMessage.none.message":"Rien à annuler","commands.undoLastMessage.failed.title":"Échec de l'annulation","commands.undoLastMessage.failed.message":"Impossible de revenir au message","commands.openModelSelector.label":"Ouvrir le sélecteur de modèle","commands.openModelSelector.description":"Choisir un autre modèle","commands.openModelSelector.keywords":"modèle, llm, ia, ai","commands.selectModelVariant.label":"Sélectionner la variante du modèle","commands.selectModelVariant.description":"Choisir un effort de réflexion pour le modèle actuel","commands.selectModelVariant.keywords":"variante, réflexion, raisonnement, effort","commands.openAgentSelector.label":"Ouvrir le sélecteur d'agent","commands.openAgentSelector.description":"Choisir un autre agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Effacer la saisie","commands.clearInput.description":"Effacer la zone de texte du prompt","commands.clearInput.keywords":"effacer, réinitialiser, prompt","commands.promptSubmitShortcut.label.default":"Entree: Nouvelle ligne, Cmd/Ctrl+Entree: Envoyer le prompt","commands.promptSubmitShortcut.label.swapped":"Entree: Envoyer le prompt, Cmd/Ctrl+Entree: Nouvelle ligne","commands.promptSubmitShortcut.description":"Echanger le comportement de Entree et Cmd/Ctrl+Entree dans la saisie du prompt","commands.promptSubmitShortcut.keywords":"entree, envoyer, nouvelle ligne, raccourci, cmd, ctrl, prompt","commands.thinkingBlocks.label.show":"Afficher la réflexion","commands.thinkingBlocks.label.hide":"Masquer la réflexion","commands.thinkingBlocks.description":"Afficher ou masquer les sections de réflexion de l'IA","commands.thinkingBlocks.keywords":"réflexion, raisonnement, basculer, afficher, masquer","commands.timelineToolCalls.label.show":"Afficher les appels d'outil dans la timeline","commands.timelineToolCalls.label.hide":"Masquer les appels d'outil dans la timeline","commands.timelineToolCalls.description":"Afficher/masquer les entrées d'appel d'outil dans la timeline des messages","commands.timelineToolCalls.keywords":"timeline, outil, basculer","commands.keyboardShortcutHints.label.show":"Afficher les raccourcis clavier","commands.keyboardShortcutHints.label.hide":"Masquer les raccourcis clavier","commands.keyboardShortcutHints.description":"Afficher ou masquer les indices de raccourcis clavier dans l'interface","commands.keyboardShortcutHints.description.disabledWeb":"Désactivé en WebUI (les raccourcis sont toujours masqués)","commands.keyboardShortcutHints.keywords":"raccourci, raccourcis, clavier, keybind, indices","commands.common.expanded":"Développé","commands.common.collapsed":"Réduit","commands.common.visible":"Visible","commands.common.hidden":"Masqué","commands.common.enabled":"Activé","commands.common.disabled":"Désactivé","commands.thinkingBlocksDefault.label":"Vue de la réflexion: {state}","commands.thinkingBlocksDefault.description":"Réduire / Développer les sections de réflexion de l'IA lorsqu'elles sont affichées","commands.thinkingBlocksDefault.keywords":"réflexion, raisonnement, développer, réduire, défaut","commands.diffViewSplit.label":"Utiliser la vue diff côte à côte","commands.diffViewSplit.description":"Afficher les diffs d'appels d'outil côte à côte","commands.diffViewSplit.keywords":"diff, côte à côte, vue","commands.diffViewUnified.label":"Utiliser la vue diff unifiée","commands.diffViewUnified.description":"Afficher les diffs d'appels d'outil en ligne","commands.diffViewUnified.keywords":"diff, unifiée, vue","commands.toolOutputsDefault.label":"Sorties d'outil par défaut · {state}","commands.toolOutputsDefault.description":"Choisir l'ouverture par défaut des sorties d'outil","commands.toolOutputsDefault.keywords":"outil, sortie, développer, réduire","commands.diagnosticsDefault.label":"Diagnostics par défaut · {state}","commands.diagnosticsDefault.description":"Choisir l'ouverture par défaut de la sortie des diagnostics","commands.diagnosticsDefault.keywords":"diagnostics, développer, réduire","commands.toolInputsVisibility.label":"Visibilité des entrées d'outil · {state}","commands.toolInputsVisibility.description":"Définir la visibilité par défaut des arguments d'entrée des appels d'outil","commands.toolInputsVisibility.keywords":"outil, entrées, arguments, visibilité, masquer, afficher, développer, réduire","commands.tokenUsageDisplay.label":"Affichage de l'usage des tokens · {state}","commands.tokenUsageDisplay.description":"Afficher ou masquer les stats de tokens et de coût pour les messages de l'assistant","commands.tokenUsageDisplay.keywords":"token, usage, coût, stats","commands.autoCleanupBlankSessions.label":"Nettoyage auto des sessions vides · {state}","commands.autoCleanupBlankSessions.description":"Nettoyer automatiquement les sessions vides lors de la création de nouvelles","commands.autoCleanupBlankSessions.keywords":"auto, nettoyage, vide, sessions, basculer","commands.showHelp.label":"Afficher l'aide","commands.showHelp.description":"Afficher les raccourcis clavier et l'aide","commands.showHelp.keywords":"raccourcis, aide","commands.custom.argumentsPrompt.message":"Arguments pour /{name}","commands.custom.argumentsPrompt.title":"Commande personnalisée","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"ex. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Exécuter","commands.custom.argumentsPrompt.cancelLabel":"Annuler","commands.custom.argumentsPrompt.openFailed.message":"Impossible d'ouvrir l'invite d'arguments.","commands.custom.argumentsPrompt.openFailed.title":"Arguments de commande","commands.custom.entries.descriptionFallback":"Commande personnalisée","commands.custom.sessionRequired.message":"Sélectionnez une session avant d'exécuter une commande personnalisée.","commands.custom.sessionRequired.title":"Session requise","commands.custom.runFailed.message":"Impossible d'exécuter la commande personnalisée. Consultez la console pour les détails.","commands.custom.runFailed.title":"Échec de la commande","unifiedPicker.loading.searching":"Recherche...","unifiedPicker.loading.loadingWorkspace":"Chargement de l'espace de travail...","unifiedPicker.title.command":"Sélectionner une commande","unifiedPicker.title.mention":"Sélectionner un agent ou un fichier","unifiedPicker.empty":"Aucun résultat","unifiedPicker.sections.commands":"COMMANDES","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FICHIERS","unifiedPicker.badge.subagent":"sous-agent","unifiedPicker.footer.navigate":"naviguer","unifiedPicker.footer.select":"sélectionner","unifiedPicker.footer.close":"fermer"},o={"alertDialog.fallbackTitle.info":"Attention","alertDialog.fallbackTitle.warning":"Veuillez vérifier","alertDialog.fallbackTitle.error":"Un problème est survenu","alertDialog.actions.confirm":"Confirmer","alertDialog.actions.run":"Exécuter","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Annuler","alertDialog.prompt.inputLabel":"Saisie","backgroundProcessOutputDialog.title":"Sortie en arrière-plan","backgroundProcessOutputDialog.actions.close":"Fermer","backgroundProcessOutputDialog.loading":"Chargement de la sortie...","backgroundProcessOutputDialog.truncatedNotice":"Sortie tronquée pour l'affichage.","backgroundProcessOutputDialog.loadErrorFallback":"Impossible de charger la sortie."},n={"directoryBrowser.defaultDescription":"Parcourez les dossiers sous la racine d'espace de travail configurée.","directoryBrowser.close":"Fermer","directoryBrowser.currentFolder":"Sélectionner un dossier ou saisir un chemin","directoryBrowser.currentFolder.inputAriaLabel":"Chemin du dossier","directoryBrowser.currentFolder.inputPlaceholder":"Saisissez ou collez un chemin de dossier","directoryBrowser.openCurrent":"Ouvrir","directoryBrowser.selectCurrent":"Sélectionner le dossier actuel","directoryBrowser.newFolder":"Nouveau dossier","directoryBrowser.creating":"Création…","directoryBrowser.loadingFolders":"Chargement des dossiers…","directoryBrowser.noFolders":"Aucun dossier disponible.","directoryBrowser.upOneLevel":"Remonter d'un niveau","directoryBrowser.select":"Sélectionner","directoryBrowser.load.errorFallback":"Impossible de charger le système de fichiers","directoryBrowser.createFolder.promptMessage":"Créer un nouveau dossier dans le répertoire courant.","directoryBrowser.createFolder.title":"Nouveau dossier","directoryBrowser.createFolder.inputLabel":"Nom du dossier","directoryBrowser.createFolder.inputPlaceholder":"ex. mon-nouveau-projet","directoryBrowser.createFolder.confirmLabel":"Créer","directoryBrowser.createFolder.cancelLabel":"Annuler","directoryBrowser.createFolder.invalidNameMessage":"Veuillez saisir un seul nom de dossier.","directoryBrowser.createFolder.invalidNameDetail":"Les noms de dossier ne peuvent pas contenir de barres obliques, '..' ou '~'.","directoryBrowser.createFolder.errorFallback":"Impossible de créer le dossier","filesystemBrowser.descriptionFallback":"Recherchez un chemin sous la racine d'espace de travail configurée.","filesystemBrowser.rootLabel":"Racine : {root}","filesystemBrowser.actions.close":"Fermer","filesystemBrowser.actions.retry":"Réessayer","filesystemBrowser.actions.select":"Sélectionner","filesystemBrowser.filterLabel":"Filtrer","filesystemBrowser.search.placeholder.directories":"Rechercher des dossiers","filesystemBrowser.search.placeholder.files":"Rechercher des fichiers","filesystemBrowser.currentFolder.label":"Dossier actuel","filesystemBrowser.currentFolder.selectCurrent":"Sélectionner le dossier actuel","filesystemBrowser.loading.filesystem":"système de fichiers","filesystemBrowser.loading.workspaceRoot":"racine de l'espace de travail","filesystemBrowser.loading.loadingWithPath":"Chargement de {path}…","filesystemBrowser.empty.noEntries":"Aucune entrée trouvée.","filesystemBrowser.navigation.upOneLevel":"Remonter d'un niveau","filesystemBrowser.hints.navigate":"Naviguer","filesystemBrowser.hints.select":"Sélectionner","filesystemBrowser.hints.close":"Fermer","filesystemBrowser.errors.loadFilesystemFallback":"Impossible de charger le système de fichiers","filesystemBrowser.errors.openDirectoryFallback":"Impossible d'ouvrir le répertoire"},r={"folderSelection.language.ariaLabel":"Langue","folderSelection.logoAlt":"Logo CodeNomad","folderSelection.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","folderSelection.links.github":"GitHub de CodeNomad","folderSelection.links.githubStars":"Étoiles GitHub de CodeNomad","folderSelection.links.discord":"Discord de CodeNomad","folderSelection.empty.title":"Aucun dossier récent","folderSelection.empty.description":"Parcourez un dossier pour commencer","folderSelection.recent.title":"Dossiers récents","folderSelection.recent.subtitle.one":"{count} dossier disponible","folderSelection.recent.subtitle.other":"{count} dossiers disponibles","folderSelection.recent.remove":"Retirer des récents","folderSelection.browse.title":"Parcourir un dossier","folderSelection.browse.subtitle":"Sélectionnez n'importe quel dossier sur votre ordinateur","folderSelection.browse.button":"Parcourir les dossiers","folderSelection.browse.buttonOpening":"Ouverture...","folderSelection.actions.title":"Ouvrir un dossier ou se connecter à un serveur","folderSelection.actions.subtitle":"Ouvrez un dossier local ou connectez-vous à un serveur CodeNomad","folderSelection.actions.connectButton":"Se connecter au serveur CodeNomad","folderSelection.advancedSettings":"Paramètres avancés","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Naviguer","folderSelection.hints.select":"Sélectionner","folderSelection.hints.remove":"Retirer","folderSelection.hints.browse":"Parcourir","folderSelection.loading.title":"Démarrage de l'instance...","folderSelection.loading.subtitle":"Patientez pendant que nous préparons votre espace de travail.","folderSelection.drop.title":"Déposez un dossier pour l'ouvrir","folderSelection.drop.subtitle":"Démarrez une nouvelle instance dans le dossier déposé.","folderSelection.drop.invalidTitle":"Impossible d'ouvrir l'élément déposé","folderSelection.drop.invalidMessage":"Déposez un dossier pour démarrer une nouvelle instance.","folderSelection.dialog.title":"Sélectionner l'espace de travail","folderSelection.dialog.description":"Sélectionnez un espace de travail pour commencer à coder.","folderSelection.tabs.local":"Dossiers locaux","folderSelection.tabs.servers":"Serveurs","folderSelection.servers.title":"Serveurs enregistrés","folderSelection.servers.subtitle":"Ouvrez un serveur CodeNomad distant enregistré dans une nouvelle fenêtre","folderSelection.servers.count":"{count} serveurs","folderSelection.servers.empty.title":"Aucun serveur enregistré","folderSelection.servers.empty.description":"Ajoutez un serveur distant pour vous reconnecter rapidement depuis cet appareil","folderSelection.servers.connectTitle":"Se connecter à un serveur","folderSelection.servers.connectSubtitle":"Enregistrez un serveur CodeNomad distant et ouvrez-le dans une nouvelle fenêtre","folderSelection.servers.connectButton":"Se connecter à un serveur","folderSelection.servers.remove":"Supprimer le serveur enregistré","folderSelection.servers.skipTls":"TLS auto-signé","folderSelection.servers.errorTitle":"Échec de la connexion distante","folderSelection.servers.dialog.title":"Se connecter à un serveur","folderSelection.servers.dialog.description":"Ajoutez un serveur CodeNomad distant et ouvrez-le immédiatement si vous le souhaitez.","folderSelection.servers.dialog.name":"Nom du serveur","folderSelection.servers.dialog.namePlaceholder":"Serveur de production","folderSelection.servers.dialog.url":"URL du serveur","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Ignorer la vérification TLS pour les certificats auto-signés.","folderSelection.servers.dialog.cancel":"Annuler","folderSelection.servers.dialog.save":"Enregistrer","folderSelection.servers.dialog.connect":"Se connecter","folderSelection.servers.dialog.connecting":"Connexion...","folderSelection.servers.dialog.errorRequired":"Le nom du serveur et l'URL sont requis.","folderSelection.servers.dialog.errorConnect":"Impossible de se connecter au serveur distant.","folderSelection.servers.certificateInstall.title":"Installer le certificat local","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad doit installer un certificat local pour ouvrir des fenetres distantes HTTPS auto-signees. Ce certificat est utilise uniquement pour le trafic du proxy local de bureau sur votre machine. Votre systeme d'exploitation peut afficher une seconde invite de certificat apres cela.","folderSelection.servers.certificateInstall.confirmLabel":"Continuer","folderSelection.servers.certificateInstall.cancelLabel":"Annuler","folderSelection.servers.certificateInstall.cancelled":"CodeNomad a besoin que le certificat local soit approuve avant de pouvoir ouvrir des fenetres distantes HTTPS auto-signees.","folderSelection.sidecars.button":"Open SideCar"},a={"instanceTabs.new.title":"Nouvelle instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Nouvelle instance","instanceTabs.remote.title":"Connexion à distance","instanceTabs.remote.ariaLabel":"Connexion à distance","instanceInfo.title":"Informations de l'instance","instanceInfo.labels.folder":"Dossier","instanceInfo.labels.project":"Projet","instanceInfo.labels.versionControl":"Contrôle de version","instanceInfo.labels.opencodeVersion":"Version d'OpenCode","instanceInfo.labels.binaryPath":"Chemin du binaire","instanceInfo.labels.environmentVariables":"Variables d'environnement ({count})","instanceInfo.loading":"Chargement...","instanceInfo.server.title":"Serveur","instanceInfo.server.port":"Port :","instanceInfo.server.pid":"PID :","instanceInfo.server.status":"Statut :","instanceTab.status.permission":"En attente d'autorisation","instanceTab.status.compacting":"Compactage","instanceTab.status.working":"En cours","instanceTab.status.idle":"Inactif","instanceTab.status.ariaLabel":"Statut de l'instance : {status}","instanceTab.actions.close.ariaLabel":"Fermer l'instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Infos de l'instance","instanceShell.leftDrawer.pin":"Épingler le tiroir gauche","instanceShell.leftDrawer.unpin":"Désépingler le tiroir gauche","instanceShell.leftDrawer.toggle.pinned":"Tiroir gauche épinglé","instanceShell.leftDrawer.toggle.open":"Ouvrir le tiroir gauche","instanceShell.leftDrawer.toggle.close":"Fermer le tiroir gauche","instanceShell.rightDrawer.pin":"Épingler le tiroir droit","instanceShell.rightDrawer.unpin":"Désépingler le tiroir droit","instanceShell.rightDrawer.toggle.pinned":"Tiroir droit épinglé","instanceShell.rightDrawer.toggle.open":"Ouvrir le tiroir droit","instanceShell.rightDrawer.toggle.close":"Fermer le tiroir droit","instanceShell.fullscreen.enter":"Plein écran","instanceShell.fullscreen.exit":"Quitter le plein écran","instanceShell.metrics.usedLabel":"Utilisé","instanceShell.metrics.availableLabel":"Dispo","instanceShell.commandPalette.openAriaLabel":"Ouvrir la palette de commandes","instanceShell.commandPalette.button":"Palette de commandes","instanceShell.connection.ariaLabel":"Connexion {status}","instanceShell.connection.connected":"Connecté","instanceShell.connection.connecting":"Connexion...","instanceShell.connection.disconnected":"Déconnecté","instanceShell.connection.unknown":"Inconnu","instanceWelcome.shortcuts.newSession":"Nouvelle session","instanceWelcome.empty.title":"Aucune session précédente","instanceWelcome.empty.description":"Créez une nouvelle session ci-dessous pour commencer","instanceWelcome.loading.title":"Chargement des sessions","instanceWelcome.loading.description":"Récupération de vos sessions précédentes...","instanceWelcome.resume.title":"Reprendre une session","instanceWelcome.resume.subtitle.one":"{count} session disponible","instanceWelcome.resume.subtitle.other":"{count} sessions disponibles","instanceWelcome.session.untitled":"Session sans titre","instanceWelcome.new.title":"Démarrer une nouvelle session","instanceWelcome.new.subtitle":"Nous réutiliserons automatiquement votre dernier agent/modèle","instanceWelcome.new.createButton":"Créer la session","instanceWelcome.overlay.close":"Fermer","instanceWelcome.actions.viewInstanceInfo":"Voir les infos de l'instance","instanceWelcome.actions.renameTitle":"Renommer la session","instanceWelcome.actions.deleteTitle":"Supprimer la session","instanceWelcome.hints.navigate":"Naviguer","instanceWelcome.hints.jump":"Sauter","instanceWelcome.hints.firstLast":"Prem./Dern.","instanceWelcome.hints.resume":"Reprendre","instanceWelcome.hints.delete":"Supprimer","instanceWelcome.toasts.renameError":"Impossible de renommer la session","instanceDisconnected.title":"Instance déconnectée","instanceDisconnected.folderFallback":"cet espace de travail","instanceDisconnected.reasonFallback":"Le serveur ne répond plus","instanceDisconnected.description":"{folder} n'est plus accessible. Fermez l'onglet pour continuer à travailler.","instanceDisconnected.details.title":"Détails","instanceDisconnected.details.folderLabel":"Dossier :","instanceDisconnected.actions.closeInstance":"Fermer l'instance","instanceShell.empty.title":"Aucune session sélectionnée","instanceShell.empty.description":"Sélectionnez une session pour voir les messages","instanceShell.rightPanel.title":"Panneau d'état","instanceShell.rightPanel.tabs.changes":"Modifications","instanceShell.rightPanel.tabs.gitChanges":"Changements Git","instanceShell.rightPanel.tabs.files":"Fichiers","instanceShell.rightPanel.tabs.status":"Statut","instanceShell.rightPanel.tabs.ariaLabel":"Onglets du panneau droit","instanceShell.rightPanel.actions.refresh":"Actualiser","instanceShell.rightPanel.actions.save":"Enregistrer (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Voulez-vous enregistrer les modifications de "{path}" avant de changer ?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Enregistrer","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Annuler les modifications","instanceShell.rightPanel.actions.conflict.message":"Le fichier a été modifié par l'agent. Écraser les modifications de l'agent ?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Écraser","instanceShell.rightPanel.actions.conflict.cancelLabel":"Annuler","instanceShell.rightPanel.actions.refreshDirty.message":"Le fichier a des modifications non enregistrées. Actualiser supprimera vos modifications. Continuer ?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Actualiser","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Annuler","instanceShell.rightPanel.toast.saveSuccess":"Fichier enregistré avec succès","instanceShell.rightPanel.toast.saveError":"Échec de l'enregistrement du fichier","instanceShell.rightPanel.sections.yoloMode":"Mode yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Approuve automatiquement les demandes d'autorisation pour la session actuelle. A utiliser seulement si vous faites confiance aux outils executes.","instanceShell.rightPanel.sections.sessionChanges":"Changements de session","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Fichiers modifiés dans la session actuelle. Affiche les ajouts et suppressions pour chaque fichier.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"Feuille de route de l'agent pour cette session. Suit les tâches et leur statut d'achèvement.","instanceShell.rightPanel.sections.backgroundProcesses":"Shells en arrière-plan","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Processus longs démarrés par l'agent. Vous pouvez surveiller leur sortie, les arrêter ou les terminer.","instanceShell.rightPanel.sections.mcp":"Serveurs MCP","instanceShell.rightPanel.sections.mcp.tooltip":"Serveurs du protocole Model Context Protocol qui étendent les capacités de l'agent avec des outils externes.","instanceShell.rightPanel.sections.lsp":"Serveurs LSP","instanceShell.rightPanel.sections.lsp.tooltip":"Serveurs du protocole Language Server Protocol fournissant l'intelligence de code et les diagnostics.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins qui personnalisent le comportement de l'UI et du serveur, ajoutant des fonctionnalités au-delà de MCP et LSP.","instanceShell.sessionChanges.noSessionSelected":"Sélectionnez une session pour voir les changements.","instanceShell.sessionChanges.loading":"Récupération des changements...","instanceShell.sessionChanges.empty":"Aucun changement pour l'instant.","instanceShell.sessionChanges.filesChanged":"{count} fichiers modifiés","instanceShell.sessionChanges.actions.show":"Afficher les changements","instanceShell.gitChanges.loading":"Chargement des changements Git...","instanceShell.gitChanges.empty":"Aucun changement Git pour l'instant.","instanceShell.gitChanges.deleted":"Supprimé","instanceShell.gitChanges.binaryViewer":"Impossible d'afficher un fichier binaire","instanceShell.gitChanges.sections.staged":"Changements indexés","instanceShell.gitChanges.sections.unstaged":"Changements","instanceShell.gitChanges.actions.insertContext":"Ajouter au prompt","instanceShell.gitChanges.actions.stage":"Indexer le fichier","instanceShell.gitChanges.actions.unstage":"Retirer de l'index","instanceShell.gitChanges.commit.placeholder":"Saisissez le message du commit","instanceShell.gitChanges.commit.submit":"Valider","instanceShell.gitChanges.commit.submitting":"Validation...","instanceShell.gitChanges.commit.success":"Commit créé avec succès","instanceShell.gitChanges.commit.error":"Impossible de créer le commit","instanceShell.filesShell.fileListTitle":"Liste des fichiers","instanceShell.filesShell.mobileSelectorLabel":"Sélectionner un fichier","instanceShell.filesShell.mobileSelectorEmpty":"Sélectionnez un fichier","instanceShell.filesShell.viewerTitle":"Visionneuse de changements","instanceShell.filesShell.viewerPlaceholder":"Le rendu détaillé sera ajouté à l'étape suivante.","instanceShell.filesShell.viewerEmpty":"Aucun fichier sélectionné.","instanceShell.filesShell.listEmpty":"Aucun fichier dans ce dossier.","instanceShell.filesShell.search.placeholder":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.ariaLabel":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.empty":"Aucun fichier correspondant.","instanceShell.filesShell.actions.copyPath":"Copier le chemin","instanceShell.filesShell.toast.copyPathSuccess":"Chemin copié","instanceShell.filesShell.toast.copyPathError":"Impossible de copier le chemin","instanceShell.filesShell.previewMarkdown":"Aperçu Markdown","instanceShell.filesShell.showSource":"Afficher la source","instanceShell.filesShell.enableWordWrap":"Activer le retour à la ligne","instanceShell.filesShell.disableWordWrap":"Désactiver le retour à la ligne","instanceShell.plan.noSessionSelected":"Sélectionnez une session pour voir le plan.","instanceShell.plan.empty":"Aucun plan pour l'instant.","instanceShell.yoloMode.noSessionSelected":"Selectionnez une session pour configurer le mode yolo.","instanceShell.yoloMode.title":"Mode yolo","instanceShell.yoloMode.description":"Approuve automatiquement les demandes d'autorisation pour cette session. Desactive par defaut.","instanceShell.yoloMode.badge":"Mode yolo","instanceShell.yoloMode.badgeAriaLabel":"Mode yolo active","instanceShell.backgroundProcesses.empty":"Aucun processus en arrière-plan.","instanceShell.backgroundProcesses.status":"Statut : {status}","instanceShell.backgroundProcesses.output":"Sortie : {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Notification de fin activee","instanceShell.backgroundProcesses.notify.disabled":"Notification de fin desactivee","instanceShell.backgroundProcesses.actions.output":"Sortie","instanceShell.backgroundProcesses.actions.stop":"Arrêter","instanceShell.backgroundProcesses.actions.terminate":"Terminer","instanceShell.worktree.delete.error.title":"Echec de suppression","instanceShell.worktree.delete.error.fallback":"Impossible de supprimer le worktree","instanceShell.worktree.delete.error.causeLabel":"Cause probable :","instanceShell.worktree.delete.error.nextStepLabel":"Etape suivante suggeree :","instanceShell.worktree.delete.error.summary.localChanges":"Git a refuse de supprimer ce worktree car il contient des fichiers modifies ou non suivis.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad n'a pas pu supprimer ce worktree car quelque chose utilise encore des fichiers dans ce dossier.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad n'a pas pu supprimer ce worktree car le dossier ou l'enregistrement du worktree est introuvable.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad n'a pas pu supprimer ce worktree car l'acces au dossier a ete refuse.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad n'a pas pu supprimer ce worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Modifications locales","instanceShell.worktree.delete.error.cause.inUse":"Un autre processus utilise ce worktree","instanceShell.worktree.delete.error.cause.notFound":"Le dossier ou l'enregistrement du worktree est manquant","instanceShell.worktree.delete.error.cause.permissionDenied":"Permissions du systeme de fichiers insuffisantes","instanceShell.worktree.delete.error.cause.unknown":"Le backend a renvoye une erreur de suppression non classee","instanceShell.worktree.delete.error.nextStep.localChanges":"Activez la suppression forcee si vous voulez jeter les modifications locales, ou nettoyez le worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.inUse":"Fermez les terminaux, editeurs, observateurs ou processus en arrière-plan qui utilisent ce worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.notFound":"Rechargez les worktrees puis reessayez. Si cela echoue encore, inspectez le chemin du worktree sur le disque.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Verifiez les permissions du systeme de fichiers et fermez les applications qui peuvent verrouiller ce dossier, puis reessayez.","instanceShell.worktree.delete.error.nextStep.unknown":"Consultez l'erreur brute ci-dessous pour les details, puis reessayez apres avoir corrige le probleme signale.","instanceShell.worktree.delete.error.copyRaw":"Copier l'erreur","instanceShell.worktree.delete.error.copySanitized":"Copier la version nettoyee","instanceShell.worktree.delete.error.copySuccess":"Erreur de suppression copiee","instanceShell.worktree.delete.error.copySanitizedSuccess":"Erreur de suppression nettoyee copiee","instanceShell.worktree.delete.error.copyFailure":"Impossible de copier l'erreur de suppression","versionPill.appWithVersion":"Appli {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Binaire OpenCode","opencodeBinarySelector.subtitle":"Choisissez quel exécutable OpenCode doit lancer","opencodeBinarySelector.customPath.placeholder":"Saisissez le chemin vers le binaire opencode…","opencodeBinarySelector.actions.add":"Ajouter","opencodeBinarySelector.actions.browse":"Parcourir le binaire…","opencodeBinarySelector.actions.removeTitle":"Supprimer le binaire","opencodeBinarySelector.badge.systemPath":"Utiliser le binaire depuis le PATH système","opencodeBinarySelector.status.checkingVersions":"Vérification des versions…","opencodeBinarySelector.status.checking":"Vérification…","opencodeBinarySelector.dialog.title":"Sélectionner le binaire OpenCode","opencodeBinarySelector.dialog.description":"Parcourez les fichiers exposés par le serveur CLI.","opencodeBinarySelector.validation.invalidBinary":"Binaire OpenCode invalide","opencodeBinarySelector.validation.alreadyValidating":"Validation déjà en cours","opencodeBinarySelector.display.systemPath":"{name} (PATH système)","opencodeBinarySelector.versionLabel":"v{version}"},l={"loadingScreen.logoAlt":"Logo CodeNomad","loadingScreen.status.issue":"Un problème est survenu","loadingScreen.actions.showAnother":"En afficher un autre","loadingScreen.errors.missingRoot":"Élément racine de chargement introuvable","loadingScreen.phrases.neurons":"Réchauffage des neurones de l'IA…","loadingScreen.phrases.daydreaming":"On convainc l'IA d'arrêter de rêvasser…","loadingScreen.phrases.goggles":"Polissage des lunettes de code de l'IA…","loadingScreen.phrases.reorganizingFiles":"On demande à l'IA d'arrêter de réorganiser vos fichiers…","loadingScreen.phrases.coffee":"On donne un café supplémentaire à l'IA…","loadingScreen.phrases.nodeModules":"On apprend à l'IA à ne pas supprimer node_modules (encore)…","loadingScreen.phrases.actNatural":"On dit à l'IA d'avoir l'air naturel avant votre arrivée…","loadingScreen.phrases.rewritingHistory":"On demande à l'IA d'arrêter de réécrire l'histoire…","loadingScreen.phrases.stretch":"On laisse l'IA s'étirer avant son sprint de code…","loadingScreen.phrases.keyboardControl":"On persuade l'IA de vous rendre le contrôle du clavier…"},c={"logsView.title":"Journaux du serveur","logsView.actions.show":"Afficher les journaux du serveur","logsView.actions.hide":"Masquer les journaux du serveur","logsView.envVars.title":"Variables d'environnement ({count})","logsView.paused.title":"Les journaux du serveur sont en pause","logsView.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","logsView.empty.waiting":"En attente de la sortie du serveur...","logsView.scrollToBottom":"Aller en bas","infoView.logs.title":"Journaux du serveur","infoView.logs.actions.show":"Afficher les journaux du serveur","infoView.logs.actions.hide":"Masquer les journaux du serveur","infoView.logs.paused.title":"Les journaux du serveur sont en pause","infoView.logs.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","infoView.logs.empty.waiting":"En attente de la sortie du serveur...","infoView.logs.scrollToBottom":"Aller en bas","infoView.dispose.actions.dispose":"Réinitialiser l'instance","infoView.dispose.actions.disposing":"Réinitialisation...","infoView.dispose.confirm.title":"Réinitialiser l'instance ?","infoView.dispose.confirm.message":"Cela efface l'état en cache pour ce répertoire et recharge l'instance.","infoView.dispose.confirm.confirmLabel":"Réinitialiser","infoView.dispose.confirm.cancelLabel":"Annuler","infoView.dispose.toast.success":"Instance réinitialisée. Rechargement...","infoView.dispose.toast.error":"Impossible de réinitialiser l'instance."},d={"markdown.codeBlock.copy.label":"Copier","markdown.codeBlock.copy.copied":"Copié !","markdown.codeBlock.copy.failed":"Échec","markdown.copy":"Copier"},u={"messageListHeader.sidebar.openSessionListAriaLabel":"Ouvrir la liste des sessions","messageListHeader.metrics.usedLabel":"Utilisé","messageListHeader.metrics.availableLabel":"Dispo","messageListHeader.commandPalette.ariaLabel":"Ouvrir la palette de commandes","messageListHeader.commandPalette.button":"Palette de commandes","messageListHeader.connection.connected":"Connecté","messageListHeader.connection.connecting":"Connexion...","messageListHeader.connection.disconnected":"Déconnecté","messageSection.empty.logoAlt":"Logo CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Démarrer une conversation","messageSection.empty.description":"Saisissez un message ci-dessous ou ouvrez la palette de commandes :","messageSection.empty.tips.commandPalette":"Palette de commandes","messageSection.empty.tips.askAboutCodebase":"Parler de votre codebase","messageSection.empty.tips.attachFilesPrefix":"Joindre des fichiers avec","messageSection.loading.messages":"Chargement des messages...","messageSection.scroll.toFirstAriaLabel":"Aller au premier message","messageSection.scroll.toLatestAriaLabel":"Aller au dernier message","messageSection.scroll.enableHoldAriaLabel":"Activer le maintien pour les longues réponses de l'assistant","messageSection.scroll.disableHoldAriaLabel":"Désactiver le maintien pour les longues réponses de l'assistant","messageSection.quote.addAsQuote":"Ajouter en citation","messageSection.quote.addAsCode":"Ajouter en code","messageSection.quote.copy":"Copier","messageSection.quote.copied":"Copié !","messageSection.quote.copyFailed":"Impossible de copier","messageTimeline.ariaLabel":"Chronologie des messages","messageTimeline.segment.user.label":"Vous","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compaction","messageTimeline.tool.fallbackLabel":"Appel d'outil","messageTimeline.tooltip.userFallback":"Message utilisateur","messageTimeline.tooltip.assistantFallback":"Réponse de l'assistant","messageTimeline.tooltip.compaction.auto":"Compaction auto","messageTimeline.tooltip.compaction.manual":"Compaction utilisateur","messageTimeline.text.filePrefix":"[Fichier] {filename}","messageTimeline.text.attachment":"Pièce jointe","messageBlock.tool.header":"Appel d'outil","messageBlock.tool.unknown":"inconnu","messageBlock.tool.goToSession.label":"Aller à la session","messageBlock.tool.goToSession.title":"Aller à la session","messageBlock.tool.goToSession.unavailableTitle":"Session pas encore disponible","messageBlock.tool.deletePart.label":"Supprimer la partie","messageBlock.tool.deletePart.deleting":"Suppression...","messageBlock.tool.deletePart.title":"Supprimer cette sortie d'outil","messageBlock.tool.deletePart.failed.title":"Échec de suppression","messageBlock.tool.deletePart.failed.message":"Impossible de supprimer la sortie d'outil","messageBlock.compaction.ariaLabel":"Compaction de la session","messageBlock.compaction.autoLabel":"Session compactée automatiquement","messageBlock.compaction.manualLabel":"Session compactée par vous","messageBlock.usage.input":"Entrée","messageBlock.usage.output":"Sortie","messageBlock.usage.reasoning":"Raisonnement","messageBlock.usage.cacheRead":"Lecture du cache","messageBlock.usage.cacheWrite":"Écriture du cache","messageBlock.usage.cost":"Coût","messageBlock.step.agentLabel":"Agent : {agent}","messageBlock.step.modelLabel":"Modèle : {model}","messageBlock.reasoning.thinkingLabel":"Réflexion","messageBlock.reasoning.expandAriaLabel":"Développer la réflexion","messageBlock.reasoning.collapseAriaLabel":"Réduire la réflexion","messageBlock.reasoning.indicator.hide":"Masquer","messageBlock.reasoning.indicator.view":"Voir","messageBlock.reasoning.detailsAriaLabel":"Détails du raisonnement","codeBlockInline.actions.copy":"Copier","codeBlockInline.actions.copied":"Copié !","messageItem.speaker.you":"Vous","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revenir","messageItem.actions.revertTitle":"Annuler les changements jusqu'ici (supprime les messages)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork depuis ce message","messageItem.actions.copy":"Copier","messageItem.actions.copyTitle":"Copier le message","messageItem.actions.copied":"Copié !","messageItem.actions.speak":"Lire le message","messageItem.actions.generatingSpeech":"Generation de l'audio","messageItem.actions.stopSpeech":"Arreter la lecture","messageItem.actions.speak.error.title":"La lecture vocale a echoue","messageItem.actions.speak.error.unsupported":"La lecture vocale n'est pas prise en charge dans ce navigateur.","messageItem.actions.speak.error.unavailable":"La lecture vocale n'est pas disponible tant que les parametres vocaux ne sont pas configures.","messageItem.actions.speak.error.generate":"Impossible de generer l'audio pour ce message.","messageItem.actions.deleteMessage":"Supprimer le message (sans annuler les changements)","messageItem.actions.deleteMessagesUpTo":"Supprimer les messages jusqu'ici (sans annuler les changements)","messageItem.actions.deletingMessage":"Suppression...","messageItem.actions.deleteMessageFailedTitle":"Échec de suppression","messageItem.actions.deleteMessageFailedMessage":"Impossible de supprimer le message","messageItem.selection.checkboxAriaLabel":"Sélectionner le message pour suppression","messageSection.bulkDelete.toolbarAriaLabel":"Éléments sélectionnés ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Supprimer les éléments sélectionnés","messageSection.bulkDelete.selectAllTitle":"Tout sélectionner","messageSection.bulkDelete.moreOptionsTitle":"Plus d'options","messageSection.bulkDelete.selectionModeLabel":"Sélection","messageSection.bulkDelete.selectionModeAll":"Tous","messageSection.bulkDelete.selectionModeTools":"Outils uniquement","messageSection.bulkDelete.selectionHint.toggle":"Selectionner un element","messageSection.bulkDelete.selectionHint.range":"Selectionner une plage","messageSection.bulkDelete.selectionHint.clear":"Effacer la selection","messageSection.bulkDelete.cancelTitle":"Annuler la sélection","messageSection.bulkDelete.failedTitle":"Échec de suppression","messageSection.bulkDelete.failedMessage":"Impossible de supprimer les éléments sélectionnés","messageItem.status.queued":"EN FILE","messageItem.status.generating":"Génération...","messageItem.status.sending":"Envoi...","messageItem.status.failedToSend":"Échec de l'envoi du message","messagePart.actions.delete":"Supprimer la partie","messagePart.actions.deleting":"Suppression...","messagePart.actions.deleteTitle":"Supprimer cet élément","messagePart.actions.deleteFailedTitle":"Échec de suppression","messagePart.actions.deleteFailedMessage":"Impossible de supprimer l'élément","messageItem.attachment.defaultName":"piece-jointe","messageItem.attachment.downloadAriaLabel":"Télécharger {name}","messageItem.agentMeta.agentLabel":"Agent : {agent}","messageItem.agentMeta.modelLabel":"Modèle : {model}","messageItem.errors.authenticationFallback":"Erreur d'authentification","messageItem.errors.outputLengthExceeded":"Longueur de sortie du message dépassée","messageItem.errors.requestAborted":"La requête a été annulée","messageItem.errors.unknownFallback":"Une erreur inconnue est survenue","attachmentChip.removeAriaLabel":"Retirer la pièce jointe","expandButton.toggleAriaLabel":"Basculer la hauteur de la zone de saisie","promptInput.placeholder.shell":"Exécuter une commande shell (Esc pour quitter)...","promptInput.placeholder.default":"Tapez votre message, @fichier, @agent, ou collez des images et du texte...","promptInput.hints.shell.exit":"pour quitter le mode shell","promptInput.hints.shell.enable":"Mode shell","promptInput.hints.commands":"Commandes","promptInput.history.previousAriaLabel":"Prompt précédent","promptInput.history.nextAriaLabel":"Prompt suivant","promptInput.overlay.newLine":"Nouvelle ligne","promptInput.overlay.send":"Envoyer","promptInput.overlay.filesAgents":"Fichiers/agents","promptInput.overlay.history":"Historique","promptInput.overlay.attachments":"• {count} fichier(s) joint(s)","promptInput.overlay.shellModeActive":"Mode shell actif","promptInput.overlay.press":"Appuyez sur","promptInput.overlay.againToAbort":"à nouveau pour interrompre la session","promptInput.stopSession.ariaLabel":"Arrêter la session","promptInput.stopSession.title":"Arrêter la session","promptInput.clear.ariaLabel":"Effacer le texte du prompt","promptInput.clear.title":"Effacer le texte du prompt","promptInput.send.ariaLabel":"Envoyer le message","promptInput.send.errorFallback":"Impossible d'envoyer le message","promptInput.send.errorTitle":"Échec de l'envoi","promptInput.conversationMode.enable.title":"Activer le mode conversation","promptInput.conversationMode.disable.title":"Desactiver le mode conversation","promptInput.conversationMode.error.title":"La lecture de la conversation a echoue","promptInput.conversationMode.error.message":"Impossible de continuer a lire les reponses de l'assistant.","promptInput.voiceInput.start.title":"Démarrer la saisie vocale","promptInput.voiceInput.stop.title":"Arrêter l'enregistrement et transcrire","promptInput.voiceInput.transcribing.title":"Transcription de l'audio","promptInput.voiceInput.error.title":"Échec de la saisie vocale","promptInput.voiceInput.error.permission":"L'accès au microphone est requis pour enregistrer la saisie vocale.","promptInput.voiceInput.error.permissionDenied":"macOS a refusé l'accès au microphone.","promptInput.voiceInput.error.unsupported":"La saisie vocale n'est pas prise en charge dans ce navigateur.","promptInput.voiceInput.error.transcribe":"Impossible de transcrire l'audio enregistré."},m={"remoteAccess.eyebrow":"Passation à distance","remoteAccess.title":"Se connecter à CodeNomad à distance","remoteAccess.subtitle":"Utilisez les adresses ci-dessous pour ouvrir CodeNomad depuis un autre appareil.","remoteAccess.close":"Fermer l'accès à distance","remoteAccess.refresh":"Rafraîchir","remoteAccess.sections.listeningMode.label":"Mode d'écoute","remoteAccess.sections.listeningMode.help":"Autorisez ou limitez les passations à distance en écoutant sur toutes les interfaces ou uniquement sur localhost.","remoteAccess.toggle.on":"Activé","remoteAccess.toggle.off":"Désactivé","remoteAccess.toggle.title":"Autoriser les connexions depuis d'autres IP","remoteAccess.toggle.caption.all":"Écoute sur 0.0.0.0","remoteAccess.toggle.caption.local":"Écoute sur 127.0.0.1","remoteAccess.toggle.note":"Modifier ceci nécessite un redémarrage et stoppe temporairement toutes les instances actives. Partagez les adresses ci-dessous une fois le serveur redémarré.","remoteAccess.listeningMode.restartConfirm.message":"Redémarrer pour appliquer le mode d'écoute ? Cela arrêtera toutes les instances en cours.","remoteAccess.listeningMode.restartConfirm.title.all":"Ouvrir aux autres appareils","remoteAccess.listeningMode.restartConfirm.title.local":"Limiter à cet appareil","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Redémarrer maintenant","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Annuler","remoteAccess.restart.errorManual":"Impossible de redémarrer automatiquement. Veuillez redémarrer l'application pour appliquer le changement.","remoteAccess.sections.serverPassword.label":"Mot de passe du serveur","remoteAccess.sections.serverPassword.help":"Les passations à distance nécessitent un mot de passe. Définissez-en un facile à retenir pour autoriser la connexion depuis d'autres appareils.","remoteAccess.authStatus.unavailable":"Statut d'authentification indisponible.","remoteAccess.username":"Nom d'utilisateur : {username}","remoteAccess.password.status.set":"Un mot de passe est défini pour l'accès à distance.","remoteAccess.password.status.unset":"Aucun mot de passe mémorable n'est encore défini. Définissez-en un pour autoriser les connexions à distance.","remoteAccess.password.actions.cancel":"Annuler","remoteAccess.password.actions.change":"Changer le mot de passe","remoteAccess.password.actions.set":"Définir le mot de passe","remoteAccess.password.form.newPassword":"Nouveau mot de passe","remoteAccess.password.form.confirmPassword":"Confirmer le mot de passe","remoteAccess.password.form.placeholder":"Au moins 8 caractères","remoteAccess.password.error.tooShort":"Le mot de passe doit contenir au moins 8 caractères.","remoteAccess.password.error.mismatch":"Les mots de passe ne correspondent pas.","remoteAccess.password.save.saving":"Enregistrement…","remoteAccess.password.save.label":"Enregistrer le mot de passe","remoteAccess.sections.addresses.label":"Adresses accessibles","remoteAccess.sections.addresses.help":"Lancez ou scannez depuis une autre machine pour passer le contrôle.","remoteAccess.addresses.loading":"Chargement des adresses…","remoteAccess.addresses.none":"Aucune adresse disponible pour le moment.","remoteAccess.addresses.actions.showOther":"Afficher {count} autres adresses","remoteAccess.addresses.actions.hideOther":"Masquer les autres adresses","remoteAccess.address.scope.network":"Réseau","remoteAccess.address.scope.loopback":"Boucle locale","remoteAccess.address.scope.internal":"Interne","remoteAccess.address.open":"Ouvrir","remoteAccess.address.showQr":"Afficher le QR","remoteAccess.address.hideQr":"Masquer le QR","remoteAccess.address.qrAlt":"QR pour {url}"},p={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"Aucune session précédente","sessionPicker.resume.title":"Reprendre une session ({count}) :","sessionPicker.session.untitled":"Sans titre","sessionPicker.divider.or":"ou","sessionPicker.new.title":"Démarrer une nouvelle session :","sessionPicker.agents.loading":"Chargement des agents...","sessionPicker.actions.creating":"Création...","sessionPicker.actions.createSession":"Créer une session","sessionPicker.actions.cancel":"Annuler","sessionList.header.title":"Sessions","sessionList.session.untitled":"Sans titre","sessionList.status.working":"En cours","sessionList.status.compacting":"Compactage","sessionList.status.idle":"Inactif","sessionList.status.retrying":"Nouvelle tentative","sessionList.status.retryingIn":"Nouvelle tentative dans {seconds}s","sessionList.status.retryTooltip":"{message} (Tentative {attempt})","sessionList.status.retryToast":"{countdown} : {message} (Tentative {attempt})","sessionList.status.needsPermission":"Autorisation requise","sessionList.status.needsInput":"Entrée requise","sessionList.expand.collapseAriaLabel":"Réduire la session","sessionList.expand.expandAriaLabel":"Développer la session","sessionList.expand.collapseTitle":"Réduire","sessionList.expand.expandTitle":"Développer","sessionList.actions.newSession.ariaLabel":"Nouvelle session","sessionList.actions.newSession.title":"Nouvelle session","sessionList.actions.copyId.ariaLabel":"Copier l'ID de session","sessionList.actions.copyId.title":"Copier l'ID de session","sessionList.actions.reload.ariaLabel":"Recharger la session","sessionList.actions.reload.title":"Recharger la session","sessionList.actions.rename.ariaLabel":"Renommer la session","sessionList.actions.rename.title":"Renommer la session","sessionList.actions.delete.ariaLabel":"Supprimer la session","sessionList.actions.delete.title":"Supprimer la session","sessionList.copyId.success":"ID de session copié","sessionList.copyId.error":"Impossible de copier l'ID de session","sessionList.reload.error":"Impossible de recharger la session","sessionList.delete.error":"Impossible de supprimer la session","sessionList.delete.title":"Supprimer la session","sessionList.delete.confirmMessage":'Supprimer "{label}" ? Cette action est irréversible.',"sessionList.delete.confirmLabel":"Supprimer","sessionList.delete.cancelLabel":"Annuler","sessionList.rename.error":"Impossible de renommer la session","sessionList.filter.placeholder":"Rechercher des sessions…","sessionList.filter.ariaLabel":"Rechercher des sessions","sessionList.selection.selectAllLabel":"Tout sélectionner","sessionList.selection.selectAllAriaLabel":"Sélectionner toutes les sessions","sessionList.selection.clearLabel":"Effacer","sessionList.selection.clearAriaLabel":"Effacer la sélection","sessionList.selection.checkboxAriaLabel":"Sélectionner la session","sessionList.bulkDelete.button":"Supprimer {count}","sessionList.bulkDelete.ariaLabel":"Supprimer {count} sessions sélectionnées","sessionList.bulkDelete.title":"Supprimer des sessions","sessionList.bulkDelete.confirmMessage":"Supprimer {count} sessions sélectionnées ? Cette action est irréversible.","sessionList.bulkDelete.confirmLabel":"Supprimer","sessionList.bulkDelete.cancelLabel":"Annuler","sessionList.bulkDelete.error":"Impossible de supprimer {count} sessions","sessionRenameDialog.title":"Renommer la session","sessionRenameDialog.description.withLabel":'Mettre à jour le titre de "{label}".',"sessionRenameDialog.description.default":"Définir un nouveau titre pour cette session.","sessionRenameDialog.input.label":"Nom de la session","sessionRenameDialog.input.placeholder":"Saisissez un nom de session","sessionRenameDialog.actions.cancel":"Annuler","sessionRenameDialog.actions.rename":"Renommer","sessionRenameDialog.actions.renaming":"Renommage…","sessionView.fallback.sessionNotFound":"Session introuvable","sessionView.alerts.abortFailed.message":"Impossible d'arrêter la session","sessionView.alerts.abortFailed.title":"Échec de l'arrêt","sessionView.alerts.revertFailed.message":"Impossible de revenir au message","sessionView.alerts.revertFailed.title":"Échec du retour","sessionView.alerts.deleteUpToFailed.message":"Impossible de supprimer les messages","sessionView.alerts.deleteUpToFailed.title":"Échec de suppression","sessionView.alerts.forkFailed.message":"Impossible de forker la session","sessionView.alerts.forkFailed.title":"Échec du fork","sessionView.attachments.expandPastedTextAriaLabel":"Développer le texte collé","sessionView.attachments.insertPastedTextTitle":"Insérer le texte collé","sessionView.attachments.removeAriaLabel":"Retirer la pièce jointe","sessionEvents.sessionCompactedToast":"La session {label} a été compactée","sessionEvents.sessionError.unknown":"Erreur inconnue","sessionEvents.sessionError.title":"Erreur de session","sessionEvents.sessionError.message":"Erreur : {message}","sessionState.cleanup.deepConfirm.message":"Ce nettoyage peut être lent et peut supprimer des sessions que vous ne vouliez pas supprimer. Confirmez-vous ?","sessionState.cleanup.deepConfirm.title":"Nettoyage approfondi des sessions","sessionState.cleanup.deepConfirm.detail":"Le nettoyage approfondi des sessions supprime toutes les sessions sans messages, retire les sessions de sous-agent terminées et efface les forks inutilisés d'une session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continuer","sessionState.cleanup.deepConfirm.cancelLabel":"Annuler","sessionState.cleanup.toast.one":"Nettoyage de {count} session vide","sessionState.cleanup.toast.other":"Nettoyage de {count} sessions vides"},g={"instanceServiceStatus.sections.lsp":"Serveurs LSP","instanceServiceStatus.sections.mcp":"Serveurs MCP","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Chargement des serveurs LSP...","instanceServiceStatus.lsp.empty":"Aucun serveur LSP détecté.","instanceServiceStatus.lsp.status.connected":"Connecté","instanceServiceStatus.lsp.status.error":"Erreur","instanceServiceStatus.mcp.loading":"Chargement des serveurs MCP...","instanceServiceStatus.mcp.empty":"Aucun serveur MCP détecté.","instanceServiceStatus.mcp.toggleAriaLabel":"Basculer le serveur MCP {name}","instanceServiceStatus.plugins.loading":"Chargement des plugins...","instanceServiceStatus.plugins.empty":"Aucun plugin configuré.","permissionBanner.pendingRequests.one":"{count} demande en attente","permissionBanner.pendingRequests.other":"{count} demandes en attente","permissionBanner.detail.permission.one":"{count} autorisation","permissionBanner.detail.permission.other":"{count} autorisations","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Sélectionner un agent...","agentSelector.badge.subagent":"sous-agent","agentSelector.none":"Aucun","agentSelector.trigger.primary":"Agent : {agent}","modelSelector.placeholder.search":"Rechercher des modèles...","modelSelector.none":"Aucun","modelSelector.trigger.primary":"Modèle : {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Basculer en favoris uniquement","modelSelector.favoritesOnly.showAll":"Afficher tous les modèles","modelSelector.favorite.add":"Ajouter aux favoris","modelSelector.favorite.remove":"Retirer des favoris","thinkingSelector.variant.default":"Par défaut","thinkingSelector.label":"Réflexion : {variant}","envEditor.title":"Variables d'environnement","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Nom de la variable","envEditor.fields.name.readOnlyTitle":"Nom de la variable (lecture seule)","envEditor.fields.value.placeholder":"Valeur de la variable","envEditor.actions.remove.title":"Supprimer la variable","envEditor.actions.add.title":"Ajouter une variable","envEditor.empty":"Aucune variable d'environnement configurée. Ajoutez des variables ci-dessus pour personnaliser l'environnement OpenCode.","envEditor.help":"Ces variables seront disponibles dans l'environnement OpenCode lors du démarrage des instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Contexte","contextUsagePanel.labels.input":"Entrée","contextUsagePanel.labels.output":"Sortie","contextUsagePanel.labels.cost":"Coût","contextUsagePanel.labels.used":"Utilisé","contextUsagePanel.labels.available":"Dispo","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Desactive","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"Niveau de logs OpenCode","settings.opencode.logLevel.subtitle":"Definir le niveau de logs utilise au lancement des nouvelles instances OpenCode.","settings.opencode.logLevel.selector.title":"Verbosite des logs","settings.opencode.logLevel.selector.subtitle":"Choisir la quantite de journaux emise par les nouvelles instances OpenCode.","settings.opencode.logLevel.option.debug":"Debogage","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Avertissement","settings.opencode.logLevel.option.error":"Erreur","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Parametres par defaut pour les messages, les diffs et la saisie.","settings.behavior.keyboardHints.title":"Indications de raccourcis clavier","settings.behavior.keyboardHints.subtitle":"Afficher des indications de raccourcis clavier dans toute l'interface.","settings.behavior.thinking.title":"Sections de reflexion","settings.behavior.thinking.subtitle":"Afficher ou masquer les sections de reflexion de l'IA dans les messages.","settings.behavior.thinkingDefault.title":"Etat initial de la reflexion","settings.behavior.thinkingDefault.subtitle":"Choisir si les sections de reflexion commencent developpees ou reduites.","settings.behavior.timelineTools.title":"Appels d'outils dans la chronologie","settings.behavior.timelineTools.subtitle":"Afficher ou masquer les entrees d'appels d'outils dans la chronologie des messages.","settings.behavior.diffView.title":"Vue du diff","settings.behavior.diffView.subtitle":"Choisir comment les diffs des appels d'outils sont affiches.","settings.behavior.diffView.option.split":"Scinde","settings.behavior.diffView.option.unified":"Unifie","settings.behavior.toolOutputsDefault.title":"Etat initial des sorties d'outils","settings.behavior.toolOutputsDefault.subtitle":"Choisir si les sorties d'outils commencent developpees ou reduites.","settings.behavior.diagnosticsDefault.title":"Etat initial des diagnostics","settings.behavior.diagnosticsDefault.subtitle":"Choisir si la sortie des diagnostics commence developpee ou reduite.","settings.behavior.toolInputsVisibility.title":"Visibilite des entrees d'outils","settings.behavior.toolInputsVisibility.subtitle":"Definir la visibilite par defaut des arguments d'entree des appels d'outils.","settings.behavior.usageMetrics.title":"Metriques d'utilisation des tokens","settings.behavior.usageMetrics.subtitle":"Afficher ou masquer les stats de tokens et de cout pour les messages de l'assistant.","settings.behavior.autoCleanup.title":"Nettoyage auto des sessions vides","settings.behavior.autoCleanup.subtitle":"Nettoyer automatiquement les sessions vides lors de la creation de nouvelles.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Entrer pour envoyer","settings.behavior.promptSubmit.subtitle":"Utiliser Entrer pour envoyer; Cmd/Ctrl+Entrer insere une nouvelle ligne.","settings.speech.title":"Voix","settings.speech.subtitle":"Configurez dès maintenant la reconnaissance vocale et préparez la synthèse vocale pour de futures fonctionnalités.","settings.speech.provider.title":"Fournisseur","settings.speech.provider.subtitle":"Les requêtes vocales utilisent l'adaptateur vocal côté serveur.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Vérification de la configuration...","settings.speech.status.configured":"Configuré","settings.speech.status.missing":"Clé API manquante","settings.speech.status.error":"Service vocal indisponible","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Utilisée pour les requêtes vocales gérées par CodeNomad.","settings.speech.apiKey.placeholder":"Saisissez une nouvelle clé API","settings.speech.apiKey.storedNote":"Une clé API enregistrée est masquée. Saisissez une nouvelle valeur pour la remplacer ou laissez le champ vide pour la conserver.","settings.speech.apiKey.clearAction":"Effacer la clé enregistrée","settings.speech.apiKey.clearPending":"La clé API enregistrée sera supprimée lors de l'enregistrement.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Remplacement facultatif des points d'accès vocaux compatibles OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Modèle de transcription","settings.speech.sttModel.subtitle":"Modèle utilisé pour les requêtes vocales vers texte du prompt.","settings.speech.ttsModel.title":"Modèle vocal","settings.speech.ttsModel.subtitle":"Modèle de synthèse vocale par défaut réservé aux futures fonctions de lecture.","settings.speech.ttsVoice.title":"Voix par défaut","settings.speech.ttsVoice.subtitle":"Voix de synthèse vocale par défaut réservée aux futures fonctions de lecture.","settings.speech.playbackMode.title":"Mode de lecture","settings.speech.playbackMode.subtitle":"Choisissez si le TTS commence a jouer pendant le flux audio ou apres la generation complete du fichier.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Format de sortie","settings.speech.ttsFormat.subtitle":"Choisissez le format audio pour la voix synthetisee. La prise en charge du streaming depend du fournisseur et du navigateur.","settings.speech.help":"La saisie vocale du prompt apparait lorsque la transcription vocale est configuree et prise en charge. La lecture des messages utilise le mode et le format TTS selectionnes ici.","settings.speech.compatibility.streamingUnavailable":"Votre configuration actuelle du fournisseur vocal n'annonce pas le TTS en streaming. Passez le mode de lecture sur buffered si vous voulez que la lecture fonctionne maintenant.","settings.speech.compatibility.browserStreamingUnavailable":"Votre navigateur actuel ne peut pas lire en streaming le format TTS selectionne. Choisissez la lecture buffered ou passez a un autre format.","settings.speech.compatibility.runtimeNote":"Tous les formats restent selectionnables en mode streaming. Certaines combinaisons navigateur/fournisseur peuvent quand meme echouer au moment de la lecture.","settings.speech.testPlayback.action":"Tester la lecture","settings.speech.testPlayback.generating":"Generation de l'extrait","settings.speech.testPlayback.stop":"Arreter l'extrait","settings.speech.testPlayback.sample":"Merci d'utiliser CodeNomad, vos parametres vocaux fonctionnent correctement.","settings.speech.testPlayback.note":"Le test utilise immediatement le mode et le format actuels. Enregistrez d'abord les changements d'API key, d'URL de base, de modele ou de voix si vous voulez aussi les tester.","settings.speech.save.action":"Enregistrer","settings.speech.save.saving":"Enregistrement...","settings.speech.save.saved":"Enregistré","settings.speech.save.unsaved":"Modifications non enregistrées","settings.speech.save.error":"Échec de l'enregistrement","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},h={"time.relative.justNow":"à l'instant","time.relative.daysAgoShort":"il y a {count} j","time.relative.hoursAgoShort":"il y a {count} h","time.relative.minutesAgoShort":"il y a {count} min"},f={"toolCall.pending.waitingToRun":"En attente d'exécution...","toolCall.error.label":"Erreur :","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Mode d'affichage du diff","toolCall.diff.viewMode.split":"Côte à côte","toolCall.diff.viewMode.unified":"Unifié","toolCall.diff.switchToSplit":"Passer à la vue côte à côte","toolCall.diff.switchToUnified":"Passer à la vue unifiée","toolCall.diff.enableWordWrap":"Activer le retour à la ligne","toolCall.diff.disableWordWrap":"Désactiver le retour à la ligne","toolCall.diff.copyPatch":"Copier le patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalide","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Appliquer le patch","toolCall.renderer.action.working":"En cours...","toolCall.renderer.action.writingCommand":"Rédaction de la commande...","toolCall.renderer.action.preparingEdit":"Préparation de la modification...","toolCall.renderer.action.readingFile":"Lecture du fichier...","toolCall.renderer.action.preparingWrite":"Préparation de l'écriture...","toolCall.renderer.action.preparingPatch":"Préparation du patch...","toolCall.renderer.action.planning":"Planification...","toolCall.renderer.action.fetchingFromWeb":"Récupération sur le Web...","toolCall.renderer.action.findingFiles":"Recherche de fichiers...","toolCall.renderer.action.searchingContent":"Recherche dans le contenu...","toolCall.renderer.action.listingDirectory":"Liste du répertoire...","toolCall.renderer.bash.title.timeout":"Délai : {timeout}","toolCall.renderer.read.detail.offset":"Décalage : {offset}","toolCall.renderer.read.detail.limit":"Limite : {limit}","toolCall.renderer.todo.empty":"Aucun élément de plan pour l'instant.","toolCall.renderer.todo.status.pending":"En attente","toolCall.renderer.todo.status.inProgress":"En cours","toolCall.renderer.todo.status.completed":"Terminé","toolCall.renderer.todo.status.cancelled":"Annulé","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Création du plan","toolCall.renderer.todo.title.completing":"Finalisation du plan","toolCall.renderer.todo.title.updating":"Mise à jour du plan","toolCall.permission.status.required":"Autorisation requise","toolCall.permission.status.queued":"Autorisation en file d'attente","toolCall.permission.requestedDiff.label":"Diff demandé","toolCall.permission.requestedDiff.withPath":"Diff demandé · {path}","toolCall.permission.queuedText":"En attente des réponses d'autorisations précédentes.","toolCall.permission.actions.allowOnce":"Autoriser une fois","toolCall.permission.actions.alwaysAllow":"Toujours autoriser","toolCall.permission.actions.deny":"Refuser","toolCall.permission.shortcuts.allowOnce":"Autoriser une fois","toolCall.permission.shortcuts.alwaysAllow":"Toujours autoriser","toolCall.permission.shortcuts.deny":"Refuser","toolCall.permission.errors.unableToUpdate":"Impossible de mettre à jour l'autorisation","permissionApproval.title":"Demandes","permissionApproval.empty":"Aucune demande en attente.","permissionApproval.kind.permission":"Autorisation","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Active","permissionApproval.actions.closeAriaLabel":"Fermer","permissionApproval.actions.goToSession":"Aller à la session","permissionApproval.actions.loadingSession":"Chargement…","permissionApproval.actions.loadSession":"Charger la session","permissionApproval.actions.allowOnce":"Autoriser une fois","permissionApproval.actions.alwaysAllow":"Toujours autoriser","permissionApproval.actions.deny":"Refuser","permissionApproval.fallbackHint":"Chargez la session pour plus d'informations.","permissionApproval.errors.unableToUpdatePermission":"Impossible de mettre à jour l'autorisation","toolCall.question.status.required":"Question requise","toolCall.question.status.queued":"Question en file d'attente","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"En attente des réponses...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Questions en cours","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple","toolCall.question.custom.title":"Saisir une réponse personnalisée","toolCall.question.custom.label":"Réponse personnalisée","toolCall.question.custom.placeholder":"Saisissez votre propre réponse","toolCall.question.actions.submit":"Envoyer","toolCall.question.actions.dismiss":"Ignorer","toolCall.question.shortcuts.submit":"Envoyer","toolCall.question.shortcuts.dismiss":"Ignorer","toolCall.question.queuedText":"En attente des réponses précédentes.","toolCall.question.validation.answerAll":"Veuillez répondre à toutes les questions avant d'envoyer.","toolCall.question.errors.unableToReply":"Impossible de répondre","toolCall.question.errors.unableToDismiss":"Impossible d'ignorer","toolCall.task.action.delegating":"Délégation...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Étapes","toolCall.task.sections.output":"Sortie","toolCall.task.steps.count":"{count} étapes","toolCall.task.meta.agentModel":"Agent : {agent} • Modèle : {model}","toolCall.task.meta.agent":"Agent : {agent}","toolCall.task.meta.model":"Modèle : {model}","toolCall.status.pending":"En attente","toolCall.status.running":"En cours","toolCall.status.completed":"Terminé","toolCall.status.error":"Erreur","toolCall.status.unknown":"Inconnu","toolCall.applyPatch.action.preparing":"Préparation de apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} fichier)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} fichiers)","toolCall.applyPatch.fileFallback":"Fichier {number}"},w=e(r,s,l,h,t,o,n,a,c,p,u,f,d,g,m,i);export{w as frMessages};
|