feat: 实现知识库前端界面(英文国际化)

- 添加知识库 V2 完整英文翻译文件
- 包括:主页、文档管理、检索测试、全局设置、会话配置
- 在 Alkaid 导航中添加 "Native Knowledge Base" 入口
- 区分 "Native Knowledge Base" 和 "Knowledge Base (Plugin)"
This commit is contained in:
lxfight
2025-10-19 18:43:35 +08:00
parent 1266b4d086
commit c04738d9fe
8 changed files with 310 additions and 6 deletions
@@ -6,11 +6,13 @@
"title": "The Alkaid Project.",
"subtitle": "AstrBot Alpha Project",
"navigation": {
"knowledgeBase": "Knowledge Base",
"knowledgeBaseV2": "Native Knowledge Base",
"knowledgeBase": "Knowledge Base (Plugin)",
"longTermMemory": "Long-term Memory",
"other": "..."
}
},
"knowledgeBaseV2": "Native Knowledge Base",
"features": {
"knowledgeBase": "Knowledge Base",
"longTermMemory": "Long-term Memory",
@@ -0,0 +1,49 @@
{
"stats": {
"totalDocuments": "Total Documents",
"totalChunks": "Total Chunks",
"totalMedia": "Media Resources",
"totalSize": "Total Size"
},
"actions": {
"upload": "Upload Document",
"refresh": "Refresh",
"view": "View",
"delete": "Delete"
},
"empty": {
"noDocuments": "No documents yet. Click the upload button to add documents"
},
"upload": {
"title": "Upload Document",
"dropzone": "Drag and drop files here or click to upload",
"supportedFormats": "Supported formats: PDF, TXT, MD",
"selectedFiles": "Selected files:",
"cancel": "Cancel",
"upload": "Start Upload",
"uploading": "Uploading files..."
},
"detail": {
"fileType": "File Type",
"fileSize": "File Size",
"chunks": "Document Chunks",
"uploadedAt": "Upload Time",
"noChunks": "No document chunks",
"chunkIndex": "Chunk #{index}",
"characters": "characters"
},
"delete": {
"title": "Confirm Delete",
"confirmText": "Are you sure you want to delete document \"{name}\"?",
"cancel": "Cancel",
"delete": "Delete"
},
"messages": {
"loadError": "Failed to load document list",
"uploadSuccess": "Successfully uploaded {count} document(s)",
"uploadPartial": "Upload completed: {success} succeeded, {fail} failed",
"deleteSuccess": "Document deleted successfully",
"deleteFailed": "Delete failed",
"deleteError": "Error deleting document"
}
}
@@ -0,0 +1,74 @@
{
"list": {
"title": "Native Knowledge Base",
"subtitle": "AstrBot's built-in knowledge base management system",
"create": "Create Knowledge Base",
"sessionConfig": "Session Config",
"refresh": "Refresh",
"loading": "Loading...",
"documents": "documents",
"chunks": "chunks"
},
"empty": {
"title": "No Knowledge Bases Yet",
"subtitle": "Create your first knowledge base to get started",
"create": "Create Knowledge Base"
},
"createDialog": {
"title": "Create Knowledge Base",
"nameLabel": "Knowledge Base Name",
"namePlaceholder": "Enter knowledge base name",
"descriptionLabel": "Description",
"descriptionPlaceholder": "Brief description of the knowledge base...",
"embeddingModelLabel": "Embedding Model",
"rerankModelLabel": "Rerank Model",
"providerInfo": "Provider ID: {id} | Dimensions: {dimensions}",
"rerankProviderInfo": "Provider ID: {id}",
"tips": "Tip: Once you choose an embedding model, do not modify the provider's model or vector dimensions, as it will severely affect recall rate.",
"cancel": "Cancel",
"create": "Create"
},
"editDialog": {
"title": "Edit Knowledge Base",
"save": "Save"
},
"deleteDialog": {
"title": "Confirm Delete",
"confirmText": "Are you sure you want to delete knowledge base \"{name}\"?",
"warning": "This operation is irreversible. All knowledge base content will be permanently deleted.",
"cancel": "Cancel",
"delete": "Delete"
},
"detailDialog": {
"tabs": {
"documents": "Document Management",
"search": "Search Test",
"settings": "Knowledge Base Settings"
}
},
"emojiPicker": {
"title": "Select Emoji",
"close": "Close",
"categories": {
"books": "Books and Documents",
"emotions": "Emotions and Expressions",
"objects": "Objects and Tools",
"symbols": "Symbols and Marks"
}
},
"sessionConfig": {
"title": "Knowledge Base Session Configuration"
},
"messages": {
"loadFailed": "Failed to load knowledge base list",
"loadError": "Error loading knowledge base list",
"nameRequired": "Please enter knowledge base name",
"createSuccess": "Knowledge base created successfully",
"updateSuccess": "Knowledge base updated successfully",
"saveFailed": "Save failed",
"saveError": "Error saving",
"deleteSuccess": "Knowledge base deleted successfully",
"deleteFailed": "Delete failed",
"deleteError": "Error deleting"
}
}
@@ -0,0 +1,21 @@
{
"search": {
"queryLabel": "Search Query",
"queryPlaceholder": "Enter search query...",
"topKLabel": "Number of Results (Top-K)",
"enableRerankLabel": "Enable Reranking",
"search": "Search",
"searching": "Searching...",
"noResults": "No matching content found",
"resultsTitle": "Found {count} result(s)",
"searchTime": "Search time: {time}s",
"relevance": "Relevance",
"chunkInfo": "Chunk #{index} | {chars} characters"
},
"messages": {
"queryRequired": "Please enter search query",
"noResults": "No matching content found",
"searchFailed": "Search failed",
"searchError": "Error searching"
}
}
@@ -0,0 +1,68 @@
{
"info": {
"title": "What is Session Configuration?",
"description": "Session configuration allows you to specify which knowledge bases to use for different platforms or sessions, enabling personalized knowledge enhancement.",
"platformLevel": "Platform Level: Applies to the entire platform (e.g., all QQ sessions)",
"sessionLevel": "Session Level: Applies to specific sessions (e.g., specific QQ group)"
},
"list": {
"title": "Configuration List",
"refresh": "Refresh",
"add": "Add Configuration",
"noKB": "No knowledge bases configured"
},
"scope": {
"platform": "Platform Level",
"session": "Session Level"
},
"dialog": {
"addTitle": "Add Session Configuration",
"editTitle": "Edit Session Configuration",
"scopeLabel": "Configuration Scope",
"platformIdLabel": "Platform ID",
"platformIdPlaceholder": "e.g., qq, telegram, discord",
"platformIdHint": "Platform identifier, such as qq, telegram, etc.",
"sessionIdLabel": "Session ID",
"sessionIdPlaceholder": "e.g., qq:group:123456",
"sessionIdHint": "Session identifier, format: platform:type:ID",
"platformTooltip": "Applies to all sessions on the platform",
"sessionTooltip": "Applies only to the specified session",
"kbLabel": "Select Knowledge Base",
"kbPlaceholder": "Select one or more knowledge bases",
"kbHint": "You can select multiple knowledge bases; they will be searched together during retrieval",
"advancedSettings": "Advanced Settings (Optional)",
"topKLabel": "Number of Results (Top-K)",
"topKHint": "Number of results to return during retrieval",
"enableRerankLabel": "Enable Reranking",
"cancel": "Cancel",
"save": "Save"
},
"empty": {
"noConfigs": "No configurations yet. Click the add button to create your first configuration",
"createFirst": "Create First Configuration"
},
"delete": {
"title": "Confirm Delete",
"confirmText": "Are you sure you want to delete this configuration?",
"warning": "After deletion, the platform or session will no longer use the specified knowledge bases.",
"cancel": "Cancel",
"delete": "Delete"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
},
"messages": {
"loadFailed": "Failed to load configuration list",
"loadError": "Error loading configurations",
"scopeIdRequired": "Please enter platform ID or session ID",
"kbIdsRequired": "Please select at least one knowledge base",
"createSuccess": "Configuration created successfully",
"updateSuccess": "Configuration updated successfully",
"saveFailed": "Save failed",
"saveError": "Error saving configuration",
"deleteSuccess": "Configuration deleted successfully",
"deleteFailed": "Delete failed",
"deleteError": "Error deleting configuration"
}
}
@@ -0,0 +1,44 @@
{
"basic": {
"title": "Basic Information",
"nameLabel": "Knowledge Base Name",
"namePlaceholder": "Enter knowledge base name",
"descriptionLabel": "Description",
"descriptionPlaceholder": "Brief description of the knowledge base..."
},
"models": {
"title": "Model Configuration",
"embeddingLabel": "Embedding Model",
"embeddingHint": "Model for generating document vectors",
"rerankLabel": "Rerank Model",
"rerankHint": "Model for optimizing retrieval result ranking (optional)"
},
"chunking": {
"title": "Chunking Parameters",
"chunkSizeLabel": "Chunk Size",
"chunkSizeHint": "Number of characters per document chunk (50-2000)",
"chunkOverlapLabel": "Chunk Overlap",
"chunkOverlapHint": "Number of overlapping characters between adjacent chunks (0-half of chunk size)"
},
"retrieval": {
"title": "Retrieval Parameters",
"topKDenseLabel": "Dense Retrieval Top-K",
"topKDenseHint": "Number of results from vector retrieval",
"topKSparseLabel": "Sparse Retrieval Top-K",
"topKSparseHint": "Number of results from keyword retrieval",
"topMFinalLabel": "Final Results Top-M",
"topMFinalHint": "Number of final results after fusion",
"enableRerankLabel": "Enable Reranking"
},
"actions": {
"save": "Save Settings"
},
"messages": {
"nameRequired": "Please enter knowledge base name",
"embeddingRequired": "Please select embedding model",
"saveSuccess": "Settings saved successfully",
"saveFailed": "Save failed",
"saveError": "Error saving settings",
"loadProvidersError": "Failed to load model providers"
}
}
+26 -2
View File
@@ -25,6 +25,11 @@ import zhCNDashboard from './locales/zh-CN/features/dashboard.json';
import zhCNAlkaidIndex from './locales/zh-CN/features/alkaid/index.json';
import zhCNAlkaidKnowledgeBase from './locales/zh-CN/features/alkaid/knowledge-base.json';
import zhCNAlkaidMemory from './locales/zh-CN/features/alkaid/memory.json';
import zhCNAlkaidKBV2Index from './locales/zh-CN/features/alkaid/knowledge-base-v2/index.json';
import zhCNAlkaidKBV2Documents from './locales/zh-CN/features/alkaid/knowledge-base-v2/documents.json';
import zhCNAlkaidKBV2Search from './locales/zh-CN/features/alkaid/knowledge-base-v2/search.json';
import zhCNAlkaidKBV2Settings from './locales/zh-CN/features/alkaid/knowledge-base-v2/settings.json';
import zhCNAlkaidKBV2SessionConfig from './locales/zh-CN/features/alkaid/knowledge-base-v2/session-config.json';
import zhCNPersona from './locales/zh-CN/features/persona.json';
import zhCNMigration from './locales/zh-CN/features/migration.json';
@@ -56,6 +61,11 @@ import enUSDashboard from './locales/en-US/features/dashboard.json';
import enUSAlkaidIndex from './locales/en-US/features/alkaid/index.json';
import enUSAlkaidKnowledgeBase from './locales/en-US/features/alkaid/knowledge-base.json';
import enUSAlkaidMemory from './locales/en-US/features/alkaid/memory.json';
import enUSAlkaidKBV2Index from './locales/en-US/features/alkaid/knowledge-base-v2/index.json';
import enUSAlkaidKBV2Documents from './locales/en-US/features/alkaid/knowledge-base-v2/documents.json';
import enUSAlkaidKBV2Search from './locales/en-US/features/alkaid/knowledge-base-v2/search.json';
import enUSAlkaidKBV2Settings from './locales/en-US/features/alkaid/knowledge-base-v2/settings.json';
import enUSAlkaidKBV2SessionConfig from './locales/en-US/features/alkaid/knowledge-base-v2/session-config.json';
import enUSPersona from './locales/en-US/features/persona.json';
import enUSMigration from './locales/en-US/features/migration.json';
@@ -91,7 +101,14 @@ export const translations = {
alkaid: {
index: zhCNAlkaidIndex,
'knowledge-base': zhCNAlkaidKnowledgeBase,
memory: zhCNAlkaidMemory
memory: zhCNAlkaidMemory,
'knowledge-base-v2': {
index: zhCNAlkaidKBV2Index,
documents: zhCNAlkaidKBV2Documents,
search: zhCNAlkaidKBV2Search,
settings: zhCNAlkaidKBV2Settings,
'session-config': zhCNAlkaidKBV2SessionConfig
}
},
persona: zhCNPersona,
migration: zhCNMigration
@@ -128,7 +145,14 @@ export const translations = {
alkaid: {
index: enUSAlkaidIndex,
'knowledge-base': enUSAlkaidKnowledgeBase,
memory: enUSAlkaidMemory
memory: enUSAlkaidMemory,
'knowledge-base-v2': {
index: enUSAlkaidKBV2Index,
documents: enUSAlkaidKBV2Documents,
search: enUSAlkaidKBV2Search,
settings: enUSAlkaidKBV2Settings,
'session-config': enUSAlkaidKBV2SessionConfig
}
},
persona: enUSPersona,
migration: enUSMigration
+25 -3
View File
@@ -89,9 +89,31 @@ const MainRoutes = {
// ]
// },
{
name: 'KnowledgeBase',
path: '/alkaid/knowledge-base',
component: () => import('@/views/alkaid/KnowledgeBase.vue')
name: 'Alkaid',
path: '/alkaid',
component: () => import('@/views/AlkaidPage.vue'),
children: [
{
path: 'knowledge-base-v2',
name: 'KnowledgeBaseV2',
component: () => import('@/views/alkaid/knowledge-base-v2/KnowledgeBaseV2.vue')
},
{
path: 'knowledge-base',
name: 'KnowledgeBase',
component: () => import('@/views/alkaid/KnowledgeBase.vue')
},
{
path: 'long-term-memory',
name: 'LongTermMemory',
component: () => import('@/views/alkaid/LongTermMemory.vue')
},
{
path: 'other',
name: 'OtherFeatures',
component: () => import('@/views/alkaid/Other.vue')
}
]
},
{
name: 'Chat',