Add under-anything knowledge dashboard

This commit is contained in:
qiaoxinjiu
2026-05-27 15:40:32 +08:00
commit e31a75d2bb
565 changed files with 143063 additions and 0 deletions

View File

@@ -0,0 +1,306 @@
export const en = {
common: {
loading: "Loading project...",
noGraphLoaded: "No graph loaded",
selectNode: "Select a node to see details",
back: "Back",
focus: "Focus",
unfocus: "Unfocus",
openCode: "Open code",
file: "File",
tags: "Tags",
connections: "Connections",
filter: "Filter",
resetAll: "Reset All",
analyzed: "Analyzed",
startGuidedTour: "Start Guided Tour",
truncated: "(truncated)",
preview: "Preview",
doubleClickToOpen: "double-click to open",
appName: "Understand Anything",
pressKeyboard: "Press ? for keyboard shortcuts",
path: "Path",
theme: "Theme",
},
projectOverview: {
nodes: "Nodes",
edges: "Edges",
layers: "Layers",
types: "Types",
fileTypes: "File Types",
code: "Code",
config: "Config",
docs: "Docs",
infra: "Infra",
data: "Data",
domain: "Domain",
knowledge: "Knowledge",
languages: "Languages",
frameworks: "Frameworks",
nodeTypeDistribution: "Node Type Distribution",
complexityDistribution: "Complexity Distribution",
simple: "Simple",
moderate: "Moderate",
complex: "Complex",
mostConnectedNodes: "Most Connected Nodes",
avgConnectionsPerNode: "Avg Connections per Node",
},
nodeInfo: {
definedInThisFile: "Defined in this file",
languageConcepts: "Language Concepts",
category: "Category",
wikilinks: "Wikilinks",
backlinks: "Backlinks",
entities: "Entities",
businessRules: "Business Rules",
crossDomain: "Cross-Domain",
flows: "Flows",
entryPoint: "Entry Point",
steps: "Steps",
implementation: "Implementation",
},
fileExplorer: {
analyzedFiles: "Analyzed Files",
filesFromGraph: "files from the current knowledge graph",
noFilePathsFound: "No file paths found.",
},
filterPanel: {
nodeTypes: "Node Types",
complexity: "Complexity",
layers: "Layers",
edgeCategories: "Edge Categories",
},
personaSelector: {
overview: "Overview",
overviewDesc: "High-level architecture view",
learn: "Learn",
learnDesc: "Full dashboard with guided learning",
deepDive: "Deep Dive",
deepDiveDesc: "Code-focused with chat",
},
sidebar: {
info: "Info",
files: "Files",
},
mobile: {
graph: "Graph",
info: "Info",
files: "Files",
},
drawer: {
controls: "Controls",
dashboard: "Dashboard",
role: "Role",
view: "View",
diffOverlay: "Diff overlay",
nodeTypes: "Node types",
layers: "Layers",
tools: "Tools",
path: "Path",
help: "Help",
structural: "Structural",
domain: "Domain",
},
domainView: {
backToDomains: "Back to domains",
},
detailLevel: {
filesTitle: "Files only — architecture-level dependencies (fast)",
classesTitle: "Files + Classes — code structure with inheritance",
files: "Files",
classes: "+Classes",
fnTitle: "Toggle function nodes (may slow down rendering)",
fn: "fn",
},
nodeTypeLabels: {
all: "All",
code: "Code",
config: "Config",
docs: "Docs",
infra: "Infra",
data: "Data",
domain: "Domain",
knowledge: "Knowledge",
},
tokenGate: {
validating: "Validating...",
continue: "Continue",
},
diffToggle: {
hideOverlay: "Hide diff overlay",
showOverlay: "Show diff overlay",
noData: "No diff data loaded",
changed: "Changed",
affected: "Affected",
},
learnPanel: {
finish: "Finish",
next: "Next",
prev: "Prev",
noTour: "No tour available",
noTourHint: "Generate a tour from your knowledge graph to get a guided walkthrough",
projectTour: "Project Tour",
steps: "steps",
stepsTitle: "Steps",
guidedWalkthrough: "Guided walkthrough of the codebase",
startTour: "Start Tour",
tour: "Tour",
exitTour: "Exit Tour",
},
layer: {
defaultName: "Layer",
label: "layers",
},
breadcrumb: {
projectOverview: "Project Overview",
project: "Project",
escBack: "Esc to go back",
},
warningBanner: {
dropped: "Dropped",
fatal: "Fatal",
},
themePicker: {
changeTheme: "Change theme",
theme: "Theme",
accentColor: "Accent Color",
headingFont: "Heading Font",
serif: "Serif",
sans: "Sans",
mono: "Mono",
},
codeViewer: {
fullFile: "Full file",
lines: "Lines",
linesLabel: "lines",
noFile: "No file selected",
loading: "Loading source...",
openLarger: "Open larger code viewer",
closeExpanded: "Close expanded code viewer",
closeViewer: "Close code viewer",
sourceUnavailable: "Source unavailable",
},
customNode: {
tested: "Tested",
hasTests: "Has tests",
},
ariaLabels: {
openMenu: "Open menu",
closeMenu: "Close menu",
settings: "Settings",
hideSearch: "Hide search",
showSearch: "Show search",
},
nodeTypeFilter: {
hide: "Hide",
show: "Show",
nodesLabel: "nodes",
},
keyboardShortcuts: {
showHelp: "Show keyboard shortcuts",
general: "General",
navigation: "Navigation",
tour: "Tour",
view: "View",
focusSearch: "Focus search bar",
nextStep: "Next tour step",
prevStep: "Previous tour step",
toggleDiff: "Toggle diff mode",
toggleFilter: "Toggle filter panel",
toggleExport: "Toggle export menu",
openPathFinder: "Open path finder",
title: "Keyboard Shortcuts",
toggleHint: "Press ? anytime to toggle this help",
closeHint: "Press ESC to close",
escapeDesc: "Close panels and modals / go back to overview",
},
search: {
placeholder: "Search nodes by name, summary, or tags...",
fuzzy: "Fuzzy",
semantic: "Semantic",
result: "result",
},
export: {
label: "Export",
title: "Export graph (E)",
asPNG: "Export as PNG",
asSVG: "Export as SVG",
asJSON: "Export as JSON",
},
edgeLabels: {
imports: { forward: "imports", backward: "imported by" },
exports: { forward: "exports to", backward: "exported by" },
contains: { forward: "contains", backward: "contained in" },
inherits: { forward: "inherits from", backward: "inherited by" },
implements: { forward: "implements", backward: "implemented by" },
calls: { forward: "calls", backward: "called by" },
subscribes: { forward: "subscribes to", backward: "subscribed by" },
publishes: { forward: "publishes to", backward: "consumed by" },
middleware: { forward: "middleware for", backward: "uses middleware" },
reads_from: { forward: "reads from", backward: "read by" },
writes_to: { forward: "writes to", backward: "written by" },
transforms: { forward: "transforms", backward: "transformed by" },
validates: { forward: "validates", backward: "validated by" },
depends_on: { forward: "depends on", backward: "depended on by" },
tested_by: { forward: "tested by", backward: "tests" },
configures: { forward: "configures", backward: "configured by" },
related: { forward: "related to", backward: "related to" },
similar_to: { forward: "similar to", backward: "similar to" },
deploys: { forward: "deploys", backward: "deployed by" },
serves: { forward: "serves", backward: "served by" },
migrates: { forward: "migrates", backward: "migrated by" },
documents: { forward: "documents", backward: "documented by" },
provisions: { forward: "provisions", backward: "provisioned by" },
routes: { forward: "routes to", backward: "routed from" },
defines_schema: { forward: "defines schema for", backward: "schema defined by" },
triggers: { forward: "triggers", backward: "triggered by" },
contains_flow: { forward: "contains flow", backward: "flow in" },
flow_step: { forward: "flow step", backward: "step of" },
cross_domain: { forward: "cross-domain to", backward: "cross-domain from" },
cites: { forward: "cites", backward: "cited by" },
contradicts: { forward: "contradicts", backward: "contradicted by" },
builds_on: { forward: "builds on", backward: "built upon by" },
exemplifies: { forward: "exemplifies", backward: "exemplified by" },
categorized_under: { forward: "categorized under", backward: "categorizes" },
authored_by: { forward: "authored by", backward: "authored" },
},
pathFinder: {
title: "Find path between nodes (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · GET STARTED",
skipForever: "Don't show again",
prev: "Previous",
next: "Next",
finish: "Start exploring",
steps: [
{
title: "Welcome to the knowledge graph",
body: "The dots and lines you see are entities and relations Understand-Anything extracted from this project. A node can be a file, class, or function from the code — or a concept, entity, or claim from a knowledge wiki.",
hint: "Five steps to cover the core operations",
},
{
title: "Three views at the top",
body: "Overview shows the big picture (force-directed). Learn follows a preset learning path. Deep Dive shows type and complexity stats. Each view answers a different question.",
hint: "Decide what you're asking before you switch",
},
{
title: "Search + click a node",
body: "The top search box fuzzy-matches node name / summary / tags. Click any node and the right panel opens with summary, neighbors, and Open Article.",
hint: "Search centers and highlights; clicking a node highlights its edges",
},
{
title: "Layer switch + Project Tour",
body: "The layer tabs next to All filter the graph to one category, sourced from index.md. Project Tour on the right walks you through the editor's preset sequence.",
hint: "Use Layer when nodes are too dense; start Tour when you have no entry point",
},
{
title: "More hidden features",
body: "The top bar also has Filter (by type / complexity), Export (export the graph), Path (find a path between two nodes), and Theme. Press Shift + ? for the full keyboard shortcuts.",
hint: "Expand them when you need them — no need to memorize all at once",
},
],
},
};
export default en;

