feat(ui): add locales and split catalogs
Adds Spanish, French, Russian, Japanese, and Simplified Chinese catalogs and wires supported locales into the i18n layer.
This commit is contained in:
6
packages/ui/src/lib/i18n/messages/ru/advancedSettings.ts
Normal file
6
packages/ui/src/lib/i18n/messages/ru/advancedSettings.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const advancedSettingsMessages = {
|
||||
"advancedSettings.title": "Расширенные настройки",
|
||||
"advancedSettings.environmentVariables.title": "Переменные окружения",
|
||||
"advancedSettings.environmentVariables.subtitle": "Применяются при запуске нового экземпляра OpenCode",
|
||||
"advancedSettings.actions.close": "Закрыть",
|
||||
} as const
|
||||
29
packages/ui/src/lib/i18n/messages/ru/app.ts
Normal file
29
packages/ui/src/lib/i18n/messages/ru/app.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
export const appMessages = {
|
||||
"app.launchError.title": "Не удалось запустить OpenCode",
|
||||
"app.launchError.description": "Не удалось запустить выбранный бинарник OpenCode. Просмотрите вывод ошибки ниже или выберите другой бинарник в расширенных настройках.",
|
||||
"app.launchError.binaryPathLabel": "Путь к бинарнику",
|
||||
"app.launchError.errorOutputLabel": "Вывод ошибки",
|
||||
"app.launchError.openAdvancedSettings": "Открыть расширенные настройки",
|
||||
"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": "Получить обновление",
|
||||
} as const
|
||||
160
packages/ui/src/lib/i18n/messages/ru/commands.ts
Normal file
160
packages/ui/src/lib/i18n/messages/ru/commands.ts
Normal file
@@ -0,0 +1,160 @@
|
||||
export const commandMessages = {
|
||||
"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.thinkingBlocks.label.show": "Показать блоки размышлений",
|
||||
"commands.thinkingBlocks.label.hide": "Скрыть блоки размышлений",
|
||||
"commands.thinkingBlocks.description": "Показать/скрыть процесс рассуждений AI",
|
||||
"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.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.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": "закрыть",
|
||||
} as const
|
||||
16
packages/ui/src/lib/i18n/messages/ru/dialogs.ts
Normal file
16
packages/ui/src/lib/i18n/messages/ru/dialogs.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export const dialogMessages = {
|
||||
"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": "Не удалось загрузить вывод.",
|
||||
} as const
|
||||
43
packages/ui/src/lib/i18n/messages/ru/filesystem.ts
Normal file
43
packages/ui/src/lib/i18n/messages/ru/filesystem.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
export const filesystemMessages = {
|
||||
"directoryBrowser.defaultDescription": "Просматривайте папки в пределах настроенного корня рабочего пространства.",
|
||||
"directoryBrowser.close": "Закрыть",
|
||||
"directoryBrowser.currentFolder": "Текущая папка",
|
||||
"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": "Не удалось открыть каталог",
|
||||
} as const
|
||||
34
packages/ui/src/lib/i18n/messages/ru/folderSelection.ts
Normal file
34
packages/ui/src/lib/i18n/messages/ru/folderSelection.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
export const folderSelectionMessages = {
|
||||
"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.advancedSettings": "Расширенные настройки",
|
||||
|
||||
"folderSelection.hints.navigate": "Навигация",
|
||||
"folderSelection.hints.select": "Выбрать",
|
||||
"folderSelection.hints.remove": "Убрать",
|
||||
"folderSelection.hints.browse": "Обзор",
|
||||
|
||||
"folderSelection.loading.title": "Запуск экземпляра…",
|
||||
"folderSelection.loading.subtitle": "Подождите, пока мы подготовим рабочее пространство.",
|
||||
|
||||
"folderSelection.dialog.title": "Выберите рабочее пространство",
|
||||
"folderSelection.dialog.description": "Выберите рабочее пространство, чтобы начать писать код.",
|
||||
} as const
|
||||
36
packages/ui/src/lib/i18n/messages/ru/index.ts
Normal file
36
packages/ui/src/lib/i18n/messages/ru/index.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { advancedSettingsMessages } from "./advancedSettings"
|
||||
import { appMessages } from "./app"
|
||||
import { commandMessages } from "./commands"
|
||||
import { dialogMessages } from "./dialogs"
|
||||
import { filesystemMessages } from "./filesystem"
|
||||
import { folderSelectionMessages } from "./folderSelection"
|
||||
import { instanceMessages } from "./instance"
|
||||
import { loadingScreenMessages } from "./loadingScreen"
|
||||
import { logMessages } from "./logs"
|
||||
import { markdownMessages } from "./markdown"
|
||||
import { messagingMessages } from "./messaging"
|
||||
import { remoteAccessMessages } from "./remoteAccess"
|
||||
import { sessionMessages } from "./session"
|
||||
import { settingsMessages } from "./settings"
|
||||
import { timeMessages } from "./time"
|
||||
import { toolCallMessages } from "./toolCall"
|
||||
import { mergeMessageParts } from "../merge"
|
||||
|
||||
export const ruMessages = mergeMessageParts(
|
||||
folderSelectionMessages,
|
||||
advancedSettingsMessages,
|
||||
loadingScreenMessages,
|
||||
timeMessages,
|
||||
appMessages,
|
||||
dialogMessages,
|
||||
filesystemMessages,
|
||||
instanceMessages,
|
||||
logMessages,
|
||||
sessionMessages,
|
||||
messagingMessages,
|
||||
toolCallMessages,
|
||||
markdownMessages,
|
||||
settingsMessages,
|
||||
remoteAccessMessages,
|
||||
commandMessages,
|
||||
)
|
||||
125
packages/ui/src/lib/i18n/messages/ru/instance.ts
Normal file
125
packages/ui/src/lib/i18n/messages/ru/instance.ts
Normal file
@@ -0,0 +1,125 @@
|
||||
export const instanceMessages = {
|
||||
"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.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.sections.plan": "План",
|
||||
"instanceShell.rightPanel.sections.backgroundProcesses": "Фоновые Shell",
|
||||
"instanceShell.rightPanel.sections.mcp": "MCP-серверы",
|
||||
"instanceShell.rightPanel.sections.lsp": "LSP-серверы",
|
||||
"instanceShell.rightPanel.sections.plugins": "Плагины",
|
||||
|
||||
"instanceShell.plan.noSessionSelected": "Выберите сессию, чтобы просмотреть план.",
|
||||
"instanceShell.plan.empty": "Пока ничего не запланировано.",
|
||||
|
||||
"instanceShell.backgroundProcesses.empty": "Нет фоновых процессов.",
|
||||
"instanceShell.backgroundProcesses.status": "Статус: {status}",
|
||||
"instanceShell.backgroundProcesses.output": "Вывод: {sizeKb}KB",
|
||||
"instanceShell.backgroundProcesses.actions.output": "Вывод",
|
||||
"instanceShell.backgroundProcesses.actions.stop": "Остановить",
|
||||
"instanceShell.backgroundProcesses.actions.terminate": "Завершить",
|
||||
|
||||
"versionPill.appWithVersion": "Приложение {version}",
|
||||
"versionPill.ui": "UI",
|
||||
"versionPill.uiWithVersion": "UI {version}",
|
||||
"versionPill.source": " ({source})",
|
||||
|
||||
"opencodeBinarySelector.title": "OpenCode Binary",
|
||||
"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}",
|
||||
} as const
|
||||
17
packages/ui/src/lib/i18n/messages/ru/loadingScreen.ts
Normal file
17
packages/ui/src/lib/i18n/messages/ru/loadingScreen.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
export const loadingScreenMessages = {
|
||||
"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 вернуть вам управление клавиатурой…",
|
||||
} as const
|
||||
18
packages/ui/src/lib/i18n/messages/ru/logs.ts
Normal file
18
packages/ui/src/lib/i18n/messages/ru/logs.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
export const logMessages = {
|
||||
"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": "Прокрутить вниз",
|
||||
} as const
|
||||
7
packages/ui/src/lib/i18n/messages/ru/markdown.ts
Normal file
7
packages/ui/src/lib/i18n/messages/ru/markdown.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export const markdownMessages = {
|
||||
"markdown.codeBlock.copy.label": "Копировать",
|
||||
"markdown.codeBlock.copy.copied": "Скопировано!",
|
||||
"markdown.codeBlock.copy.failed": "Не удалось",
|
||||
|
||||
"markdown.copy": "Копировать",
|
||||
} as const
|
||||
109
packages/ui/src/lib/i18n/messages/ru/messaging.ts
Normal file
109
packages/ui/src/lib/i18n/messages/ru/messaging.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
export const messagingMessages = {
|
||||
"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.quote.addAsQuote": "Добавить как цитату",
|
||||
"messageSection.quote.addAsCode": "Добавить как код",
|
||||
|
||||
"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.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.status.queued": "В ОЧЕРЕДИ",
|
||||
"messageItem.status.generating": "Генерация…",
|
||||
"messageItem.status.sending": "Отправка…",
|
||||
"messageItem.status.failedToSend": "Не удалось отправить сообщение",
|
||||
"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.send.ariaLabel": "Отправить сообщение",
|
||||
"promptInput.send.errorFallback": "Не удалось отправить сообщение",
|
||||
"promptInput.send.errorTitle": "Не удалось отправить",
|
||||
} as const
|
||||
51
packages/ui/src/lib/i18n/messages/ru/remoteAccess.ts
Normal file
51
packages/ui/src/lib/i18n/messages/ru/remoteAccess.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export const remoteAccessMessages = {
|
||||
"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.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}",
|
||||
} as const
|
||||
67
packages/ui/src/lib/i18n/messages/ru/session.ts
Normal file
67
packages/ui/src/lib/i18n/messages/ru/session.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
export const sessionMessages = {
|
||||
"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.needsPermission": "Требуется разрешение",
|
||||
"sessionList.status.needsInput": "Требуется ввод",
|
||||
"sessionList.expand.collapseAriaLabel": "Свернуть сессию",
|
||||
"sessionList.expand.expandAriaLabel": "Развернуть сессию",
|
||||
"sessionList.expand.collapseTitle": "Свернуть",
|
||||
"sessionList.expand.expandTitle": "Развернуть",
|
||||
"sessionList.actions.copyId.ariaLabel": "Скопировать ID сессии",
|
||||
"sessionList.actions.copyId.title": "Скопировать ID сессии",
|
||||
"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.delete.error": "Не удалось удалить сессию",
|
||||
"sessionList.rename.error": "Не удалось переименовать сессию",
|
||||
|
||||
"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.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} пустых сессий",
|
||||
} as const
|
||||
54
packages/ui/src/lib/i18n/messages/ru/settings.ts
Normal file
54
packages/ui/src/lib/i18n/messages/ru/settings.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
export const settingsMessages = {
|
||||
"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}",
|
||||
|
||||
"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": "--",
|
||||
} as const
|
||||
6
packages/ui/src/lib/i18n/messages/ru/time.ts
Normal file
6
packages/ui/src/lib/i18n/messages/ru/time.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const timeMessages = {
|
||||
"time.relative.justNow": "только что",
|
||||
"time.relative.daysAgoShort": "{count}д назад",
|
||||
"time.relative.hoursAgoShort": "{count}ч назад",
|
||||
"time.relative.minutesAgoShort": "{count}м назад",
|
||||
} as const
|
||||
121
packages/ui/src/lib/i18n/messages/ru/toolCall.ts
Normal file
121
packages/ui/src/lib/i18n/messages/ru/toolCall.ts
Normal file
@@ -0,0 +1,121 @@
|
||||
export const toolCallMessages = {
|
||||
"toolCall.pending.waitingToRun": "Ожидание запуска…",
|
||||
"toolCall.error.label": "Ошибка:",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Режим просмотра diff",
|
||||
"toolCall.diff.viewMode.split": "Раздельный",
|
||||
"toolCall.diff.viewMode.unified": "Единый",
|
||||
|
||||
"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}",
|
||||
} as const
|
||||
Reference in New Issue
Block a user