diff --git a/dashboard/src/i18n/locales/en-US/features/alkaid/index.json b/dashboard/src/i18n/locales/en-US/features/alkaid/index.json index 5da278f43..f0b7890b8 100644 --- a/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +++ b/dashboard/src/i18n/locales/en-US/features/alkaid/index.json @@ -22,5 +22,23 @@ "beta": "Beta", "stable": "Stable", "deprecated": "Deprecated" + }, + "sigma": { + "subtitle": "AstrBot Experimental Project", + "visualization": "Visualization", + "filterUserId": "Filter User ID", + "filter": "Filter", + "resetFilter": "Reset Filter", + "refreshGraph": "Refresh Graph", + "nodeDetails": "Node Details", + "id": "ID", + "type": "Type", + "name": "Name", + "userId": "User ID", + "timestamp": "Timestamp", + "graphStats": "Graph Statistics", + "nodeCount": "Node Count", + "edgeCount": "Edge Count", + "inDevelopment": "Under Development" } } \ No newline at end of file diff --git a/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json b/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json index ecdfb0a72..17452504a 100644 --- a/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +++ b/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json @@ -29,5 +29,108 @@ "preview": "Preview", "download": "Download", "reindex": "Reindex" + }, + "notInstalled": { + "title": "Knowledge base plugin is not installed yet", + "install": "Install now" + }, + "empty": { + "title": "No knowledge base yet, create one now! 🙂", + "create": "Create Knowledge Base" + }, + "list": { + "title": "Knowledge Base List", + "create": "Create Knowledge Base", + "config": "Configure", + "knowledgeCount": "knowledge items", + "tips": "Tips: Learn how to use through /kb command in chat page!" + }, + "createDialog": { + "title": "Create New Knowledge Base", + "nameLabel": "Knowledge Base Name", + "descriptionLabel": "Description", + "descriptionPlaceholder": "Brief description of the knowledge base...", + "embeddingModelLabel": "Embedding Model", + "providerInfo": "Provider ID: {id} | Embedding Model Dimensions: {dimensions}", + "tips": "Tips: Once you choose an embedding model for a knowledge base, please do not modify the provider's model or vector dimension information, otherwise it will seriously affect the recall rate of the knowledge base or even cause errors.", + "cancel": "Cancel", + "create": "Create" + }, + "emojiPicker": { + "title": "Select Emoji", + "close": "Close", + "categories": { + "emotions": "Smileys and Emotions", + "animals": "Animals and Nature", + "food": "Food and Drink", + "activities": "Activities and Objects", + "travel": "Travel and Places", + "symbols": "Symbols and Flags" + } + }, + "contentDialog": { + "title": "Knowledge Base Management", + "embeddingModel": "Embedding Model", + "vectorDimension": "Vector Dimension", + "usage": "Usage: Enter \"/kb use {name}\" in the chat page", + "tabs": { + "upload": "Upload Files", + "search": "Search Content" + } + }, + "upload": { + "title": "Upload Files to Knowledge Base", + "subtitle": "Supports txt, pdf, word, excel and other formats", + "dropzone": "Drag and drop files here or click to upload", + "chunkSettings": { + "title": "Chunk Settings", + "tooltip": "Chunk size determines the size of each text block, overlap length determines the overlap between adjacent text blocks.\nSmaller chunks are more precise but increase quantity, appropriate overlap can improve retrieval accuracy.", + "chunkSizeLabel": "Chunk Size", + "chunkSizeHint": "Control the size of each text block, leave empty to use default value", + "overlapLabel": "Overlap Length", + "overlapHint": "Control the overlap between adjacent text blocks, leave empty to use default value" + }, + "upload": "Upload File", + "uploading": "Uploading..." + }, + "search": { + "queryLabel": "Search Knowledge Base Content", + "queryPlaceholder": "Enter keywords to search knowledge base content...", + "resultCountLabel": "Result Count", + "searching": "Searching...", + "resultsTitle": "Search Results", + "relevance": "Relevance", + "noResults": "No matching content found" + }, + "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" + }, + "messages": { + "pluginNotAvailable": "Plugin not installed or unavailable", + "checkPluginFailed": "Failed to check plugin", + "installFailed": "Installation failed", + "installPluginFailed": "Failed to install plugin", + "getKnowledgeBaseListFailed": "Failed to get knowledge base list", + "knowledgeBaseCreated": "Knowledge base created successfully", + "createFailed": "Creation failed", + "createKnowledgeBaseFailed": "Failed to create knowledge base", + "pleaseEnterKnowledgeBaseName": "Please enter knowledge base name", + "pleaseSelectFile": "Please select a file first", + "operationSuccess": "Operation successful: {message}", + "uploadFailed": "Upload failed", + "fileUploadFailed": "File upload failed", + "pleaseEnterSearchContent": "Please enter search content", + "noMatchingContent": "No matching content found", + "searchFailed": "Search failed", + "searchKnowledgeBaseFailed": "Failed to search knowledge base", + "deleteTargetNotExists": "Delete target does not exist", + "knowledgeBaseDeleted": "Knowledge base deleted successfully", + "deleteFailed": "Deletion failed", + "deleteKnowledgeBaseFailed": "Failed to delete knowledge base", + "getEmbeddingModelListFailed": "Failed to get embedding model list" } } \ No newline at end of file diff --git a/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json b/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json index bfbb3e17d..528de8148 100644 --- a/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +++ b/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json @@ -32,6 +32,63 @@ "all": "All", "category": "By Category", "importance": "By Importance", - "dateRange": "By Date Range" + "dateRange": "By Date Range", + "title": "Filters", + "userIdLabel": "Filter by User ID", + "filterButton": "Filter", + "resetButton": "Reset Filter", + "refreshButton": "Refresh Graph" + }, + "search": { + "title": "Search Memory", + "userIdLabel": "User ID", + "queryLabel": "Enter keywords", + "searchButton": "Search", + "resultsTitle": "Search Results", + "noResults": "No relevant memory content found", + "similarity": "Relevance" + }, + "addMemory": { + "title": "Add Memory Data", + "textLabel": "Enter text content", + "userIdLabel": "User ID", + "summarizeLabel": "Need summary", + "addButton": "Add Data" + }, + "nodeDetails": { + "title": "Node Details", + "id": "ID", + "type": "Type", + "name": "Name", + "userId": "User ID", + "timestamp": "Timestamp" + }, + "graphStats": { + "title": "Graph Statistics", + "nodeCount": "Node Count", + "edgeCount": "Edge Count" + }, + "factDialog": { + "title": "Memory Fact", + "id": "ID", + "docId": "Document ID", + "createdAt": "Created At", + "updatedAt": "Updated At", + "metadata": "Metadata", + "metadataKey": "Key", + "metadataValue": "Value", + "loading": "Loading...", + "close": "Close", + "noValue": "None" + }, + "messages": { + "searchQueryRequired": "Please enter search keywords", + "searchSuccess": "Found {count} relevant memories", + "searchNoResults": "No relevant memory content found", + "searchError": "Search failed", + "addSuccess": "Memory data added successfully!", + "addError": "Failed to add memory data", + "factDetailsError": "Failed to get memory details", + "metadataParseError": "Unable to parse metadata" } } \ No newline at end of file diff --git a/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json b/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json index fadceb7a3..68a8bee19 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +++ b/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json @@ -22,5 +22,23 @@ "beta": "测试版", "stable": "稳定版", "deprecated": "已弃用" + }, + "sigma": { + "subtitle": "AstrBot 实验性项目", + "visualization": "可视化", + "filterUserId": "筛选用户 ID", + "filter": "筛选", + "resetFilter": "重置筛选", + "refreshGraph": "刷新图形", + "nodeDetails": "节点详情", + "id": "ID", + "type": "类型", + "name": "名称", + "userId": "用户ID", + "timestamp": "时间戳", + "graphStats": "图形统计", + "nodeCount": "节点数", + "edgeCount": "边数", + "inDevelopment": "功能开发中" } } \ No newline at end of file diff --git a/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json b/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json index caa48364a..8e0a53e9e 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +++ b/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json @@ -29,5 +29,108 @@ "preview": "预览", "download": "下载", "reindex": "重新索引" + }, + "notInstalled": { + "title": "还没有安装知识库插件", + "install": "立即安装" + }, + "empty": { + "title": "还没有知识库,快创建一个吧!🙂", + "create": "创建知识库" + }, + "list": { + "title": "知识库列表", + "create": "创建知识库", + "config": "配置", + "knowledgeCount": "条知识", + "tips": "Tips: 在聊天页面通过 /kb 指令了解如何使用!" + }, + "createDialog": { + "title": "创建新知识库", + "nameLabel": "知识库名称", + "descriptionLabel": "描述", + "descriptionPlaceholder": "知识库的简短描述...", + "embeddingModelLabel": "Embedding(嵌入)模型", + "providerInfo": "提供商 ID: {id} | 嵌入模型维度: {dimensions}", + "tips": "Tips: 一旦选择了一个知识库的嵌入模型,请不要再修改该提供商的模型或者向量维度信息,否则将严重影响该知识库的召回率甚至报错。", + "cancel": "取消", + "create": "创建" + }, + "emojiPicker": { + "title": "选择表情", + "close": "关闭", + "categories": { + "emotions": "笑脸和情感", + "animals": "动物和自然", + "food": "食物和饮料", + "activities": "活动和物品", + "travel": "旅行和地点", + "symbols": "符号和旗帜" + } + }, + "contentDialog": { + "title": "知识库管理", + "embeddingModel": "嵌入模型", + "vectorDimension": "向量维度", + "usage": "使用方式: 在聊天页中输入 \"/kb use {name}\"", + "tabs": { + "upload": "上传文件", + "search": "搜索内容" + } + }, + "upload": { + "title": "上传文件到知识库", + "subtitle": "支持 txt、pdf、word、excel 等多种格式", + "dropzone": "拖放文件到这里或点击上传", + "chunkSettings": { + "title": "分片设置", + "tooltip": "分片长度决定每块文本的大小,重叠长度决定相邻文本块之间的重叠程度。\n较小的分片更精确但会增加数量,适当的重叠可提高检索准确性。", + "chunkSizeLabel": "分片长度", + "chunkSizeHint": "控制每个文本块大小,留空使用默认值", + "overlapLabel": "重叠长度", + "overlapHint": "控制相邻文本块重叠度,留空使用默认值" + }, + "upload": "上传文件", + "uploading": "正在上传..." + }, + "search": { + "queryLabel": "搜索知识库内容", + "queryPlaceholder": "输入关键词搜索知识库内容...", + "resultCountLabel": "结果数量", + "searching": "正在搜索...", + "resultsTitle": "搜索结果", + "relevance": "相关度", + "noResults": "没有找到匹配的内容" + }, + "deleteDialog": { + "title": "确认删除", + "confirmText": "您确定要删除知识库 {name} 吗?", + "warning": "此操作不可逆,所有知识库内容将被永久删除。", + "cancel": "取消", + "delete": "删除" + }, + "messages": { + "pluginNotAvailable": "插件未安装或不可用", + "checkPluginFailed": "检查插件失败", + "installFailed": "安装失败", + "installPluginFailed": "安装插件失败", + "getKnowledgeBaseListFailed": "获取知识库列表失败", + "knowledgeBaseCreated": "知识库创建成功", + "createFailed": "创建失败", + "createKnowledgeBaseFailed": "创建知识库失败", + "pleaseEnterKnowledgeBaseName": "请输入知识库名称", + "pleaseSelectFile": "请先选择文件", + "operationSuccess": "操作成功: {message}", + "uploadFailed": "上传失败", + "fileUploadFailed": "文件上传失败", + "pleaseEnterSearchContent": "请输入搜索内容", + "noMatchingContent": "没有找到匹配的内容", + "searchFailed": "搜索失败", + "searchKnowledgeBaseFailed": "搜索知识库失败", + "deleteTargetNotExists": "删除目标不存在", + "knowledgeBaseDeleted": "知识库删除成功", + "deleteFailed": "删除失败", + "deleteKnowledgeBaseFailed": "删除知识库失败", + "getEmbeddingModelListFailed": "获取嵌入模型列表失败" } } \ No newline at end of file diff --git a/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json b/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json index 5bbd3624a..269c8f29b 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +++ b/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json @@ -32,6 +32,63 @@ "all": "全部", "category": "按分类", "importance": "按重要程度", - "dateRange": "按时间范围" + "dateRange": "按时间范围", + "title": "筛选", + "userIdLabel": "筛选用户 ID", + "filterButton": "筛选", + "resetButton": "重置筛选", + "refreshButton": "刷新图形" + }, + "search": { + "title": "搜索记忆", + "userIdLabel": "用户 ID", + "queryLabel": "输入关键词", + "searchButton": "搜索", + "resultsTitle": "搜索结果", + "noResults": "未找到相关记忆内容", + "similarity": "相关度" + }, + "addMemory": { + "title": "添加记忆数据", + "textLabel": "输入文本内容", + "userIdLabel": "用户 ID", + "summarizeLabel": "需要摘要", + "addButton": "添加数据" + }, + "nodeDetails": { + "title": "节点详情", + "id": "ID", + "type": "类型", + "name": "名称", + "userId": "用户ID", + "timestamp": "时间戳" + }, + "graphStats": { + "title": "图形统计", + "nodeCount": "节点数", + "edgeCount": "边数" + }, + "factDialog": { + "title": "记忆事实", + "id": "ID", + "docId": "文档ID", + "createdAt": "创建时间", + "updatedAt": "更新时间", + "metadata": "元数据", + "metadataKey": "键", + "metadataValue": "值", + "loading": "加载中...", + "close": "关闭", + "noValue": "无" + }, + "messages": { + "searchQueryRequired": "请输入搜索关键词", + "searchSuccess": "找到 {count} 条相关记忆", + "searchNoResults": "未找到相关记忆内容", + "searchError": "搜索失败", + "addSuccess": "记忆数据添加成功!", + "addError": "添加记忆数据失败", + "factDetailsError": "获取记忆详情失败", + "metadataParseError": "无法解析元数据" } } \ No newline at end of file diff --git a/dashboard/src/views/AlkaidPage_sigma.vue b/dashboard/src/views/AlkaidPage_sigma.vue index 1b5180955..a5798d28d 100644 --- a/dashboard/src/views/AlkaidPage_sigma.vue +++ b/dashboard/src/views/AlkaidPage_sigma.vue @@ -11,7 +11,7 @@ import ForceSupervisor from "graphology-layout-force/worker";

