diff --git a/messages/zh-CN.json b/messages/zh-CN.json index a8f578db..508f3f18 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -96,7 +96,7 @@ "siteWgDescription": "使用任何 WireGuard 客户端来建立隧道。需要手动配置 NAT。", "siteWgDescriptionSaas": "使用任何WireGuard客户端建立隧道。需要手动配置NAT。仅适用于自托管节点。", "siteLocalDescription": "仅限本地资源。不需要隧道。", - "siteLocalDescriptionSaas": "仅本地资源。无需隧道。仅适用于自托管节点。", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "查看所有站点", "siteTunnelDescription": "确定如何连接到您的网站", "siteNewtCredentials": "Newt 凭据", @@ -468,7 +468,10 @@ "createdAt": "创建于", "proxyErrorInvalidHeader": "无效的自定义主机头值。使用域名格式,或将空保存为取消自定义主机头。", "proxyErrorTls": "无效的 TLS 服务器名称。使用域名格式,或保存空以删除 TLS 服务器名称。", - "proxyEnableSSL": "启用 SSL (https)", + "proxyEnableSSL": "启用 SSL", + "proxyEnableSSLDescription": "启用 SSL/TLS 加密以确保您目标的 HTTPS 连接。", + "target": "Target", + "configureTarget": "配置目标", "targetErrorFetch": "获取目标失败", "targetErrorFetchDescription": "获取目标时出错", "siteErrorFetch": "获取资源失败", @@ -495,7 +498,7 @@ "targetTlsSettings": "安全连接配置", "targetTlsSettingsDescription": "配置资源的 SSL/TLS 设置", "targetTlsSettingsAdvanced": "高级TLS设置", - "targetTlsSni": "TLS 服务器名称 (SNI)", + "targetTlsSni": "TLS 服务器名称", "targetTlsSniDescription": "SNI使用的 TLS 服务器名称。留空使用默认值。", "targetTlsSubmit": "保存设置", "targets": "目标配置", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "将连接保持在同一个后端目标的整个会话中。", "methodSelect": "选择方法", "targetSubmit": "添加目标", - "targetNoOne": "没有目标。使用表单添加目标。", + "targetNoOne": "此资源没有任何目标。添加目标来配置向您后端发送请求的位置。", "targetNoOneDescription": "在上面添加多个目标将启用负载平衡。", "targetsSubmit": "保存目标", + "addTarget": "添加目标", + "targetErrorInvalidIp": "无效的 IP 地址", + "targetErrorInvalidIpDescription": "请输入有效的IP地址或主机名", + "targetErrorInvalidPort": "无效的端口", + "targetErrorInvalidPortDescription": "请输入有效的端口号", + "targetErrorNoSite": "没有选择站点", + "targetErrorNoSiteDescription": "请选择目标站点", + "targetCreated": "目标已创建", + "targetCreatedDescription": "目标已成功创建", + "targetErrorCreate": "创建目标失败", + "targetErrorCreateDescription": "创建目标时出错", + "save": "保存", "proxyAdditional": "附加代理设置", "proxyAdditionalDescription": "配置你的资源如何处理代理设置", "proxyCustomHeader": "自定义主机标题", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "服务器管理员 - Pangolin", "licenseTierProfessional": "专业许可证", "licenseTierEnterprise": "企业许可证", + "licenseTierPersonal": "Personal License", "licensed": "已授权", "yes": "是", "no": "否", @@ -749,7 +765,7 @@ "idpDisplayName": "此身份提供商的显示名称", "idpAutoProvisionUsers": "自动提供用户", "idpAutoProvisionUsersDescription": "如果启用,用户将在首次登录时自动在系统中创建,并且能够映射用户到角色和组织。", - "licenseBadge": "专业版", + "licenseBadge": "EE", "idpType": "提供者类型", "idpTypeDescription": "选择您想要配置的身份提供者类型", "idpOidcConfigure": "OAuth2/OIDC 配置", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "所有用户", "sidebarIdentityProviders": "身份提供商", "sidebarLicense": "证书", - "sidebarClients": "客户端(测试版)", + "sidebarClients": "Clients", "sidebarDomains": "域", "enableDockerSocket": "启用 Docker 蓝图", "enableDockerSocketDescription": "启用 Docker Socket 标签擦除蓝图标签。套接字路径必须提供给新的。", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "注册安全密钥需要两步验证。", "twoFactor": "两步验证", "adminEnabled2FaOnYourAccount": "管理员已为{email}启用两步验证。请完成设置以继续。", - "continueToApplication": "继续应用", "securityKeyAdd": "添加安全密钥", "securityKeyRegisterTitle": "注册新安全密钥", "securityKeyRegisterDescription": "连接您的安全密钥并输入名称以便识别", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "外部代理已启用", "addNewTarget": "添加新目标", "targetsList": "目标列表", + "advancedMode": "高级模式", "targetErrorDuplicateTargetFound": "找到重复的目标", "healthCheckHealthy": "正常", "healthCheckUnhealthy": "不正常", @@ -1541,8 +1557,8 @@ "autoLoginError": "自动登录错误", "autoLoginErrorNoRedirectUrl": "未从身份提供商收到重定向URL。", "autoLoginErrorGeneratingUrl": "生成身份验证URL失败。", - "remoteExitNodeManageRemoteExitNodes": "管理自托管", - "remoteExitNodeDescription": "管理节点以扩展您的网络连接", + "remoteExitNodeManageRemoteExitNodes": "远程节点", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "节点", "searchRemoteExitNodes": "搜索节点...", "remoteExitNodeAdd": "添加节点", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "要确认,请输入以下节点的名称。", "remoteExitNodeConfirmDelete": "确认删除节点", "remoteExitNodeDelete": "删除节点", - "sidebarRemoteExitNodes": "节点", + "sidebarRemoteExitNodes": "远程节点", "remoteExitNodeCreate": { "title": "创建节点", "description": "创建一个新节点来扩展您的网络连接", @@ -1721,5 +1737,161 @@ "authPageUpdated": "身份验证页面更新成功", "healthCheckNotAvailable": "本地的", "rewritePath": "重写路径", - "rewritePathDescription": "在转发到目标之前,可以选择重写路径。" + "rewritePathDescription": "在转发到目标之前,可以选择重写路径。", + "continueToApplication": "继续应用", + "checkingInvite": "正在检查邀请", + "setResourceHeaderAuth": "设置 ResourceHeaderAuth", + "resourceHeaderAuthRemove": "删除头部认证", + "resourceHeaderAuthRemoveDescription": "已成功删除头部身份验证。", + "resourceErrorHeaderAuthRemove": "删除头部身份验证失败", + "resourceErrorHeaderAuthRemoveDescription": "无法删除资源的头部身份验证。", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "设置页眉认证失败", + "resourceErrorHeaderAuthSetupDescription": "无法设置资源的头部身份验证。", + "resourceHeaderAuthSetup": "头部认证设置成功", + "resourceHeaderAuthSetupDescription": "头部认证已成功设置。", + "resourceHeaderAuthSetupTitle": "设置头部身份验证", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "设置头部身份验证", + "actionSetResourceHeaderAuth": "设置头部身份验证", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "优先权", + "priorityDescription": "先评估更高优先级线路。优先级 = 100意味着自动排序(系统决定). 使用另一个数字强制执行手动优先级。", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" }