{ "websites": { "title": "Websites", "createZone": "Add Zone", "searchRoot": "Search Zone root domain", "loadingList": "Loading Zone list...", "requestFailed": "Request failed. Please try again later.", "emptySearch": "No matching Zone found.", "emptyList": "No Zones yet. Click “Add Zone” in the top right to get started.", "rootDomain": "Root domain", "domainCount": "Domains", "createdAt": "Created", "updatedAt": "Updated", "actions": "Actions", "manage": "Manage", "manageZone": "Manage Zone", "loadingDetail": "Loading Zone details...", "invalidId": "Invalid website ID. Open the details page from the website list.", "notFound": "Website not found. It may have been deleted or the ID is invalid.", "back": "Back", "detailSubtitle": "Zone website management", "tabOverview": "Overview", "tabDomains": "Domains ({count})", "tabCertificates": "Certificates ({count})", "basicInfo": "Basic information", "basicInfoDesc": "Maintain the Zone’s registrable root domain. After changing the root, confirm that its domains still belong to it.", "currentRoot": "Current root domain", "editRoot": "Edit root domain", "dangerZone": "Dangerous actions", "dangerZoneDesc": "Clear all domains under the Zone before deleting it. Deletion cannot be undone.", "deleteZone": "Delete Zone", "deleteZoneTitle": "Delete Zone", "deleteZoneDesc": "Delete {domain}? Domains under it must be unbound from routes first. This cannot be undone.", "deleting": "Deleting…", "confirmDelete": "Delete", "zoneDeleted": "Zone deleted", "editZone": "Edit Zone", "editorDesc": "A Zone accepts only a registrable root domain, such as example.com.", "rootRequired": "Enter a Zone root domain", "rootInvalid": "Enter a root domain without a protocol or wildcard", "zoneUpdated": "Zone updated", "zoneCreated": "Zone created", "saveFailed": "Save failed", "saveChanges": "Save changes", "range24h": "24 hours", "range7d": "7 days", "range30d": "30 days", "chartUv": "Bucket UV", "chartBytes": "Data served", "statsFailed": "Failed to load traffic stats", "analyticsUnavailable": "Analytics storage is unavailable, so charts may be empty. Confirm that ClickHouse is enabled.", "uniqueVisitors": "Unique visitors in query window", "uniqueVisitorsDesc": "The top total is de-duplicated across the whole window; the curve is UV per time bucket and buckets cannot be added together", "totalRequests": "Total requests", "totalBytes": "Total data served", "zoneInfo": "Zone information", "addDomain": "Add domain", "emptyDomains": "No domains added yet", "certificate": "Certificate", "upstream": "Upstream", "certNumber": "Certificate #{id}", "unbound": "Unbound", "unlinkedRoute": "No linked route", "loadingEllipsis": "Loading…", "upstreamUnset": "No upstream configured", "viewRoute": "View route details", "deleteDomain": "Delete domain", "domainDeleted": "Domain deleted", "deleteFailed": "Delete failed", "deleteDomainTitle": "Delete domain", "deleteDomainDesc": "Delete {domain}? This cannot be undone.", "zoneCertsTitle": "Certificates used by this Zone", "zoneCertsDesc": "Certificates are managed in the global certificate library. This list only shows certificates bound to domains in this Zone.", "certLibrary": "Certificate library", "unboundCertHint": "{count} domains still have no certificate. Choose one in the Domains tab.", "emptyBoundCerts": "No bound certificates. Choose a certificate on a domain row, or import/apply one in the certificate library.", "status": "Status", "coverage": "Covered domains", "expiresAt": "Expires", "selectZone": "Select a Zone first", "enterDomain": "Enter a domain", "noWildcard": "Zone domains do not support wildcards", "invalidFormat": "Invalid domain format", "invalidSubdomain": "Invalid subdomain name format", "mustBelongToZone": "The domain must belong to Zone {root}", "domainAdded": "Domain added", "addFailed": "Add failed", "quickCreateTitle": "Quick add domain", "quickCreateDesc": "After selecting a Zone, enter a subdomain name (such as api), @ (the root), or a full FQDN.", "selectRegisteredRoot": "Select registered root domain", "zoneLabel": "Zone:", "domain": "Domain", "domainPlaceholderWithZone": "api or @ or api.{domain}", "domainPlaceholder": "api / @ / full domain", "willCreate": "Will create:", "domainExample": "Example: enter api → api.zone.com; @ → the root itself", "certOptional": "Certificate (optional)", "noCert": "No certificate" }, "certificates": { "title": "Certificates", "refresh": "Refresh certificates", "importCert": "Import certificate", "applyTitle": "Apply for certificate", "listTitle": "Certificate list", "listDesc": "Shows certificate validity, remarks, and status. You can view details, edit contents, or delete certificates.", "loadingList": "Loading certificate list...", "requestFailed": "Request failed. Please try again later.", "emptyList": "No certificates yet. Click “Import certificate” or “Apply for certificate” in the top right to get started.", "notBeforeLabel": "Valid from: {value}", "notAfterLabel": "Expires: {value}", "sourceLabel": "Source: {value}", "sourceAcme": "ACME application", "sourceUpload": "Manual upload", "statusLabel": "Status: {value}", "converting": "Conversion in progress...", "applying": "Applying...", "statusError": "Status: {value} ({message})", "convertFailed": "Conversion failed", "applyFailed": "Application failed", "remarkLabel": "Remark: {value}", "noRemark": "No remark", "view": "View", "edit": "Edit", "renew": "Renew", "deleted": "Certificate deleted", "renewSubmitted": "Renewal task submitted for certificate {name}", "imported": "Certificate {name} imported", "applySubmitted": "Application task submitted for certificate {name}", "convertSubmitted": "Conversion application submitted for certificate {name}", "reapplySubmitted": "Certificate {name} updated and is being re-applied...", "updated": "Certificate {name} updated", "deleteTitle": "Delete certificate", "deleteDesc": "Delete certificate {name}?", "applyEditTitle": "Edit and re-apply certificate", "applyConvertTitle": "Convert to applied certificate", "applyEditDesc": "Change the ACME certificate settings. After saving, the certificate will be re-applied with the new settings.", "applyConvertDesc": "Fill in the ACME application details. After a successful application, the current manual certificate is converted in place to an auto-renewable applied certificate.", "applyDesc": "Use ACME (Let's Encrypt and others) to automatically apply for and renew certificates, including wildcard domains.", "name": "Certificate name", "namePlaceholder": "For example: main site certificate", "primaryDomain": "Primary domain", "primaryDomainPlaceholder": "example.com or *.example.com", "otherDomains": "Other domains", "otherDomainsHint": "One domain per line. For a wildcard certificate, also enter the corresponding root domain so it can be issued together.", "dnsAccount": "DNS provider account", "selectDnsAccount": "Select a DNS account", "keyAlgorithm": "Key algorithm", "remark": "Remark", "remarkPlaceholder": "Optional. Record what this certificate is used for.", "autoRenew": "Enable auto-renewal", "autoRenewDesc": "When enabled, the certificate is renewed automatically 7 days before it expires.", "advanced": "Advanced options", "dnsServer1": "DNS validation server 1", "dnsServer2": "DNS validation server 2", "dnsServerPlaceholder": "Leave empty to use the default authoritative DNS", "skipCname": "Skip CNAME check", "skipCnameDesc": "Do not follow CNAME records during DNS-01 validation.", "skipDns": "Skip DNS pre-check", "skipDnsDesc": "Ask Let's Encrypt to validate directly without a local check.", "submitting": "Submitting...", "saveAndApply": "Save and apply", "startConvert": "Start conversion", "startApply": "Start application", "editTitle": "Edit certificate", "editDesc": "You can change the certificate name and remark, and re-upload the PEM certificate and private key.", "loadingContent": "Loading certificate contents...", "notFound": "Certificate not found. It may have been deleted.", "certPem": "Certificate PEM", "keyPem": "Private key PEM", "convertSource": "Convert source", "saving": "Saving...", "saveCert": "Save certificate", "importTitle": "Add certificate", "importDesc": "Paste PEM manually or upload certificate files. After import, you can select it immediately in website forms.", "manualImport": "Manual import", "fileImport": "File import", "remarkProdPlaceholder": "For example: production certificate for the main site", "importing": "Importing...", "remarkWildcardPlaceholder": "For example: production wildcard certificate", "certFile": "Certificate file", "keyFile": "Private key file", "fileSelected": "Selected: {name}", "selectCertFile": "Select a PEM/CRT file", "selectKeyFile": "Select a KEY/PEM file", "uploading": "Uploading...", "uploadFiles": "Upload files", "clearFiles": "Clear files", "selectFiles": "Select a certificate file and a private key file.", "detailTitle": "Certificate details", "detailDesc": "View certificate metadata, remarks, and the currently saved PEM contents.", "loadingDetail": "Loading certificate details...", "status": "Status", "notBefore": "Valid from", "notAfter": "Expires", "certPemCopied": "Certificate PEM copied", "keyPemCopied": "Private key PEM copied", "copy": "Copy", "close": "Close", "editCert": "Edit certificate", "deleting": "Deleting...", "deleteCert": "Delete certificate", "certStatus": { "unknownExpiry": "Expiry unknown", "expired": "Expired", "expiresInDays": "Expires within {days} days", "valid": "Valid" }, "validation": { "nameRequired": "Enter a certificate name", "nameTooLong": "Certificate name cannot exceed 255 characters", "certPemRequired": "Enter the certificate PEM", "keyPemRequired": "Enter the private key PEM", "remarkTooLong": "Remark cannot exceed 255 characters", "primaryDomainRequired": "Enter a primary domain", "dnsAccountRequired": "Select a DNS account" } }, "dnsAccounts": { "title": "DNS accounts", "addAccount": "Add account", "listTitle": "DNS account list", "listDesc": "Centrally manage DNS provider accounts used for ACME certificate DNS validation.", "loadingList": "Loading DNS accounts...", "requestFailed": "Request failed. Please try again later.", "emptyList": "No DNS accounts yet. Click “Add account” in the top right to get started.", "createdAt": "Created: {date}", "created": "DNS account added", "deleted": "DNS account deleted", "deleteTitle": "Delete DNS account", "deleteDesc": "Delete DNS account {name}?", "createTitle": "Add DNS account", "createDesc": "Centrally manage DNS provider accounts used for ACME certificate DNS validation.", "accountName": "Account name", "accountNamePlaceholder": "Cloudflare email account", "provider": "DNS provider", "tokenPlaceholder": "Do not use a Global API Key", "nameRequired": "Enter a name", "tokenRequired": "Enter a token", "submitting": "Submitting...", "submit": "Submit" }, "origins": { "title": "Origins", "subtitle": "Centrally maintain origin addresses reused by routes, so bulk address changes need less repeated work.", "refresh": "Refresh", "create": "Add origin", "loadFailed": "Load failed", "emptyTitle": "No origins", "emptyDesc": "Click Add origin in the top right. Later routes can reuse these addresses directly.", "routeCount": "{count} routes", "noRemark": "No remark", "lastUpdated": "Last updated: {date}", "detail": "Details", "edit": "Edit", "deleted": "Origin deleted", "deleteFailed": "Delete failed", "deleteTitle": "Delete origin", "deleteDesc": "Delete origin {name}?", "confirmDelete": "Delete", "missingId": "A valid origin ID is missing.", "loadingDetail": "Loading origin details...", "backToList": "Back to list", "notFound": "Origin not found or already deleted.", "editOrigin": "Edit origin", "deleteOrigin": "Delete origin", "boundRoutes": "Bound routes", "createdAt": "Created", "updatedAt": "Updated", "remark": "Remark", "relatedRoutes": "Related routes", "relatedRoutesDesc": "Shows routes that bind this origin as the primary origin.", "noRelatedRoutes": "No related routes", "noRelatedRoutesDesc": "This origin is not referenced by any route yet.", "domain": "Domain", "address": "Origin address", "status": "Status", "enabled": "Enabled", "disabled": "Disabled", "addressRequired": "Enter an origin address", "addressInvalid": "Invalid origin address format", "updated": "Origin updated", "created": "Origin created", "saveFailed": "Save failed", "editorDesc": "Origins are a reusable address directory for routes. Protocol and port are still decided by the route.", "name": "Origin name", "namePlaceholder": "Main origin", "saving": "Saving...", "saveChanges": "Save changes" }, "proxyRoutes": { "title": "Route configuration", "refresh": "Refresh", "createRule": "New route", "listTitle": "Route list", "searchPlaceholder": "Search sites, domains, or upstreams...", "emptyTitle": "No websites", "emptyDesc": "Create a website first, then open the configuration page to finish HTTPS, cache, and rate limits.", "noMatches": "No matching results", "noMatchesDesc": "Try a different search term, or clear the filter.", "siteName": "Site name", "domain": "Domain", "status": "Status", "upstream": "Upstream", "actions": "Actions", "enabled": "Enabled", "disabled": "Disabled", "configure": "Configure", "siteCreated": "Website created", "siteDeleted": "Website deleted", "deleteFailed": "Delete failed", "loadListFailed": "Failed to load route list", "unknownError": "Unknown error", "deleteSiteTitle": "Delete website", "deleteSiteDesc": "Delete website {name}? This deletes all domains and configuration under the site.", "deleting": "Deleting...", "missingId": "A valid route ID is missing.", "notFound": "Route not found", "notFoundDesc": "Return to the list and try again.", "saving": "Saving...", "saveFailed": "Save failed", "requestFailed": "Request failed. Please try again later.", "back": "Back", "publish": "Publish configuration", "diffFailed": "Failed to load configuration diff", "noPublishNeeded": "The current configuration matches the active version. Nothing to publish.", "publishSuccess": "Published successfully", "versionLabel": "Version {version}", "publishFailed": "Publish failed", "publishTitle": "Publish configuration", "publishDesc": "This creates a new version from the pending configuration and sets it as active. Nodes will then pull the update.", "confirmPublish": "Publish", "createDesc": "Choose bindings from registered Zone domains. After creating the route, you can continue configuring cache, rate limits, and other advanced options.", "siteId": "Site identifier", "siteIdOptionalDesc": "Optional. If left empty, the first domain is used automatically.", "siteIdStableDesc": "Use a stable, readable business identifier. It does not have to match the domain exactly.", "bindDomains": "Bound domains", "bindDomainsHint": "Select registered domains to bind. Use “Quick add domain” to create an FQDN under a Zone and select it automatically.", "upstreamType": "Origin mode", "upstreamDirect": "Direct upstream", "upstreamTunnel": "Tunnel", "upstreamPages": "Pages static site", "upstreamAddresses": "Upstream addresses", "upstreamUrlsHint": "One full URL per line. The first line is the primary origin. In multi-upstream mode, keep the same protocol and do not include a path or query.", "selectTunnel": "Select a tunnel", "pleaseSelect": "Please select...", "online": "Online", "offline": "Offline", "tunnelForwardHint": "Forward requests to the client node connected by this tunnel.", "tunnelProtocol": "Internal service protocol", "tunnelAddress": "Internal service address", "tunnelAddressHint": "For example: 127.0.0.1:8080 or 192.168.1.10:80", "selectPagesProject": "Select a Pages project", "pagesProjectHint": "Only enabled Pages projects with an active deployment are shown.", "enableSite": "Enable site", "enableSiteDesc": "When disabled, the configuration is kept but not included in publish.", "createFailed": "Create failed. Please try again later.", "creating": "Creating…", "create": "Create", "searchDomainOrZone": "Search domain or Zone…", "quickAddDomain": "Quick add domain", "noZoneDomains": "No Zone domains available. Add an FQDN in Website management first, or use “Quick add domain”.", "noBindableDomains": "No bindable domains (the rest are already bound to other routes). Use “Quick add domain” to create one.", "noMatchingDomains": "No matching domains", "certNumber": "Certificate #{id}", "noCert": "No certificate", "zoneName": "Zone {name}", "zoneId": "Zone #{id}", "unboundDomain": "No domain bound", "pagesProjectId": "Pages project #{id}", "pagesUnbound": "Pages project not bound", "tunnelTargetUnset": "Target not configured", "upstreamUnset": "No upstream configured", "domainSettings": "Domain settings", "domainSettingsDesc": "Bind FQDNs already registered in a Zone. Maintain certificates in Zone domain management.", "redirectNeedsCert": "Bind a certificate to the selected domains (in the Zone) before enabling HTTP redirect", "domainSettingsSaved": "Domain settings saved", "redirectHttp": "Automatically redirect HTTP to HTTPS", "redirectHttpEnabledHint": "When enabled, extra port-80 redirect rules are generated.", "redirectHttpNeedsCert": "At least one selected domain must have a bound certificate before this can be enabled.", "reverseProxy": "Reverse proxy", "reverseProxyDesc": "Configure the origin strategy and upstream addresses.", "proxySaved": "Reverse proxy settings saved", "originHostHint": "If left empty, the request hostname $host is passed through by default.", "customHeaders": "Custom request headers", "customHeadersHint": "One per line, in Key: Value format.", "limits": "Traffic limits", "limitsDesc": "Site rate limits. Empty or 0 inherits the global default; -1 turns it off explicitly; greater than 0 is custom.", "limitsSaved": "Traffic limits saved", "connLimit": "Concurrency limit", "connLimitHint": "Empty or 0 inherits the global default; -1 turns it off; greater than 0 is a custom concurrency cap.", "ipLimit": "Per-IP limit", "ipLimitHint": "Empty or 0 inherits the global default; -1 turns it off; greater than 0 is a custom per-IP cap.", "rateLimit": "Rate limit", "rateLimitPlaceholder": "512k/1m or -1", "rateLimitHint": "Empty or 0 inherits the global default; -1 turns it off; for example 512k or 1m is a custom bandwidth.", "reqLimit": "Per-IP request rate", "reqLimitPlaceholder": "10r/s / 100r/m or -1", "reqLimitHint": "Empty or 0 inherits the global default; -1 turns it off; for example 10r/s or 100r/m is a custom rate.", "cache": "Cache", "cacheDesc": "Configure the site edge cache policy.", "cacheSaved": "Cache settings saved", "enableCache": "Enable site cache", "enableCacheDesc": "New sites should use “Standard static assets”.", "cachePolicy": "Cache policy", "policyStatic": "Standard static assets (recommended)", "policyAll": "All cacheable GET (advanced)", "policySuffix": "Custom suffix", "policyPrefix": "Path prefix", "policyExact": "Exact path", "advancedRiskTitle": "Advanced policy risk", "advancedRiskDesc": "Personalized HTML may be edge-cached and served to other users if the origin does not declare private / no-store. See the help next to the title for details.", "cacheRules": "Cache rules", "cacheHelpTitle": "Cache usage notes", "cacheHelpIntro": "The extension/policy decides whether a response can be cached. Origin headers and Set-Cookie decide whether it is stored. Global OpenResty cache in performance settings must also be enabled.", "cacheHelpRecommendLabel": "Recommended policy:", "cacheHelpRecommend": "New sites should use “Standard static assets” (includes css/js/map/images/fonts/media, excludes HTML/JSON).", "cacheHelpGeneralLabel": "General rules:", "cacheHelpGeneral": "Non-GET is not cached; login cookies do not skip cache on their own; origin private/no-store or a Set-Cookie response is not written to the edge.", "cacheHelpAllGetLabel": "All cacheable GET:", "cacheHelpAllGet": "An advanced option, similar to Cache Everything. Personalized pages must be declared private/no-store by the origin, or HTML may be edge-cached and served to other users.", "cacheHelpCustomLabel": "Custom rules:", "cacheHelpCustom": "Use suffixes such as jpg/css/js; path prefixes such as /assets; exact paths such as /robots.txt. After saving, republish a configuration version before it takes effect on nodes.", "cacheHintSuffix": "One suffix per line, for example jpg, css, js.", "cacheHintPrefix": "One path prefix per line, for example /assets, /static.", "cacheHintExact": "One exact path per line, for example /robots.txt.", "cacheHintStatic": "Standard static assets use the built-in extension list. No extra rules are needed.", "cacheHintNone": "The current policy does not need extra path rules.", "cachePlaceholderNone": "No extra rules for the current policy", "auth": "Authentication", "authDesc": "Configure Basic Auth to block unauthorized access. Configure PoW protection in a WAF rule group.", "authSaved": "Authentication settings saved", "authFormInvalid": "Check the authentication form", "authMode": "Authentication mode", "authNone": "No authentication", "powHint": "PoW protection can only be enabled in a WAF rule group and bound to a site.", "username": "Username", "password": "Password", "wafDesc": "Global rule groups always apply. Here you can add custom rule groups for the current website.", "wafUpdated": "WAF rule groups updated", "loadingWaf": "Loading WAF rule groups...", "alwaysOn": "Always on", "selectCustomRules": "Select custom rules", "selectCustomRulesDesc": "Selected rules run in the execution order below.", "selectRule": "Select {name}", "ruleEnabled": "Enabled", "ruleDisabled": "Disabled", "nodeCount": "{count} nodes", "executionOrder": "Execution order", "executionOrderDesc": "Custom rules run in this order. Drag them or use the up/down buttons to change the order.", "noCustomWaf": "No custom WAF rule groups", "dragRule": "Drag {name}", "moveUpRule": "Move {name} up", "moveDownRule": "Move {name} down", "sections": { "domains": "Domain settings", "domainsDesc": "Maintain the site identifier and choose bound domains from a Zone.", "limits": "Traffic limits", "limitsDesc": "Set connection limits and rate limits (can inherit global defaults).", "proxy": "Reverse proxy", "proxyDesc": "Configure the primary origin and upstream addresses.", "cache": "Cache", "cacheDesc": "Configure the site cache policy.", "waf": "WAF", "wafDesc": "Bind WAF rule groups and view the policies that apply to this site.", "auth": "Authentication", "authDesc": "Configure basic authentication so visitors must enter a username and password." }, "validation": { "enterDomain": "Enter a domain", "invalidDomain": "Invalid domain format", "enterAtLeastOneDomain": "Enter at least one domain", "invalidDomainWithValue": "Invalid domain format: {domain}", "duplicateDomain": "Duplicate domain: {domain}", "enterAtLeastOneUpstream": "Enter at least one upstream address", "invalidUpstream": "Invalid upstream address format: {url}", "upstreamMustBeHttp": "Upstream address must start with http:// or https://: {url}", "upstreamMissingHost": "Upstream address is missing a hostname: {url}", "multiUpstreamNoPath": "Multi-upstream mode does not support addresses with a path or query", "multiUpstreamSameProtocol": "Multiple upstreams for the same site must use the same protocol", "invalidOriginHost": "Invalid origin Host format", "invalidHeader": "Invalid custom request header format: {line}", "invalidHeaderName": "Invalid custom request header name: {key}", "invalidLimitRate": "Invalid rate-limit format. Use 512k, 1m, a number, or -1 to turn it off", "invalidLimitReq": "Invalid request-rate format. Use 10r/s, 100r/m, or -1 to turn it off", "cacheRuleRequired": "The current cache policy needs at least one rule", "invalidCacheSuffix": "Invalid cache suffix format: {rule}", "invalidCachePath": "Invalid cache path rule format: {rule}", "siteNameTooLong": "Site identifier cannot exceed 255 characters", "selectAtLeastOneDomain": "Select at least one domain", "selectTunnel": "Select a tunnel", "enterTunnelTarget": "Enter an internal service address (for example 127.0.0.1:8080)", "selectPagesProject": "Select a Pages project", "enterSiteId": "Enter a site identifier", "enterIntegerOrMinusOne": "Enter -1, 0, or a positive integer", "enterUsername": "Enter a username", "enterPassword": "Enter a password" } }, "responses": { "title": "Response pages", "subtitle": "Configure origin error pages and offline pages.", "loadingPermission": "Loading permission information...", "loadingConfig": "Loading response page settings...", "loadingPage": "Loading response pages...", "loadingErrorConfig": "Loading error page settings...", "loadingOfflineConfig": "Loading offline page settings...", "loadFailed": "Load failed", "forbidden": "Insufficient permission", "forbiddenSettings": "Only administrators can access response page settings.", "forbiddenPreviewError": "Only administrators can preview the error page.", "forbiddenPreviewOffline": "Only administrators can preview the offline page.", "forbiddenEditError": "Only administrators can edit the error page HTML.", "forbiddenEditOffline": "Only administrators can edit the offline page HTML.", "errorPage": "Error page", "offlinePage": "Offline page", "saveFailed": "Save failed", "policySaved": "Trigger policy saved. Publish a version for the configuration to take effect.", "triggerPolicy": "Trigger policy", "triggerPolicyDesc": "Configure when the origin error page is enabled and which status codes trigger it.", "enableErrorPage": "Enable origin error page", "enableErrorPageDesc": "When disabled, the origin or Nginx default error response is passed through.", "getOnly": "GET requests only", "getOnlyDesc": "When enabled, the custom error page is returned only for matching error status codes on GET requests.", "statusCodes": "Trigger status codes", "statusCodesDesc": "Supports a single code (such as 502) or a closed range (such as 500-599).", "statusCodesPlaceholder": "For example 502 or 500-599, then press Enter", "pagePreview": "Page preview", "preview": "Preview", "edit": "Edit", "errorPagePreview": "Origin error page preview", "errorPreview": "Error page preview", "offlinePreview": "Offline page preview", "offlinePageDesc": "When enabled, a Service Worker is issued to HTTPS websites. If the domain is unreachable, the browser shows this offline page from cache.", "offlineSaved": "Offline page saved. Publish a version for the configuration to take effect.", "enableOffline": "Enable Service Worker offline page", "enableOfflineDesc": "Only takes effect on HTTPS websites.", "enableOfflineAria": "Enable offline page", "scope": "Scope", "scopeDesc": "Applies only to the selected HTTPS domains. If empty, nothing is injected.", "addDomain": "Add domain", "noScopeSelected": "No scope domains selected. After saving, nothing is injected into any site.", "enableThenSelectScope": "Enable the offline fallback before choosing scope domains.", "removeDomain": "Remove {domain}", "selectScopeTitle": "Select scope domains", "selectScopeDesc": "Inject the offline fallback only for selected HTTPS domains. Search, filter, and bulk-select.", "domain": "Domain", "searchDomainOrZone": "Search domain or apex…", "selectedCount": "Selected {count}", "visibleCount": "Visible {count}", "unselectVisible": "Clear visible", "selectVisible": "Select visible", "clear": "Clear", "noAvailableDomains": "No domains available. Register domains in Zone management first.", "noMatchingDomains": "No matching domains", "selectZone": "Select apex {domain}", "apex": "Apex", "confirm": "OK", "backToError": "Back to error page", "backToOffline": "Back to offline page", "closePreview": "Close preview", "fullscreen": "Full-screen view", "htmlTooLarge": "HTML exceeds the size limit (max 256KB)", "errorHtmlSaved": "Origin error page HTML saved. Publish a version for the configuration to take effect.", "offlineHtmlSaved": "Offline page HTML saved. Publish a version for the configuration to take effect.", "templateNotFound": "Selected template not found", "templateLoaded": "Loaded template “{name}” into the editor", "errorRestored": "Cleared to use the server built-in default template (save to apply)", "offlineRestored": "Cleared to use the built-in default template (save to apply)", "editErrorHtml": "Edit error page HTML", "editOfflineHtml": "Edit offline page HTML", "offlineLivePreview": "Offline page live preview", "builtinTemplates": "Built-in templates", "selectTemplate": "Select a template", "loadTemplate": "Load template", "restoreDefault": "Restore default", "restoreTitle": "Restore default HTML?", "restoreErrorDesc": "This clears the editor. After saving, the server built-in default template is used. This action does not save automatically.", "restoreOfflineDesc": "This clears the editor. After saving, the built-in default template is used. This action does not save automatically.", "confirmRestore": "Restore" } }