mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-08-05 02:38:44 +02:00
1557 lines
66 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|