View File

@@ -0,0 +1,35 @@
import en from "./en";
import zh from "./zh";
import zhTW from "./zh-TW";
import ja from "./ja";
import ko from "./ko";
import ru from "./ru";
export type LocaleKey = "en" | "zh" | "zh-TW" | "ja" | "ko" | "ru";
export type Locale = typeof en;
export const locales: Record<LocaleKey, Locale> = {
en,
zh,
"zh-TW": zhTW,
ja,
ko,
ru,
};
export function getLocale(key: LocaleKey): Locale {
return locales[key] ?? locales.en;
}
export function resolveLocaleKey(lang: string | undefined): LocaleKey {
if (!lang) return "en";
const normalized = lang.toLowerCase().replace(/[_\s]/g, "-");
if (normalized === "zh" || normalized === "chinese" || normalized === "zh-cn") return "zh";
if (normalized === "zh-tw" || normalized === "traditional-chinese") return "zh-TW";
if (normalized === "ja" || normalized === "japanese") return "ja";
if (normalized === "ko" || normalized === "korean") return "ko";
if (normalized === "ru" || normalized === "russian" || normalized === "ru-ru") return "ru";
return "en";
}
export { en, zh, zhTW as "zh-TW", ja, ko, ru };

View File

@@ -0,0 +1,306 @@
export const ja = {
common: {
loading: "プロジェクトを読み込み中...",
noGraphLoaded: "知識グラフが読み込まれていません",
selectNode: "ノードを選択して詳細を表示",
back: "戻る",
focus: "フォーカス",
unfocus: "フォーカス解除",
openCode: "コードを開く",
file: "ファイル",
tags: "タグ",
connections: "接続",
filter: "フィルター",
resetAll: "すべてリセット",
analyzed: "分析日時",
startGuidedTour: "ガイド付きツアーを開始",
truncated: "(省略)",
preview: "プレビュー",
doubleClickToOpen: "ダブルクリックで開く",
appName: "Understand Anything",
pressKeyboard: "? を押してキーボードショートカットを表示",
path: "パス",
theme: "テーマ",
},
projectOverview: {
nodes: "ノード",
edges: "エッジ",
layers: "レイヤー",
types: "タイプ",
fileTypes: "ファイルタイプ",
code: "コード",
config: "設定",
docs: "ドキュメント",
infra: "インフラ",
data: "データ",
domain: "ドメイン",
knowledge: "ナレッジ",
languages: "プログラミング言語",
frameworks: "フレームワーク",
nodeTypeDistribution: "ノードタイプ分布",
complexityDistribution: "複雑度分布",
simple: "単純",
moderate: "中程度",
complex: "複雑",
mostConnectedNodes: "最も接続されているノード",
avgConnectionsPerNode: "ノード平均接続数",
},
nodeInfo: {
definedInThisFile: "このファイルで定義",
languageConcepts: "言語概念",
category: "カテゴリ",
wikilinks: "Wikilinks",
backlinks: "Backlinks",
entities: "エンティティ",
businessRules: "ビジネスルール",
crossDomain: "クロスドメイン",
flows: "フロー",
entryPoint: "エントリポイント",
steps: "ステップ",
implementation: "実装",
},
fileExplorer: {
analyzedFiles: "分析済みファイル",
filesFromGraph: "現在の知識グラフからのファイル",
noFilePathsFound: "ファイルパスが見つかりません。",
},
filterPanel: {
nodeTypes: "ノードタイプ",
complexity: "複雑度",
layers: "レイヤー",
edgeCategories: "エッジカテゴリ",
},
personaSelector: {
overview: "概要",
overviewDesc: "高レベルアーキテクチャビュー",
learn: "学習",
learnDesc: "ガイド付き学習付き完全ダッシュボード",
deepDive: "詳細",
deepDiveDesc: "コード中心のチャット",
},
sidebar: {
info: "情報",
files: "ファイル",
},
mobile: {
graph: "グラフ",
info: "情報",
files: "ファイル",
},
drawer: {
controls: "コントロール",
dashboard: "ダッシュボード",
role: "ロール",
view: "ビュー",
diffOverlay: "差分オーバーレイ",
nodeTypes: "ノードタイプ",
layers: "レイヤー",
tools: "ツール",
path: "パス",
help: "ヘルプ",
structural: "構造",
domain: "ドメイン",
},
domainView: {
backToDomains: "ドメインに戻る",
},
detailLevel: {
filesTitle: "ファイルのみ — アーキテクチャレベルの依存関係(高速)",
classesTitle: "ファイル + クラス — 継承を含むコード構造",
files: "ファイル",
classes: "+クラス",
fnTitle: "関数ノードを切り替え(レンダリングが遅くなる可能性)",
fn: "fn",
},
nodeTypeLabels: {
all: "すべて",
code: "コード",
config: "設定",
docs: "ドキュメント",
infra: "インフラ",
data: "データ",
domain: "ドメイン",
knowledge: "ナレッジ",
},
tokenGate: {
validating: "検証中...",
continue: "続行",
},
diffToggle: {
hideOverlay: "差分オーバーレイを非表示",
showOverlay: "差分オーバーレイを表示",
noData: "差分データが読み込まれていません",
changed: "変更済み",
affected: "影響あり",
},
learnPanel: {
finish: "完了",
next: "次へ",
prev: "前へ",
noTour: "ツアーがありません",
noTourHint: "知識グラフからツアーを生成してコードベースのガイド付きウォークスルーを取得",
projectTour: "プロジェクトツアー",
steps: "ステップ",
stepsTitle: "ステップ",
guidedWalkthrough: "コードベースのガイド付きウォークスルー",
startTour: "ツアー開始",
tour: "ツアー",
exitTour: "ツアー終了",
},
layer: {
defaultName: "レイヤー",
label: "レイヤー",
},
breadcrumb: {
projectOverview: "プロジェクト概要",
project: "プロジェクト",
escBack: "Escで戻る",
},
warningBanner: {
dropped: "削除済み",
fatal: "致命的",
},
themePicker: {
changeTheme: "テーマ変更",
theme: "テーマ",
accentColor: "アクセント色",
headingFont: "見出しフォント",
serif: "セリフ",
sans: "サン",
mono: "モノ",
},
codeViewer: {
fullFile: "ファイル全体",
lines: "行",
linesLabel: "行",
noFile: "ファイル未選択",
loading: "ソース読み込み中...",
openLarger: "大きなコードビューアを開く",
closeExpanded: "展開したコードビューアを閉じる",
closeViewer: "コードビューアを閉じる",
sourceUnavailable: "ソースが利用できません",
},
customNode: {
tested: "テスト済み",
hasTests: "テストあり",
},
ariaLabels: {
openMenu: "メニューを開く",
closeMenu: "メニューを閉じる",
settings: "設定",
hideSearch: "検索を非表示",
showSearch: "検索を表示",
},
nodeTypeFilter: {
hide: "非表示",
show: "表示",
nodesLabel: "ノード",
},
keyboardShortcuts: {
showHelp: "キーボードショートカットを表示",
general: "一般",
navigation: "ナビゲーション",
tour: "ツアー",
view: "ビュー",
focusSearch: "検索バーにフォーカス",
nextStep: "次のツアーステップ",
prevStep: "前のツアーステップ",
toggleDiff: "差分モード切り替え",
toggleFilter: "フィルターパネル切り替え",
toggleExport: "エクスポートメニュー切り替え",
openPathFinder: "パスファインダーを開く",
title: "キーボードショートカット",
toggleHint: "いつでも ? を押してこのヘルプを切り替え",
closeHint: "ESC を押して閉じる",
escapeDesc: "パネルとモーダルを閉じる / 概要に戻る",
},
search: {
placeholder: "ノード名、概要、タグで検索...",
fuzzy: "ファジー",
semantic: "セマンティック",
result: "結果",
},
export: {
label: "エクスポート",
title: "グラフをエクスポート (E)",
asPNG: "PNGでエクスポート",
asSVG: "SVGでエクスポート",
asJSON: "JSONでエクスポート",
},
edgeLabels: {
imports: { forward: "インポート", backward: "インポートされる" },
exports: { forward: "エクスポート", backward: "エクスポートされる" },
contains: { forward: "含む", backward: "含まれる" },
inherits: { forward: "継承", backward: "継承される" },
implements: { forward: "実装", backward: "実装される" },
calls: { forward: "呼び出す", backward: "呼び出される" },
subscribes: { forward: "購読", backward: "購読される" },
publishes: { forward: "公開", backward: "消費される" },
middleware: { forward: "ミドルウェア", backward: "ミドルウェアを使用" },
reads_from: { forward: "読み取り", backward: "読み取られる" },
writes_to: { forward: "書き込み", backward: "書き込まれる" },
transforms: { forward: "変換", backward: "変換される" },
validates: { forward: "検証", backward: "検証される" },
depends_on: { forward: "依存", backward: "依存される" },
tested_by: { forward: "テストされる", backward: "テスト" },
configures: { forward: "設定", backward: "設定される" },
related: { forward: "関連", backward: "関連" },
similar_to: { forward: "類似", backward: "類似" },
deploys: { forward: "デプロイ", backward: "デプロイされる" },
serves: { forward: "提供", backward: "提供される" },
migrates: { forward: "移行", backward: "移行される" },
documents: { forward: "ドキュメント化", backward: "ドキュメント化される" },
provisions: { forward: "提供", backward: "提供される" },
routes: { forward: "ルーティング", backward: "ルーティングされる" },
defines_schema: { forward: "スキーマ定義", backward: "スキーマ定義される" },
triggers: { forward: "トリガー", backward: "トリガーされる" },
contains_flow: { forward: "フローを含む", backward: "フロー内" },
flow_step: { forward: "フローステップ", backward: "ステップの" },
cross_domain: { forward: "クロスドメイン", backward: "クロスドメインから" },
cites: { forward: "引用", backward: "引用される" },
contradicts: { forward: "矛盾", backward: "矛盾される" },
builds_on: { forward: "基礎", backward: "基礎となる" },
exemplifies: { forward: "例示", backward: "例示される" },
categorized_under: { forward: "カテゴリ化", backward: "カテゴリ化する" },
authored_by: { forward: "作成者", backward: "作成" },
},
pathFinder: {
title: "ノード間のパスを検索 (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · はじめに",
skipForever: "次回から表示しない",
prev: "前へ",
next: "次へ",
finish: "探索を始める",
steps: [
{
title: "知識グラフへようこそ",
body: "表示されているードとエッジは、Understand-Anything がこのプロジェクトから抽出したエンティティと関係です。ノードはコード側のファイル・クラス・関数のこともあれば、知識 wiki 側の概念・エンティティ・記述のこともあります。",
hint: "5 ステップで主要な操作を確認します",
},
{
title: "上部の 3 つのビュー",
body: "Overview は全体像力学的レイアウト、Learn はあらかじめ用意された学習パス、Deep Dive はタイプ / 複雑度の統計を表示します。それぞれ異なる問いに答えるためのビューです。",
hint: "切り替える前に、何を知りたいかを明確に",
},
{
title: "検索 + ノードクリック",
body: "上部の検索ボックスはノード名 / summary / タグをあいまい検索します。任意のノードをクリックすると、右側のパネルに summary、隣接ード、Open Article ボタンが表示されます。",
hint: "検索はノードを中央寄せ・ハイライト、クリックは隣接エッジをハイライトします",
},
{
title: "Layer 切替 + Project Tour",
body: "上部 All の隣にある layer タブは index.md に基づいて 1 つのカテゴリだけを表示します。右側の Project Tour は編集者が用意した順序でガイドします。",
hint: "ノードが多すぎるときは Layer、入り口がわからないときは Tour",
},
{
title: "その他の隠れた機能",
body: "上部バーには Filterタイプ / 複雑度で絞り込み、Exportグラフを書き出す、Path2 つのード間のパスを検索、Themeテーマ切替もあります。Shift + ? で全キーボードショートカットを確認できます。",
hint: "必要になったときに開けば十分。一度に覚える必要はありません",
},
],
},
};
export default ja;

