|
|
@@ -57,11 +57,28 @@ export const errorMessages = {
|
|
|
retryMechanismError: '重试机制异常',
|
|
|
imageLoadError: '无法读取图像: {message}',
|
|
|
groupNotFound: '分组不存在',
|
|
|
+ fileDeleted: '文件删除成功',
|
|
|
+ fileDeletedFromGroup: '文件从分组中移除成功',
|
|
|
+ kbCleared: '知识库清除成功',
|
|
|
+ groupSyncSuccess: '分组同步成功',
|
|
|
+ groupDeleted: '分组删除成功',
|
|
|
+ searchHistoryDeleted: '搜索历史删除成功',
|
|
|
+ jwtSecretRequired: 'JWT_SECRET 环境变量未设置',
|
|
|
+ tenantNotFound: '租户不存在',
|
|
|
+ usernameRequired: '用户名是必填项',
|
|
|
+ passwordRequiredForNewUser: '新用户 {username} 需要密码',
|
|
|
+ importTaskNotFound: '导入任务不存在',
|
|
|
+ sourcePathNotFound: '源路径不存在: {path}',
|
|
|
+ targetGroupRequired: '未指定目标分组',
|
|
|
+ modelConfigNotFound: '找不到模型配置: {id}',
|
|
|
+ cannotUpdateOtherTenantModel: '无法更新其他租户的模型',
|
|
|
+ cannotDeleteOtherTenantModel: '无法删除其他租户的模型',
|
|
|
+ elasticsearchHostRequired: 'ELASTICSEARCH_HOST 环境变量未设置',
|
|
|
},
|
|
|
ja: {
|
|
|
- noEmbeddingModel: '先にシステム設定で埋め込みモデルを設定してください',
|
|
|
+ noEmbeddingModel: '先にシステム設定で埋め込みモデルを設定please',
|
|
|
searchFailed: 'ナレッジベース検索に失敗しました。一般的な知識に基づいて回答します...',
|
|
|
- invalidApiKey: 'APIキーが無効です',
|
|
|
+ invalidApiKey: 'APIキーが無効is',
|
|
|
fileNotFound: 'ファイルが見つかりません',
|
|
|
insufficientQuota: '利用枠が不足しています',
|
|
|
modelNotConfigured: 'モデルが設定されていません',
|
|
|
@@ -70,23 +87,23 @@ export const errorMessages = {
|
|
|
uploadNoFile: 'ファイルがアップロードされていません',
|
|
|
uploadSizeExceeded: 'ファイルサイズが制限を超えています: {size}, 最大許容: {max}',
|
|
|
uploadModelRequired: '埋め込みモデルを選択する必要があります',
|
|
|
- uploadTypeUnsupported: 'サポートされていないファイル形式です: {type}',
|
|
|
+ uploadTypeUnsupported: 'サポートされていないファイル形式is: {type}',
|
|
|
chunkOverflow: 'チャンクサイズ {size} が上限 {max} ({reason}) を超えています。自動調整されました',
|
|
|
- chunkUnderflow: 'チャンクサイズ {size} が最小値 {min} 未満です。自動調整されました',
|
|
|
+ chunkUnderflow: 'チャンクサイズ {size} が最小値 {min} 未満.自動調整されました',
|
|
|
overlapOverflow: '重なりサイズ {size} が上限 {max} を超えています。自動調整されました',
|
|
|
- overlapUnderflow: '重なりサイズ {size} が最小値 {min} 未満です。自動調整されました',
|
|
|
+ overlapUnderflow: '重なりサイズ {size} が最小値 {min} 未満.自動調整されました',
|
|
|
overlapRatioExceeded: '重なりサイズ {size} がチャンクサイズの50% ({max}) を超えています。自動調整されました',
|
|
|
batchOverflowWarning: 'バッチ処理のオーバーフローを避けるため、チャンクサイズを {safeSize} 以下にすることをお勧めします (現在: {size}, モデル制限の {percent}%)',
|
|
|
estimatedChunkCountExcessive: '推定チャンク数が多すぎます ({count})。処理に時間がかかる可能性があります',
|
|
|
- contentAndTitleRequired: '内容とタイトルは必須です',
|
|
|
+ contentAndTitleRequired: '内容とタイトルは必須is',
|
|
|
embeddingModelNotFound: '埋め込みモデル {id} が見つかりません、またはタイプが embedding ではありません',
|
|
|
ocrFailed: 'テキストの抽出に失敗しました: {message}',
|
|
|
noImageUploaded: '画像がアップロードされていません',
|
|
|
adminOnlyViewList: '管理者のみがユーザーリストを表示できます',
|
|
|
- passwordsRequired: '現在のパスワードと新しいパスワードは必須です',
|
|
|
+ passwordsRequired: '現在のパスワードと新しいパスワードは必須is',
|
|
|
newPasswordMinLength: '新しいパスワードは少なくとも6文字以上である必要があります',
|
|
|
adminOnlyCreateUser: '管理者のみがユーザーを作成できます',
|
|
|
- usernamePasswordRequired: 'ユーザー名とパスワードは必須です',
|
|
|
+ usernamePasswordRequired: 'ユーザー名とパスワードは必須is',
|
|
|
passwordMinLength: 'パスワードは少なくとも6文字以上である必要があります',
|
|
|
adminOnlyUpdateUser: '管理者のみがユーザー情報を更新できます',
|
|
|
userNotFound: 'ユーザーが見つかりません',
|
|
|
@@ -100,22 +117,39 @@ export const errorMessages = {
|
|
|
noteNotFound: 'ノートが見つかりません: {id}',
|
|
|
knowledgeGroupNotFound: 'ナレッジグループが見つかりません: {id}',
|
|
|
accessDeniedNoToken: 'アクセス不許可:トークンがありません',
|
|
|
- invalidToken: '無効なトークンです',
|
|
|
+ invalidToken: '無効なトークンis',
|
|
|
pdfFileNotFound: 'PDF ファイルが見つかりません',
|
|
|
- pdfFileEmpty: 'PDF ファイルが空です。変換に失敗した可能性があります',
|
|
|
+ pdfFileEmpty: 'PDF ファイルが空.変換に失敗した可能性があります',
|
|
|
pdfConversionFailed: 'PDF ファイルが存在しないか、変換に失敗しました',
|
|
|
- pdfConversionFailedDetail: 'PDF 変換に失敗しました(ファイル ID: {id})。後でもう一度お試しください',
|
|
|
+ pdfConversionFailedDetail: 'PDF 変換に失敗しました(ファイル ID: {id})。後でもう一度お試しくplease',
|
|
|
pdfPreviewNotSupported: 'このファイル形式はプレビューをサポートしていません',
|
|
|
pdfServiceUnavailable: 'PDF サービスを利用できません: {message}',
|
|
|
pageImageNotFound: 'ページ画像が見つかりません',
|
|
|
pdfPageImageFailed: 'PDF ページの画像を取得できませんでした',
|
|
|
someGroupsNotFound: '一部のグループが存在しません',
|
|
|
- promptRequired: 'プロンプトは必須です',
|
|
|
- addLLMConfig: 'システム設定で LLM モデルを追加してください',
|
|
|
+ promptRequired: 'プロンプトは必須is',
|
|
|
+ addLLMConfig: 'システム設定で LLM モデルを追加please',
|
|
|
visionAnalysisFailed: 'ビジョン分析に失敗しました: {message}',
|
|
|
retryMechanismError: '再試行メカニズムの異常',
|
|
|
imageLoadError: '画像を読み込めません: {message}',
|
|
|
groupNotFound: 'グループが存在しません',
|
|
|
+ fileDeleted: 'ファイルが削除されました',
|
|
|
+ fileDeletedFromGroup: 'ファイルがグループから削除されました',
|
|
|
+ kbCleared: 'ナレッジベースがクリアされました',
|
|
|
+ groupSyncSuccess: 'グループ同期が完了しました',
|
|
|
+ groupDeleted: 'グループが削除されました',
|
|
|
+ searchHistoryDeleted: '検索履歴が削除されました',
|
|
|
+ jwtSecretRequired: 'JWT_SECRET 環境変数が設定されていません',
|
|
|
+ tenantNotFound: 'テナントが見つかりません',
|
|
|
+ usernameRequired: 'ユーザー名は必須is',
|
|
|
+ passwordRequiredForNewUser: '新しいユーザー {username} のパスワードが必要is',
|
|
|
+ importTaskNotFound: 'インポートタスクが見つかりません',
|
|
|
+ sourcePathNotFound: 'ソースパスが見つかりません: {path}',
|
|
|
+ targetGroupRequired: 'ターゲットグループが指定されていません',
|
|
|
+ modelConfigNotFound: 'モデル設定が見つかりません: {id}',
|
|
|
+ cannotUpdateOtherTenantModel: '他のテナントのモデルは更新できません',
|
|
|
+ cannotDeleteOtherTenantModel: '他のテナントのモデルは削除できません',
|
|
|
+ elasticsearchHostRequired: 'ELASTICSEARCH_HOST 環境変数が設定されていません',
|
|
|
},
|
|
|
en: {
|
|
|
noEmbeddingModel: 'Please configure embedding model in system settings first',
|
|
|
@@ -146,6 +180,7 @@ export const errorMessages = {
|
|
|
newPasswordMinLength: 'New password must be at least 6 characters',
|
|
|
adminOnlyCreateUser: 'Only admins can create users',
|
|
|
usernamePasswordRequired: 'Username and password are required',
|
|
|
+ usernameRequired: 'Username is required',
|
|
|
passwordMinLength: 'Password must be at least 6 characters',
|
|
|
adminOnlyUpdateUser: 'Only admins can update user info',
|
|
|
userNotFound: 'User not found',
|
|
|
@@ -153,7 +188,6 @@ export const errorMessages = {
|
|
|
adminOnlyDeleteUser: 'Only admins can delete users',
|
|
|
cannotDeleteSelf: 'Cannot delete your own account',
|
|
|
cannotDeleteBuiltinAdmin: 'Cannot delete built-in admin account',
|
|
|
- onlyBuiltinAdminCanChangeRole: 'Only built-in admin can change user roles',
|
|
|
incorrectCredentials: 'Incorrect username or password',
|
|
|
incorrectCurrentPassword: 'Incorrect current password',
|
|
|
usernameExists: 'Username already exists',
|
|
|
@@ -176,363 +210,50 @@ export const errorMessages = {
|
|
|
retryMechanismError: 'Retry mechanism error',
|
|
|
imageLoadError: 'Cannot load image: {message}',
|
|
|
groupNotFound: 'Group not found',
|
|
|
+ fileDeleted: 'File deleted successfully',
|
|
|
+ fileDeletedFromGroup: 'File removed from group successfully',
|
|
|
+ kbCleared: 'Knowledge base cleared successfully',
|
|
|
+ groupSyncSuccess: 'Group sync completed successfully',
|
|
|
+ groupDeleted: 'Group deleted successfully',
|
|
|
+ searchHistoryDeleted: 'Search history deleted successfully',
|
|
|
+ jwtSecretRequired: 'JWT_SECRET environment variable is required but not set',
|
|
|
+ tenantNotFound: 'Tenant not found',
|
|
|
+ importTaskNotFound: 'Import task not found',
|
|
|
+ sourcePathNotFound: 'Source path not found: {path}',
|
|
|
+ targetGroupRequired: 'Target group not specified',
|
|
|
+ modelConfigNotFound: 'Model config not found: {id}',
|
|
|
+ cannotUpdateOtherTenantModel: 'Cannot update models from another tenant',
|
|
|
+ cannotDeleteOtherTenantModel: 'Cannot delete models from another tenant',
|
|
|
+ elasticsearchHostRequired: 'ELASTICSEARCH_HOST environment variable is not set',
|
|
|
+ libreofficeUrlRequired: 'LIBREOFFICE_URL environment variable is required but not set',
|
|
|
+ pdfToImageConversionFailed: 'PDF to image conversion failed. No images were generated.',
|
|
|
+ pdfPageCountError: 'Could not get PDF page count',
|
|
|
+ parentCategoryNotFound: 'Parent category not found',
|
|
|
+ categoryNotFound: 'Category not found',
|
|
|
+ maxCategoryDepthExceeded: 'Maximum category depth (3 levels) exceeded',
|
|
|
+ userIdRequired: 'User ID is required',
|
|
|
+ podcastNotFound: 'Podcast not found: {id}',
|
|
|
+ scriptGenerationFailed: 'Script generation failed to produce valid JSON',
|
|
|
+ vectorRequired: 'Vector is required for indexing',
|
|
|
+ apiCallFailed: 'API call failed: {message}',
|
|
|
+ tikaHostRequired: 'TIKA_HOST environment variable is required but not set',
|
|
|
}
|
|
|
};
|
|
|
|
|
|
export const logMessages = {
|
|
|
- zh: {
|
|
|
- processingFile: '处理文件: {name} ({size})',
|
|
|
- indexingComplete: '索引完成: {id}',
|
|
|
- vectorizingFile: '向量化文件: ',
|
|
|
- searchQuery: '搜索查询: ',
|
|
|
- modelCall: '[模型调用] 类型: {type}, 模型: {model}, 用户: {user}',
|
|
|
- memoryStatus: '内存状态: ',
|
|
|
- uploadSuccess: '文件上传成功。正在后台索引',
|
|
|
- overlapAdjusted: '重叠大小超过切片大小的50%。已自动调整为 {newSize}',
|
|
|
- environmentLimit: '环境变量限制',
|
|
|
- modelLimit: '模型限制',
|
|
|
- configLoaded: '数据库模型配置加载: {name} ({id})',
|
|
|
- batchSizeAdjusted: '批量大小从 {old} 调整为 {new} (模型限制: {limit})',
|
|
|
- dimensionMismatch: '模型 {id} 维度不匹配: 预期 {expected}, 实际 {actual}',
|
|
|
- searchMetadataFailed: '为用户 {userId} 搜索知识库失败',
|
|
|
- extractedTextTooLarge: '抽出されたテキストが大きいです: {size}MB',
|
|
|
- preciseModeUnsupported: '格式 {ext} 不支持精密模式,回退到快速模式',
|
|
|
- visionModelNotConfiguredFallback: '未配置视觉模型,回退到快速模式',
|
|
|
- visionModelInvalidFallback: '视觉模型配置无效,回退到快速模式',
|
|
|
- visionPipelineFailed: '视觉流水线失败,回退到快速模式',
|
|
|
- preciseModeComplete: '精密模式提取完成: {pages}页, 费用: ${cost}',
|
|
|
- skippingEmptyVectorPage: '跳过第 {page} 页(空向量)',
|
|
|
- pdfPageImageError: '获取 PDF 页面图像失败: {message}',
|
|
|
- internalServerError: '服务器内部错误',
|
|
|
- },
|
|
|
- ja: {
|
|
|
- processingFile: 'ファイル処理中: {name} ({size})',
|
|
|
- indexingComplete: 'インデックス完了: {id}',
|
|
|
- vectorizingFile: 'ファイルベクトル化中: ',
|
|
|
- searchQuery: '検索クエリ: ',
|
|
|
- modelCall: '[モデル呼び出し] タイプ: {type}, モデル: {model}, ユーザー: {user}',
|
|
|
- memoryStatus: 'メモリ状態: ',
|
|
|
- uploadSuccess: 'ファイルが正常にアップロードされました。バックグラウンドでインデックス処理を実行中です',
|
|
|
- overlapAdjusted: 'オーバーラップサイズがチャンクサイズの50%を超えています。自動的に {newSize} に調整されました',
|
|
|
- environmentLimit: '環境変数の制限',
|
|
|
- modelLimit: 'モデルの制限',
|
|
|
- configLoaded: 'データベースからモデル設定を読み込みました: {name} ({id})',
|
|
|
- batchSizeAdjusted: 'バッチサイズを {old} から {new} に調整しました (モデル制限: {limit})',
|
|
|
- dimensionMismatch: 'モデル {id} の次元が一致しません: 期待値 {expected}, 実際 {actual}',
|
|
|
- searchMetadataFailed: 'ユーザー {userId} のナレッジベース検索に失敗しました',
|
|
|
- extractedTextTooLarge: '抽出されたテキストが大きいです: {size}MB',
|
|
|
- preciseModeUnsupported: 'ファイル形式 {ext} は精密モードをサポートしていません。高速モードにフォールバックします',
|
|
|
- visionModelNotConfiguredFallback: 'ビジョンモデルが設定されていません。高速モードにフォールバックします',
|
|
|
- visionModelInvalidFallback: 'ビジョンモデルの設定が無効です。高速モードにフォールバックします',
|
|
|
- visionPipelineFailed: 'ビジョンパイプラインが失敗しました。高速モードにフォールバックします',
|
|
|
- preciseModeComplete: '精密モード内容抽出完了: {pages}ページ, コスト: ${cost}',
|
|
|
- skippingEmptyVectorPage: '第 {page} ページの空ベクトルをスキップします',
|
|
|
- pdfPageImageError: 'PDF ページの画像取得に失敗しました: {message}',
|
|
|
- internalServerError: 'サーバー内部エラー',
|
|
|
- },
|
|
|
- en: {
|
|
|
- processingFile: 'Processing file: {name} ({size})',
|
|
|
- indexingComplete: 'Indexing complete: {id}',
|
|
|
- vectorizingFile: 'Vectorizing file: ',
|
|
|
- searchQuery: 'Search query: ',
|
|
|
- modelCall: '[Model call] Type: {type}, Model: {model}, User: {user}',
|
|
|
- memoryStatus: 'Memory status: ',
|
|
|
- uploadSuccess: 'File uploaded successfully. Indexing in background',
|
|
|
- overlapAdjusted: 'Overlap size exceeds 50% of chunk size. Auto-adjusted to {newSize}',
|
|
|
- environmentLimit: 'Environment variable limit',
|
|
|
- modelLimit: 'Model limit',
|
|
|
- configLoaded: 'Model config loaded from DB: {name} ({id})',
|
|
|
- batchSizeAdjusted: 'Batch size adjusted from {old} to {new} (Model limit: {limit})',
|
|
|
- dimensionMismatch: 'Model {id} dimension mismatch: Expected {expected}, Actual {actual}',
|
|
|
- searchMetadataFailed: 'Failed to search knowledge base for user {userId}',
|
|
|
- extractedTextTooLarge: 'Extracted text is too large: {size}MB',
|
|
|
- preciseModeUnsupported: 'Format {ext} not supported for precise mode. Falling back to fast mode',
|
|
|
- visionModelNotConfiguredFallback: 'Vision model not configured. Falling back to fast mode',
|
|
|
- visionModelInvalidFallback: 'Vision model config invalid. Falling back to fast mode',
|
|
|
- visionPipelineFailed: 'Vision pipeline failed. Falling back to fast mode',
|
|
|
- preciseModeComplete: 'Precise mode extraction complete: {pages} pages, cost: ${cost}',
|
|
|
- skippingEmptyVectorPage: 'Skipping page {page} due to empty vector',
|
|
|
- pdfPageImageError: 'Failed to retrieve PDF page image: {message}',
|
|
|
- internalServerError: 'Internal server error',
|
|
|
- }
|
|
|
+ zh: {},
|
|
|
+ ja: {},
|
|
|
+ en: {},
|
|
|
};
|
|
|
|
|
|
export const statusMessages = {
|
|
|
zh: {
|
|
|
- searching: '正在搜索知识库...',
|
|
|
- noResults: '未找到相关知识,将基于一般知识回答...',
|
|
|
- searchFailed: '知识库搜索失败,将基于一般知识回答...',
|
|
|
- generatingResponse: '正在生成回答',
|
|
|
- files: '个文件',
|
|
|
- notebooks: '个笔记本',
|
|
|
- all: '全部',
|
|
|
- items: '个',
|
|
|
- searchResults: '搜索结果',
|
|
|
- relevantInfoFound: '条相关信息找到',
|
|
|
- searchHits: '搜索命中',
|
|
|
- relevance: '相关度',
|
|
|
- sourceFiles: '源文件',
|
|
|
- searchScope: '搜索范围',
|
|
|
- error: '错误',
|
|
|
- creatingHistory: '创建新对话历史: ',
|
|
|
- searchingModelById: '根据ID搜索模型: ',
|
|
|
- searchModelFallback: '未找到指定的嵌入模型。使用第一个可用模型。',
|
|
|
- noEmbeddingModelFound: '找不到嵌入模型设置',
|
|
|
- usingEmbeddingModel: '使用的嵌入模型: ',
|
|
|
- startingSearch: '开始搜索知识库...',
|
|
|
- searchResultsCount: '搜索结果数: ',
|
|
|
- searchFailedLog: '搜索失败',
|
|
|
- modelCall: '[模型调用]',
|
|
|
- chatStreamError: '聊天流错误',
|
|
|
- assistStreamError: '辅助流错误',
|
|
|
- file: '文件',
|
|
|
- content: '内容',
|
|
|
- userLabel: '用户',
|
|
|
- assistantLabel: '助手',
|
|
|
- intelligentAssistant: '您是智能写作助手。',
|
|
|
- searchString: '搜索字符串: ',
|
|
|
- embeddingModelIdNotProvided: '未提供嵌入模型ID',
|
|
|
- generatingEmbeddings: '生成嵌入向量...',
|
|
|
- embeddingsGenerated: '嵌入向量生成完成',
|
|
|
- dimensions: '维度',
|
|
|
- performingHybridSearch: '执行混合搜索...',
|
|
|
- esSearchCompleted: 'ES搜索完成',
|
|
|
- resultsCount: '结果数',
|
|
|
- hybridSearchFailed: '混合搜索失败',
|
|
|
- getContextForTopicFailed: '获取主题上下文失败',
|
|
|
- noLLMConfigured: '用户未配置LLM模型',
|
|
|
- simpleChatGenerationError: '简单聊天生成错误',
|
|
|
- noMatchInKnowledgeGroup: '所选知识组中未找到相关内容,以下是基于模型的一般性回答:',
|
|
|
- uploadTextSuccess: '笔记内容已接收。正在后台索引',
|
|
|
- passwordChanged: '密码已成功修改',
|
|
|
- userCreated: '用户已成功创建',
|
|
|
- userInfoUpdated: '用户信息已更新',
|
|
|
- userDeleted: '用户已删除',
|
|
|
- pdfNoteTitle: 'PDF 笔记 - {date}',
|
|
|
- noTextExtracted: '未提取到文本',
|
|
|
- kbCleared: '知识库已清空',
|
|
|
- fileDeleted: '文件已删除',
|
|
|
- pageImageNotFoundDetail: '无法获取 PDF 第 {page} 页’的图像',
|
|
|
- groupSyncSuccess: '文件分组已更新',
|
|
|
- fileDeletedFromGroup: '文件已从分组中删除',
|
|
|
- chunkConfigCorrection: '切片配置已修正: {warnings}',
|
|
|
- noChunksGenerated: '文件 {id} 未生成任何切片',
|
|
|
- chunkCountAnomaly: '实际切片数 {actual} 大幅超过预计值 {estimated},可能存在异常',
|
|
|
- batchSizeExceeded: '批次 {index} 的大小 {actual} 超过推荐值 {limit},将拆分处理',
|
|
|
- skippingEmptyVectorChunk: '跳过文本块 {index} (空向量)',
|
|
|
- contextLengthErrorFallback: '批次处理发生上下文长度错误,降级到逐条处理模式',
|
|
|
- chunkLimitExceededForceBatch: '切片数 {actual} 超过模型批次限制 {limit},强制进行批次处理',
|
|
|
- noteContentRequired: '笔记内容是必填项',
|
|
|
- imageAnalysisStarted: '正在使用模型 {id} 分析图像...',
|
|
|
- batchAnalysisStarted: '正在分析 {count} 张图像...',
|
|
|
- pageAnalysisFailed: '第 {page} 页分析失败',
|
|
|
- visionSystemPrompt: '您是专业的文档分析助手。请分析此文档图像,并按以下要求以 JSON 格式返回:\n\n1. 提取所有可读文本(按阅读顺序,保持段落和格式)\n2. 识别图像/图表/表格(描述内容、含义和作用)\n3. 分析页面布局(仅文本/文本和图像混合/表格/图表等)\n4. 评估分析质量 (0-1)\n\n响应格式:\n{\n "text": "完整的文本内容",\n "images": [\n {"type": "图表类型", "description": "详细描述", "position": 1}\n ],\n "layout": "布局说明",\n "confidence": 0.95\n}',
|
|
|
- visionModelCall: '[模型调用] 类型: Vision, 模型: {model}, 页面: {page}',
|
|
|
- visionAnalysisSuccess: '✅ 视觉分析完成: {path}{page}, 文本长度: {textLen}, 图像数: {imgCount}, 布局: {layout}, 置信度: {confidence}%',
|
|
|
- conversationHistoryNotFound: '对话历史不存在',
|
|
|
- batchContextLengthErrorFallback: '小文件批次处理发生上下文长度错误,降级到逐条处理模式',
|
|
|
- chunkProcessingFailed: '处理文本块 {index} 失败,已跳过: {message}',
|
|
|
- singleTextProcessingComplete: '逐条文本处理完成: {count} 个切片',
|
|
|
- fileVectorizationComplete: '文件 {id} 向量化完成。共处理 {count} 个文本块。最终内存: {memory}MB',
|
|
|
- fileVectorizationFailed: '文件 {id} 向量化失败',
|
|
|
- batchProcessingStarted: '开始批次处理: {count} 个项目',
|
|
|
- batchProcessingProgress: '正在处理批次 {index}/{total}: {count} 个项目',
|
|
|
- batchProcessingComplete: '批次处理完成: {count} 个项目,耗时 {duration}s',
|
|
|
- onlyFailedFilesRetryable: '仅允许重试失败的文件 (当前状态: {status})',
|
|
|
- emptyFileRetryFailed: '文件内容为空,无法重试。请重新上传文件。',
|
|
|
- ragSystemPrompt: '您是专业的知识库助手。请根据以下提供的文档内容回答用户的问题。',
|
|
|
- ragRules: '## 规则:\n1. 仅根据提供的文档内容进行回答,请勿编造信息。\n2. 如果文档中没有相关信息,请告知用户。\n3. 请在回答中注明信息来源。格式:[文件名.扩展子]\n4. 如果多个文档中的信息存在矛盾,请进行综合分析或解释不同的观点。\n5. 请使用{lang}进行回答。',
|
|
|
- ragDocumentContent: '## 文档内容:',
|
|
|
- ragUserQuestion: '## 用户问题:',
|
|
|
- ragAnswer: '## 回答:',
|
|
|
- ragSource: '### 来源:{fileName}',
|
|
|
- ragSegment: '片段 {index} (相似度: {score}):',
|
|
|
- ragNoDocumentFound: '未找到相关文档。',
|
|
|
- queryExpansionPrompt: '您是一个搜索助手。请为以下用户查询生成3个不同的演变版本,以帮助在向量搜索中获得更好的结果。每个版本应包含不同的关键词或表达方式,但保持原始意思。直接输出3行查询,不要有数字或编号:\n\n查询:{query}',
|
|
|
- hydePrompt: '请为以下用户问题写一段简短、事实性的假设回答(约100字)。不要包含任何引导性文字(如“基于我的分析...”),直接输出答案内容。\n\n问题:{query}',
|
|
|
+ noMatchInKnowledgeGroup: '所选知识组中未找到相关内容',
|
|
|
},
|
|
|
ja: {
|
|
|
- searching: 'ナレッジベースを検索中...',
|
|
|
- noResults: '関連する知識が見つかりませんでした。一般的な知識に基づいて回答します...',
|
|
|
- searchFailed: 'ナレッジベース検索に失敗しました。一般的な知識に基づいて回答します...',
|
|
|
- generatingResponse: '回答を生成中',
|
|
|
- files: '個のファイル',
|
|
|
- notebooks: '個のノートブック',
|
|
|
- all: 'すべて',
|
|
|
- items: '件',
|
|
|
- searchResults: '検索結果',
|
|
|
- relevantInfoFound: '件の関連情報が見つかりました',
|
|
|
- searchHits: '検索ヒット',
|
|
|
- relevance: '関連度',
|
|
|
- sourceFiles: '元ファイル',
|
|
|
- searchScope: '検索範囲',
|
|
|
- error: 'エラー',
|
|
|
- creatingHistory: '新規対話履歴を作成: ',
|
|
|
- searchingModelById: 'selectedEmbeddingId に基づいてモデルを検索: ',
|
|
|
- searchModelFallback: '指定された埋め込みモデルが見つかりません。最初に使用可能なモデルを使用します。',
|
|
|
- noEmbeddingModelFound: '埋め込みモデルの設定が見つかりません',
|
|
|
- usingEmbeddingModel: '使用する埋め込みモデル: ',
|
|
|
- startingSearch: 'ナレッジベースの検索を開始...',
|
|
|
- searchResultsCount: '検索結果数: ',
|
|
|
- searchFailedLog: '検索失敗',
|
|
|
- chatStreamError: 'チャットストリームエラー',
|
|
|
- assistStreamError: 'アシストストリームエラー',
|
|
|
- file: 'ファイル',
|
|
|
- content: '内容',
|
|
|
- userLabel: 'ユーザー',
|
|
|
- assistantLabel: 'アシスタント',
|
|
|
- intelligentAssistant: 'あなたはインテリジェントな執筆アシスタントです。',
|
|
|
- searchString: '検索文字列: ',
|
|
|
- embeddingModelIdNotProvided: '埋め込みモデルIDが提供されていません',
|
|
|
- generatingEmbeddings: '埋め込みベクトルを生成中...',
|
|
|
- embeddingsGenerated: '埋め込みベクトルの生成が完了しました',
|
|
|
- dimensions: '次元数',
|
|
|
- performingHybridSearch: 'ES 混合検索を実行中...',
|
|
|
- esSearchCompleted: 'ES 検索が完了しました',
|
|
|
- resultsCount: '結果数',
|
|
|
- hybridSearchFailed: '混合検索に失敗しました',
|
|
|
- getContextForTopicFailed: 'トピックのコンテキスト取得に失敗しました',
|
|
|
- noLLMConfigured: 'ユーザーにLLMモデルが設定されていません',
|
|
|
- simpleChatGenerationError: '簡易チャット生成エラー',
|
|
|
- noMatchInKnowledgeGroup: '選択された知識グループに関連する内容が見つかりませんでした。以下はモデルに基づく一般的な回答です:',
|
|
|
- uploadTextSuccess: 'ノート内容を受け取りました。バックグラウンドでインデックス処理を実行中です',
|
|
|
- passwordChanged: 'パスワードが正常に変更されました',
|
|
|
- userCreated: 'ユーザーが正常に作成されました',
|
|
|
- userInfoUpdated: 'ユーザー情報が更新されました',
|
|
|
- userDeleted: 'ユーザーが削除されました',
|
|
|
- pdfNoteTitle: 'PDF ノート - {date}',
|
|
|
- noTextExtracted: 'テキストが抽出されませんでした',
|
|
|
- kbCleared: 'ナレッジベースが空になりました',
|
|
|
- fileDeleted: 'ファイルが削除されました',
|
|
|
- pageImageNotFoundDetail: 'PDF の第 {page} ページの画像を取得できません',
|
|
|
- groupSyncSuccess: 'ファイルグループが更新されました',
|
|
|
- fileDeletedFromGroup: 'ファイルがグループから削除されました',
|
|
|
- chunkConfigCorrection: 'チャンク設定の修正: {warnings}',
|
|
|
- noChunksGenerated: 'ファイル {id} からテキストチャンクが生成されませんでした',
|
|
|
- chunkCountAnomaly: '実際のチャンク数 {actual} が推定値 {estimated} を大幅に超えています。異常がある可能性があります',
|
|
|
- batchSizeExceeded: 'バッチ {index} のサイズ {actual} が推奨値 {limit} を超えています。分割して処理します',
|
|
|
- skippingEmptyVectorChunk: '空ベクトルのテキストブロック {index} をスキップします',
|
|
|
- contextLengthErrorFallback: 'バッチ処理でコンテキスト長エラーが発生しました。単一テキスト処理モードにダウングレードします',
|
|
|
- chunkLimitExceededForceBatch: 'チャンク数 {actual} がモデルのバッチ制限 {limit} を超えています。強制的にバッチ処理を行います',
|
|
|
- noteContentRequired: 'ノート内容は必須です',
|
|
|
- imageAnalysisStarted: 'モデル {id} で画像を分析中...',
|
|
|
- batchAnalysisStarted: '{count} 枚の画像を分析中...',
|
|
|
- pageAnalysisFailed: '第 {page} ページの分析に失敗しました',
|
|
|
- visionSystemPrompt: 'あなたは専門的なドキュメント分析アシスタントです。このドキュメント画像を分析し、以下の要求に従って JSON 形式で返してください:\n\n1. すべての読み取り可能なテキストを抽出(読み取り順序に従い、段落と形式を保持)\n2. 画像/グラフ/表の識別(内容、意味、役割を記述)\n3. ページレイアウトの分析(テキストのみ/テキストと画像の混合/表/グラフなど)\n4. 分析品質の評価(0-1)\n\nレスポンス形式:\n{\n "text": "完全なテキスト内容",\n "images": [\n {"type": "グラフの種類", "description": "詳細な記述", "position": 1}\n ],\n "layout": "レイアウトの説明",\n "confidence": 0.95\n}',
|
|
|
- visionModelCall: '[モデル呼び出し] タイプ: Vision, モデル: {model}, ページ: {page}',
|
|
|
- visionAnalysisSuccess: '✅ Vision 分析完了: {path}{page}, テキスト長: {textLen}文字, 画像数: {imgCount}, レイアウト: {layout}, 信頼度: {confidence}%',
|
|
|
- conversationHistoryNotFound: '会話履歴が存在しません',
|
|
|
- batchContextLengthErrorFallback: '小ファイルバッチ処理でコンテキスト長エラーが発生しました。単一テキスト処理モードにダウングレードします',
|
|
|
- chunkProcessingFailed: 'テキストブロック {index} の処理に失敗しました。スキップします: {message}',
|
|
|
- singleTextProcessingComplete: '単一テキスト処理完了: {count} チャンク',
|
|
|
- fileVectorizationComplete: 'ファイル {id} ベクトル化完了。{count} 個のテキストブロックを処理しました。最終メモリ: {memory}MB',
|
|
|
- fileVectorizationFailed: 'ファイル {id} ベクトル化失敗',
|
|
|
- batchProcessingStarted: 'バッチ処理を開始します: {count} アイテム',
|
|
|
- batchProcessingProgress: 'バッチ {index}/{total} を処理中: {count} 個のアイテム',
|
|
|
- batchProcessingComplete: 'バッチ処理完了: {count} アイテム, 所要時間 {duration}s',
|
|
|
- onlyFailedFilesRetryable: '失敗したファイルのみ再試行可能です (現在のステータス: {status})',
|
|
|
- emptyFileRetryFailed: 'ファイル内容が空です。再試行できません。ファイルを再アップロードしてください。',
|
|
|
- ragSystemPrompt: 'あなたは専門的なナレッジベースアシスタントです。以下の提供されたドキュメントの内容に基づいて、ユーザーの質問に答えてください。',
|
|
|
- ragRules: '## ルール:\n1. 提供されたドキュメントの内容のみに基づいて回答し、情報を捏造しないでください。\n2. ドキュメントに関連情報がない場合は、その旨をユーザーに伝えてください。\n3. 回答には情報源を明記してください。形式:[ファイル名.拡張子]\n4. 複数のドキュメントで情報が矛盾している場合は、総合的に分析するか、異なる視点を説明してください。\n5. {lang}で回答してください。',
|
|
|
- ragDocumentContent: '## ドキュメント内容:',
|
|
|
- ragUserQuestion: '## ユーザーの質問:',
|
|
|
- ragAnswer: '## 回答:',
|
|
|
- ragSource: '### ソース:{fileName}',
|
|
|
- ragSegment: 'セグメント {index} (類似度: {score}):',
|
|
|
- ragNoDocumentFound: '関連するドキュメントが見つかりませんでした。',
|
|
|
- queryExpansionPrompt: 'あなたは検索アシスタントです。以下のユーザーのクエリに対して、ベクトル検索でより良い結果を得るために、3つの異なるバリエーションを生成してください。各バリエーションは異なるキーワードや表現を使用しつつ、元の意味を維持する必要があります。数字やプレフィックスなしで、3行のクエリを直接出力してください:\n\nクエリ:{query}',
|
|
|
- hydePrompt: '以下のユーザーの質問に対して、簡潔で事実に基づいた仮説的な回答(約200文字)を書いてください。「私の分析によると...」などの導入文は含めず、回答内容のみを直接出力してください。\n\n質問:{query}',
|
|
|
+ noMatchInKnowledgeGroup: '選択された知識グループに関連する内容が見つかりませんでした',
|
|
|
},
|
|
|
en: {
|
|
|
- searching: 'Searching knowledge base...',
|
|
|
- noResults: 'No relevant knowledge found, will answer based on general knowledge...',
|
|
|
- searchFailed: 'Knowledge base search failed, will answer based on general knowledge...',
|
|
|
- generatingResponse: 'Generating response',
|
|
|
- files: ' files',
|
|
|
- notebooks: ' notebooks',
|
|
|
- all: 'all',
|
|
|
- items: '',
|
|
|
- searchResults: 'Search results',
|
|
|
- relevantInfoFound: ' relevant info found',
|
|
|
- searchHits: 'Search hits',
|
|
|
- relevance: 'Relevance',
|
|
|
- sourceFiles: 'Source files',
|
|
|
- searchScope: 'Search scope',
|
|
|
- error: 'Error',
|
|
|
- creatingHistory: 'Creating new chat history: ',
|
|
|
- searchingModelById: 'Searching model by ID: ',
|
|
|
- searchModelFallback: 'Specified embedding model not found. Using first available model.',
|
|
|
- noEmbeddingModelFound: 'No embedding model settings found',
|
|
|
- usingEmbeddingModel: 'Using embedding model: ',
|
|
|
- startingSearch: 'Starting knowledge base search...',
|
|
|
- searchResultsCount: 'Search results count: ',
|
|
|
- searchFailedLog: 'Search failed',
|
|
|
- chatStreamError: 'Chat stream error',
|
|
|
- assistStreamError: 'Assist stream error',
|
|
|
- file: 'File',
|
|
|
- content: 'Content',
|
|
|
- userLabel: 'User',
|
|
|
- assistantLabel: 'Assistant',
|
|
|
- intelligentAssistant: 'You are an intelligent writing assistant.',
|
|
|
- searchString: 'Search string: ',
|
|
|
- embeddingModelIdNotProvided: 'Embedding model ID not provided',
|
|
|
- generatingEmbeddings: 'Generating embeddings...',
|
|
|
- embeddingsGenerated: 'Embeddings generated successfully',
|
|
|
- dimensions: 'dimensions',
|
|
|
- performingHybridSearch: 'Performing hybrid search...',
|
|
|
- esSearchCompleted: 'ES search completed',
|
|
|
- resultsCount: 'Results count',
|
|
|
- hybridSearchFailed: 'Hybrid search failed',
|
|
|
- getContextForTopicFailed: 'getContextForTopic failed',
|
|
|
- noLLMConfigured: 'No LLM model configured for user',
|
|
|
- simpleChatGenerationError: 'Simple chat generation error',
|
|
|
- noMatchInKnowledgeGroup: 'No relevant content found in the selected knowledge group. The following is a general answer based on the model:',
|
|
|
- uploadTextSuccess: 'Note content received. Indexing in background',
|
|
|
- passwordChanged: 'Password changed successfully',
|
|
|
- userCreated: 'User created successfully',
|
|
|
- userInfoUpdated: 'User information updated',
|
|
|
- userDeleted: 'User deleted',
|
|
|
- pdfNoteTitle: 'PDF Note - {date}',
|
|
|
- noTextExtracted: 'No text extracted',
|
|
|
- kbCleared: 'Knowledge base cleared',
|
|
|
- fileDeleted: 'File deleted',
|
|
|
- pageImageNotFoundDetail: 'Could not retrieve image for PDF page {page}',
|
|
|
- groupSyncSuccess: 'File groups updated',
|
|
|
- fileDeletedFromGroup: 'File removed from group',
|
|
|
- chunkConfigCorrection: 'Chunk config corrected: {warnings}',
|
|
|
- noChunksGenerated: 'No chunks generated for file {id}',
|
|
|
- chunkCountAnomaly: 'Actual chunk count {actual} significantly exceeds estimate {estimated}. Possible anomaly.',
|
|
|
- batchSizeExceeded: 'Batch {index} size {actual} exceeds recommended limit {limit}. Splitting for processing.',
|
|
|
- skippingEmptyVectorChunk: 'Skipping text block {index} due to empty vector',
|
|
|
- contextLengthErrorFallback: 'Context length error occurred during batch processing. Downgrading to single processing mode.',
|
|
|
- chunkLimitExceededForceBatch: 'Chunk count {actual} exceeds model batch limit {limit}. Forcing batch processing.',
|
|
|
- noteContentRequired: 'Note content is required',
|
|
|
- imageAnalysisStarted: 'Analyzing image with model {id}...',
|
|
|
- batchAnalysisStarted: 'Batch analyzing {count} images...',
|
|
|
- pageAnalysisFailed: 'Failed to analyze page {page}',
|
|
|
- visionSystemPrompt: 'You are a professional document analysis assistant. Analyze this document image and return in JSON format according to these requirements:\n\n1. Extract all readable text (follow reading order, maintain paragraphs and formatting)\n2. Identify images/graphs/tables (describe content, meaning, and role)\n3. Analyze page layout (text only/mixed/table/graph, etc.)\n4. Evaluate analysis quality (0-1)\n\nResponse format:\n{\n "text": "full text content",\n "images": [\n {"type": "graph type", "description": "detailed description", "position": 1}\n ],\n "layout": "layout description",\n "confidence": 0.95\n}',
|
|
|
- visionModelCall: '[Model Call] Type: Vision, Model: {model}, Page: {page}',
|
|
|
- visionAnalysisSuccess: '✅ Vision analysis complete: {path}{page}, Text length: {textLen}, Images: {imgCount}, Layout: {layout}, Confidence: {confidence}%',
|
|
|
- conversationHistoryNotFound: 'Conversation history not found',
|
|
|
- batchContextLengthErrorFallback: 'Context length error occurred during small file batch processing. Downgrading to single processing mode.',
|
|
|
- chunkProcessingFailed: 'Failed to process text block {index}. Skipping: {message}',
|
|
|
- singleTextProcessingComplete: 'Single text processing complete: {count} chunks',
|
|
|
- fileVectorizationComplete: 'File {id} vectorization complete. Processed {count} text blocks. Final memory: {memory}MB',
|
|
|
- fileVectorizationFailed: 'File {id} vectorization failed',
|
|
|
- batchProcessingStarted: 'Batch processing started: {count} items',
|
|
|
- batchProcessingProgress: 'Processing batch {index}/{total}: {count} items',
|
|
|
- batchProcessingComplete: 'Batch processing complete: {count} items in {duration}s',
|
|
|
- onlyFailedFilesRetryable: 'Only failed files can be retried (current status: {status})',
|
|
|
- emptyFileRetryFailed: 'File content is empty. Cannot retry. Please re-upload the file.',
|
|
|
- ragSystemPrompt: 'You are a professional knowledge base assistant. Please answer the user\'s question based on the provided document content below.',
|
|
|
- ragRules: '## Rules:\n1. Answer based only on the provided document content; do not fabricate information.\n2. If there is no relevant information in the documents, please inform the user.\n3. Clearly state the sources in your answer. Format: [filename.ext]\n4. If information in different documents is contradictory, analyze it comprehensively or explain the different perspectives.\n5. Please answer in {lang}.',
|
|
|
- ragDocumentContent: '## Document Content:',
|
|
|
- ragUserQuestion: '## User Question:',
|
|
|
- ragAnswer: '## Answer:',
|
|
|
- ragSource: '### Source: {fileName}',
|
|
|
- ragSegment: 'Segment {index} (Similarity: {score}):',
|
|
|
- ragNoDocumentFound: 'No relevant documents found.',
|
|
|
- queryExpansionPrompt: 'You are a search assistant. Please generate 3 different variations of the following user query to help get better results in vector search. Each variation should use different keywords or phrasing while maintaining the original meaning. Output the 3 queries directly as 3 lines, without numbers or prefixes:\n\nQuery: {query}',
|
|
|
- hydePrompt: 'Please write a brief, factual hypothetical answer (about 100 words) to the following user question. Do not include any introductory text (like "Based on my analysis..."), just output the answer content directly.\n\nQuestion: {query}',
|
|
|
- }
|
|
|
+ noMatchInKnowledgeGroup: 'No relevant content found in the selected knowledge group',
|
|
|
+ },
|
|
|
};
|