1414 <div class =" menu_icon" >
1515 <img class =" icon" :src =" getImgSrc(item.icon == 'zhishiku' ? knowledgeIcon : item.icon == 'logout' ? logoutIcon : item.icon == 'tenant' ? tenantIcon : prefixIcon)" alt =" " >
1616 </div >
17- <span class =" menu_title" :title =" item.path === 'knowledge-bases' && kbMenuItem ? kbMenuItem.title : item.title " >{{ item.path === 'knowledge-bases' && kbMenuItem ? kbMenuItem.title : item.title }}</span >
17+ <span class =" menu_title" :title =" item.path === 'knowledge-bases' && kbMenuItem?.title ? kbMenuItem.title : t( item.titleKey) " >{{ item.path === 'knowledge-bases' && kbMenuItem?.title ? kbMenuItem.title : t( item.titleKey) }}</span >
1818 <!-- 知识库切换下拉箭头 -->
1919 <div v-if =" item.path === 'knowledge-bases' && isInKnowledgeBase"
2020 class =" kb-dropdown-icon"
3939 {{ kb.name }}
4040 </div >
4141 </div >
42- <t-popup overlayInnerClassName =" upload-popup" class =" placement top center" content =" 上传知识 "
42+ <t-popup overlayInnerClassName =" upload-popup" class =" placement top center" : content =" t('menu.uploadKnowledge') "
4343 placement =" top" show-arrow destroy-on-close >
4444 <div class =" upload-file-wrap" @click.stop =" uploadFile" variant =" outline"
4545 v-if =" item.path === 'knowledge-bases' && $route.name === 'knowledgeBaseDetail'" >
6666 <t-icon name =" ellipsis" class =" menu-more" />
6767 </div >
6868 <template #content >
69- <span class =" del_submenu" >删除记录 </span >
69+ <span class =" del_submenu" >{{ t('menu.deleteRecord') }} </span >
7070 </template >
7171 </t-popup >
7272 </div >
7373 </div >
7474 </div >
7575 </div >
7676 </div >
77-
77+
7878 <!-- 下半部分:账户信息、系统设置、退出登录 -->
7979 <div class =" menu_bottom" >
8080 <div class =" menu_box" v-for =" (item, index) in bottomMenuItems" :key =" 'bottom-' + index" >
8181 <div v-if =" item.path === 'logout'" >
82- <t-popconfirm
83- content =" 确定要退出登录吗? "
82+ <t-popconfirm
83+ : content =" t('menu.confirmLogout') "
8484 @confirm =" handleLogout"
8585 placement =" top"
8686 :show-arrow =" true"
9191 <div class =" menu_icon" >
9292 <img class =" icon" :src =" getImgSrc(logoutIcon)" alt =" " >
9393 </div >
94- <span class =" menu_title" >{{ item.title }}</span >
94+ <span class =" menu_title" >{{ t( item.titleKey) }}</span >
9595 </div >
9696 </div >
9797 </t-popconfirm >
103103 <div class =" menu_icon" >
104104 <img class =" icon" :src =" getImgSrc(item.icon == 'zhishiku' ? knowledgeIcon : item.icon == 'tenant' ? tenantIcon : prefixIcon)" alt =" " >
105105 </div >
106- <span class =" menu_title" >{{ item.path === 'knowledge-bases' && kbMenuItem ? kbMenuItem.title : item.title }}</span >
106+ <span class =" menu_title" >{{ item.path === 'knowledge-bases' && kbMenuItem?.title ? kbMenuItem.title : t( item.titleKey) }}</span >
107107 </div >
108108 </div >
109109 </div >
118118import { storeToRefs } from ' pinia' ;
119119import { onMounted , watch , computed , ref , reactive , nextTick } from ' vue' ;
120120import { useRoute , useRouter } from ' vue-router' ;
121+ import { useI18n } from ' vue-i18n' ;
121122import { getSessionsList , delSession } from " @/api/chat/index" ;
122123import { getKnowledgeBaseById , listKnowledgeBases , uploadKnowledgeFile } from ' @/api/knowledge-base' ;
123124import { kbFileTypeVerification } from ' @/utils/index' ;
124125import { useMenuStore } from ' @/stores/menu' ;
125126import { useAuthStore } from ' @/stores/auth' ;
126127import { MessagePlugin } from " tdesign-vue-next" ;
128+ const { t } = useI18n ();
127129let uploadInput = ref ();
128130const usemenuStore = useMenuStore ();
129131const authStore = useAuthStore ();
@@ -234,14 +236,14 @@ const uploadFile = async () => {
234236 const kb = kbResponse .data ;
235237
236238 // 检查知识库是否已初始化(有 EmbeddingModelID 和 SummaryModelID)
237- if (! kb .embedding_model_id || kb .embedding_model_id === ' ' ||
239+ if (! kb .embedding_model_id || kb .embedding_model_id === ' ' ||
238240 ! kb .summary_model_id || kb .summary_model_id === ' ' ) {
239- MessagePlugin .warning (" 该知识库尚未完成初始化配置,请先前往设置页面配置模型信息后再上传文件 " );
241+ MessagePlugin .warning (t ( ' knowledgeBase.notInitialized ' ) );
240242 return ;
241243 }
242244 } catch (error ) {
243245 console .error (' 获取知识库信息失败:' , error );
244- MessagePlugin .error (" 获取知识库信息失败,无法上传文件 " );
246+ MessagePlugin .error (t ( ' knowledgeBase.getInfoFailed ' ) );
245247 return ;
246248 }
247249 }
@@ -260,7 +262,7 @@ const upload = async (e: any) => {
260262 // 获取当前知识库ID
261263 const currentKbId = (route .params as any )?.kbId as string ;
262264 if (! currentKbId ) {
263- MessagePlugin .error (" 缺少知识库ID " );
265+ MessagePlugin .error (t ( ' knowledgeBase.missingId ' ) );
264266 return ;
265267 }
266268
@@ -280,24 +282,24 @@ const upload = async (e: any) => {
280282 const isSuccess = responseData .success || responseData .code === 200 || responseData .status === ' success' || (! responseData .error && responseData );
281283
282284 if (isSuccess ) {
283- MessagePlugin .info (" 上传成功! " );
285+ MessagePlugin .info (t ( ' file.uploadSuccess ' ) );
284286 } else {
285287 // 改进错误信息提取逻辑
286- let errorMessage = " 上传失败! " ;
288+ let errorMessage = t ( ' file.uploadFailed ' ) ;
287289 if (responseData .error && responseData .error .message ) {
288290 errorMessage = responseData .error .message ;
289291 } else if (responseData .message ) {
290292 errorMessage = responseData .message ;
291293 }
292294 if (responseData .code === ' duplicate_file' || (responseData .error && responseData .error .code === ' duplicate_file' )) {
293- errorMessage = " 文件已存在 " ;
295+ errorMessage = t ( ' file.fileExists ' ) ;
294296 }
295297 MessagePlugin .error (errorMessage );
296298 }
297299 } catch (err : any ) {
298- let errorMessage = " 上传失败! " ;
300+ let errorMessage = t ( ' file.uploadFailed ' ) ;
299301 if (err .code === ' duplicate_file' ) {
300- errorMessage = " 文件已存在 " ;
302+ errorMessage = t ( ' file.fileExists ' ) ;
301303 } else if (err .error && err .error .message ) {
302304 errorMessage = err .error .message ;
303305 } else if (err .message ) {
@@ -331,7 +333,7 @@ const delCard = (index: number, item: any) => {
331333 }
332334 }
333335 } else {
334- MessagePlugin .error (" 删除失败,请稍后再试! " );
336+ MessagePlugin .error (t ( ' knowledgeBase.deleteFailed ' ) );
335337 }
336338 })
337339}
@@ -392,7 +394,7 @@ const getMessageList = async () => {
392394 // 过滤出当前知识库的会话
393395 const filtered = res .data .filter ((s : any ) => s .knowledge_base_id === kbId )
394396 filtered .forEach ((item : any ) => {
395- let obj = { title: item .title ? item .title : " 新会话 " , path: ` chat/${kbId }/${item .id } ` , id: item .id , isMore: false , isNoTitle: item .title ? false : true }
397+ let obj = { title: item .title ? item .title : t ( ' menu.newSession ' ) , path: ` chat/${kbId }/${item .id } ` , id: item .id , isMore: false , isNoTitle: item .title ? false : true }
396398 usemenuStore .updatemenuArr (obj )
397399 });
398400 loading .value = false ;
0 commit comments