- {tools.length > 0 ? `${tools.length} tool${tools.length !== 1 ? "s" : ""}` : "All tools"}
+ {tools.length > 0
+ ? t("mcpHubTableColumns.toolCount", { count: tools.length })
+ : t("mcpHubTableColumns.allTools")}
{tools.length > 0 && (
@@ -196,7 +200,7 @@ export const mcpHubColumns = (
},
},
{
- header: "Created By",
+ header: t("mcpHubTableColumns.colCreatedBy"),
accessorKey: "created_by",
enableSorting: true,
sortingFn: "alphanumeric",
@@ -210,7 +214,7 @@ export const mcpHubColumns = (
},
},
{
- header: "Public",
+ header: t("mcpHubTableColumns.colPublic"),
accessorKey: "mcp_info.is_public",
enableSorting: true,
sortingFn: (rowA, rowB) => {
@@ -223,11 +227,11 @@ export const mcpHubColumns = (
return server.mcp_info?.is_public === true ? (
- Yes
+ {t("common.yes")}
) : (
- No
+ {t("common.no")}
);
},
@@ -236,7 +240,7 @@ export const mcpHubColumns = (
},
},
{
- header: "Details",
+ header: t("common.details"),
id: "details",
enableSorting: false,
cell: ({ row }) => {
@@ -244,8 +248,8 @@ export const mcpHubColumns = (
return (
showModal(server)} icon={InfoCircleOutlined}>
- Details
- Info
+ {t("common.details")}
+ {t("mcpHubTableColumns.infoShort")}
);
},
diff --git a/ui/litellm-dashboard/src/locales/en.json b/ui/litellm-dashboard/src/locales/en.json
index a8c36a991ff..be8cff829c9 100644
--- a/ui/litellm-dashboard/src/locales/en.json
+++ b/ui/litellm-dashboard/src/locales/en.json
@@ -1128,6 +1128,137 @@
"errorParsingDetails": "Error parsing details",
"jsonFormatError": "Error formatting JSON: {{error}}"
},
+ "claudeCodePlugins": {
+ "skillsTitle": "Skills",
+ "skillsDescription": "Register Claude Code skills. Published skills appear in the Skill Hub for all users and are served via {{endpoint}}.",
+ "addSkill": "+ Add Skill",
+ "deleteSkillTitle": "Delete Skill",
+ "deleteConfirmMessage": "Are you sure you want to delete skill: {{name}} ?",
+ "cannotUndone": "This action cannot be undone.",
+ "deleteSuccess": "Skill \"{{name}}\" deleted successfully",
+ "deleteFailed": "Failed to delete skill"
+ },
+ "cloudzeroExportModal": {
+ "exportDataTitle": "Export Data",
+ "exportDestination": "Export Destination",
+ "exportToCloudZero": "Export to CloudZero",
+ "exportToCsv": "Export to CSV",
+ "existingConfig": "Existing CloudZero Configuration",
+ "apiKeyInfo": "API Key: {{maskedKey}}",
+ "connectionIdInfo": "Connection ID: {{connectionId}}",
+ "apiKeyLabel": "CloudZero API Key",
+ "apiKeyRequired": "Please enter your CloudZero API key",
+ "apiKeyPlaceholder": "Enter your CloudZero API key",
+ "connectionIdLabel": "Connection ID",
+ "connectionIdRequired": "Please enter the CloudZero connection ID",
+ "connectionIdPlaceholder": "Enter CloudZero connection ID",
+ "csvExportTitle": "CSV Export",
+ "csvExportDesc": "Export your usage data as a CSV file for analysis in spreadsheet applications.",
+ "exportCsvButton": "Export CSV",
+ "settingsSavedSuccess": "CloudZero settings saved successfully",
+ "exportSuccess": "Export to CloudZero completed successfully",
+ "csvComingSoon": "CSV export functionality coming soon!",
+ "noAccessToken": "No access token available",
+ "failedToLoadSettings": "Failed to load existing settings: {{error}}",
+ "failedToLoadSettingsGeneric": "Failed to load existing settings",
+ "failedToSaveSettings": "Failed to save CloudZero settings",
+ "failedToExport": "Failed to export to CloudZero",
+ "failedToExportCsv": "Failed to export CSV"
+ },
+ "editUser": {
+ "modalTitle": "Edit User {{userId}}",
+ "userEmailLabel": "User Email",
+ "userEmailTooltip": "Email of the User",
+ "userRoleLabel": "User Role",
+ "spendLabel": "Spend (USD)",
+ "spendTooltip": "(float) - Spend of all LLM calls completed by this user",
+ "spendHelp": "Across all keys (including keys with team_id).",
+ "maxBudgetLabel": "User Budget (USD)",
+ "maxBudgetTooltip": "(float) - Maximum budget of this user",
+ "maxBudgetHelp": "Maximum budget of this user.",
+ "resetBudgetLabel": "Reset Budget"
+ },
+ "emailSettings": {
+ "emailServerSettings": "Email Server Settings",
+ "docsLink": "LiteLLM Docs: email alerts",
+ "saveChanges": "Save Changes",
+ "testEmailAlerts": "Test Email Alerts",
+ "saveSuccess": "Email settings updated successfully",
+ "testSuccess": "Email test triggered. Check your configured email inbox/logs.",
+ "requiredStar": "Required *",
+ "smtpHostDesc": "Enter the SMTP host address, e.g. `smtp.resend.com`",
+ "smtpPortDesc": "Enter the SMTP port number, e.g. `587`",
+ "smtpUsernameDesc": "Enter the SMTP username, e.g. `username`",
+ "smtpSenderEmailDesc": "Enter the sender email address, e.g. `sender@berri.ai`",
+ "testEmailAddressDesc": "Email Address to send `Test Email Alert` to. example: `info@berri.ai`",
+ "emailLogoUrlDesc": "(Optional) Customize the Logo that appears in the email, pass a url to your logo",
+ "emailSupportContactDesc": "(Optional) Customize the support email address that appears in the email. Default is support@berri.ai"
+ },
+ "generalSettings": {
+ "tabLoadbalancing": "Loadbalancing",
+ "tabRoutingGroups": "Routing Groups",
+ "tabFallbacks": "Fallbacks",
+ "tabGeneral": "General",
+ "colSetting": "Setting",
+ "colValue": "Value",
+ "colStatus": "Status",
+ "colAction": "Action",
+ "statusInDb": "In DB",
+ "statusInConfig": "In Config",
+ "statusNotSet": "Not Set"
+ },
+ "guardrails": {
+ "guardrailGardenTab": "Guardrail Garden",
+ "guardrailsTab": "Guardrails",
+ "testPlaygroundTab": "Test Playground",
+ "submittedGuardrailsTab": "Submitted Guardrails",
+ "addNewGuardrail": "+ Add New Guardrail",
+ "addProviderGuardrail": "Add Provider Guardrail",
+ "createCustomCodeGuardrail": "Create Custom Code Guardrail",
+ "deleteGuardrailTitle": "Delete Guardrail",
+ "deleteGuardrailMessage": "Are you sure you want to delete guardrail: {{name}}? This action cannot be undone.",
+ "guardrailInfoTitle": "Guardrail Information",
+ "labelId": "ID",
+ "labelMode": "Mode",
+ "labelDefaultOn": "Default On",
+ "deleteSuccess": "Guardrail \"{{name}}\" deleted successfully",
+ "deleteFailed": "Failed to delete guardrail"
+ },
+ "keyValueInput": {
+ "headerNamePlaceholder": "Header Name",
+ "headerValuePlaceholder": "Header Value",
+ "addHeader": "Add Header"
+ },
+ "loggingSettingsView": {
+ "loggingIntegrations": "Logging Integrations",
+ "parametersConfigured_one": "{{count}} parameter configured",
+ "parametersConfigured_other": "{{count}} parameters configured",
+ "noIntegrationsConfigured": "No logging integrations configured",
+ "disabledCallbacks": "Disabled Callbacks",
+ "disabledForKey": "Disabled for this key",
+ "noCallbacksDisabled": "No callbacks disabled",
+ "cardTitle": "Logging Settings",
+ "cardSubtitle": "Active logging integrations and disabled callbacks for this key",
+ "inlineTitle": "Logging Settings",
+ "successOnly": "Success Only",
+ "failureOnly": "Failure Only",
+ "successAndFailure": "Success & Failure"
+ },
+ "mcpHubTableColumns": {
+ "colServerName": "Server Name",
+ "colUrl": "URL",
+ "colTransport": "Transport",
+ "colAuthType": "Auth Type",
+ "colTools": "Tools",
+ "colCreatedBy": "Created By",
+ "colPublic": "Public",
+ "copyServerName": "Copy server name",
+ "copyUrl": "Copy URL",
+ "toolCount_one": "{{count}} tool",
+ "toolCount_other": "{{count}} tools",
+ "allTools": "All tools",
+ "infoShort": "Info"
+ },
"common": {
"save": "Save",
"cancel": "Cancel",
diff --git a/ui/litellm-dashboard/src/locales/zh-CN.json b/ui/litellm-dashboard/src/locales/zh-CN.json
index 4ac5f95c536..b6ba445d783 100644
--- a/ui/litellm-dashboard/src/locales/zh-CN.json
+++ b/ui/litellm-dashboard/src/locales/zh-CN.json
@@ -1128,6 +1128,137 @@
"errorParsingDetails": "解析详情时出错",
"jsonFormatError": "JSON 格式化出错:{{error}}"
},
+ "claudeCodePlugins": {
+ "skillsTitle": "技能",
+ "skillsDescription": "注册 Claude Code 技能。已发布的技能将在技能中心向所有用户展示,并通过 {{endpoint}} 提供服务。",
+ "addSkill": "+ 添加技能",
+ "deleteSkillTitle": "删除技能",
+ "deleteConfirmMessage": "确定要删除技能:{{name}} ?",
+ "cannotUndone": "此操作无法撤销。",
+ "deleteSuccess": "技能「{{name}}」已成功删除",
+ "deleteFailed": "删除技能失败"
+ },
+ "cloudzeroExportModal": {
+ "exportDataTitle": "导出数据",
+ "exportDestination": "导出目标",
+ "exportToCloudZero": "导出到 CloudZero",
+ "exportToCsv": "导出为 CSV",
+ "existingConfig": "现有 CloudZero 配置",
+ "apiKeyInfo": "API 密钥:{{maskedKey}}",
+ "connectionIdInfo": "连接 ID:{{connectionId}}",
+ "apiKeyLabel": "CloudZero API 密钥",
+ "apiKeyRequired": "请输入您的 CloudZero API 密钥",
+ "apiKeyPlaceholder": "输入您的 CloudZero API 密钥",
+ "connectionIdLabel": "连接 ID",
+ "connectionIdRequired": "请输入 CloudZero 连接 ID",
+ "connectionIdPlaceholder": "输入 CloudZero 连接 ID",
+ "csvExportTitle": "CSV 导出",
+ "csvExportDesc": "将您的用量数据导出为 CSV 文件,以便在电子表格应用中分析。",
+ "exportCsvButton": "导出 CSV",
+ "settingsSavedSuccess": "CloudZero 设置已保存",
+ "exportSuccess": "已成功导出到 CloudZero",
+ "csvComingSoon": "CSV 导出功能即将推出!",
+ "noAccessToken": "无可用访问令牌",
+ "failedToLoadSettings": "加载现有设置失败:{{error}}",
+ "failedToLoadSettingsGeneric": "加载现有设置失败",
+ "failedToSaveSettings": "保存 CloudZero 设置失败",
+ "failedToExport": "导出到 CloudZero 失败",
+ "failedToExportCsv": "导出 CSV 失败"
+ },
+ "editUser": {
+ "modalTitle": "编辑用户 {{userId}}",
+ "userEmailLabel": "用户邮箱",
+ "userEmailTooltip": "用户的邮箱地址",
+ "userRoleLabel": "用户角色",
+ "spendLabel": "花费(USD)",
+ "spendTooltip": "(浮点数)- 该用户完成的所有 LLM 调用的花费",
+ "spendHelp": "包含所有密钥(含有 team_id 的密钥)的花费。",
+ "maxBudgetLabel": "用户预算(USD)",
+ "maxBudgetTooltip": "(浮点数)- 该用户的最大预算",
+ "maxBudgetHelp": "该用户的最大预算。",
+ "resetBudgetLabel": "重置预算"
+ },
+ "emailSettings": {
+ "emailServerSettings": "邮件服务器设置",
+ "docsLink": "LiteLLM 文档:邮件告警",
+ "saveChanges": "保存更改",
+ "testEmailAlerts": "测试邮件告警",
+ "saveSuccess": "邮件设置已成功更新",
+ "testSuccess": "邮件测试已触发,请检查您配置的邮件收件箱/日志。",
+ "requiredStar": "必填 *",
+ "smtpHostDesc": "输入 SMTP 主机地址,例如 `smtp.resend.com`",
+ "smtpPortDesc": "输入 SMTP 端口号,例如 `587`",
+ "smtpUsernameDesc": "输入 SMTP 用户名,例如 `username`",
+ "smtpSenderEmailDesc": "输入发件人邮箱地址,例如 `sender@berri.ai`",
+ "testEmailAddressDesc": "发送「测试邮件告警」的目标邮箱,例如:`info@berri.ai`",
+ "emailLogoUrlDesc": "(可选)自定义邮件中显示的 Logo,传入您的 Logo URL",
+ "emailSupportContactDesc": "(可选)自定义邮件中显示的支持邮箱地址,默认为 support@berri.ai"
+ },
+ "generalSettings": {
+ "tabLoadbalancing": "负载均衡",
+ "tabRoutingGroups": "路由分组",
+ "tabFallbacks": "回退",
+ "tabGeneral": "常规",
+ "colSetting": "设置项",
+ "colValue": "值",
+ "colStatus": "状态",
+ "colAction": "操作",
+ "statusInDb": "数据库中",
+ "statusInConfig": "配置文件中",
+ "statusNotSet": "未设置"
+ },
+ "guardrails": {
+ "guardrailGardenTab": "护栏库",
+ "guardrailsTab": "护栏",
+ "testPlaygroundTab": "测试 Playground",
+ "submittedGuardrailsTab": "已提交的护栏",
+ "addNewGuardrail": "+ 添加新护栏",
+ "addProviderGuardrail": "添加提供商护栏",
+ "createCustomCodeGuardrail": "创建自定义代码护栏",
+ "deleteGuardrailTitle": "删除护栏",
+ "deleteGuardrailMessage": "确定要删除护栏:{{name}}?此操作无法撤销。",
+ "guardrailInfoTitle": "护栏信息",
+ "labelId": "ID",
+ "labelMode": "模式",
+ "labelDefaultOn": "默认启用",
+ "deleteSuccess": "护栏「{{name}}」已成功删除",
+ "deleteFailed": "删除护栏失败"
+ },
+ "keyValueInput": {
+ "headerNamePlaceholder": "请求头名称",
+ "headerValuePlaceholder": "请求头值",
+ "addHeader": "添加请求头"
+ },
+ "loggingSettingsView": {
+ "loggingIntegrations": "日志集成",
+ "parametersConfigured_one": "{{count}} 个参数已配置",
+ "parametersConfigured_other": "{{count}} 个参数已配置",
+ "noIntegrationsConfigured": "未配置日志集成",
+ "disabledCallbacks": "已禁用的回调",
+ "disabledForKey": "已为此密钥禁用",
+ "noCallbacksDisabled": "未禁用任何回调",
+ "cardTitle": "日志设置",
+ "cardSubtitle": "此密钥的活跃日志集成和已禁用的回调",
+ "inlineTitle": "日志设置",
+ "successOnly": "仅成功",
+ "failureOnly": "仅失败",
+ "successAndFailure": "成功与失败"
+ },
+ "mcpHubTableColumns": {
+ "colServerName": "服务器名称",
+ "colUrl": "URL",
+ "colTransport": "传输协议",
+ "colAuthType": "认证类型",
+ "colTools": "工具",
+ "colCreatedBy": "创建者",
+ "colPublic": "公开",
+ "copyServerName": "复制服务器名称",
+ "copyUrl": "复制 URL",
+ "toolCount_one": "{{count}} 个工具",
+ "toolCount_other": "{{count}} 个工具",
+ "allTools": "所有工具",
+ "infoShort": "详情"
+ },
"common": {
"save": "保存",
"cancel": "取消",