mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-07-18 10:27:29 +02:00
2025 lines
86 KiB
JSON
2025 lines
86 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",
|
||
"saving": "Saving…",
|
||
"saved": "Saved",
|
||
"copied": "Copied",
|
||
"learnMore": "Learn more"
|
||
},
|
||
"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",
|
||
"never": "Never"
|
||
},
|
||
"time": {
|
||
"days": "days",
|
||
"hours": "hours",
|
||
"minutes": "minutes",
|
||
"seconds": "seconds",
|
||
"remaining": "remaining"
|
||
},
|
||
"aria": {
|
||
"selectAll": "Select all",
|
||
"selectRow": "Select row",
|
||
"selectProfile": "Select profile",
|
||
"copy": "Copy to clipboard",
|
||
"copied": "Copied",
|
||
"showToken": "Show token",
|
||
"hideToken": "Hide token"
|
||
},
|
||
"keys": {
|
||
"escape": "Escape"
|
||
},
|
||
"errors": {
|
||
"unknown": "Unknown error occurred"
|
||
},
|
||
"window": {
|
||
"minimize": "Minimize",
|
||
"maximize": "Maximize",
|
||
"restore": "Restore"
|
||
},
|
||
"commandPalette": {
|
||
"title": "Command Palette",
|
||
"description": "Search for a command to run..."
|
||
},
|
||
"noResults": "No results found.",
|
||
"srOnly": {
|
||
"copy": "Copy",
|
||
"copied": "Copied"
|
||
},
|
||
"placeholders": {
|
||
"example": "e.g., {{value}}"
|
||
}
|
||
},
|
||
"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.",
|
||
"validatePassword": "Validate",
|
||
"validateDialog": {
|
||
"title": "Validate Encryption Password",
|
||
"description": "Enter your encryption password to verify it matches the one stored on this device.",
|
||
"submit": "Validate",
|
||
"matchToast": "Password is correct",
|
||
"mismatchToast": "Password does not match"
|
||
}
|
||
},
|
||
"commercial": {
|
||
"title": "Commercial License",
|
||
"trialActive": "Trial: {{days}} days, {{hours}} hours remaining",
|
||
"trialActiveDescription": "Commercial use is free during the trial. When it ends, all features keep working — personal use stays free, only commercial use will require a license.",
|
||
"trialExpired": "Trial expired",
|
||
"trialExpiredDescription": "Personal use remains free. Commercial use requires a license.",
|
||
"subscriptionActive": "Subscribed — {{plan}} plan",
|
||
"subscriptionActiveDescription": "Your Donut Browser subscription is active. Commercial use is licensed for the duration of your plan."
|
||
},
|
||
"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",
|
||
"copyLogs": "Copy logs",
|
||
"openLogDir": "Open log folder",
|
||
"copyLogsSuccess": "Logs copied to clipboard",
|
||
"copyLogsDescription": "Bundles the most recent log files (up to 5 MB) into your clipboard for sharing in bug reports."
|
||
},
|
||
"disableAutoUpdates": "Disable App Auto Updates",
|
||
"disableAutoUpdatesDescription": "Prevent the app from automatically checking and installing Donut Browser updates. Browser updates are not affected.",
|
||
"keepDecryptedProfilesInRam": "Keep Decrypted Profiles In RAM",
|
||
"keepDecryptedProfilesInRamDescription": "Preserve the decrypted in-RAM copy of password-protected profiles between launches for faster startup. The on-disk copy stays encrypted regardless."
|
||
},
|
||
"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"
|
||
},
|
||
"newProfile": "New",
|
||
"donutLogo": "Donut Browser logo",
|
||
"scrollGroupsLeft": "Scroll groups left",
|
||
"scrollGroupsRight": "Scroll groups right"
|
||
},
|
||
"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.",
|
||
"notSelected": "Not Selected",
|
||
"ext": "EXT",
|
||
"dns": "DNS",
|
||
"extDefault": "Default",
|
||
"dnsLevel": "DNS blocklist: {{level}}",
|
||
"extSearch": "Search groups…",
|
||
"extEmpty": "No extension groups",
|
||
"cantModifyRunning": "Can't modify running profile",
|
||
"cantModifyLaunching": "Can't modify profile while launching",
|
||
"cantModifyStopping": "Can't modify profile while stopping",
|
||
"cantModifyUpdating": "Can't modify profile while browser is updating"
|
||
},
|
||
"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",
|
||
"setPassword": "Set Password",
|
||
"changePassword": "Change Password",
|
||
"removePassword": "Remove Password"
|
||
},
|
||
"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. Note that your operating system can swap parts of memory to disk under load, so traces of the session may still be recoverable.",
|
||
"ephemeralBadge": "Ephemeral",
|
||
"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",
|
||
"runSelected": "Run selected",
|
||
"stopSelected": "Stop selected",
|
||
"proRequired": "Pro plan required for bulk run/stop"
|
||
},
|
||
"passwordProtectedBadge": "Password Protected",
|
||
"launchHook": {
|
||
"placeholder": "https://example.com/track-launch"
|
||
},
|
||
"bulkRun": {
|
||
"confirmTitle": "Run {{count}} profiles?",
|
||
"confirmDescription": "Launching {{count}} profiles at once can use a lot of system resources. Continue?",
|
||
"confirmButton": "Run {{count}}",
|
||
"noneToRun": "No selected profiles to run."
|
||
},
|
||
"bulkStop": {
|
||
"confirmTitle": "Stop {{count}} profiles?",
|
||
"confirmDescription": "Stop {{count}} running profiles?",
|
||
"confirmButton": "Stop {{count}}",
|
||
"noneToStop": "No selected profiles to stop."
|
||
},
|
||
"sort": {
|
||
"nameAsc": "Name (A–Z)",
|
||
"nameDesc": "Name (Z–A)",
|
||
"newest": "Newest first",
|
||
"oldest": "Oldest first"
|
||
}
|
||
},
|
||
"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",
|
||
"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}})...",
|
||
"upgradeAvailable": "A newer version ({{version}}) of {{browser}} is available."
|
||
},
|
||
"chromiumLabel": "Chromium",
|
||
"chromiumSubtitle": "Powered by Wayfern",
|
||
"platformUnavailable": "{{browser}} is not available on your platform yet.",
|
||
"passwordProtect": {
|
||
"label": "Password protect this profile",
|
||
"description": "Encrypts the on-disk profile data. Required to launch."
|
||
},
|
||
"downloadingSubtitle": "Downloading…",
|
||
"browsersDownloading": "Browsers are still downloading. Profile creation will be available once a download finishes."
|
||
},
|
||
"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}}\".",
|
||
"newProxy": "New proxy",
|
||
"newVpn": "New VPN",
|
||
"protocolCol": "Protocol",
|
||
"hostPort": "Host : port",
|
||
"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"
|
||
},
|
||
"bulkDelete": {
|
||
"proxiesTitle": "Delete Selected Proxies",
|
||
"proxiesDescription": "This action cannot be undone. This will permanently delete {{count}} proxy(s): {{names}}.",
|
||
"vpnsTitle": "Delete Selected VPNs",
|
||
"vpnsDescription": "This action cannot be undone. This will permanently delete {{count}} VPN(s): {{names}}.",
|
||
"confirmButton": "Delete {{count}}"
|
||
}
|
||
},
|
||
"groups": {
|
||
"title": "Groups",
|
||
"management": "Group Management",
|
||
"add": "Add Group",
|
||
"edit": "Edit Group",
|
||
"delete": "Delete Group",
|
||
"moveToDefault": "Remove profiles from group",
|
||
"noGroupDescription": "Profiles without a group appear in the \"All\" filter.",
|
||
"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?",
|
||
"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",
|
||
"loading": "Loading groups...",
|
||
"all": "All",
|
||
"noGroup": "No group",
|
||
"pageTitle": "Profile groups",
|
||
"pageDescription": "Profile groups let you organize browsers by client, environment, or use case. Sync groups across devices to share them."
|
||
},
|
||
"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",
|
||
"signInTitle": "Sign in",
|
||
"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}}"
|
||
},
|
||
"enabledToast": "Sync enabled",
|
||
"disabledToast": "Sync disabled",
|
||
"enabledDescription": "Profile sync has been enabled",
|
||
"disabledDescription": "Profile sync has been disabled"
|
||
},
|
||
"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",
|
||
"config": "MCP Configuration",
|
||
"copyConfig": "Copy Configuration",
|
||
"clientsLabel": "Clients",
|
||
"connected": "Connected",
|
||
"add": "Add",
|
||
"addedToClient": "Added to {{name}}",
|
||
"removedFromClient": "Removed from {{name}}",
|
||
"removeAriaLabel": "Remove from {{name}}",
|
||
"category": {
|
||
"desktopApp": "Desktop app",
|
||
"cli": "CLI",
|
||
"editor": "Editor",
|
||
"editorExt": "Editor ext"
|
||
}
|
||
},
|
||
"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",
|
||
"openSettings": "Open Integrations Settings",
|
||
"apiRunningOn": "Running on",
|
||
"apiExampleRequest": "Example request"
|
||
},
|
||
"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": {
|
||
"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"
|
||
}
|
||
},
|
||
"shared": {
|
||
"browserBehavior": "Browser Behavior",
|
||
"allowAddonsOpenTabs": "Allow browser addons to open new tabs automatically"
|
||
}
|
||
},
|
||
"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 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..."
|
||
},
|
||
"progress": {
|
||
"remaining": "{{time}} remaining",
|
||
"filesProgress": "{{completed}}/{{total}} files",
|
||
"filesFailed": "{{count}} file(s) failed"
|
||
}
|
||
},
|
||
"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.",
|
||
"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 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}}",
|
||
"themeNotFound": "Tokyo Night theme not found",
|
||
"setProfilePasswordFailed": "Failed to set profile password: {{error}}"
|
||
},
|
||
"browser": {
|
||
"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.",
|
||
"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?",
|
||
"enableAll": "Enable All",
|
||
"skip": "Skip",
|
||
"success": "Sync enabled for all items",
|
||
"labels": {
|
||
"proxies": "Proxies",
|
||
"vpns": "VPNs",
|
||
"groups": "Groups",
|
||
"extensions": "Extensions",
|
||
"extensionGroups": "Extension Groups"
|
||
}
|
||
},
|
||
"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",
|
||
"totalSessions": "Total sessions",
|
||
"syncMode": "Sync mode",
|
||
"proxy": "PROXY",
|
||
"vpn": "VPN",
|
||
"cookieCount": "Cookies stored",
|
||
"localDataTransfer": "Local data transfer",
|
||
"created": "Created",
|
||
"windowColor": "Window color"
|
||
},
|
||
"values": {
|
||
"none": "None",
|
||
"never": "Never",
|
||
"copied": "Copied!",
|
||
"yes": "Yes",
|
||
"activeNow": "Active now",
|
||
"direct": "Direct",
|
||
"loading": "Loading…",
|
||
"unknown": "Unknown"
|
||
},
|
||
"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.",
|
||
"vpnLabel": "VPN: {{name}}",
|
||
"proxyLabel": "Proxy: {{name}}"
|
||
},
|
||
"launchHook": {
|
||
"title": "Launch Hook URL",
|
||
"label": "Launch Hook URL",
|
||
"description": "Donut Browser will send a GET request to this URL whenever the profile is launched.",
|
||
"placeholder": "https://example.com/hooks/profile-launch",
|
||
"invalidUrlHint": "Enter a valid http:// or https:// URL."
|
||
},
|
||
"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"
|
||
},
|
||
"duplicate": "Duplicate",
|
||
"breadcrumbRoot": "Profile",
|
||
"openDialog": "Open settings",
|
||
"sections": {
|
||
"overview": "Overview",
|
||
"fingerprint": "Fingerprint",
|
||
"network": "Network",
|
||
"cookies": "Cookies",
|
||
"extensions": "Extensions",
|
||
"sync": "Sync",
|
||
"automation": "Automation",
|
||
"security": "Security",
|
||
"delete": "Delete profile",
|
||
"activity": "Activity",
|
||
"launchHook": "Launch hook"
|
||
},
|
||
"sectionDesc": {
|
||
"fingerprint": "Configure how this profile appears to fingerprinting scripts.",
|
||
"network": "Manage the proxy or VPN this profile uses to reach the internet.",
|
||
"cookies": "Import, copy, or wipe cookies for this profile.",
|
||
"extensions": "Choose which extensions load when this profile launches.",
|
||
"sync": "Configure how this profile is mirrored to your other devices.",
|
||
"automation": "Run a command or script every time this profile launches.",
|
||
"security": "Encrypt the profile data with a password.",
|
||
"launchHook": "Send a GET request to this URL every time the profile launches."
|
||
},
|
||
"badges": {
|
||
"locked": "LOCKED",
|
||
"active": "ACTIVE"
|
||
},
|
||
"cookies": {
|
||
"runningNotice": "Cookies can't be read while the browser is running. Close this profile first.",
|
||
"domainsHeader": "Domains ({{count}})"
|
||
},
|
||
"security": {
|
||
"protected": "This profile is encrypted with a password.",
|
||
"unprotected": "This profile is not encrypted. Set a password to encrypt its data at rest.",
|
||
"cannotWhileRunning": "Stop the profile before changing its password."
|
||
},
|
||
"fingerprint": {
|
||
"notSupported": "Fingerprint editing is only available for Wayfern profiles.",
|
||
"lockedTitle": "Viewing & editing the fingerprint is a Pro feature",
|
||
"lockedDescription": "Your device information is protected in every profile. Viewing and editing a profile's fingerprint requires an active paid plan."
|
||
},
|
||
"syncStatusValue": {
|
||
"waiting": "Waiting",
|
||
"syncing": "Syncing",
|
||
"synced": "Synced",
|
||
"error": "Error"
|
||
}
|
||
},
|
||
"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",
|
||
"newGroup": "New group",
|
||
"addToGroup": "Add extension...",
|
||
"removeFromGroup": "Remove from group",
|
||
"deleteGroup": "Delete group",
|
||
"extensionGroup": "Extension Group",
|
||
"compatibility": {
|
||
"label": "Compatibility",
|
||
"chromium": "Chromium"
|
||
},
|
||
"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",
|
||
"loadGroupsFailed": "Failed to load extension groups",
|
||
"assignGroupFailed": "Failed to assign extension group",
|
||
"bulkDelete": {
|
||
"extensionsTitle": "Delete extensions",
|
||
"extensionsDescription": "Delete {{count}} extensions? {{names}}",
|
||
"groupsTitle": "Delete extension groups",
|
||
"groupsDescription": "Delete {{count}} extension groups? {{names}}",
|
||
"confirmButton": "Delete"
|
||
}
|
||
},
|
||
"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}}",
|
||
"proxyOptional": "Proxy (Optional)",
|
||
"noProxy": "No proxy",
|
||
"nextButton": "Next",
|
||
"importButton": "Import",
|
||
"importedAs": "This profile will be imported as a {{browser}} profile."
|
||
},
|
||
"syncTooltips": {
|
||
"syncing": "Syncing...",
|
||
"syncedAt": "Synced {{time}}",
|
||
"synced": "Synced",
|
||
"waiting": "Waiting to sync",
|
||
"errorWith": "Sync error: {{error}}",
|
||
"error": "Sync error",
|
||
"notSynced": "Not synced",
|
||
"enable": "Enable sync",
|
||
"disable": "Disable sync",
|
||
"lockedInUse": "Sync is locked while in use by a synced profile",
|
||
"bulkToggle": "Toggle sync"
|
||
},
|
||
"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",
|
||
"bulkDelete": {
|
||
"title": "Delete groups",
|
||
"description": "Are you sure you want to delete {{count}} groups? {{names}}. Profiles will be moved to Default.",
|
||
"description_one": "Are you sure you want to delete {{count}} group? {{names}}. Profiles will be moved to Default.",
|
||
"confirmButton": "Delete 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"
|
||
},
|
||
"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",
|
||
"stillNotGrantedMicrophone": "Microphone access still hasn't been granted. You may need to enable it manually in System Settings → Privacy & Security → Microphone.",
|
||
"stillNotGrantedCamera": "Camera access still hasn't been granted. You may need to enable it manually in System Settings → Privacy & Security → Camera.",
|
||
"grantedToastMicrophone": "Microphone access granted",
|
||
"grantedToastCamera": "Camera access granted"
|
||
},
|
||
"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: "
|
||
},
|
||
"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}}",
|
||
"addTagsPlaceholder": "Add tags",
|
||
"tagsHeader": "Tags",
|
||
"noteHeader": "Note",
|
||
"vpnsHeading": "VPNs",
|
||
"createByCountryHeading": "Create by country"
|
||
},
|
||
"dataTableActionBar": {
|
||
"selected": "{{count}} selected",
|
||
"clearSelection": "Clear selection"
|
||
},
|
||
"appUpdate": {
|
||
"toast": {
|
||
"updateFailed": "Failed to update Donut Browser",
|
||
"restartFailed": "Failed to restart",
|
||
"updateReady": "Update ready, restart to apply",
|
||
"manualDownloadRequired": "Manual download required",
|
||
"restartNow": "Restart Now",
|
||
"viewRelease": "View Release",
|
||
"later": "Later",
|
||
"uploading": "Uploading",
|
||
"downloading": "Downloading",
|
||
"startingUpdate": "Starting update..."
|
||
}
|
||
},
|
||
"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.",
|
||
"extracting": "Extracting browser files... Please do not close the app.",
|
||
"verifying": "Verifying browser files...",
|
||
"downloadingRolling": "Downloading rolling release build...",
|
||
"geoipDownloading": "Downloading GeoIP database",
|
||
"geoipDownloaded": "GeoIP database downloaded successfully!"
|
||
}
|
||
},
|
||
"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",
|
||
"updateStarted": "{{browser}} update started",
|
||
"updateStartedDescription": "Version {{version}} download will begin shortly. Browser launch is disabled until update completes.",
|
||
"downloadStarting": "Starting {{browser}} {{version}} download",
|
||
"downloadProgressBelow": "Download progress will be shown below...",
|
||
"autoDownloadStarted": "Downloading {{browser}} {{version}} automatically. Progress will be shown below.",
|
||
"lookingForUpdates": "Looking for updates for {{browser}}"
|
||
}
|
||
},
|
||
"profilePassword": {
|
||
"set": {
|
||
"title": "Set Profile Password",
|
||
"description": "Encrypt the on-disk data for {{name}}. You will need this password every time you launch the profile.",
|
||
"button": "Encrypt Profile"
|
||
},
|
||
"unlock": {
|
||
"title": "Unlock Profile",
|
||
"description": "Enter the password to unlock {{name}}.",
|
||
"button": "Unlock"
|
||
},
|
||
"change": {
|
||
"title": "Change Profile Password",
|
||
"description": "Re-encrypt {{name}} with a new password.",
|
||
"button": "Change Password"
|
||
},
|
||
"remove": {
|
||
"title": "Remove Profile Password",
|
||
"description": "Decrypt the on-disk data for {{name}}. The profile will no longer be password protected.",
|
||
"button": "Remove Password"
|
||
},
|
||
"fields": {
|
||
"password": "Password",
|
||
"currentPassword": "Current password",
|
||
"newPassword": "New password",
|
||
"confirm": "Confirm password",
|
||
"confirmPassword": "Confirm new password"
|
||
},
|
||
"errors": {
|
||
"oldPasswordRequired": "Current password is required",
|
||
"passwordRequired": "Password is required",
|
||
"tooShort": "Password must be at least 8 characters",
|
||
"mismatch": "Passwords do not match"
|
||
},
|
||
"toasts": {
|
||
"set": "Profile is now password protected",
|
||
"changed": "Profile password changed",
|
||
"removed": "Profile password removed"
|
||
},
|
||
"warnings": {
|
||
"forgetWarningTitle": "Important: this password is not recoverable",
|
||
"forgetWarningBody": "Donut Browser cannot reset, recover, or bypass this password. If you forget it, you will permanently lose access to this profile's data."
|
||
},
|
||
"modes": {
|
||
"set": "Set",
|
||
"change": "Change",
|
||
"remove": "Remove",
|
||
"validate": "Validate"
|
||
},
|
||
"verifyDialog": {
|
||
"title": "Validate Profile Password",
|
||
"description": "Enter the profile password to confirm it matches the one stored on disk.",
|
||
"submit": "Validate",
|
||
"matchToast": "Password is correct"
|
||
}
|
||
},
|
||
"backendErrors": {
|
||
"incorrectPassword": "Incorrect password",
|
||
"lockedOut": "Too many incorrect attempts. Try again in {{duration}}.",
|
||
"lockedOutDuration": {
|
||
"seconds": "{{seconds}}s",
|
||
"minutes": "{{minutes}} min",
|
||
"hours": "{{hours}} h"
|
||
},
|
||
"profileNotFound": "Profile not found",
|
||
"profileNotProtected": "Profile is not password protected",
|
||
"profileAlreadyProtected": "Profile is already password protected",
|
||
"profileRunning": "Cannot perform this action while the profile is running",
|
||
"profileEphemeral": "Ephemeral profiles cannot be password-protected — their data wipes on quit.",
|
||
"profileMissingSalt": "Profile is missing its encryption salt",
|
||
"profileLocked": "Profile is locked. Enter the password first.",
|
||
"invalidProfileId": "Invalid profile id",
|
||
"passwordTooShort": "Password must be at least {{min}} characters",
|
||
"proxyNotFound": "Proxy not found",
|
||
"groupNotFound": "Group not found",
|
||
"groupAlreadyExists": "A group with this name already exists",
|
||
"vpnNotFound": "VPN not found",
|
||
"extensionNotFound": "Extension not found",
|
||
"extensionGroupNotFound": "Extension group not found",
|
||
"cannotModifyCloudManagedProxy": "Cannot modify sync for a cloud-managed proxy",
|
||
"syncLockedByProfile": "Sync cannot be disabled while this is used by synced profiles",
|
||
"syncNotConfigured": "Sync is not configured. Sign in or configure a self-hosted server first.",
|
||
"internal": "Something went wrong: {{detail}}",
|
||
"invalidLaunchHookUrl": "Invalid launch hook URL. Use a full http:// or https:// URL.",
|
||
"cookieDbLocked": "Could not read cookies — the database is locked. Close the browser and try again.",
|
||
"cookieDbUnavailable": "Could not read cookies — the cookie store is unavailable.",
|
||
"selfHostedRequiresLogout": "Sign out of your Donut account before configuring a self-hosted server.",
|
||
"fingerprintRequiresPro": "Viewing or editing the fingerprint requires an active paid plan. Protection is included on all plans.",
|
||
"proxyNotWorking": "The selected proxy isn't working, so the profile wasn't created.",
|
||
"proxyPaymentRequired": "The selected proxy requires payment (402) — its subscription may have expired — so the profile wasn't created.",
|
||
"vpnNotWorking": "The selected VPN isn't working, so the profile wasn't created.",
|
||
"camoufoxImportDeprecated": "Importing this profile type is no longer supported. Please use Wayfern instead.",
|
||
"updateChecksumsUnavailable": "The update {{version}} could not be verified because its checksum file could not be retrieved. The update was not installed; it will be retried later.",
|
||
"updateChecksumMismatch": "The downloaded update file {{file}} failed checksum verification and was discarded. Please try again.",
|
||
"nameCannotBeEmpty": "Name cannot be empty",
|
||
"wayfernVersionNotAvailable": "Wayfern version {{requested}} is not available for download. The current version is {{current}}."
|
||
},
|
||
"rail": {
|
||
"profiles": "Profiles",
|
||
"extensions": "Extensions",
|
||
"groups": "Groups",
|
||
"settings": "Settings",
|
||
"more": {
|
||
"label": "More",
|
||
"closeAriaLabel": "Close menu",
|
||
"importProfile": "Import profile",
|
||
"importProfileHint": "Bring profiles from another tool",
|
||
"keyboardShortcuts": "Keyboard shortcuts",
|
||
"keyboardShortcutsHint": "View all shortcuts"
|
||
},
|
||
"network": "Network",
|
||
"integrations": "Integrations",
|
||
"account": "Account"
|
||
},
|
||
"pageTitle": {
|
||
"proxies": "Network",
|
||
"extensions": "Extensions",
|
||
"groups": "Groups",
|
||
"vpns": "Network",
|
||
"settings": "Settings",
|
||
"integrations": "Integrations",
|
||
"account": "Account",
|
||
"import": "Import profile",
|
||
"shortcuts": "Keyboard shortcuts"
|
||
},
|
||
"encryption": {
|
||
"required": {
|
||
"title": "Sync paused — password required",
|
||
"description": "Encrypted data was downloaded but no E2E password is set on this device. Open Settings → Encryption and enter the password to resume sync.",
|
||
"openSettings": "Open Settings"
|
||
},
|
||
"rollover": {
|
||
"startedTitle": "Re-encrypting your data",
|
||
"startedDescription": "We're re-uploading every synced item under the new password. Profiles first, then proxies, groups, VPNs, and extensions.",
|
||
"progressTitle": "Re-encrypting {{stage}}",
|
||
"progressDescription": "{{done}} of {{total}}",
|
||
"completedTitle": "Re-encryption complete",
|
||
"completedDescription": "All synced data is sealed under the new password.",
|
||
"stage": {
|
||
"profiles": "profiles",
|
||
"proxies": "proxies",
|
||
"groups": "groups",
|
||
"vpns": "VPNs",
|
||
"extensions": "extensions",
|
||
"extension_groups": "extension groups"
|
||
}
|
||
}
|
||
},
|
||
"account": {
|
||
"refreshed": "Account refreshed",
|
||
"loggedOut": "Logged out",
|
||
"signedOut": "Signed out",
|
||
"signedOutDescription": "Sign in to enable cloud sync, encrypted profiles, and team features.",
|
||
"plan": "Plan: {{plan}} · {{period}}",
|
||
"refresh": "Refresh",
|
||
"logout": "Sign out",
|
||
"signIn": "Sign in",
|
||
"fields": {
|
||
"plan": "Plan",
|
||
"status": "Status",
|
||
"teamRole": "Team role",
|
||
"period": "Billing period",
|
||
"device": "Device"
|
||
},
|
||
"tabs": {
|
||
"account": "Account",
|
||
"selfHosted": "Self-hosted"
|
||
},
|
||
"selfHosted": {
|
||
"title": "Self-hosted sync server",
|
||
"description": "Point Donut at your own donut-sync server to sync profiles, proxies, groups, and extensions without using the hosted cloud.",
|
||
"disabledWhileLoggedIn": "Self-hosted sync is unavailable while you're signed into your Donut account. Sign out to use a custom server.",
|
||
"connectionStatus": "Connection:",
|
||
"statusUnknown": "Untested",
|
||
"testConnection": "Test connection",
|
||
"disconnect": "Disconnect"
|
||
},
|
||
"deviceOrdinal": "{{ordinal}} of {{count}}",
|
||
"automationPrimaryOnly": "Browser automation runs only on your primary device (Device 1). Sign out there to use it here.",
|
||
"automationActiveHere": "Browser automation is active on this device."
|
||
},
|
||
"shortcutsPage": {
|
||
"title": "Keyboard shortcuts",
|
||
"description": "Speed up your workflow with these shortcuts."
|
||
},
|
||
"commandPalette": {
|
||
"placeholder": "Type a command or search...",
|
||
"empty": "No results found.",
|
||
"groups": {
|
||
"navigation": "Navigation",
|
||
"profiles": "Profiles",
|
||
"actions": "Actions",
|
||
"profileGroups": "Profile groups"
|
||
},
|
||
"actions": {
|
||
"launchProfile": "Launch {{name}}",
|
||
"stopProfile": "Stop {{name}}",
|
||
"profileInfo": "Info — {{name}}"
|
||
}
|
||
},
|
||
"shortcuts": {
|
||
"openPalette": "Open command palette",
|
||
"openShortcuts": "View keyboard shortcuts",
|
||
"importProfile": "Import profile",
|
||
"goProfiles": "Go to Profiles",
|
||
"goProxies": "Go to Network",
|
||
"goExtensions": "Go to Extensions",
|
||
"goGroups": "Go to Groups",
|
||
"goIntegrations": "Go to Integrations",
|
||
"goAccount": "Go to Account",
|
||
"goSettings": "Go to Settings"
|
||
},
|
||
"closeConfirm": {
|
||
"title": "Close Donut Browser?",
|
||
"description": "Would you like to send the app to the system tray or quit?",
|
||
"minimize": "Minimize to Tray",
|
||
"quit": "Quit"
|
||
},
|
||
"tray": {
|
||
"show": "Show Donut Browser",
|
||
"quit": "Quit"
|
||
},
|
||
"onboarding": {
|
||
"steps": {
|
||
"createProfile": {
|
||
"title": "Create your first profile",
|
||
"content": "Click here to create your first profile. Pick Wayfern as the browser — the recommended, fingerprint-protected Chromium."
|
||
},
|
||
"dnsBlocking": {
|
||
"title": "DNS blocking",
|
||
"content": "Use this dropdown to set a DNS blocklist level for the profile — it blocks ads, trackers, and malware at the network level. Higher levels block more."
|
||
}
|
||
},
|
||
"buttons": {
|
||
"skip": "Skip",
|
||
"back": "Back",
|
||
"next": "Next",
|
||
"finish": "Finish"
|
||
},
|
||
"thankYou": {
|
||
"title": "Thank you for choosing Donut Browser",
|
||
"body": "Hopefully it helps make your browsing more private — every identity kept its own, and nothing leaving your machine. Enjoy.",
|
||
"cta": "Start browsing"
|
||
}
|
||
},
|
||
"welcome": {
|
||
"title": "Welcome to Donut Browser",
|
||
"tagline": "An open-source anti-detect browser for managing many identities at once.",
|
||
"skip": "Skip",
|
||
"next": "Next",
|
||
"permissions": {
|
||
"title": "Allow microphone & camera",
|
||
"desc": "Grant access so sites that need a mic or camera work inside your browser profiles. macOS asks once; each site still asks you individually.",
|
||
"skip": "Not now",
|
||
"grant": "Allow access",
|
||
"requesting": "Requesting…"
|
||
},
|
||
"ready": {
|
||
"title": "Setting things up",
|
||
"descDownloading": "Downloading your first browser (Wayfern). This one-time setup runs in the background — hang tight.",
|
||
"descReady": "Your browser is ready. Let's create your first profile.",
|
||
"cta": "Create my first profile",
|
||
"downloading": "Downloading…",
|
||
"extracting": "Extracting…",
|
||
"stats": "{{downloaded}} of {{total}}",
|
||
"speed": "{{speed}}/s",
|
||
"timeLeft": "{{time}} left",
|
||
"descExtracting": "Extracting your browser. This one-time setup runs in the background — hang tight.",
|
||
"almostFinished": "Almost finished…",
|
||
"errorTitle": "Setup failed",
|
||
"errorDownload": "{{browser}} couldn't be downloaded. Check your connection and try again.",
|
||
"errorExtraction": "{{browser}} couldn't be extracted. Please try again.",
|
||
"errorGeneric": "Something went wrong while setting up {{browser}}. Please try again.",
|
||
"retry": "Try again"
|
||
},
|
||
"features": {
|
||
"title": "Features",
|
||
"items": {
|
||
"setDefault": "Set as Default Browser",
|
||
"proxy": "Proxy Support (HTTP/SOCKS5)",
|
||
"vpn": "VPN Support (WireGuard)",
|
||
"profiles": "Unlimited Local Profiles",
|
||
"api": "Profile Management API & MCP",
|
||
"openSource": "Open Source",
|
||
"groups": "Profile Groups",
|
||
"cookies": "Cookie Import & Export"
|
||
}
|
||
},
|
||
"license": {
|
||
"title": "Licensing",
|
||
"body": "Donut Browser is open source and free to use.",
|
||
"agree": "I understand",
|
||
"personalTitle": "Personal use",
|
||
"personalDesc": "Free forever.",
|
||
"commercialTitle": "Commercial use",
|
||
"trialBadge": "2 weeks free",
|
||
"commercialDesc": "Free for a 2-week evaluation. After that, a paid plan keeps the project maintained and thriving."
|
||
}
|
||
},
|
||
"wayfernBlocked": {
|
||
"title": "Browser automation paused",
|
||
"description": "Your account was temporarily restricted from Pro browser features, usually from signing in on multiple devices at once. Sign out of other devices, then relaunch the profile to restore it."
|
||
},
|
||
"wayfernConfigDialog": {
|
||
"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"
|
||
},
|
||
"cookieCopy": {
|
||
"noOtherTargets": "No other Wayfern profiles selected"
|
||
}
|
||
}
|