The Alkaid Project.

- AstrBot 实验性项目 + {{ tm('features.alkaid.index.sigma.subtitle') }}
@@ -35,24 +35,24 @@ import ForceSupervisor from "graphology-layout-force/worker";
- 可视化 + {{ tm('features.alkaid.index.sigma.visualization') }}
- - - mdi-magnify - 筛选 - - - mdi-filter-remove - 重置筛选 - + + + mdi-magnify + {{ tm('features.alkaid.index.sigma.filter') }} + + + mdi-filter-remove + {{ tm('features.alkaid.index.sigma.resetFilter') }} +
mdi-refresh - 刷新图形 + {{ tm('features.alkaid.index.sigma.refreshGraph') }}
@@ -60,56 +60,56 @@ import ForceSupervisor from "graphology-layout-force/worker";
-

节点详情

+

{{ tm('features.alkaid.index.sigma.nodeDetails') }}

-
-
- ID: - {{ selectedNode.id }} +
+
+ {{ tm('features.alkaid.index.sigma.id') }}: + {{ selectedNode.id }} +
-
-
-
- 类型: - {{ selectedNode._label }} +
+
+ {{ tm('features.alkaid.index.sigma.type') }}: + {{ selectedNode._label }} +
-
-
-
- 名称: - {{ selectedNode.name }} +
+
+ {{ tm('features.alkaid.index.sigma.name') }}: + {{ selectedNode.name }} +
-
-
-
- 用户ID: - {{ selectedNode.user_id }} +
+
+ {{ tm('features.alkaid.index.sigma.userId') }}: + {{ selectedNode.user_id }} +
-
-
-
- 时间戳: - {{ selectedNode.ts }} +
+
+ {{ tm('features.alkaid.index.sigma.timestamp') }}: + {{ selectedNode.ts }} +
-
-
-
- 类型: - {{ selectedNode.type }} +
+
+ {{ tm('features.alkaid.index.sigma.type') }}: + {{ selectedNode.type }} +
-
-

