optimize: check en.ts

This commit is contained in:
zhaoying
2025-12-16 14:22:37 +08:00
parent 44ceee3f42
commit 9799ba510a
5 changed files with 76 additions and 101 deletions

View File

@@ -58,13 +58,13 @@ export const en = {
forgettingExecutionRate: 'Forgetting Execution Rate',
memoryClassificationDistribution: 'Memory classification distribution',
knowledgeBaseTypeDistribution: 'Distribution of knowledge base types',
memoryGrowthTrend: 'Memory growth trend',
knowledgeBaseTypeDistribution: 'Distribution of Knowledge Base Types',
memoryGrowthTrend: 'Memory Growth Trend',
corporateMemory: 'Corporate Memory',
recentMemoryActivities: 'Recent memory activities',
recentMemoryActivities: 'Recent Memory Activities',
apiCallTrend: 'API call trend',
quickOperation: 'Quick Operation',
popularMemoryTags: 'Popular memory tags',
popularMemoryTags: 'Popular Memory Tags',
title: 'Real-time Monitoring of Your AI Memory Core and Agent Status',
loading: 'Loading...',
@@ -116,7 +116,7 @@ export const en = {
statements_count_desc: 'Manage {{count}} knowledge statements',
triplet_count: 'Entity Relation Extraction',
triplet_count_desc: 'Build {{entities_count}} entity nodes and {{relations_count}} relation connections',
temporal_count: 'Time extraction',
temporal_count: 'Time Extraction',
temporal_count_desc: 'Record {{count}} time series information',
dialogue: 'Dialogue',
@@ -263,6 +263,7 @@ export const en = {
exportList: 'Export List',
selectPlaceholder: 'Please select {{title}}',
inputPlaceholder: 'Please enter {{title}}',
enterPlaceholder: 'Enter {{title}}',
saveSuccess: 'Save Success',
saveFailure: 'Save Failure',
pleaseSelect: 'Please select',
@@ -289,8 +290,8 @@ export const en = {
addOption: 'Add Option',
viewDetail: 'View Detail',
deleteSuccess: 'Delete successfully',
foldUp: 'Fold Up',
expanded: 'Expanded',
foldUp: 'Collapse',
expanded: 'Expand',
clickUploadIcon: 'click on the upload icon',
export: 'Export',
active: 'Active',
@@ -330,7 +331,7 @@ export const en = {
provider: 'Provider',
status: 'Status',
created: 'Created',
configureBtn: 'Click to Configure',
configureBtn: 'Run Configuration',
name: 'Name',
displayName: 'Display Name',
nameRequired: 'Please enter model name',
@@ -402,6 +403,17 @@ export const en = {
saveConfig: 'Save Config',
apiKeyName: 'API Key Name',
llm: 'LLM',
chat: 'Chat',
embedding: 'Embedding',
rerank: 'Rerank',
openai: "Openai",
dashscope: "Dashscope",
ollama: "Ollama",
xinference: "Xinference",
gpustack: "Gpustack",
bedrock: "Bedrock"
},
knowledgeBase: {
home: 'Home',
@@ -440,7 +452,7 @@ export const en = {
recallTestDescription:'Input test questions to evaluate the recall effectiveness and relevance of the knowledge base',
similarityThreshold: 'Similarity Threshold',
startTesting: 'Start Testing',
semanticSimilarity: 'Semantic similarity',
semanticSimilarity: 'Semantic Similarity',
recallResult: 'Result',
setting: 'Setting',
similarity: 'Similarity',
@@ -495,7 +507,7 @@ export const en = {
delete: 'Delete',
rechunking: 'Rechunking',
download: 'Download',
selectSource:'Please select the source',
selectSource:'Please select a source',
confirmDelete: 'Are you sure you want to delete this document?',
knowledgeBaseSettings: 'Knowledge Base Settings',
modelConfiguration: 'Model Configuration',
@@ -650,16 +662,14 @@ export const en = {
role: 'Role',
lastLoginTime: 'Last Login Time',
editMember: 'Edit Member',
createMember: 'Create Member',
createMember: 'Add Member',
email: 'Email',
inviteToMember: 'Invite to Member',
inviteToMember: 'Member Role',
member: 'Member',
memberDesc: 'Can only use the application, cannot create the application',
admin: 'Admin',
adminDesc: 'Can create applications and manage team settings',
sendInvitation: 'Send Invitation',
manager: 'Admin',
managerDesc: 'Can create applications and manage team settings',
managerDesc: 'Can access applications, but cannot create or manage them',
inviteLinkDesc: 'Invite link 【{{inviteLink}}】, please copy and send to the member',
inviteLinkTip: 'Please copy the invite link and send it to the user to complete the invitation',
},
@@ -739,7 +749,7 @@ export const en = {
currentModel: 'Current Model',
modelConfig: 'Model Config',
parameterConfig: 'Parameter Config',
parameterConfig: 'Parameter Configuration',
apply: 'Apply',
resetDefault: 'Reset Default',
@@ -783,7 +793,7 @@ export const en = {
promptConfiguration: 'Prompt Configuration',
configurationDesc: 'Define the role, capabilities, and behavioral guidelines of the Agent',
aiPrompt: 'AI Prompt',
promptPlaceholder: 'You are a professional AI assistant, and your responsibilities are ..',
promptPlaceholder: 'You are a professional AI assistant, and your responsibility is to help users solve problems.',
knowledgeBaseAssociation: 'Knowledge base association',
associatedKnowledgeBase: 'Associated Knowledge Base',
addKnowledgeBase: 'Add Knowledge Base',
@@ -896,7 +906,7 @@ export const en = {
frequency_penalty_desc: 'Frequency penalty',
presence_penalty: 'Presence Penalty',
presence_penalty_desc: 'Presence Penalty',
n: 'Number of replies generated (n)',
n: 'Number of Replies Generated (n)',
n_desc: 'Number of replies generated',
contains: 'Contains {{include_count}} documents',
@@ -909,7 +919,7 @@ export const en = {
versionNumber: 'Version Number',
versionNumberTip: 'Version number format: v[major version number].[next version number].[revision number] (e.g. v1.3.0)',
versionDescription: 'Version Description',
versionDescriptionTip: 'Suggest explaining the feature updates, bug fixes, and optimization items for this release',
versionDescriptionTip: 'Please describe the feature updates, bug fixes, and optimizations included in this release.',
releasePreview: 'Release Preview',
globalConfig: 'Global Config',
globalConfigDesc: 'The global configuration will be applied to all associated knowledge bases as the default configuration. The configuration of a single knowledge base will override the global configuration.',
@@ -995,7 +1005,7 @@ export const en = {
memoryInsight: 'Memory Insight',
relationshipNetwork: 'Relationship Network',
aboutMe: 'About Me',
foldUp: 'Fold Up',
foldUp: 'Collapse',
interestDistribution: 'Interest Distribution',
memoryDetails: 'Memory Details',
importantMomentsInLife: 'Important Moments in Life',
@@ -1006,7 +1016,7 @@ export const en = {
memoryDetailEmpty: 'Please select a memory node',
memoryDetailEmptyDesc: 'Click on any node in the above view to view detailed information',
totalNumOfMemories: 'Total number of memories',
totalNumOfMemories: 'Total Number of Memories',
footprintCity: 'Footprint City',
totalNumOfPhotos: 'Total number of photos',
importantRelationships: 'Important Relationships',
@@ -1016,7 +1026,7 @@ export const en = {
emotions: 'Emotions',
occupation: 'Occupation',
memories: 'memories',
expanded: 'Expanded',
expanded: 'Expand',
description: 'Description',
entityType: 'Entity Type',
conversationMemory: 'Conversation Storage Content',
@@ -1032,32 +1042,32 @@ export const en = {
associated: 'Associated',
notAssociated: 'Not Associated',
storageType: 'Storage Type',
rag: 'RAG storage',
rag: 'RAG Storage',
ragDesc: 'Based on vector retrieval, suitable for document Q&A and semantic search',
neo4j: 'Graph storage',
neo4j: 'Graph Storage',
neo4jDesc: 'Based on knowledge graph, suitable for relational reasoning and path query',
llmModel: 'LLM Model',
embeddingModel: 'Embedding Model',
rerankModel: 'Rerank Model'
},
memoryExtractionEngine: {
title: 'Memory Engine module configuration center',
title: 'Memory Engine Module Configuration Center',
subTitle: 'Configure the parameters of six core modules, and view in real-time the impact on the memory processing conclusions of the "sample memory text (insights from the technology conference)". Any parameter changes will be instantly reflected in the results area on the right.',
example: 'Example memory text',
storageLayerModule: 'Storage layer module',
example: 'Example Memory Text',
storageLayerModule: 'Storage Layer Module',
enableLlmDedupBlockwise: 'Entity de-duplication (LLM decision-making)',
enableLlmDisambiguation: 'Memory disambiguation function (LLM decision)',
tNameStrict: 'Name matching threshold',
tTypeStrict: 'Type matching threshold',
tOverall: 'Comprehensive matching threshold',
enableLlmDedupBlockwise: 'Entity De-duplication (LLM decision-making)',
enableLlmDisambiguation: 'Memory Disambiguation Function (LLM decision)',
tNameStrict: 'Name Matching Threshold',
tTypeStrict: 'Type Matching Threshold',
tOverall: 'Comprehensive Matching Threshold',
arrangementLayerModule: 'Arrangement layer module',
queryMode: 'Query mode',
arrangementLayerModule: 'Arrangement Layer Module',
queryMode: 'Query Mode',
queryModeSubTitle: 'Control whether to activate deeper search functions',
deepRetrieval: 'Deep Retrieval',
deepRetrievalMeaning: 'Control whether to initiate deep memory retrieval (true/false).',
dataPreprocessing: 'Data preprocessing',
dataPreprocessing: 'Data Preprocessing',
dataPreprocessingSubTitle: 'Through reflection and refinement, transform episodic memory into deeper semantic memory.',
entityDeduplicationModuleThreshold: 'Entity de-duplication - name matching threshold',
@@ -1066,14 +1076,14 @@ export const en = {
control: 'Control',
button: 'button',
inputNumber: 'progress value',
slider: 'progress value',
slider: 'Slider',
select: 'select',
location: 'Location',
CurrentValue: 'Current Value',
type: 'Type',
Meaning: 'Meaning',
exampleMemoryExtractionResults: 'Example memory extraction results',
exampleMemoryExtractionResults: 'Example Memory Extraction Results',
exampleMemoryExtractionResultsSubTitle: '(from a technology conference)',
extractTheNumberOfEntities: 'Extract the number of entities',
@@ -1103,26 +1113,26 @@ export const en = {
lateChunker: 'Late Chunker',
debug: 'Debug',
model: 'Model',
chunkerStrategy: 'Chunker strategy',
chunkerStrategy: 'Chunker Strategy',
chunkerStrategyDesc: 'Choose a partitioning strategy.',
intelligentSemanticPruning: 'Intelligent semantic pruning',
intelligentSemanticPruning: 'Intelligent Semantic Pruning',
intelligentSemanticPruningSubTitle: 'Whether to activate the intelligent semantic pruning function, select pruning scenarios, and set thresholds.',
intelligentSemanticPruningFunction: 'Intelligent semantic pruning function',
intelligentSemanticPruningFunction: 'Intelligent Semantic Pruning Function',
intelligentSemanticPruningFunctionDesc: 'Whether to activate intelligent semantic pruning (true/false).',
intelligentSemanticPruningScene: 'Intelligent semantic pruning scene',
intelligentSemanticPruningScene: 'Intelligent Semantic Pruning Scene',
intelligentSemanticPruningSceneDesc: 'Select intelligent semantic pruning scene (education, online_service, outbound).',
intelligentSemanticPruningThreshold: 'Intelligent semantic pruning threshold',
intelligentSemanticPruningThreshold: 'Intelligent Semantic Pruning Threshold',
intelligentSemanticPruningThresholdDesc: 'Set intelligent semantic pruning threshold (0-0.9).',
selfReflexionEngine: 'Self-reflexion engine',
selfReflexionEngine: 'Self-Reflexion Engine',
selfReflexionEngineSubTitle: 'Through reflection and refinement, transform episodic memory into deeper semantic memory.',
enableSelfReflexion: 'Enable self-reflexion',
iterationPeriod: 'Iteration period',
iterationPeriod: 'Iteration Period',
iterationPeriodDesc: 'Set the iteration period for self-reflexion (hourly, 3_hours, 6_hours, 12_hours, daily).',
reflexionRange: 'Reflexion range',
reflexionRange: 'Reflexion Range',
reflexionRangeDesc: "When selecting 'Database', the iteration cycle is non configurable and fixed at daily",
retrieval: 'Retrieval',
database: 'Database',
reflectOnTheBaseline: 'Reflect on the baseline',
reflectOnTheBaseline: 'Reflect on the Baseline',
basedOnTime: 'Based on time',
basedOnFacts: 'Based on facts',
basedOnFactsAndTime: 'Based on facts and time',
@@ -1134,15 +1144,15 @@ export const en = {
education: 'Education',
online_service: 'Online service',
outbound: 'Outbound',
entityDeduplicationDisambiguation: 'Entity de-duplication disambiguation',
entityDeduplicationDisambiguation: 'Entity De-duplication Disambiguation',
entityDeduplicationDisambiguationSubTitle: 'Control the LLM decision-making function for memory deduplication and disambiguation, set various matching thresholds, and affect the accuracy of memory deduplication.',
semanticAnchorAnnotationModule: 'Semantic anchor annotation module',
semanticAnchorAnnotationModule: 'Semantic Anchor Annotation Module',
semanticAnchorAnnotationModuleSubTitle: 'Control the granularity of statement extraction and whether to include dialog context.',
statementGranularity: 'Statement granularity',
statementGranularity: 'Statement Granularity',
statementGranularityDesc: 'Statement extraction granularity (1-3): 1 represents breaking down sentences into different statements, 2 represents sentence level, and 3 represents merging sentences into paragraphs.',
includeDialogueContext: 'Include dialogue context',
includeDialogueContext: 'Include Dialogue Context',
includeDialogueContextDesc: 'Control whether the complete dialogue context is included in the extraction process (true/false).',
maxDialogueContextChars: 'Max dialogue context chars',
maxDialogueContextChars: 'Max Dialogue Context Chars',
maxDialogueContextCharsDesc: 'The maximum number of characters included in the dialogue context (to avoid character limit issues) (greater than 100).',
coreEntitiesAfterDedup: 'Core entities after deduplication',
extractRelationalTriples: 'Extracted relational triples (partial)',

View File

@@ -310,7 +310,7 @@ export const zh = {
promptConfiguration: '提示词配置',
configurationDesc: '定义Agent的角色、能力和行为准则',
aiPrompt: 'AI提示词',
promptPlaceholder: '你是一个专业的AI助手你的职责是..',
promptPlaceholder: '你是一个专业的AI助手你的职责是帮助用户解决问题。',
knowledgeBaseAssociation: '知识库关联',
associatedKnowledgeBase: '关联知识库',
addKnowledgeBase: '添加知识库',
@@ -894,6 +894,17 @@ export const zh = {
saveConfig: '保存配置',
apiKeyName: 'API密钥名称',
llm: 'LLM',
chat: 'Chat',
embedding: 'Embedding',
rerank: 'Rerank',
openai: "Openai",
dashscope: "Dashscope",
ollama: "Ollama",
xinference: "Xinference",
gpustack: "Gpustack",
bedrock: "Bedrock"
},
timezones: {
'Asia/Shanghai': '中国标准时间 (UTC+8)',
@@ -1002,8 +1013,6 @@ export const zh = {
inviteToMember: '邀请成员',
member: '成员',
memberDesc: '只能使用应用,不能创建应用',
admin: '管理员',
adminDesc: '可以创建应用和管理团队设置',
sendInvitation: '发送邀请',
manager: '管理员',
managerDesc: '可以创建应用和管理团队设置',

View File

@@ -1,43 +0,0 @@
import { useEffect, useState, type FC } from 'react';
import { useTranslation } from 'react-i18next';
import { Cascader } from 'antd'
import type { CascaderProps } from 'antd';
import { getModelProviderList } from '@/api/models'
interface Option {
value?: string | number | null;
label: React.ReactNode;
children?: Option[];
isLeaf?: boolean;
}
const CustomSelect: FC<CascaderProps> = () => {
const { t } = useTranslation();
const [options, setOptions] = useState<Option[]>([]);
useEffect(() => {
getProviderList()
}, []);
const getProviderList = () => {
getModelProviderList().then(res => {
const response = res as string[]
setOptions(response.map((key: string) => ({
value: key,
label: t(`model.${key}`),
children: [],
isLeaf: false,
})))
})
}
const loadData = (selectedOptions: Option[]) => {
const targetOption = selectedOptions[selectedOptions.length - 1];
console.log(targetOption)
}
return (
<Cascader
options={options}
loadData={loadData}
changeOnSelect
/>
);
}
export default CustomSelect;

View File

@@ -132,7 +132,7 @@ const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
label={t('member.email')}
rules={[{ required: true, message: t('common.pleaseEnter') }]}
>
<Input placeholder={t('common.inputPlaceholder', { title: t('member.email') })} disabled={!!editingUser} />
<Input placeholder={t('common.enterPlaceholder', { title: t('member.email') })} disabled={!!editingUser} />
</FormItem>
<FormItem

View File

@@ -123,7 +123,7 @@ const ConfigModal = forwardRef<ConfigModalRef, ConfigModalProps>(({
<CustomSelect
url={modelTypeUrl}
hasAll={false}
format={(items) => items.map((item) => ({ label: item, value: item }))}
format={(items) => items.map((item) => ({ label: t(`model.${item}`), value: item }))}
/>
</Form.Item>
</>
@@ -138,10 +138,9 @@ const ConfigModal = forwardRef<ConfigModalRef, ConfigModalProps>(({
<CustomSelect
url={modelProviderUrl}
hasAll={false}
format={(items) => items.map((item) => ({ label: item, value: item }))}
format={(items) => items.map((item) => ({ label: t(`model.${item}`), value: item }))}
/>
</Form.Item>
{/* TODO:改成模型名称 */}
<Form.Item
name="model_name"
label={t('model.modelName')}