feat: system support i18n
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
Typos Check / Spell Check with Typos (push) Waiting to run

This commit is contained in:
wxg0103 2025-01-13 14:25:02 +08:00
parent 2f017082d2
commit c8dfe0fab0
13 changed files with 594 additions and 19 deletions

View File

@ -0,0 +1,65 @@
export default {
title: 'Knowledge Base',
createDataset: 'Create Knowledge Base',
general: 'General',
web: 'Web Site',
relatedApplications: 'Related Applications',
searchBar: {
placeholder: 'Search by name'
},
setting: {
vectorization: 'Vectorization',
sync: 'Sync'
},
tip: {
professionalMessage:
'The community edition supports up to 50 knowledge bases. For more knowledge bases, please upgrade to the professional edition.',
syncSuccess: 'Sync task sent successfully',
updateModeMessage:
'After modifying the knowledge base vector model, you need to vectorize the knowledge base. Do you want to continue saving?'
},
delete: {
confirmTitle: 'Confirm Deletion of Knowledge Base:',
confirmMessage1: 'This knowledge base is associated with',
confirmMessage2: 'applications. Deleting it will be irreversible, please proceed with caution.'
},
datasetForm: {
title: {
info: 'Basic Information'
},
form: {
datasetName: {
label: 'Knowledge Base Name',
placeholder: 'Please enter the knowledge base name',
requiredMessage: 'Please enter the knowledge base name'
},
datasetDescription: {
label: 'Knowledge Base Description',
placeholder:
'Describe the content of the knowledge base. A detailed description will help AI understand the content better, improving the accuracy of content retrieval and hit rate.',
requiredMessage: 'Please enter the knowledge base description'
},
vectorModel: {
label: 'Vector Model',
placeholder: 'Please select a vector model',
requiredMessage: 'Please enter the Embedding model'
},
datasetType: {
label: 'Knowledge Base Type',
generalInfo: 'Upload local files or manually enter',
webInfo: 'Sync text data from a Web site'
},
source_url: {
label: 'Web Root URL',
placeholder: 'Please enter the Web root URL',
requiredMessage: 'Please enter the Web root URL'
},
selector: {
label: 'Selector',
placeholder: 'Default is body, can input .classname/#idname/tagname'
}
},
buttons: {},
dialog: {}
}
}

View File

@ -0,0 +1,84 @@
export default {
title: 'Function Library',
createFunction: 'Create Function',
editFunction: 'Edit Function',
copyFunction: 'Copy Function',
searchBar: {
placeholder: 'Search by function name'
},
setting: {
disabled: 'Disabled'
},
tip: {
saveMessage: 'Unsaved changes will be lost. Are you sure you want to exit?'
},
delete: {
confirmTitle: 'Confirm Deletion of Function:',
confirmMessage:
'Deleting this function will cause errors in applications that reference it when they are queried. Please proceed with caution.'
},
disabled: {
confirmTitle: 'Confirm Disable Function:',
confirmMessage:
'Disabling this function will cause errors in applications that reference it when they are queried. Please proceed with caution.'
},
functionForm: {
title: {
copy: 'Copy',
editParam: 'Edit Parameters',
addParam: 'Add Parameter',
baseInfo: 'Basic Information'
},
form: {
functionName: {
label: 'Function Name',
placeholder: 'Please enter the function name',
requiredMessage: 'Please enter the function name'
},
functionDescription: {
label: 'Description',
placeholder: 'Please enter a description of the function'
},
permission_type: {
label: 'Permissions',
requiredMessage: 'Please select'
},
inputParam: {
label: 'Input Parameters',
placeholder: 'Please enter parameter values',
requiredMessage: 'Please enter parameter values'
},
paramName: {
label: 'Parameter Name',
placeholder: 'Please enter the parameter name',
requiredMessage: 'Please enter the parameter name'
},
dataType: {
label: 'Data Type'
},
source: {
label: 'Source',
custom: 'Custom',
reference: 'Reference Parameter'
},
required: {
label: 'Required'
},
param: {
outputParam: 'Output Parameters',
paramInfo1: 'Displayed when using the function',
paramInfo2: 'Not displayed when using the function',
required: 'Required',
code: 'Code',
result: 'Result'
},
debug: {
run: 'Run',
output: 'Output',
runResult: 'Run Result',
runSuccess: 'Run Successful',
runFailed: 'Run Failed'
}
}
}
}