View File

@@ -0,0 +1,306 @@
export const ko = {
common: {
loading: "프로젝트 로딩 중...",
noGraphLoaded: "지식 그래프가 로드되지 않음",
selectNode: "노드를 선택하여 상세 정보 확인",
back: "뒤로",
focus: "포커스",
unfocus: "포커스 해제",
openCode: "코드 열기",
file: "파일",
tags: "태그",
connections: "연결",
filter: "필터",
resetAll: "모두 재설정",
analyzed: "분석 시간",
startGuidedTour: "가이드 투어 시작",
truncated: "(생략)",
preview: "미리보기",
doubleClickToOpen: "두 번 클릭하여 열기",
appName: "Understand Anything",
pressKeyboard: "? 키를 눌러 키보드 단축키 보기",
path: "경로",
theme: "테마",
},
projectOverview: {
nodes: "노드",
edges: "엣지",
layers: "레이어",
types: "타입",
fileTypes: "파일 타입",
code: "코드",
config: "설정",
docs: "문서",
infra: "인프라",
data: "데이터",
domain: "도메인",
knowledge: "지식",
languages: "프로그래밍 언어",
frameworks: "프레임워크",
nodeTypeDistribution: "노드 타입 분포",
complexityDistribution: "복잡도 분포",
simple: "단순",
moderate: "중간",
complex: "복잡",
mostConnectedNodes: "가장 많이 연결된 노드",
avgConnectionsPerNode: "노드 평균 연결 수",
},
nodeInfo: {
definedInThisFile: "이 파일에 정義",
languageConcepts: "언어 개념",
category: "카테고리",
wikilinks: "Wikilinks",
backlinks: "Backlinks",
entities: "엔티티",
businessRules: "비즈니스 규칙",
crossDomain: "크로스 도메인",
flows: "플로우",
entryPoint: "진입점",
steps: "단계",
implementation: "구현",
},
fileExplorer: {
analyzedFiles: "분석된 파일",
filesFromGraph: "현재 지식 그래프의 파일",
noFilePathsFound: "파일 경로를 찾을 수 없습니다.",
},
filterPanel: {
nodeTypes: "노드 타입",
complexity: "복잡도",
layers: "레이어",
edgeCategories: "엣지 카테고리",
},
personaSelector: {
overview: "개요",
overviewDesc: "고수준 아키텍처 뷰",
learn: "학습",
learnDesc: "가이드 학습 포함 완전 대시보드",
deepDive: "심층",
deepDiveDesc: "코드 중심 채팅",
},
sidebar: {
info: "정보",
files: "파일",
},
mobile: {
graph: "그래프",
info: "정보",
files: "파일",
},
drawer: {
controls: "컨트롤",
dashboard: "대시보드",
role: "역할",
view: "보기",
diffOverlay: "차분 오버레이",
nodeTypes: "노드 타입",
layers: "레이어",
tools: "도구",
path: "경로",
help: "도움말",
structural: "구조",
domain: "도메인",
},
domainView: {
backToDomains: "도메인으로 돌아가기",
},
detailLevel: {
filesTitle: "파일만 — 아키텍처 레벨 의존성 (빠름)",
classesTitle: "파일 + 클래스 — 상속 포함 코드 구조",
files: "파일",
classes: "+클래스",
fnTitle: "함수 노드 토글 (렌더링 속도 저하 가능)",
fn: "fn",
},
nodeTypeLabels: {
all: "모두",
code: "코드",
config: "설정",
docs: "문서",
infra: "인프라",
data: "데이터",
domain: "도메인",
knowledge: "지식",
},
tokenGate: {
validating: "검증 중...",
continue: "계속",
},
diffToggle: {
hideOverlay: "차분 오버레이 숨기기",
showOverlay: "차분 오버레이 표시",
noData: "차분 데이터가 로드되지 않음",
changed: "변경됨",
affected: "영향받음",
},
learnPanel: {
finish: "완료",
next: "다음",
prev: "이전",
noTour: "투어 없음",
noTourHint: "지식 그래프에서 투어를 생성하여 코드베이스의 가이드 워크스루를 얻으세요",
projectTour: "프로젝트 투어",
steps: "단계",
stepsTitle: "단계",
guidedWalkthrough: "코드베이스 가이드 워크스루",
startTour: "투어 시작",
tour: "투어",
exitTour: "투어 종료",
},
layer: {
defaultName: "레이어",
label: "레이어",
},
breadcrumb: {
projectOverview: "프로젝트 개요",
project: "프로젝트",
escBack: "Esc로 돌아가기",
},
warningBanner: {
dropped: "삭제됨",
fatal: "치명적",
},
themePicker: {
changeTheme: "테마 변경",
theme: "테마",
accentColor: "강조색",
headingFont: "제목 폰트",
serif: "세리프",
sans: "산스",
mono: "모노",
},
codeViewer: {
fullFile: "전체 파일",
lines: "행",
linesLabel: "행",
noFile: "파일 선택 안 됨",
loading: "소스 로딩 중...",
openLarger: "더 큰 코드 뷰어 열기",
closeExpanded: "확장된 코드 뷰어 닫기",
closeViewer: "코드 뷰어 닫기",
sourceUnavailable: "소스 사용 불가",
},
customNode: {
tested: "테스트됨",
hasTests: "테스트 있음",
},
ariaLabels: {
openMenu: "메뉴 열기",
closeMenu: "메뉴 닫기",
settings: "설정",
hideSearch: "검색 숨기기",
showSearch: "검색 표시",
},
nodeTypeFilter: {
hide: "숨기기",
show: "표시",
nodesLabel: "노드",
},
keyboardShortcuts: {
showHelp: "키보드 단축키 표시",
general: "일반",
navigation: "탐색",
tour: "투어",
view: "보기",
focusSearch: "검색창 포커스",
nextStep: "다음 투어 단계",
prevStep: "이전 투어 단계",
toggleDiff: "차분 모드 전환",
toggleFilter: "필터 패널 전환",
toggleExport: "내보내기 메뉴 전환",
openPathFinder: "경로 찾기 열기",
title: "키보드 단축키",
toggleHint: "언제든 ?를 눌러 이 도움말을 토글",
closeHint: "ESC를 눌러 닫기",
escapeDesc: "패널 및 모달 닫기 / 개요로 돌아가기",
},
search: {
placeholder: "노드 이름, 요약, 태그로 검색...",
fuzzy: "퍼지",
semantic: "시맨틱",
result: "결과",
},
export: {
label: "내보내기",
title: "그래프 내보내기 (E)",
asPNG: "PNG로 내보내기",
asSVG: "SVG로 내보내기",
asJSON: "JSON으로 내보내기",
},
edgeLabels: {
imports: { forward: "임포트", backward: "임포트됨" },
exports: { forward: "내보내기", backward: "내보내기됨" },
contains: { forward: "포함", backward: "포함됨" },
inherits: { forward: "상속", backward: "상속됨" },
implements: { forward: "구현", backward: "구현됨" },
calls: { forward: "호출", backward: "호출됨" },
subscribes: { forward: "구독", backward: "구독됨" },
publishes: { forward: "게시", backward: "소비됨" },
middleware: { forward: "미들웨어", backward: "미들웨어 사용" },
reads_from: { forward: "읽기", backward: "읽기됨" },
writes_to: { forward: "쓰기", backward: "쓰기됨" },
transforms: { forward: "변환", backward: "변환됨" },
validates: { forward: "검증", backward: "검증됨" },
depends_on: { forward: "종속", backward: "종속됨" },
tested_by: { forward: "테스트됨", backward: "테스트" },
configures: { forward: "설정", backward: "설정됨" },
related: { forward: "관련", backward: "관련" },
similar_to: { forward: "유사", backward: "유사" },
deploys: { forward: "배포", backward: "배포됨" },
serves: { forward: "서비스", backward: "서비스됨" },
migrates: { forward: "마이그레이션", backward: "마이그레이션됨" },
documents: { forward: "문서화", backward: "문서화됨" },
provisions: { forward: "제공", backward: "제공됨" },
routes: { forward: "라우팅", backward: "라우팅됨" },
defines_schema: { forward: "스키마 정의", backward: "스키마 정의됨" },
triggers: { forward: "트리거", backward: "트리거됨" },
contains_flow: { forward: "플로우 포함", backward: "플로우 내" },
flow_step: { forward: "플로우 단계", backward: "단계의" },
cross_domain: { forward: "크로스 도메인", backward: "크로스 도메인에서" },
cites: { forward: "인용", backward: "인용됨" },
contradicts: { forward: "반박", backward: "반박됨" },
builds_on: { forward: "기반", backward: "기반됨" },
exemplifies: { forward: "예시", backward: "예시됨" },
categorized_under: { forward: "카테고리화", backward: "카테고리화함" },
authored_by: { forward: "작성자", backward: "작성" },
},
pathFinder: {
title: "노드 간 경로 찾기 (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · 시작하기",
skipForever: "다시 보지 않기",
prev: "이전",
next: "다음",
finish: "탐색 시작",
steps: [
{
title: "지식 그래프에 오신 것을 환영합니다",
body: "보이는 점과 선은 Understand-Anything이 이 프로젝트에서 추출한 엔티티와 관계입니다. 노드는 코드 쪽의 파일·클래스·함수일 수도 있고, 지식 위키 쪽의 개념·엔티티·진술일 수도 있습니다.",
hint: "5단계로 핵심 조작을 살펴봅니다",
},
{
title: "상단의 세 가지 뷰",
body: "Overview는 전체 모습(포스 디렉티드), Learn은 미리 정의된 학습 경로, Deep Dive는 타입 / 복잡도 통계를 보여줍니다. 각 뷰는 서로 다른 질문에 답합니다.",
hint: "전환하기 전에 무엇을 묻고 싶은지 정하세요",
},
{
title: "검색 + 노드 클릭",
body: "상단 검색창은 노드 이름 / summary / 태그를 퍼지 매칭합니다. 노드를 클릭하면 오른쪽 패널에 summary, 이웃 목록, Open Article 버튼이 나타납니다.",
hint: "검색은 노드를 중앙 정렬·강조하고, 클릭은 인접 엣지를 강조합니다",
},
{
title: "Layer 전환 + Project Tour",
body: "상단 All 옆의 layer 탭은 index.md를 기반으로 한 카테고리만 표시합니다. 오른쪽의 Project Tour는 편집자가 설정한 순서대로 안내합니다.",
hint: "노드가 너무 빽빽하면 Layer, 시작점이 없으면 Tour를 사용하세요",
},
{
title: "숨겨진 추가 기능",
body: "상단 바에는 Filter(타입 / 복잡도로 필터링), Export(그래프 내보내기), Path(두 노드 사이 경로 찾기), Theme(테마 전환)도 있습니다. Shift + ?를 누르면 전체 키보드 단축키를 볼 수 있습니다.",
hint: "필요할 때 펼쳐 보면 됩니다. 한 번에 다 외울 필요는 없습니다",
},
],
},
};
export default ko;

View File

@@ -0,0 +1,306 @@
export const ru = {
common: {
loading: "Загрузка проекта...",
noGraphLoaded: "Граф знаний не загружен",
selectNode: "Выберите узел, чтобы увидеть подробности",
back: "Назад",
focus: "Фокус",
unfocus: "Снять фокус",
openCode: "Открыть код",
file: "Файл",
tags: "Теги",
connections: "Связи",
filter: "Фильтр",
resetAll: "Сбросить всё",
analyzed: "Проанализировано",
startGuidedTour: "Начать обзор",
truncated: "(сокращено)",
preview: "Предпросмотр",
doubleClickToOpen: "двойной клик, чтобы открыть",
appName: "Understand Anything",
pressKeyboard: "Нажмите ? для горячих клавиш",
path: "Путь",
theme: "Тема",
},
projectOverview: {
nodes: "Узлы",
edges: "Рёбра",
layers: "Слои",
types: "Типы",
fileTypes: "Типы файлов",
code: "Код",
config: "Конфиг",
docs: "Документация",
infra: "Инфраструктура",
data: "Данные",
domain: "Домен",
knowledge: "Знания",
languages: "Языки",
frameworks: "Фреймворки",
nodeTypeDistribution: "Распределение типов узлов",
complexityDistribution: "Распределение сложности",
simple: "Простой",
moderate: "Средний",
complex: "Сложный",
mostConnectedNodes: "Самые связанные узлы",
avgConnectionsPerNode: "Среднее число связей на узел",
},
nodeInfo: {
definedInThisFile: "Определено в этом файле",
languageConcepts: "Концепции языка",
category: "Категория",
wikilinks: "Wiki-ссылки",
backlinks: "Обратные ссылки",
entities: "Сущности",
businessRules: "Бизнес-правила",
crossDomain: "Междоменные связи",
flows: "Потоки",
entryPoint: "Точка входа",
steps: "Шаги",
implementation: "Реализация",
},
fileExplorer: {
analyzedFiles: "Проанализированные файлы",
filesFromGraph: "файлы из текущего графа знаний",
noFilePathsFound: "Пути файлов не найдены.",
},
filterPanel: {
nodeTypes: "Типы узлов",
complexity: "Сложность",
layers: "Слои",
edgeCategories: "Категории рёбер",
},
personaSelector: {
overview: "Обзор",
overviewDesc: "Высокоуровневый архитектурный вид",
learn: "Обучение",
learnDesc: "Полная панель с пошаговым обучением",
deepDive: "Погружение",
deepDiveDesc: "Фокус на коде с чатом",
},
sidebar: {
info: "Информация",
files: "Файлы",
},
mobile: {
graph: "Граф",
info: "Информация",
files: "Файлы",
},
drawer: {
controls: "Управление",
dashboard: "Панель",
role: "Роль",
view: "Вид",
diffOverlay: "Наложение изменений",
nodeTypes: "Типы узлов",
layers: "Слои",
tools: "Инструменты",
path: "Путь",
help: "Помощь",
structural: "Структура",
domain: "Домен",
},
domainView: {
backToDomains: "Назад к доменам",
},
detailLevel: {
filesTitle: "Только файлы — зависимости архитектурного уровня (быстро)",
classesTitle: "Файлы + классы — структура кода с наследованием",
files: "Файлы",
classes: "+Классы",
fnTitle: "Переключить узлы функций (может замедлить отрисовку)",
fn: "fn",
},
nodeTypeLabels: {
all: "Все",
code: "Код",
config: "Конфиг",
docs: "Документация",
infra: "Инфраструктура",
data: "Данные",
domain: "Домен",
knowledge: "Знания",
},
tokenGate: {
validating: "Проверка...",
continue: "Продолжить",
},
diffToggle: {
hideOverlay: "Скрыть наложение изменений",
showOverlay: "Показать наложение изменений",
noData: "Данные об изменениях не загружены",
changed: "Изменено",
affected: "Затронуто",
},
learnPanel: {
finish: "Завершить",
next: "Далее",
prev: "Назад",
noTour: "Обзор недоступен",
noTourHint: "Сгенерируйте обзор из графа знаний, чтобы получить пошаговое руководство по кодовой базе",
projectTour: "Обзор проекта",
steps: "шагов",
stepsTitle: "Шаги",
guidedWalkthrough: "Пошаговое знакомство с кодовой базой",
startTour: "Начать обзор",
tour: "Обзор",
exitTour: "Завершить обзор",
},
layer: {
defaultName: "Слой",
label: "слои",
},
breadcrumb: {
projectOverview: "Обзор проекта",
project: "Проект",
escBack: "Esc — назад",
},
warningBanner: {
dropped: "Отброшено",
fatal: "Критично",
},
themePicker: {
changeTheme: "Сменить тему",
theme: "Тема",
accentColor: "Акцентный цвет",
headingFont: "Шрифт заголовков",
serif: "Серифный",
sans: "Без засечек",
mono: "Моноширинный",
},
codeViewer: {
fullFile: "Весь файл",
lines: "Строки",
linesLabel: "строк",
noFile: "Файл не выбран",
loading: "Загрузка исходного кода...",
openLarger: "Открыть увеличенный просмотрщик кода",
closeExpanded: "Закрыть расширенный просмотрщик кода",
closeViewer: "Закрыть просмотрщик кода",
sourceUnavailable: "Исходный код недоступен",
},
customNode: {
tested: "Покрыт тестами",
hasTests: "Есть тесты",
},
ariaLabels: {
openMenu: "Открыть меню",
closeMenu: "Закрыть меню",
settings: "Настройки",
hideSearch: "Скрыть поиск",
showSearch: "Показать поиск",
},
nodeTypeFilter: {
hide: "Скрыть",
show: "Показать",
nodesLabel: "узлов",
},
keyboardShortcuts: {
showHelp: "Показать горячие клавиши",
general: "Общие",
navigation: "Навигация",
tour: "Обзор",
view: "Вид",
focusSearch: "Перейти к строке поиска",
nextStep: "Следующий шаг обзора",
prevStep: "Предыдущий шаг обзора",
toggleDiff: "Переключить режим изменений",
toggleFilter: "Переключить панель фильтров",
toggleExport: "Переключить меню экспорта",
openPathFinder: "Открыть поиск пути",
title: "Горячие клавиши",
toggleHint: "Нажмите ?, чтобы открыть или закрыть эту справку",
closeHint: "Нажмите ESC, чтобы закрыть",
escapeDesc: "Закрыть панели и модальные окна / вернуться к обзору",
},
search: {
placeholder: "Поиск узлов по имени, описанию или тегам...",
fuzzy: "Нечёткий",
semantic: "Семантический",
result: "результат",
},
export: {
label: "Экспорт",
title: "Экспортировать граф (E)",
asPNG: "Экспортировать как PNG",
asSVG: "Экспортировать как SVG",
asJSON: "Экспортировать как JSON",
},
edgeLabels: {
imports: { forward: "импортирует", backward: "импортируется" },
exports: { forward: "экспортирует в", backward: "экспортируется" },
contains: { forward: "содержит", backward: "содержится в" },
inherits: { forward: "наследует от", backward: "наследуется" },
implements: { forward: "реализует", backward: "реализуется" },
calls: { forward: "вызывает", backward: "вызывается" },
subscribes: { forward: "подписывается на", backward: "подписан" },
publishes: { forward: "публикует в", backward: "получает события" },
middleware: { forward: "middleware для", backward: "использует middleware" },
reads_from: { forward: "читает из", backward: "читается" },
writes_to: { forward: "пишет в", backward: "записывается" },
transforms: { forward: "преобразует", backward: "преобразуется" },
validates: { forward: "валидирует", backward: "валидируется" },
depends_on: { forward: "зависит от", backward: "является зависимостью" },
tested_by: { forward: "тестируется", backward: "тестирует" },
configures: { forward: "конфигурирует", backward: "конфигурируется" },
related: { forward: "связан с", backward: "связан с" },
similar_to: { forward: "похож на", backward: "похож на" },
deploys: { forward: "разворачивает", backward: "разворачивается" },
serves: { forward: "обслуживает", backward: "обслуживается" },
migrates: { forward: "мигрирует", backward: "мигрируется" },
documents: { forward: "документирует", backward: "документируется" },
provisions: { forward: "обеспечивает", backward: "обеспечивается" },
routes: { forward: "маршрутизирует в", backward: "маршрутизируется из" },
defines_schema: { forward: "определяет схему для", backward: "схема определена" },
triggers: { forward: "запускает", backward: "запускается" },
contains_flow: { forward: "содержит поток", backward: "поток в" },
flow_step: { forward: "шаг потока", backward: "шаг" },
cross_domain: { forward: "междоменно к", backward: "междоменно из" },
cites: { forward: "цитирует", backward: "цитируется" },
contradicts: { forward: "противоречит", backward: "опровергается" },
builds_on: { forward: "основан на", backward: "основа для" },
exemplifies: { forward: "иллюстрирует", backward: "иллюстрируется" },
categorized_under: { forward: "относится к", backward: "категоризирует" },
authored_by: { forward: "автор", backward: "автор" },
},
pathFinder: {
title: "Найти путь между узлами (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · НАЧАЛО РАБОТЫ",
skipForever: "Больше не показывать",
prev: "Назад",
next: "Далее",
finish: "Начать исследование",
steps: [
{
title: "Добро пожаловать в граф знаний",
body: "Точки и линии — это сущности и связи, извлечённые Understand-Anything из этого проекта. Узлом может быть файл, класс или функция из кода — либо концепция, сущность или утверждение из вики знаний.",
hint: "Пять шагов охватят основные операции",
},
{
title: "Три вида сверху",
body: "Overview показывает общую картину (force-directed). Learn ведёт по заранее заданному учебному пути. Deep Dive показывает статистику по типам и сложности. Каждый вид отвечает на свой вопрос.",
hint: "Перед переключением определитесь, о чём вы спрашиваете",
},
{
title: "Поиск + клик по узлу",
body: "Поисковая строка сверху делает нечёткое совпадение по имени узла, summary и тегам. Кликните по узлу — справа откроется панель с summary, соседями и кнопкой Open Article.",
hint: "Поиск центрирует и подсвечивает; клик подсвечивает соседние рёбра",
},
{
title: "Переключение Layer + Project Tour",
body: "Вкладки layer рядом с All фильтруют граф по одной категории на основе index.md. Project Tour справа проводит вас по заранее заданной последовательности.",
hint: "Используйте Layer, когда узлов слишком много; запустите Tour, если непонятно с чего начать",
},
{
title: "Другие скрытые возможности",
body: "В верхней панели также есть Filter (фильтр по типу / сложности), Export (экспорт графа), Path (поиск пути между двумя узлами) и Theme (смена темы). Нажмите Shift + ?, чтобы увидеть полный список горячих клавиш.",
hint: "Открывайте их по мере необходимости — не нужно запоминать всё сразу",
},
],
},
};
export default ru;

View File

@@ -0,0 +1,306 @@
export const zhTW = {
common: {
loading: "載入專案...",
noGraphLoaded: "未載入知識圖谱",
selectNode: "選擇節點查看詳情",
back: "返回",
focus: "聚焦",
unfocus: "取消聚焦",
openCode: "開啟程式碼",
file: "檔案",
tags: "標籤",
connections: "連結",
filter: "篩選",
resetAll: "重置全部",
analyzed: "分析時間",
startGuidedTour: "開始導覽",
truncated: "(已截斷)",
preview: "預覽",
doubleClickToOpen: "雙擊開啟",
appName: "Understand Anything",
pressKeyboard: "按 ? 查看鍵盤快捷鍵",
path: "路徑",
theme: "主題",
},
projectOverview: {
nodes: "節點",
edges: "邊",
layers: "層級",
types: "類型",
fileTypes: "檔案類型",
code: "程式碼",
config: "配置",
docs: "文件",
infra: "基礎設施",
data: "資料",
domain: "領域",
knowledge: "知識",
languages: "程式語言",
frameworks: "框架",
nodeTypeDistribution: "節點類型分布",
complexityDistribution: "複雜度分布",
simple: "簡單",
moderate: "中等",
complex: "複雜",
mostConnectedNodes: "連結最多的節點",
avgConnectionsPerNode: "節點平均連結數",
},
nodeInfo: {
definedInThisFile: "在此檔案中定義",
languageConcepts: "語言概念",
category: "分類",
wikilinks: "維基連結",
backlinks: "反向連結",
entities: "實體",
businessRules: "業務規則",
crossDomain: "跨領域",
flows: "流程",
entryPoint: "入口點",
steps: "步驟",
implementation: "實作",
},
fileExplorer: {
analyzedFiles: "已分析檔案",
filesFromGraph: "來自目前知識圖谱的檔案",
noFilePathsFound: "未找到檔案路徑。",
},
filterPanel: {
nodeTypes: "節點類型",
complexity: "複雜度",
layers: "層級",
edgeCategories: "邊類別",
},
personaSelector: {
overview: "概覽",
overviewDesc: "高層次架構視圖",
learn: "學習",
learnDesc: "完整儀表板與導覽學習",
deepDive: "深入",
deepDiveDesc: "程式碼聚焦與對話",
},
sidebar: {
info: "資訊",
files: "檔案",
},
mobile: {
graph: "圖谱",
info: "資訊",
files: "檔案",
},
drawer: {
controls: "控制",
dashboard: "儀表板",
role: "角色",
view: "視圖",
diffOverlay: "差異覆蓋",
nodeTypes: "節點類型",
layers: "層級",
tools: "工具",
path: "路徑",
help: "幫助",
structural: "結構",
domain: "領域",
},
domainView: {
backToDomains: "返回領域列表",
},
detailLevel: {
filesTitle: "僅檔案 — 架構級依賴(快速)",
classesTitle: "檔案 + 類別 — 程式碼結構及繼承關係",
files: "檔案",
classes: "+類別",
fnTitle: "切換函數節點(可能降低渲染速度)",
fn: "函數",
},
nodeTypeLabels: {
all: "全部",
code: "程式碼",
config: "配置",
docs: "文件",
infra: "基礎設施",
data: "資料",
domain: "領域",
knowledge: "知識",
},
tokenGate: {
validating: "驗證中...",
continue: "繼續",
},
diffToggle: {
hideOverlay: "隱藏差異覆蓋",
showOverlay: "顯示差異覆蓋",
noData: "未載入差異資料",
changed: "已修改",
affected: "受影響",
},
learnPanel: {
finish: "完成",
next: "下一步",
prev: "上一步",
noTour: "無導覽可用",
noTourHint: "從知識圖谱生成導覽以獲取程式碼庫的引導式講解",
projectTour: "專案導覽",
steps: "步",
stepsTitle: "步驟",
guidedWalkthrough: "程式碼庫引導式講解",
startTour: "開始導覽",
tour: "導覽",
exitTour: "退出導覽",
},
layer: {
defaultName: "層級",
label: "層",
},
breadcrumb: {
projectOverview: "專案概覽",
project: "專案",
escBack: "按 Esc 返回",
},
warningBanner: {
dropped: "已捨棄",
fatal: "致命錯誤",
},
themePicker: {
changeTheme: "變更主題",
theme: "主題",
accentColor: "強調色",
headingFont: "標題字型",
serif: "襯線",
sans: "無襯線",
mono: "等寬",
},
codeViewer: {
fullFile: "完整檔案",
lines: "行",
linesLabel: "行",
noFile: "未選擇檔案",
loading: "載入原始碼中...",
openLarger: "開啟更大的程式碼檢視器",
closeExpanded: "關閉展開的程式碼檢視器",
closeViewer: "關閉程式碼檢視器",
sourceUnavailable: "原始碼不可用",
},
customNode: {
tested: "已測試",
hasTests: "有測試",
},
ariaLabels: {
openMenu: "開啟選單",
closeMenu: "關閉選單",
settings: "設定",
hideSearch: "隱藏搜尋",
showSearch: "顯示搜尋",
},
nodeTypeFilter: {
hide: "隱藏",
show: "顯示",
nodesLabel: "節點",
},
keyboardShortcuts: {
showHelp: "顯示鍵盤快捷鍵",
general: "一般",
navigation: "導航",
tour: "導覽",
view: "檢視",
focusSearch: "聚焦搜尋列",
nextStep: "下一步導覽",
prevStep: "上一步導覽",
toggleDiff: "切換差異模式",
toggleFilter: "切換篩選面板",
toggleExport: "切換匯出選單",
openPathFinder: "開啟路徑尋找器",
title: "鍵盤快捷鍵",
toggleHint: "按 ? 隨時切換此幫助",
closeHint: "按 ESC 關閉",
escapeDesc: "關閉面板和彈窗 / 返回概覽",
},
search: {
placeholder: "搜尋節點名稱、摘要或標籤...",
fuzzy: "模糊",
semantic: "語意",
result: "結果",
},
export: {
label: "匯出",
title: "匯出圖谱 (E)",
asPNG: "匯出為 PNG",
asSVG: "匯出為 SVG",
asJSON: "匯出為 JSON",
},
edgeLabels: {
imports: { forward: "導入", backward: "被導入" },
exports: { forward: "導出到", backward: "被導出" },
contains: { forward: "包含", backward: "被包含" },
inherits: { forward: "繼承自", backward: "被繼承" },
implements: { forward: "實作", backward: "被實作" },
calls: { forward: "呼叫", backward: "被呼叫" },
subscribes: { forward: "訂閱", backward: "被訂閱" },
publishes: { forward: "發布到", backward: "被消費" },
middleware: { forward: "中介軟體", backward: "使用中介軟體" },
reads_from: { forward: "讀取", backward: "被讀取" },
writes_to: { forward: "寫入", backward: "被寫入" },
transforms: { forward: "轉換", backward: "被轉換" },
validates: { forward: "驗證", backward: "被驗證" },
depends_on: { forward: "依賴", backward: "被依賴" },
tested_by: { forward: "被測試", backward: "測試" },
configures: { forward: "配置", backward: "被配置" },
related: { forward: "相關", backward: "相關" },
similar_to: { forward: "相似", backward: "相似" },
deploys: { forward: "部署", backward: "被部署" },
serves: { forward: "服務", backward: "被服務" },
migrates: { forward: "遷移", backward: "被遷移" },
documents: { forward: "文件化", backward: "被文件化" },
provisions: { forward: "提供", backward: "被提供" },
routes: { forward: "路由到", backward: "被路由" },
defines_schema: { forward: "定義架構", backward: "架構被定義" },
triggers: { forward: "觸發", backward: "被觸發" },
contains_flow: { forward: "包含流程", backward: "流程所在" },
flow_step: { forward: "流程步驟", backward: "步驟所属" },
cross_domain: { forward: "跨領域到", backward: "跨領域来自" },
cites: { forward: "引用", backward: "被引用" },
contradicts: { forward: "反駁", backward: "被反駁" },
builds_on: { forward: "基於", backward: "作為基礎" },
exemplifies: { forward: "例證", backward: "被例證" },
categorized_under: { forward: "归类於", backward: "归类" },
authored_by: { forward: "作者", backward: "著作" },
},
pathFinder: {
title: "尋找節點間路徑 (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · 入門",
skipForever: "不再顯示",
prev: "上一步",
next: "下一步",
finish: "開始探索",
steps: [
{
title: "歡迎進入知識圖",
body: "你看到的圓點和連線是 Understand-Anything 把這份專案抽出來的實體和關係。節點可以是程式碼裡的檔案、類別、函式,也可以是知識 wiki 裡的概念、實體或斷言。",
hint: "5 步以內帶你過完核心操作",
},
{
title: "頂部三個視圖",
body: "Overview 看全貌(力導向圖)· Learn 跟隨預設學習路徑 · Deep Dive 看類型 / 複雜度統計。每個視圖回答一種不同的問法。",
hint: "切視圖前先想清楚自己在問什麼",
},
{
title: "搜尋 + 點節點",
body: "頂部搜尋框模糊匹配節點名 / summary / tags。點任意節點 → 右側詳情面板出現 summary + 鄰居列表 + Open Article 按鈕。",
hint: "搜尋高亮置中,點節點高亮鄰居邊",
},
{
title: "Layer 切換 + Tour",
body: "頂部 All 旁邊的 layer 標籤按 index.md 分類只顯示部分節點。右側 Project Tour 自動按編輯者預設順序導覽。",
hint: "節點太密看不清就用 Layer沒頭緒就啟 Tour",
},
{
title: "更多隱藏功能",
body: "頂欄還有 Filter按類型 / 複雜度過濾、Export匯出圖、Path找兩個節點之間的路徑、Theme切換主題。Shift + ? 看完整快捷鍵。",
hint: "需要時再展開,不要一次記完",
},
],
},
};
export default zhTW;

