码桶
发现社区成员的开源项目
en.js42 KB
export default {
title: 'DNS Manager',
subtitle: 'Manage your Cloudflare domains securely',
serverMode: 'Server Mode',
clientMode: 'Client Mode',
usernameLabel: 'Username',
usernamePlaceholder: 'Enter username...',
passwordLabel: 'Password',
passwordPlaceholder: 'Enter password...',
tokenLabel: 'Cloudflare API Token',
tokenPlaceholder: 'Paste your API token...',
tokenHint: 'Tokens are sent via header as a transparent proxy.',
apiTokenTab: 'API Token',
globalKeyTab: 'Global API Key',
globalKeyEmailLabel: 'Cloudflare Account Email',
globalKeyEmailPlaceholder: '[email protected]',
globalKeyLabel: 'Global API Key',
globalKeyPlaceholder: 'Enter your Global API Key',
globalKeyHint: 'Find it at Cloudflare Dashboard > My Profile > API Tokens > Global API Key:',
globalKeyWarning: 'Security: Global API Key grants full account control. If leaked, an attacker gains complete access to your Cloudflare account. API Token is recommended for granular permissions.',
serverHint: 'The backend runs on Pages environment variables.',
loginBtn: 'Access Dashboard',
loginFailed: 'Login failed',
sessionExpired: 'Session expired. Please log in again.',
errorOccurred: 'An error occurred',
yourDomains: 'Your Domains',
domainSubtitle: 'Select a zone to manage its DNS and SaaS settings',
refresh: 'Refresh',
id: 'ID',
manage: 'Manage',
back: 'Back to Zones',
dnsRecords: 'DNS Records',
saasHostnames: 'Custom Hostnames',
addRecord: 'Add Record',
type: 'Type',
name: 'Name',
content: 'Content',
proxied: 'Proxied',
actions: 'Actions',
hostname: 'Hostname',
status: 'Status',
sslStatus: 'SSL Status',
confirmDelete: 'Are you sure you want to delete this record?',
logout: 'Logout',
managed: 'Managed',
clientOnly: 'Client-Only',
cancel: 'Cancel',
save: 'Save',
saving: 'Saving...',
addModalTitle: 'Add New DNS Record',
confirmTitle: 'Confirm Action',
confirmDeleteText: 'This action cannot be undone, are you sure you want to continue?',
yes: 'Confirm',
no: 'No',
statusActive: 'Active',
statusPending: 'Pending',
statusInitializing: 'Initializing',
statusMoved: 'Moved',
statusDeactivated: 'Deactivated',
rememberMe: 'Stay logged in',
rememberToken: 'Remember API Token',
searchPlaceholder: 'Search records...',
editRecord: 'Edit Record',
addSaaS: 'Add Custom Hostname',
confirmDeleteSaaS: 'Are you sure you want to delete this custom hostname?',
proxiedHint: 'Traffic will be accelerated and protected by Cloudflare',
hostnamePlaceholder: 'Enter full hostname (e.g. shop.example.com)',
fallbackOrigin: 'Fallback Origin',
fallbackOriginPlaceholder: 'e.g. origin.example.com',
updateFallback: 'Update Fallback Origin',
fallbackStatus: 'Fallback Status',
sslMethod: 'SSL Method',
sslType: 'SSL Type',
sslMethodTxt: 'TXT Record',
sslMethodHttp: 'HTTP Validation',
sslMethodCname: 'CNAME Validation',
sslMethodEmail: 'Email Validation',
httpWarning: 'Security Warning: Insecure HTTP connection detected. To protect your token, sending sensitive information over non-HTTPS is prohibited (except for Localhost).',
recommended: 'Recommended',
copied: 'Copied to clipboard',
updateSuccess: 'Update Successful',
addSuccess: 'Added Successfully',
deleteSuccess: 'Deleted Successfully',
importSuccess: 'Import Successful',
exportSuccess: 'Export Successful',
batchDelete: 'Batch Delete',
confirmBatchDelete: 'Are you sure you want to delete {count} selected records?',
comment: 'Comment',
tags: 'Tags',
addTag: 'Add tag',
commentPlaceholder: 'Add a comment...',
tagsPlaceholder: 'Type a tag and press Enter',
priority: 'Priority',
weight: 'Weight',
port: 'Port',
service: 'Service',
protocol: 'Protocol',
tag: 'Tag',
flags: 'Flags',
import: 'Import',
export: 'Export',
uploadFile: 'Upload Config File',
order: 'Order',
preference: 'Preference',
regex: 'Regex',
replacement: 'Replacement',
algorithm: 'Algorithm',
fingerprint: 'Fingerprint',
keyTag: 'Key Tag',
digestType: 'Digest Type',
digest: 'Digest',
usage: 'Usage',
selector: 'Selector',
matchingType: 'Matching Type',
certificate: 'Certificate',
target: 'Target',
value: 'Value',
ttl: 'TTL',
ttlAuto: 'Automatic',
ttl1min: '1 min',
ttl2min: '2 min',
ttl5min: '5 min',
ttl10min: '10 min',
ttl15min: '15 min',
ttl30min: '30 min',
ttl1h: '1 hour',
ttl2h: '2 hours',
ttl5h: '5 hours',
ttl12h: '12 hours',
ttl1d: '1 day',
ownership: 'Ownership Verification',
sslValidation: 'SSL Validation',
verifyMethod: 'Verification Method',
verifyType: 'Verification Type',
verifyName: 'Verification Name',
verifyValue: 'Verification Value',
certificateStatus: 'Certificate Status',
hostnameStatus: 'Hostname Status',
verificationRecords: 'Verification Records',
noVerificationNeeded: 'No verification needed',
editSaaS: 'Edit Custom Hostname',
minTlsVersion: 'Minimum TLS Version',
certType: 'Certificate Type',
certCloudflare: 'Cloudflare Provided',
certCustom: 'Custom Certificate',
originServer: 'Origin Server',
defaultOrigin: 'Default Origin',
customOrigin: 'Custom Origin',
originPlaceholder: 'e.g. origin.example.com',
tlsDefault: 'TLS 1.0 (Default)',
active: 'Active',
pending_validation: 'Pending Validation',
pending_deployment: 'Pending Deployment',
pending: 'Pending',
switchZone: 'Switch Domain',
deleteZone: 'Delete Zone',
deleteZoneWarning: 'This will permanently remove this domain and all its DNS records, settings, and configurations from your Cloudflare account. This action cannot be undone.',
deleteZoneTypeConfirm: 'Type {zone} to confirm deletion:',
zoneDeleted: 'Zone deleted successfully',
zoneDeleteFailed: 'Failed to delete zone',
saasNotEnabled: 'Custom Hostnames Not Enabled',
saasNotEnabledDesc: 'Cloudflare offers 100 free Custom Hostnames (SSL for SaaS) on all plans, but you need to enable it first in the Cloudflare dashboard and add a valid payment method.',
saasStep1: '1. Go to Cloudflare Dashboard → SSL/TLS → Custom Hostnames',
saasStep2: '2. Add a valid payment method (you will not be charged)',
saasStep3: '3. Once enabled, you can manage up to 100 custom hostnames for free',
unbindZone: 'Unbind Zone',
unbindZoneDesc: 'Remove this domain from the manager only. The zone will remain in your Cloudflare account. Refresh to re-add it.',
zoneUnbound: 'Zone removed from manager',
unbindZoneConfirmShort: 'Remove this zone from the manager?',
deleteGroup: 'Delete Credential Group',
deleteGroupDesc: 'This will remove the credential and all {count} zone(s) under it. Zones remain in your Cloudflare account, but the token/key will be deleted.',
zoneActions: 'Zone Actions',
toggleSidebar: 'Toggle Sidebar',
overview: 'Overview',
selectZone: 'Select a zone',
noZonesFound: 'No domains found. Please check your token or add a domain in Cloudflare.',
fallbackError: 'Unable to edit this record as it is configured as a fallback origin for SSL for SaaS.',
invalidPassword: 'Invalid password',
accountLocked: 'Account temporarily locked. Please try again later.',
serverNotConfigured: 'Server is not configured for password login',
switchAccount: 'Switch Account',
not_set: 'Not Set',
invalidToken: 'Invalid API Token',
tokenRequired: 'API Token is required',
verifyFailed: 'Token verification failed',
noZonesServerExplanation: 'You are in Server Mode, but no CF_API_TOKEN is configured on the server, or the token lacks permission to access any domains.',
noZonesClientExplanation: 'Your API token may be invalid, expired, or missing the required permissions.',
noZonesRetryWithToken: 'Retry with API Token',
noZonesEnterToken: 'Enter a Cloudflare API token to connect directly.',
noZonesGetToken: 'Create a token at:',
tokenRequiredPermissions: 'Required: Zone > Zone Read, DNS Edit, Zone Settings Edit, Cache Purge, SSL and Certificates Edit',
backToLogin: 'Back to Login',
retryFetch: 'Retry',
saveToServer: 'Save to Server',
saveToServerHint: 'Save this token to the server so you can manage domains by just logging in with your password.',
tokenSaved: 'Token saved to server',
tokenSaveFailed: 'Failed to save token',
useDirectly: 'Use Directly',
addAccount: 'Add Account',
addNewToken: 'Add New Token',
addAccountTitle: 'Add Cloudflare Account',
accountName: 'Account Name (optional)',
accountNamePlaceholder: 'e.g. My Blog',
removeAccount: 'Remove Account',
confirmRemoveAccount: 'Remove this account? The token will be deleted from the server.',
accountAdded: 'Account added',
accountRemoved: 'Account removed',
storageServer: 'Managed',
storageLocal: 'Local',
switchingStorage: 'Switching...',
switchedToLocal: 'Switched to local mode',
switchedToServer: 'Switched to managed mode',
localModeTitle: 'Local Mode',
localModeDesc: 'Tokens are stored only in your browser, nothing goes through the server.',
localTokens: 'Local Tokens',
noLocalTokens: 'No local tokens yet. Add a Cloudflare API token to get started.',
addLocalToken: 'Add Local Token',
localTokenAdded: 'Token added locally',
removeLocalToken: 'Remove',
confirmRemoveLocalToken: 'Remove this local token?',
localTokenRemoved: 'Local token removed',
uploadToServer: 'Upload to server',
uploadedToServer: 'Uploaded to server',
switchToLocal: 'Switch to local storage',
localBadge: 'Local',
apiTokenBadge: 'API Token',
globalKeyBadge: 'Global Key',
usersManagement: 'User Management',
addUser: 'Add User',
editUser: 'Edit User',
deleteUser: 'Delete User',
confirmDeleteUser: 'Delete this user? All their tokens will also be removed.',
roleAdmin: 'Admin',
roleUser: 'User',
userCreated: 'User created',
userUpdated: 'User updated',
userDeleted: 'User deleted',
newPassword: 'New Password',
newPasswordPlaceholder: 'Enter new password (leave empty to keep)',
role: 'Role',
loginAnotherAccount: 'Login Another Account',
addSessionTitle: 'Login Another Account',
sessionAdded: 'Account added',
removeSession: 'Logout this account',
setupAccount: 'Setup Account',
setupAccountDesc: 'Set your password using the setup token from your admin',
setupTokenLabel: 'Setup Token',
setupTokenPlaceholder: 'Paste setup token from admin...',
setupSuccess: 'Account activated. You can now log in.',
setupFailed: 'Setup failed',
needsSetup: 'Account not set up yet. Please use your setup token first.',
changePassword: 'Change Password',
currentPassword: 'Current Password',
currentPasswordPlaceholder: 'Enter current password...',
newPasswordPlaceholder2: 'Enter new password...',
confirmNewPassword: 'Confirm New Password',
confirmNewPasswordPlaceholder: 'Re-enter new password...',
passwordChanged: 'Password changed',
passwordMismatch: 'Passwords do not match',
passwordTooWeak: 'Password must be at least 8 characters with at least 1 letter and 1 number',
passwordChangeError: 'Failed to change password',
setupTokenCopied: 'Setup token copied',
resetSetupToken: 'Reset Setup Token',
userStatusPending: 'Pending',
userStatusActive: 'Active',
adminPasswordNote: 'Admin password is managed via environment variables',
register: 'Register',
registerDesc: 'Create a new account',
registerSuccess: 'Registration complete. You can now log in.',
registerFailed: 'Registration failed',
registrationDisabled: 'Registration is disabled. Contact an admin for an invitation.',
appSettings: 'Settings',
openRegistration: 'Open Registration',
openRegistrationDesc: 'Allow anyone to self-register without an invitation token',
settingsSaved: 'Settings saved',
inviteTokenMode: 'Invite Token Mode',
inviteTokenModeDesc: 'New users need an admin-provided invitation token to register',
badgeE2E: 'E2E Encrypted',
badgeZeroKnowledge: 'Zero-Knowledge',
badgeSHA256: 'PBKDF2 Hashed',
badgeJWT: 'JWT Auth',
badgeHTTPS: 'HTTPS Only',
badgeNoPlaintext: 'No Plaintext Passwords',
passkey: 'Passkey',
passkeyLogin: 'Passkey Login',
passkeyLoginDesc: 'Sign in with a registered passkey',
passkeyLoginBtn: 'Sign in with Passkey',
passkeyManage: 'Manage Passkeys',
passkeyRegister: 'Register Passkey',
passkeyRegistered: 'Passkey registered',
passkeyDeleted: 'Passkey deleted',
passkeyNone: 'No passkeys registered',
passkeyName: 'Name',
passkeyCreatedAt: 'Registered',
passkeyNoSupport: 'Passkeys are not supported by this browser',
passkeyNoCredentials: 'No passkeys registered for this user',
passkeyError: 'Passkey operation failed',
passkeyUsernameRequired: 'Please enter your username first',
badgePasskey: 'Passkey Support',
darkMode: 'Dark Mode',
lightMode: 'Light Mode',
// Audit Log
auditLog: 'Audit Log',
auditLogEmpty: 'No audit entries yet',
auditLogClear: 'Clear Log',
auditLogClearConfirm: 'Are you sure you want to clear all audit logs?',
auditLogCleared: 'Audit log cleared',
auditTime: 'Time',
auditUser: 'User',
auditAction: 'Action',
auditDetail: 'Detail',
auditPrev: 'Previous',
auditNext: 'Next',
// Global Search
globalSearchPlaceholder: 'Search DNS records across all zones...',
searchResults: 'Search Results',
searchNoResults: 'No matching records found',
searchMinChars: 'Enter at least 2 characters',
searching: 'Searching...',
searchResultCount: 'Found {count} records (searched {zones} zones)',
// TOTP/2FA
totpManage: 'Two-Factor Auth',
totpSetupDesc: 'Add extra security with an authenticator app',
totpEnabled: '2FA is enabled',
totpNotEnabled: '2FA is not enabled',
totpEnable: 'Enable 2FA',
totpDisable: 'Disable 2FA',
totpScanQR: 'Scan QR code with authenticator app or enter key manually',
totpSecretKey: 'Secret Key',
totpEnterCode: 'Enter code to complete setup',
totpCodePlaceholder: '6-digit code',
totpVerify: 'Verify',
totpVerified: '2FA enabled successfully',
totpDisabled: '2FA has been disabled',
totpDisableDesc: 'Enter current 2FA code to disable',
totpRequired: 'Enter your 2FA code',
totpInvalid: 'Invalid verification code',
totpStep: 'Two-Factor Verification',
// DNS History/Rollback
dnsHistory: 'DNS History',
noSnapshots: 'No snapshots available',
snapshotTime: 'Time',
snapshotUser: 'User',
snapshotAction: 'Action',
rollback: 'Rollback',
rollbackConfirm: 'Are you sure you want to rollback to this snapshot? Current records will be replaced.',
rollbackSuccess: 'Rollback completed',
rollbackDetail: 'Deleted: {deleted}, Created: {created}, Updated: {updated}',
// Diff View
compare: 'Compare',
diffTitle: 'Snapshot Diff',
diffNoChanges: 'No differences between snapshot and current records',
diffAdded: 'added',
diffRemoved: 'removed',
diffModified: 'modified',
diffAddedSection: 'Added records (in current, not in snapshot)',
diffRemovedSection: 'Removed records (in snapshot, not in current)',
diffModifiedSection: 'Modified records',
diffBefore: 'Snapshot',
diffAfter: 'Current',
// Bulk Operations
bulkOperations: 'Bulk Operations',
bulkDesc: 'Manage DNS records across multiple zones',
bulkCreate: 'Bulk Create',
bulkDelete: 'Bulk Delete',
bulkAllZones: 'All Zones',
bulkSelectedZones: 'Selected Zones',
bulkExecute: 'Execute',
bulkExecuting: 'Executing...',
bulkResults: 'Results',
bulkSuccess: 'Bulk operation completed',
bulkSelectZones: 'Select zones',
bulkRecordType: 'Record Type',
bulkRecordName: 'Record Name',
bulkRecordContent: 'Record Content',
// Webhook
webhookUrl: 'Webhook URL',
webhookUrlPlaceholder: 'https://example.com/webhook',
webhookDesc: 'Configure webhook to receive DNS change and login event notifications',
webhookSaved: 'Webhook saved',
// DNS Templates
templates: 'Templates',
templateSpf: 'SPF (Allow domain mail servers)',
templateDmarc: 'DMARC (Basic policy)',
templateGoogleMx: 'Google Workspace MX',
templateWwwCname: 'WWW redirect (CNAME)',
templateMailMx: 'Mail (MX basic)',
templateGoogleVerify: 'Verify (Google)',
templateApplied: 'Template applied',
// Bulk Import
bulkImport: 'Bulk Import',
bulkImportDesc: 'Bulk import DNS records via JSON',
pasteJson: 'Paste JSON',
uploadJsonFile: 'Or upload a .json file',
previewRecords: 'Preview Records',
importRecords: 'Import Records',
importing: 'Importing...',
importResultCreated: 'Successfully created {count} records',
importResultErrors: '{count} records failed to import',
invalidJson: 'Invalid JSON format',
noRecordsFound: 'No records found',
jsonFormatHint: 'Format: { "records": [{ "type": "A", "name": "@", "content": "1.2.3.4" }] }',
// Zone Permissions
allowedZones: 'Zone Permissions',
allowedZonesDesc: 'Restrict which zones this user can manage (empty = all zones)',
allowedZonesPlaceholder: 'Type a zone name and press Enter, e.g. example.com',
allowedZonesAll: 'All zones (unrestricted)',
allowedZonesAdd: 'Add',
allowedZonesRemove: 'Remove',
// Dashboard
dashboard: 'Dashboard',
dashboardZones: 'Zones',
dashboardRecords: 'DNS Records',
dashboardAccounts: 'Accounts',
dashboardLastLogin: 'Last Login',
dashboardRecentActivity: 'Recent Activity',
dashboardNoActivity: 'No recent activity',
dashboardJustNow: 'Just now',
// Scheduled Changes
scheduledChanges: 'Scheduled Changes',
scheduleForLater: 'Schedule for later',
scheduleDateTime: 'Scheduled date & time',
scheduleConfirm: 'Schedule',
scheduleCreated: 'Scheduled change created',
scheduleCancelled: 'Scheduled change cancelled',
scheduleMustBeFuture: 'Scheduled time must be in the future',
noScheduledChanges: 'No scheduled changes',
scheduledFor: 'Scheduled for',
cancelSchedule: 'Cancel schedule',
scheduleActionCreate: 'Create',
scheduleActionUpdate: 'Update',
scheduleActionDelete: 'Delete',
// Keyboard Shortcuts
keyboardShortcuts: 'Keyboard Shortcuts',
shortcutFocusSearch: 'Focus search',
shortcutNewRecord: 'New DNS record',
shortcutCloseModal: 'Close modal',
shortcutShowHelp: 'Show shortcuts help',
shortcutGeneral: 'General',
shortcutOr: 'or',
errorBoundaryTitle: 'Something went wrong',
errorBoundaryMessage: 'This section encountered an unexpected error. Please try again, or refresh the page if the problem persists.',
errorBoundaryRetry: 'Try Again',
errorBoundaryDetails: 'Error details',
offlineMessage: 'You are offline. Some features may be unavailable.',
// Onboarding Tour
onboardingWelcomeTitle: 'Welcome to DNS Manager',
onboardingWelcomeDesc: 'Let us give you a quick tour of the main features to get you started.',
onboardingZoneTitle: 'Zone Selector',
onboardingZoneDesc: 'Switch between and manage your different domains here. Click the domain name to open the switcher.',
onboardingDnsTitle: 'DNS Records',
onboardingDnsDesc: 'View, edit, and manage all DNS records. Supports inline proxy status toggling.',
onboardingTemplatesTitle: 'Templates',
onboardingTemplatesDesc: 'Quickly add common DNS records using prebuilt templates like SPF, DMARC, Google MX, etc.',
onboardingSearchTitle: 'Search',
onboardingSearchDesc: 'Use the search box to quickly filter records. Search by name, type, and content.',
onboardingDoneTitle: 'All Set!',
onboardingDoneDesc: 'You now know the basics. Start managing your DNS records!',
onboardingSkip: 'Skip',
onboardingNext: 'Next',
onboardingFinish: 'Done',
// DNS Record Grouping
groupBy: 'Group by',
groupByNone: 'None',
groupByType: 'Type',
groupBySubdomain: 'Subdomain',
// Import Formats
importFormatHint: 'Supports JSON, BIND zone file, and CSV formats. Format is auto-detected.',
importDetectedFormat: 'Detected format',
importPasteData: 'Paste data',
importUploadFile: 'Upload file',
importPlaceholder: 'JSON: [{"type":"A","name":"@","content":"1.2.3.4"}]\nBIND: @ IN A 1.2.3.4\nCSV: type,name,content,ttl,proxied',
importCsvMissingHeaders: 'CSV is missing required column headers (type, name, content)',
// Share Snapshot
shareSnapshot: 'Share',
shareSnapshotTitle: 'Share Snapshot',
shareSnapshotDesc: 'Create a read-only share link (valid for 7 days)',
shareLinkCopied: 'Share link copied',
// Inline Edit
inlineEditHint: 'Double-click to quick edit',
inlineEditSave: 'Save',
inlineEditCancel: 'Cancel',
inlineEditSaving: 'Saving...',
// Drag and Drop Reorder
dragHandle: 'Drag to reorder',
dragReorderHint: 'Drag rows to change priority order',
priorityUpdated: 'Priority updated',
priorityUpdateFailed: 'Failed to update priority',
// DNS Monitors
monitors: 'DNS Monitors',
monitorAdd: 'Add Monitor',
monitorDelete: 'Delete Monitor',
monitorAdded: 'Monitor added',
monitorDeleted: 'Monitor deleted',
monitorNone: 'No monitors yet',
monitorNoneHint: 'Add a monitor to track DNS record changes',
monitorZone: 'Zone',
monitorSelectZone: 'Select zone...',
monitorRecordName: 'Record Name',
monitorExpectedContent: 'Expected Content',
monitorExpected: 'Expected',
monitorLastCheck: 'Last check',
monitorAutoRefresh: 'Auto-refreshes every 60 seconds',
// Cache Management
cacheTab: 'Cache',
cacheDevMode: 'Development Mode',
cacheDevModeDesc: 'Development mode temporarily disables caching for your zone. Auto-expires in 3 hours.',
cacheDevModeOn: 'Enable Development Mode',
cacheDevModeOff: 'Disable Development Mode',
cacheDevModeExpires: 'Auto-expires in {time}',
devModeEnabled: 'Development mode enabled',
devModeDisabled: 'Development mode disabled',
cachePurgeAll: 'Purge All Cache',
cachePurgeAllDesc: 'Remove all cached files for this zone. This action cannot be undone.',
cachePurgeAllBtn: 'Purge All Cache',
cachePurgeAllConfirm: 'This will purge all cached files for this zone. Are you sure?',
cachePurgeAllSuccess: 'All cache has been purged',
cachePurgeUrls: 'Purge by URL',
cachePurgeUrlsDesc: 'Enter URLs to purge from cache, one per line (max 30 per request).',
cachePurgeUrlsPlaceholder: 'https://example.com/page1\nhttps://example.com/page2',
cachePurgeUrlsBtn: 'Purge URLs',
cachePurgeUrlsSuccess: 'Successfully purged {count} URL(s)',
cacheUrlsEmpty: 'Please enter at least one URL',
cacheUrlsLimit: 'Maximum 30 URLs per request (Cloudflare API limit)',
tokenPermissionHint: 'Your API token is missing permissions. Add: Zone Settings Edit, Cache Purge, SSL and Certificates Edit.',
loadSettingsError: 'Failed to load settings: {error}',
// Speed Optimization
speedTab: 'Speed',
speedQuickActions: 'Quick Speed Optimization',
speedQuickActionsDesc: 'Enable or disable all speed optimizations at once, including compression, preloading, and protocol enhancements.',
speedEnableAll: 'Enable All Speed Optimizations',
speedDisableAll: 'Disable All',
speedEnableAllSuccess: 'All speed optimizations enabled',
speedDisableAllSuccess: 'All speed optimizations disabled',
speedAdvanced: 'Advanced / Customize',
speed_rocket_loader: 'Rocket Loader',
speedRocketLoaderDesc: 'Defers loading of JavaScript to improve paint times. May break some JS-dependent features.',
speedRocketLoaderWarning: 'May cause issues with inline scripts',
speed_minify: 'Auto Minify',
speedMinifyDesc: 'Reduce file size by removing unnecessary characters',
speed_brotli: 'Brotli Compression',
speedBrotliDesc: 'Apply Brotli compression for faster page loads',
speed_early_hints: 'Early Hints (Smart Hints)',
speedEarlyHintsDesc: 'Send preload hints to browsers before the full response is ready',
speed_h2_prioritization: 'HTTP/2 Prioritization',
speedH2Desc: 'Optimize the order of resource delivery over HTTP/2',
speed_0rtt: '0-RTT Connection Resumption',
speed0rttDesc: 'Allow TLS 1.3 connections to resume without a full handshake',
speed_fonts: 'Cloudflare Fonts',
speedFontsDesc: 'Rewrite Google Fonts to be served from your domain, improving privacy and performance by eliminating third-party connections.',
speed_polish: 'Polish (Image Optimization)',
speedPolishDesc: 'Optimize image sizes on your site. Lossless reduces file size without quality loss; Lossy provides greater compression.',
speedPolish_off: 'Off',
speedPolish_lossless: 'Lossless',
speedPolish_lossy: 'Lossy',
speed_mirage: 'Mirage',
speedMirageDesc: 'Accelerate image loading on mobile devices by lazy-loading images and serving optimized placeholders.',
speed_image_resizing: 'Image Resizing',
speedImageResizingDesc: 'Resize, crop, and convert images on the fly via URL parameters or Workers.',
// SSL/TLS
sslTab: 'SSL/TLS',
sslModeTitle: 'SSL/TLS Encryption Mode',
sslModeDescription: 'Choose how Cloudflare encrypts traffic between visitors and your origin server.',
sslModeOff: 'Off',
sslModeOffDesc: 'No encryption. All traffic is sent in plaintext.',
sslModeFlexible: 'Flexible',
sslModeFlexibleDesc: 'Encrypts traffic between the browser and Cloudflare only. No SSL certificate needed on origin.',
sslModeFull: 'Full',
sslModeFullDesc: 'End-to-end encryption, but does not validate the origin certificate.',
sslModeStrict: 'Full (Strict)',
sslModeStrictDesc: 'End-to-end encryption with origin certificate validation. Most secure option.',
sslAlwaysHttps: 'Always Use HTTPS',
sslAlwaysHttpsDesc: 'Redirect all HTTP requests to HTTPS.',
sslMinTls: 'Minimum TLS Version',
sslMinTlsDesc: 'Set the minimum TLS version allowed for connections to your domain.',
sslAutoRewrites: 'Automatic HTTPS Rewrites',
sslAutoRewritesDesc: 'Fix mixed content by rewriting HTTP to HTTPS.',
sslUpdateSuccess: 'SSL/TLS setting updated successfully',
sslOffWarning: 'Warning: SSL is off. Your site traffic is unencrypted and vulnerable to interception.',
sslDiagramBrowser: 'Browser',
sslDiagramOrigin: 'Origin',
errPermission: 'Insufficient Permissions',
errPermissionDesc: 'This API token does not have the required permissions. Ensure it has Zone:Read and DNS:Edit scopes.',
errAuth: 'Invalid or Expired Credential',
errAuthDesc: 'This API token or key is invalid, has been deleted, or has expired. Please re-add a valid credential.',
errNetwork: 'Network Error',
errNetworkDesc: 'Could not reach the Cloudflare API. Please check your network connection and try again.',
errUnknown: 'An unexpected error occurred',
retry: 'Retry',
goToCfDashboard: 'Open CF Dashboard',
loadingRecords: 'Loading...',
searchZones: 'Search zones...',
// Sidebar section labels
sidebarPerformance: 'Performance',
sidebarSecurity: 'Security',
sidebarConfig: 'Configuration',
sidebarMonitoring: 'Monitoring',
// Tab labels
pageRulesTab: 'Page Rules',
securityTab: 'Security',
networkTab: 'Network',
scrapeShieldTab: 'Scrape Shield',
workersTab: 'Workers',
rulesTab: 'Redirect Rules',
analyticsTab: 'Analytics',
dnsSettingsTab: 'DNS Settings',
dnsSettingsTitle: 'DNS Settings',
enable: 'Enable',
disable: 'Disable',
disabled: 'Disabled',
dnssecDesc: 'DNSSEC protects your domain from DNS spoofing and cache poisoning by digitally signing DNS records. Once enabled, you need to add the DS record at your registrar.',
dnssecPending: 'DNSSEC is pending activation. Add the DS record to your domain registrar.',
cnameFlattening: 'CNAME Flattening',
cnameFlattenRoot: 'Flatten at root only',
cnameFlattenAll: 'Flatten all CNAMEs',
cnameFlatteningDesc: 'CNAME flattening resolves CNAME records to A records for improved compatibility. Enabled at the root (@) by default.',
cnameFlattenPaidOnly: '"Flatten all CNAMEs" is only available on paid plans.',
paidOnly: 'Paid',
nameservers: 'Nameservers',
nameserversDesc: 'Cloudflare nameservers currently assigned to this domain.',
pointDnsTo: 'Point your domain DNS to:',
transformTab: 'Transform Rules',
originTab: 'Origin Rules',
emailTab: 'Email Routing',
customPagesTab: 'Custom Pages',
sidebarEmail: 'Email & Pages',
// DNS Settings
dsTitle: 'DNS Settings',
dsDesc: 'Manage DNS-level settings like DNSSEC, CNAME flattening, and nameservers.',
dsDnssec: 'DNSSEC',
dsDnssecDesc: 'Protect DNS queries with digital signatures to prevent DNS spoofing and cache poisoning.',
dsDnssecEnabled: 'DNSSEC Enabled',
dsDnssecDisabled: 'DNSSEC Disabled',
dsDnssecPending: 'DNSSEC Pending',
dsDsRecord: 'DS Record',
dsDsRecordHint: 'Add this DS record at your domain registrar to activate DNSSEC.',
dsCnameFlattening: 'CNAME Flattening',
dsCnameFlatteningDesc: 'Control CNAME flattening behavior. Flattening resolves CNAME records to their final IP address.',
dsFlattenAll: 'Flatten all CNAMEs',
dsFlattenAtRoot: 'Flatten at root only',
dsNameservers: 'Nameservers',
dsNameserversDesc: 'Cloudflare nameservers currently assigned to this zone.',
// Transform Rules
trTitle: 'Transform Rules',
trDesc: 'Manage URL rewrite and HTTP request/response header modification rules.',
trUrlRewrites: 'URL Rewrites',
trHeaderMods: 'Header Modifications',
trNoRules: 'No transform rules configured.',
trInfoCard: 'Transform rules are part of Cloudflare\'s Ruleset Engine. Complex rule creation and editing is available in the Cloudflare Dashboard. You can enable/disable existing rules here.',
trManageInDashboard: 'Manage in Dashboard',
// Origin Rules
orTitle: 'Origin Rules',
orDesc: 'Manage rules that control how requests reach your origin server, including host header rewrites and port overrides.',
orNoRules: 'No origin rules configured.',
orInfoCard: 'Origin rules are part of Cloudflare\'s Ruleset Engine. Complex rule creation and editing is available in the Cloudflare Dashboard. You can enable/disable existing rules here.',
orManageInDashboard: 'Manage in Dashboard',
// Email Routing
erTitle: 'Email Routing',
erDesc: 'Configure email forwarding rules to route emails sent to your domain to destination mailboxes.',
erAddRule: 'Add Rule',
erEditRule: 'Edit Rule',
erDeleteConfirm: 'Delete this email routing rule?',
erSaved: 'Email routing rule saved',
erDeleted: 'Email routing rule deleted',
erNoRules: 'No email routing rules.',
erEnable: 'Email Routing',
erEnableDesc: 'Enable email routing for this zone.',
erMatchType: 'Match Type',
erExactMatch: 'Exact address',
erCatchAll: 'Catch-all',
erFromAddress: 'From Address',
erForwardTo: 'Forward to',
// Custom Pages
cpTitle: 'Custom Error Pages',
cpDesc: 'Customize the pages Cloudflare shows visitors during specific events like WAF challenges, rate limiting, and more.',
cpNoPages: 'No custom pages available.',
cpCustomUrl: 'Custom Page URL',
cpUrlHint: 'Leave empty to revert to default page.',
// Scrape Shield
ssTitle: 'Scrape Shield',
ssDesc: 'Protect your website from content scraping and data leaks.',
ss_email_obfuscation: 'Email Address Obfuscation',
ssEmailObfuscationDesc: 'Hide email addresses on your pages from bots while keeping them visible to humans.',
ss_server_side_exclude: 'Server-Side Excludes',
ssServerSideExcludeDesc: 'Automatically hide specific content from suspicious visitors (content wrapped in <!--sse-->...<!--/sse--> tags).',
ss_hotlink_protection: 'Hotlink Protection',
ssHotlinkProtectionDesc: 'Prevent other sites from linking directly to your images and resources, saving bandwidth.',
// Network
netTitle: 'Network Settings',
netDesc: 'Manage network-level settings like HTTP/3, WebSockets, IPv6, and more.',
net_websockets: 'WebSockets',
netWebsocketsDesc: 'Allow WebSocket connections to your origin server.',
net_ip_geolocation: 'IP Geolocation',
netIpGeoDesc: 'Include the visitor\'s country code in request headers (CF-IPCountry).',
net_ipv6: 'IPv6 Compatibility',
netIpv6Desc: 'Enable IPv6 support for your domain.',
net_pseudo_ipv4: 'Pseudo IPv4',
netPseudoIpv4Desc: 'Add a pseudo IPv4 header for visitors connecting via IPv6.',
net_opportunistic_onion: 'Onion Routing',
netOnionDesc: 'Allow access to your site via the Tor network.',
net_http3: 'HTTP/3 (QUIC)',
netHttp3Desc: 'Enable the HTTP/3 protocol for faster connections.',
net_true_client_ip_header: 'True-Client-IP',
netTrueClientIpDesc: 'Send a True-Client-IP header with the end-user\'s IP to your origin.',
net_max_upload: 'Max Upload Size',
netMaxUploadDesc: 'Maximum allowed HTTP request body size (varies by plan).',
// Security
secTitle: 'Security Settings',
secLevel: 'Security Level',
secLevelDesc: 'Controls how aggressively Cloudflare\'s security features challenge visitors.',
secEssentiallyOff: 'Essentially Off',
secEssentiallyOffDesc: 'Only challenges the most grievous offenders.',
secLow: 'Low',
secLowDesc: 'Challenges only the most threatening visitors.',
secMedium: 'Medium',
secMediumDesc: 'Challenges both moderate and high threat visitors.',
secHigh: 'High',
secHighDesc: 'Challenges all visitors with low, moderate, and high threat scores.',
secUnderAttack: 'I\'m Under Attack!',
secUnderAttackDesc: 'Shows a JS challenge page for every request. Only use during DDoS attacks.',
secUnderAttackWarning: 'Under Attack mode is enabled! All visitors will see a 5-second challenge page.',
secBrowserCheck: 'Browser Integrity Check',
secBrowserCheckDesc: 'Evaluates visitor browser HTTP headers to detect common abuse patterns.',
secChallengeTtl: 'Challenge Passage TTL',
secChallengeTtlDesc: 'How long a visitor who passed a challenge can browse before being challenged again.',
secPrivacyPass: 'Privacy Pass',
secPrivacyPassDesc: 'Reduce the number of CAPTCHAs shown to visitors with Privacy Pass tokens.',
secFirewallRules: 'Firewall Rules',
secFirewallRulesDesc: 'View existing firewall rules. You can enable/disable rules here.',
secNoFirewallRules: 'No firewall rules configured.',
// Workers Routes
wrTitle: 'Workers Routes',
wrDesc: 'Manage routes that direct requests to Cloudflare Workers.',
wrAddRoute: 'Add Route',
wrPattern: 'Route Pattern',
wrPatternPlaceholder: '*example.com/path/*',
wrScript: 'Worker Script',
wrScriptPlaceholder: 'my-worker',
wrScriptHint: 'Leave empty to create a route exclusion',
wrWorkerScript: 'Worker Script',
wrNoRoutes: 'No Workers routes configured.',
wrNoScript: 'No script (route disabled)',
wrDeleteConfirm: 'Are you sure you want to delete this Workers route?',
wrSaved: 'Workers route saved',
wrDeleted: 'Workers route deleted',
wrEditRoute: 'Edit Route',
// Page Rules
prTitle: 'Page Rules',
prDesc: 'Configure specific settings and behaviors for requests matching URL patterns.',
prAddRule: 'Add Rule',
prUrlPattern: 'URL Pattern',
prUrlPlaceholder: '*example.com/path/*',
prActions: 'Actions',
prAddAction: 'Add Action',
prActive: 'Active',
prPaused: 'Paused',
prDeleteConfirm: 'Are you sure you want to delete this page rule?',
prSaved: 'Page rule saved',
prDeleted: 'Page rule deleted',
prNoRules: 'No page rules configured.',
prEditRule: 'Edit Rule',
// Redirect Rules
rlTitle: 'Redirect Rules',
rlDesc: 'Manage URL redirects powered by Cloudflare\'s Ruleset Engine.',
rlManageInDashboard: 'Manage in Dashboard',
rlInfoCard: 'Redirect rules are part of Cloudflare\'s Ruleset Engine. Complex rule creation and editing is available in the Cloudflare Dashboard. You can enable/disable existing rules here.',
rlNoRules: 'No redirect rules configured.',
// Rule CRUD
addRule: 'Add Rule',
editRule: 'Edit Rule',
saveRule: 'Save Rule',
deleteRuleConfirm: 'Are you sure you want to delete this rule?',
ruleSaved: 'Rule saved',
ruleDeleted: 'Rule deleted',
ruleDescription: 'Description',
ruleExpression: 'Expression (Wirefilter)',
ruleExpressionPlaceholder: '(http.host eq "example.com")',
ruleEnabled: 'Enabled',
staticValue: 'Static',
dynamicExpression: 'Dynamic',
rlTargetUrl: 'Target URL',
rlStatusCode: 'Status Code',
rlPreserveQuery: 'Preserve Query String',
orOriginHost: 'Origin Hostname',
orOriginPort: 'Origin Port',
orHostHeader: 'Host Header Override',
trRewritePath: 'Rewrite Path',
trRewriteQuery: 'Rewrite Query',
trHeaderOperation: 'Header Operations',
trHeaderName: 'Header Name',
trHeaderValue: 'Value',
trHeaderOpSet: 'Set',
trHeaderOpAdd: 'Add',
trHeaderOpRemove: 'Remove',
trAddHeaderOp: 'Add Header',
copyToken: 'Copy Token',
tokenCopied: 'Token copied to clipboard',
// Analytics
anTitle: 'Traffic Analytics',
anTotalRequests: 'Total Requests',
anCachedRequests: 'Cached',
anBandwidth: 'Bandwidth',
anCachedBandwidth: 'Cached',
anThreats: 'Threats Blocked',
anVisitors: 'Unique Visitors',
anHttpStatus: 'HTTP Status Distribution',
anCountries: 'Top Countries',
// DNS Analytics
dnsAnalyticsTab: 'DNS Analytics',
dnsAnTitle: 'DNS Analytics',
dnsAnQueryCount: 'Total Queries',
dnsAnNxdomain: 'NXDOMAIN',
dnsAnOfTotal: 'of total',
dnsAnQueryTypes: 'Query Types',
dnsAnResponseCodes: 'Response Codes',
dnsAnNoData: 'No DNS analytics data available for this time range.',
// Bulk Settings
bulkApplySetting: 'Apply Setting',
bulkSettingName: 'Setting',
bulkSettingValue: 'Value',
// Enhanced Monitors
monitorTrafficSpike: 'Traffic Spike',
monitorErrorRate: 'Error Rate',
monitorSslExpiry: 'SSL Expiry',
monitorThreshold: 'Threshold',
monitorTimeWindow: 'Time Window',
monitorStatusType: 'Status Type',
monitorDaysBefore: 'Alert',
monitorDaysBeforeUnit: 'days before expiry',
// Firewall CRUD
fwCreateRule: 'Create Rule',
fwEditRule: 'Edit Rule',
fwExpression: 'Expression',
fwAction: 'Action',
fwPriority: 'Priority',
fwPaused: 'Paused',
fwDeleteConfirm: 'Are you sure you want to delete this firewall rule?',
fwSaved: 'Firewall rule saved',
fwDeleted: 'Firewall rule deleted',
// Bot Fight Mode
botFightMode: 'Bot Fight Mode',
botFightModeDesc: 'Automatically detect and mitigate bot traffic.',
// Accessibility
skipToContent: 'Skip to content',
};