View File

@ -1,10 +1,20 @@
import notFound from './404';
import application from './application';
import applicationOverview from './application-overview';
import system from './system';
import notFound from './404'
import application from './application'
import applicationOverview from './application-overview'
import system from './system'
import functionLib from './function-lib'
import user from './user'
import team from './team'
import template from './template'
import dataset from './dataset'
export default {
notFound,
application,
applicationOverview,
system
};
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset
}

View File

@ -0,0 +1,30 @@
export default {
title: 'Team Members',
member: 'Member',
manage: 'Owner',
permissionSetting: 'Permission Settings',
addMember: 'Add Member',
addSubTitle: 'Members can access the data you authorize after logging in.',
searchBar: {
placeholder: 'Enter username to search'
},
delete: {
button: 'Remove',
confirmTitle: 'Confirm Removal of Member:',
confirmMessage:
'Removing the member will revoke their access to knowledge bases and applications.'
},
setting: {
management: 'Manage',
check: 'View'
},
teamForm: {
form: {
userName: {
label: 'Username/Email',
placeholder: "Enter the member's username or email",
requiredMessage: 'Enter the username/email'
}
}
}
}

View File

@ -0,0 +1,31 @@
export default {
title: 'Model Settings',
provider: 'Provider',
providerPlaceholder: 'Select Provider',
addModel: 'Add Model',
searchBar: {
placeholder: 'Search by name'
},
delete: {},
setting: {},
model: {
allModel: 'All Models',
publicModel: 'Public Models',
privateModel: 'Private Models',
LLM: 'Large Language Model',
EMBEDDING: 'Embedding Model',
RERANKER: 'Reranker Model',
STT: 'Speech-to-Text',
TTS: 'Text-to-Speech',
IMAGE: 'Image Understanding',
TTI: 'Image Generation'
},
templateForm: {
form: {
provider: {
label: 'Provider',
placeholder: 'Select Provider'
}
}
}
}

View File

@ -0,0 +1,70 @@
export default {
title: 'User Management',
createUser: 'Create User',
editUser: 'Edit User',
setting: {
updatePwd: 'Update User Password'
},
tip: {
professionalMessage:
'The community edition supports up to 2 users. For more users, please upgrade to the professional edition.',
updatePwdSuccess: 'User password updated successfully'
},
delete: {
confirmTitle: 'Confirm Deletion of User:',
confirmMessage:
'Deleting this user will also delete all resources (applications, knowledge bases, models) created by this user. Please proceed with caution.'
},
disabled: {
confirmTitle: 'Confirm Disable Function:',
confirmMessage:
'Disabling this function will cause errors when applications that reference it are queried. Please proceed with caution.'
},
userForm: {
form: {
username: {
label: 'Username',
placeholder: 'Please enter username',
requiredMessage: 'Please enter username',
lengthMessage: 'Length must be between 6 and 20 characters'
},
nick_name: {
label: 'Name',
placeholder: 'Please enter name'
},
email: {
label: 'Email',
placeholder: 'Please enter email',
requiredMessage: 'Please enter email'
},
phone: {
label: 'Phone Number',
placeholder: 'Please enter phone number'
},
password: {
label: 'Login Password',
placeholder: 'Please enter password',
requiredMessage: 'Please enter password',
lengthMessage: 'Length must be between 6 and 20 characters'
},
new_password: {
label: 'New Password',
placeholder: 'Please enter new password',
requiredMessage: 'Please enter new password'
},
re_password: {
label: 'Confirm Password',
placeholder: 'Please enter confirm password',
requiredMessage: 'Please enter confirm password',
validatorMessage: 'Passwords do not match'
}
}
},
source: {
label: 'User Type',
local: 'System User',
wecom: 'WeCom (Enterprise WeChat)',
lark: 'Lark (Feishu)',
dingtalk: 'DingTalk'
}
}

View File

