diff --git a/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx b/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx index 1d1f0c92ad1..7795727e88f 100644 --- a/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Input } from "antd"; +import { useTranslation } from "react-i18next"; interface routingStrategyArgs { ttl?: number; @@ -16,18 +17,19 @@ interface LatencyBasedConfigurationProps { } const LatencyBasedConfiguration: React.FC = ({ routingStrategyArgs }) => { + const { t } = useTranslation(); + const paramExplanation: { [key: string]: string } = { - ttl: "Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).", - lowest_latency_buffer: - "Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency).", + ttl: t("routerSettings.latencyBasedConfiguration.ttlDescription"), + lowest_latency_buffer: t("routerSettings.latencyBasedConfiguration.lowestLatencyBufferDescription"), }; return ( <>
-

Latency-Based Configuration

-

Fine-tune latency-based routing behavior

+

{t("routerSettings.latencyBasedConfiguration.title")}

+

{t("routerSettings.latencyBasedConfiguration.subtitle")}

diff --git a/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx b/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx index 6465d48c271..8db48287401 100644 --- a/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Input } from "antd"; +import { useTranslation } from "react-i18next"; interface ReliabilityRetriesSectionProps { routerSettings: { [key: string]: any }; @@ -10,11 +11,13 @@ const ReliabilityRetriesSection: React.FC = ({ routerSettings, routerFieldsMetadata, }) => { + const { t } = useTranslation(); + return (
-

Reliability & Retries

-

Configure retry logic and failure handling

+

{t("routerSettings.reliabilityRetriesSection.title")}

+

{t("routerSettings.reliabilityRetriesSection.subtitle")}

diff --git a/ui/litellm-dashboard/src/components/router_settings/RouterSettingsForm.tsx b/ui/litellm-dashboard/src/components/router_settings/RouterSettingsForm.tsx index 7a2dfcbffeb..7c4b9d3df02 100644 --- a/ui/litellm-dashboard/src/components/router_settings/RouterSettingsForm.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/RouterSettingsForm.tsx @@ -1,4 +1,5 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import LatencyBasedConfiguration from "./LatencyBasedConfiguration"; import ReliabilityRetriesSection from "./ReliabilityRetriesSection"; import RoutingStrategySelector from "./RoutingStrategySelector"; @@ -25,6 +26,8 @@ const RouterSettingsForm: React.FC = ({ availableRoutingStrategies, routingStrategyDescriptions, }) => { + const { t } = useTranslation(); + const handleStrategyChange = (strategy: string) => { onChange({ ...value, @@ -44,8 +47,8 @@ const RouterSettingsForm: React.FC = ({ {/* Routing Settings Section */}
-

Routing Settings

-

Configure how requests are routed to deployments

+

{t("routerSettings.routerSettingsForm.title")}

+

{t("routerSettings.routerSettingsForm.subtitle")}

{/* Routing Strategy */} diff --git a/ui/litellm-dashboard/src/components/router_settings/TagFilteringToggle.tsx b/ui/litellm-dashboard/src/components/router_settings/TagFilteringToggle.tsx index 44bac326bb0..24a4b7a49a0 100644 --- a/ui/litellm-dashboard/src/components/router_settings/TagFilteringToggle.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/TagFilteringToggle.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Switch } from "antd"; +import { useTranslation } from "react-i18next"; interface TagFilteringToggleProps { enabled: boolean; @@ -8,12 +9,15 @@ interface TagFilteringToggleProps { } const TagFilteringToggle: React.FC = ({ enabled, routerFieldsMetadata, onToggle }) => { + const { t } = useTranslation(); + return (

{routerFieldsMetadata["enable_tag_filtering"]?.field_description || ""} @@ -26,7 +30,7 @@ const TagFilteringToggle: React.FC = ({ enabled, router rel="noopener noreferrer" className="text-blue-600 hover:text-blue-800 underline" > - Learn more + {t("common.learnMore")} )} diff --git a/ui/litellm-dashboard/src/components/router_settings/index.tsx b/ui/litellm-dashboard/src/components/router_settings/index.tsx index 7cd59ab1bf6..25a0674c48f 100644 --- a/ui/litellm-dashboard/src/components/router_settings/index.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/index.tsx @@ -1,5 +1,6 @@ import { Button } from "antd"; import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; import NotificationsManager from "../molecules/notifications_manager"; import { getCallbacksCall, getRouterSettingsCall, setCallbacksCall } from "../networking"; import RouterSettingsForm, { RouterSettingsFormValue } from "./RouterSettingsForm"; @@ -17,6 +18,7 @@ interface routingStrategyArgs { } const RouterSettings: React.FC = ({ accessToken, userRole, userID, modelData }) => { + const { t } = useTranslation(); const [formValue, setFormValue] = useState({ routerSettings: {}, selectedStrategy: null, @@ -169,10 +171,10 @@ const RouterSettings: React.FC = ({ accessToken, userRole, try { setCallbacksCall(accessToken, payload); } catch (error) { - NotificationsManager.fromBackend("Failed to update router settings: " + error); + NotificationsManager.fromBackend(t("routerSettings.index.updateFailed", { error })); } - NotificationsManager.success("router settings updated successfully"); + NotificationsManager.success(t("routerSettings.index.updateSuccess")); }; if (!accessToken) { @@ -191,9 +193,9 @@ const RouterSettings: React.FC = ({ accessToken, userRole, {/* Actions - Sticky at bottom */}

- +
diff --git a/ui/litellm-dashboard/src/locales/en.json b/ui/litellm-dashboard/src/locales/en.json index d7e26dd1c84..a079b9565ec 100644 --- a/ui/litellm-dashboard/src/locales/en.json +++ b/ui/litellm-dashboard/src/locales/en.json @@ -7305,5 +7305,29 @@ "updateSuccess": "Model storage settings updated successfully", "updateFailed": "Failed to save model storage settings: {{error}}" } + }, + "routerSettings": { + "latencyBasedConfiguration": { + "title": "Latency-Based Configuration", + "subtitle": "Fine-tune latency-based routing behavior", + "ttlDescription": "Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).", + "lowestLatencyBufferDescription": "Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency)." + }, + "reliabilityRetriesSection": { + "title": "Reliability & Retries", + "subtitle": "Configure retry logic and failure handling" + }, + "routerSettingsForm": { + "title": "Routing Settings", + "subtitle": "Configure how requests are routed to deployments" + }, + "tagFilteringToggle": { + "label": "Enable Tag Filtering" + }, + "index": { + "updateFailed": "Failed to update router settings: {{error}}", + "updateSuccess": "router settings updated successfully", + "saveChanges": "Save Changes" + } } } diff --git a/ui/litellm-dashboard/src/locales/zh-CN.json b/ui/litellm-dashboard/src/locales/zh-CN.json index 63f17b39f01..c4d51b1a0e7 100644 --- a/ui/litellm-dashboard/src/locales/zh-CN.json +++ b/ui/litellm-dashboard/src/locales/zh-CN.json @@ -7305,5 +7305,29 @@ "updateSuccess": "模型存储设置已成功更新", "updateFailed": "保存模型存储设置失败:{{error}}" } + }, + "routerSettings": { + "latencyBasedConfiguration": { + "title": "基于延迟的配置", + "subtitle": "精细调整基于延迟的路由行为", + "ttlDescription": "计算部署平均延迟时回溯的滑动窗口,默认 1 小时(单位:秒)。", + "lowestLatencyBufferDescription": "在最低延迟的此百分比范围内随机选择部署,默认 0(即始终选择最低延迟)。" + }, + "reliabilityRetriesSection": { + "title": "可靠性与重试", + "subtitle": "配置重试逻辑和故障处理" + }, + "routerSettingsForm": { + "title": "路由设置", + "subtitle": "配置请求如何路由到各部署" + }, + "tagFilteringToggle": { + "label": "启用标签过滤" + }, + "index": { + "updateFailed": "更新路由器设置失败:{{error}}", + "updateSuccess": "路由器设置已成功更新", + "saveChanges": "保存更改" + } } }