feat(i18n): replace Chinese UI text in Step4Report.vue render functions

Only UI display text is replaced. Regex parsing patterns are kept as-is
since they match the backend output format.
This commit is contained in:
ghostubborn 2026-04-01 18:35:18 +08:00
parent 6db3f98a48
commit 5072a2eaa8
3 changed files with 106 additions and 42 deletions

View File

@ -1006,7 +1006,7 @@ const InsightDisplay = {
]), ]),
props.result.query && h('div', { class: 'header-topic' }, props.result.query), props.result.query && h('div', { class: 'header-topic' }, props.result.query),
props.result.simulationRequirement && h('div', { class: 'header-scenario' }, [ props.result.simulationRequirement && h('div', { class: 'header-scenario' }, [
h('span', { class: 'scenario-label' }, '预测场景: '), h('span', { class: 'scenario-label' }, t('step4.scenarioLabel')),
h('span', { class: 'scenario-text' }, props.result.simulationRequirement) h('span', { class: 'scenario-text' }, props.result.simulationRequirement)
]) ])
]), ]),
@ -1017,25 +1017,25 @@ const InsightDisplay = {
class: ['insight-tab', { active: activeTab.value === 'facts' }], class: ['insight-tab', { active: activeTab.value === 'facts' }],
onClick: () => { activeTab.value = 'facts' } onClick: () => { activeTab.value = 'facts' }
}, [ }, [
h('span', { class: 'tab-label' }, `当前关键记忆 (${props.result.facts.length})`) h('span', { class: 'tab-label' }, t('step4.tabKeyFacts', { count: props.result.facts.length }))
]), ]),
h('button', { h('button', {
class: ['insight-tab', { active: activeTab.value === 'entities' }], class: ['insight-tab', { active: activeTab.value === 'entities' }],
onClick: () => { activeTab.value = 'entities' } onClick: () => { activeTab.value = 'entities' }
}, [ }, [
h('span', { class: 'tab-label' }, `核心实体 (${props.result.entities.length})`) h('span', { class: 'tab-label' }, t('step4.tabCoreEntities', { count: props.result.entities.length }))
]), ]),
h('button', { h('button', {
class: ['insight-tab', { active: activeTab.value === 'relations' }], class: ['insight-tab', { active: activeTab.value === 'relations' }],
onClick: () => { activeTab.value = 'relations' } onClick: () => { activeTab.value = 'relations' }
}, [ }, [
h('span', { class: 'tab-label' }, `关系链 (${props.result.relations.length})`) h('span', { class: 'tab-label' }, t('step4.tabRelationChains', { count: props.result.relations.length }))
]), ]),
props.result.subQueries.length > 0 && h('button', { props.result.subQueries.length > 0 && h('button', {
class: ['insight-tab', { active: activeTab.value === 'subqueries' }], class: ['insight-tab', { active: activeTab.value === 'subqueries' }],
onClick: () => { activeTab.value = 'subqueries' } onClick: () => { activeTab.value = 'subqueries' }
}, [ }, [
h('span', { class: 'tab-label' }, `子问题 (${props.result.subQueries.length})`) h('span', { class: 'tab-label' }, t('step4.tabSubQueries', { count: props.result.subQueries.length }))
]) ])
]), ]),
@ -1044,8 +1044,8 @@ const InsightDisplay = {
// Facts Tab // Facts Tab
activeTab.value === 'facts' && props.result.facts.length > 0 && h('div', { class: 'facts-panel' }, [ activeTab.value === 'facts' && props.result.facts.length > 0 && h('div', { class: 'facts-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '时序记忆中所关联的最新关键事实'), h('span', { class: 'panel-title' }, t('step4.panelKeyFacts')),
h('span', { class: 'panel-count' }, `${props.result.facts.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.facts.length }))
]), ]),
h('div', { class: 'facts-list' }, h('div', { class: 'facts-list' },
(expandedFacts.value ? props.result.facts : props.result.facts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) => (expandedFacts.value ? props.result.facts : props.result.facts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) =>
@ -1064,15 +1064,15 @@ const InsightDisplay = {
// Entities Tab // Entities Tab
activeTab.value === 'entities' && props.result.entities.length > 0 && h('div', { class: 'entities-panel' }, [ activeTab.value === 'entities' && props.result.entities.length > 0 && h('div', { class: 'entities-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '核心实体'), h('span', { class: 'panel-title' }, t('step4.panelCoreEntities')),
h('span', { class: 'panel-count' }, `${props.result.entities.length}`) h('span', { class: 'panel-count' }, t('step4.totalEntityCount', { count: props.result.entities.length }))
]), ]),
h('div', { class: 'entities-grid' }, h('div', { class: 'entities-grid' },
(expandedEntities.value ? props.result.entities : props.result.entities.slice(0, 12)).map((entity, i) => (expandedEntities.value ? props.result.entities : props.result.entities.slice(0, 12)).map((entity, i) =>
h('div', { class: 'entity-tag', key: i, title: entity.summary || '' }, [ h('div', { class: 'entity-tag', key: i, title: entity.summary || '' }, [
h('span', { class: 'entity-name' }, entity.name), h('span', { class: 'entity-name' }, entity.name),
h('span', { class: 'entity-type' }, entity.type), h('span', { class: 'entity-type' }, entity.type),
entity.relatedFactsCount > 0 && h('span', { class: 'entity-fact-count' }, `${entity.relatedFactsCount}`) entity.relatedFactsCount > 0 && h('span', { class: 'entity-fact-count' }, t('step4.factCount', { count: entity.relatedFactsCount }))
]) ])
) )
), ),
@ -1085,8 +1085,8 @@ const InsightDisplay = {
// Relations Tab // Relations Tab
activeTab.value === 'relations' && props.result.relations.length > 0 && h('div', { class: 'relations-panel' }, [ activeTab.value === 'relations' && props.result.relations.length > 0 && h('div', { class: 'relations-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '关系链'), h('span', { class: 'panel-title' }, t('step4.panelRelationChains')),
h('span', { class: 'panel-count' }, `${props.result.relations.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.relations.length }))
]), ]),
h('div', { class: 'relations-list' }, h('div', { class: 'relations-list' },
(expandedRelations.value ? props.result.relations : props.result.relations.slice(0, INITIAL_SHOW_COUNT)).map((rel, i) => (expandedRelations.value ? props.result.relations : props.result.relations.slice(0, INITIAL_SHOW_COUNT)).map((rel, i) =>
@ -1110,8 +1110,8 @@ const InsightDisplay = {
// Sub-queries Tab // Sub-queries Tab
activeTab.value === 'subqueries' && props.result.subQueries.length > 0 && h('div', { class: 'subqueries-panel' }, [ activeTab.value === 'subqueries' && props.result.subQueries.length > 0 && h('div', { class: 'subqueries-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '漂移查询生成分析子问题'), h('span', { class: 'panel-title' }, t('step4.panelSubQueries')),
h('span', { class: 'panel-count' }, `${props.result.subQueries.length}`) h('span', { class: 'panel-count' }, t('step4.totalEntityCount', { count: props.result.subQueries.length }))
]), ]),
h('div', { class: 'subqueries-list' }, h('div', { class: 'subqueries-list' },
props.result.subQueries.map((sq, i) => props.result.subQueries.map((sq, i) =>
@ -1124,9 +1124,9 @@ const InsightDisplay = {
]), ]),
// Empty state // Empty state
activeTab.value === 'facts' && props.result.facts.length === 0 && h('div', { class: 'empty-state' }, '暂无当前关键记忆'), activeTab.value === 'facts' && props.result.facts.length === 0 && h('div', { class: 'empty-state' }, t('step4.emptyKeyFacts')),
activeTab.value === 'entities' && props.result.entities.length === 0 && h('div', { class: 'empty-state' }, '暂无核心实体'), activeTab.value === 'entities' && props.result.entities.length === 0 && h('div', { class: 'empty-state' }, t('step4.emptyCoreEntities')),
activeTab.value === 'relations' && props.result.relations.length === 0 && h('div', { class: 'empty-state' }, '暂无关系链') activeTab.value === 'relations' && props.result.relations.length === 0 && h('div', { class: 'empty-state' }, t('step4.emptyRelationChains'))
]) ])
]) ])
} }
@ -1180,19 +1180,19 @@ const PanoramaDisplay = {
class: ['panorama-tab', { active: activeTab.value === 'active' }], class: ['panorama-tab', { active: activeTab.value === 'active' }],
onClick: () => { activeTab.value = 'active' } onClick: () => { activeTab.value = 'active' }
}, [ }, [
h('span', { class: 'tab-label' }, `当前有效记忆 (${props.result.activeFacts.length})`) h('span', { class: 'tab-label' }, t('step4.tabActiveFacts', { count: props.result.activeFacts.length }))
]), ]),
h('button', { h('button', {
class: ['panorama-tab', { active: activeTab.value === 'historical' }], class: ['panorama-tab', { active: activeTab.value === 'historical' }],
onClick: () => { activeTab.value = 'historical' } onClick: () => { activeTab.value = 'historical' }
}, [ }, [
h('span', { class: 'tab-label' }, `历史记忆 (${props.result.historicalFacts.length})`) h('span', { class: 'tab-label' }, t('step4.tabHistoricalFacts', { count: props.result.historicalFacts.length }))
]), ]),
h('button', { h('button', {
class: ['panorama-tab', { active: activeTab.value === 'entities' }], class: ['panorama-tab', { active: activeTab.value === 'entities' }],
onClick: () => { activeTab.value = 'entities' } onClick: () => { activeTab.value = 'entities' }
}, [ }, [
h('span', { class: 'tab-label' }, `涉及实体 (${props.result.entities.length})`) h('span', { class: 'tab-label' }, t('step4.tabEntities', { count: props.result.entities.length }))
]) ])
]), ]),
@ -1201,8 +1201,8 @@ const PanoramaDisplay = {
// Active Facts Tab // Active Facts Tab
activeTab.value === 'active' && h('div', { class: 'facts-panel active-facts' }, [ activeTab.value === 'active' && h('div', { class: 'facts-panel active-facts' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '当前有效记忆'), h('span', { class: 'panel-title' }, t('step4.panelActiveFacts')),
h('span', { class: 'panel-count' }, `${props.result.activeFacts.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.activeFacts.length }))
]), ]),
props.result.activeFacts.length > 0 ? h('div', { class: 'facts-list' }, props.result.activeFacts.length > 0 ? h('div', { class: 'facts-list' },
(expandedActive.value ? props.result.activeFacts : props.result.activeFacts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) => (expandedActive.value ? props.result.activeFacts : props.result.activeFacts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) =>
@ -1211,7 +1211,7 @@ const PanoramaDisplay = {
h('div', { class: 'fact-content' }, fact) h('div', { class: 'fact-content' }, fact)
]) ])
) )
) : h('div', { class: 'empty-state' }, '暂无当前有效记忆'), ) : h('div', { class: 'empty-state' }, t('step4.emptyActiveFacts')),
props.result.activeFacts.length > INITIAL_SHOW_COUNT && h('button', { props.result.activeFacts.length > INITIAL_SHOW_COUNT && h('button', {
class: 'expand-btn', class: 'expand-btn',
onClick: () => { expandedActive.value = !expandedActive.value } onClick: () => { expandedActive.value = !expandedActive.value }
@ -1221,8 +1221,8 @@ const PanoramaDisplay = {
// Historical Facts Tab // Historical Facts Tab
activeTab.value === 'historical' && h('div', { class: 'facts-panel historical-facts' }, [ activeTab.value === 'historical' && h('div', { class: 'facts-panel historical-facts' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '历史记忆'), h('span', { class: 'panel-title' }, t('step4.panelHistoricalFacts')),
h('span', { class: 'panel-count' }, `${props.result.historicalFacts.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.historicalFacts.length }))
]), ]),
props.result.historicalFacts.length > 0 ? h('div', { class: 'facts-list' }, props.result.historicalFacts.length > 0 ? h('div', { class: 'facts-list' },
(expandedHistorical.value ? props.result.historicalFacts : props.result.historicalFacts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) => (expandedHistorical.value ? props.result.historicalFacts : props.result.historicalFacts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) =>
@ -1243,7 +1243,7 @@ const PanoramaDisplay = {
]) ])
]) ])
) )
) : h('div', { class: 'empty-state' }, '暂无历史记忆'), ) : h('div', { class: 'empty-state' }, t('step4.emptyHistoricalFacts')),
props.result.historicalFacts.length > INITIAL_SHOW_COUNT && h('button', { props.result.historicalFacts.length > INITIAL_SHOW_COUNT && h('button', {
class: 'expand-btn', class: 'expand-btn',
onClick: () => { expandedHistorical.value = !expandedHistorical.value } onClick: () => { expandedHistorical.value = !expandedHistorical.value }
@ -1253,8 +1253,8 @@ const PanoramaDisplay = {
// Entities Tab // Entities Tab
activeTab.value === 'entities' && h('div', { class: 'entities-panel' }, [ activeTab.value === 'entities' && h('div', { class: 'entities-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '涉及实体'), h('span', { class: 'panel-title' }, t('step4.panelEntities')),
h('span', { class: 'panel-count' }, `${props.result.entities.length}`) h('span', { class: 'panel-count' }, t('step4.totalEntityCount', { count: props.result.entities.length }))
]), ]),
props.result.entities.length > 0 ? h('div', { class: 'entities-grid' }, props.result.entities.length > 0 ? h('div', { class: 'entities-grid' },
(expandedEntities.value ? props.result.entities : props.result.entities.slice(0, 8)).map((entity, i) => (expandedEntities.value ? props.result.entities : props.result.entities.slice(0, 8)).map((entity, i) =>
@ -1263,7 +1263,7 @@ const PanoramaDisplay = {
entity.type && h('span', { class: 'entity-type' }, entity.type) entity.type && h('span', { class: 'entity-type' }, entity.type)
]) ])
) )
) : h('div', { class: 'empty-state' }, '暂无涉及实体'), ) : h('div', { class: 'empty-state' }, t('step4.emptyEntities')),
props.result.entities.length > 8 && h('button', { props.result.entities.length > 8 && h('button', {
class: 'expand-btn', class: 'expand-btn',
onClick: () => { expandedEntities.value = !expandedEntities.value } onClick: () => { expandedEntities.value = !expandedEntities.value }
@ -1615,7 +1615,7 @@ const QuickSearchDisplay = {
]) ])
]), ]),
props.result.query && h('div', { class: 'header-query' }, [ props.result.query && h('div', { class: 'header-query' }, [
h('span', { class: 'query-label' }, '搜索: '), h('span', { class: 'query-label' }, t('step4.searchLabel')),
h('span', { class: 'query-text' }, props.result.query) h('span', { class: 'query-text' }, props.result.query)
]) ])
]), ]),
@ -1626,19 +1626,19 @@ const QuickSearchDisplay = {
class: ['quicksearch-tab', { active: activeTab.value === 'facts' }], class: ['quicksearch-tab', { active: activeTab.value === 'facts' }],
onClick: () => { activeTab.value = 'facts' } onClick: () => { activeTab.value = 'facts' }
}, [ }, [
h('span', { class: 'tab-label' }, `事实 (${props.result.facts.length})`) h('span', { class: 'tab-label' }, t('step4.tabFacts', { count: props.result.facts.length }))
]), ]),
hasEdges.value && h('button', { hasEdges.value && h('button', {
class: ['quicksearch-tab', { active: activeTab.value === 'edges' }], class: ['quicksearch-tab', { active: activeTab.value === 'edges' }],
onClick: () => { activeTab.value = 'edges' } onClick: () => { activeTab.value = 'edges' }
}, [ }, [
h('span', { class: 'tab-label' }, `关系 (${props.result.edges.length})`) h('span', { class: 'tab-label' }, t('step4.tabEdges', { count: props.result.edges.length }))
]), ]),
hasNodes.value && h('button', { hasNodes.value && h('button', {
class: ['quicksearch-tab', { active: activeTab.value === 'nodes' }], class: ['quicksearch-tab', { active: activeTab.value === 'nodes' }],
onClick: () => { activeTab.value = 'nodes' } onClick: () => { activeTab.value = 'nodes' }
}, [ }, [
h('span', { class: 'tab-label' }, `节点 (${props.result.nodes.length})`) h('span', { class: 'tab-label' }, t('step4.tabNodes', { count: props.result.nodes.length }))
]) ])
]), ]),
@ -1647,8 +1647,8 @@ const QuickSearchDisplay = {
// Facts (always show if no tabs, or when facts tab is active) // Facts (always show if no tabs, or when facts tab is active)
((!showTabs.value) || activeTab.value === 'facts') && h('div', { class: 'facts-panel' }, [ ((!showTabs.value) || activeTab.value === 'facts') && h('div', { class: 'facts-panel' }, [
!showTabs.value && h('div', { class: 'panel-header' }, [ !showTabs.value && h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '搜索结果'), h('span', { class: 'panel-title' }, t('step4.panelSearchResults')),
h('span', { class: 'panel-count' }, `${props.result.facts.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.facts.length }))
]), ]),
props.result.facts.length > 0 ? h('div', { class: 'facts-list' }, props.result.facts.length > 0 ? h('div', { class: 'facts-list' },
(expandedFacts.value ? props.result.facts : props.result.facts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) => (expandedFacts.value ? props.result.facts : props.result.facts.slice(0, INITIAL_SHOW_COUNT)).map((fact, i) =>
@ -1657,7 +1657,7 @@ const QuickSearchDisplay = {
h('div', { class: 'fact-content' }, fact) h('div', { class: 'fact-content' }, fact)
]) ])
) )
) : h('div', { class: 'empty-state' }, '未找到相关结果'), ) : h('div', { class: 'empty-state' }, t('step4.emptySearchResults')),
props.result.facts.length > INITIAL_SHOW_COUNT && h('button', { props.result.facts.length > INITIAL_SHOW_COUNT && h('button', {
class: 'expand-btn', class: 'expand-btn',
onClick: () => { expandedFacts.value = !expandedFacts.value } onClick: () => { expandedFacts.value = !expandedFacts.value }
@ -1667,8 +1667,8 @@ const QuickSearchDisplay = {
// Edges Tab // Edges Tab
activeTab.value === 'edges' && hasEdges.value && h('div', { class: 'edges-panel' }, [ activeTab.value === 'edges' && hasEdges.value && h('div', { class: 'edges-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '相关关系'), h('span', { class: 'panel-title' }, t('step4.panelRelatedEdges')),
h('span', { class: 'panel-count' }, `${props.result.edges.length}`) h('span', { class: 'panel-count' }, t('step4.totalCount', { count: props.result.edges.length }))
]), ]),
h('div', { class: 'edges-list' }, h('div', { class: 'edges-list' },
props.result.edges.map((edge, i) => props.result.edges.map((edge, i) =>
@ -1688,8 +1688,8 @@ const QuickSearchDisplay = {
// Nodes Tab // Nodes Tab
activeTab.value === 'nodes' && hasNodes.value && h('div', { class: 'nodes-panel' }, [ activeTab.value === 'nodes' && hasNodes.value && h('div', { class: 'nodes-panel' }, [
h('div', { class: 'panel-header' }, [ h('div', { class: 'panel-header' }, [
h('span', { class: 'panel-title' }, '相关节点'), h('span', { class: 'panel-title' }, t('step4.panelRelatedNodes')),
h('span', { class: 'panel-count' }, `${props.result.nodes.length}`) h('span', { class: 'panel-count' }, t('step4.totalEntityCount', { count: props.result.nodes.length }))
]), ]),
h('div', { class: 'nodes-grid' }, h('div', { class: 'nodes-grid' },
props.result.nodes.map((node, i) => props.result.nodes.map((node, i) =>

View File

@ -213,7 +213,39 @@
"waitingForReportAgent": "Waiting for Report Agent...", "waitingForReportAgent": "Waiting for Report Agent...",
"collapse": "Collapse ▲", "collapse": "Collapse ▲",
"expandAll": "Show all {count} ▼", "expandAll": "Show all {count} ▼",
"expandAllEntities": "Show all {count} ▼" "expandAllEntities": "Show all {count} ▼",
"scenarioLabel": "Scenario: ",
"tabKeyFacts": "Key Facts ({count})",
"tabCoreEntities": "Core Entities ({count})",
"tabRelationChains": "Relation Chains ({count})",
"tabSubQueries": "Sub-queries ({count})",
"panelKeyFacts": "Latest key facts from temporal memory",
"totalCount": "{count} total",
"totalEntityCount": "{count} total",
"panelCoreEntities": "Core Entities",
"factCount": "{count} facts",
"panelRelationChains": "Relation Chains",
"panelSubQueries": "Drift query analysis sub-questions",
"emptyKeyFacts": "No key facts available",
"emptyCoreEntities": "No core entities available",
"emptyRelationChains": "No relation chains available",
"tabActiveFacts": "Active Facts ({count})",
"tabHistoricalFacts": "Historical Facts ({count})",
"tabEntities": "Entities ({count})",
"panelActiveFacts": "Active Facts",
"emptyActiveFacts": "No active facts available",
"panelHistoricalFacts": "Historical Facts",
"emptyHistoricalFacts": "No historical facts available",
"panelEntities": "Entities",
"emptyEntities": "No entities available",
"searchLabel": "Search: ",
"tabFacts": "Facts ({count})",
"tabEdges": "Edges ({count})",
"tabNodes": "Nodes ({count})",
"panelSearchResults": "Search Results",
"emptySearchResults": "No results found",
"panelRelatedEdges": "Related Edges",
"panelRelatedNodes": "Related Nodes"
}, },
"step5": { "step5": {
"interactiveTools": "Interactive Tools", "interactiveTools": "Interactive Tools",

View File

@ -213,7 +213,39 @@
"waitingForReportAgent": "Waiting for Report Agent...", "waitingForReportAgent": "Waiting for Report Agent...",
"collapse": "收起 ▲", "collapse": "收起 ▲",
"expandAll": "展开全部 {count} 条 ▼", "expandAll": "展开全部 {count} 条 ▼",
"expandAllEntities": "展开全部 {count} 个 ▼" "expandAllEntities": "展开全部 {count} 个 ▼",
"scenarioLabel": "预测场景: ",
"tabKeyFacts": "当前关键记忆 ({count})",
"tabCoreEntities": "核心实体 ({count})",
"tabRelationChains": "关系链 ({count})",
"tabSubQueries": "子问题 ({count})",
"panelKeyFacts": "时序记忆中所关联的最新关键事实",
"totalCount": "共 {count} 条",
"totalEntityCount": "共 {count} 个",
"panelCoreEntities": "核心实体",
"factCount": "{count}条",
"panelRelationChains": "关系链",
"panelSubQueries": "漂移查询生成分析子问题",
"emptyKeyFacts": "暂无当前关键记忆",
"emptyCoreEntities": "暂无核心实体",
"emptyRelationChains": "暂无关系链",
"tabActiveFacts": "当前有效记忆 ({count})",
"tabHistoricalFacts": "历史记忆 ({count})",
"tabEntities": "涉及实体 ({count})",
"panelActiveFacts": "当前有效记忆",
"emptyActiveFacts": "暂无当前有效记忆",
"panelHistoricalFacts": "历史记忆",
"emptyHistoricalFacts": "暂无历史记忆",
"panelEntities": "涉及实体",
"emptyEntities": "暂无涉及实体",
"searchLabel": "搜索: ",
"tabFacts": "事实 ({count})",
"tabEdges": "关系 ({count})",
"tabNodes": "节点 ({count})",
"panelSearchResults": "搜索结果",
"emptySearchResults": "未找到相关结果",
"panelRelatedEdges": "相关关系",
"panelRelatedNodes": "相关节点"
}, },
"step5": { "step5": {
"interactiveTools": "Interactive Tools", "interactiveTools": "Interactive Tools",