@ -0,0 +1,63 @@
export default {
title: '知識庫',
createDataset: '建立知識庫',
general: '通用型',
web: 'Web 站點',
relatedApplications: '關聯應用',
searchBar: {
placeholder: '按名稱搜尋'
},
setting: {
vectorization: '向量化',
sync: '同步'
},
tip: {
professionalMessage: '社群版最多支援 50 個知識庫,如需擁有更多知識庫,請升級為專業版。',
syncSuccess: '同步任務發送成功',
updateModeMessage: '修改知識庫向量模型後,需要對知識庫向量化,是否繼續保存?'
},
delete: {
confirmTitle: '是否刪除知識庫:',
confirmMessage1: '此知識庫關聯',
confirmMessage2: '個應用,刪除後無法恢復,請謹慎操作。'
},
datasetForm: {
title: {
info: '基本資訊'
},
form: {
datasetName: {
label: '知識庫名稱',
placeholder: '請輸入知識庫名稱',
requiredMessage: '請輸入應用名稱'
},
datasetDescription: {
label: '知識庫描述',
placeholder:
'描述知識庫的內容詳盡的描述將幫助AI能深入理解該知識庫的內容能更準確的檢索到內容提高該知識庫的命中率。',
requiredMessage: '請輸入知識庫描述'
},
vectorModel: {
label: '向量模型',
placeholder: '請選擇向量模型',
requiredMessage: '請輸入Embedding模型'
},
datasetType: {
label: '知識庫類型',
generalInfo: '上傳本地檔案或手動輸入',
webInfo: '同步Web網站文字資料'
},
source_url: {
label: 'Web 根位址',
placeholder: '請輸入 Web 根位址',
requiredMessage: '請輸入 Web 根位址'
},
selector: {
label: '選擇器',
placeholder: '預設為 body可輸入 .classname/#idname/tagname'
}
},
buttons: {},
dialog: {}
}
}

View File

@ -0,0 +1,82 @@
export default {
title: '函數庫',
createFunction: '建立函數',
editFunction: '編輯函數',
copyFunction: '複製函數',
searchBar: {
placeholder: '按函數名稱搜尋'
},
setting: {
disabled: '停用'
},
tip: {
saveMessage: '當前的更改尚未保存,確認退出嗎?'
},
delete: {
confirmTitle: '是否刪除函數:',
confirmMessage: '刪除後,引用該函數的應用在查詢時會報錯,請謹慎操作。'
},
disabled: {
confirmTitle: '是否停用函數:',
confirmMessage: '停用後,引用該函數的應用在查詢時會報錯,請謹慎操作。'
},
functionForm: {
title: {
copy: '副本',
editParam: '編輯參數',
addParam: '添加參數',
baseInfo: '基礎信息'
},
form: {
functionName: {
label: '函數名稱',
placeholder: '請輸入函數名稱',
requiredMessage: '請輸入函數名稱'
},
functionDescription: {
label: '描述',
placeholder: '請輸入函數的描述'
},
permission_type: {
label: '權限',
requiredMessage: '請選擇'
},
inputParam: {
label: '輸入參數',
placeholder: '請輸入參數值',
requiredMessage: '請輸入參數值'
},
paramName: {
label: '參數名',
placeholder: '請輸入參數名',
requiredMessage: '請輸入參數名'
},
dataType: {
label: '數據類型'
},
source: {
label: '來源',
custom: '自定義',
reference: '引用參數'
},
required: {
label: '是否必填'
},
param: {
outputParam: '輸出參數',
paramInfo1: '使用函數時顯示',
paramInfo2: '使用函數時不顯示',
required: '必填',
code: '代碼',
result: '結果'
},
debug: {
run: '運行',
output: '輸出',
runResult: '運行結果',
runSuccess: '運行成功',
runFailed: '運行失敗'
}
}
}
}

View File

@ -1,10 +1,20 @@
import notFound from './404';
import application from './application';
import applicationOverview from './application-overview';
import system from './system';
import notFound from './404'
import application from './application'
import applicationOverview from './application-overview'
import system from './system'
import functionLib from './function-lib'
import user from './user'
import team from './team'
import template from './template'
import dataset from './dataset'
export default {
notFound,
application,
applicationOverview,
system
};
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset
}

View File

