From 2c3eeceea8d5ad5d34657645a5f7f479822e8500 Mon Sep 17 00:00:00 2001 From: RC-CHN <1051989940@qq.com> Date: Tue, 17 Mar 2026 10:00:16 +0800 Subject: [PATCH 1/2] fix(ui): localize session management group texts Replace hardcoded Chinese strings in SessionManagementPage with i18n lookups for group management labels, dialogs, and action feedback. Add and align translation keys in en-US, ru-RU, and zh-CN for group management and batch operation messages to ensure consistent multilingual UI behavior. --- .../en-US/features/session-management.json | 48 +++++++------ .../ru-RU/features/session-management.json | 32 ++++++++- .../zh-CN/features/session-management.json | 32 ++++++++- dashboard/src/views/SessionManagementPage.vue | 67 ++++++++++--------- 4 files changed, 125 insertions(+), 54 deletions(-) diff --git a/dashboard/src/i18n/locales/en-US/features/session-management.json b/dashboard/src/i18n/locales/en-US/features/session-management.json index fdd6b4f82f..839dc248fb 100644 --- a/dashboard/src/i18n/locales/en-US/features/session-management.json +++ b/dashboard/src/i18n/locales/en-US/features/session-management.json @@ -93,24 +93,6 @@ "batchDeleteConfirm": { "title": "Confirm Batch Delete", "message": "Are you sure you want to delete {count} selected rules? Global settings will be used after deletion." - }, - "batchOperations": { - "title": "Batch Operations", - "hint": "Quick batch modify session settings", - "scope": "Apply to", - "scopeSelected": "Selected sessions", - "scopeAll": "All sessions", - "scopeGroup": "All groups", - "scopePrivate": "All private chats", - "llmStatus": "LLM Status", - "ttsStatus": "TTS Status", - "chatProvider": "Chat Model", - "ttsProvider": "TTS Model", - "apply": "Apply Changes" - }, - "status": { - "enabled": "Enabled", - "disabled": "Disabled" }, "batchOperations": { "title": "Batch Operations", @@ -126,6 +108,25 @@ "ttsProvider": "TTS Model", "apply": "Apply Changes" }, + "groups": { + "title": "Group Management", + "count": "{count} groups", + "addToGroup": "Add to Group", + "create": "Create Group", + "edit": "Edit Group", + "name": "Group Name", + "sessionsCount": "{count} sessions", + "empty": "No groups yet. Click 'Create Group' to create one.", + "availableSessions": "Available Sessions ({count})", + "selectedSessions": "Selected Sessions ({count})", + "searchPlaceholder": "Search...", + "noMatch": "No matches", + "noMembers": "No members", + "customGroupDivider": "── Custom Groups ──", + "customGroupOption": "📁 {name} ({count})", + "groupOption": "{name} ({count} sessions)", + "deleteConfirm": "Are you sure you want to delete group \"{name}\"?" + }, "status": { "enabled": "Enabled", "disabled": "Disabled" @@ -142,7 +143,16 @@ "noChanges": "No changes to save", "batchDeleteSuccess": "Batch delete successful", "batchDeleteError": "Batch delete failed", + "selectSessionsFirst": "Please select sessions first", + "selectAtLeastOneConfig": "Please select at least one setting to modify", + "batchUpdateSuccess": "Batch update successful", + "partialUpdateFailed": "Some updates failed", "batchUpdateError": "Batch update failed", - "batchUpdateSuccess": "Batch update success" + "groupNameRequired": "Group name cannot be empty", + "saveGroupError": "Failed to save group", + "deleteGroupError": "Failed to delete group", + "selectSessionsToAddFirst": "Please select sessions to add first", + "addToGroupSuccess": "Added {count} sessions to the group", + "addToGroupError": "Failed to add to group" } } diff --git a/dashboard/src/i18n/locales/ru-RU/features/session-management.json b/dashboard/src/i18n/locales/ru-RU/features/session-management.json index 19c3a9aa5d..f0ffa31bba 100644 --- a/dashboard/src/i18n/locales/ru-RU/features/session-management.json +++ b/dashboard/src/i18n/locales/ru-RU/features/session-management.json @@ -108,6 +108,25 @@ "ttsProvider": "TTS-модель", "apply": "Применить" }, + "groups": { + "title": "Управление группами", + "count": "групп: {count}", + "addToGroup": "Добавить в группу", + "create": "Создать группу", + "edit": "Изменить группу", + "name": "Имя группы", + "sessionsCount": "сессий: {count}", + "empty": "Пока нет групп. Нажмите «Создать группу», чтобы добавить.", + "availableSessions": "Доступные сессии ({count})", + "selectedSessions": "Выбранные сессии ({count})", + "searchPlaceholder": "Поиск...", + "noMatch": "Нет совпадений", + "noMembers": "Нет участников", + "customGroupDivider": "── Пользовательские группы ──", + "customGroupOption": "📁 {name} ({count})", + "groupOption": "{name} (сессий: {count})", + "deleteConfirm": "Вы уверены, что хотите удалить группу \"{name}\"?" + }, "status": { "enabled": "Включено", "disabled": "Выключено" @@ -124,7 +143,16 @@ "noChanges": "Изменений не обнаружено", "batchDeleteSuccess": "Массовое удаление выполнено", "batchDeleteError": "Ошибка массового удаления", + "selectSessionsFirst": "Пожалуйста, сначала выберите сессии", + "selectAtLeastOneConfig": "Пожалуйста, выберите хотя бы одну настройку для изменения", + "batchUpdateSuccess": "Пакетное обновление успешно выполнено", + "partialUpdateFailed": "Некоторые обновления не выполнены", "batchUpdateError": "Ошибка пакетного обновления", - "batchUpdateSuccess": "Пакетное обновление успешно выполнено" + "groupNameRequired": "Имя группы не может быть пустым", + "saveGroupError": "Ошибка сохранения группы", + "deleteGroupError": "Ошибка удаления группы", + "selectSessionsToAddFirst": "Пожалуйста, сначала выберите сессии для добавления", + "addToGroupSuccess": "Добавлено сессий в группу: {count}", + "addToGroupError": "Ошибка добавления в группу" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/zh-CN/features/session-management.json b/dashboard/src/i18n/locales/zh-CN/features/session-management.json index 33b387cd29..7fb1d0eb4d 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/session-management.json +++ b/dashboard/src/i18n/locales/zh-CN/features/session-management.json @@ -108,6 +108,25 @@ "ttsProvider": "TTS 模型", "apply": "应用更改" }, + "groups": { + "title": "分组管理", + "count": "{count} 个分组", + "addToGroup": "添加到分组", + "create": "新建分组", + "edit": "编辑分组", + "name": "分组名称", + "sessionsCount": "{count} 个会话", + "empty": "暂无分组,点击「新建分组」创建", + "availableSessions": "可选会话 ({count})", + "selectedSessions": "已选会话 ({count})", + "searchPlaceholder": "搜索...", + "noMatch": "无匹配项", + "noMembers": "暂无成员", + "customGroupDivider": "── 自定义分组 ──", + "customGroupOption": "📁 {name} ({count})", + "groupOption": "{name} ({count} 个会话)", + "deleteConfirm": "确定要删除分组 \"{name}\" 吗?" + }, "status": { "enabled": "启用", "disabled": "禁用" @@ -123,6 +142,17 @@ "deleteError": "删除失败", "noChanges": "没有需要保存的更改", "batchDeleteSuccess": "批量删除成功", - "batchDeleteError": "批量删除失败" + "batchDeleteError": "批量删除失败", + "selectSessionsFirst": "请先选择要操作的会话", + "selectAtLeastOneConfig": "请至少选择一项要修改的配置", + "batchUpdateSuccess": "批量更新成功", + "partialUpdateFailed": "部分更新失败", + "batchUpdateError": "批量更新失败", + "groupNameRequired": "分组名称不能为空", + "saveGroupError": "保存分组失败", + "deleteGroupError": "删除分组失败", + "selectSessionsToAddFirst": "请先选择要添加的会话", + "addToGroupSuccess": "已添加 {count} 个会话到分组", + "addToGroupError": "添加失败" } } diff --git a/dashboard/src/views/SessionManagementPage.vue b/dashboard/src/views/SessionManagementPage.vue index 5008e1dd3a..0d195cf67a 100644 --- a/dashboard/src/views/SessionManagementPage.vue +++ b/dashboard/src/views/SessionManagementPage.vue @@ -156,24 +156,24 @@ - 分组管理 + {{ tm('groups.title') }} - {{ groups.length }} 个分组 + {{ tm('groups.count', { count: groups.length }) }} mdi-folder-plus - 添加到分组 + {{ tm('groups.addToGroup') }} - {{ g.name }} ({{ g.umo_count }}) + {{ tm('groups.customGroupOption', { name: g.name, count: g.umo_count }) }} - 新建分组 + {{ tm('groups.create') }} @@ -183,7 +183,7 @@
{{ group.name }}
-
{{ group.umo_count }} 个会话
+
{{ tm('groups.sessionsCount', { count: group.umo_count }) }}
@@ -199,7 +199,7 @@ - 暂无分组,点击「新建分组」创建 + {{ tm('groups.empty') }} @@ -207,15 +207,15 @@ - {{ groupDialogMode === 'create' ? '新建分组' : '编辑分组' }} + {{ groupDialogMode === 'create' ? tm('groups.create') : tm('groups.edit') }} - + -
可选会话 ({{ unselectedUmos.length }})
- +
{{ tm('groups.availableSessions', { count: unselectedUmos.length }) }}
+