From cd547a117be072ef5a3db5d97169d08295226e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B9=E9=9B=AA?= <2b@yorha.xyz> Date: Thu, 11 Jun 2026 04:25:23 +0900 Subject: [PATCH] feat(ui): i18n for access groups --- .../AccessGroups/AccessGroupsDetailsPage.tsx | 52 ++++++++++------ .../AccessGroupsModal/AccessGroupBaseForm.tsx | 30 ++++----- .../AccessGroupCreateModal.tsx | 10 +-- .../AccessGroupEditModal.tsx | 10 +-- .../AccessGroups/AccessGroupsPage.tsx | 42 +++++++------ ui/litellm-dashboard/src/locales/en.json | 62 +++++++++++++++++++ ui/litellm-dashboard/src/locales/zh-CN.json | 62 +++++++++++++++++++ 7 files changed, 206 insertions(+), 62 deletions(-) diff --git a/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsDetailsPage.tsx b/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsDetailsPage.tsx index ae0cd8cd61b..77bd6ea021d 100644 --- a/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsDetailsPage.tsx +++ b/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsDetailsPage.tsx @@ -17,6 +17,7 @@ import { } from "antd"; import { ArrowLeftIcon, BotIcon, EditIcon, KeyIcon, LayersIcon, ServerIcon, UsersIcon } from "lucide-react"; import { useState } from "react"; +import { useTranslation } from "react-i18next"; import DefaultProxyAdminTag from "../common_components/DefaultProxyAdminTag"; import { AccessGroupEditModal } from "./AccessGroupsModal/AccessGroupEditModal"; @@ -29,6 +30,7 @@ interface AccessGroupDetailProps { } export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailProps) { + const { t } = useTranslation(); const { data: accessGroup, isLoading } = useAccessGroupDetails(accessGroupId); const { token } = theme.useToken(); const [isEditModalVisible, setIsEditModalVisible] = useState(false); @@ -61,7 +63,7 @@ export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailPr }} > {/* Group Details */} - - {accessGroup.description || "—"} - + + {accessGroup.description || "—"} + {new Date(accessGroup.created_at).toLocaleString()} {accessGroup.created_by && ( -  {"by"}  +  {t("accessGroups.accessGroupsDetailsPage.by")}  )} - + {new Date(accessGroup.updated_at).toLocaleString()} {accessGroup.updated_by && ( -  {"by"}  +  {t("accessGroups.accessGroupsDetailsPage.by")}  )} @@ -221,14 +223,16 @@ export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailPr title={ - Attached Keys + {t("accessGroups.accessGroupsDetailsPage.attachedKeys")} {keyIds?.length} } extra={ keyIds?.length > MAX_PREVIEW ? ( ) : null } @@ -244,7 +248,10 @@ export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailPr ))} ) : ( - + )} @@ -253,14 +260,16 @@ export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailPr title={ - Attached Teams + {t("accessGroups.accessGroupsDetailsPage.attachedTeams")} {teamIds?.length} } extra={ teamIds?.length > MAX_PREVIEW ? ( ) : null } @@ -276,7 +285,10 @@ export function AccessGroupDetail({ accessGroupId, onBack }: AccessGroupDetailPr ))} ) : ( - + )} diff --git a/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsModal/AccessGroupBaseForm.tsx b/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsModal/AccessGroupBaseForm.tsx index 72b89e34301..0ca0da19bc1 100644 --- a/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsModal/AccessGroupBaseForm.tsx +++ b/ui/litellm-dashboard/src/components/AccessGroups/AccessGroupsModal/AccessGroupBaseForm.tsx @@ -4,6 +4,7 @@ import { ModelSelect } from "@/components/ModelSelect/ModelSelect"; import type { FormInstance } from "antd"; import { Form, Input, Select, Space, Tabs } from "antd"; import { BotIcon, InfoIcon, LayersIcon, ServerIcon } from "lucide-react"; +import { useTranslation } from "react-i18next"; const { TextArea } = Input; @@ -21,6 +22,7 @@ interface AccessGroupBaseFormProps { } export function AccessGroupBaseForm({ form, isNameDisabled = false }: AccessGroupBaseFormProps) { + const { t } = useTranslation(); const { data: agentsData } = useAgents(); const { data: mcpServersData } = useMCPServers(); @@ -32,25 +34,25 @@ export function AccessGroupBaseForm({ form, isNameDisabled = false }: AccessGrou label: ( - General Info + {t("accessGroups.accessGroupBaseForm.tabGeneralInfo")} ), children: (
- + - -