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