图形统计

+

{{ tm('features.alkaid.index.sigma.graphStats') }}

- 节点数: + {{ tm('features.alkaid.index.sigma.nodeCount') }}: {{ graphStats.nodeCount }}
- 边数: + {{ tm('features.alkaid.index.sigma.edgeCount') }}: {{ graphStats.edgeCount }}
@@ -121,7 +121,7 @@ import ForceSupervisor from "graphology-layout-force/worker";
mdi-tools -

功能开发中

+

{{ tm('features.alkaid.index.sigma.inDevelopment') }}

@@ -134,12 +134,18 @@ import ForceSupervisor from "graphology-layout-force/worker"; import axios from 'axios'; import AstrBotConfig from '@/components/shared/AstrBotConfig.vue'; import WaitingForRestart from '@/components/shared/WaitingForRestart.vue'; +import { useModuleI18n } from '@/i18n/composables'; + export default { name: 'AlkaidPage', components: { AstrBotConfig, WaitingForRestart }, + setup() { + const { tm } = useModuleI18n('features/alkaid/index'); + return { tm }; + }, data() { return { renderer: null, diff --git a/dashboard/src/views/PlatformPage.vue b/dashboard/src/views/PlatformPage.vue index 92ec02b3e..aace75e30 100644 --- a/dashboard/src/views/PlatformPage.vue +++ b/dashboard/src/views/PlatformPage.vue @@ -177,11 +177,11 @@ export default { // 安全访问翻译的计算属性 messages() { return { - updateSuccess: "更新成功!", - addSuccess: "添加成功!", - deleteSuccess: "删除成功!", - statusUpdateSuccess: "状态更新成功!", - deleteConfirm: "确定要删除平台适配器" + updateSuccess: this.tm('features.platform.messages.updateSuccess'), + addSuccess: this.tm('features.platform.messages.addSuccess'), + deleteSuccess: this.tm('features.platform.messages.deleteSuccess'), + statusUpdateSuccess: this.tm('features.platform.messages.statusUpdateSuccess'), + deleteConfirm: this.tm('features.platform.messages.deleteConfirm') }; } }, diff --git a/dashboard/src/views/alkaid/KnowledgeBase.vue b/dashboard/src/views/alkaid/KnowledgeBase.vue index 6024abbf0..637da2575 100644 --- a/dashboard/src/views/alkaid/KnowledgeBase.vue +++ b/dashboard/src/views/alkaid/KnowledgeBase.vue @@ -4,35 +4,35 @@
-

还没有安装知识库插件 +

{{ tm('notInstalled.title') }} mdi-information-outline

- 立即安装 + {{ tm('notInstalled.install') }}
-

还没有知识库,快创建一个吧!🙂

+

{{ tm('empty.title') }}

- 创建知识库 + {{ tm('empty.create') }}
-

知识库列表 +

{{ tm('list.title') }} mdi-information-outline

- 创建知识库 + {{ tm('list.create') }} - 配置 + {{ tm('list.config') }}
@@ -44,7 +44,7 @@ {{ kb.emoji || '🙂' }}
{{ kb.collection_name }}
-
{{ kb.count || 0 }} 条知识
+
{{ kb.count || 0 }} {{ tm('list.knowledgeCount') }}
mdi-delete @@ -54,7 +54,7 @@
- Tips: 在聊天页面通过 /kb 指令了解如何使用! + {{ tm('list.tips') }}
@@ -64,7 +64,7 @@ - 创建新知识库 + {{ tm('createDialog.title') }}
@@ -75,22 +75,22 @@ - + - + :item-props="embeddingModelProps" :label="tm('createDialog.embeddingModelLabel')" variant="outlined" class="mt-2"> - Tips: 一旦选择了一个知识库的嵌入模型,请不要再修改该提供商的模型或者向量维度信息,否则将严重影响该知识库的召回率甚至报错。 + {{ tm('createDialog.tips') }} - 取消 - 创建 + {{ tm('createDialog.cancel') }} + {{ tm('createDialog.create') }} @@ -98,11 +98,11 @@ - 选择表情 + {{ tm('emojiPicker.title') }}
-
{{ category.name }}
+
{{ tm(`emojiPicker.categories.${category.key}`) }}
@@ -114,7 +114,7 @@ - 关闭 + {{ tm('emojiPicker.close') }} @@ -124,7 +124,7 @@
{{ currentKB.emoji || '🙂' }}
- {{ currentKB.collection_name }} - 知识库管理 + {{ currentKB.collection_name }} - {{ tm('contentDialog.title') }} mdi-close @@ -134,19 +134,19 @@
mdi-database - 嵌入模型: {{ currentKB._embedding_provider_config.embedding_model }} + {{ tm('contentDialog.embeddingModel') }}: {{ currentKB._embedding_provider_config.embedding_model }} mdi-vector-point - 向量维度: {{ currentKB._embedding_provider_config.embedding_dimensions }} + {{ tm('contentDialog.vectorDimension') }}: {{ currentKB._embedding_provider_config.embedding_dimensions }} 💡 使用方式: 在聊天页中输入 “/kb use {{ currentKB.collection_name }}”
- 上传文件 - 搜索内容 + {{ tm('contentDialog.tabs.upload') }} + {{ tm('contentDialog.tabs.search') }} @@ -154,22 +154,22 @@
-

上传文件到知识库

-

支持 txt、pdf、word、excel 等多种格式

+

{{ tm('upload.title') }}

+

{{ tm('upload.subtitle') }}

mdi-cloud-upload -

拖放文件到这里或点击上传

+

{{ tm('upload.dropzone') }}

mdi-puzzle-outline - 分片设置 + {{ tm('upload.chunkSettings.title') }} - 分片长度决定每块文本的大小,重叠长度决定相邻文本块之间的重叠程度。
- 较小的分片更精确但会增加数量,适当的重叠可提高检索准确性。 + {{ tm('upload.chunkSettings.tooltip') }}
- -
@@ -211,7 +210,7 @@
- 上传到知识库 + {{ tm('upload.upload') }}
@@ -226,23 +225,23 @@
- -
-

正在搜索...

+

{{ tm('search.searching') }}

-

搜索结果

+

{{ tm('search.resultsTitle') }}

@@ -254,7 +253,7 @@ - 相关度: {{ Math.round(result.score * 100) }}% + {{ tm('search.relevance') }}: {{ Math.round(result.score * 100) }}%
{{ result.content }}
@@ -264,7 +263,7 @@
- 没有找到匹配的内容 + {{ tm('search.noResults') }}
@@ -278,15 +277,15 @@ - 确认删除 + {{ tm('deleteDialog.title') }} -

您确定要删除知识库 {{ deleteTarget.collection_name }} 吗?

-

此操作不可逆,所有知识库内容将被永久删除。

+

{{ tm('deleteDialog.confirmText', { name: deleteTarget.collection_name }) }}

+

{{ tm('deleteDialog.warning') }}

- 取消 - 删除 + {{ tm('deleteDialog.cancel') }} + {{ tm('deleteDialog.delete') }}
@@ -301,12 +300,17 @@