From be79e5e46d5e38c1a2f167d3b9c224868ef7ce7b Mon Sep 17 00:00:00 2001 From: jingrow Date: Fri, 14 Nov 2025 12:28:27 +0800 Subject: [PATCH] Add i18n support for batch delete jobs messages --- apps/jingrow/frontend/src/locales/zh-CN.json | 3 +++ apps/jingrow/frontend/src/shared/api/localJobs.ts | 1 + .../frontend/src/views/localJobs/LocalJobList.vue | 10 +++++++++- apps/jingrow/jingrow/api/local_jobs.py | 15 ++++++++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/jingrow/frontend/src/locales/zh-CN.json b/apps/jingrow/frontend/src/locales/zh-CN.json index 57e3f22..039b6ad 100644 --- a/apps/jingrow/frontend/src/locales/zh-CN.json +++ b/apps/jingrow/frontend/src/locales/zh-CN.json @@ -400,6 +400,9 @@ "No jobs found": "暂无任务", "Job stopped successfully": "任务已停止", "Job deleted successfully": "任务已删除", + "Deleted {count} jobs successfully": "成功删除 {count} 个任务", + "Partially deleted: {success} succeeded, {failed} failed": "部分删除成功:{success} 个成功,{failed} 个失败", + "Delete failed: {count} jobs failed to delete": "删除失败:{count} 个任务均删除失败", "Failed to stop job": "停止任务失败", "Failed to delete job": "删除任务失败", "Are you sure you want to stop this job?": "确定要停止这个任务吗?", diff --git a/apps/jingrow/frontend/src/shared/api/localJobs.ts b/apps/jingrow/frontend/src/shared/api/localJobs.ts index 767fd73..808efbb 100644 --- a/apps/jingrow/frontend/src/shared/api/localJobs.ts +++ b/apps/jingrow/frontend/src/shared/api/localJobs.ts @@ -37,6 +37,7 @@ export interface LocalJobDetailResponse { export interface BatchDeleteResponse { success: boolean message: string + message_params?: Record success_count: number failed_jobs: string[] } diff --git a/apps/jingrow/frontend/src/views/localJobs/LocalJobList.vue b/apps/jingrow/frontend/src/views/localJobs/LocalJobList.vue index 1444aa0..06f2d90 100644 --- a/apps/jingrow/frontend/src/views/localJobs/LocalJobList.vue +++ b/apps/jingrow/frontend/src/views/localJobs/LocalJobList.vue @@ -232,7 +232,15 @@ async function handleDeleteSelected() { const result = await batchDeleteLocalJobs(selectedJobs.value) if (result.success) { - message.success(result.message) + // 使用翻译键和参数进行翻译 + let translatedMessage = t(result.message) + if (result.message_params) { + // 替换参数占位符 + Object.entries(result.message_params).forEach(([key, value]) => { + translatedMessage = translatedMessage.replace(`{${key}}`, String(value)) + }) + } + message.success(translatedMessage) selectedJobs.value = [] await fetchJobs() } else { diff --git a/apps/jingrow/jingrow/api/local_jobs.py b/apps/jingrow/jingrow/api/local_jobs.py index 151dee3..9071c9d 100644 --- a/apps/jingrow/jingrow/api/local_jobs.py +++ b/apps/jingrow/jingrow/api/local_jobs.py @@ -266,9 +266,22 @@ async def batch_delete_local_jobs(request: Request, request_data: Dict[str, Any] except Exception: failed_jobs.append(job_id) + # 根据结果返回翻译键和参数 + failed_count = len(failed_jobs) + if failed_count == 0: + message_key = "Deleted {count} jobs successfully" + message_params = {"count": success_count} + elif success_count > 0: + message_key = "Partially deleted: {success} succeeded, {failed} failed" + message_params = {"success": success_count, "failed": failed_count} + else: + message_key = "Delete failed: {count} jobs failed to delete" + message_params = {"count": failed_count} + return { "success": True, - "message": f"Deleted {success_count} jobs successfully", + "message": message_key, + "message_params": message_params, "success_count": success_count, "failed_jobs": failed_jobs }