mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-09-08 22:22:52 +00:00
Merge 0d6053637e into c5c4fbe43c
This commit is contained in:
commit
a58fa005f6
9 changed files with 680 additions and 1 deletions
|
|
@ -1,4 +1,4 @@
|
|||
export type SupportedLanguage = 'en' | 'zh-CN';
|
||||
export type SupportedLanguage = 'en' | 'zh-CN' | 'ru';
|
||||
|
||||
export interface LanguageMetadata {
|
||||
code: SupportedLanguage;
|
||||
|
|
@ -12,6 +12,7 @@ export const DEFAULT_LANGUAGE: SupportedLanguage = 'en';
|
|||
export const SUPPORTED_LANGUAGES: LanguageMetadata[] = [
|
||||
{ code: 'en', nativeName: 'English', englishName: 'English', dir: 'ltr' },
|
||||
{ code: 'zh-CN', nativeName: '简体中文', englishName: 'Simplified Chinese', dir: 'ltr' },
|
||||
{ code: 'ru', nativeName: 'Русский', englishName: 'Russian', dir: 'ltr'}
|
||||
];
|
||||
|
||||
export const SUPPORTED_LANGUAGE_CODES = SUPPORTED_LANGUAGES.map((language) => language.code);
|
||||
|
|
@ -31,6 +32,7 @@ export function normalizeSupportedLanguage(
|
|||
) {
|
||||
return 'zh-CN';
|
||||
}
|
||||
if (normalized === "ru" || normalized.startsWith("ru-")) return "ru";
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
40
gitnexus-web/src/locales/ru/chat.json
Normal file
40
gitnexus-web/src/locales/ru/chat.json
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"tabs": {
|
||||
"chat": "Nexus AI",
|
||||
"processes": "Процессы"
|
||||
},
|
||||
"suggestions": {
|
||||
"architecture": "Объясни архитектуру проекта",
|
||||
"whatDoes": "Что делает этот проект?",
|
||||
"importantFiles": "Покажи мне самые важные файлы",
|
||||
"apiHandlers": "Найди все обработчики API"
|
||||
},
|
||||
"empty": {
|
||||
"title": "Спроси меня о чём угодно",
|
||||
"description": "Я могу помочь разобраться в архитектуре, найти функции или объяснить связи."
|
||||
},
|
||||
"input": {
|
||||
"placeholder": "Спроси о кодовой базе...",
|
||||
"initializing": "Инициализация AI-агента...",
|
||||
"configureProvider": "Настройте провайдера LLM, чтобы включить чат."
|
||||
},
|
||||
"actions": {
|
||||
"closePanel": "Закрыть панель",
|
||||
"scrollBottom": "Перейти вниз",
|
||||
"clearChat": "Очистить чат",
|
||||
"stopResponse": "Остановить создание ответа"
|
||||
},
|
||||
"stopped": "Остановлено пользователем",
|
||||
"badges": {
|
||||
"configureAI": "Настроить AI",
|
||||
"connecting": "Подключение"
|
||||
},
|
||||
"chatOnly": {
|
||||
"banner": "Граф не загружен (большой проект). Чат работает нормально, но встроенные ссылки на узлы не будут подсвечиваться в представлении графа."
|
||||
},
|
||||
"roles": {
|
||||
"you": "Вы",
|
||||
"assistant": "Nexus AI"
|
||||
},
|
||||
"newBadge": "СОЗДАТЬ ДИАЛОГ"
|
||||
}
|
||||
96
gitnexus-web/src/locales/ru/common.json
Normal file
96
gitnexus-web/src/locales/ru/common.json
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
{
|
||||
"app": {
|
||||
"name": "GitNexus",
|
||||
"nexusAI": "Nexus AI"
|
||||
},
|
||||
"actions": {
|
||||
"cancel": "Отменить",
|
||||
"dismiss": "Отклонить",
|
||||
"tryAgain": "Попробовать снова",
|
||||
"hide": "Скрыть",
|
||||
"retry": "Повторить",
|
||||
"copy": "Копировать",
|
||||
"copied": "Скопировано",
|
||||
"close": "Закрыть",
|
||||
"run": "Выполнить",
|
||||
"clear": "Очистить",
|
||||
"remove": "Удалить",
|
||||
"focusInGraph": "Сфокусировать в графе",
|
||||
"expand": "Развернуть",
|
||||
"collapse": "Свернуть"
|
||||
},
|
||||
"chat": {
|
||||
"viewNodeInCodePanel": "Просмотреть {{inner}} в панели кода",
|
||||
"openInCodePanel": "Открыть в панели кода • {{inner}}",
|
||||
"waitForVectorIndex": "Подождите, создаётся векторный индекс."
|
||||
},
|
||||
"counts": {
|
||||
"files_one": "{{count}} файл",
|
||||
"files_few": "{{count}} файла",
|
||||
"files_many": "{{count}} файлов",
|
||||
"files_other": "{{count}} файлов",
|
||||
"nodes_one": "{{count}} узел",
|
||||
"nodes_few": "{{count}} узла",
|
||||
"nodes_many": "{{count}} узлов",
|
||||
"nodes_other": "{{count}} узлов",
|
||||
"edges_one": "{{count}} ребро",
|
||||
"edges_few": "{{count}} ребра",
|
||||
"edges_many": "{{count}} рёбер",
|
||||
"edges_other": "{{count}} рёбер",
|
||||
"symbols_one": "{{count}} символ",
|
||||
"symbols_few": "{{count}} символа",
|
||||
"symbols_many": "{{count}} символов",
|
||||
"symbols_other": "{{count}} символов",
|
||||
"flows_one": "{{count}} поток",
|
||||
"flows_few": "{{count}} потока",
|
||||
"flows_many": "{{count}} потоков",
|
||||
"flows_other": "{{count}} потоков"
|
||||
},
|
||||
"progress": {
|
||||
"connecting": "Подключение к серверу...",
|
||||
"connectingShort": "Подключение...",
|
||||
"validatingServer": "Проверка сервера",
|
||||
"validatingServerEllipsis": "Проверка сервера...",
|
||||
"downloadingGraph": "Загрузка графа...",
|
||||
"downloadedMb": "Загружено {{mb}} МБ",
|
||||
"downloadingWithPercent": "Загрузка графа... {{percent}}%",
|
||||
"downloadingMb": "Загрузка... {{mb}} МБ",
|
||||
"processing": "Обработка...",
|
||||
"processingGraph": "Обработка графа...",
|
||||
"extractingFileContents": "Извлечение содержимого файлов",
|
||||
"loadingGraph": "Загрузка графа...",
|
||||
"starting": "Запуск...",
|
||||
"executing": "Выполнение...",
|
||||
"truncated": "... (обрезано)",
|
||||
"ready": "Готово",
|
||||
"switchingRepository": "Переключение репозитория...",
|
||||
"loadingRepository": "Загрузка {{repo}}",
|
||||
"validating": "Проверка",
|
||||
"failedSwitchRepository": "Не удалось переключить репозиторий",
|
||||
"unknownError": "Неизвестная ошибка"
|
||||
},
|
||||
"analyzePhases": {
|
||||
"queued": "В очереди",
|
||||
"cloning": "Клонирование репозитория",
|
||||
"pulling": "Получение последних изменений",
|
||||
"extracting": "Сканирование файлов",
|
||||
"structure": "Построение структуры",
|
||||
"parsing": "Разбор кода",
|
||||
"imports": "Обработка импортов",
|
||||
"calls": "Трассировка вызовов",
|
||||
"heritage": "Извлечение наследования",
|
||||
"scopeResolution": "Обработка типов",
|
||||
"communities": "Обнаружение групп",
|
||||
"processes": "Обнаружение процессов",
|
||||
"complete": "Обработка завершена",
|
||||
"lbug": "Загрузка в базу данных",
|
||||
"fts": "Создание поисковых индексов",
|
||||
"embeddings": "Генерация эмбеддингов",
|
||||
"done": "Готово",
|
||||
"retrying": "Повторная попытка после сбоя"
|
||||
},
|
||||
"units": {
|
||||
"elapsedSeconds": "{{seconds}} сек.",
|
||||
"elapsedMinutesSeconds": "{{minutes}} мин. {{seconds}} сек."
|
||||
}
|
||||
}
|
||||
22
gitnexus-web/src/locales/ru/errors.json
Normal file
22
gitnexus-web/src/locales/ru/errors.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"unknown": "Неизвестная ошибка",
|
||||
"connectFailed": "Не удалось подключиться к серверу",
|
||||
"loadGraphFailed": "Не удалось загрузить граф",
|
||||
"failedToConnect": "Не удалось подключиться",
|
||||
"analysisFailed": "Анализ не удался. Проверьте логи сервера.",
|
||||
"startAnalysisFailed": "Не удалось запустить анализ",
|
||||
"invalidGithubUrl": "Пожалуйста, введите корректный URL репозитория GitHub.",
|
||||
"invalidAzureDevOpsUrl": "Пожалуйста, введите корректный URL репозитория Azure DevOps.",
|
||||
"missingFolderPath": "Пожалуйста, укажите путь к папке.",
|
||||
"backend": {
|
||||
"reconnecting": "Соединение с сервером потеряно. Переподключение...",
|
||||
"network": "Не удаётся подключиться к серверу GitNexus. Убедитесь, что была запущена команда `gitnexus serve`.",
|
||||
"timeout": "Сервер слишком долго не отвечает. Попробуйте снова через {{seconds}} сек.",
|
||||
"rateLimited": "Слишком много запросов. Попробуйте снова через {{seconds}} сек.",
|
||||
"notFound": "Запрашиваемый репозиторий или ресурс не найден.",
|
||||
"unauthorized": "Этот деплой GitNexus требует токен доступа. Найдите его в панели Render в переменной окружения GITNEXUS_SERVE_AUTH_TOKEN для сервиса gitnexus-web, затем вставьте его во вкладке Настройки.",
|
||||
"originBlocked": "Это действие недоступно из интерфейса хостинга. Откройте GitNexus с адреса локального сервера (например, http://localhost:4747), чтобы продолжить.",
|
||||
"client": "Ошибка запроса: {{message}}",
|
||||
"server": "Ошибка сервера: {{message}}"
|
||||
}
|
||||
}
|
||||
208
gitnexus-web/src/locales/ru/graph.json
Normal file
208
gitnexus-web/src/locales/ru/graph.json
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
{
|
||||
"statusBar": {
|
||||
"sponsor": "Спонсор",
|
||||
"sponsorHint": "нужно купить немного кредитов API, чтобы запустить SWE-bench 😅"
|
||||
},
|
||||
"loading": {
|
||||
"filesProgress": "{{processed}} / {{total}} файлов"
|
||||
},
|
||||
"toolCall": {
|
||||
"status": {
|
||||
"running": "выполняется",
|
||||
"completed": "завершено",
|
||||
"error": "ошибка",
|
||||
"stopped": "остановлено"
|
||||
},
|
||||
"tools": {
|
||||
"search": "🔍 Поиск по коду",
|
||||
"cypher": "🔗 Запрос на Cypher",
|
||||
"grep": "🔎 Поиск по шаблону",
|
||||
"read": "📄 Чтение файла",
|
||||
"overview": "🗺️ Обзор кодовой базы",
|
||||
"explore": "🔬 Исследование",
|
||||
"impact": "💥 Анализ влияния"
|
||||
},
|
||||
"query": "Запрос",
|
||||
"input": "Входные данные",
|
||||
"result": "Результат",
|
||||
"searchPrefix": "Поиск: \"{{query}}\""
|
||||
},
|
||||
"embedding": {
|
||||
"generateTitle": "Сгенерировать эмбеддинги для семантического поиска",
|
||||
"enable": "Включить семантический поиск",
|
||||
"loadingModel": "Загрузка AI-модели...",
|
||||
"embeddingNodes_one": "Эмбеддинг {{processed}}/{{total}} узла",
|
||||
"embeddingNodes_other": "Эмбеддинг {{processed}}/{{total}} узлов",
|
||||
"creatingIndex": "Создание векторного индекса...",
|
||||
"readyTitle": "Семантический поиск готов! Используйте естественный язык в чате с AI.",
|
||||
"ready": "Семантический готов",
|
||||
"errorTitle": "Создание эмбеддингов не удалось. Нажмите для повтора.",
|
||||
"failedRetry": "Ошибка — повторить",
|
||||
"fallback": {
|
||||
"title": "WebGPU сказал – «Нет!»",
|
||||
"subtitle": "Ваш браузер не поддерживает ускорение через GPU",
|
||||
"description": "Не удалось создать эмбеддинги с WebGPU, поэтому семантический поиск (графовый RAG) будет не таким умным. Но граф всё равно работает отлично!",
|
||||
"options": "Ваши варианты:",
|
||||
"useCpu": "Использовать CPU",
|
||||
"useCpuDescriptionSmall": "Работает, но немного медленнее",
|
||||
"useCpuDescriptionLarge": "Работает, но намного медленнее",
|
||||
"estimated_one": "(~{{minutes}} мин. для {{count}} узла)",
|
||||
"estimated_other": "(~{{minutes}} мин. для {{count}} узлов)",
|
||||
"skipIt": "Пропустить",
|
||||
"skipDescription": "Граф работает, просто без AI-семантического поиска",
|
||||
"smallCodebase": "Обнаружена маленькая кодовая база! CPU подойдёт.",
|
||||
"tip": "💡 Совет: попробуйте Chrome или Edge для поддержки WebGPU",
|
||||
"skipEmbeddings": "Пропустить эмбеддинги",
|
||||
"useCpuRecommended": "Использовать CPU (рекомендуется)",
|
||||
"useCpuSlow": "Использовать CPU (медленно)"
|
||||
}
|
||||
},
|
||||
"queryFab": {
|
||||
"query": "Запрос",
|
||||
"cypherQuery": "Запрос Cypher",
|
||||
"examples": "Примеры",
|
||||
"run": "Выполнить",
|
||||
"noProject": "Проект не загружен. Сначала загрузите проект.",
|
||||
"dbNotReady": "База данных не готова. Подождите завершения загрузки.",
|
||||
"executionFailed": "Не удалось выполнить запрос",
|
||||
"exampleLabels": {
|
||||
"functions": "Все функции",
|
||||
"classes": "Все классы",
|
||||
"interfaces": "Все интерфейсы",
|
||||
"calls": "Вызовы функций",
|
||||
"imports": "Импортирования"
|
||||
},
|
||||
"clear": "Очистить",
|
||||
"rows": "строк",
|
||||
"highlighted": "выделено",
|
||||
"showingRows_other": "Показано 50 из {{count}} строк"
|
||||
},
|
||||
"fileTree": {
|
||||
"expandPanel": "Развернуть панель",
|
||||
"fileExplorer": "Файловый проводник",
|
||||
"filters": "Фильтры",
|
||||
"collapsePanel": "Свернуть панель",
|
||||
"searchFiles": "Поиск файлов...",
|
||||
"noFilesLoaded": "Файлы не загружены",
|
||||
"all": "Все",
|
||||
"selectNodeDepth": "Выберите узел, чтобы применить фильтр по глубине",
|
||||
"explorer": "Проводник",
|
||||
"nodeTypes": "Типы узлов",
|
||||
"nodeTypesDesc": "Включение/отключение типов узлов в графе",
|
||||
"edgeTypes": "Типы рёбер",
|
||||
"edgeTypesDesc": "Включение/отключение типов связей",
|
||||
"focusDepth": "Глубина фокуса",
|
||||
"focusDepthDesc": "Показывать узлы в пределах N переходов от выбранного",
|
||||
"hops_one": "{{count}} переход",
|
||||
"hops_few": "{{count}} перехода",
|
||||
"hops_many": "{{count}} переходов",
|
||||
"hops_other": "{{count}} переходов",
|
||||
"colorLegend": "Цветовая легенда"
|
||||
},
|
||||
"codePanel": {
|
||||
"expand": "Развернуть панель кода",
|
||||
"dragResize": "Перетащите для изменения размера",
|
||||
"title": "Инспектор кода",
|
||||
"clearCitations": "Очистить цитаты AI",
|
||||
"clearSelection": "Снять выделение",
|
||||
"loadingSource": "Загрузка исходного кода...",
|
||||
"selectFile": "Выберите файловый узел, чтобы просмотреть его содержимое.",
|
||||
"code": "Код",
|
||||
"selected": "Выбрано",
|
||||
"aiCitations": "Цитаты AI",
|
||||
"references_one": "{{count}} ссылка",
|
||||
"references_few": "{{count}} ссылки",
|
||||
"references_many": "{{count}} ссылок",
|
||||
"references_other": "{{count}} ссылок",
|
||||
"lines_one": "{{count}} строка",
|
||||
"lines_few": "{{count}} строки",
|
||||
"lines_many": "{{count}} строк",
|
||||
"lines_other": "{{count}} строк",
|
||||
"codeNotAvailable": "Код недоступен в памяти для {{path}}"
|
||||
},
|
||||
"canvas": {
|
||||
"viewModes": {
|
||||
"label": "Режим отображения графа",
|
||||
"force": "Динамическая раскладка",
|
||||
"tree": "Последовательная раскладка",
|
||||
"circles": "Радиальная раскладка"
|
||||
},
|
||||
"zoomIn": "Приблизить",
|
||||
"zoomOut": "Отдалить",
|
||||
"fit": "По размеру экрана",
|
||||
"focusSelected": "Сфокусироваться на выбранном узле",
|
||||
"clearSelection": "Снять выделение",
|
||||
"clear": "Очистить",
|
||||
"stopLayout": "Остановить раскладку",
|
||||
"runLayout": "Запустить раскладку заново",
|
||||
"layoutOptimizing": "Оптимизация раскладки...",
|
||||
"turnOffHighlights": "Выключить все подсветки",
|
||||
"turnOnHighlights": "Включить подсветки AI",
|
||||
"chatOnly": {
|
||||
"title": "Граф не загружен",
|
||||
"description": "Это большой проект, поэтому граф был пропущен, чтобы браузер не тормозил. AI-чат работает нормально.",
|
||||
"descriptionWithCount": "В этом проекте {{count}} узлов, поэтому граф был пропущен, чтобы браузер не тормозил. AI-чат работает нормально.",
|
||||
"citationNote": "Пока граф не загружен, встроенные ссылки на файлы из чата не будут автоматически открываться в панели кода.",
|
||||
"loadAnyway": "Всё равно загрузить граф",
|
||||
"loadAnywayWarning": "В этом проекте {{count}} узлов. Загрузка полного графа может замедлить браузер или сделать его неотзывчивым. Продолжить?",
|
||||
"loadAnywayWarningUnknown": "Возможно, это большой проект. Загрузка полного графа может замедлить браузер или сделать его неотзывчивым. Продолжить?"
|
||||
}
|
||||
},
|
||||
"processes": {
|
||||
"unknownStep": "Неизвестно",
|
||||
"allProcessesLabel_one": "Все процессы (объединено {{count}})",
|
||||
"allProcessesLabel_other": "Все процессы (объединено {{count}})",
|
||||
"emptyTitle": "Процессы не обнаружены",
|
||||
"emptyDescription": "Процессы — это потоки выполнения, прослеженные от точек входа. Загрузите кодовую базу, чтобы увидеть обнаруженные процессы.",
|
||||
"filterPlaceholder": "Фильтровать процессы...",
|
||||
"detected_one": "Обнаружен {{count}} процесс",
|
||||
"detected_few": "Обнаружено {{count}} процесса",
|
||||
"detected_many": "Обнаружено {{count}} процессов",
|
||||
"detected_other": "Обнаружено {{count}} процессов",
|
||||
"fullMap": "Полная карта процессов",
|
||||
"viewCombined_one": "Просмотреть объединённую карту {{count}} процесса",
|
||||
"viewCombined_other": "Просмотреть объединённую карту {{count}} процессов",
|
||||
"crossCommunity": "Межсообщественный",
|
||||
"intraCommunity": "Внутрисообщественный",
|
||||
"steps_one": "{{count}} шаг",
|
||||
"steps_few": "{{count}} шага",
|
||||
"steps_many": "{{count}} шагов",
|
||||
"steps_other": "{{count}} шагов",
|
||||
"clusters_one": "{{count}} кластер",
|
||||
"clusters_few": "{{count}} кластера",
|
||||
"clusters_many": "{{count}} кластеров",
|
||||
"clusters_other": "{{count}} кластеров",
|
||||
"highlightTitle": "Нажмите, чтобы включить подсветку в графе",
|
||||
"removeHighlightTitle": "Нажмите, чтобы выключить подсветку в графе",
|
||||
"loading": "Загрузка...",
|
||||
"viewing": "Просмотр",
|
||||
"view": "Смотреть"
|
||||
},
|
||||
"processFlow": {
|
||||
"title": "Процесс: {{label}}",
|
||||
"diagramTooLarge": "📊 Диаграмма слишком большая",
|
||||
"renderError": "⚠️ Ошибка рендеринга",
|
||||
"tooComplex_one": "Эта диаграмма содержит {{count}} шаг и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».",
|
||||
"tooComplex_few": "Эта диаграмма содержит {{count}} шага и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».",
|
||||
"tooComplex_many": "Эта диаграмма содержит {{count}} шагов и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».",
|
||||
"tooComplex_other": "Эта диаграмма содержит {{count}} шагов и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».",
|
||||
"unableToRender_one": "Не удалось отобразить диаграмму. Шаг: {{count}}",
|
||||
"unableToRender_few": "Не удалось отобразить диаграмму. Шагов: {{count}}",
|
||||
"unableToRender_many": "Не удалось отобразить диаграмму. Шагов: {{count}}",
|
||||
"unableToRender_other": "Не удалось отобразить диаграмму. Шагов: {{count}}",
|
||||
"zoomOutTitle": "Отдалить (-)",
|
||||
"zoomInTitle": "Приблизить (+)",
|
||||
"resetTitle": "Сбросить масштаб и панорамирование",
|
||||
"resetView": "Сбросить вид",
|
||||
"toggleFocus": "Переключить фокус",
|
||||
"copyMermaid": "Копировать Mermaid-запись диаграммы"
|
||||
},
|
||||
"diagram": {
|
||||
"aiGenerated": "Диаграмма, сгенерированная AI",
|
||||
"error": "Ошибка диаграммы",
|
||||
"showSource": "Показать исходник",
|
||||
"label": "Диаграмма",
|
||||
"expandTitle": "Развернуть",
|
||||
"loading": "Загрузка диаграммы…"
|
||||
}
|
||||
}
|
||||
18
gitnexus-web/src/locales/ru/header.json
Normal file
18
gitnexus-web/src/locales/ru/header.json
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"repositories": "Репозитории",
|
||||
"active": "активен",
|
||||
"reanalyzing": "Повторный анализ...",
|
||||
"reanalyzeRepo": "Повторно анализировать {{repoName}}",
|
||||
"deleteRepo": "Удалить {{repoName}}",
|
||||
"reanalyzingRepo": "Переанализ {{repoName}}: {{message}}",
|
||||
"analyzeNew": "Анализировать новый репозиторий...",
|
||||
"searchRepositories": "Поиск репозиториев...",
|
||||
"noRepositoriesFound": "Репозитории по запросу «{{query}}» не найдены",
|
||||
"searchNodes": "Поиск узлов...",
|
||||
"noNodesFound": "Узлы по запросу «{{query}}» не найдены",
|
||||
"starIfCool": "Поставь звезду, если круто",
|
||||
"aiSettings": "Настройки AI",
|
||||
"help": "Помощь",
|
||||
"language": "Язык",
|
||||
"selectLanguage": "Выберите язык"
|
||||
}
|
||||
96
gitnexus-web/src/locales/ru/help.json
Normal file
96
gitnexus-web/src/locales/ru/help.json
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
{
|
||||
"tabs": {
|
||||
"overview": "Обзор",
|
||||
"ai": "Nexus AI",
|
||||
"shortcuts": "Горячие клавиши",
|
||||
"status": "Строка состояния",
|
||||
"graph": "Граф и узлы",
|
||||
"search": "Поиск и фильтр"
|
||||
},
|
||||
"shortcuts": {
|
||||
"searchNodes": "Поиск узлов",
|
||||
"deselectClose": "Снять выделение / закрыть",
|
||||
"columns": {
|
||||
"action": "Действие",
|
||||
"mac": "Mac",
|
||||
"windows": "Windows"
|
||||
}
|
||||
},
|
||||
"nodeTypes": {
|
||||
"function": "Функция",
|
||||
"functionDesc": "Объявления функций",
|
||||
"file": "Файл",
|
||||
"fileDesc": "Исходные файлы",
|
||||
"class": "Класс",
|
||||
"classDesc": "Объявления классов",
|
||||
"method": "Метод",
|
||||
"methodDesc": "Методы классов",
|
||||
"interface": "Интерфейс",
|
||||
"interfaceDesc": "Интерфейсы TypeScript",
|
||||
"folder": "Папка",
|
||||
"folderDesc": "Узлы-каталоги"
|
||||
},
|
||||
"status": {
|
||||
"ready": "Готово",
|
||||
"readyDesc": "Граф полностью загружен и интерактивен",
|
||||
"nodesCount": "Количество узлов",
|
||||
"nodesCountDesc": "Всего файлов и символов в графе",
|
||||
"edgesCount": "Количество рёбер",
|
||||
"edgesCountDesc": "Связи импортов / зависимостей",
|
||||
"aiIndexStatus": "Статус AI-индекса",
|
||||
"aiIndexStatusDesc": "Репозиторий полностью проиндексирован для AI-запросов",
|
||||
"semanticReadyBadge": "Семантический готов",
|
||||
"explained": "Пояснение к строке состояния"
|
||||
},
|
||||
"tryAsking": "Попробуйте спросить:",
|
||||
"footer": "GitNexus — обозреватель графа",
|
||||
"title": "Справка и справочник",
|
||||
"footerLong": "GitNexus — обозреватель графа кодовой базы с открытым исходным кодом",
|
||||
"docsGithub": "Документация и GitHub ↗",
|
||||
"overview": {
|
||||
"gettingStarted": "Начало работы",
|
||||
"whatIsTitle": "Что такое GitNexus?",
|
||||
"whatIsDescription": "Интерактивный обозреватель графа для вашей кодовой базы. Каждый файл, функция и импорт становятся узлом, который можно визуально исследовать, запрашивать и перемещаться по нему.",
|
||||
"currentRepoTitle": "Ваш текущий репозиторий",
|
||||
"loadedCounts": "Загружено: {{nodeCount}} узлов · {{edgeCount}} рёбер",
|
||||
"threeWaysTitle": "Три способа исследования",
|
||||
"wayInspect": "Нажимайте на узлы для просмотра",
|
||||
"waySearch": "Ищите по имени или типу",
|
||||
"wayAsk": "Задайте Nexus AI вопрос на естественном языке",
|
||||
"navigationTitle": "Навигация",
|
||||
"navZoom": "Прокрутка для масштабирования",
|
||||
"navPan": "Перетаскивание для панорамирования",
|
||||
"navFocus": "Двойной клик по узлу для фокусировки на его подграфе"
|
||||
},
|
||||
"graph": {
|
||||
"nodeColorLegend": "Цветовая легенда узлов",
|
||||
"nodeLabel": "Узлы: {{label}}",
|
||||
"sizeDescription": "Размер узла отражает количество связей — крупные узлы зависят от большего числа файлов. Рёбра направлены от импортирующего к импортируемому.",
|
||||
"detailDescription": "Нажмите на любой узел, чтобы открыть панель с подробностями — импорты, экспорты и обратные зависимости."
|
||||
},
|
||||
"search": {
|
||||
"title": "Поиск и фильтр",
|
||||
"searchNodes": "Поиск узлов",
|
||||
"searchDescription": "Поиск по имени файла, имени функции или пути импорта. Совпадающие узлы подсвечиваются в графе в реальном времени.",
|
||||
"filterPanel": "Панель фильтров",
|
||||
"filterDescription": "Используйте значок фильтра на левой боковой панели, чтобы изолировать определённые типы узлов, скрыть листовые узлы или сфокусироваться на диапазоне глубины от выбранного корня.",
|
||||
"syntax": "Синтаксис поиска",
|
||||
"hints": {
|
||||
"nameFragment": "совпадение по фрагменту имени",
|
||||
"pathPrefix": "совпадение по префиксу пути",
|
||||
"nodeType": "фильтр по типу узла"
|
||||
}
|
||||
},
|
||||
"ai": {
|
||||
"title": "Nexus AI",
|
||||
"semanticReady": "✓ Семантический анализ готов",
|
||||
"description": "Ваш репозиторий проиндексирован и готов к семантическим запросам. Nexus AI понимает структуру кода и связи, а не только имена файлов.",
|
||||
"questions": {
|
||||
"dependencies": "\"Какие файлы зависят от модуля аутентификации?\"",
|
||||
"circular": "\"Найди циклические зависимости в этом репозитории\"",
|
||||
"connected": "\"Каковы наиболее связанные компоненты?\"",
|
||||
"imports": "\"Покажи мне все файлы, которые импортируют useEffect\""
|
||||
},
|
||||
"openPrompt": "Откройте промпт через кнопку Nexus AI (в правом верхнем углу)."
|
||||
}
|
||||
}
|
||||
81
gitnexus-web/src/locales/ru/onboarding.json
Normal file
81
gitnexus-web/src/locales/ru/onboarding.json
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
"success": {
|
||||
"title": "Сервер подключён",
|
||||
"description": "Подготовка графа знаний о вашем коде..."
|
||||
},
|
||||
"loading": {
|
||||
"largeRepoHint": "Для больших репозиториев это может занять некоторое время"
|
||||
},
|
||||
"guide": {
|
||||
"copyAria": "Скопировать в буфер обмена",
|
||||
"copiedAria": "Скопировано!",
|
||||
"startServer": "Запустите локальный сервер",
|
||||
"devDescription": "Запустите бэкенд Express в отдельном терминале, чтобы открыть полный граф.",
|
||||
"prodDescription": "Достаточно одной команды. Браузер подключается автоматически.",
|
||||
"copyCommand": "Скопируйте команду",
|
||||
"copyCommandDescription": "Нажмите на значок в терминале, чтобы скопировать.",
|
||||
"done": "готово",
|
||||
"orInstallGlobally": "или установите глобально",
|
||||
"globalInstall": "Глобальная установка",
|
||||
"startBackend": "Запустить бэкенд",
|
||||
"terminal": "Терминал",
|
||||
"waitingForServer": "Ожидание запуска сервера",
|
||||
"pasteAndRun": "Вставьте и выполните в терминале",
|
||||
"pasteAndRunDescription": "Откройте терминал в корне проекта, вставьте и нажмите Enter.",
|
||||
"listeningForServer": "Ожидание сервера",
|
||||
"willAutoConnect": "Автоматически подключится при обнаружении",
|
||||
"autoConnects": "Автоматически подключается и открывает граф",
|
||||
"autoConnectsDescription": "Обновление не требуется — страница обнаруживает сервер автоматически.",
|
||||
"requires": "Требуется",
|
||||
"port": "Порт 4747"
|
||||
},
|
||||
"analyzeFirst": {
|
||||
"title": "Проанализируйте свой первый репозиторий",
|
||||
"description": "Вставьте URL репозитория, и GitNexus клонирует его, разберёт код и построит интерактивный граф знаний — прямо в вашем браузере.",
|
||||
"footer": "Только публичные репозитории · Клонируется локально сервером · Данные не покидают ваш компьютер"
|
||||
},
|
||||
"landing": {
|
||||
"chooseRepository": "Выберите репозиторий",
|
||||
"description": "Выберите проиндексированный репозиторий для изучения или проанализируйте новый.",
|
||||
"indexed": "Индексирован {{time}}",
|
||||
"orAnalyzeNew": "или проанализировать новый",
|
||||
"footer": "Публичные и приватные репозитории · Клонируется локально сервером · Данные не покидают ваш компьютер",
|
||||
"time": {
|
||||
"justNow": "только что",
|
||||
"minutesAgo": "{{count}} мин. назад",
|
||||
"hoursAgo": "{{count}} ч. назад",
|
||||
"daysAgo": "{{count}} д. назад"
|
||||
}
|
||||
},
|
||||
"repoAnalyzer": {
|
||||
"inputType": "Тип ввода",
|
||||
"githubUrl": "URL GitHub",
|
||||
"gitlabUrl": "URL GitLab",
|
||||
"azureDevOpsUrl": "Azure DevOps",
|
||||
"localFolder": "Локальная папка",
|
||||
"starting": "Запуск анализа...",
|
||||
"analyzeRepository": "Анализировать репозиторий",
|
||||
"complete": "Анализ завершён",
|
||||
"loadingGraph": "Загрузка графа...",
|
||||
"defaultRepoName": "репозиторий",
|
||||
"githubRepositoryUrl": "URL репозитория GitHub",
|
||||
"githubTokenLabel": "Персональный токен доступа (необязательно)",
|
||||
"githubTokenPlaceholder": "ghp_... или github_pat_...",
|
||||
"githubTokenHelp": "Требуется для приватных репозиториев. Нужно разрешение 'repo' (или fine-grained Contents:read). Отправляется один раз, не сохраняется.",
|
||||
"gitlabRepositoryUrl": "URL репозитория GitLab",
|
||||
"gitlabSupported": "Поддерживает GitLab.com и собственные экземпляры GitLab.",
|
||||
"azureDevOpsRepositoryUrl": "URL репозитория Azure DevOps",
|
||||
"azureDevOpsSupported": "Формат: https://dev.azure.com/organization/project/_git/repository",
|
||||
"localFolderPath": "Путь к локальной папке",
|
||||
"hideBackground": "Скрыть (анализ продолжается в фоне)",
|
||||
"upload": {
|
||||
"button": "Загрузить папку",
|
||||
"uploading": "Загрузка...",
|
||||
"selected_one": "{{fileCount}} файл готов ({{dropped}} пропущено: .git, node_modules, build output)",
|
||||
"selected_few": "{{fileCount}} файла готово ({{dropped}} пропущено: .git, node_modules, build output)",
|
||||
"selected_many": "{{fileCount}} файлов готово ({{dropped}} пропущено: .git, node_modules, build output)",
|
||||
"selected_other": "{{fileCount}} файлов готово ({{dropped}} пропущено: .git, node_modules, build output)",
|
||||
"empty": "В этой папке не найдено анализируемых файлов."
|
||||
}
|
||||
}
|
||||
}
|
||||
116
gitnexus-web/src/locales/ru/settings.json
Normal file
116
gitnexus-web/src/locales/ru/settings.json
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"title": "Настройки AI",
|
||||
"subtitle": "Настройте провайдера LLM",
|
||||
"localServer": "Локальный сервер",
|
||||
"backendUrl": "URL бэкенда",
|
||||
"connected": "Подключено",
|
||||
"notConnected": "Не подключено",
|
||||
"runServeHint": "Выполните `gitnexus serve`, чтобы подключить веб‑интерфейс к локальному бэкенду.",
|
||||
"accessToken": {
|
||||
"label": "Токен доступа",
|
||||
"placeholder": "Вставьте ваш токен доступа для развёртывания",
|
||||
"hint": "Требуется только для защищённого развёртывания. Найдите его в панели Render в переменной окружения GITNEXUS_SERVE_AUTH_TOKEN сервиса gitnexus-web. Для локального сервера оставьте пустым.",
|
||||
"title": "Это развёртывание требует токен доступа",
|
||||
"promptHint": "Сервер GitNexus запущен, но защищён. Найдите токен в панели Render в переменной окружения GITNEXUS_SERVE_AUTH_TOKEN сервиса gitnexus-web.",
|
||||
"connect": "Подключиться",
|
||||
"reveal": "Показать токен доступа",
|
||||
"hide": "Скрыть токен доступа",
|
||||
"sessionNote": "Хранится только для этой сессии браузера. Вам потребуется ввести его заново в новой вкладке или после закрытия браузера."
|
||||
},
|
||||
"provider": "Провайдер",
|
||||
"apiKey": "API-ключ",
|
||||
"learnMore": "Подробнее",
|
||||
"model": "Модель",
|
||||
"searchModelPlaceholder": "Поиск или ввод ID модели...",
|
||||
"selectModelPlaceholder": "Выберите или введите модель...",
|
||||
"customModelHint": "Введите ID модели или нажмите Enter",
|
||||
"customModelExample": "например, openai/gpt-4o",
|
||||
"pressEnterCustom": "Нажмите Enter, чтобы использовать как пользовательский ID",
|
||||
"baseUrl": "Базовый URL",
|
||||
"optional": "необязательно",
|
||||
"deploymentName": "Имя развёртывания",
|
||||
"apiVersion": "Версия API",
|
||||
"checkConnection": "Проверить подключение",
|
||||
"privacyLabel": "Конфиденциальность:",
|
||||
"privacyText": "Ваши API-ключи хранятся локально в этом браузере.",
|
||||
"providers": {
|
||||
"openai": {
|
||||
"description": "Используйте модели OpenAI для чата и анализа кода.",
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ OpenAI",
|
||||
"helperText": "Получите API-ключ на",
|
||||
"helperLinkLabel": "платформе OpenAI",
|
||||
"modelPlaceholder": "например, gpt-4o, gpt-4-turbo, gpt-3.5-turbo",
|
||||
"baseUrlPlaceholder": "https://api.openai.com/v1 (по умолчанию)",
|
||||
"baseUrlHint": "Оставьте пустым для использования стандартного API OpenAI. Укажите свой URL для прокси или совместимых API."
|
||||
},
|
||||
"gemini": {
|
||||
"description": "Используйте модели Google Gemini.",
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ Google AI",
|
||||
"helperText": "Получите API-ключ в",
|
||||
"helperLinkLabel": "Google AI Studio",
|
||||
"modelPlaceholder": "например, gemini-2.0-flash, gemini-1.5-pro"
|
||||
},
|
||||
"anthropic": {
|
||||
"description": "Используйте модели Claude от Anthropic.",
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ Anthropic",
|
||||
"helperText": "Получите API-ключ в",
|
||||
"helperLinkLabel": "консоли Anthropic",
|
||||
"modelPlaceholder": "например, claude-sonnet-4-20250514, claude-3-opus"
|
||||
},
|
||||
"azure": {
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ Azure OpenAI",
|
||||
"deploymentNamePlaceholder": "например, gpt-4o-deployment"
|
||||
},
|
||||
"ollama": {
|
||||
"quickStart": "📋 Быстрый старт:",
|
||||
"installFrom": "Установите Ollama с",
|
||||
"thenRun": ", затем выполните:",
|
||||
"modelPlaceholder": "например, llama3.2, mistral, codellama"
|
||||
},
|
||||
"openrouter": {
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ OpenRouter",
|
||||
"helperText": "Получите API-ключ на",
|
||||
"helperLinkLabel": "странице ключей OpenRouter"
|
||||
},
|
||||
"minimax": {
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ MiniMax",
|
||||
"helperText": "Получите API-ключ на",
|
||||
"helperLinkLabel": "платформе MiniMax",
|
||||
"modelPlaceholder": "например, MiniMax-M3 или MiniMax-M2.7",
|
||||
"helperModel": "Доступны: MiniMax-M3 (по умолчанию) и MiniMax-M2.7",
|
||||
"endpoint": "Региональный эндпоинт",
|
||||
"endpoints": {
|
||||
"global": "Глобальный (api.minimax.io)",
|
||||
"china": "Китайский (api.minimaxi.com)"
|
||||
},
|
||||
"thinking": "Режим мышления",
|
||||
"thinkingModes": {
|
||||
"adaptive": "Адаптивный",
|
||||
"disabled": "Отключён",
|
||||
"always_on": "Всегда включён"
|
||||
},
|
||||
"capabilities": "Окно контекста {{contextWindow}} | Входные данные: {{modalities}}"
|
||||
},
|
||||
"glm": {
|
||||
"apiKeyPlaceholder": "Введите ваш API-ключ Z.AI"
|
||||
}
|
||||
},
|
||||
"loadingModels": "Загрузка моделей...",
|
||||
"noModelsMatch": "Нет моделей, соответствующих «{{searchTerm}}»",
|
||||
"moreModels": "+ ещё {{count}} • Уточните поиск",
|
||||
"apiKeySession": "API-ключи хранятся в сессионном хранилище и будут удалены при закрытии этой вкладки.",
|
||||
"startLocalServer": "запустите локальный сервер",
|
||||
"settingsSaved": "Настройки сохранены",
|
||||
"failedToSave": "Не удалось сохранить",
|
||||
"saveSettings": "Сохранить настройки",
|
||||
"endpoint": "Эндпоинт",
|
||||
"azurePortal": "Портал Azure",
|
||||
"azureHint": "Настройте службу Azure OpenAI в",
|
||||
"defaultPort": "Порт по умолчанию:",
|
||||
"pullModel": "Загрузите модель с помощью",
|
||||
"browseModels": "Просмотр всех моделей на",
|
||||
"openRouterModels": "Модели OpenRouter",
|
||||
"zaiPlatform": "Платформа Z.AI",
|
||||
"glmCodingApi": "API для кодинга (по умолчанию). Используйте https://api.z.ai/api/paas/v4 для общего API.",
|
||||
"privacyFull": "Ваши API-ключи хранятся только в сессионном хранилище браузера и удаляются при закрытии вкладки. Они отправляются напрямую провайдеру LLM при общении в чате. Ваш код никогда не покидает ваш компьютер."
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue