From 8fda63b1124facbc3e64a1da4b944e9ade3e064e Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 16:55:41 +0300 Subject: [PATCH 01/44] feat(i18n): added russian language in SupportedLanguage type #3013 --- gitnexus-web/src/i18n/languages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index af6cc7cd0..66f4c842d 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -1,4 +1,4 @@ -export type SupportedLanguage = 'en' | 'zh-CN'; +export type SupportedLanguage = 'en' | 'zh-CN' | 'ru-RU' export interface LanguageMetadata { code: SupportedLanguage; From 1441044b15cf82c82e9cb9a02f28372f1d4522f7 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 17:09:13 +0300 Subject: [PATCH 02/44] feat(i18n): added russian language to SUPPORTED_LANGUAGES const #3013 --- gitnexus-web/src/i18n/languages.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index 66f4c842d..caf6386fe 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -1,4 +1,4 @@ -export type SupportedLanguage = 'en' | 'zh-CN' | 'ru-RU' +export type SupportedLanguage = 'en' | 'zh-CN' | 'ru-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-RU', nativeName: 'Русский', englishName: 'Russian', dir: 'ltr'} ]; export const SUPPORTED_LANGUAGE_CODES = SUPPORTED_LANGUAGES.map((language) => language.code); From b6c5171a81a298119dd425e2cd2b0d5d04f77e69 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 17:14:11 +0300 Subject: [PATCH 03/44] feat(i18n): added russian language support in export method "normalizedSupportedLanguage" #3013 --- gitnexus-web/src/i18n/languages.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index caf6386fe..f34e08711 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -32,6 +32,7 @@ export function normalizeSupportedLanguage( ) { return 'zh-CN'; } + if (normalized === "ru" || normalized.startsWith("ru")) return "ru-RU"; return null; } From e58323e8caa53948a5d0c94e545f179494da26ce Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 17:23:40 +0300 Subject: [PATCH 04/44] fix(i18n): changed russian language marker #3013 --- gitnexus-web/src/i18n/languages.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index f34e08711..ad0ea4be1 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -1,4 +1,4 @@ -export type SupportedLanguage = 'en' | 'zh-CN' | 'ru-RU'; +export type SupportedLanguage = 'en' | 'zh-CN' | 'ru'; export interface LanguageMetadata { code: SupportedLanguage; @@ -12,7 +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-RU', nativeName: 'Русский', englishName: 'Russian', dir: 'ltr'} + { code: 'ru', nativeName: 'Русский', englishName: 'Russian', dir: 'ltr'} ]; export const SUPPORTED_LANGUAGE_CODES = SUPPORTED_LANGUAGES.map((language) => language.code); From c980609a6416fb5f50c2f402fcbe8c8414374169 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 17:24:51 +0300 Subject: [PATCH 05/44] fix(i18n): changed russian language marker #3013 --- gitnexus-web/src/i18n/languages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index ad0ea4be1..df42fb959 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -32,7 +32,7 @@ export function normalizeSupportedLanguage( ) { return 'zh-CN'; } - if (normalized === "ru" || normalized.startsWith("ru")) return "ru-RU"; + if (normalized === "ru" || normalized.startsWith("ru")) return "ru"; return null; } From c24ccd8b84da2a863f1cbcc483ec786e8f029d32 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 18:01:10 +0300 Subject: [PATCH 06/44] feat(i18n): added empty jsons for russian translation --- gitnexus-web/src/locales/ru/chat.json | 0 gitnexus-web/src/locales/ru/common.json | 0 gitnexus-web/src/locales/ru/errors.json | 0 gitnexus-web/src/locales/ru/graph.json | 0 gitnexus-web/src/locales/ru/header.json | 0 gitnexus-web/src/locales/ru/help.json | 0 gitnexus-web/src/locales/ru/onboarding.json | 0 gitnexus-web/src/locales/ru/settings.json | 0 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gitnexus-web/src/locales/ru/chat.json create mode 100644 gitnexus-web/src/locales/ru/common.json create mode 100644 gitnexus-web/src/locales/ru/errors.json create mode 100644 gitnexus-web/src/locales/ru/graph.json create mode 100644 gitnexus-web/src/locales/ru/header.json create mode 100644 gitnexus-web/src/locales/ru/help.json create mode 100644 gitnexus-web/src/locales/ru/onboarding.json create mode 100644 gitnexus-web/src/locales/ru/settings.json diff --git a/gitnexus-web/src/locales/ru/chat.json b/gitnexus-web/src/locales/ru/chat.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/errors.json b/gitnexus-web/src/locales/ru/errors.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/header.json b/gitnexus-web/src/locales/ru/header.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/help.json b/gitnexus-web/src/locales/ru/help.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/onboarding.json b/gitnexus-web/src/locales/ru/onboarding.json new file mode 100644 index 000000000..e69de29bb diff --git a/gitnexus-web/src/locales/ru/settings.json b/gitnexus-web/src/locales/ru/settings.json new file mode 100644 index 000000000..e69de29bb From 3a25bed0cfcc478f1214a5ac18429ce0b127ab02 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 18:52:13 +0300 Subject: [PATCH 07/44] feat(i18n): added templates for russian language translating --- gitnexus-web/src/locales/ru/chat.json | 40 +++++ gitnexus-web/src/locales/ru/common.json | 86 +++++++++ gitnexus-web/src/locales/ru/errors.json | 22 +++ gitnexus-web/src/locales/ru/graph.json | 190 ++++++++++++++++++++ gitnexus-web/src/locales/ru/header.json | 18 ++ gitnexus-web/src/locales/ru/help.json | 96 ++++++++++ gitnexus-web/src/locales/ru/onboarding.json | 78 ++++++++ gitnexus-web/src/locales/ru/settings.json | 116 ++++++++++++ 8 files changed, 646 insertions(+) diff --git a/gitnexus-web/src/locales/ru/chat.json b/gitnexus-web/src/locales/ru/chat.json index e69de29bb..ce47f31e4 100644 --- a/gitnexus-web/src/locales/ru/chat.json +++ b/gitnexus-web/src/locales/ru/chat.json @@ -0,0 +1,40 @@ +{ + "tabs": { + "chat": "", + "processes": "" + }, + "suggestions": { + "architecture": "", + "whatDoes": "", + "importantFiles": "", + "apiHandlers": "" + }, + "empty": { + "title": "", + "description": "" + }, + "input": { + "placeholder": "", + "initializing": "", + "configureProvider": "" + }, + "actions": { + "closePanel": "", + "scrollBottom": "", + "clearChat": "", + "stopResponse": "" + }, + "stopped": "", + "badges": { + "configureAI": "", + "connecting": "" + }, + "chatOnly": { + "banner": "" + }, + "roles": { + "you": "", + "assistant": "" + }, + "newBadge": "" +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index e69de29bb..74abfe61d 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -0,0 +1,86 @@ +{ + "app": { + "name": "", + "nexusAI": "" + }, + "actions": { + "cancel": "", + "dismiss": "", + "tryAgain": "", + "hide": "", + "retry": "", + "copy": "", + "copied": "", + "close": "", + "run": "", + "clear": "", + "remove": "", + "focusInGraph": "", + "expand": "", + "collapse": "" + }, + "chat": { + "viewNodeInCodePanel": "", + "openInCodePanel": "", + "waitForVectorIndex": "" + }, + "counts": { + "files_one": "", + "files_other": "", + "nodes_one": "", + "nodes_other": "", + "edges_one": "", + "edges_other": "", + "symbols_one": "", + "symbols_other": "", + "flows_one": "", + "flows_other": "" + }, + "progress": { + "connecting": "", + "connectingShort": "", + "validatingServer": "", + "validatingServerEllipsis": "", + "downloadingGraph": "", + "downloadedMb": "", + "downloadingWithPercent": "", + "downloadingMb": "", + "processing": "", + "processingGraph": "", + "extractingFileContents": "", + "loadingGraph": "", + "starting": "", + "executing": "", + "truncated": "", + "ready": "", + "switchingRepository": "", + "loadingRepository": "", + "validating": "", + "failedSwitchRepository": "", + "unknownError": "" + }, + "analyzePhases": { + "queued": "", + "cloning": "", + "pulling": "", + "extracting": "", + "structure": "", + "parsing": "", + "imports": "", + "calls": "", + "heritage": "", + "scopeResolution": "", + "communities": "", + "processes": "", + "complete": "", + "lbug": "", + "fts": "", + "embeddings": "", + "done": "", + "retrying": "" + }, + "units": { + "elapsedSeconds": "", + "elapsedMinutesSeconds": "" + } +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/errors.json b/gitnexus-web/src/locales/ru/errors.json index e69de29bb..372302997 100644 --- a/gitnexus-web/src/locales/ru/errors.json +++ b/gitnexus-web/src/locales/ru/errors.json @@ -0,0 +1,22 @@ +{ + "unknown": "", + "connectFailed": "", + "loadGraphFailed": "", + "failedToConnect": "", + "analysisFailed": "", + "startAnalysisFailed": "", + "invalidGithubUrl": "", + "invalidAzureDevOpsUrl": "", + "missingFolderPath": "", + "backend": { + "reconnecting": "", + "network": "", + "timeout": "", + "rateLimited": "", + "notFound": "", + "unauthorized": "", + "originBlocked": "", + "client": "", + "server": "" + } +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index e69de29bb..afe3059b3 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -0,0 +1,190 @@ +{ + "statusBar": { + "sponsor": "", + "sponsorHint": "" + }, + "loading": { + "filesProgress": "" + }, + "toolCall": { + "status": { + "running": "", + "completed": "", + "error": "", + "stopped": "" + }, + "tools": { + "search": "", + "cypher": "", + "grep": "", + "read": "", + "overview": "", + "explore": "", + "impact": "" + }, + "query": "", + "input": "", + "result": "", + "searchPrefix": "" + }, + "embedding": { + "generateTitle": "", + "enable": "", + "loadingModel": "", + "embeddingNodes": "", + "creatingIndex": "", + "readyTitle": "", + "ready": "", + "errorTitle": "", + "failedRetry": "", + "fallback": { + "title": "", + "subtitle": "", + "description": "", + "options": "", + "useCpu": "", + "useCpuDescriptionSmall": "", + "useCpuDescriptionLarge": "", + "estimated": "", + "skipIt": "", + "skipDescription": "", + "smallCodebase": "", + "tip": "", + "skipEmbeddings": "", + "useCpuRecommended": "", + "useCpuSlow": "" + } + }, + "queryFab": { + "query": "", + "cypherQuery": "", + "examples": "", + "run": "", + "noProject": "", + "dbNotReady": "", + "executionFailed": "", + "exampleLabels": { + "functions": "", + "classes": "", + "interfaces": "", + "calls": "", + "imports": "" + }, + "clear": "", + "rows": "", + "highlighted": "", + "showingRows": "" + }, + "fileTree": { + "expandPanel": "", + "fileExplorer": "", + "filters": "", + "collapsePanel": "", + "searchFiles": "", + "noFilesLoaded": "", + "all": "", + "selectNodeDepth": "", + "explorer": "", + "nodeTypes": "", + "nodeTypesDesc": "", + "edgeTypes": "", + "edgeTypesDesc": "", + "focusDepth": "", + "focusDepthDesc": "", + "hops_one": "", + "hops_other": "", + "colorLegend": "" + }, + "codePanel": { + "expand": "", + "dragResize": "", + "title": "", + "clearCitations": "", + "clearSelection": "", + "loadingSource": "", + "selectFile": "", + "code": "", + "selected": "", + "aiCitations": "", + "references_one": "", + "references_other": "", + "lines_one": "", + "lines_other": "", + "codeNotAvailable": "" + }, + "canvas": { + "viewModes": { + "label": "", + "force": "", + "tree": "", + "circles": "" + }, + "zoomIn": "", + "zoomOut": "", + "fit": "", + "focusSelected": "", + "clearSelection": "", + "clear": "", + "stopLayout": "", + "runLayout": "", + "layoutOptimizing": "", + "turnOffHighlights": "", + "turnOnHighlights": "", + "chatOnly": { + "title": "", + "description": "", + "descriptionWithCount": "", + "citationNote": "", + "loadAnyway": "", + "loadAnywayWarning": "", + "loadAnywayWarningUnknown": "" + } + }, + "processes": { + "unknownStep": "", + "allProcessesLabel_one": "", + "allProcessesLabel_other": "", + "emptyTitle": "", + "emptyDescription": "", + "filterPlaceholder": "", + "detected_one": "", + "detected_other": "", + "fullMap": "", + "viewCombined_one": "", + "viewCombined_other": "", + "crossCommunity": "", + "intraCommunity": "", + "steps_one": "", + "steps_other": "", + "clusters_one": "", + "clusters_other": "", + "highlightTitle": "", + "removeHighlightTitle": "", + "loading": "", + "viewing": "", + "view": "" + }, + "processFlow": { + "title": "", + "diagramTooLarge": "", + "renderError": "", + "tooComplex_one": "", + "tooComplex_other": "", + "unableToRender_one": "", + "unableToRender_other": "", + "zoomOutTitle": "", + "zoomInTitle": "", + "resetTitle": "", + "resetView": "", + "toggleFocus": "", + "copyMermaid": "" + }, + "diagram": { + "aiGenerated": "", + "error": "", + "showSource": "", + "label": "", + "expandTitle": "", + "loading": "" + } +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/header.json b/gitnexus-web/src/locales/ru/header.json index e69de29bb..70c6b8b1c 100644 --- a/gitnexus-web/src/locales/ru/header.json +++ b/gitnexus-web/src/locales/ru/header.json @@ -0,0 +1,18 @@ +{ + "repositories": "", + "active": "", + "reanalyzing": "", + "reanalyzeRepo": "", + "deleteRepo": "", + "reanalyzingRepo": "", + "analyzeNew": "", + "searchRepositories": "", + "noRepositoriesFound": "", + "searchNodes": "", + "noNodesFound": "", + "starIfCool": "", + "aiSettings": "", + "help": "", + "language": "", + "selectLanguage": "" +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/help.json b/gitnexus-web/src/locales/ru/help.json index e69de29bb..c49afb4f8 100644 --- a/gitnexus-web/src/locales/ru/help.json +++ b/gitnexus-web/src/locales/ru/help.json @@ -0,0 +1,96 @@ +{ + "tabs": { + "overview": "", + "ai": "", + "shortcuts": "", + "status": "", + "graph": "", + "search": "" + }, + "shortcuts": { + "searchNodes": "", + "deselectClose": "", + "columns": { + "action": "", + "mac": "", + "windows": "" + } + }, + "nodeTypes": { + "function": "", + "functionDesc": "", + "file": "", + "fileDesc": "", + "class": "", + "classDesc": "", + "method": "", + "methodDesc": "", + "interface": "", + "interfaceDesc": "", + "folder": "", + "folderDesc": "" + }, + "status": { + "ready": "", + "readyDesc": "", + "nodesCount": "", + "nodesCountDesc": "", + "edgesCount": "", + "edgesCountDesc": "", + "aiIndexStatus": "", + "aiIndexStatusDesc": "", + "semanticReadyBadge": "", + "explained": "" + }, + "tryAsking": "", + "footer": "", + "title": "", + "footerLong": "", + "docsGithub": "", + "overview": { + "gettingStarted": "", + "whatIsTitle": "", + "whatIsDescription": "", + "currentRepoTitle": "", + "loadedCounts": "", + "threeWaysTitle": "", + "wayInspect": "", + "waySearch": "", + "wayAsk": "", + "navigationTitle": "", + "navZoom": "", + "navPan": "", + "navFocus": "" + }, + "graph": { + "nodeColorLegend": "", + "nodeLabel": "", + "sizeDescription": "", + "detailDescription": "" + }, + "search": { + "title": "", + "searchNodes": "", + "searchDescription": "", + "filterPanel": "", + "filterDescription": "", + "syntax": "", + "hints": { + "nameFragment": "", + "pathPrefix": "", + "nodeType": "" + } + }, + "ai": { + "title": "", + "semanticReady": "", + "description": "", + "questions": { + "dependencies": "", + "circular": "", + "connected": "", + "imports": "" + }, + "openPrompt": "" + } +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/onboarding.json b/gitnexus-web/src/locales/ru/onboarding.json index e69de29bb..f31a6a0b1 100644 --- a/gitnexus-web/src/locales/ru/onboarding.json +++ b/gitnexus-web/src/locales/ru/onboarding.json @@ -0,0 +1,78 @@ +{ + "success": { + "title": "", + "description": "" + }, + "loading": { + "largeRepoHint": "" + }, + "guide": { + "copyAria": "", + "copiedAria": "", + "startServer": "", + "devDescription": "", + "prodDescription": "", + "copyCommand": "", + "copyCommandDescription": "", + "done": "", + "orInstallGlobally": "", + "globalInstall": "", + "startBackend": "", + "terminal": "", + "waitingForServer": "", + "pasteAndRun": "", + "pasteAndRunDescription": "", + "listeningForServer": "", + "willAutoConnect": "", + "autoConnects": "", + "autoConnectsDescription": "", + "requires": "", + "port": "" + }, + "analyzeFirst": { + "title": "", + "description": "", + "footer": "" + }, + "landing": { + "chooseRepository": "", + "description": "", + "indexed": "", + "orAnalyzeNew": "", + "footer": "", + "time": { + "justNow": "", + "minutesAgo": "", + "hoursAgo": "", + "daysAgo": "" + } + }, + "repoAnalyzer": { + "inputType": "", + "githubUrl": "", + "gitlabUrl": "", + "azureDevOpsUrl": "", + "localFolder": "", + "starting": "", + "analyzeRepository": "", + "complete": "", + "loadingGraph": "", + "defaultRepoName": "", + "githubRepositoryUrl": "", + "githubTokenLabel": "", + "githubTokenPlaceholder": "", + "githubTokenHelp": "", + "gitlabRepositoryUrl": "", + "gitlabSupported": "", + "azureDevOpsRepositoryUrl": "", + "azureDevOpsSupported": "", + "localFolderPath": "", + "hideBackground": "", + "upload": { + "button": "", + "uploading": "", + "selected": "", + "empty": "" + } + } +} \ No newline at end of file diff --git a/gitnexus-web/src/locales/ru/settings.json b/gitnexus-web/src/locales/ru/settings.json index e69de29bb..5b77367b1 100644 --- a/gitnexus-web/src/locales/ru/settings.json +++ b/gitnexus-web/src/locales/ru/settings.json @@ -0,0 +1,116 @@ +{ + "title": "", + "subtitle": "", + "localServer": "", + "backendUrl": "", + "connected": "", + "notConnected": "", + "runServeHint": "", + "accessToken": { + "label": "", + "placeholder": "", + "hint": "", + "title": "", + "promptHint": "", + "connect": "", + "reveal": "", + "hide": "", + "sessionNote": "" + }, + "provider": "", + "apiKey": "", + "learnMore": "", + "model": "", + "searchModelPlaceholder": "", + "selectModelPlaceholder": "", + "customModelHint": "", + "customModelExample": "", + "pressEnterCustom": "", + "baseUrl": "", + "optional": "", + "deploymentName": "", + "apiVersion": "", + "checkConnection": "", + "privacyLabel": "", + "privacyText": "", + "providers": { + "openai": { + "description": "", + "apiKeyPlaceholder": "", + "helperText": "", + "helperLinkLabel": "", + "modelPlaceholder": "", + "baseUrlPlaceholder": "", + "baseUrlHint": "" + }, + "gemini": { + "description": "", + "apiKeyPlaceholder": "", + "helperText": "", + "helperLinkLabel": "", + "modelPlaceholder": "" + }, + "anthropic": { + "description": "", + "apiKeyPlaceholder": "", + "helperText": "", + "helperLinkLabel": "", + "modelPlaceholder": "" + }, + "azure": { + "apiKeyPlaceholder": "", + "deploymentNamePlaceholder": "" + }, + "ollama": { + "quickStart": "", + "installFrom": "", + "thenRun": "", + "modelPlaceholder": "" + }, + "openrouter": { + "apiKeyPlaceholder": "", + "helperText": "", + "helperLinkLabel": "" + }, + "minimax": { + "apiKeyPlaceholder": "", + "helperText": "", + "helperLinkLabel": "", + "modelPlaceholder": "", + "helperModel": "", + "endpoint": "", + "endpoints": { + "global": "", + "china": "" + }, + "thinking": "", + "thinkingModes": { + "adaptive": "", + "disabled": "", + "always_on": "" + }, + "capabilities": "" + }, + "glm": { + "apiKeyPlaceholder": "" + } + }, + "loadingModels": "", + "noModelsMatch": "", + "moreModels": "", + "apiKeySession": "", + "startLocalServer": "", + "settingsSaved": "", + "failedToSave": "", + "saveSettings": "", + "endpoint": "", + "azurePortal": "", + "azureHint": "", + "defaultPort": "", + "pullModel": "", + "browseModels": "", + "openRouterModels": "", + "zaiPlatform": "", + "glmCodingApi": "", + "privacyFull": "" +} \ No newline at end of file From 9bf154389ade4fb05c265baf1c04abb80e72f066 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 19:05:39 +0300 Subject: [PATCH 08/44] feat(i18n): added russian translate to "chat.json" template #3013 --- gitnexus-web/src/locales/ru/chat.json | 44 +++++++++++++-------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/gitnexus-web/src/locales/ru/chat.json b/gitnexus-web/src/locales/ru/chat.json index ce47f31e4..3a8069b8b 100644 --- a/gitnexus-web/src/locales/ru/chat.json +++ b/gitnexus-web/src/locales/ru/chat.json @@ -1,40 +1,40 @@ { "tabs": { - "chat": "", - "processes": "" + "chat": "Nexus AI", + "processes": "Процессы" }, "suggestions": { - "architecture": "", - "whatDoes": "", - "importantFiles": "", - "apiHandlers": "" + "architecture": "Объясни архитектуру проекта", + "whatDoes": "Что делает этот проект?", + "importantFiles": "Покажи мне самые важные файлы", + "apiHandlers": "Найди все обработчики API" }, "empty": { - "title": "", - "description": "" + "title": "Спроси меня о чём угодно", + "description": "Я могу помочь разобраться в архитектуре, найти функции или объяснить связи." }, "input": { - "placeholder": "", - "initializing": "", - "configureProvider": "" + "placeholder": "Спроси о кодовой базе...", + "initializing": "Инициализация AI-агента...", + "configureProvider": "Настройте провайдера LLM, чтобы включить чат." }, "actions": { - "closePanel": "", - "scrollBottom": "", - "clearChat": "", - "stopResponse": "" + "closePanel": "Закрыть панель", + "scrollBottom": "Перейти вниз", + "clearChat": "Очистить чат", + "stopResponse": "Остановить создание ответа" }, - "stopped": "", + "stopped": "Остановлено пользователем", "badges": { - "configureAI": "", - "connecting": "" + "configureAI": "Настроить AI", + "connecting": "Подключение" }, "chatOnly": { - "banner": "" + "banner": "Граф не загружен (большой проект). Чат работает нормально, но встроенные ссылки на узлы не будут подсвечиваться в представлении графа." }, "roles": { - "you": "", - "assistant": "" + "you": "Вы", + "assistant": "Nexus AI" }, - "newBadge": "" + "newBadge": "СОЗДАТЬ ДИАЛОГ" } \ No newline at end of file From bf9a13248d6694936ac259539c923ac7f7e295f5 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sat, 22 Aug 2026 19:32:23 +0300 Subject: [PATCH 09/44] feat(i18n): added russian translate to "common.json" template #3013 --- gitnexus-web/src/locales/ru/common.json | 140 ++++++++++++------------ 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 74abfe61d..3ed680c6e 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -1,86 +1,86 @@ { "app": { - "name": "", - "nexusAI": "" + "name": "GitNexus", + "nexusAI": "Nexus AI" }, "actions": { - "cancel": "", - "dismiss": "", - "tryAgain": "", - "hide": "", - "retry": "", - "copy": "", - "copied": "", - "close": "", - "run": "", - "clear": "", - "remove": "", - "focusInGraph": "", - "expand": "", - "collapse": "" + "cancel": "Отменить", + "dismiss": "Отклонить", + "tryAgain": "Попробовать снова", + "hide": "Скрыть", + "retry": "Повторить", + "copy": "Копировать", + "copied": "Скопировано", + "close": "Закрыть", + "run": "Выполнить", + "clear": "Очистить", + "remove": "Удалить", + "focusInGraph": "Сфокусировать в графе", + "expand": "Развернуть", + "collapse": "Свернуть" }, "chat": { - "viewNodeInCodePanel": "", - "openInCodePanel": "", - "waitForVectorIndex": "" + "viewNodeInCodePanel": "Просмотреть {{inner}} в панели кода", + "openInCodePanel": "Открыть в панели кода • {{inner}}", + "waitForVectorIndex": "Подождите, создаётся векторный индекс." }, "counts": { - "files_one": "", - "files_other": "", - "nodes_one": "", - "nodes_other": "", - "edges_one": "", - "edges_other": "", - "symbols_one": "", - "symbols_other": "", - "flows_one": "", - "flows_other": "" + "files_one": "{{count}} файл", + "files_other": "{{count}} файлов", + "nodes_one": "{{count}} узел", + "nodes_other": "{{count}} узлов", + "edges_one": "{{count}} ребро", + "edges_other": "{{count}} рёбер", + "symbols_one": "{{count}} символ", + "symbols_other": "{{count}} символов", + "flows_one": "{{count}} поток", + "flows_other": "{{count}} потоков" }, "progress": { - "connecting": "", - "connectingShort": "", - "validatingServer": "", - "validatingServerEllipsis": "", - "downloadingGraph": "", - "downloadedMb": "", - "downloadingWithPercent": "", - "downloadingMb": "", - "processing": "", - "processingGraph": "", - "extractingFileContents": "", - "loadingGraph": "", - "starting": "", - "executing": "", - "truncated": "", - "ready": "", - "switchingRepository": "", - "loadingRepository": "", - "validating": "", - "failedSwitchRepository": "", - "unknownError": "" + "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": "" + "queued": "В очереди", + "cloning": "Клонирование репозитория", + "pulling": "Получение последних изменений", + "extracting": "Сканирование файлов", + "structure": "Построение структуры", + "parsing": "Разбор кода", + "imports": "Обработка импортов", + "calls": "Трассировка вызовов", + "heritage": "Извлечение наследования", + "scopeResolution": "Разрешение типов", + "communities": "Обнаружение групп", + "processes": "Обнаружение процессов", + "complete": "Обработка заверешена", + "lbug": "Загрузка в базу данных", + "fts": "Создание поисковых индексов", + "embeddings": "Генерация эмбеддингов", + "done": "Готово", + "retrying": "Повторная попытка после сбоя" }, "units": { - "elapsedSeconds": "", - "elapsedMinutesSeconds": "" + "elapsedSeconds": "{{seconds}} сек.", + "elapsedMinutesSeconds": "{{minutes}} мин. {{seconds}} сек." } } \ No newline at end of file From 6a6e77b11fa077f8127d02173a013664aeca80bb Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 01:27:11 +0300 Subject: [PATCH 10/44] feat(i18n): added special parameter to "comon.json" for files quantity from 2 to 4 inclusive Because they are written especially in the Russian language. #3013 --- gitnexus-web/src/locales/ru/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 3ed680c6e..18133723b 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -26,6 +26,7 @@ }, "counts": { "files_one": "{{count}} файл", + "files_from_two_to_four": "{{count} файла", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", "nodes_other": "{{count}} узлов", From 8263b9e4fb435825e6ef81bf707ad030eb3b5380 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 01:28:23 +0300 Subject: [PATCH 11/44] feat(i18n): added special parameter to "comon.json" for nodes quantity from 2 to 4 inclusive Because they are written especially in the Russian language. #3013 --- gitnexus-web/src/locales/ru/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 18133723b..432b340d8 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -29,6 +29,7 @@ "files_from_two_to_four": "{{count} файла", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", + "nodes_from_two_to_four": "{{count}} узла", "nodes_other": "{{count}} узлов", "edges_one": "{{count}} ребро", "edges_other": "{{count}} рёбер", From 07bf9dab5d29d4e7be10f83a159667ed5f1be13d Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 01:28:51 +0300 Subject: [PATCH 12/44] feat(i18n): added special parameter to "comon.json" for edges quantity from 2 to 4 inclusive Because they are written especially in the Russian language. #3013 --- gitnexus-web/src/locales/ru/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 432b340d8..21b665af9 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -32,6 +32,7 @@ "nodes_from_two_to_four": "{{count}} узла", "nodes_other": "{{count}} узлов", "edges_one": "{{count}} ребро", + "edges_from_two_to_four": "{{count}} ребра", "edges_other": "{{count}} рёбер", "symbols_one": "{{count}} символ", "symbols_other": "{{count}} символов", From 91f198a0696e041e28fe9ca5b68bac65185cd6c1 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 01:30:43 +0300 Subject: [PATCH 13/44] feat(i18n): added special parameter to "comon.json" for symbols quantity from 2 to 4 inclusive Because they are written especially in the Russian language. #3013 --- gitnexus-web/src/locales/ru/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 21b665af9..c5631376c 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -35,6 +35,7 @@ "edges_from_two_to_four": "{{count}} ребра", "edges_other": "{{count}} рёбер", "symbols_one": "{{count}} символ", + "symdols_from_two_to_four": "{{count}} символа", "symbols_other": "{{count}} символов", "flows_one": "{{count}} поток", "flows_other": "{{count}} потоков" From 1d9bb16574e9ca72fa3943347737cd4d059beaad Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 02:00:19 +0300 Subject: [PATCH 14/44] feat(i18n): added special parameter to "comon.json" for flows quantity from 2 to 4 inclusive Because they are written especially in the Russian language. #3013 --- gitnexus-web/src/locales/ru/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index c5631376c..553e67641 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -38,6 +38,7 @@ "symdols_from_two_to_four": "{{count}} символа", "symbols_other": "{{count}} символов", "flows_one": "{{count}} поток", + "flows_from_two_to_four": "{{count}} потока", "flows_other": "{{count}} потоков" }, "progress": { From deb9069e24e7ecdaa31d30090aaec3c292b1e36d Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 02:49:10 +0300 Subject: [PATCH 15/44] fix(i18n): fixed special russian word endings key names Since I found out that i18next automatically handles such endings, but only if the fields are named in a certain way. #3013 --- gitnexus-web/src/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 553e67641..4ce85b7fb 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -26,7 +26,8 @@ }, "counts": { "files_one": "{{count}} файл", - "files_from_two_to_four": "{{count} файла", + "files_few": "{{count} файла", + "files_many": "{{count} файлов", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", "nodes_from_two_to_four": "{{count}} узла", From 0f9ddbad81abf8985fd504fadee3016d9901b949 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 14:47:46 +0300 Subject: [PATCH 16/44] fix(i18n): fixed special russian word endings key names Since I found out that i18next automatically handles such endings, but only if the fields are named in a certain way. #3013 --- gitnexus-web/src/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 4ce85b7fb..188e710de 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -30,7 +30,8 @@ "files_many": "{{count} файлов", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", - "nodes_from_two_to_four": "{{count}} узла", + "nodes_few": "{{count} файла", + "nodes_many": "{{count} файлов", "nodes_other": "{{count}} узлов", "edges_one": "{{count}} ребро", "edges_from_two_to_four": "{{count}} ребра", From a5a0d36388283b709c4706a7cc63865389edf233 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 14:48:50 +0300 Subject: [PATCH 17/44] fix(i18n): fixed special russian word endings key names Since I found out that i18next automatically handles such endings, but only if the fields are named in a certain way. #3013 --- gitnexus-web/src/locales/ru/common.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 188e710de..f61d0d8df 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -30,11 +30,12 @@ "files_many": "{{count} файлов", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", - "nodes_few": "{{count} файла", - "nodes_many": "{{count} файлов", + "nodes_few": "{{count} узла", + "nodes_many": "{{count} узлов", "nodes_other": "{{count}} узлов", "edges_one": "{{count}} ребро", - "edges_from_two_to_four": "{{count}} ребра", + "edges_few": "{{count} ребра", + "edges_many": "{{count} рёбер", "edges_other": "{{count}} рёбер", "symbols_one": "{{count}} символ", "symdols_from_two_to_four": "{{count}} символа", From 5e9541c7dceb69874ac7cd9ea49f753655cd37f0 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 14:49:46 +0300 Subject: [PATCH 18/44] fix(i18n): fixed placeholders syntax --- gitnexus-web/src/locales/ru/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index f61d0d8df..fd0ad8ed1 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -26,16 +26,16 @@ }, "counts": { "files_one": "{{count}} файл", - "files_few": "{{count} файла", + "files_few": "{{count}} файла", "files_many": "{{count} файлов", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", - "nodes_few": "{{count} узла", + "nodes_few": "{{count}} узла", "nodes_many": "{{count} узлов", "nodes_other": "{{count}} узлов", "edges_one": "{{count}} ребро", - "edges_few": "{{count} ребра", - "edges_many": "{{count} рёбер", + "edges_few": "{{count}} ребра", + "edges_many": "{{count}} рёбер", "edges_other": "{{count}} рёбер", "symbols_one": "{{count}} символ", "symdols_from_two_to_four": "{{count}} символа", From 83ca9dabe61545080093678a2283e6aa69177e1b Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 14:51:40 +0300 Subject: [PATCH 19/44] fix(i18n): fixed special russian word endings key names Since I found out that i18next automatically handles such endings, but only if the fields are named in a certain way. #3013 --- gitnexus-web/src/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index fd0ad8ed1..a7c082a61 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -38,7 +38,8 @@ "edges_many": "{{count}} рёбер", "edges_other": "{{count}} рёбер", "symbols_one": "{{count}} символ", - "symdols_from_two_to_four": "{{count}} символа", + "symbols_few": "{{count} символа", + "symbols_many": "{{count} символов", "symbols_other": "{{count}} символов", "flows_one": "{{count}} поток", "flows_from_two_to_four": "{{count}} потока", From 4af8fd0a212f2320679f77aa504bc1d111bafc0e Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 14:52:18 +0300 Subject: [PATCH 20/44] fix(i18n): fixed special russian word endings key names Since I found out that i18next automatically handles such endings, but only if the fields are named in a certain way. #3013 --- gitnexus-web/src/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index a7c082a61..11410822d 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -42,7 +42,8 @@ "symbols_many": "{{count} символов", "symbols_other": "{{count}} символов", "flows_one": "{{count}} поток", - "flows_from_two_to_four": "{{count}} потока", + "flows_few": "{{count} потока", + "flows_many": "{{count} потоков", "flows_other": "{{count}} потоков" }, "progress": { From 42e57dda886ce59c0e3880b2139fb06949194697 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 21:02:35 +0300 Subject: [PATCH 21/44] feat(i18n): added russian translate to "errors.json" template #3013 --- gitnexus-web/src/locales/ru/errors.json | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/gitnexus-web/src/locales/ru/errors.json b/gitnexus-web/src/locales/ru/errors.json index 372302997..9db1bf833 100644 --- a/gitnexus-web/src/locales/ru/errors.json +++ b/gitnexus-web/src/locales/ru/errors.json @@ -1,22 +1,22 @@ { - "unknown": "", - "connectFailed": "", - "loadGraphFailed": "", - "failedToConnect": "", - "analysisFailed": "", - "startAnalysisFailed": "", - "invalidGithubUrl": "", - "invalidAzureDevOpsUrl": "", - "missingFolderPath": "", + "unknown": "Неизвестная ошибка", + "connectFailed": "Не удалось подключиться к серверу", + "loadGraphFailed": "Не удалось загрузить граф", + "failedToConnect": "Не удалось подключиться", + "analysisFailed": "Анализ не удался. Проверьте логи сервера.", + "startAnalysisFailed": "Не удалось запустить анализ", + "invalidGithubUrl": "Пожалуйста, введите корректный URL репозитория GitHub.", + "invalidAzureDevOpsUrl": "Пожалуйста, введите корректный URL репозитория Azure DevOps.", + "missingFolderPath": "Пожалуйста, укажите путь к папке.", "backend": { - "reconnecting": "", - "network": "", - "timeout": "", - "rateLimited": "", - "notFound": "", - "unauthorized": "", - "originBlocked": "", - "client": "", - "server": "" + "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}}" } } \ No newline at end of file From 3555de96a7470ba63eb0aeed6883b1cb9a0920e0 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 21:22:36 +0300 Subject: [PATCH 22/44] fix(i18n): changed used word in russain localisation file #3013 --- gitnexus-web/src/locales/ru/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 11410822d..dcac5d663 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -79,7 +79,7 @@ "imports": "Обработка импортов", "calls": "Трассировка вызовов", "heritage": "Извлечение наследования", - "scopeResolution": "Разрешение типов", + "scopeResolution": "Обработка типов", "communities": "Обнаружение групп", "processes": "Обнаружение процессов", "complete": "Обработка заверешена", From 4b4626986d3ded2be44773fc161b85a2a25f72c6 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 22:50:43 +0300 Subject: [PATCH 23/44] feat(i18n): added russian translate to "graph.json" localisation file #3013 --- gitnexus-web/src/locales/ru/graph.json | 324 +++++++++++++------------ 1 file changed, 170 insertions(+), 154 deletions(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index afe3059b3..f6f7e35af 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -1,190 +1,206 @@ { "statusBar": { - "sponsor": "", - "sponsorHint": "" + "sponsor": "Спонсор", + "sponsorHint": "нужно купить немного кредитов API, чтобы запустить SWE-bench 😅" }, "loading": { - "filesProgress": "" + "filesProgress": "{{processed}} / {{total}} файлов" }, "toolCall": { "status": { - "running": "", - "completed": "", - "error": "", - "stopped": "" + "running": "выполняется", + "completed": "завершено", + "error": "ошибка", + "stopped": "остановлено" }, "tools": { - "search": "", - "cypher": "", - "grep": "", - "read": "", - "overview": "", - "explore": "", - "impact": "" + "search": "🔍 Поиск по коду", + "cypher": "🔗 Запрос на Cypher", + "grep": "🔎 Поиск по шаблону", + "read": "📄 Чтение файла", + "overview": "🗺️ Обзор кодовой базы", + "explore": "🔬 Исследование", + "impact": "💥 Анализ влияния" }, - "query": "", - "input": "", - "result": "", - "searchPrefix": "" + "query": "Запрос", + "input": "Входные данные", + "result": "Результат", + "searchPrefix": "Поиск: \"{{query}}\"" }, "embedding": { - "generateTitle": "", - "enable": "", - "loadingModel": "", - "embeddingNodes": "", - "creatingIndex": "", - "readyTitle": "", - "ready": "", - "errorTitle": "", - "failedRetry": "", + "generateTitle": "Сгенерировать эмбеддинги для семантического поиска", + "enable": "Включить семантический поиск", + "loadingModel": "Загрузка AI-модели...", + "embeddingNodes": "Эмбеддинг {{processed}}/{{total}} узлов", + "creatingIndex": "Создание векторного индекса...", + "readyTitle": "Семантический поиск готов! Используйте естественный язык в чате с AI.", + "ready": "Семантический готов", + "errorTitle": "Создание эмбеддингов не удалось. Нажмите для повтора.", + "failedRetry": "Ошибка — повторить", "fallback": { - "title": "", - "subtitle": "", - "description": "", - "options": "", - "useCpu": "", - "useCpuDescriptionSmall": "", - "useCpuDescriptionLarge": "", - "estimated": "", - "skipIt": "", - "skipDescription": "", - "smallCodebase": "", - "tip": "", - "skipEmbeddings": "", - "useCpuRecommended": "", - "useCpuSlow": "" + "title": "WebGPU сказал – «Нет!»", + "subtitle": "Ваш браузер не поддерживает ускорение через GPU", + "description": "Не удалось создать эмбеддинги с WebGPU, поэтому семантический поиск (графовый RAG) будет не таким умным. Но граф всё равно работает отлично!", + "options": "Ваши варианты:", + "useCpu": "Использовать CPU", + "useCpuDescriptionSmall": "Работает, но немного медленнее", + "useCpuDescriptionLarge": "Работает, но намного медленнее", + "estimated": "(~{{minutes}} мин. для {{count}} узлов)", + "skipIt": "Пропустить", + "skipDescription": "Граф работает, просто без AI-семантического поиска", + "smallCodebase": "Обнаружена маленькая кодовая база! CPU подойдёт.", + "tip": "💡 Совет: попробуйте Chrome или Edge для поддержки WebGPU", + "skipEmbeddings": "Пропустить эмбеддинги", + "useCpuRecommended": "Использовать CPU (рекомендуется)", + "useCpuSlow": "Использовать CPU (медленно)" } }, "queryFab": { - "query": "", - "cypherQuery": "", - "examples": "", - "run": "", - "noProject": "", - "dbNotReady": "", - "executionFailed": "", + "query": "Запрос", + "cypherQuery": "Запрос Cypher", + "examples": "Примеры", + "run": "Выполнить", + "noProject": "Проект не загружен. Сначала загрузите проект.", + "dbNotReady": "База данных не готова. Подождите завершения загрузки.", + "executionFailed": "Не удалось выполнить запрос", "exampleLabels": { - "functions": "", - "classes": "", - "interfaces": "", - "calls": "", - "imports": "" + "functions": "Все функции", + "classes": "Все классы", + "interfaces": "Все интерфейсы", + "calls": "Вызовы функций", + "imports": "Импортирования" }, - "clear": "", - "rows": "", - "highlighted": "", - "showingRows": "" + "clear": "Очистить", + "rows": "строк", + "highlighted": "выделено", + "showingRows": "Показано 50 из {{count}} строк" }, "fileTree": { - "expandPanel": "", - "fileExplorer": "", - "filters": "", - "collapsePanel": "", - "searchFiles": "", - "noFilesLoaded": "", - "all": "", - "selectNodeDepth": "", - "explorer": "", - "nodeTypes": "", - "nodeTypesDesc": "", - "edgeTypes": "", - "edgeTypesDesc": "", - "focusDepth": "", - "focusDepthDesc": "", - "hops_one": "", - "hops_other": "", - "colorLegend": "" + "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": "", - "clearSelection": "", - "loadingSource": "", - "selectFile": "", - "code": "", - "selected": "", - "aiCitations": "", - "references_one": "", - "references_other": "", - "lines_one": "", - "lines_other": "", - "codeNotAvailable": "" + "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": "" + "label": "Режим отображения графа", + "force": "Силовой граф", + "tree": "Последовательная раскладка", + "circles": "Радиальная раскладка" }, - "zoomIn": "", - "zoomOut": "", - "fit": "", - "focusSelected": "", - "clearSelection": "", - "clear": "", - "stopLayout": "", - "runLayout": "", - "layoutOptimizing": "", - "turnOffHighlights": "", - "turnOnHighlights": "", + "zoomIn": "Приблизить", + "zoomOut": "Отдалить", + "fit": "По размеру экрана", + "focusSelected": "Сфокусироваться на выбранном узле", + "clearSelection": "Снять выделение", + "clear": "Очистить", + "stopLayout": "Остановить раскладку", + "runLayout": "Запустить раскладку заново", + "layoutOptimizing": "Оптимизация раскладки...", + "turnOffHighlights": "Выключить все подсветки", + "turnOnHighlights": "Включить подсветки AI", "chatOnly": { - "title": "", - "description": "", - "descriptionWithCount": "", - "citationNote": "", - "loadAnyway": "", - "loadAnywayWarning": "", - "loadAnywayWarningUnknown": "" + "title": "Граф не загружен", + "description": "Это большой проект, поэтому граф был пропущен, чтобы браузер не тормозил. AI‑чат работает нормально.", + "descriptionWithCount": "В этом проекте {{count}} узлов, поэтому граф был пропущен, чтобы браузер не тормозил. AI‑чат работает нормально.", + "citationNote": "Пока граф не загружен, встроенные ссылки на файлы из чата не будут автоматически открываться в панели кода.", + "loadAnyway": "Всё равно загрузить граф", + "loadAnywayWarning": "В этом проекте {{count}} узлов. Загрузка полного графа может замедлить браузер или сделать его неотзывчивым. Продолжить?", + "loadAnywayWarningUnknown": "Возможно, это большой проект. Загрузка полного графа может замедлить браузер или сделать его неотзывчивым. Продолжить?" } }, "processes": { - "unknownStep": "", - "allProcessesLabel_one": "", - "allProcessesLabel_other": "", - "emptyTitle": "", - "emptyDescription": "", - "filterPlaceholder": "", - "detected_one": "", - "detected_other": "", - "fullMap": "", - "viewCombined_one": "", - "viewCombined_other": "", - "crossCommunity": "", - "intraCommunity": "", - "steps_one": "", - "steps_other": "", - "clusters_one": "", - "clusters_other": "", - "highlightTitle": "", - "removeHighlightTitle": "", - "loading": "", - "viewing": "", - "view": "" + "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": "", - "diagramTooLarge": "", - "renderError": "", - "tooComplex_one": "", - "tooComplex_other": "", - "unableToRender_one": "", - "unableToRender_other": "", - "zoomOutTitle": "", - "zoomInTitle": "", - "resetTitle": "", - "resetView": "", - "toggleFocus": "", - "copyMermaid": "" + "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": "", - "error": "", - "showSource": "", - "label": "", - "expandTitle": "", - "loading": "" + "aiGenerated": "Диаграмма, сгенерированная AI", + "error": "Ошибка диаграммы", + "showSource": "Показать исходник", + "label": "Диаграмма", + "expandTitle": "Развернуть", + "loading": "Загрузка диаграммы…" } } \ No newline at end of file From 2a3d7afeae70e9ca351f217f99d5f488517e4b08 Mon Sep 17 00:00:00 2001 From: raven461 Date: Sun, 23 Aug 2026 23:35:11 +0300 Subject: [PATCH 24/44] feat(i18n): added russian translate to "header.json" localisation file #3013 --- gitnexus-web/src/locales/ru/header.json | 32 ++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/gitnexus-web/src/locales/ru/header.json b/gitnexus-web/src/locales/ru/header.json index 70c6b8b1c..0c0b769fa 100644 --- a/gitnexus-web/src/locales/ru/header.json +++ b/gitnexus-web/src/locales/ru/header.json @@ -1,18 +1,18 @@ { - "repositories": "", - "active": "", - "reanalyzing": "", - "reanalyzeRepo": "", - "deleteRepo": "", - "reanalyzingRepo": "", - "analyzeNew": "", - "searchRepositories": "", - "noRepositoriesFound": "", - "searchNodes": "", - "noNodesFound": "", - "starIfCool": "", - "aiSettings": "", - "help": "", - "language": "", - "selectLanguage": "" + "repositories": "Репозитории", + "active": "активен", + "reanalyzing": "Повторный анализ...", + "reanalyzeRepo": "Повторно анализировать {{repoName}}", + "deleteRepo": "Удалить {{repoName}}", + "reanalyzingRepo": "Переанализ {{repoName}}: {{message}}", + "analyzeNew": "Анализировать новый репозиторий...", + "searchRepositories": "Поиск репозиториев...", + "noRepositoriesFound": "Репозитории по запросу «{{query}}» не найдены", + "searchNodes": "Поиск узлов...", + "noNodesFound": "Узлы по запросу «{{query}}» не найдены", + "starIfCool": "Поставь звезду, если круто", + "aiSettings": "Настройки AI", + "help": "Помощь", + "language": "Язык", + "selectLanguage": "Выберите язык" } \ No newline at end of file From 962cc15bb63f9fe236a706241ed7aca1a398521f Mon Sep 17 00:00:00 2001 From: raven461 Date: Mon, 24 Aug 2026 03:48:46 +0300 Subject: [PATCH 25/44] feat(i18n): added russian translate to "help.json" localisation file #3013 --- gitnexus-web/src/locales/ru/help.json | 144 +++++++++++++------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/gitnexus-web/src/locales/ru/help.json b/gitnexus-web/src/locales/ru/help.json index c49afb4f8..6435c5de4 100644 --- a/gitnexus-web/src/locales/ru/help.json +++ b/gitnexus-web/src/locales/ru/help.json @@ -1,96 +1,96 @@ { "tabs": { - "overview": "", - "ai": "", - "shortcuts": "", - "status": "", - "graph": "", - "search": "" + "overview": "Обзор", + "ai": "Nexus AI", + "shortcuts": "Горячие клавиши", + "status": "Строка состояния", + "graph": "Граф и узлы", + "search": "Поиск и фильтр" }, "shortcuts": { - "searchNodes": "", - "deselectClose": "", + "searchNodes": "Поиск узлов", + "deselectClose": "Снять выделение / закрыть", "columns": { - "action": "", - "mac": "", - "windows": "" + "action": "Действие", + "mac": "Mac", + "windows": "Windows" } }, "nodeTypes": { - "function": "", - "functionDesc": "", - "file": "", - "fileDesc": "", - "class": "", - "classDesc": "", - "method": "", - "methodDesc": "", - "interface": "", - "interfaceDesc": "", - "folder": "", - "folderDesc": "" + "function": "Функция", + "functionDesc": "Объявления функций", + "file": "Файл", + "fileDesc": "Исходные файлы", + "class": "Класс", + "classDesc": "Объявления классов", + "method": "Метод", + "methodDesc": "Методы классов", + "interface": "Интерфейс", + "interfaceDesc": "Интерфейсы TypeScript", + "folder": "Папка", + "folderDesc": "Узлы-каталоги" }, "status": { - "ready": "", - "readyDesc": "", - "nodesCount": "", - "nodesCountDesc": "", - "edgesCount": "", - "edgesCountDesc": "", - "aiIndexStatus": "", - "aiIndexStatusDesc": "", - "semanticReadyBadge": "", - "explained": "" + "ready": "Готово", + "readyDesc": "Граф полностью загружен и интерактивен", + "nodesCount": "Количество узлов", + "nodesCountDesc": "Всего файлов и символов в графе", + "edgesCount": "Количество рёбер", + "edgesCountDesc": "Связи импортов / зависимостей", + "aiIndexStatus": "Статус AI-индекса", + "aiIndexStatusDesc": "Репозиторий полностью проиндексирован для AI-запросов", + "semanticReadyBadge": "Семантический готов", + "explained": "Пояснение к строке состояния" }, - "tryAsking": "", - "footer": "", - "title": "", - "footerLong": "", - "docsGithub": "", + "tryAsking": "Попробуйте спросить:", + "footer": "GitNexus — обозреватель графа", + "title": "Справка и справочник", + "footerLong": "GitNexus — обозреватель графа кодовой базы с открытым исходным кодом", + "docsGithub": "Документация и GitHub ↗", "overview": { - "gettingStarted": "", - "whatIsTitle": "", - "whatIsDescription": "", - "currentRepoTitle": "", - "loadedCounts": "", - "threeWaysTitle": "", - "wayInspect": "", - "waySearch": "", - "wayAsk": "", - "navigationTitle": "", - "navZoom": "", - "navPan": "", - "navFocus": "" + "gettingStarted": "Начало работы", + "whatIsTitle": "Что такое GitNexus?", + "whatIsDescription": "Интерактивный обозреватель графа для вашей кодовой базы. Каждый файл, функция и импорт становятся узлом, который можно визуально исследовать, запрашивать и перемещаться по нему.", + "currentRepoTitle": "Ваш текущий репозиторий", + "loadedCounts": "Загружено: {{nodeCount}} узлов · {{edgeCount}} рёбер", + "threeWaysTitle": "Три способа исследования", + "wayInspect": "Нажимайте на узлы для просмотра", + "waySearch": "Ищите по имени или типу", + "wayAsk": "Задайте Nexus AI вопрос на естественном языке", + "navigationTitle": "Навигация", + "navZoom": "Прокрутка для масштабирования", + "navPan": "Перетаскивание для панорамирования", + "navFocus": "Двойной клик по узлу для фокусировки на его подграфе" }, "graph": { - "nodeColorLegend": "", - "nodeLabel": "", - "sizeDescription": "", - "detailDescription": "" + "nodeColorLegend": "Цветовая легенда узлов", + "nodeLabel": "Узлы: {{label}}", + "sizeDescription": "Размер узла отражает количество связей — крупные узлы зависят от большего числа файлов. Рёбра направлены от импортирующего к импортируемому.", + "detailDescription": "Нажмите на любой узел, чтобы открыть панель с подробностями — импорты, экспорты и обратные зависимости." }, "search": { - "title": "", - "searchNodes": "", - "searchDescription": "", - "filterPanel": "", - "filterDescription": "", - "syntax": "", + "title": "Поиск и фильтр", + "searchNodes": "Поиск узлов", + "searchDescription": "Поиск по имени файла, имени функции или пути импорта. Совпадающие узлы подсвечиваются в графе в реальном времени.", + "filterPanel": "Панель фильтров", + "filterDescription": "Используйте значок фильтра на левой боковой панели, чтобы изолировать определённые типы узлов, скрыть листовые узлы или сфокусироваться на диапазоне глубины от выбранного корня.", + "syntax": "Синтаксис поиска", "hints": { - "nameFragment": "", - "pathPrefix": "", - "nodeType": "" + "nameFragment": "совпадение по фрагменту имени", + "pathPrefix": "совпадение по префиксу пути", + "nodeType": "фильтр по типу узла" } }, "ai": { - "title": "", - "semanticReady": "", - "description": "", + "title": "Nexus AI", + "semanticReady": "✓ Семантический анализ готов", + "description": "Ваш репозиторий проиндексирован и готов к семантическим запросам. Nexus AI понимает структуру кода и связи, а не только имена файлов.", "questions": { - "dependencies": "", - "circular": "", - "connected": "", - "imports": "" + "dependencies": "\"Какие файлы зависят от модуля аутентификации?\"", + "circular": "\"Найди циклические зависимости в этом репозитории\"", + "connected": "\"Каковы наиболее связанные компоненты?\"", + "imports": "\"Покажи мне все файлы, которые импортируют useEffect\"" }, - "openPrompt": "" + "openPrompt": "Откройте промпт через кнопку Nexus AI (в правом верхнем углу)." } } \ No newline at end of file From 8eee125b1b0386940d3e7a35ebf111094809e3b0 Mon Sep 17 00:00:00 2001 From: raven461 Date: Mon, 24 Aug 2026 03:54:02 +0300 Subject: [PATCH 26/44] feat(i18n): added russian translate to "onboarding.json" localisation file #3013 --- gitnexus-web/src/locales/ru/onboarding.json | 120 ++++++++++---------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/gitnexus-web/src/locales/ru/onboarding.json b/gitnexus-web/src/locales/ru/onboarding.json index f31a6a0b1..3b2ebebe4 100644 --- a/gitnexus-web/src/locales/ru/onboarding.json +++ b/gitnexus-web/src/locales/ru/onboarding.json @@ -1,78 +1,78 @@ { "success": { - "title": "", - "description": "" + "title": "Сервер подключён", + "description": "Подготовка графа знаний о вашем коде..." }, "loading": { - "largeRepoHint": "" + "largeRepoHint": "Для больших репозиториев это может занять некоторое время" }, "guide": { - "copyAria": "", - "copiedAria": "", - "startServer": "", - "devDescription": "", - "prodDescription": "", - "copyCommand": "", - "copyCommandDescription": "", - "done": "", - "orInstallGlobally": "", - "globalInstall": "", - "startBackend": "", - "terminal": "", - "waitingForServer": "", - "pasteAndRun": "", - "pasteAndRunDescription": "", - "listeningForServer": "", - "willAutoConnect": "", - "autoConnects": "", - "autoConnectsDescription": "", - "requires": "", - "port": "" + "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": "", - "footer": "" + "title": "Проанализируйте свой первый репозиторий", + "description": "Вставьте URL репозитория, и GitNexus клонирует его, разберёт код и построит интерактивный граф знаний — прямо в вашем браузере.", + "footer": "Только публичные репозитории · Клонируется локально сервером · Данные не покидают ваш компьютер" }, "landing": { - "chooseRepository": "", - "description": "", - "indexed": "", - "orAnalyzeNew": "", - "footer": "", + "chooseRepository": "Выберите репозиторий", + "description": "Выберите проиндексированный репозиторий для изучения или проанализируйте новый.", + "indexed": "Индексирован {{time}}", + "orAnalyzeNew": "или проанализировать новый", + "footer": "Публичные и приватные репозитории · Клонируется локально сервером · Данные не покидают ваш компьютер", "time": { - "justNow": "", - "minutesAgo": "", - "hoursAgo": "", - "daysAgo": "" + "justNow": "только что", + "minutesAgo": "{{count}} мин. назад", + "hoursAgo": "{{count}} ч. назад", + "daysAgo": "{{count}} д. назад" } }, "repoAnalyzer": { - "inputType": "", - "githubUrl": "", - "gitlabUrl": "", - "azureDevOpsUrl": "", - "localFolder": "", - "starting": "", - "analyzeRepository": "", - "complete": "", - "loadingGraph": "", - "defaultRepoName": "", - "githubRepositoryUrl": "", - "githubTokenLabel": "", - "githubTokenPlaceholder": "", - "githubTokenHelp": "", - "gitlabRepositoryUrl": "", - "gitlabSupported": "", - "azureDevOpsRepositoryUrl": "", - "azureDevOpsSupported": "", - "localFolderPath": "", - "hideBackground": "", + "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": "", - "empty": "" + "button": "Загрузить папку", + "uploading": "Загрузка...", + "selected": "{{fileCount}} файлов готово ({{dropped}} пропущено: .git, node_modules, build output)", + "empty": "В этой папке не найдено анализируемых файлов." } } } \ No newline at end of file From 4e976ab1d9d18d3da0c5310a3da2dc6b59b6d0c9 Mon Sep 17 00:00:00 2001 From: raven461 Date: Mon, 24 Aug 2026 03:58:44 +0300 Subject: [PATCH 27/44] feat(i18n): added russian translate to "settings.json" localisation file #3013 --- gitnexus-web/src/locales/ru/settings.json | 180 +++++++++++----------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/gitnexus-web/src/locales/ru/settings.json b/gitnexus-web/src/locales/ru/settings.json index 5b77367b1..b496becd7 100644 --- a/gitnexus-web/src/locales/ru/settings.json +++ b/gitnexus-web/src/locales/ru/settings.json @@ -1,116 +1,116 @@ { - "title": "", - "subtitle": "", - "localServer": "", - "backendUrl": "", - "connected": "", - "notConnected": "", - "runServeHint": "", + "title": "Настройки AI", + "subtitle": "Настройте провайдера LLM", + "localServer": "Локальный сервер", + "backendUrl": "URL бэкенда", + "connected": "Подключено", + "notConnected": "Не подключено", + "runServeHint": "Выполните `gitnexus serve`, чтобы подключить веб‑интерфейс к локальному бэкенду.", "accessToken": { - "label": "", - "placeholder": "", - "hint": "", - "title": "", - "promptHint": "", - "connect": "", - "reveal": "", - "hide": "", - "sessionNote": "" + "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": "", - "learnMore": "", - "model": "", - "searchModelPlaceholder": "", - "selectModelPlaceholder": "", - "customModelHint": "", - "customModelExample": "", - "pressEnterCustom": "", - "baseUrl": "", - "optional": "", - "deploymentName": "", - "apiVersion": "", - "checkConnection": "", - "privacyLabel": "", - "privacyText": "", + "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": "", - "apiKeyPlaceholder": "", - "helperText": "", - "helperLinkLabel": "", - "modelPlaceholder": "", - "baseUrlPlaceholder": "", - "baseUrlHint": "" + "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": "", - "apiKeyPlaceholder": "", - "helperText": "", - "helperLinkLabel": "", - "modelPlaceholder": "" + "description": "Используйте модели Google Gemini.", + "apiKeyPlaceholder": "Введите ваш API-ключ Google AI", + "helperText": "Получите API-ключ в", + "helperLinkLabel": "Google AI Studio", + "modelPlaceholder": "например, gemini-2.0-flash, gemini-1.5-pro" }, "anthropic": { - "description": "", - "apiKeyPlaceholder": "", - "helperText": "", - "helperLinkLabel": "", - "modelPlaceholder": "" + "description": "Используйте модели Claude от Anthropic.", + "apiKeyPlaceholder": "Введите ваш API-ключ Anthropic", + "helperText": "Получите API-ключ в", + "helperLinkLabel": "консоли Anthropic", + "modelPlaceholder": "например, claude-sonnet-4-20250514, claude-3-opus" }, "azure": { - "apiKeyPlaceholder": "", - "deploymentNamePlaceholder": "" + "apiKeyPlaceholder": "Введите ваш API-ключ Azure OpenAI", + "deploymentNamePlaceholder": "например, gpt-4o-deployment" }, "ollama": { - "quickStart": "", - "installFrom": "", - "thenRun": "", - "modelPlaceholder": "" + "quickStart": "📋 Быстрый старт:", + "installFrom": "Установите Ollama с", + "thenRun": ", затем выполните:", + "modelPlaceholder": "например, llama3.2, mistral, codellama" }, "openrouter": { - "apiKeyPlaceholder": "", - "helperText": "", - "helperLinkLabel": "" + "apiKeyPlaceholder": "Введите ваш API-ключ OpenRouter", + "helperText": "Получите API-ключ на", + "helperLinkLabel": "странице ключей OpenRouter" }, "minimax": { - "apiKeyPlaceholder": "", - "helperText": "", - "helperLinkLabel": "", - "modelPlaceholder": "", - "helperModel": "", - "endpoint": "", + "apiKeyPlaceholder": "Введите ваш API-ключ MiniMax", + "helperText": "Получите API-ключ на", + "helperLinkLabel": "платформе MiniMax", + "modelPlaceholder": "например, MiniMax-M3 или MiniMax-M2.7", + "helperModel": "Доступны: MiniMax-M3 (по умолчанию) и MiniMax-M2.7", + "endpoint": "Региональный эндпоинт", "endpoints": { - "global": "", - "china": "" + "global": "Глобальный (api.minimax.io)", + "china": "Китайский (api.minimaxi.com)" }, - "thinking": "", + "thinking": "Режим мышления", "thinkingModes": { - "adaptive": "", - "disabled": "", - "always_on": "" + "adaptive": "Адаптивный", + "disabled": "Отключён", + "always_on": "Всегда включён" }, - "capabilities": "" + "capabilities": "Окно контекста {{contextWindow}} | Входные данные: {{modalities}}" }, "glm": { - "apiKeyPlaceholder": "" + "apiKeyPlaceholder": "Введите ваш API-ключ Z.AI" } }, - "loadingModels": "", - "noModelsMatch": "", - "moreModels": "", - "apiKeySession": "", - "startLocalServer": "", - "settingsSaved": "", - "failedToSave": "", - "saveSettings": "", - "endpoint": "", - "azurePortal": "", - "azureHint": "", - "defaultPort": "", - "pullModel": "", - "browseModels": "", - "openRouterModels": "", - "zaiPlatform": "", - "glmCodingApi": "", - "privacyFull": "" + "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 при общении в чате. Ваш код никогда не покидает ваш компьютер." } \ No newline at end of file From e6c1571bde4e03c0b3e5bf3696efefcebc943f11 Mon Sep 17 00:00:00 2001 From: raven461 Date: Tue, 25 Aug 2026 21:21:13 +0300 Subject: [PATCH 28/44] fix(i18n): fixed placeholders syntax #3013 --- gitnexus-web/src/locales/ru/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index dcac5d663..40c2fd789 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -27,7 +27,7 @@ "counts": { "files_one": "{{count}} файл", "files_few": "{{count}} файла", - "files_many": "{{count} файлов", + "files_many": "{{count}} файлов", "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", "nodes_few": "{{count}} узла", From 105d9b955d37c1f41d92ee1ebf1f7c3a8d6dda79 Mon Sep 17 00:00:00 2001 From: raven461 Date: Tue, 25 Aug 2026 21:21:58 +0300 Subject: [PATCH 29/44] fix(i18n): fixed placeholders syntax #3013 --- gitnexus-web/src/locales/ru/common.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 40c2fd789..83a8baf68 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -31,19 +31,19 @@ "files_other": "{{count}} файлов", "nodes_one": "{{count}} узел", "nodes_few": "{{count}} узла", - "nodes_many": "{{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_few": "{{count}} символа", + "symbols_many": "{{count}} символов", "symbols_other": "{{count}} символов", "flows_one": "{{count}} поток", - "flows_few": "{{count} потока", - "flows_many": "{{count} потоков", + "flows_few": "{{count}} потока", + "flows_many": "{{count}} потоков", "flows_other": "{{count}} потоков" }, "progress": { From 42b1776236e6c79858e8b75eec936ea1b2ef6519 Mon Sep 17 00:00:00 2001 From: raven461 Date: Tue, 25 Aug 2026 21:31:48 +0300 Subject: [PATCH 30/44] fix(i18n): fixed grammar construction #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index f6f7e35af..c993ba6af 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -93,7 +93,7 @@ "focusDepthDesc": "Показывать узлы в пределах N переходов от выбранного", "hops_one": "{{count}} переход", "hops_few": "{{count}} перехода", - "hops_many": "{{count}} перехода", + "hops_many": "{{count}} переходов", "hops_other": "{{count}} переходов", "colorLegend": "Цветовая легенда" }, From abc0bd858edaf7e268fa7994e651d883f6026871 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 13:02:06 +0300 Subject: [PATCH 31/44] feat(i18n): added variation for "graph.embedding.fallback.estimated" localisation key for russsian lang #3013 --- gitnexus-web/src/locales/ru/graph.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index c993ba6af..31635298e 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -45,7 +45,8 @@ "useCpu": "Использовать CPU", "useCpuDescriptionSmall": "Работает, но немного медленнее", "useCpuDescriptionLarge": "Работает, но намного медленнее", - "estimated": "(~{{minutes}} мин. для {{count}} узлов)", + "estimated_one": "(~{{minutes}} мин. для {{count}} узла)", + "estimated_other": "(~{{minutes}} мин. для {{count}} узлов)", "skipIt": "Пропустить", "skipDescription": "Граф работает, просто без AI-семантического поиска", "smallCodebase": "Обнаружена маленькая кодовая база! CPU подойдёт.", From b3d2c66611429b4517e185175adba374f5f149a3 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 14:53:38 +0300 Subject: [PATCH 32/44] feat(i18n): added variation for "graph.embedding.embeddingNodes" localisation key for russsian lang #3013 --- gitnexus-web/src/locales/ru/graph.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 31635298e..c375be2b8 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -31,7 +31,8 @@ "generateTitle": "Сгенерировать эмбеддинги для семантического поиска", "enable": "Включить семантический поиск", "loadingModel": "Загрузка AI-модели...", - "embeddingNodes": "Эмбеддинг {{processed}}/{{total}} узлов", + "embeddingNodes_one": "Эмбеддинг {{processed}}/{{total}} узла", + "embeddingNodes_other": "Эмбеддинг {{processed}}/{{total}} узлов", "creatingIndex": "Создание векторного индекса...", "readyTitle": "Семантический поиск готов! Используйте естественный язык в чате с AI.", "ready": "Семантический готов", From 00f0b580531b879c7d5a577083886ad0e85d60a8 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:17:51 +0300 Subject: [PATCH 33/44] feat(i18n): added i18next pluralization to "graph.queryFab.showingRows" localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index c375be2b8..7dc55a180 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -75,7 +75,7 @@ "clear": "Очистить", "rows": "строк", "highlighted": "выделено", - "showingRows": "Показано 50 из {{count}} строк" + "showingRows_other": "Показано 50 из {{count}} строк" }, "fileTree": { "expandPanel": "Развернуть панель", From 4406007023b4885dda12ca0932ef840e646c9817 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:18:45 +0300 Subject: [PATCH 34/44] fix(i18n): fixed grammar form #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 7dc55a180..954fd9093 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -112,7 +112,7 @@ "aiCitations": "Цитаты AI", "references_one": "{{count}} ссылка", "references_few": "{{count}} ссылки", - "references_many": "{{count}} ссылки", + "references_many": "{{count}} ссылок", "references_other": "{{count}} ссылок", "lines_one": "{{count}} строка", "lines_few": "{{count}} строки", From 9f99a3323cb9fea0f4e6031f151b001bc9cf8222 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:19:29 +0300 Subject: [PATCH 35/44] fix(i18n): fixed grammar form in "graph.codePannel.lines_many" russian localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 954fd9093..af4b43b21 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -116,7 +116,7 @@ "references_other": "{{count}} ссылок", "lines_one": "{{count}} строка", "lines_few": "{{count}} строки", - "lines_many": "{{count}} строки", + "lines_many": "{{count}} строк", "lines_other": "{{count}} строк", "codeNotAvailable": "Код недоступен в памяти для {{path}}" }, From 61e164c96a4611e99ffeb6ea52e878b46f4a9cd7 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:47:50 +0300 Subject: [PATCH 36/44] =?UTF-8?q?feat(i18n):=20changed=20"graph.canvas.vie?= =?UTF-8?q?vModels.force"=20russian=20localisation=20Replaced=20"=D0=A1?= =?UTF-8?q?=D0=B8=D0=BB=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=B3=D1=80=D0=B0=D1=84?= =?UTF-8?q?"=20to=20"=D0=94=D0=B8=D0=BD=D0=B0=D0=BC=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D1=8F=20=D1=80=D0=B0=D1=81=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B4=D0=BA=D0=B0"=20#3013?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index af4b43b21..5f38feb05 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -123,7 +123,7 @@ "canvas": { "viewModes": { "label": "Режим отображения графа", - "force": "Силовой граф", + "force": "Динамическая раскладка", "tree": "Последовательная раскладка", "circles": "Радиальная раскладка" }, From 2b09ff6381edb4b305a6168fe3045d1d1e5fdf74 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:49:28 +0300 Subject: [PATCH 37/44] fix: fixed Unicode --- gitnexus-web/src/locales/ru/graph.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 5f38feb05..7814ac294 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -140,8 +140,8 @@ "turnOnHighlights": "Включить подсветки AI", "chatOnly": { "title": "Граф не загружен", - "description": "Это большой проект, поэтому граф был пропущен, чтобы браузер не тормозил. AI‑чат работает нормально.", - "descriptionWithCount": "В этом проекте {{count}} узлов, поэтому граф был пропущен, чтобы браузер не тормозил. AI‑чат работает нормально.", + "description": "Это большой проект, поэтому граф был пропущен, чтобы браузер не тормозил. AI-чат работает нормально.", + "descriptionWithCount": "В этом проекте {{count}} узлов, поэтому граф был пропущен, чтобы браузер не тормозил. AI-чат работает нормально.", "citationNote": "Пока граф не загружен, встроенные ссылки на файлы из чата не будут автоматически открываться в панели кода.", "loadAnyway": "Всё равно загрузить граф", "loadAnywayWarning": "В этом проекте {{count}} узлов. Загрузка полного графа может замедлить браузер или сделать его неотзывчивым. Продолжить?", From bfb7036e51788542e3317776da9dc2a87dac81eb Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:54:08 +0300 Subject: [PATCH 38/44] fix(i18n): fixed grammar form in "graph.processes.detected_many" russian localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 7814ac294..997b3952c 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -157,7 +157,7 @@ "filterPlaceholder": "Фильтровать процессы...", "detected_one": "Обнаружен {{count}} процесс", "detected_few": "Обнаружено {{count}} процесса", - "detected_many": "Обнаружено {{count}} процесса", + "detected_many": "Обнаружено {{count}} процессов", "detected_other": "Обнаружено {{count}} процессов", "fullMap": "Полная карта процессов", "viewCombined_one": "Просмотреть объединённую карту {{count}} процесса", From 15824ab93eb4e948dab9effab7a81d8df6ff58b5 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:54:34 +0300 Subject: [PATCH 39/44] fix(i18n): fixed grammar form in "graph.processes.steps_many" russian localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 997b3952c..536de251e 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -166,7 +166,7 @@ "intraCommunity": "Внутрисообщественный", "steps_one": "{{count}} шаг", "steps_few": "{{count}} шага", - "steps_many": "{{count}} шага", + "steps_many": "{{count}} шагов", "steps_other": "{{count}} шагов", "clusters_one": "{{count}} кластер", "clusters_few": "{{count}} кластера", From c57155a726d00be9b27bd7c476930f108c1277eb Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:55:06 +0300 Subject: [PATCH 40/44] fix(i18n): fixed grammar form in "graph.processes.clusters_many" russian localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 536de251e..94f0178f9 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -170,7 +170,7 @@ "steps_other": "{{count}} шагов", "clusters_one": "{{count}} кластер", "clusters_few": "{{count}} кластера", - "clusters_many": "{{count}} кластера", + "clusters_many": "{{count}} кластеров", "clusters_other": "{{count}} кластеров", "highlightTitle": "Нажмите, чтобы включить подсветку в графе", "removeHighlightTitle": "Нажмите, чтобы выключить подсветку в графе", From 55e010e1a0dfe1c0dc1a2cbd5d14c7a730c1d8f0 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 15:57:47 +0300 Subject: [PATCH 41/44] fix(i18n): fixed grammar form in "graph.processFlow.unableToRender" russian localisation key #3013 --- gitnexus-web/src/locales/ru/graph.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitnexus-web/src/locales/ru/graph.json b/gitnexus-web/src/locales/ru/graph.json index 94f0178f9..85a74bac1 100644 --- a/gitnexus-web/src/locales/ru/graph.json +++ b/gitnexus-web/src/locales/ru/graph.json @@ -187,8 +187,8 @@ "tooComplex_many": "Эта диаграмма содержит {{count}} шагов и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».", "tooComplex_other": "Эта диаграмма содержит {{count}} шагов и слишком сложна для отображения. Попробуйте просматривать отдельные процессы вместо «Все процессы».", "unableToRender_one": "Не удалось отобразить диаграмму. Шаг: {{count}}", - "unableToRender_few": "Не удалось отобразить диаграмму. Шага: {{count}}", - "unableToRender_many": "Не удалось отобразить диаграмму. Шага: {{count}}", + "unableToRender_few": "Не удалось отобразить диаграмму. Шагов: {{count}}", + "unableToRender_many": "Не удалось отобразить диаграмму. Шагов: {{count}}", "unableToRender_other": "Не удалось отобразить диаграмму. Шагов: {{count}}", "zoomOutTitle": "Отдалить (-)", "zoomInTitle": "Приблизить (+)", From 6289a1df22ed6272f9a4744269e8932d28d72b96 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 16:01:27 +0300 Subject: [PATCH 42/44] fix(i18n): fixed typo in "common.analyzePhases.complete" russian localization key #3013 --- gitnexus-web/src/locales/ru/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/common.json b/gitnexus-web/src/locales/ru/common.json index 83a8baf68..d3a9bfcb7 100644 --- a/gitnexus-web/src/locales/ru/common.json +++ b/gitnexus-web/src/locales/ru/common.json @@ -82,7 +82,7 @@ "scopeResolution": "Обработка типов", "communities": "Обнаружение групп", "processes": "Обнаружение процессов", - "complete": "Обработка заверешена", + "complete": "Обработка завершена", "lbug": "Загрузка в базу данных", "fts": "Создание поисковых индексов", "embeddings": "Генерация эмбеддингов", From 3110030678b10b776f6c70969f4bb4b458ee5d15 Mon Sep 17 00:00:00 2001 From: raven461 Date: Wed, 26 Aug 2026 16:45:28 +0300 Subject: [PATCH 43/44] feat(i18n): added pluarization in "onboarding.repoAnalyzer.upload.selected" russian localisation key #3013 --- gitnexus-web/src/locales/ru/onboarding.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gitnexus-web/src/locales/ru/onboarding.json b/gitnexus-web/src/locales/ru/onboarding.json index 3b2ebebe4..898b8e63c 100644 --- a/gitnexus-web/src/locales/ru/onboarding.json +++ b/gitnexus-web/src/locales/ru/onboarding.json @@ -71,7 +71,10 @@ "upload": { "button": "Загрузить папку", "uploading": "Загрузка...", - "selected": "{{fileCount}} файлов готово ({{dropped}} пропущено: .git, node_modules, build output)", + "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": "В этой папке не найдено анализируемых файлов." } } From 8382bff5e2ff23f74cbfa60b3a3df945f82ac483 Mon Sep 17 00:00:00 2001 From: raven461 Date: Fri, 28 Aug 2026 16:45:30 +0300 Subject: [PATCH 44/44] fix(i18n): fixed russian lang code parsing in normalizeSupportedLanguage method #3013 --- gitnexus-web/src/i18n/languages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitnexus-web/src/i18n/languages.ts b/gitnexus-web/src/i18n/languages.ts index df42fb959..4f1c030ea 100644 --- a/gitnexus-web/src/i18n/languages.ts +++ b/gitnexus-web/src/i18n/languages.ts @@ -32,7 +32,7 @@ export function normalizeSupportedLanguage( ) { return 'zh-CN'; } - if (normalized === "ru" || normalized.startsWith("ru")) return "ru"; + if (normalized === "ru" || normalized.startsWith("ru-")) return "ru"; return null; }