Files
donutbrowser/src/i18n/locales/en.json
T
2026-04-28 23:50:56 +04:00

1557 lines
66 KiB
JSON

{
"common": {
"buttons": {
"save": "Save",
"cancel": "Cancel",
"close": "Close",
"delete": "Delete",
"create": "Create",
"back": "Back",
"retry": "Retry",
"download": "Download",
"confirm": "Confirm",
"apply": "Apply",
"reset": "Reset",
"add": "Add",
"edit": "Edit",
"copy": "Copy",
"clear": "Clear",
"search": "Search",
"select": "Select",
"grant": "Grant",
"start": "Start",
"stop": "Stop",
"enable": "Enable",
"disable": "Disable",
"import": "Import",
"export": "Export",
"refresh": "Refresh",
"loading": "Loading...",
"saveSettings": "Save Settings",
"moreInfo": "More info",
"downloading": "Downloading...",
"minimize": "Minimize"
},
"status": {
"active": "Active",
"inactive": "Inactive",
"running": "Running",
"stopped": "Stopped",
"enabled": "Enabled",
"disabled": "Disabled",
"granted": "Granted",
"notGranted": "Not Granted",
"connected": "Connected",
"disconnected": "Disconnected",
"synced": "Synced",
"syncing": "Syncing",
"pending": "Pending",
"error": "Error"
},
"labels": {
"name": "Name",
"type": "Type",
"status": "Status",
"actions": "Actions",
"description": "Description",
"none": "None",
"default": "Default",
"custom": "Custom",
"optional": "Optional",
"required": "Required",
"unknownProfile": "Unknown",
"mode": "Mode"
},
"time": {
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"remaining": "remaining"
},
"aria": {
"selectAll": "Select all",
"selectRow": "Select row",
"selectProfile": "Select profile"
},
"keys": {
"escape": "Escape"
},
"errors": {
"unknown": "Unknown error occurred"
},
"window": {
"minimize": "Minimize"
},
"commandPalette": {
"title": "Command Palette",
"description": "Search for a command to run..."
},
"noResults": "No results found."
},
"settings": {
"title": "Settings",
"appearance": {
"title": "Appearance",
"theme": "Theme",
"themeDescription": "Choose your preferred theme or follow your system settings. Custom theme changes are applied only when you save.",
"themePreset": "Theme Preset",
"customColors": "Custom Colors",
"selectTheme": "Select theme",
"selectThemePreset": "Select a theme preset",
"yourOwn": "Your Own",
"light": "Light",
"dark": "Dark",
"system": "System"
},
"language": {
"title": "Language",
"description": "Choose your preferred language for the application interface.",
"systemDefault": "System Default",
"selectLanguage": "Select language",
"interface": "Interface Language"
},
"defaultBrowser": {
"title": "Default Browser",
"setAsDefault": "Set as Default Browser",
"alreadyDefault": "Already Default Browser",
"description": "When set as default, Donut Browser will handle web links and allow you to choose which profile to use."
},
"permissions": {
"title": "System Permissions",
"loading": "Loading permissions...",
"description": "These permissions allow browsers launched from Donut Browser to access system resources. Each website will still ask for your permission individually.",
"microphone": "Microphone",
"microphoneDescription": "Access to microphone for browser applications",
"camera": "Camera",
"cameraDescription": "Access to camera for browser applications",
"accessRequested": "{{permission}} access requested"
},
"integrations": {
"title": "Integrations",
"description": "Configure Local API and MCP (Model Context Protocol) for integrating with external tools and AI assistants.",
"openSettings": "Open Integrations Settings"
},
"encryption": {
"title": "Sync Encryption",
"description": "Set a password to enable E2E encrypted sync. If you lose this password, encrypted profiles cannot be recovered.",
"passwordSet": "Active",
"passwordSetDescription": "E2E encryption password is set",
"noPassword": "No password set",
"passwordPlaceholder": "Password (min 8 characters)",
"confirmPlaceholder": "Confirm password",
"setPassword": "Set Password",
"changePassword": "Change Password",
"removePassword": "Remove Password",
"removed": "Encryption password removed",
"passwordSaved": "Encryption password set",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "Password must be at least 8 characters",
"requiresProOrOwner": "Profile encryption is available for Pro users and team owners."
},
"commercial": {
"title": "Commercial License",
"trialActive": "Trial: {{days}} days, {{hours}} hours remaining",
"trialActiveDescription": "Commercial use is free during the trial period",
"trialExpired": "Trial expired",
"trialExpiredDescription": "Personal use remains free. Commercial use requires a license."
},
"advanced": {
"title": "Advanced",
"clearCache": "Clear All Version Cache",
"clearCacheDescription": "Clear all cached browser version data and refresh all browser versions from their sources. This will force a fresh download of version information for all browsers.",
"clearCacheFailed": "Failed to clear cache"
},
"disableAutoUpdates": "Disable App Auto Updates",
"disableAutoUpdatesDescription": "Prevent the app from automatically checking and installing Donut Browser updates. Browser updates are not affected."
},
"header": {
"searchPlaceholder": "Search profiles...",
"clearSearch": "Clear search",
"moreActions": "More actions",
"createProfile": "Create a new profile",
"menu": {
"settings": "Settings",
"proxies": "Proxies & VPNs",
"groups": "Groups",
"syncService": "Account",
"integrations": "Integrations",
"importProfile": "Import Profile",
"extensions": "Extensions"
}
},
"profiles": {
"title": "Profiles",
"empty": "No profiles yet",
"emptyDescription": "Create your first browser profile to get started.",
"createFirst": "Create Profile",
"noResults": "No profiles found",
"noResultsDescription": "No profiles match your search criteria.",
"table": {
"name": "Name",
"browser": "Browser",
"status": "Status",
"actions": "Actions",
"note": "Note",
"group": "Group",
"proxy": "Proxy / VPN",
"lastLaunch": "Last Launch",
"empty": "No profiles found."
},
"actions": {
"launch": "Launch",
"stop": "Stop",
"edit": "Edit",
"delete": "Delete",
"copyCookies": "Copy Cookies",
"configure": "Configure",
"clone": "Clone Profile",
"viewNetwork": "View Network",
"syncSettings": "Sync Settings",
"assignToGroup": "Assign to Group",
"changeFingerprint": "Change Fingerprint",
"copyCookiesToProfile": "Copy Cookies to Profile",
"launchHook": "Launch Hook URL"
},
"synchronizer": {
"launchWithSync": "Launch with Synchronizer",
"stopLeader": "Stop this profile and all its followers",
"stopFollower": "Following actions of {{leaderName}}",
"desyncedTooltip": "Synchronization failed at {{url}}",
"paidFeature": "Synchronizer is a paid feature",
"wayfernOnly": "Only Wayfern profiles can be synchronized",
"selectFollowers": "Select Follower Profiles",
"selectFollowersDesc": "Choose profiles that will mirror the actions of the leader profile. Only stopped Wayfern profiles can be selected.",
"leader": "Leader",
"follower": "Follower",
"startSession": "Start Sync Session",
"noFollowers": "Select at least one follower profile",
"flakyBadge": "FLAKY",
"flakyTooltip": "This profile has a different screen resolution than the leader. Page layouts may differ, causing clicks and interactions to hit the wrong elements."
},
"ephemeral": "Ephemeral",
"ephemeralDescription": "The browser is forced to write profile data into memory instead of disk. Data is deleted when the browser is closed.",
"ephemeralBadge": "Ephemeral",
"ephemeralAlpha": "Alpha",
"bulkDelete": {
"title": "Delete Selected Profiles",
"description": "This action cannot be undone. This will permanently delete {{count}} profile(s) and all associated data.",
"confirmButton": "Delete {{count}} Profile(s)"
},
"note": {
"empty": "No Note",
"placeholder": "Add a note..."
},
"aria": {
"profileInfo": "Profile info"
},
"delete": {
"title": "Delete Profile",
"description": "This action cannot be undone. This will permanently delete the profile \"{{profileName}}\" and all its associated data.",
"confirmButton": "Delete Profile"
},
"actionBar": {
"assignToGroup": "Assign to Group",
"assignProxy": "Assign Proxy",
"assignExtensionGroup": "Assign Extension Group",
"copyCookies": "Copy Cookies"
}
},
"createProfile": {
"title": "Create New Profile",
"configureTitle": "Create New {{browser}} Profile",
"antiDetect": {
"title": "Anti-Detect Browser",
"description": "Choose a browser with anti-detection capabilities",
"chromium": "Wayfern",
"firefox": "Camoufox",
"badge": "Anti-Detect Browser"
},
"regular": {
"title": "Regular Browsers",
"description": "Choose from supported regular browsers",
"badge": "Regular Browser"
},
"profileName": "Profile Name",
"profileNamePlaceholder": "Enter profile name",
"proxy": {
"title": "Proxy / VPN",
"addProxy": "Add Proxy",
"noProxy": "No proxy / VPN",
"noProxiesAvailable": "No proxies or VPNs available. Add one to route this profile's traffic.",
"search": "Search proxies or VPNs...",
"notFound": "No proxies or VPNs found.",
"searchWithCountries": "Search proxies, VPNs, or countries..."
},
"launchHook": {
"label": "Launch Hook URL",
"placeholder": "https://example.com/hooks/profile-launch"
},
"version": {
"fetching": "Fetching available versions...",
"fetchError": "Failed to fetch browser versions. Please check your internet connection and try again.",
"needsDownload": "{{browser}} version ({{version}}) needs to be downloaded",
"available": "{{browser}} version ({{version}}) is available",
"downloading": "Downloading {{browser}} version ({{version}})...",
"latestNeedsDownload": "Latest version ({{version}}) needs to be downloaded",
"latestAvailable": "Latest version ({{version}}) is available",
"latestDownloading": "Downloading version ({{version}})..."
},
"chromiumLabel": "Chromium",
"chromiumSubtitle": "Powered by Wayfern",
"firefoxLabel": "Firefox",
"firefoxSubtitle": "Powered by Camoufox",
"camoufoxWarning": "Firefox (Camoufox) is maintained by a third-party organization. For production use, please use Chromium.",
"platformUnavailable": "{{browser}} is not available on your platform yet."
},
"deleteDialog": {
"title": "Delete Profile",
"description": "Are you sure you want to delete this profile? This action cannot be undone.",
"profilesTitle": "Delete Profiles",
"profilesDescription": "Are you sure you want to delete the selected profiles? This action cannot be undone.",
"profilesToDelete": "Profiles to be deleted:"
},
"proxies": {
"title": "Proxies",
"management": {
"description": "Manage your proxy and VPN configurations for reuse across profiles",
"tabProxies": "Proxies",
"tabVpns": "VPNs",
"create": "Create",
"loading": "Loading proxies...",
"noneCreated": "No proxies created yet. Create your first proxy using the button above.",
"usage": "Usage",
"syncCol": "Sync",
"syncCannotDisable": "Sync cannot be disabled while this proxy is used by synced profiles",
"enableSync": "Enable sync",
"disableSync": "Disable sync",
"editProxy": "Edit proxy",
"deleteProxy": "Delete proxy",
"cannotDelete_one": "Cannot delete: in use by {{count}} profile",
"cannotDelete_other": "Cannot delete: in use by {{count}} profiles",
"syncEnabled": "Sync enabled",
"syncDisabled": "Sync disabled",
"updateSyncFailed": "Failed to update sync",
"deleteSuccess": "Proxy deleted successfully",
"deleteFailed": "Failed to delete proxy",
"deleteTitle": "Delete Proxy",
"deleteDescription": "This action cannot be undone. This will permanently delete the proxy \"{{name}}\".",
"title": "Proxies & VPNs"
},
"add": "Add Proxy",
"edit": "Edit Proxy",
"delete": "Delete Proxy",
"import": "Import",
"export": "Export",
"noProxies": "No proxies configured",
"noProxiesDescription": "Add a proxy to route browser traffic through it.",
"form": {
"name": "Name",
"namePlaceholder": "Enter proxy name",
"type": "Type",
"host": "Host",
"hostPlaceholder": "proxy.example.com",
"port": "Port",
"portPlaceholder": "8080",
"username": "Username",
"usernamePlaceholder": "Optional",
"password": "Password",
"passwordPlaceholder": "Optional",
"cipher": "Cipher",
"cipherPlaceholder": "aes-256-gcm",
"nameRequired": "Proxy name is required",
"hostPortRequired": "Host and port are required",
"ssCipherRequired": "Cipher and password are required for Shadowsocks",
"selectType": "Select proxy type",
"saveFailed": "Failed to save proxy: {{error}}"
},
"types": {
"http": "HTTP",
"https": "HTTPS",
"socks4": "SOCKS4",
"socks5": "SOCKS5",
"ss": "Shadowsocks"
},
"tabs": {
"regular": "Regular",
"dynamic": "Dynamic"
},
"dynamic": {
"description": "Dynamic proxy fetches connection details from a URL each time a profile is launched.",
"url": "Proxy URL",
"urlPlaceholder": "https://api.example.com/proxy",
"urlRequired": "Dynamic proxy URL is required",
"format": "Response Format",
"formatJson": "JSON",
"formatText": "Text",
"formatJsonHint": "Expects JSON: {\"ip\": \"...\", \"port\": ..., \"username\": \"...\", \"password\": \"...\"}",
"formatTextHint": "Expects text like: host:port:username:password or protocol://user:pass@host:port",
"testUrl": "Test URL",
"testing": "Testing...",
"testSuccess": "Proxy working: {{host}}:{{port}}",
"testFailed": "Proxy test failed: {{error}}",
"fetchFailed": "Failed to fetch dynamic proxy: {{error}}"
},
"check": {
"checking": "Checking proxy...",
"valid": "Proxy is valid",
"invalid": "Proxy is invalid",
"lastChecked": "Last checked: {{time}}"
},
"sync": {
"enabled": "Sync Enabled",
"disabled": "Sync Disabled"
},
"exportDialog": {
"title": "Export Proxies",
"description": "Export your proxy configurations to a file",
"format": "Export Format",
"json": "JSON",
"txt": "TXT (URL format)",
"preview": "Preview",
"noProxies": "No proxies to export",
"downloaded": "Downloaded {{filename}}",
"failed": "Failed to export proxies",
"copied": "Copied"
},
"importDialog": {
"title": "Import Proxies",
"descDropzone": "Import proxies from a JSON or TXT file",
"descPreview": "Review the proxies to import",
"descAmbiguous": "Some proxies have ambiguous formats. Please select the correct format.",
"descResult": "Import completed",
"dropzonePrompt": "Drop a proxy config file",
"dropzoneFormats": "(.json, .txt)",
"pasteHint": "Paste from clipboard with {{modKey}}+V",
"wrongFileType": "Please drop a .json or .txt file",
"fileReadError": "Failed to read file",
"fileProcessError": "Failed to process file",
"noValidProxies": "No valid proxies found in the file",
"namePrefix": "Name Prefix",
"namePrefixDefault": "Imported",
"namePrefixHint": "Proxies will be named \"{{prefix}} Proxy 1\", \"{{prefix}} Proxy 2\", etc.",
"proxiesToImport": "Proxies to import ({{count}})",
"invalidCount": "({{count}} invalid)",
"ambiguousIntro": "The following proxies have an ambiguous format. Please select the correct interpretation for each.",
"imported": "Imported:",
"skippedDuplicates": "Skipped (duplicates):",
"errors": "Errors",
"importButton": "Import {{count}} Proxies",
"continueButton": "Continue",
"doneButton": "Done",
"failed": "Failed to import proxies"
}
},
"groups": {
"title": "Groups",
"management": "Group Management",
"add": "Add Group",
"edit": "Edit Group",
"delete": "Delete Group",
"defaultGroup": "Default",
"defaultGroupNoGroup": "Default (No Group)",
"moveToDefault": "Move profiles to Default group",
"noGroupDescription": "Profiles without a group will appear in the \"Default\" group.",
"assignSuccess": "Successfully assigned {{count}} profile(s) to {{group}}",
"noGroups": "No groups created",
"noGroupsDescription": "Create a group to organize your profiles.",
"form": {
"name": "Name",
"namePlaceholder": "Enter group name"
},
"profileCount": "{{count}} profile",
"profileCount_plural": "{{count}} profiles",
"assignProfiles": "Assign Profiles",
"sync": {
"enabled": "Sync Enabled",
"disabled": "Sync Disabled"
},
"createTitle": "Create New Group",
"createDescription": "Create a new group to organize your browser profiles.",
"editTitle": "Edit Group",
"editDescription": "Update the name of your group.",
"createSuccess": "Group created successfully",
"createFailed": "Failed to create group",
"updateSuccess": "Group updated successfully",
"updateFailed": "Failed to update group",
"deleteTitle": "Delete Group",
"deleteDescription": "This action cannot be undone. This will permanently delete the group.",
"deleteSuccess": "Group deleted successfully",
"deleteFailed": "Failed to delete group",
"loadingProfiles": "Loading associated profiles...",
"associatedProfiles": "Associated Profiles ({{count}})",
"whatToDoWithProfiles": "What should happen to these profiles?",
"moveToDefaultOption": "Move profiles to Default group",
"deleteAlongWithGroup": "Delete profiles along with the group",
"noAssociatedProfiles": "This group has no associated profiles.",
"deleteGroup": "Delete Group",
"deleteGroupAndProfiles": "Delete Group & Profiles",
"loadProfilesFailed": "Failed to load profiles",
"unknownGroup": "Unknown Group",
"profileGroupsAriaLabel": "Profile groups"
},
"sync": {
"mode": {
"title": "Profile Sync",
"description": "Manage sync settings for \"{{name}}\"",
"disabled": "Disabled",
"regular": "Regular Sync",
"encrypted": "E2E Encrypted Sync",
"disabledDescription": "No sync for this profile",
"regularDescription": "Fast sync, unencrypted",
"encryptedDescription": "Encrypted before upload. Server never sees plaintext data.",
"noPasswordWarning": "E2E password not set. Please set a password in Settings.",
"passwordRequired": "E2E password not set. Please set a password in Settings first.",
"enabledToast": "Sync enabled",
"disabledToast": "Sync disabled",
"syncQueued": "Sync queued",
"syncNow": "Sync Now",
"lastSynced": "Last Synced",
"notConfigured": "Sync service not configured.",
"configureService": "Configure Sync Service"
},
"title": "Account",
"config": {
"serverUrlRequired": "Please enter a server URL",
"connectionSuccess": "Connection successful!",
"serverError": "Server responded with an error",
"connectFailed": "Failed to connect to server",
"settingsSaved": "Sync settings saved",
"saveFailed": "Failed to save settings",
"disconnected": "Sync disconnected",
"disconnectFailed": "Failed to disconnect"
},
"serverUrl": "Server URL",
"serverUrlPlaceholder": "https://sync.example.com",
"token": "Sync Token",
"tokenPlaceholder": "Enter your sync token",
"status": {
"connected": "Connected",
"disconnected": "Disconnected",
"syncing": "Syncing...",
"error": "Sync Error"
},
"description": "Connect to a sync server to synchronize your profiles, proxies, and groups across devices.",
"cloud": {
"tabLabel": "Cloud",
"selfHostedTabLabel": "Self-Hosted",
"email": "Email",
"deviceLinkInstructions": "Click \"Login\" to open the login page in your browser. Once signed in there, copy the code shown and paste it below.",
"openLogin": "Login",
"linkCodeLabel": "Login code",
"linkCodePlaceholder": "Paste the code from the website",
"verifyAndLogin": "Verify & Log In",
"loggingIn": "Logging in...",
"connected": "Connected",
"plan": "Plan",
"profiles": "Profiles",
"profileUsage": "{{used}} / {{limit}}",
"manageAccount": "Manage Account",
"logout": "Log Out",
"logoutConfirm": "Are you sure you want to log out? Cloud sync will stop.",
"loginSuccess": "Successfully logged in!",
"logoutSuccess": "Successfully logged out."
},
"team": {
"title": "Team",
"name": "Team Name",
"role": "Role",
"roleOwner": "Owner",
"roleAdmin": "Admin",
"roleMember": "Member",
"manageOnWeb": "Manage team on the web dashboard",
"profileLocked": "In use by {{email}}",
"profileLockedShort": "In use",
"cannotLaunchLocked": "Cannot launch — profile is in use by {{email}}",
"createdBy": "Created by {{email}}"
},
"disabled": "Disabled",
"toast": {
"profileSynced": "Profile '{{name}}' synced successfully",
"profileSyncFailed": "Failed to sync profile '{{name}}'",
"profileSyncFailedWithError": "Failed to sync profile '{{name}}': {{error}}"
}
},
"integrations": {
"title": "Integrations",
"api": {
"title": "Local API",
"description": "Enable the local API server for external integrations.",
"enabled": "API Enabled",
"disabled": "API Disabled",
"port": "Port",
"token": "API Token",
"copyToken": "Copy Token",
"regenerateToken": "Regenerate Token"
},
"mcp": {
"title": "MCP Server",
"description": "Enable the MCP (Model Context Protocol) server for AI assistant integrations.",
"enabled": "MCP Enabled",
"disabled": "MCP Disabled",
"port": "Port",
"token": "Authentication Token",
"tokenCopied": "Token copied",
"url": "MCP Server URL",
"urlCopied": "URL copied",
"claudeDesktopTitle": "Claude Desktop",
"claudeDesktopHint": "Configures claude_desktop_config.json automatically",
"addToClaudeDesktop": "Add to Claude Desktop",
"removeFromClaudeDesktop": "Remove from Claude Desktop",
"addedToClaudeDesktop": "Added to Claude Desktop. Restart Claude Desktop and enable the extension in Settings.",
"removedFromClaudeDesktop": "Removed from Claude Desktop config. Please restart Claude Desktop.",
"claudeCodeTitle": "Claude Code",
"addToClaudeCode": "Add to Claude Code",
"removeFromClaudeCode": "Remove from Claude Code",
"addedToClaudeCode": "Added to Claude Code",
"removedFromClaudeCode": "Removed from Claude Code",
"config": "MCP Configuration",
"copyConfig": "Copy Configuration"
},
"tabApi": "Local API",
"tabMcp": "MCP (AI Assistants)",
"apiEnableLabel": "Enable Local API Server",
"apiEnableDescription": "Allow managing profiles, groups, and proxies via REST API.",
"apiPortLabel": "Port",
"apiTokenLabel": "Authentication Token",
"apiTokenHint": "Include in Authorization header: Bearer {{tokenSlot}}",
"apiInvalidPort": "Invalid port",
"apiInvalidPortDescription": "Port must be between 1 and 65535",
"apiPortInUse": "Port {{port}} is already in use",
"apiFallbackPort": "Server started on fallback port {{port}}",
"apiStarted": "API server started on port {{port}}",
"apiRunning": "API server running on port {{port}}",
"apiStopped": "API server stopped",
"apiToggleFailed": "Failed to toggle API server",
"apiStartFailed": "Failed to start API server",
"apiUnknownError": "Unknown error",
"tokenCopied": "Token copied",
"mcpEnableLabel": "Enable MCP Server (Model Context Protocol)",
"mcpEnableDescription": "Allow AI assistants like Claude Desktop to control browsers.",
"mcpAcceptTermsFirst": "(Accept Wayfern terms in Settings first)",
"mcpStarted": "MCP server started on port {{port}}",
"mcpStopped": "MCP server stopped",
"mcpToggleFailed": "Failed to toggle MCP server"
},
"import": {
"title": "Import Profile",
"description": "Import an existing browser profile from your system.",
"selectProfile": "Select a profile to import",
"noProfiles": "No profiles detected",
"noProfilesDescription": "No browser profiles were detected on your system.",
"importing": "Importing profile...",
"success": "Profile imported successfully",
"error": "Failed to import profile"
},
"config": {
"camoufox": {
"title": "Camoufox Configuration",
"fingerprint": {
"title": "Fingerprint",
"randomize": "Randomize on Launch",
"randomizeDescription": "Generate a new fingerprint each time the browser is launched.",
"osCpuPlaceholder": "e.g., Intel Mac OS X 10.15",
"webglRendererPlaceholder": "e.g., llvmpipe, or similar"
},
"os": {
"title": "Operating System",
"description": "The operating system to emulate for fingerprint generation.",
"windows": "Windows",
"macos": "macOS",
"linux": "Linux"
},
"screen": {
"title": "Screen Size",
"minWidth": "Min Width",
"maxWidth": "Max Width",
"minHeight": "Min Height",
"maxHeight": "Max Height"
},
"geoip": {
"title": "GeoIP",
"auto": "Automatic (based on proxy)",
"manual": "Manual",
"disabled": "Disabled"
},
"blocking": {
"title": "Blocking",
"images": "Block Images",
"webrtc": "Block WebRTC",
"webgl": "Block WebGL"
}
},
"wayfern": {
"title": "Wayfern Configuration",
"fingerprint": {
"title": "Fingerprint",
"randomize": "Randomize on Launch",
"randomizeDescription": "Generate a new fingerprint each time the browser is launched.",
"platformPlaceholder": "e.g., Win32, MacIntel, Linux x86_64",
"timezoneOffsetPlaceholder": "e.g., 300 for EST (UTC-5)",
"webglRendererPlaceholder": "e.g., Intel(R) HD Graphics"
},
"os": {
"title": "Operating System",
"description": "The operating system to emulate for fingerprint generation.",
"windows": "Windows",
"macos": "macOS",
"linux": "Linux",
"android": "Android",
"ios": "iOS"
},
"screen": {
"title": "Screen Size",
"minWidth": "Min Width",
"maxWidth": "Max Width",
"minHeight": "Min Height",
"maxHeight": "Max Height"
},
"blocking": {
"title": "Blocking",
"webrtc": "Block WebRTC",
"webgl": "Block WebGL"
}
}
},
"cookies": {
"title": "Cookies",
"copy": {
"title": "Copy Cookies",
"description": "Select cookies to copy to other profiles.",
"selectSource": "Select Source Profile",
"selectTarget": "Select Target Profiles",
"selectCookies": "Select Cookies",
"allDomains": "All Domains",
"selectedCount": "{{count}} cookie selected",
"selectedCount_plural": "{{count}} cookies selected",
"dialogDescription_one": "Copy cookies from a source profile to {{count}} selected profile.",
"dialogDescription_other": "Copy cookies from a source profile to {{count}} selected profiles.",
"sourceProfile": "Source Profile",
"sourcePlaceholder": "Select a profile to copy cookies from",
"running": "(running)",
"targetProfiles": "Target Profiles ({{count}})",
"noOtherTargets": "No other Wayfern/Camoufox profiles selected",
"selectSourceFirst": "Select a source profile first",
"selectionStatus": "({{selected}} of {{total}} selected)",
"searchPlaceholder": "Search domains or cookies...",
"noMatching": "No matching cookies found",
"noFound": "No cookies found",
"replaceNote": "Existing cookies with the same name and domain will be replaced. Other cookies will be kept.",
"cannotCopyRunningOne": "Cannot copy cookies: {{names}} is still running",
"cannotCopyRunningMany": "Cannot copy cookies: {{names}} are still running",
"someErrors": "Some errors occurred: {{errors}}",
"successMessage": "Successfully copied {{copied}} cookies ({{replaced}} replaced)",
"failedMessage": "Failed to copy cookies: {{error}}",
"copyButton_one": "Copy {{count}} Cookie",
"copyButton_other": "Copy {{count}} Cookies",
"copyButtonEmpty": "Copy Cookies"
},
"success": "Cookies copied successfully",
"error": "Failed to copy cookies",
"management": {
"title": "Cookie Management",
"menuItem": "Cookie Management",
"tabImport": "Import",
"tabExport": "Export",
"importDescription": "Import cookies from a Netscape or JSON format file.",
"dropPrompt": "Click to choose a cookie file",
"fileFormats": "(.txt, .cookies, or .json)",
"cookiesFound": "{{count}} cookies found",
"importedSuccess": "Successfully imported {{imported}} cookies ({{replaced}} replaced)",
"linesSkipped": "{{count}} line(s) skipped",
"fileReadError": "Failed to read file",
"loadFailed": "Failed to load cookies: {{error}}",
"cookiesLabel": "Cookies",
"selectionStatus": "({{selected}} of {{total}} selected)",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"noCookies": "No cookies found in this profile",
"doneButton": "Done",
"importButton": "Import",
"exportButton": "Export",
"backButton": "Back"
},
"import": {
"title": "Import Cookies",
"description": "Import cookies from a Netscape or JSON format file.",
"selectFile": "Choose File",
"preview": "{{count}} cookies found",
"success": "Successfully imported {{imported}} cookies ({{replaced}} replaced)",
"error": "Failed to import cookies",
"proFeature": "Cookie import is a Pro feature"
},
"export": {
"title": "Export Cookies",
"description": "Export cookies from this profile.",
"formatLabel": "Format",
"netscape": "Netscape TXT",
"json": "JSON",
"success": "Cookies exported successfully",
"error": "Failed to export cookies"
}
},
"toasts": {
"success": {
"profileCreated": "Profile created successfully",
"profileDeleted": "Profile deleted successfully",
"profileUpdated": "Profile updated successfully",
"profileLaunched": "Profile launched successfully",
"proxyCreated": "Proxy created successfully",
"proxyDeleted": "Proxy deleted successfully",
"proxyUpdated": "Proxy updated successfully",
"groupCreated": "Group created successfully",
"groupDeleted": "Group deleted successfully",
"groupUpdated": "Group updated successfully",
"settingsSaved": "Settings saved successfully",
"copied": "Copied to clipboard",
"permissionRequested": "{{permission}} access requested",
"downloadComplete": "{{browser}} {{version}} downloaded successfully!",
"importSuccess": "Successfully imported {{count}} items",
"exportSuccess": "Successfully exported {{count}} items",
"syncSuccess": "Sync completed successfully",
"profileSynced": "Profile '{{name}}' synced successfully",
"cacheCleared": "Cache cleared successfully"
},
"error": {
"profileCreateFailed": "Failed to create profile",
"profileDeleteFailed": "Failed to delete profile",
"profileUpdateFailed": "Failed to update profile",
"profileLaunchFailed": "Failed to launch profile",
"proxyCreateFailed": "Failed to create proxy",
"proxyDeleteFailed": "Failed to delete proxy",
"proxyUpdateFailed": "Failed to update proxy",
"groupCreateFailed": "Failed to create group",
"groupDeleteFailed": "Failed to delete group",
"groupUpdateFailed": "Failed to update group",
"settingsSaveFailed": "Failed to save settings",
"copyFailed": "Failed to copy to clipboard",
"downloadFailed": "Failed to download {{browser}}",
"importFailed": "Failed to import",
"exportFailed": "Failed to export",
"syncFailed": "Sync failed",
"profileSyncFailed": "Failed to sync profile '{{name}}'",
"cacheClearFailed": "Failed to clear cache",
"unknown": "An unknown error occurred"
},
"loading": {
"downloading": "Downloading {{browser}} {{version}}",
"extracting": "Extracting {{browser}} {{version}}",
"verifying": "Verifying {{browser}} {{version}}",
"syncing": "Syncing...",
"syncingProfile": "Syncing profile '{{name}}'...",
"syncingProfileWithProgress": "{{count}} files ({{size}})",
"updatingVersions": "Updating browser versions..."
}
},
"errors": {
"required": "This field is required",
"invalidUrl": "Please enter a valid URL",
"invalidPort": "Please enter a valid port number (1-65535)",
"invalidEmail": "Please enter a valid email address",
"minLength": "Must be at least {{min}} characters",
"maxLength": "Must be at most {{max}} characters",
"networkError": "Network error. Please check your connection.",
"serverError": "Server error. Please try again later.",
"unknownError": "An unknown error occurred. Please try again.",
"noProfilesForUrl": "No profiles available. Please create a profile first before opening URLs.",
"updateCamoufoxConfigFailed": "Failed to update camoufox config: {{error}}",
"updateWayfernConfigFailed": "Failed to update wayfern config: {{error}}",
"createProfileFailed": "Failed to create profile: {{error}}",
"launchBrowserFailed": "Failed to launch browser: {{error}}",
"cannotDeleteRunningProfile": "Cannot delete profile while browser is running. Please stop the browser first.",
"deleteProfileFailed": "Failed to delete profile: {{error}}",
"renameProfileFailed": "Failed to rename profile: {{error}}",
"killBrowserFailed": "Failed to kill browser: {{error}}",
"deleteSelectedProfilesFailed": "Failed to delete selected profiles: {{error}}",
"cookieCopyUnsupportedBrowser": "Cookie copy only works with Wayfern and Camoufox profiles",
"updateSyncSettingsFailed": "Failed to update sync settings",
"cloneProfileFailed": "Failed to clone profile: {{error}}",
"loadSupportedBrowsersFailed": "Failed to load supported browsers",
"setupExtensionListenersFailed": "Failed to setup extension event listeners: {{error}}",
"loadGroupsFailed": "Failed to load groups: {{error}}",
"setupGroupListenersFailed": "Failed to setup group event listeners: {{error}}",
"loadProfilesFailed": "Failed to load profiles: {{error}}",
"setupProfileListenersFailed": "Failed to setup profile event listeners: {{error}}",
"loadProxiesFailed": "Failed to load proxies: {{error}}",
"setupProxyListenersFailed": "Failed to setup proxy event listeners: {{error}}",
"loadVpnConfigsFailed": "Failed to load VPN configs: {{error}}",
"setupVpnListenersFailed": "Failed to setup VPN event listeners: {{error}}"
},
"browser": {
"camoufox": "Camoufox",
"wayfern": "Wayfern"
},
"fingerprint": {
"crossOsWarning": "Spoofing fingerprint for a different operating system is less reliable because it is impossible to perfectly mimic all underlying components. Use with caution.",
"crossOsLimitations": "Cross-OS fingerprinting has limitations. System-level APIs may still reflect your actual operating system, and some features may have degraded performance.",
"osLabel": "Operating System Fingerprint",
"selectOSPlaceholder": "Select operating system",
"generateRandomOnLaunch": "Generate random fingerprint on every launch",
"generateRandomDescription": "When enabled, a new fingerprint will be generated each time the browser is launched.",
"generateRandomDescriptionAuto": "When enabled, a new fingerprint will be generated each time the browser is launched. The generated fingerprint is saved for reference.",
"autoLocationDescription": "Automatically configure location information based on proxy configuration or your connection if no proxy provided",
"editingDisabledRunning": "Fingerprint editing is disabled because the profile is currently running. Stop the profile to make changes.",
"editingDisabledRandomized": "Fingerprint editing is disabled because random fingerprint generation is enabled. Disable the option above to manually edit the fingerprint configuration.",
"advancedWarning": "Warning: Only edit these parameters if you know what you're doing. Incorrect values may break websites, make them detect you, and lead to hard-to-debug bugs.",
"basicWarning": "Warning: Only edit these parameters if you know what you're doing.",
"automatic": "Automatic",
"manual": "Manual",
"blockingOptions": "Blocking Options",
"blockImages": "Block Images",
"blockWebRTC": "Block WebRTC",
"blockWebGL": "Block WebGL",
"navigatorProperties": "Navigator Properties",
"userAgent": "User Agent",
"userAgentAndPlatform": "User Agent & Platform",
"platform": "Platform",
"platformVersion": "Platform Version",
"appVersion": "App Version",
"osCpu": "OS CPU",
"hardwareConcurrency": "Hardware Concurrency",
"maxTouchPoints": "Max Touch Points",
"doNotTrack": "Do Not Track",
"selectDntPlaceholder": "Select DNT value",
"dntAllowed": "0 (tracking allowed)",
"dntNotAllowed": "1 (tracking not allowed)",
"dntUnspecified": "unspecified",
"language": "Language",
"primaryLanguage": "Primary Language (navigator.language)",
"languages": "Languages (JSON array)",
"languageAndLocale": "Language & Locale",
"screenProperties": "Screen Properties",
"screenWidth": "Screen Width",
"screenHeight": "Screen Height",
"availableWidth": "Available Width",
"availableHeight": "Available Height",
"colorDepth": "Color Depth",
"pixelDepth": "Pixel Depth",
"devicePixelRatio": "Device Pixel Ratio",
"windowProperties": "Window Properties",
"outerWidth": "Outer Width",
"outerHeight": "Outer Height",
"innerWidth": "Inner Width",
"innerHeight": "Inner Height",
"screenX": "Screen X",
"screenY": "Screen Y",
"geolocation": "Geolocation",
"timezoneAndGeolocation": "Timezone & Geolocation",
"timezoneGeolocationDescription": "These values override the browser's timezone and geolocation APIs.",
"latitude": "Latitude",
"longitude": "Longitude",
"timezone": "Timezone",
"timezoneIana": "Timezone (IANA)",
"timezoneOffset": "Offset (minutes from UTC)",
"accuracy": "Accuracy (meters)",
"locale": "Locale",
"region": "Region",
"script": "Script",
"webglProperties": "WebGL Properties",
"webglVendor": "WebGL Vendor",
"webglRenderer": "WebGL Renderer",
"webglParameters": "WebGL Parameters",
"webglParametersJson": "WebGL Parameters (JSON)",
"webgl2Parameters": "WebGL2 Parameters",
"webglShaderPrecisionFormats": "WebGL Shader Precision Formats",
"webgl2ShaderPrecisionFormats": "WebGL2 Shader Precision Formats",
"canvasFingerprint": "Canvas Fingerprint",
"canvasNoiseSeed": "Canvas Noise Seed",
"canvasNoiseSeedDescription": "This seed is used to generate a consistent but unique canvas fingerprint. Each profile should have a different seed.",
"fonts": "Fonts",
"fontsJson": "Fonts (JSON array)",
"battery": "Battery",
"charging": "Charging",
"chargingTime": "Charging Time",
"dischargingTime": "Discharging Time",
"batteryLevel": "Level (0-1)",
"screenResolution": "Screen Resolution",
"maxWidth": "Max Width",
"maxHeight": "Max Height",
"minWidth": "Min Width",
"minHeight": "Min Height",
"hardwareProperties": "Hardware Properties",
"deviceMemory": "Device Memory (GB)",
"audioProperties": "Audio Properties",
"sampleRate": "Sample Rate",
"maxChannelCount": "Max Channel Count",
"vendorInfo": "Vendor Info",
"vendor": "Vendor",
"vendorSub": "Vendor Sub",
"productSub": "Product Sub",
"brand": "Brand",
"brandVersion": "Brand Version",
"proFeature": "This is a Pro feature",
"generateFingerprint": "Generate Fingerprint",
"refreshFingerprint": "Refresh Fingerprint",
"canvasNoiseSeedPlaceholder": "Enter a seed string for canvas fingerprint",
"addFontsPlaceholder": "Add fonts...",
"enterAsJson": "Enter {{title}} as JSON"
},
"warnings": {
"windowResizeTitle": "Custom Window Dimensions",
"windowResizeDescription": "Changing browser window dimensions may increase the chance of website detection that browser information is spoofed.",
"windowResizeCamoufoxTitle": "Viewport Locked by Camoufox",
"windowResizeCamoufoxDescription": "Camoufox locks the viewport to the spoofed screen dimensions for anti-fingerprinting. Resizing the window may cause cropped or grey areas. This is expected behavior.",
"dontShowAgain": "Don't show this again",
"continue": "Continue",
"cancel": "Cancel"
},
"syncAll": {
"title": "Enable Sync for Existing Items",
"description": "You have items that are not being synced. Would you like to enable sync for all of them?",
"itemsList": "Items not synced: {{items}}",
"proxies": "{{count}} proxy",
"proxies_plural": "{{count}} proxies",
"groups": "{{count}} group",
"groups_plural": "{{count}} groups",
"vpns": "{{count}} VPN",
"vpns_plural": "{{count}} VPNs",
"enableAll": "Enable All",
"skip": "Skip",
"success": "Sync enabled for all items"
},
"crossOs": {
"viewOnly": "This profile was created on {{os}} and is not supported on this system",
"cannotLaunch": "This profile was created on {{os}} and is not supported on this system",
"cannotModify": "Cannot modify sync settings for a cross-OS profile"
},
"profileInfo": {
"title": "Profile Details",
"tabs": {
"info": "Info",
"settings": "Settings"
},
"fields": {
"profileId": "Profile ID",
"browser": "Browser",
"releaseType": "Release Type",
"proxyVpn": "Proxy / VPN",
"launchHook": "Launch Hook",
"group": "Group",
"tags": "Tags",
"note": "Note",
"syncStatus": "Sync Status",
"lastLaunched": "Last Launched",
"hostOs": "Host OS",
"ephemeral": "Ephemeral",
"extensionGroup": "Extension Group"
},
"values": {
"none": "None",
"never": "Never",
"copied": "Copied!",
"yes": "Yes"
},
"network": {
"bypassRules": "Proxy Bypass Rules",
"bypassRulesTitle": "Proxy Bypass Rules",
"bypassRulesDescription": "Requests matching these rules will connect directly, bypassing the proxy.",
"addRule": "Add Rule",
"rulePlaceholder": "e.g. example.com, 192.168.1.*, .*\\.local",
"noRules": "No bypass rules configured.",
"ruleTypes": "Supports hostnames, IP addresses, and regex patterns."
},
"launchHook": {
"title": "Launch Hook URL",
"label": "Launch Hook URL",
"description": "Donut Browser will POST to this URL whenever the profile is launched.",
"placeholder": "https://example.com/hooks/profile-launch"
},
"actions": {
"manageCookies": "Manage Cookies",
"assignExtensionGroup": "Assign Extension Group"
},
"clone": {
"title": "Clone Profile",
"description": "Enter a name for the cloned profile",
"namePlaceholder": "Profile name",
"button": "Clone"
}
},
"extensions": {
"title": "Extensions",
"description": "Manage browser extensions and extension groups for your profiles.",
"upload": "Upload",
"delete": "Delete",
"extensionsTab": "Extensions",
"groupsTab": "Groups",
"managedNotice": "Extensions managed here will replace any manually installed extensions in profiles when launched.",
"proRequired": "Extension management is a Pro feature",
"empty": "No extensions uploaded yet.",
"noGroups": "No extension groups created yet.",
"createGroup": "Create Group",
"addToGroup": "Add extension...",
"removeFromGroup": "Remove from group",
"deleteGroup": "Delete group",
"extensionGroup": "Extension Group",
"compatibility": {
"label": "Compatibility",
"chromium": "Chromium",
"firefox": "Firefox",
"both": "Chromium & Firefox"
},
"selectedFile": "Selected file",
"namePlaceholder": "Extension name",
"groupNamePlaceholder": "Group name",
"uploadSuccess": "Extension uploaded successfully",
"deleteSuccess": "Extension deleted successfully",
"groupCreateSuccess": "Extension group created successfully",
"groupUpdateSuccess": "Extension group updated successfully",
"groupDeleteSuccess": "Extension group deleted successfully",
"deleteConfirmTitle": "Delete Extension",
"deleteConfirmDescription": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"deleteGroupConfirmTitle": "Delete Extension Group",
"deleteGroupConfirmDescription": "Are you sure you want to delete the group \"{{name}}\"? This action cannot be undone.",
"invalidFileType": "Invalid file type. Please upload a .crx, .xpi, or .zip file.",
"readError": "Failed to read the extension file.",
"assignTitle": "Assign Extension Group",
"assignDescription": "Assign {{count}} selected profile(s) to an extension group.",
"noGroup": "None (No Extension Group)",
"assignSuccess": "Extension group assigned successfully",
"editExtension": "Edit extension",
"updateSuccess": "Extension updated successfully",
"reupload": "Re-upload",
"version": "Version",
"author": "Author",
"homepage": "Homepage",
"editGroup": "Edit Group",
"editGroupDescription": "Update the group name and manage which extensions are included.",
"groupExtensions": "Extensions in this group",
"noExtensionsInGroup": "No extensions added yet",
"editExtensionDescription": "Update extension name, view metadata, or re-upload the extension file.",
"metadata": "Metadata",
"noMetadata": "No metadata available from manifest.",
"selectFile": "Choose File",
"syncEnabled": "Sync enabled",
"syncDisabled": "Sync disabled",
"syncEnableTooltip": "Enable sync",
"syncDisableTooltip": "Disable sync"
},
"pro": {
"badge": "PRO",
"fingerprintLocked": "Fingerprint editing is a Pro feature",
"cookieCopyLocked": "Cookie copying is a Pro feature",
"cookieImportLocked": "Cookie import is a Pro feature",
"cookieExportLocked": "Cookie export is a Pro feature",
"cookieManagementLocked": "Cookie management is a Pro feature"
},
"dnsBlocklist": {
"title": "DNS Blocklist",
"none": "None",
"light": "Light",
"normal": "Normal",
"pro": "Pro",
"proPlus": "Pro++",
"ultimate": "Ultimate",
"settingsDescription": "DNS blocklists block ads, trackers, and malware domains at the proxy level. Lists are automatically refreshed every 12 hours.",
"manageLists": "Manage DNS Blocklists",
"refreshAll": "Refresh All Lists",
"refreshFailed": "Failed to refresh DNS blocklists",
"domains": "domains",
"fresh": "Fresh",
"stale": "Stale",
"notCached": "Not cached"
},
"vpns": {
"form": {
"titleEdit": "Edit VPN",
"titleCreate": "Create WireGuard VPN",
"descEdit": "Update the name of your VPN configuration.",
"descCreate": "Enter your WireGuard interface and peer details.",
"name": "Name",
"namePlaceholder": "e.g. Home WireGuard",
"privateKey": "Private Key",
"privateKeyPlaceholder": "Base64-encoded private key",
"address": "Address",
"addressPlaceholder": "e.g. 10.0.0.2/24",
"dnsOptional": "DNS (optional)",
"dnsPlaceholder": "e.g. 1.1.1.1",
"mtuOptional": "MTU (optional)",
"mtuPlaceholder": "e.g. 1420",
"peerPublicKey": "Peer Public Key",
"peerPublicKeyPlaceholder": "Base64-encoded peer public key",
"peerEndpoint": "Peer Endpoint",
"peerEndpointPlaceholder": "e.g. vpn.example.com:51820",
"allowedIps": "Allowed IPs",
"allowedIpsPlaceholder": "e.g. 0.0.0.0/0, ::/0",
"keepaliveOptional": "Persistent Keepalive (optional)",
"keepalivePlaceholder": "e.g. 25",
"presharedKeyOptional": "Preshared Key (optional)",
"presharedKeyPlaceholder": "Base64-encoded preshared key",
"updateButton": "Update VPN",
"createButton": "Create VPN",
"nameRequired": "VPN name is required",
"privateKeyRequired": "Private key is required",
"addressRequired": "Address is required",
"peerPublicKeyRequired": "Peer public key is required",
"peerEndpointRequired": "Peer endpoint is required",
"updated": "VPN updated successfully",
"created": "WireGuard VPN created successfully",
"updateFailed": "Failed to update VPN: {{error}}",
"createFailed": "Failed to create VPN: {{error}}"
},
"import": {
"title": "Import VPN Config",
"descDropzone": "Import a WireGuard (.conf) configuration file",
"descPreview": "Review the VPN configuration to import",
"descResult": "VPN import completed",
"dropzonePrompt": "Drop a WireGuard .conf file here or click to browse",
"pasteHint": "Paste from clipboard with {{modKey}}+V",
"invalidContent": "Content does not appear to be a valid VPN configuration",
"fileReadError": "Failed to read file",
"wrongFileType": "Please drop a WireGuard .conf file",
"configurationLabel": "{{type}} Configuration",
"endpointLabel": "Endpoint: {{endpoint}}",
"vpnNameLabel": "VPN Name",
"vpnNamePlaceholder": "My VPN",
"configPreview": "Config Preview",
"importedSuccess": "VPN Imported Successfully",
"importFailed": "Import Failed",
"importButton": "Import VPN",
"doneButton": "Done",
"failedGeneric": "Failed to import VPN config",
"defaultName": "{{type}} VPN"
},
"management": {
"loading": "Loading VPNs...",
"noneCreated": "No VPN configs created yet. Import or create one using the buttons above.",
"editVpn": "Edit VPN",
"deleteVpn": "Delete VPN",
"cannotDelete_one": "Cannot delete: in use by {{count}} profile",
"cannotDelete_other": "Cannot delete: in use by {{count}} profiles",
"syncCannotDisable": "Sync cannot be disabled while this VPN is used by synced profiles",
"deleteSuccess": "VPN deleted successfully",
"deleteFailed": "Failed to delete VPN",
"deleteTitle": "Delete VPN",
"deleteDescription": "This action cannot be undone. This will permanently delete the VPN \"{{name}}\"."
}
},
"importProfile": {
"title": "Import Browser Profile",
"autoDetect": "Auto-Detect",
"manualImport": "Manual Import",
"detectedProfilesTitle": "Detected Browser Profiles",
"scanning": "Scanning for browser profiles...",
"noneFound": "No browser profiles found on your system.",
"noneFoundHint": "Try the manual import option if you have profiles in custom locations.",
"selectProfile": "Select Profile:",
"selectProfilePlaceholder": "Choose a detected profile",
"pathLabel": "Path:",
"browserLabel": "Browser:",
"newProfileName": "New Profile Name:",
"newProfileNamePlaceholder": "Enter a name for the imported profile",
"manualTitle": "Manual Profile Import",
"browserType": "Browser Type:",
"loadingBrowsers": "Loading browsers...",
"selectBrowserType": "Select browser type",
"profileFolderPath": "Profile Folder Path:",
"profileFolderPlaceholder": "Enter the full path to the profile folder",
"browseFolderTitle": "Browse for folder",
"examplePaths": "Example paths:",
"selectFolderTitle": "Select Browser Profile Folder",
"folderDialogFailed": "Failed to open folder dialog",
"detectFailed": "Failed to detect existing browser profiles",
"fillFields": "Please fill in all fields",
"selectAndName": "Please select a profile and provide a name",
"profileNotFound": "Selected profile not found",
"importedSuccess": "Successfully imported profile \"{{name}}\"",
"notInstalled": "{{browser}} is not installed. Please download {{browser}} first from the main window, then try importing again.",
"importFailed": "Failed to import profile: {{error}}",
"importedAsPrefix": "This profile will be imported as a",
"importedAsSuffix": "profile.",
"proxyOptional": "Proxy (Optional)",
"noProxy": "No proxy",
"nextButton": "Next",
"importButton": "Import"
},
"syncTooltips": {
"syncing": "Syncing...",
"syncedAt": "Synced {{time}}",
"synced": "Synced",
"waiting": "Waiting to sync",
"errorWith": "Sync error: {{error}}",
"error": "Sync error",
"notSynced": "Not synced"
},
"groupManagement": {
"description": "Manage your profile groups",
"createGroup": "Create Group",
"noGroups": "No groups created yet. Create your first group using the button above.",
"loading": "Loading groups...",
"profileCount_one": "{{count}} profile",
"profileCount_other": "{{count}} profiles",
"groupsLabel": "Groups",
"profilesCol": "Profiles",
"syncCannotDisable": "Sync cannot be disabled while this group is used by synced profiles",
"editGroupTooltip": "Edit group",
"deleteGroupTooltip": "Delete group",
"loadFailed": "Failed to load groups"
},
"proxyAssignment": {
"title": "Assign Proxy / VPN",
"description_one": "Assign a proxy or VPN to {{count}} selected profile.",
"description_other": "Assign a proxy or VPN to {{count}} selected profiles.",
"selectLabel": "Proxy / VPN",
"placeholder": "Select a proxy or VPN",
"noProxy": "No proxy / VPN",
"searchPlaceholder": "Search proxies or VPNs...",
"notFound": "No proxies or VPNs found.",
"assignButton": "Assign",
"success": "Successfully assigned proxy/VPN to {{count}} profile(s)",
"failed": "Failed to assign proxy/VPN",
"selectedProfilesLabel": "Selected Profiles:",
"assignProxyVpnLabel": "Assign Proxy / VPN:",
"noneOption": "None",
"noValidProfiles": "No valid profiles selected.",
"vpnGroupHeading": "VPNs",
"failedFallback": "Failed to assign proxy/VPN to profiles"
},
"groupAssignment": {
"title": "Assign Group",
"description_one": "Assign a group to {{count}} selected profile.",
"description_other": "Assign a group to {{count}} selected profiles.",
"selectLabel": "Group",
"placeholder": "Select a group",
"noGroup": "No Group (Default)",
"assignButton": "Assign",
"success": "Successfully assigned group to {{count}} profile(s)",
"failed": "Failed to assign group",
"selectedProfilesLabel": "Selected Profiles:",
"assignGroupLabel": "Assign to Group:",
"noValidProfiles": "No valid profiles selected.",
"failedFallback": "Failed to assign group to profiles"
},
"profileSelector": {
"title": "Select Profile",
"description": "Choose a profile to launch with this URL",
"searchPlaceholder": "Search profiles...",
"noProfiles": "No profiles available",
"noResults": "No profiles match your search",
"selectButton": "Select",
"launching": "Launching...",
"chooseProfileTitle": "Choose Profile",
"openingUrl": "Opening URL:",
"urlCopied": "URL copied to clipboard!",
"selectProfileLabel": "Select Profile:",
"noneAvailableShort": "No profiles available. Please create a profile first.",
"noneAvailableLong": "Close this dialog and create a profile from the main window to get started.",
"chooseAProfile": "Choose a profile",
"badgeProxy": "Proxy",
"badgeRunning": "Running",
"badgeUnavailable": "Unavailable",
"openButton": "Open"
},
"locationProxy": {
"title": "Quick Location Proxy",
"description": "Choose a country to route this profile through. A proxy will be created automatically.",
"country": "Country",
"selectCountry": "Select a country",
"searchCountry": "Search country...",
"noCountriesFound": "No countries found.",
"apply": "Apply",
"creating": "Creating proxy...",
"success": "Location proxy applied",
"failed": "Failed to apply location proxy",
"titleCreate": "Create Location Proxy",
"descriptionCreate": "Create a geo-targeted proxy with a 24-hour sticky session",
"countryLabel": "Country (required)",
"regionLabel": "Region (optional)",
"cityLabel": "City (optional)",
"ispLabel": "ISP (optional)",
"nameLabel": "Name",
"namePlaceholder": "Proxy name",
"loadingCountries": "Loading countries...",
"selectCountryPh": "Select country",
"searchCountries": "Search countries...",
"loadFailed": "Failed to load countries",
"selectCountryFirst": "Select a country first",
"loadingRegions": "Loading regions...",
"noRegions": "No regions available",
"selectRegion": "Select region",
"searchRegions": "Search regions...",
"loadingCities": "Loading cities...",
"noCities": "No cities available",
"selectCity": "Select city",
"searchCities": "Search cities...",
"loadingIsps": "Loading ISPs...",
"noIsps": "No ISPs available",
"selectIsp": "Select ISP",
"searchIsps": "Search ISPs...",
"createSuccess": "Location proxy created",
"createFailed": "Failed to create location proxy",
"creatingButton": "Creating...",
"createButton": "Create"
},
"launchOnLogin": {
"title": "Enable Launch on Login?",
"description": "Running in the background helps keep your proxies and browsers alive.",
"declineButton": "Don't Ask Again",
"declining": "...",
"enableButton": "Enable",
"enableSuccess": "Launch on login enabled",
"enableFailed": "Failed to enable launch on login",
"declineFailed": "Failed to save preference",
"tryAgain": "Please try again"
},
"wayfernTerms": {
"title": "Wayfern Terms and Conditions",
"description": "Before using Donut Browser, you must read and agree to Wayfern's Terms and Conditions.",
"reviewLabel": "Please review the Terms and Conditions at:",
"agreeNotice": "By clicking \"I Accept\", you agree to be bound by these terms.",
"acceptButton": "I Accept",
"acceptSuccess": "Terms accepted successfully",
"acceptFailed": "Failed to accept terms",
"tryAgain": "Please try again"
},
"commercialTrial": {
"title": "Commercial Trial Expired",
"description": "Your 2-week commercial trial period has ended.",
"body": "If you are using Donut Browser for business purposes, you need to purchase a commercial license to continue. You can still use it for personal use for free.",
"understandButton": "I Understand",
"failed": "Failed to save acknowledgment",
"tryAgain": "Please try again"
},
"permissionDialog": {
"titleMicrophone": "Microphone Access Required",
"titleCamera": "Camera Access Required",
"descMicrophone": "Donut Browser needs access to your microphone to enable microphone functionality in web browsers. Each website that wants to use your microphone will still ask for your permission individually.",
"descCamera": "Donut Browser needs access to your camera to enable camera functionality in web browsers. Each website that wants to use your camera will still ask for your permission individually.",
"grantedMicrophone": "Permission granted! Browsers launched from Donut Browser can now access your microphone.",
"grantedCamera": "Permission granted! Browsers launched from Donut Browser can now access your camera.",
"notGrantedMicrophone": "Permission not granted. Click the button below to request access to your microphone.",
"notGrantedCamera": "Permission not granted. Click the button below to request access to your camera.",
"doneButton": "Done",
"cancelButton": "Cancel",
"grantAccessButton": "Grant Access",
"requestSuccessMicrophone": "Microphone Access permission requested",
"requestSuccessCamera": "Camera Access permission requested",
"requestFailed": "Failed to request permission"
},
"traffic": {
"title": "Traffic Details",
"bandwidthOverTime": "Bandwidth Over Time",
"timePeriodPlaceholder": "Time period",
"last1m": "Last 1 min",
"last5m": "Last 5 min",
"last30m": "Last 30 min",
"last1h": "Last 1 hour",
"last2h": "Last 2 hours",
"last4h": "Last 4 hours",
"last1d": "Last 1 day",
"last7d": "Last 7 days",
"last30d": "Last 30 days",
"allTime": "All time",
"allTimeShort": "all time",
"totalSuffix": "total",
"sentLabel": "Sent ({{period}})",
"receivedLabel": "Received ({{period}})",
"requestsLabel": "Requests ({{period}})",
"allTimeTraffic": "All-time traffic:",
"allTimeRequests": "All-time requests:",
"proxyDisclaimer": "Note: If you are using a proxy, VPN, or similar service, your provider may calculate traffic differently due to encryption overhead and protocol differences.",
"topByTraffic": "Top Domains by Traffic ({{period}})",
"topByRequests": "Top Domains by Requests ({{period}})",
"columnDomain": "Domain",
"columnRequests": "Requests",
"columnSent": "Sent",
"columnReceived": "Received",
"columnTotal": "Total Traffic",
"uniqueIps": "Unique IPs ({{count}})",
"noData": "No traffic data available for this profile.",
"noDataHint": "Traffic data will appear after you launch the profile.",
"sentLegend": "Sent",
"receivedLegend": "Received",
"tooltipSent": "↑ Sent: ",
"tooltipReceived": "↓ Received: "
},
"camoufoxDialog": {
"titleView": "View Fingerprint Settings - {{name}} ({{browser}})",
"titleConfigure": "Configure Fingerprint Settings - {{name}} ({{browser}})",
"invalidFingerprint": "Invalid fingerprint configuration",
"invalidFingerprintDescription": "The fingerprint configuration contains invalid JSON. Please check your advanced settings.",
"saveFailed": "Failed to save configuration",
"unknownError": "Unknown error occurred"
},
"proxyCheck": {
"unknownLocation": "Unknown",
"locationToast": "Your proxy location is:",
"failed": "Proxy check failed: {{error}}",
"tooltipChecking": "Checking proxy...",
"tooltipIp": "IP: {{ip}}",
"tooltipChecked": "Checked {{time}}",
"tooltipFailed": "Failed {{time}}",
"tooltipFailedTitle": "Proxy check failed",
"tooltipDefault": "Check proxy validity"
},
"vpnCheck": {
"valid": "VPN \"{{name}}\" configuration is valid",
"invalid": "VPN \"{{name}}\" configuration is invalid",
"failed": "VPN check failed: {{error}}",
"tooltipChecking": "Checking VPN config...",
"tooltipValid": "Configuration valid",
"tooltipInvalid": "Configuration invalid",
"tooltipChecked": "Checked {{time}}",
"tooltipDefault": "Check VPN config validity"
},
"profileTable": {
"syncTooltipDisabled": "Sync disabled",
"syncTooltipSyncing": "Syncing...",
"syncTooltipSyncedAt": "Synced {{time}}",
"syncTooltipSynced": "Synced",
"syncTooltipWaiting": "Waiting to sync",
"syncTooltipErrorWith": "Sync error: {{error}}",
"syncTooltipError": "Sync error",
"syncTooltipNotSynced": "Not synced",
"noTags": "No tags",
"syncTooltipCloseToSync": "Close the profile to sync",
"syncTooltipDisabledWithLast": "Sync disabled, last sync {{time}}"
},
"releaseTypeSelector": {
"noReleaseTypes": "No release types available.",
"placeholder": "Select release type...",
"stable": "Stable",
"nightly": "Nightly",
"downloaded": "Downloaded",
"downloadBrowser": "Download Browser",
"downloading": "Downloading..."
},
"dataTableActionBar": {
"selected": "{{count}} selected",
"clearSelection": "Clear selection"
},
"appUpdate": {
"toast": {
"updateFailed": "Failed to update Donut Browser",
"restartFailed": "Failed to restart"
}
},
"browserDownload": {
"toast": {
"fetchVersionsFailed": "Failed to fetch {{browser}} versions",
"foundNewVersions": "Found {{count}} new {{browser}} versions!",
"totalAvailableVersions": "Total available: {{count}} versions",
"downloadFailed": "Failed to download {{browser}} {{version}}",
"calculating": "calculating...",
"extractionFailed": "{{browser}} {{version}}: extraction failed",
"extractionFailedDescription": "The corrupt file was deleted. It will be re-downloaded on next attempt."
}
},
"versionUpdater": {
"toast": {
"alreadyAvailable": "{{browser}} {{version}} already available",
"updatingProfiles": "Updating profile configurations...",
"updateCompleted": "{{browser}} update completed",
"singleProfileUpdated": "Profile \"{{name}}\" has been updated to version {{version}}. You can now launch your browsers with the latest version.",
"multipleProfilesUpdated": "{{count}} profiles have been updated to version {{version}}. You can now launch your browsers with the latest version.",
"versionAvailable": "Version {{version}} is now available. Running profiles will use the new version when restarted.",
"autoUpdateFailed": "Failed to auto-update {{browser}}",
"updateWithErrors": "Update completed with some errors",
"updateWithErrorsDescription": "{{newVersions}} new versions found, {{failedUpdates}} browsers failed to update",
"updateSuccess": "Browser versions updated successfully",
"updateSuccessDescription": "Found {{newVersions}} new versions across {{successfulUpdates}} browsers. Auto-downloads will start shortly.",
"upToDate": "No new browser versions found",
"upToDateDescription": "All browser versions are up to date",
"updateAllFailed": "Failed to update browser versions"
}
}
}