@ -0,0 +1,29 @@
export default {
title: '團隊成員',
member: '成員',
manage: '所有者',
permissionSetting: '權限設定',
addMember: '新增成員',
addSubTitle: '成員登入後可以存取您授權的資料。',
searchBar: {
placeholder: '請輸入使用者名稱搜尋'
},
delete: {
button: '移除',
confirmTitle: '是否移除成員:',
confirmMessage: '移除後將會取消成員擁有之知識庫和應用程式權限。'
},
setting: {
management: '管理',
check: '查看'
},
teamForm: {
form: {
userName: {
label: '使用者名稱/電子郵件',
placeholder: '請輸入成員的使用者名稱或電子郵件',
requiredMessage: '請輸入使用者名稱/電子郵件'
}
}
}
}

View File

@ -0,0 +1,31 @@
export default {
title: '模型設定',
provider: '供應商',
providerPlaceholder: '選擇供應商',
addModel: '新增模型',
searchBar: {
placeholder: '按名稱搜尋'
},
delete: {},
setting: {},
model: {
allModel: '全部模型',
publicModel: '公有模型',
privateModel: '私有模型',
LLM: '大語言模型',
EMBEDDING: '向量模型',
RERANKER: '重排模型',
STT: '語音辨識',
TTS: '語音合成',
IMAGE: '圖片理解',
TTI: '圖片生成'
},
templateForm: {
form: {
provider: {
label: '供應商',
placeholder: '選擇供應商'
}
}
}
}

View File

@ -0,0 +1,68 @@
export default {
title: '使用者管理',
createUser: '建立使用者',
editUser: '編輯使用者',
setting: {
updatePwd: '修改使用者密碼'
},
tip: {
professionalMessage: '社群版最多支援 2 個使用者,如需擁有更多使用者,請升級為專業版。',
updatePwdSuccess: '使用者密碼修改成功'
},
delete: {
confirmTitle: '是否刪除該使用者?',
confirmMessage:
'刪除該使用者後,該使用者建立的所有資源(應用、知識庫、模型)都會被刪除,請謹慎操作。'
},
disabled: {
confirmTitle: '是否停用函數?',
confirmMessage: '停用後,引用該函數的應用在查詢時會報錯,請謹慎操作。'
},
userForm: {
form: {
username: {
label: '使用者名稱',
placeholder: '請輸入使用者名稱',
requiredMessage: '請輸入使用者名稱',
lengthMessage: '長度須介於 6 到 20 個字元之間'
},
nick_name: {
label: '姓名',
placeholder: '請輸入姓名'
},
email: {
label: '電子信箱',
placeholder: '請輸入電子信箱',
requiredMessage: '請輸入電子信箱'
},
phone: {
label: '手機號碼',
placeholder: '請輸入手機號碼'
},
password: {
label: '登入密碼',
placeholder: '請輸入密碼',
requiredMessage: '請輸入密碼',
lengthMessage: '長度須介於 6 到 20 個字元之間'
},
new_password: {
label: '新密碼',
placeholder: '請輸入新密碼',
requiredMessage: '請輸入新密碼'
},
re_password: {
label: '確認密碼',
placeholder: '請輸入確認密碼',
requiredMessage: '請輸入確認密碼',
validatorMessage: '密碼不一致'
}
}
},
source: {
label: '使用者類型',
local: '系統使用者',
wecom: '企業微信',
lark: '飛書',
dingtalk: '釘釘'
}
}

View File

@ -44,7 +44,7 @@
}}
</template>
</el-table-column>
<el-table-column :label="$t('common.status.label')" width="60">
<el-table-column :label="$t('common.status.label')" width="80">
<template #default="{ row }">
<div @click.stop>
<el-switch
@ -112,6 +112,7 @@ import { datetimeFormat } from '@/utils/time'
import useStore from '@/stores'
import { ValidType, ValidCount } from '@/enums/common'
import { t } from '@/locales'
const { common, user } = useStore()
const UserDialogRef = ref()
@ -148,6 +149,7 @@ function changeState(bool: Boolean, row: any) {
function editPwdUser(row: any) {
UserPwdDialogRef.value.open(row)
}
function editUser(row: any) {
title.value = t('views.user.editUser')
UserDialogRef.value.open(row)