diff --git a/messages/zh-CN.json b/messages/zh-CN.json
index 060ac4e22..2205c2e0b 100644
--- a/messages/zh-CN.json
+++ b/messages/zh-CN.json
@@ -43,6 +43,8 @@
"inviteLoginUser": "请确保您以正确的用户登录。",
"inviteErrorNoUser": "很抱歉,但看起来你想访问的邀请不是一个存在的用户。",
"inviteCreateUser": "请先创建一个帐户。",
+ "inviteErrorOidcNotAllowed": "邀请只能由内部账户接受。退出登录,使用该电子邮件的密码登录。",
+ "inviteLoginInternalOnly": "邀请需要具有密码的内部账户。请创建账户或使用密码登录。",
"goHome": "返回首页",
"inviteLogInOtherUser": "以不同的用户登录",
"createAnAccount": "创建帐户",
@@ -286,7 +288,21 @@
"noCountryFound": "找不到国家。",
"siteSelectionDescription": "此站点将为目标提供连接。",
"resourceType": "资源类型",
- "resourceTypeDescription": "这会控制资源协议及其在浏览器中的渲染方式。之后不能更改。",
+ "resourceTypeDescription": "此功能控制资源协议,之后无法更改。",
+ "resourceTypeSearch": "搜索资源类型……",
+ "resourceTypeNotFound": "未找到资源类型",
+ "resourceTypeHttpDescription": "使用域名通过HTTPS代理网络流量",
+ "resourceTypeInferenceDescription": "通过附加的提供者处理AI请求",
+ "resourceTypeSshDescription": "从浏览器访问SSH服务器",
+ "resourceTypeRdpDescription": "从浏览器访问远程桌面",
+ "resourceTypeVncDescription": "从浏览器访问VNC桌面",
+ "resourceTypeTcpDescription": "使用端口号代理原始TCP流量",
+ "resourceTypeUdpDescription": "使用端口号代理原始UDP流量",
+ "privateResourceTypeDescription": "此功能控制客户端访问资源的方式,之后无法更改。",
+ "privateResourceTypeHostDescription": "在站点网络上向连接的客户端暴露单个主机",
+ "privateResourceTypeCidrDescription": "在站点网络上向连接的客户端暴露CIDR范围",
+ "privateResourceTypeHttpDescription": "通过域访问HTTP或HTTPS服务",
+ "privateResourceTypeSshDescription": "从连接的客户端访问SSH服务器",
"resourceDomainDescription": "资源将在此完全限定的域名上提供。",
"resourceHTTPSSettings": "HTTPS 设置",
"resourceHTTPSSettingsDescription": "配置如何通过 HTTPS 访问资源",
@@ -855,12 +871,16 @@
"authMethodsSave": "保存设置",
"policyAuthStackTitle": "身份验证",
"policyAuthStackDescription": "控制哪些身份验证方法需由用户执行才能访问资源",
+ "policyAuthInferenceStackDescription": "选择哪些用户和角色可以对这个AI网关进行验证",
"policyAuthOrLogicTitle": "多种身份验证方法处于激活状态",
"policyAuthOrLogicBanner": "访问者可以使用下列任意激活的方法进行身份验证。无需完成全部过程。",
"policyAuthMethodActive": "激活",
"policyAuthMethodOff": "关闭",
"policyAuthSsoTitle": "平台单点登录 SSO",
"policyAuthSsoDescription": "要求通过您组织的身份提供商登录",
+ "policyAuthInferenceIdentityKeySignInUrl": "登录URL",
+ "policyAuthInferenceIdentityKeyHelpNoUrl": "每个用户已经拥有一个身份API密钥,因此您只需要为非用户客户端或共享访问创建虚拟API密钥。用户可以通过在此资源的URL中登录其身份提供者来检索其密钥,登录后将显示。",
+ "policyAuthInferenceIdentityKeyHelp": "每个用户已经拥有一个身份API密钥,因此您只需要为非用户客户端或共享访问创建虚拟API密钥。用户可在登录其身份提供者后在此处获取其密钥。",
"policyAuthSsoSummary": "{idp} · {users} 个用户, {roles} 个角色",
"policyAuthSsoDefaultIdp": "默认提供商",
"policyAuthAddDefaultIdentityProvider": "添加默认身份提供商",
@@ -1079,6 +1099,8 @@
"accessRoleErrorNewRequired": "需要新角色",
"accessRoleErrorRemove": "删除角色失败",
"accessRoleErrorRemoveDescription": "删除角色时出错。",
+ "accessRoleInferenceBudget": "AI预算",
+ "accessRoleInferenceBudgetDescription": "配置此角色成员如何根据支出或令牌限制来限制AI使用",
"accessRoleName": "角色名称",
"accessRoleQuestionRemove": "您即将删除 `{name}` 角色。此操作无法撤销。",
"accessRoleRemove": "删除角色",
@@ -1424,6 +1446,28 @@
"actionDeleteSite": "删除站点",
"actionGetSite": "获取站点",
"actionListSites": "站点列表",
+ "actionCreateAiProvider": "创建AI提供者",
+ "actionDeleteAiProvider": "删除AI提供者",
+ "actionGetAiProvider": "获取AI提供者",
+ "actionListAiProviders": "列出AI提供者",
+ "actionUpdateAiProvider": "更新AI提供者",
+ "actionCreateAiModel": "创建AI模型",
+ "actionDeleteAiModel": "删除AI模型",
+ "actionGetAiModel": "获取AI模型",
+ "actionListAiModels": "列出AI模型",
+ "actionUpdateAiModel": "更新AI模型",
+ "actionCreateAiBudget": "创建AI预算",
+ "actionDeleteAiBudget": "删除AI预算",
+ "actionGetAiBudget": "获取AI预算",
+ "actionListAiBudgets": "列出AI预算",
+ "actionUpdateAiBudget": "更新AI预算",
+ "actionListResourceAiModels": "列出资源AI模型",
+ "actionSetResourceAiModels": "设置资源AI模型",
+ "actionCreateVirtualApiKey": "创建虚拟API密钥",
+ "actionDeleteVirtualApiKey": "删除虚拟API密钥",
+ "actionGetVirtualApiKey": "获取虚拟API密钥",
+ "actionListVirtualApiKeys": "列出虚拟API密钥",
+ "actionUpdateVirtualApiKey": "更新虚拟API密钥",
"actionApplyBlueprint": "应用蓝图",
"actionListBlueprints": "列表蓝图",
"actionGetBlueprint": "获取蓝图",
@@ -1449,8 +1493,11 @@
"actionSetResourcePincode": "设置资源粉码",
"actionSetResourceEmailWhitelist": "设置资源电子邮件白名单",
"actionGetResourceEmailWhitelist": "获取资源电子邮件白名单",
+ "actionListResourcePolicies": "列出资源策略",
+ "actionCreateResourcePolicy": "创建资源策略",
"actionGetResourcePolicy": "获取资源策略",
"actionUpdateResourcePolicy": "更新资源策略",
+ "actionDeleteResourcePolicy": "删除资源策略",
"actionSetResourcePolicyUsers": "设置资源策略用户",
"actionSetResourcePolicyRoles": "设置资源策略角色",
"actionSetResourcePolicyPassword": "设置资源策略密码",
@@ -1622,6 +1669,404 @@
"sidebarInvitations": "邀请",
"sidebarRoles": "角色",
"sidebarShareableLinks": "共享链接",
+ "sidebarAiGateway": "AI网关",
+ "sidebarAiProviders": "提供者",
+ "commandAiProviders": "AI提供者",
+ "sidebarVirtualApiKeys": "虚拟API密钥",
+ "sidebarMyApiKeys": "您的API密钥",
+ "sidebarAccount": "启动器",
+ "commandVirtualApiKeys": "虚拟API密钥",
+ "virtualApiKeysTitle": "管理虚拟API密钥",
+ "virtualApiKeysDescription": "创建和管理AI网关访问到公共AI网关的手动API密钥",
+ "virtualApiKeysTabIdentity": "身份密钥",
+ "virtualApiKeysTabVirtual": "虚拟密钥",
+ "virtualApiKeysIdentitySplashTitle": "每个用户的身份密钥",
+ "virtualApiKeysIdentitySplashDescription": "每个用户已经拥有此组织的Pangolin身份密钥。它是唯一的,并能够认证他们访问AI网关。",
+ "virtualApiKeysIdentitySplashExample": "示例",
+ "virtualApiKeysIdentitySplashRetrieveTitle": "用户如何获取他们的密钥",
+ "virtualApiKeysIdentitySplashRetrieveResource": "访问公共AI网关URL并使用其账户登录。",
+ "virtualApiKeysIdentitySplashRetrievePage": "或在登录时访问 。",
+ "virtualApiKeysIdentitySplashManual": "您可以在虚拟密钥标签中创建其他虚拟API密钥。那些密钥可以限定为特定的公共AI网关,并可以选择是否与用户相关联。创建密钥后立即授予对选定公共AI网关的访问权限。",
+ "virtualApiKeysIdentitySplashGoToVirtual": "手动创建密钥",
+ "virtualApiKeysEmailIdentity": "电子邮件身份密钥",
+ "virtualApiKeysEmailIdentityDescription": "向选择的用户或角色发送他们的Pangolin身份密钥。",
+ "virtualApiKeysEmailIdentitySendAll": "发送给所有用户",
+ "virtualApiKeysEmailIdentitySendAllDescription": "向所有有电子邮件账户的组织成员发送电子邮件。",
+ "virtualApiKeysEmailIdentitySelectUsers": "用户",
+ "virtualApiKeysEmailIdentitySelectRoles": "角色",
+ "virtualApiKeysEmailIdentitySubmit": "发送邮件",
+ "virtualApiKeysEmailIdentitySuccess": "身份密钥已发送",
+ "virtualApiKeysEmailIdentitySuccessDescription": "Sent {sent} emails.",
+ "virtualApiKeysEmailIdentitySkipped": "{skipped} users were skipped because they do not have an email address.",
+ "virtualApiKeysEmailIdentityRecipientsRequired": "至少选择一个用户或角色,或发送给所有用户。",
+ "virtualApiKeysEmailIdentityError": "发送身份密钥出错",
+ "virtualApiKeysEmailIdentityErrorDescription": "未能发送身份密钥邮件",
+ "virtualApiKeysBannerTitle": "每个用户的身份密钥",
+ "virtualApiKeysBannerDescription": "每个用户都可以在{keysUrl}获取一个身份密钥。您也可以在这里手动生成密钥以直接访问公共AI网关。",
+ "virtualApiKeysBannerButtonText": "查看身份密钥",
+ "virtualApiKeys": "虚拟API 密钥",
+ "virtualApiKeysSearch": "搜索密钥……",
+ "virtualApiKeysCreate": "创建虚拟API密钥",
+ "virtualApiKeysCreateDescription": "创建一个手动密钥,用于调用本组织内的公共AI网关",
+ "virtualApiKeysCreateButton": "创建密钥",
+ "virtualApiKeysEmpty": "尚无虚拟API密钥",
+ "virtualApiKeysName": "名称",
+ "virtualApiKeysDescriptionOptional": "描述(可选)",
+ "virtualApiKeysAssociateUserOptional": "关联用户(可选)",
+ "virtualApiKeysAssociateUserDescription": "将此密钥与用户相关联以跟踪使用情况。创建后,此密钥立即授予对所选公共AI网关的访问权限。无需手动将用户与资源相关联。该密钥还会在用户的个人资料中显示。",
+ "virtualApiKeysAllResources": "所有公共AI网关",
+ "virtualApiKeysAllResourcesDescription": "允许此密钥访问组织中的所有公共AI网关",
+ "virtualApiKeysSelectResources": "公共AI网关",
+ "virtualApiKeysSelectResourcesPlaceholder": "选择资源",
+ "virtualApiKeysSelectResourcesDescription": "选择此密钥可以访问的公共AI网关",
+ "virtualApiKeysNoResources": "无资源",
+ "virtualApiKeysSecret": "密钥",
+ "virtualApiKeysCopyKey": "复制此密钥。您可以稍后从表或编辑时查看。",
+ "virtualApiKeysViewSecret": "查看密钥",
+ "virtualApiKeysViewSecretTitle": "虚拟API密钥密钥",
+ "virtualApiKeysViewSecretDescription": "此密钥允许访问分配给此密钥的公共AI网关",
+ "virtualApiKeysEdit": "编辑虚拟API密钥",
+ "virtualApiKeysEditDescription": "更新该密钥的关联用户和公共AI网关访问",
+ "virtualApiKeysSaveButton": "保存更改",
+ "virtualApiKeysSelectResourcesRequired": "选择至少一个公共AI网关,或启用所有公共AI网关",
+ "virtualApiKeysUpdated": "虚拟API密钥已更新",
+ "virtualApiKeysUpdatedDescription": "虚拟API密钥已更新",
+ "virtualApiKeysErrorUpdate": "更新虚拟API密钥出错",
+ "virtualApiKeysErrorUpdateDescription": "未能更新虚拟API密钥",
+ "virtualApiKeysErrorCreate": "创建虚拟API密钥出错",
+ "virtualApiKeysErrorCreateDescription": "未能创建虚拟API密钥",
+ "virtualApiKeysErrorDelete": "删除虚拟API密钥出错",
+ "virtualApiKeysErrorDeleteMessage": "未能删除虚拟API密钥",
+ "virtualApiKeysDeleted": "虚拟API密钥已删除",
+ "virtualApiKeysDeletedDescription": "虚拟API密钥已删除",
+ "virtualApiKeysDelete": "删除虚拟API密钥",
+ "virtualApiKeysDeleteConfirm": "删除密钥",
+ "virtualApiKeysQuestionRemove": "您确定要删除此虚拟 API 密钥吗?",
+ "virtualApiKeysMessageRemove": "使用此密钥的客户端将立即失去访问权限。",
+ "virtualApiKeysErrorFetchSecret": "加载密钥出错",
+ "virtualApiKeysErrorFetchSecretDescription": "未能加载虚拟API密钥",
+ "virtualApiKeysFilterUnassigned": "未分配",
+ "virtualApiKeysInferenceBudget": "预算",
+ "virtualApiKeysInferenceBudgetDescription": "根据支出或令牌限制配置此密钥限制AI使用的方法",
+ "virtualApiKeysEmailOnGenerate": "生成密钥后发送邮件",
+ "virtualApiKeysEmailThisKey": "发送密钥邮件",
+ "virtualApiKeysEmailOnGenerateDescription": "密钥创建后将其发送给关联用户及其他地址",
+ "virtualApiKeysEmailThisKeyDescription": "将当前密钥发送给关联用户及其他地址",
+ "virtualApiKeysEmailSmtpRequired": "此服务器上未配置邮件",
+ "virtualApiKeysEmailSmtpRequiredDescription": "配置SMTP以发送虚拟API密钥。",
+ "virtualApiKeysEmailSendToUser": "发送给关联用户",
+ "virtualApiKeysEmailSendToUserDescription": "将密钥发送到与关联用户的账户邮箱",
+ "virtualApiKeysEmailSendToUserDisabled": "关联一个用户以将密钥发送给该用户",
+ "virtualApiKeysEmailAdditional": "附加电子邮件",
+ "virtualApiKeysEmailAdditionalPlaceholder": "添加电子邮件,然后按回车键",
+ "virtualApiKeysEmailRecipientsRequired": "选择关联用户,或至少添加一个电子邮件地址",
+ "myVirtualApiKeysTitle": "您的API密钥",
+ "myVirtualApiKeysDescription": "查看属于您的身份密钥和任何虚拟API密钥",
+ "myVirtualApiKeysResourceTitle": "与{resourceName}有关的您的API密钥",
+ "myVirtualApiKeysResourceDescription": "查看属于您的身份密钥和可访问{resourceName}的虚拟API密钥",
+ "myVirtualApiKeysIdentityTitle": "身份密钥",
+ "myVirtualApiKeysIdentityHeadline": "您的个人API密钥",
+ "myVirtualApiKeysIdentityDescription": "这是此组织的个人密钥。它是独一无二的并且用于在调用AI网关资源时识别您。",
+ "myVirtualApiKeysIdentityResourceHeadline": "与{resourceName}有关的您的个人API密钥",
+ "myVirtualApiKeysIdentityResourceDescription": "这是此组织的个人密钥。用于调用{resourceName}。",
+ "myVirtualApiKeysManualTitle": "分配的密钥",
+ "myVirtualApiKeysManualDescription": "管理员与您的账户相关的手动虚拟API密钥",
+ "myVirtualApiKeysManualResourceDescription": "手动虚拟API密钥与您的账户相关并可以访问{resourceName}",
+ "myVirtualApiKeysManualEmpty": "尚无分配的密钥",
+ "myVirtualApiKeysKindUser": "身份",
+ "myVirtualApiKeysKindManual": "手动",
+ "myVirtualApiKeysUnnamed": "未命名的密钥",
+ "myVirtualApiKeysRevealSecret": "显示密钥",
+ "myVirtualApiKeysViewSecretDescription": "此密钥认证您访问AI网关资源",
+ "aiProvidersTitle": "AI提供者",
+ "aiProvidersDescription": "连接模型提供者用于本组织的AI工作负载",
+ "aiProvidersBannerTitle": "连接模型提供者",
+ "aiProvidersBannerDescription": "提供商是Pangolin用于AI工作负载的模型后端。在此处连接OpenAI、Anthropic和其他提供者,然后将其附加到公共AI网关,以便用户可以进行身份识别访问、设置预算并记录日志。",
+ "aiProvidersAdd": "添加提供者",
+ "aiProvidersSearch": "搜索提供者……",
+ "aiProvidersEmpty": "尚无AI提供者",
+ "aiProviderCreate": "创建AI提供者",
+ "aiProviderCreateDescription": "为此组织添加一个模型提供者",
+ "aiProviderSeeAll": "查看所有提供者",
+ "aiProviderSetting": "{providerName}的提供者设置",
+ "aiProviderSettingDescription": "配置此AI提供者",
+ "aiProviderGeneral": "概览",
+ "aiProviderGeneralDescription": "此提供者的基础设置",
+ "aiProviderConfiguration": "配置",
+ "aiProviderConfigurationDescription": "此提供者的网络路由和认证",
+ "aiProviderNetworkSettings": "网络设置",
+ "aiProviderNetworkSettingsDescription": "选择流量到达此提供者的方式",
+ "aiProviderAuthSettings": "认证",
+ "aiProviderAuthSettingsDescription": "配置此提供者如何认证其上游URL的请求",
+ "aiProviderBudgetSettings": "预算",
+ "aiProviderBudgetSettingsDescription": "根据支出或令牌限制配置此提供者限制使用的方法",
+ "aiBudgetAdd": "添加预算",
+ "aiBudgetEmpty": "尚未设置预算。单击“添加预算”以设置支出或令牌限制。",
+ "aiBudgetUnit": "支出类型",
+ "aiBudgetPeriod": "重置周期",
+ "aiBudgetAmount": "最大发电",
+ "aiBudgetAmountPlaceholder": "最大发电",
+ "aiBudgetPeriodHourly": "每小时",
+ "aiBudgetPeriodDaily": "每日",
+ "aiBudgetPeriodWeekly": "每周",
+ "aiBudgetPeriodMonthly": "每月",
+ "aiBudgetPeriodYearly": "每年",
+ "aiBudgetPeriodLifetime": "终身",
+ "aiBudgetUnitUsd": "美元",
+ "aiBudgetUnitTokens": "令牌",
+ "aiBudgetConflictError": "此重置周期和支出类型的预算已存在",
+ "aiBudgetInvalidAmountError": "输入大于0的最大支出",
+ "aiBudgetUpdated": "预算已更新",
+ "aiBudgetErrorSave": "未能更新预算",
+ "aiProviderType": "提供者类型",
+ "aiProviderTypeSearch": "搜索提供者……",
+ "aiProviderTypeNotFound": "未找到提供者类型",
+ "aiProviderTypeOpenai": "OpenAI",
+ "aiProviderTypeAnthropic": "Anthropic",
+ "aiProviderTypeGoogleGemini": "Google Gemini",
+ "aiProviderTypeVertexAi": "Vertex AI",
+ "aiProviderTypeBedrock": "Amazon Bedrock",
+ "aiProviderTypeMicrosoftFoundry": "Microsoft Foundry",
+ "aiProviderTypeOpenRouter": "OpenRouter",
+ "aiProviderTypeVercelAiGateway": "Vercel AI Gateway",
+ "aiProviderTypeCustom": "自定义",
+ "aiProviderTypeOpenaiDescription": "OpenAI API",
+ "aiProviderTypeAnthropicDescription": "Anthropic API",
+ "aiProviderTypeGoogleGeminiDescription": "Google Gemini API",
+ "aiProviderTypeVertexAiDescription": "Google Vertex AI API",
+ "aiProviderTypeBedrockDescription": "Amazon Bedrock 运行时 API",
+ "aiProviderTypeMicrosoftFoundryDescription": "Microsoft Foundry API",
+ "aiProviderTypeOpenRouterDescription": "OpenRouter API",
+ "aiProviderTypeVercelAiGatewayDescription": "Vercel AI Gateway API",
+ "aiProviderTypeCustomDescription": "使用您自己的端点或通过站点目标进行路由",
+ "aiProviderUpstreamUrl": "上游URL",
+ "aiProviderUpstreamUrlDescription": "提供商API的基础URL",
+ "aiProviderUpstreamUrlOptionalDescription": "留空以使用此提供商的默认上游URL",
+ "aiProviderEffectiveUpstreamUrl": "有效上游URL",
+ "aiProviderApiKey": "API密钥",
+ "aiProviderApiKeyDescription": "用于对请求进行身份验证的API密钥",
+ "aiProviderCustomHeadersDescription": "每次请求时发送的头部。换行分隔:头部名称:值",
+ "aiProviderApiKeyLastChars": "API密钥",
+ "aiProviderAuthType": "身份验证类型",
+ "aiProviderAuthTypeSearch": "搜索身份验证类型……",
+ "aiProviderAuthTypeNotFound": "未找到身份验证类型",
+ "aiProviderAuthTypeBearer": "Bearer",
+ "aiProviderAuthTypeBearerDescription": "授权:Bearer key。 由 OpenAI 及大多数提供商使用",
+ "aiProviderAuthTypeXApiKey": "x-api-key",
+ "aiProviderAuthTypeXApiKeyDescription": "x-api-key头部。由Anthropic使用",
+ "aiProviderAuthTypeXGoogApiKey": "x-goog-api-key",
+ "aiProviderAuthTypeXGoogApiKeyDescription": "x-goog-api-key头部。由Google Gemini使用",
+ "aiProviderAuthTypeHec": "Splunk HEC",
+ "aiProviderAuthTypeHecDescription": "授权:Splunk密钥。由Splunk HTTP事件收集器使用",
+ "aiProviderAuthTypeCfAigAuthorization": "Cloudflare AI Gateway",
+ "aiProviderAuthTypeCfAigAuthorizationDescription": "cf-aig-authorization:Bearer key。由Cloudflare AI Gateway使用",
+ "aiProviderAuthTypeNone": "无身份验证",
+ "aiProviderAuthTypePassthrough": "透传",
+ "aiProviderAuthTypeDescription": "上游API如何验证请求",
+ "aiProviderAuthTypePassthroughDescription": "将调用者的API密钥头部转发到上游",
+ "aiProviderAuthTypeNoneDescription": "不向上游发送身份验证头部",
+ "aiProviderRoutingMode": "路由模式",
+ "aiProviderRoutingModeDescription": "将流量发送到上游URL或您站点上的HTTP目标",
+ "aiProviderRoutingModeUrl": "上游URL",
+ "aiProviderRoutingModeUrlDescription": "调用公共或私人API基础URL",
+ "aiProviderRoutingModeTarget": "站点目标",
+ "aiProviderRoutingModeTargetDescription": "通过您站点上的目标进行路由",
+ "aiProviderRoutingModeTargetNote": "创建此提供商后,在“网络设置”选项卡中配置站点目标。",
+ "aiProviderTargetNoOne": "该提供商没有任何目标。 添加目标以通过您的站点路由请求。",
+ "aiProviderSkipTlsVerification": "跳过TLS验证",
+ "aiProviderSkipTlsVerificationDescription": "禁用上游连接的TLS证书验证",
+ "aiProviderBudget": "预算",
+ "aiProviderBudgetDescription": "此提供商的可选支出或令牌预算",
+ "aiProviderBudgetAmount": "预算金额",
+ "aiProviderBudgetUnit": "预算单位",
+ "aiProviderBudgetUnitUsd": "美元",
+ "aiProviderBudgetUnitTokens": "令牌",
+ "aiProviderEnabled": "已启用",
+ "aiProviderEnabledDescription": "彻底禁用此提供商的所有资源",
+ "aiProviderErrorCreate": "创建AI提供商失败",
+ "aiProviderErrorUpdate": "更新AI提供商失败",
+ "aiProviderErrorDelete": "删除AI提供商失败",
+ "aiProviderErrorLoad": "加载AI提供商失败",
+ "aiProviderErrorUpstreamUrlInvalid": "输入有效的上游URL",
+ "aiProviderErrorUpstreamUrlRequired": "此提供商需要上游URL",
+ "aiProviderErrorAuthTypeRequired": "需要身份验证类型",
+ "aiProviderErrorApiKeyRequired": "需要API密钥",
+ "aiProviderErrorRoutingModeTarget": "站点目标路由仅适用于自定义提供商",
+ "aiProviderErrorCapabilitiesRequired": "选择至少一个API功能",
+ "aiProviderCapabilities": "API功能",
+ "aiProviderCapabilitiesDescription": "选择此提供商可以处理的API格式。已知提供商从推荐的默认值开始。",
+ "aiProviderCapabilitiesCustomDescription": "选择此自定义提供程序可以处理的API格式",
+ "aiProviderCapabilitiesSelect": "选择功能",
+ "aiProviderCapabilitiesEmpty": "未找到功能",
+ "aiProviderCapabilitiesSearch": "搜索功能……",
+ "aiCapabilityOpenaiChat": "OpenAI 聊天完成",
+ "aiCapabilityOpenaiChatDescription": "支持 /v1/chat/completions",
+ "aiCapabilityOpenaiResponses": "OpenAI 回应",
+ "aiCapabilityOpenaiResponsesDescription": "支持 /v1/responses",
+ "aiCapabilityAnthropicMessages": "Anthropic 消息",
+ "aiCapabilityAnthropicMessagesDescription": "支持 /v1/messages",
+ "aiCapabilityGeminiGenerateContent": "Gemini 生成内容",
+ "aiCapabilityGeminiGenerateContentDescription": "支持直接Gemini API",
+ "aiCapabilityBedrockModelInvoke": "Bedrock 模型调用",
+ "aiCapabilityBedrockModelInvokeDescription": "支持 Amazon Bedrock InvokeModel",
+ "aiCapabilityGoogleGenerateContent": "Vertex 生成内容",
+ "aiCapabilityGoogleGenerateContentDescription": "支持 Vertex AI Gemini 格式",
+ "aiCapabilityGoogleRawPredict": "Vertex 原始预测",
+ "aiCapabilityGoogleRawPredictDescription": "支持 Vertex AI 原始预测适用于 Anthropic 模型",
+ "aiCapabilityBedrockConverse": "Bedrock 会话",
+ "aiCapabilityBedrockConverseDescription": "支持 Amazon Bedrock Converse API",
+ "aiProviderCreated": "AI 提供者已创建",
+ "aiProviderUpdated": "AI 提供者已更新",
+ "aiProviderDeleted": "AI 提供者已删除",
+ "aiProviderDelete": "删除提供者",
+ "aiProviderDeleteConfirm": "删除提供者",
+ "aiProviderQuestionRemove": "您确定要删除此AI提供者吗?",
+ "aiProviderMessageRemove": "这将永久删除提供者及其模型和目标。无法撤销。",
+ "aiProviderErrorNoUpdate": "AI 提供者不可用于更新",
+ "aiProviderModels": "模型",
+ "aiProviderModelsDescription": "为此提供者定义允许和拒绝列表。请求必须匹配允许条目,并且不得匹配拒绝条目。",
+ "aiProviderCreateModelsDescription": "选择该提供者可以服务的模型。空白允许列表会拒绝所有流量。您可以稍后添加或更改模型。",
+ "aiProviderModelsPlaceholder": "搜索模型或键入自定义密钥",
+ "aiProviderModelsAllow": "允许列表",
+ "aiProviderModelsAllowDescription": "可通过此提供者使用的模型。空白表示拒绝所有。",
+ "aiProviderModelsAllowPlaceholder": "输入模型密钥",
+ "aiProviderModelsAllowEmpty": "尚未添加任何模型。",
+ "aiProviderModelsBlock": "拒绝列表",
+ "aiProviderModelsBlockDescription": "即使匹配允许条目的模型也要拒绝。",
+ "aiProviderModelsBlockPlaceholder": "输入模型密钥",
+ "aiProviderModelsBlockEmpty": "尚未添加任何模型。",
+ "aiProviderModelsAdd": "添加模型",
+ "aiProviderModelsClearAll": "清除所有",
+ "aiProviderModelsAddCustom": "添加 \"{key}\"",
+ "aiProviderModelsAddCustomHint": "按 Enter 键以添加此自定义模型密钥。",
+ "aiProviderModelsAddBulk": "添加 {count} 个自定义密钥",
+ "aiProviderModelsAddBulkHint": "按 Enter 键以添加 {count} 个自定义密钥。",
+ "aiProviderModelsAddOne": "立即添加 {key}",
+ "aiProviderModelsAddSelected": "添加所选",
+ "aiProviderModelsSelectedCount": "{count} 已选择",
+ "aiProviderModelsSelectAll": "选择所有",
+ "aiProviderModelsClearSelected": "清除",
+ "aiProviderModelsBulkHint": "选择已知模型或键入自定义密钥。",
+ "aiProviderModelsCatalogEmpty": "没有匹配的目录模型。",
+ "aiProviderModelsCatalogHeading": "已知模型",
+ "aiProviderModelsAllLabel": "所有模型",
+ "aiProviderModelsAllPatternHint": "通配符: *",
+ "aiProviderModelsAddAllAllow": "允许所有模型",
+ "aiProviderModelsAddAllBlock": "拒绝所有模型",
+ "aiProviderModelsAddAllDescription": "使用 * 通配符,因此每个模型密钥都匹配。",
+ "aiProviderModelsViewMore": "查看更多 ({count})",
+ "aiProviderModelsViewLess": "查看更少",
+ "aiProviderModelsRemove": "删除模型",
+ "aiProviderModelsEditHint": "单击以编辑模型设置",
+ "aiProviderModelsSourceCatalog": "已知目录模型",
+ "aiProviderModelsSourceCustom": "自定义模型密钥",
+ "aiProviderModelsSourcePattern": "通配符模式",
+ "aiProviderModelsSourceAll": "匹配每个模型密钥",
+ "aiProviderModelsBudgetConfigured": "预算已配置",
+ "aiProviderModelsEditTitle": "编辑模型",
+ "aiProviderModelsEditDescription": "更新模型密钥或配置其预算。",
+ "aiProviderModelsBudgetTab": "预算",
+ "aiProviderModelsKeyLabel": "模型密钥",
+ "aiProviderModelsKeyRequired": "输入一个模型密钥",
+ "aiProviderModelsKeyDuplicate": "此模型密钥已在列表中",
+ "aiProviderModelsOverlapError": "这些模式不能同时在两个列表中: {keys}",
+ "aiProviderModelsUpdated": "模型已更新",
+ "aiProviderModelsErrorUpdate": "更新模型失败",
+ "aiResourceProviders": "提供者",
+ "aiResourceProvidersDescription": "选择此AI网关可使用的AI提供者",
+ "aiResourceProvidersHelp": "附加提供者并选择继承(使用每个提供者的列表)或选择(为此资源选择允许列表)。不允许附加提供者之间冲突的允许模式。",
+ "aiResourceProvidersSelect": "选择提供者",
+ "aiResourceProvidersEmpty": "未找到AI提供者",
+ "aiResourceProvidersNoneAttached": "尚未附加任何提供者。",
+ "aiResourceProvidersAdd": "添加提供者",
+ "aiResourceProvidersRemove": "删除提供者",
+ "aiResourceProviderToggleEnabled": "在资源上启用或禁用此提供者",
+ "aiResourceProviderDisabled": "已禁用",
+ "aiResourceProvidersUpdated": "提供者已更新",
+ "aiResourceProvidersErrorUpdate": "更新提供者失败",
+ "aiResourceProviderEditDescription": "选择如何在此资源上公开此提供者的模型。",
+ "viewProviderSettings": "查看提供者设置",
+ "aiResourceProviderMode": "访问模式",
+ "aiResourceProviderModeInherit": "继承",
+ "aiResourceProviderModeSelect": "选择",
+ "aiResourceProviderModeSelectSummary": "选择 · {count} 模型",
+ "aiResourceProviderModeInheritHelp": "按照提供者上配置的那样使用提供者的允许和拒绝列表。",
+ "aiResourceProviderModeSelectHelp": "为此资源选择提供者允许列表模型的子集。",
+ "aiResourceProviderAllowModels": "允许列表",
+ "aiResourceProviderAllowModelsSelect": "选择模型",
+ "aiResourceProviderAllowModelsSearch": "搜索模型……",
+ "aiResourceProviderAllowModelsEmpty": "未找到模型",
+ "aiResourceProviderAllowModelsHelp": "只有此提供者的允许列表中的模型可以被选择。",
+ "aiResourceAliasRequired": "AI网关需要别名",
+ "aiResourceDomainConfiguration": "域配置",
+ "aiResourceDomainConfigurationDescription": "选择客户端将用于访问此AI网关的域。",
+ "aiUsageAnalyticsTitle": "AI 使用分析",
+ "aiUsageAnalyticsDescription": "分析 AI 网关的成本、令牌使用情况以及在提供者、资源、角色和用户中的活动",
+ "aiUsageTabOverview": "概览",
+ "aiUsageTabProviders": "提供者",
+ "aiUsageTabResources": "资源",
+ "aiUsageFilterProvider": "提供者",
+ "aiUsageFilterModel": "模型",
+ "aiUsageFilterResource": "资源",
+ "aiUsageFilterRole": "角色",
+ "aiUsageFilterUser": "用户",
+ "aiUsageFilterAllProviders": "所有提供者",
+ "aiUsageFilterAllModels": "所有模型",
+ "aiUsageFilterAllResources": "所有资源",
+ "aiUsageFilterAllRoles": "所有角色",
+ "aiUsageFilterAllUsers": "所有用户",
+ "aiUsageFilterSearch": "搜索……",
+ "aiUsageFilterNotFound": "未找到选项",
+ "aiUsageResetFilters": "重置过滤器",
+ "aiUsageRefresh": "刷新",
+ "aiUsageTokenTypePrompt": "提示",
+ "aiUsageTokenTypeCacheRead": "缓存读取",
+ "aiUsageTokenTypeCacheWrite": "缓存写入",
+ "aiUsageTokenTypeCompletion": "完成",
+ "aiUsageTokenTypeReasoning": "推理",
+ "aiUsageRequests": "请求",
+ "aiUsageCost": "成本",
+ "aiUsageTokens": "令牌",
+ "aiUsageOther": "其他",
+ "aiUsageTotalRequests": "总请求数",
+ "aiUsageTotalTokens": "总令牌数",
+ "aiUsageTotalCost": "总成本",
+ "aiUsageEstimated": "估计",
+ "aiUsageRequestVolume": "请求量",
+ "aiUsageTokenUsage": "令牌使用情况",
+ "aiUsageModelCost": "模型成本",
+ "aiUsageModelTokens": "模型令牌",
+ "aiUsageTopModels": "热门模型",
+ "aiUsageTopProviders": "热门提供者",
+ "aiUsageProviderCost": "提供者成本",
+ "aiUsageProviderTokenUsage": "提供者令牌使用情况",
+ "aiUsageTopResources": "热门资源",
+ "aiUsageResourceCost": "资源成本",
+ "aiUsageResourceTokenUsage": "资源令牌使用情况",
+ "aiUsageResourceTypePublic": "公共资源",
+ "aiUsageResourceTypeSite": "私有资源",
+ "aiUsageNoResource": "没有资源",
+ "aiUsageRolesTab": "角色",
+ "aiUsageUsersTab": "用户",
+ "aiUsageTopRoles": "热门角色",
+ "aiUsageRoleCost": "角色成本",
+ "aiUsageRoleTokenUsage": "角色令牌使用情况",
+ "aiUsageTopUsers": "热门用户",
+ "aiUsageUserCost": "用户成本",
+ "aiUsageUserTokenUsage": "用户令牌使用情况",
+ "aiUsageUnknownUser": "未知用户",
+ "aiUsageVirtualApiKeysTab": "虚拟 API 密钥",
+ "aiUsageFilterVirtualApiKey": "虚拟 API 密钥",
+ "aiUsageFilterAllVirtualApiKeys": "所有虚拟 API 密钥",
+ "aiUsageTopVirtualApiKeys": "热门虚拟 API 密钥",
+ "aiUsageVirtualApiKeyCost": "虚拟 API 密钥成本",
+ "aiUsageVirtualApiKeyTokenUsage": "虚拟 API 密钥令牌使用情况",
+ "aiUsageUnknownVirtualApiKey": "无虚拟 API 密钥",
+ "aiUsageUnnamedVirtualApiKey": "未命名密钥",
+ "aiUsageLoading": "加载中……",
+ "aiUsageNoData": "没有数据",
+ "resourceBudgetSettings": "预算",
+ "resourceBudgetSettingsDescription": "配置此 AI 网关如何根据支出或令牌限制来限制使用",
"sidebarApiKeys": "API密钥",
"sidebarProvisioning": "预配",
"sidebarSettings": "设置",
@@ -2193,6 +2638,8 @@
"subnetPlaceholder": "子网",
"addressDescription": "客户的内部地址。必须属于组织的子网。",
"selectSites": "选择站点",
+ "selectResources": "选择资源",
+ "multiResourcesSelectorResourcesCount": "{count, plural, other {# 个资源}}",
"selectLabels": "选择标签",
"sitesDescription": "客户端将与所选站点进行连接",
"clientInstallOlm": "安装 Olm",
@@ -2245,10 +2692,11 @@
"timeIsInSeconds": "时间以秒为单位",
"requireDeviceApproval": "需要设备批准",
"requireDeviceApprovalDescription": "具有此角色的用户需要管理员批准的新设备才能连接和访问资源。",
- "sshSettings": "SSH 设置",
+ "sshSettings": "SSH",
+ "inferenceSettings": "AI 网关",
"sshAccess": "SSH 访问",
- "rdpSettings": "RDP 设置",
- "vncSettings": "VNC 设置",
+ "rdpSettings": "RDP",
+ "vncSettings": "VNC",
"sshServer": "SSH 服务器",
"rdpServer": "RDP 服务器",
"vncServer": "VNC 服务器",
@@ -2401,6 +2849,7 @@
"editInternalResourceDialogModeCidr": "CIDR",
"editInternalResourceDialogModeHttp": "HTTP",
"editInternalResourceDialogModeHttps": "HTTPS",
+ "editInternalResourceDialogModeInference": "AI 网关",
"editInternalResourceDialogModeSsh": "SSH",
"editInternalResourceDialogScheme": "方案",
"editInternalResourceDialogEnableSsl": "启用 TLS",
@@ -2421,8 +2870,8 @@
"privateResourceAllowIcmpPing": "允许 ICMP Ping",
"privateResourceNetworkAccess": "网络访问",
"privateResourceNetworkAccessDescription": "控制此资源的 TCP/UDP 端口访问以及是否允许 ICMP ping。",
- "hostSettings": "主机设置",
- "cidrSettings": "CIDR 设置",
+ "hostSettings": "主机",
+ "cidrSettings": "CIDR",
"createInternalResourceDialogResourceProperties": "资源属性",
"createInternalResourceDialogName": "名称",
"createInternalResourceDialogSite": "站点",
@@ -2460,6 +2909,7 @@
"createInternalResourceDialogModeHttp": "HTTP",
"createInternalResourceDialogModeHttps": "HTTPS",
"createInternalResourceDialogModeSsh": "SSH",
+ "createInternalResourceDialogModeInference": "AI 网关",
"scheme": "方案",
"createInternalResourceDialogScheme": "方案",
"createInternalResourceDialogEnableSsl": "启用 TLS",
@@ -3051,6 +3501,7 @@
"validPassword": "有效密码",
"validEmail": "Valid email",
"validSSO": "Valid SSO",
+ "validVirtualAPIKey": "有效虚拟 API 密钥",
"view": "查看",
"configManaged": "配置已管理",
"connectedClient": "已连接客户端",
@@ -3072,6 +3523,38 @@
"logRetention": "日志保留",
"logRetentionDescription": "管理不同类型的日志为这个机构保留多长时间或禁用这些日志",
"requestLogsDescription": "查看此机构资源的详细请求日志",
+ "aiSessionLogs": "AI 网关会话日志",
+ "aiSessionLogsDescription": "查看此组织中AI网关请求的提示和响应记录",
+ "sidebarLogsAi": "会话日志",
+ "commandLogsAi": "会话日志",
+ "sidebarLogsAiUsage": "使用分析",
+ "commandLogsAiUsage": "使用分析",
+ "provider": "提供者",
+ "capability": "能力",
+ "model": "模型",
+ "virtualApiKey": "虚拟 API 密钥",
+ "noVirtualApiKey": "无虚拟 API 密钥",
+ "stream": "流",
+ "streaming": "流媒体",
+ "nonStreaming": "非流",
+ "statusCode": "状态码",
+ "aiSessionId": "会话 ID",
+ "aiSessionRequest": "请求",
+ "aiSessionResponse": "响应",
+ "aiSessionNoData": "未捕获数据",
+ "aiSessionCouldNotParse": "(原始,无法解析记录)",
+ "aiSessionLogTruncated": "此会话在存储之前被截断,可能不完整。",
+ "aiSessionViewRaw": "查看原始 JSON",
+ "aiSessionViewChat": "查看聊天",
+ "cost": "成本",
+ "estimated": "估计",
+ "tokenUsage": "令牌使用情况",
+ "promptTokens": "提示令牌",
+ "cacheReadTokens": "缓存读取令牌",
+ "cacheWriteTokens": "缓存写入令牌",
+ "completionTokens": "完成令牌",
+ "reasoningTokens": "推理令牌",
+ "totalTokens": "总令牌数",
"requestAnalyticsDescription": "查看此机构资源的详细请求分析",
"logRetentionRequestLabel": "HTTP 请求日志保留",
"logRetentionRequestDescription": "保留请求日志的时间",
@@ -3081,6 +3564,8 @@
"logRetentionActionDescription": "保留操作日志的时间",
"logRetentionConnectionLabel": "连接日志保留",
"logRetentionConnectionDescription": "保留连接日志的时间",
+ "logRetentionAISessionsLabel": "AI 网关会话日志保留",
+ "logRetentionAISessionsDescription": "保留AI网关提示/响应会话日志的时间",
"logRetentionDisabled": "已禁用",
"logRetention3Days": "3 天",
"logRetention7Days": "7 天",
@@ -3098,8 +3583,8 @@
"sourceAddress": "源地址",
"destinationAddress": "目的地址",
"duration": "期限",
- "licenseRequiredToUse": "使用此功能需要企业版许可证或Pangolin Cloud。预约演示或POC试用以了解更多。",
- "ossEnterpriseEditionRequired": "需要企业版才能使用此功能。此功能也可在Pangolin Cloud上获取。预约演示或POC试用以了解更多。",
+ "licenseRequiredToUse": "需要企业版许可证。 预约演示或试用",
+ "ossEnterpriseEditionRequired": "需要企业版许可证。 预约演示或试用",
"certResolver": "证书解决器",
"certResolverDescription": "选择用于此资源的证书解析器。",
"selectCertResolver": "选择证书解析",
@@ -3297,9 +3782,9 @@
"internalResourceFormMultiSiteRoutingHelp": "选择多个站点可以实现高可用性的弹性路由和故障转移。",
"internalResourceFormMultiSiteRoutingHelpLearnMore": "了解更多",
"editInternalResourceDialogPortRestrictionsDescription": "限制访问特定的TCP/UDP端口或允许/阻止所有端口。",
- "createInternalResourceDialogHttpConfiguration": "HTTP 配置",
+ "createInternalResourceDialogHttpConfiguration": "域配置",
"createInternalResourceDialogHttpConfigurationDescription": "选择客户将使用的域名通过 HTTP 或 HTTPS 访问此资源。",
- "editInternalResourceDialogHttpConfiguration": "HTTP 配置",
+ "editInternalResourceDialogHttpConfiguration": "域配置",
"editInternalResourceDialogHttpConfigurationDescription": "选择客户将使用的域名通过 HTTP 或 HTTPS 访问此资源。",
"editInternalResourceDialogTcp": "TCP",
"editInternalResourceDialogUdp": "UDP",
@@ -3735,7 +4220,18 @@
"resourceLauncherTcp": "TCP",
"resourceLauncherUdp": "UDP",
"resourceLauncherUnlabeled": "未标记",
+ "resourceLauncherAiGateway": "AI 网关",
"resourceLauncherNoSite": "无站点",
+ "resourceLauncherAvailableModels": "可用模型",
+ "resourceLauncherAvailableModelsDescription": "您可以在此 AI 网关中使用的模型。",
+ "resourceLauncherAvailableModelsEmpty": "此资源没有可用的模型。",
+ "resourceLauncherAvailableModelsError": "无法加载可用模型。",
+ "resourceLauncherApiKeys": "API 密钥",
+ "resourceLauncherApiKeysDescription": "使用您的身份密钥或归属密钥进行身份验证。",
+ "resourceLauncherApiKeysIdentity": "身份密钥",
+ "resourceLauncherApiKeysManual": "归属密钥",
+ "resourceLauncherApiKeysEmpty": "此资源没有可用的 API 密钥。",
+ "resourceLauncherApiKeysError": "无法加载 API 密钥。",
"resourceLauncherNoResourcesInGroup": "此组中没有资源",
"resourceLauncherEmptyStateTitle": "没有可用资源",
"resourceLauncherEmptyStateDescription": "您还没有访问任何资源。请联系您的管理员以请求访问。",
@@ -3762,9 +4258,9 @@
"resourceLauncherViewDeleteFailedDescription": "无法删除启动器视图。请再试一次。",
"memberPortalPrevious": "上一页",
"memberPortalNext": "下一页",
- "httpSettings": "HTTP 设置",
- "tcpSettings": "TCP 设置",
- "udpSettings": "UDP 设置",
+ "httpSettings": "HTTP",
+ "tcpSettings": "TCP",
+ "udpSettings": "UDP",
"sshTitle": "SSH",
"sshConnectingDescription": "正在建立安全连接…",
"sshConnecting": "正在连接…",