View File

@@ -0,0 +1,306 @@
export const zh = {
common: {
loading: "加载项目...",
noGraphLoaded: "未加载知识图谱",
selectNode: "选择节点查看详情",
back: "返回",
focus: "聚焦",
unfocus: "取消聚焦",
openCode: "打开代码",
file: "文件",
tags: "标签",
connections: "连接",
filter: "筛选",
resetAll: "重置全部",
analyzed: "分析时间",
startGuidedTour: "开始导览",
truncated: "(已截断)",
preview: "预览",
doubleClickToOpen: "双击打开",
appName: "Understand Anything",
pressKeyboard: "按 ? 查看键盘快捷键",
path: "路径",
theme: "主题",
},
projectOverview: {
nodes: "节点",
edges: "边",
layers: "层级",
types: "类型",
fileTypes: "文件类型",
code: "代码",
config: "配置",
docs: "文档",
infra: "基础设施",
data: "数据",
domain: "领域",
knowledge: "知识",
languages: "编程语言",
frameworks: "框架",
nodeTypeDistribution: "节点类型分布",
complexityDistribution: "复杂度分布",
simple: "简单",
moderate: "中等",
complex: "复杂",
mostConnectedNodes: "连接最多的节点",
avgConnectionsPerNode: "节点平均连接数",
},
nodeInfo: {
definedInThisFile: "在此文件中定义",
languageConcepts: "语言概念",
category: "分类",
wikilinks: "维基链接",
backlinks: "反向链接",
entities: "实体",
businessRules: "业务规则",
crossDomain: "跨领域",
flows: "流程",
entryPoint: "入口点",
steps: "步骤",
implementation: "实现",
},
fileExplorer: {
analyzedFiles: "已分析文件",
filesFromGraph: "来自当前知识图谱的文件",
noFilePathsFound: "未找到文件路径。",
},
filterPanel: {
nodeTypes: "节点类型",
complexity: "复杂度",
layers: "层级",
edgeCategories: "边类别",
},
personaSelector: {
overview: "概览",
overviewDesc: "高层次架构视图",
learn: "学习",
learnDesc: "完整仪表盘与导览学习",
deepDive: "深入",
deepDiveDesc: "代码聚焦与对话",
},
sidebar: {
info: "信息",
files: "文件",
},
mobile: {
graph: "图谱",
info: "信息",
files: "文件",
},
drawer: {
controls: "控制",
dashboard: "仪表盘",
role: "角色",
view: "视图",
diffOverlay: "差异覆盖",
nodeTypes: "节点类型",
layers: "层级",
tools: "工具",
path: "路径",
help: "帮助",
structural: "结构",
domain: "领域",
},
domainView: {
backToDomains: "返回领域列表",
},
detailLevel: {
filesTitle: "仅文件 — 架构级依赖(快速)",
classesTitle: "文件 + 类 — 代码结构及继承关系",
files: "文件",
classes: "+类",
fnTitle: "切换函数节点(可能降低渲染速度)",
fn: "函数",
},
nodeTypeLabels: {
all: "全部",
code: "代码",
config: "配置",
docs: "文档",
infra: "基础设施",
data: "数据",
domain: "领域",
knowledge: "知识",
},
tokenGate: {
validating: "验证中...",
continue: "继续",
},
diffToggle: {
hideOverlay: "隐藏差异覆盖",
showOverlay: "显示差异覆盖",
noData: "未加载差异数据",
changed: "已修改",
affected: "受影响",
},
learnPanel: {
finish: "完成",
next: "下一步",
prev: "上一步",
noTour: "无导览可用",
noTourHint: "从知识图谱生成导览以获取代码库的引导式讲解",
projectTour: "项目导览",
steps: "步",
stepsTitle: "步骤",
guidedWalkthrough: "代码库引导式讲解",
startTour: "开始导览",
tour: "导览",
exitTour: "退出导览",
},
layer: {
defaultName: "层级",
label: "层",
},
breadcrumb: {
projectOverview: "项目概览",
project: "项目",
escBack: "按 Esc 返回",
},
warningBanner: {
dropped: "已丢弃",
fatal: "致命错误",
},
themePicker: {
changeTheme: "更换主题",
theme: "主题",
accentColor: "强调色",
headingFont: "标题字体",
serif: "衬线",
sans: "无衬线",
mono: "等宽",
},
codeViewer: {
fullFile: "完整文件",
lines: "行",
linesLabel: "行",
noFile: "未选择文件",
loading: "加载源码中...",
openLarger: "打开更大的代码查看器",
closeExpanded: "关闭展开的代码查看器",
closeViewer: "关闭代码查看器",
sourceUnavailable: "源码不可用",
},
customNode: {
tested: "已测试",
hasTests: "有测试",
},
ariaLabels: {
openMenu: "打开菜单",
closeMenu: "关闭菜单",
settings: "设置",
hideSearch: "隐藏搜索",
showSearch: "显示搜索",
},
nodeTypeFilter: {
hide: "隐藏",
show: "显示",
nodesLabel: "节点",
},
keyboardShortcuts: {
showHelp: "显示键盘快捷键",
general: "通用",
navigation: "导航",
tour: "导览",
view: "视图",
focusSearch: "聚焦搜索栏",
nextStep: "下一步导览",
prevStep: "上一步导览",
toggleDiff: "切换差异模式",
toggleFilter: "切换筛选面板",
toggleExport: "切换导出菜单",
openPathFinder: "打开路径查找器",
title: "键盘快捷键",
toggleHint: "按 ? 随时切换此帮助",
closeHint: "按 ESC 关闭",
escapeDesc: "关闭面板和弹窗 / 返回概览",
},
search: {
placeholder: "搜索节点名称、摘要或标签...",
fuzzy: "模糊",
semantic: "语义",
result: "结果",
},
export: {
label: "导出",
title: "导出图谱 (E)",
asPNG: "导出为 PNG",
asSVG: "导出为 SVG",
asJSON: "导出为 JSON",
},
edgeLabels: {
imports: { forward: "导入", backward: "被导入" },
exports: { forward: "导出到", backward: "被导出" },
contains: { forward: "包含", backward: "被包含" },
inherits: { forward: "继承自", backward: "被继承" },
implements: { forward: "实现", backward: "被实现" },
calls: { forward: "调用", backward: "被调用" },
subscribes: { forward: "订阅", backward: "被订阅" },
publishes: { forward: "发布到", backward: "被消费" },
middleware: { forward: "中间件", backward: "使用中间件" },
reads_from: { forward: "读取", backward: "被读取" },
writes_to: { forward: "写入", backward: "被写入" },
transforms: { forward: "转换", backward: "被转换" },
validates: { forward: "验证", backward: "被验证" },
depends_on: { forward: "依赖", backward: "被依赖" },
tested_by: { forward: "被测试", backward: "测试" },
configures: { forward: "配置", backward: "被配置" },
related: { forward: "相关", backward: "相关" },
similar_to: { forward: "相似", backward: "相似" },
deploys: { forward: "部署", backward: "被部署" },
serves: { forward: "服务", backward: "被服务" },
migrates: { forward: "迁移", backward: "被迁移" },
documents: { forward: "文档化", backward: "被文档化" },
provisions: { forward: "提供", backward: "被提供" },
routes: { forward: "路由到", backward: "被路由" },
defines_schema: { forward: "定义架构", backward: "架构被定义" },
triggers: { forward: "触发", backward: "被触发" },
contains_flow: { forward: "包含流程", backward: "流程所在" },
flow_step: { forward: "流程步骤", backward: "步骤所属" },
cross_domain: { forward: "跨领域到", backward: "跨领域来自" },
cites: { forward: "引用", backward: "被引用" },
contradicts: { forward: "反驳", backward: "被反驳" },
builds_on: { forward: "基于", backward: "作为基础" },
exemplifies: { forward: "例证", backward: "被例证" },
categorized_under: { forward: "归类于", backward: "归类" },
authored_by: { forward: "作者", backward: "著作" },
},
pathFinder: {
title: "查找节点间路径 (P)",
},
onboarding: {
header: "UNDERSTAND-ANYTHING · 入门",
skipForever: "不再显示",
prev: "上一步",
next: "下一步",
finish: "开始探索",
steps: [
{
title: "欢迎进入知识图",
body: "你看到的圆点和连线是 Understand-Anything 把这份项目抽出来的实体和关系。节点可以是代码里的文件、类、函数,也可以是知识 wiki 里的概念、实体或断言。",
hint: "5 步以内带你过完核心操作",
},
{
title: "顶部三个视图",
body: "Overview 看全貌(力导向图)· Learn 跟随预设学习路径 · Deep Dive 看类型 / 复杂度统计。每个视图回答一种不同的问法。",
hint: "切视图前先想清楚自己在问什么",
},
{
title: "搜索 + 点节点",
body: "顶部搜索框模糊匹配节点名 / summary / tags。点任意节点 → 右侧详情面板出现 summary + 邻居列表 + Open Article 按钮。",
hint: "搜索高亮居中,点节点高亮邻居边",
},
{
title: "Layer 切换 + Tour",
body: "顶部 All 旁边的 layer 标签按 index.md 分类只显示部分节点。右侧 Project Tour 自动按编辑者预设顺序导览。",
hint: "节点太密看不清就用 Layer没头绪就启 Tour",
},
{
title: "更多隐藏功能",
body: "顶栏还有 Filter按类型 / 复杂度过滤、Export导出图、Path找两个节点之间的路径、Theme切换主题。Shift + ? 看完整快捷键。",
hint: "需要时再展开,不要一次记完",
},
],
},
};
export default zh;