Merge branch 'rc/new-plugin' into refactor/new-plugin-system

This commit is contained in:
Junyan Qin
2025-08-24 21:40:02 +08:00
232 changed files with 11998 additions and 1440 deletions

View File

@@ -6,6 +6,7 @@ import LanguageDetector from 'i18next-browser-languagedetector';
import enUS from './locales/en-US';
import zhHans from './locales/zh-Hans';
import zhHant from './locales/zh-Hant';
import jaJP from './locales/ja-JP';
i18n
@@ -19,6 +20,9 @@ i18n
'zh-Hans': {
translation: zhHans,
},
'zh-Hant': {
translation: zhHant,
},
'ja-JP': {
translation: jaJP,
},

View File

@@ -2,6 +2,8 @@ const enUS = {
common: {
login: 'Login',
logout: 'Logout',
accountOptions: 'Account',
account: 'Account',
email: 'Email',
password: 'Password',
welcome: 'Welcome back to LangBot 👋',
@@ -39,6 +41,23 @@ const enUS = {
addRound: 'Add Round',
copySuccess: 'Copy Successfully',
test: 'Test',
forgotPassword: 'Forgot Password?',
loading: 'Loading...',
theme: 'Theme',
changePassword: 'Change Password',
currentPassword: 'Current Password',
newPassword: 'New Password',
confirmNewPassword: 'Confirm New Password',
enterCurrentPassword: 'Enter current password',
enterNewPassword: 'Enter new password',
enterConfirmPassword: 'Confirm new password',
currentPasswordRequired: 'Current password is required',
newPasswordRequired: 'New password is required',
confirmPasswordRequired: 'Confirm password is required',
passwordsDoNotMatch: 'Passwords do not match',
changePasswordSuccess: 'Password changed successfully',
changePasswordFailed:
'Failed to change password, please check your current password',
},
notFound: {
title: 'Page not found',
@@ -85,14 +104,13 @@ const enUS = {
string: 'String',
number: 'Number',
boolean: 'Boolean',
extraParametersDescription:
'Will be attached to the request body, such as max_tokens, temperature, top_p, etc.',
selectModelProvider: 'Select Model Provider',
modelProviderDescription:
'Please fill in the model name provided by the supplier',
selectModel: 'Select Model',
testSuccess: 'Test successful',
testError: 'Test failed, please check your model configuration',
llmModels: 'LLM Models',
},
bots: {
title: 'Bots',
@@ -266,6 +284,10 @@ const enUS = {
today: 'Today',
updateTime: 'Updated ',
defaultBadge: 'Default',
sortBy: 'Sort by',
newestCreated: 'Newest Created',
recentlyEdited: 'Recently Edited',
earliestEdited: 'Earliest Edited',
basicInfo: 'Basic',
aiCapabilities: 'AI',
triggerConditions: 'Trigger',
@@ -300,8 +322,72 @@ const enUS = {
loadMessagesFailed: 'Failed to load messages',
loadPipelinesFailed: 'Failed to load pipelines',
atTips: 'Mention the bot',
streaming: 'Streaming',
},
},
knowledge: {
title: 'Knowledge',
createKnowledgeBase: 'Create Knowledge Base',
editKnowledgeBase: 'Edit Knowledge Base',
selectKnowledgeBase: 'Select Knowledge Base',
empty: 'Empty',
editDocument: 'Documents',
description: 'Configuring knowledge bases for improved LLM responses',
metadata: 'Metadata',
documents: 'Documents',
kbNameRequired: 'Knowledge base name cannot be empty',
kbDescriptionRequired: 'Knowledge base description cannot be empty',
embeddingModelUUIDRequired: 'Embedding model cannot be empty',
daysAgo: 'days ago',
today: 'Today',
kbName: 'Knowledge Base Name',
kbDescription: 'Knowledge Base Description',
topK: 'Top K',
topKRequired: 'Top K cannot be empty',
topKMax: 'Top K maximum value is 30',
topKdescription:
'Used to specify the number of relevant documents to retrieve, ranging from 1 to 30.',
defaultDescription: 'A knowledge base',
embeddingModelUUID: 'Embedding Model',
selectEmbeddingModel: 'Select Embedding Model',
embeddingModelDescription:
'Used to vectorize the text, you can configure it in the Models page',
updateTime: 'Updated ',
cannotChangeEmbeddingModel:
'Knowledge base created cannot be modified embedding model',
updateKnowledgeBaseSuccess: 'Knowledge base updated successfully',
updateKnowledgeBaseFailed: 'Knowledge base update failed',
documentsTab: {
name: 'Name',
status: 'Status',
noResults: 'No documents',
dragAndDrop: 'Drag and drop files here or click to upload',
uploading: 'Uploading...',
supportedFormats:
'Supports PDF, Word, TXT, Markdown, HTML, ZIP and other document formats',
uploadSuccess: 'File uploaded successfully!',
uploadError: 'File upload failed, please try again',
uploadingFile: 'Uploading file...',
actions: 'Actions',
delete: 'Delete File',
fileDeleteSuccess: 'File deleted successfully',
fileDeleteFailed: 'File deletion failed',
processing: 'Processing',
completed: 'Completed',
failed: 'Failed',
},
deleteKnowledgeBaseConfirmation:
'Are you sure you want to delete this knowledge base? All documents in this knowledge base will be deleted.',
retrieve: 'Retrieve Test',
retrieveTest: 'Retrieve Test',
query: 'Query',
queryPlaceholder: 'Enter query text...',
distance: 'Distance',
content: 'Content',
fileName: 'File Name',
noResults: 'No results',
retrieveError: 'Retrieve failed',
},
register: {
title: 'Initialize LangBot 👋',
description: 'This is your first time starting LangBot',
@@ -311,6 +397,40 @@ const enUS = {
initSuccess: 'Initialization successful, please login',
initFailed: 'Initialization failed: ',
},
resetPassword: {
title: 'Reset Password 🔐',
description:
'Enter your recovery key and new password to reset your account password',
recoveryKey: 'Recovery Key',
recoveryKeyDescription:
'Stored in `system.recovery_key` of config file `data/config.yaml`',
newPassword: 'New Password',
enterRecoveryKey: 'Enter recovery key',
enterNewPassword: 'Enter new password',
recoveryKeyRequired: 'Recovery key cannot be empty',
newPasswordRequired: 'New password cannot be empty',
resetPassword: 'Reset Password',
resetting: 'Resetting...',
resetSuccess: 'Password reset successfully, please login',
resetFailed:
'Password reset failed, please check your email and recovery key',
backToLogin: 'Back to Login',
},
embedding: {
description: 'Manage Embedding models for text vectorization',
createModel: 'Create Embedding Model',
editModel: 'Edit Embedding Model',
getModelListError: 'Failed to get Embedding model list: ',
embeddingModels: 'Embedding',
extraParametersDescription:
'Will be attached to the request body, such as encoding_format, dimensions, etc.',
},
llm: {
description: 'Manage LLM models for conversation generation',
llmModels: 'LLM',
extraParametersDescription:
'Will be attached to the request body, such as max_tokens, temperature, top_p, etc.',
},
};
export default enUS;

View File

@@ -2,6 +2,8 @@ const jaJP = {
common: {
login: 'ログイン',
logout: 'ログアウト',
accountOptions: 'アカウントオプション',
account: 'アカウント',
email: 'メールアドレス',
password: 'パスワード',
welcome: 'LangBot へおかえりなさい 👋',
@@ -40,6 +42,23 @@ const jaJP = {
addRound: 'ラウンドを追加',
copySuccess: 'コピーに成功しました',
test: 'テスト',
forgotPassword: 'パスワードを忘れた?',
loading: '読み込み中...',
theme: 'テーマ',
changePassword: 'パスワードを変更',
currentPassword: '現在のパスワード',
newPassword: '新しいパスワード',
confirmNewPassword: '新しいパスワードを確認',
enterCurrentPassword: '現在のパスワードを入力',
enterNewPassword: '新しいパスワードを入力',
enterConfirmPassword: '新しいパスワードを確認',
currentPasswordRequired: '現在のパスワードは必須です',
newPasswordRequired: '新しいパスワードは必須です',
confirmPasswordRequired: '新しいパスワードを確認してください',
passwordsDoNotMatch: '新しいパスワードが一致しません',
changePasswordSuccess: 'パスワードの変更に成功しました',
changePasswordFailed:
'パスワードの変更に失敗しました。現在のパスワードを確認してください',
},
notFound: {
title: 'ページが見つかりません',
@@ -267,6 +286,10 @@ const jaJP = {
today: '今日',
updateTime: '更新日時',
defaultBadge: 'デフォルト',
sortBy: '並び順',
newestCreated: '最新作成',
recentlyEdited: '最近編集',
earliestEdited: '最古編集',
basicInfo: '基本情報',
aiCapabilities: 'AI機能',
triggerConditions: 'トリガー条件',
@@ -302,8 +325,73 @@ const jaJP = {
loadMessagesFailed: 'メッセージの読み込みに失敗しました',
loadPipelinesFailed: 'パイプラインの読み込みに失敗しました',
atTips: 'ボットをメンション',
streaming: 'ストリーミング',
},
},
knowledge: {
title: '知識ベース',
createKnowledgeBase: '知識ベースを作成',
editKnowledgeBase: '知識ベースを編集',
selectKnowledgeBase: '知識ベースを選択',
empty: 'なし',
editDocument: 'ドキュメント',
description: 'LLMの回答品質向上のための知識ベースを設定します',
metadata: 'メタデータ',
documents: 'ドキュメント',
kbNameRequired: '知識ベース名は必須です',
kbDescriptionRequired: '知識ベースの説明は必須です',
embeddingModelUUIDRequired: '埋め込みモデルは必須です',
daysAgo: '日前',
today: '今日',
kbName: '知識ベース名',
kbDescription: '知識ベースの説明',
topK: 'Top K',
topKRequired: 'Top Kは必須です',
topKMax: 'Top Kの最大値は30です',
topKdescription:
'取得する関連性の高い上位K件の文書の数。130の範囲で設定できます',
defaultDescription: '知識ベース',
embeddingModelUUID: '埋め込みモデル',
selectEmbeddingModel: '埋め込みモデルを選択',
embeddingModelDescription:
'テキストのベクトル化に使用する埋め込みモデルを管理します',
updateTime: '更新日時',
cannotChangeEmbeddingModel:
'知識ベース作成後は埋め込みモデルを変更できません',
updateKnowledgeBaseSuccess: '知識ベースの更新に成功しました',
updateKnowledgeBaseFailed: '知識ベースの更新に失敗しました',
documentsTab: {
name: '名前',
status: 'ステータス',
noResults: 'ドキュメントがありません',
dragAndDrop:
'ファイルをここにドラッグ&ドロップするか、クリックしてアップロードしてください',
uploading: 'アップロード中...',
supportedFormats:
'PDF、Word、TXT、Markdownなどのドキュメントファイルをサポートしています',
uploadSuccess: 'ファイルのアップロードに成功しました!',
uploadError: 'ファイルのアップロードに失敗しました。再度お試しください',
uploadingFile: 'ファイルをアップロード中...',
actions: 'アクション',
delete: 'ドキュメントを削除',
fileDeleteSuccess: 'ドキュメントの削除に成功しました',
fileDeleteFailed: 'ドキュメントの削除に失敗しました',
processing: '処理中',
completed: '完了',
failed: '失敗',
},
deleteKnowledgeBaseConfirmation:
'本当にこの知識ベースを削除しますか?この知識ベースに紐付けられたドキュメントは削除されます。',
retrieve: '検索テスト',
retrieveTest: '検索テスト',
query: '検索',
queryPlaceholder: '検索内容を入力...',
distance: '距離',
content: '内容',
fileName: 'ファイル名',
noResults: '検索結果がありません',
retrieveError: '検索に失敗しました',
},
register: {
title: 'LangBot を初期化 👋',
description: 'これはLangBotの初回起動です',
@@ -313,6 +401,40 @@ const jaJP = {
initSuccess: '初期化に成功しました。ログインしてください',
initFailed: '初期化に失敗しました:',
},
resetPassword: {
title: 'パスワードをリセット 🔐',
description:
'復旧キーと新しいパスワードを入力して、アカウントのパスワードをリセットします',
recoveryKey: '復旧キー',
recoveryKeyDescription:
'設定ファイル `data/config.yaml` の `system.recovery_key` に保存されています',
newPassword: '新しいパスワード',
enterRecoveryKey: '復旧キーを入力',
enterNewPassword: '新しいパスワードを入力',
recoveryKeyRequired: '復旧キーは必須です',
newPasswordRequired: '新しいパスワードは必須です',
resetPassword: 'パスワードをリセット',
resetting: 'リセット中...',
resetSuccess: 'パスワードのリセットに成功しました。ログインしてください',
resetFailed:
'パスワードのリセットに失敗しました。メールアドレスと復旧キーを確認してください',
backToLogin: 'ログインに戻る',
},
embedding: {
description: 'テキストのベクトル化に使用する埋め込みモデルを管理します',
createModel: '埋め込みモデルを作成',
editModel: '埋め込みモデルを編集',
getModelListError: '埋め込みモデルリストの取得に失敗しました:',
embeddingModels: '埋め込みモデル',
extraParametersDescription:
'リクエストボディに追加されるパラメータencoding_format、dimensions など)',
},
llm: {
description: 'チャットメッセージの生成に使用するLLMモデルを管理します',
llmModels: 'LLMモデル',
extraParametersDescription:
'リクエストボディに追加されるパラメータmax_tokens、temperature、top_p など)',
},
};
export default jaJP;

View File

@@ -2,6 +2,8 @@ const zhHans = {
common: {
login: '登录',
logout: '退出登录',
accountOptions: '账户选项',
account: '账户',
email: '邮箱',
password: '密码',
welcome: '欢迎回到 LangBot 👋',
@@ -39,6 +41,22 @@ const zhHans = {
addRound: '添加回合',
copySuccess: '复制成功',
test: '测试',
forgotPassword: '忘记密码?',
loading: '加载中...',
theme: '主题',
changePassword: '修改密码',
currentPassword: '当前密码',
newPassword: '新密码',
confirmNewPassword: '确认新密码',
enterCurrentPassword: '输入当前密码',
enterNewPassword: '输入新密码',
enterConfirmPassword: '确认新密码',
currentPasswordRequired: '当前密码不能为空',
newPasswordRequired: '新密码不能为空',
confirmPasswordRequired: '确认密码不能为空',
passwordsDoNotMatch: '两次输入的密码不一致',
changePasswordSuccess: '密码修改成功',
changePasswordFailed: '密码修改失败,请检查当前密码是否正确',
},
notFound: {
title: '页面不存在',
@@ -86,13 +104,12 @@ const zhHans = {
string: '字符串',
number: '数字',
boolean: '布尔值',
extraParametersDescription:
'将在请求时附加到请求体中,如 max_tokens, temperature, top_p 等',
selectModelProvider: '选择模型供应商',
modelProviderDescription: '请填写供应商向您提供的模型名称',
selectModel: '请选择模型',
testSuccess: '测试成功',
testError: '测试失败,请检查模型配置',
llmModels: '对话模型',
},
bots: {
title: '机器人',
@@ -257,6 +274,10 @@ const zhHans = {
today: '今天',
updateTime: '更新于',
defaultBadge: '默认',
sortBy: '排序方式',
newestCreated: '最新创建',
recentlyEdited: '最近编辑',
earliestEdited: '最早编辑',
basicInfo: '基础信息',
aiCapabilities: 'AI 能力',
triggerConditions: '触发条件',
@@ -291,8 +312,68 @@ const zhHans = {
loadMessagesFailed: '加载消息失败',
loadPipelinesFailed: '加载流水线失败',
atTips: '提及机器人',
streaming: '流式传输',
},
},
knowledge: {
title: '知识库',
createKnowledgeBase: '创建知识库',
editKnowledgeBase: '编辑知识库',
selectKnowledgeBase: '选择知识库',
empty: '无',
editDocument: '文档',
description: '配置可用于提升模型回复质量的知识库',
metadata: '元数据',
documents: '文档',
kbNameRequired: '知识库名称不能为空',
kbDescriptionRequired: '知识库描述不能为空',
embeddingModelUUIDRequired: '嵌入模型不能为空',
daysAgo: '天前',
today: '今天',
kbName: '知识库名称',
kbDescription: '知识库描述',
topK: '召回数量',
topKRequired: '召回数量不能为空',
topKMax: '召回数量最大值为 30',
topKdescription: '召回相关文档块的数量,取值范围为 1-30',
defaultDescription: '一个知识库',
embeddingModelUUID: '嵌入模型',
selectEmbeddingModel: '选择嵌入模型',
embeddingModelDescription: '用于向量化文本,可在模型配置页面配置',
updateTime: '更新于',
cannotChangeEmbeddingModel: '知识库创建后不可修改嵌入模型',
updateKnowledgeBaseSuccess: '知识库更新成功',
updateKnowledgeBaseFailed: '知识库更新失败',
documentsTab: {
name: '名称',
status: '状态',
noResults: '暂无文档',
dragAndDrop: '拖拽文件到此处或点击上传',
uploading: '上传中...',
supportedFormats: '支持 PDF、Word、TXT、Markdown、HTML、ZIP 等文档格式',
uploadSuccess: '文件上传成功!',
uploadError: '文件上传失败,请重试',
uploadingFile: '上传文件中...',
actions: '操作',
delete: '删除文件',
fileDeleteSuccess: '文件删除成功',
fileDeleteFailed: '文件删除失败',
processing: '处理中',
completed: '完成',
failed: '失败',
},
deleteKnowledgeBaseConfirmation:
'你确定要删除这个知识库吗?此知识库下的所有文档将被删除。',
retrieve: '检索测试',
retrieveTest: '检索测试',
query: '查询',
queryPlaceholder: '输入查询内容...',
distance: '距离',
content: '内容',
fileName: '文件名',
noResults: '暂无结果',
retrieveError: '检索失败',
},
register: {
title: '初始化 LangBot 👋',
description: '这是您首次启动 LangBot',
@@ -301,6 +382,38 @@ const zhHans = {
initSuccess: '初始化成功 请登录',
initFailed: '初始化失败:',
},
resetPassword: {
title: '重置密码 🔐',
description: '输入恢复密钥和新的密码来重置您的账户密码',
recoveryKey: '恢复密钥',
recoveryKeyDescription:
'存储在配置文件`data/config.yaml`的`system.recovery_key`中',
newPassword: '新密码',
enterRecoveryKey: '输入恢复密钥',
enterNewPassword: '输入新密码',
recoveryKeyRequired: '恢复密钥不能为空',
newPasswordRequired: '新密码不能为空',
resetPassword: '重置密码',
resetting: '重置中...',
resetSuccess: '密码重置成功,请登录',
resetFailed: '密码重置失败,请检查邮箱和恢复密钥是否正确',
backToLogin: '返回登录',
},
embedding: {
description: '管理嵌入模型,用于向量化文本',
createModel: '创建嵌入模型',
editModel: '编辑嵌入模型',
getModelListError: '获取嵌入模型列表失败:',
embeddingModels: '嵌入模型',
extraParametersDescription:
'将在请求时附加到请求体中,如 encoding_format, dimensions 等',
},
llm: {
llmModels: '对话模型',
description: '管理 LLM 模型,用于对话消息生成',
extraParametersDescription:
'将在请求时附加到请求体中,如 max_tokens, temperature, top_p 等',
},
};
export default zhHans;

View File

@@ -0,0 +1,350 @@
const zhHant = {
common: {
login: '登入',
logout: '登出',
accountOptions: '帳戶選項',
account: '帳戶',
email: '電子郵件',
password: '密碼',
welcome: '歡迎回到 LangBot 👋',
continueToLogin: '登入以繼續',
loginSuccess: '登入成功',
loginFailed: '登入失敗,請檢查電子郵件和密碼是否正確',
enterEmail: '輸入電子郵件地址',
enterPassword: '輸入密碼',
invalidEmail: '請輸入有效的電子郵件地址',
emptyPassword: '請輸入密碼',
language: '語言',
helpDocs: '輔助說明',
create: '建立',
edit: '編輯',
delete: '刪除',
add: '新增',
select: '請選擇',
cancel: '取消',
submit: '提交',
error: '錯誤',
success: '成功',
save: '儲存',
saving: '儲存中...',
confirm: '確認',
confirmDelete: '確認刪除',
deleteConfirmation: '您確定要刪除這個嗎?',
selectOption: '選擇一個選項',
required: '必填',
enable: '是否啟用',
name: '名稱',
description: '描述',
close: '關閉',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
addRound: '新增回合',
copySuccess: '複製成功',
test: '測試',
forgotPassword: '忘記密碼?',
loading: '載入中...',
theme: '主題',
changePassword: '修改密碼',
currentPassword: '當前密碼',
newPassword: '新密碼',
confirmNewPassword: '確認新密碼',
enterCurrentPassword: '輸入當前密碼',
enterNewPassword: '輸入新密碼',
enterConfirmPassword: '確認新密碼',
currentPasswordRequired: '當前密碼不能為空',
newPasswordRequired: '新密碼不能為空',
confirmPasswordRequired: '確認密碼不能為空',
passwordsDoNotMatch: '兩次輸入的密碼不一致',
changePasswordSuccess: '密碼修改成功',
changePasswordFailed: '密碼修改失敗,請檢查當前密碼是否正確',
},
notFound: {
title: '頁面不存在',
description:
'您要查詢的頁面似乎不存在。請檢查您輸入的 URL 是否正確,或返回首頁。',
back: '上一級',
home: '返回主頁',
help: '查看說明文件',
},
models: {
title: '模型設定',
description: '設定和管理可在流程線中使用的模型',
createModel: '建立模型',
editModel: '編輯模型',
getModelListError: '取得模型清單失敗:',
modelName: '模型名稱',
modelProvider: '模型供應商',
modelBaseURL: '基礎 URL',
modelAbilities: '模型能力',
saveSuccess: '儲存成功',
saveError: '儲存失敗:',
createSuccess: '建立成功',
createError: '建立失敗:',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
deleteConfirmation: '您確定要刪除這個模型嗎?',
modelNameRequired: '模型名稱不能為空',
modelProviderRequired: '模型供應商不能為空',
requestURLRequired: '請求URL不能為空',
apiKeyRequired: 'API Key不能為空',
keyNameRequired: '鍵名不能為空',
mustBeValidNumber: '必須是有效的數字',
mustBeTrueOrFalse: '必須是 true 或 false',
requestURL: '請求URL',
apiKey: 'API Key',
abilities: '能力',
selectModelAbilities: '選擇模型能力',
visionAbility: '視覺能力',
functionCallAbility: '函數呼叫',
extraParameters: '額外參數',
addParameter: '新增參數',
keyName: '鍵名',
type: '類型',
value: '值',
string: '字串',
number: '數字',
boolean: '布林值',
selectModelProvider: '選擇模型供應商',
modelProviderDescription: '請填寫供應商向您提供的模型名稱',
selectModel: '請選擇模型',
testSuccess: '測試成功',
testError: '測試失敗,請檢查模型設定',
llmModels: '對話模型',
},
bots: {
title: '機器人',
description: '建立和管理機器人,這是 LangBot 與各個平台連接的入口',
createBot: '建立機器人',
editBot: '編輯機器人',
getBotListError: '取得機器人清單失敗:',
botName: '機器人名稱',
botDescription: '機器人描述',
botNameRequired: '機器人名稱不能為空',
botDescriptionRequired: '機器人描述不能為空',
adapterRequired: '適配器不能為空',
defaultDescription: '一個機器人',
getBotConfigError: '取得機器人設定失敗:',
saveSuccess: '儲存成功',
saveError: '儲存失敗:',
createSuccess: '建立成功 請啟用或修改綁定流程線',
createError: '建立失敗:',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
deleteConfirmation: '您確定要刪除這個機器人嗎?',
platformAdapter: '平台/適配器選擇',
selectAdapter: '選擇適配器',
adapterConfig: '適配器設定',
bindPipeline: '綁定流程線',
selectPipeline: '選擇流程線',
botLogTitle: '機器人日誌',
enableAutoRefresh: '開啟自動重新整理',
session: '對話',
yesterday: '昨天',
earlier: '更久之前',
dateFormat: '{{month}}月{{day}}日',
setBotEnableError: '設定機器人啟用狀態失敗',
log: '日誌',
configuration: '設定',
logs: '日誌',
},
plugins: {
title: '外掛管理',
description: '安裝和設定用於擴展 LangBot 功能的外掛',
createPlugin: '建立外掛',
editPlugin: '編輯外掛',
installed: '已安裝',
marketplace: 'Marketplace',
arrange: '編排',
install: '安裝',
installFromGithub: '從 GitHub 安裝外掛',
onlySupportGithub: '目前僅支援從 GitHub 安裝',
enterGithubLink: '請輸入外掛的Github連結',
installing: '正在安裝外掛...',
installSuccess: '外掛安裝成功',
installFailed: '外掛安裝失敗:',
searchPlugin: '搜尋外掛',
sortBy: '排序方式',
mostStars: '最多星標',
recentlyAdded: '最近新增',
recentlyUpdated: '最近更新',
noMatchingPlugins: '沒有找到符合的外掛',
loading: '載入中...',
getPluginListError: '取得外掛清單失敗:',
pluginConfig: '外掛設定',
noPluginInstalled: '暫未安裝任何外掛',
pluginSort: '外掛排序',
pluginSortDescription:
'外掛順序會影響同一事件內的處理順序,請拖曳外掛卡片排序',
pluginSortSuccess: '外掛排序成功',
pluginSortError: '外掛排序失敗:',
pluginNoConfig: '外掛沒有設定項目。',
deleting: '刪除中...',
deletePlugin: '刪除外掛',
cancel: '取消',
saveConfig: '儲存設定',
saving: '儲存中...',
confirmDeletePlugin: '您確定要刪除外掛({{author}}/{{name}})嗎?',
confirmDelete: '確認刪除',
deleteError: '刪除失敗:',
close: '關閉',
deleteConfirm: '刪除確認',
modifyFailed: '修改失敗:',
eventCount: '事件:{{count}}',
toolCount: '工具:{{count}}',
starCount: '星標:{{count}}',
},
pipelines: {
title: '流程線',
description: '流程線定義了對訊息事件的處理流程,用於綁定到機器人',
createPipeline: '建立流程線',
editPipeline: '編輯流程線',
chat: '對話',
configuration: '設定',
debugChat: '對話除錯',
getPipelineListError: '取得流程線清單失敗:',
daysAgo: '天前',
today: '今天',
updateTime: '更新於',
defaultBadge: '預設',
sortBy: '排序方式',
newestCreated: '最新建立',
recentlyEdited: '最近編輯',
earliestEdited: '最早編輯',
basicInfo: '基本資訊',
aiCapabilities: 'AI 能力',
triggerConditions: '觸發條件',
safetyControls: '安全控制',
outputProcessing: '輸出處理',
nameRequired: '名稱不能為空',
descriptionRequired: '描述不能為空',
createSuccess: '建立成功 請編輯流程線詳細參數',
createError: '建立失敗:',
saveSuccess: '儲存成功',
saveError: '儲存失敗:',
deleteConfirmation:
'您確定要刪除這個流程線嗎?已綁定此流程線的機器人將無法使用。',
defaultPipelineCannotDelete: '預設流程線不可刪除',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
debugDialog: {
title: '流程線對話',
selectPipeline: '選擇流程線',
sessionType: '對話類型',
privateChat: '私聊',
groupChat: '群聊',
send: '傳送',
reset: '重設對話',
inputPlaceholder: '傳送 {{type}} 訊息...',
noMessages: '暫無訊息',
userMessage: '使用者',
botMessage: '機器人',
sendFailed: '傳送失敗',
resetSuccess: '對話已重設',
resetFailed: '重設失敗',
loadMessagesFailed: '載入訊息失敗',
loadPipelinesFailed: '載入流程線失敗',
atTips: '提及機器人',
},
},
knowledge: {
title: '知識庫',
createKnowledgeBase: '建立知識庫',
editKnowledgeBase: '編輯知識庫',
selectKnowledgeBase: '選擇知識庫',
empty: '無',
editDocument: '文檔',
description: '設定可用於提升模型回覆品質的知識庫',
metadata: '中繼資料',
documents: '文檔',
kbNameRequired: '知識庫名稱不能為空',
kbDescriptionRequired: '知識庫描述不能為空',
embeddingModelUUIDRequired: '嵌入模型不能為空',
daysAgo: '天前',
today: '今天',
kbName: '知識庫名稱',
kbDescription: '知識庫描述',
topK: '召回數量 ',
topKRequired: '召回數量不能為空',
topKMax: '召回數量最大值為30',
topKdescription: '取得相關性高的上位 K 件文獻的數量範圍為130',
defaultDescription: '一個知識庫',
embeddingModelUUID: '嵌入模型',
selectEmbeddingModel: '選擇嵌入模型',
embeddingModelDescription: '用於向量化文字,可在模型設定頁面設定',
updateTime: '更新於',
cannotChangeEmbeddingModel: '知識庫建立後不可修改嵌入模型',
updateKnowledgeBaseSuccess: '知識庫更新成功',
updateKnowledgeBaseFailed: '知識庫更新失敗',
documentsTab: {
name: '名稱',
status: '狀態',
noResults: '暫無文件',
dragAndDrop: '拖曳文檔到此處或點擊上傳',
uploading: '上傳中...',
supportedFormats: '支援 PDF、Word、TXT、Markdown 等文檔格式',
uploadSuccess: '文檔上傳成功!',
uploadError: '文檔上傳失敗,請重試',
uploadingFile: '上傳文檔中...',
actions: '操作',
delete: '刪除文檔',
fileDeleteSuccess: '文檔刪除成功',
fileDeleteFailed: '文檔刪除失敗',
processing: '處理中',
completed: '完成',
failed: '失敗',
},
deleteKnowledgeBaseConfirmation:
'您確定要刪除這個知識庫嗎?此知識庫下的所有文檔將被刪除。',
retrieve: '檢索測試',
retrieveTest: '檢索測試',
query: '查詢',
queryPlaceholder: '輸入查詢內容...',
distance: '距離',
content: '內容',
fileName: '文檔名稱',
noResults: '暫無結果',
retrieveError: '檢索失敗',
},
register: {
title: '初始化 LangBot 👋',
description: '這是您首次啟動 LangBot',
adminAccountNote: '您填寫的電子郵件和密碼將作為初始管理員帳號',
register: '註冊',
initSuccess: '初始化成功 請登入',
initFailed: '初始化失敗:',
},
resetPassword: {
title: '重設密碼 🔐',
description: '輸入恢復金鑰和新的密碼來重設您的帳戶密碼',
recoveryKey: '恢復金鑰',
recoveryKeyDescription:
'儲存在設定檔案`data/config.yaml`的`system.recovery_key`中',
newPassword: '新密碼',
enterRecoveryKey: '輸入恢復金鑰',
enterNewPassword: '輸入新密碼',
recoveryKeyRequired: '恢復金鑰不能為空',
newPasswordRequired: '新密碼不能為空',
resetPassword: '重設密碼',
resetting: '重設中...',
resetSuccess: '密碼重設成功,請登入',
resetFailed: '密碼重設失敗,請檢查電子郵件和恢復金鑰是否正確',
backToLogin: '返回登入',
},
embedding: {
description: '管理嵌入模型,用於向量化文字',
createModel: '建立嵌入模型',
editModel: '編輯嵌入模型',
getModelListError: '取得嵌入模型清單失敗:',
embeddingModels: '嵌入模型',
extraParametersDescription:
'將在請求時附加到請求體中,如 encoding_format, dimensions 等',
},
llm: {
llmModels: '對話模型',
description: '管理 LLM 模型,用於對話訊息產生',
extraParametersDescription:
'將在請求時附加到請求體中,如 max_tokens, temperature, top_p 等',
},
};
export default zhHant;