879 lines
27 KiB
JSON
879 lines
27 KiB
JSON
{
|
|
"appTitle": {
|
|
"message": "Auto Login Manager",
|
|
"description": "App title"
|
|
},
|
|
"extDescription": {
|
|
"message": "Auto-fill username and password for specific domains and complete login. Supports managing domain configurations via UI.",
|
|
"description": "Extension description (manifest)"
|
|
},
|
|
"lockSetupTitle": {
|
|
"message": "Set Local Password",
|
|
"description": "Lock screen - title when setting local password"
|
|
},
|
|
"lockSetupHint": {
|
|
"message": "Local password encrypts all configurations. It cannot be recovered if forgotten.",
|
|
"description": "Lock screen - hint when setting local password"
|
|
},
|
|
"lockUnlockTitle": {
|
|
"message": "Locked",
|
|
"description": "Lock screen - title when locked"
|
|
},
|
|
"lockUnlockHint": {
|
|
"message": "Enter local password to view encrypted configurations",
|
|
"description": "Lock screen - hint when locked"
|
|
},
|
|
"lockPasswordPlaceholder": {
|
|
"message": "Enter local password",
|
|
"description": "Lock screen - local password placeholder"
|
|
},
|
|
"lockPasswordConfirmLabel": {
|
|
"message": "Confirm Local Password",
|
|
"description": "Lock screen - confirm local password label"
|
|
},
|
|
"lockPasswordConfirmPlaceholder": {
|
|
"message": "Re-enter local password",
|
|
"description": "Lock screen - confirm local password placeholder"
|
|
},
|
|
"lockSetupBtn": {
|
|
"message": "Set Local Password & Enter",
|
|
"description": "Lock screen - set local password button"
|
|
},
|
|
"lockUnlockBtn": {
|
|
"message": "Enter",
|
|
"description": "Lock screen - enter button"
|
|
},
|
|
"lockFootnote": {
|
|
"message": "Local password is used only for local encryption and is never uploaded to any server.",
|
|
"description": "Lock screen - footnote"
|
|
},
|
|
"lockBtnTitle": {
|
|
"message": "Lock (clear plaintext from memory)",
|
|
"description": "Lock button title"
|
|
},
|
|
"lockConfirmPrompt": {
|
|
"message": "Confirm lock? You'll need to re-enter local password to view configurations.",
|
|
"description": "Lock confirmation dialog"
|
|
},
|
|
"lockWarnEmpty": {
|
|
"message": "Please enter local password",
|
|
"description": "Lock screen - local password empty"
|
|
},
|
|
"lockWarnShort": {
|
|
"message": "Local password must be at least 6 characters",
|
|
"description": "Lock screen - local password too short"
|
|
},
|
|
"lockWarnMismatch": {
|
|
"message": "The two local passwords do not match",
|
|
"description": "Lock screen - two passwords mismatch"
|
|
},
|
|
"lockWarnSetupFail": {
|
|
"message": "Setup failed: $1",
|
|
"description": "Lock screen - setup failed, $1 is error"
|
|
},
|
|
"lockWarnUnlockFail": {
|
|
"message": "Enter failed: $1",
|
|
"description": "Lock screen - unlock failed, $1 is error"
|
|
},
|
|
"lockWarnNoService": {
|
|
"message": "Cannot connect to background service. Try refreshing the panel or reloading the extension.",
|
|
"description": "Lock screen - background service unavailable"
|
|
},
|
|
"toastPasswordSet": {
|
|
"message": "Local password set. Configurations encrypted.",
|
|
"description": "Toast - local password set"
|
|
},
|
|
"toastUnlocked": {
|
|
"message": "Entered",
|
|
"description": "Toast - unlocked"
|
|
},
|
|
"toastLocked": {
|
|
"message": "Locked",
|
|
"description": "Toast - locked"
|
|
},
|
|
"currentEnvLabel": {
|
|
"message": "Current Environment",
|
|
"description": "Env bar - current env label"
|
|
},
|
|
"envManageBtnTitle": {
|
|
"message": "Manage environments (create / rename / delete)",
|
|
"description": "Env manage button title"
|
|
},
|
|
"addConfigTitle": {
|
|
"message": "Add Domain Configuration",
|
|
"description": "Add config section title"
|
|
},
|
|
"editConfigTitle": {
|
|
"message": "Edit Domain Configuration",
|
|
"description": "Edit config section title"
|
|
},
|
|
"domainLabel": {
|
|
"message": "Domain / URL Match Rule",
|
|
"description": "Domain input label"
|
|
},
|
|
"domainPlaceholder": {
|
|
"message": "example.com or *.example.com or site.com/admin/*",
|
|
"description": "Domain input placeholder"
|
|
},
|
|
"fillDomainBtn": {
|
|
"message": "Fill Current Domain",
|
|
"description": "Fill current domain button"
|
|
},
|
|
"fillDomainBtnTitle": {
|
|
"message": "Fill current tab domain",
|
|
"description": "Fill current domain button title"
|
|
},
|
|
"domainHelp": {
|
|
"message": "Supports wildcard *. With / matches hostname+path, e.g. oa.com/login/*; without / matches domain only.",
|
|
"description": "Domain input help text"
|
|
},
|
|
"usernameLabel": {
|
|
"message": "Username",
|
|
"description": "Username input label"
|
|
},
|
|
"usernamePlaceholder": {
|
|
"message": "Enter username",
|
|
"description": "Username input placeholder"
|
|
},
|
|
"passwordLabel": {
|
|
"message": "Password",
|
|
"description": "Password input label"
|
|
},
|
|
"passwordPlaceholder": {
|
|
"message": "Enter password",
|
|
"description": "Password input placeholder"
|
|
},
|
|
"togglePwdAria": {
|
|
"message": "Toggle password visibility",
|
|
"description": "Eye button aria-label"
|
|
},
|
|
"aliasLabel": {
|
|
"message": "Alias (optional)",
|
|
"description": "Alias input label"
|
|
},
|
|
"aliasPlaceholder": {
|
|
"message": "e.g. Company OA, GitLab, Email",
|
|
"description": "Alias input placeholder"
|
|
},
|
|
"aliasHelp": {
|
|
"message": "Helps identify this config. Leave empty to show domain.",
|
|
"description": "Alias input help"
|
|
},
|
|
"advancedOptionsSummary": {
|
|
"message": "Advanced Options (optional, defaults work)",
|
|
"description": "Advanced options summary"
|
|
},
|
|
"autoSubmitLabel": {
|
|
"message": "Auto Submit Login",
|
|
"description": "Auto submit label"
|
|
},
|
|
"autoSubmitYes": {
|
|
"message": "Yes - auto click login button",
|
|
"description": "Auto submit - yes"
|
|
},
|
|
"autoSubmitNo": {
|
|
"message": "No - fill only, do not submit",
|
|
"description": "Auto submit - no"
|
|
},
|
|
"enabledLabel": {
|
|
"message": "Enable / Disable",
|
|
"description": "Enabled label"
|
|
},
|
|
"enabledHelp": {
|
|
"message": "When disabled, this configuration will not take effect",
|
|
"description": "Enabled help text"
|
|
},
|
|
"delayMsLabel": {
|
|
"message": "Fill Delay (ms, optional)",
|
|
"description": "Delay ms label"
|
|
},
|
|
"delayMsPlaceholder": {
|
|
"message": "Empty=300ms default. 500-2000 for SPA pages.",
|
|
"description": "Delay ms placeholder"
|
|
},
|
|
"delayMsHelp": {
|
|
"message": "Some pages (Ant Design, ASP.NET) need JS init; immediate fill may fail.",
|
|
"description": "Delay ms help"
|
|
},
|
|
"selectorHelpTip": {
|
|
"message": "Leave the three fields below empty. The extension will auto-find the login form. Fill them only if auto-fill fails or fills the wrong field.",
|
|
"description": "Selector tutorial tip"
|
|
},
|
|
"selectorHelpStep1": {
|
|
"message": "1. Press F12 on the login page to open DevTools, switch to the \"Elements\" tab.",
|
|
"description": "Selector tutorial step 1"
|
|
},
|
|
"selectorHelpStep2": {
|
|
"message": "2. Click the arrow icon at the top-left of DevTools, then click the input/button on the page.",
|
|
"description": "Selector tutorial step 2"
|
|
},
|
|
"selectorHelpStep3": {
|
|
"message": "3. The tool jumps to the HTML line. Check id, name, class, type attributes on <input> or <button>.",
|
|
"description": "Selector tutorial step 3"
|
|
},
|
|
"selectorHelpStep4": {
|
|
"message": "4. Combine using #id, .class, [name=xxx], tag[attr=value] rules.",
|
|
"description": "Selector tutorial step 4"
|
|
},
|
|
"usernameSelectorLabel": {
|
|
"message": "Username Input Selector",
|
|
"description": "Username selector label"
|
|
},
|
|
"usernameSelectorPlaceholder": {
|
|
"message": "Empty=auto find, or paste element HTML / CSS selector",
|
|
"description": "Username selector placeholder"
|
|
},
|
|
"usernameSelectorHelp": {
|
|
"message": "Paste the input's DOM node, or a CSS selector; empty = auto find.",
|
|
"description": "Username selector help"
|
|
},
|
|
"passwordSelectorLabel": {
|
|
"message": "Password Input Selector",
|
|
"description": "Password selector label"
|
|
},
|
|
"passwordSelectorPlaceholder": {
|
|
"message": "Empty=auto find, or paste element HTML / CSS selector",
|
|
"description": "Password selector placeholder"
|
|
},
|
|
"passwordSelectorHelp": {
|
|
"message": "Paste the input's DOM node, or a CSS selector; empty = auto find.",
|
|
"description": "Password selector help"
|
|
},
|
|
"submitSelectorLabel": {
|
|
"message": "Login Button Selector",
|
|
"description": "Submit selector label"
|
|
},
|
|
"submitSelectorPlaceholder": {
|
|
"message": "Empty=auto find, or paste element HTML / CSS selector",
|
|
"description": "Submit selector placeholder"
|
|
},
|
|
"submitSelectorHelp": {
|
|
"message": "Paste the button's DOM node, or a CSS selector; empty = auto find.",
|
|
"description": "Submit selector help"
|
|
},
|
|
"addConfigBtn": {
|
|
"message": "Add Configuration",
|
|
"description": "Add config button"
|
|
},
|
|
"updateConfigBtn": {
|
|
"message": "Update Configuration",
|
|
"description": "Update config button"
|
|
},
|
|
"configuredDomainsTitle": {
|
|
"message": "Domain List",
|
|
"description": "Domain list section title"
|
|
},
|
|
"exportBtn": {
|
|
"message": "Export",
|
|
"description": "Export button"
|
|
},
|
|
"importBtn": {
|
|
"message": "Import",
|
|
"description": "Import button"
|
|
},
|
|
"searchBtnTitle": {
|
|
"message": "Search",
|
|
"description": "Search button title"
|
|
},
|
|
"searchPlaceholder": {
|
|
"message": "Search domain / username / alias",
|
|
"description": "Search box placeholder"
|
|
},
|
|
"noSearchResult": {
|
|
"message": "No matching results",
|
|
"description": "No search result hint"
|
|
},
|
|
"fillCurrentBtn": {
|
|
"message": "Fill Current Page",
|
|
"description": "Fill current page button"
|
|
},
|
|
"poweredBy": {
|
|
"message": "power by chenxuan",
|
|
"description": "Footer credit"
|
|
},
|
|
"envManageTitle": {
|
|
"message": "Environment Management",
|
|
"description": "Env manage dialog title"
|
|
},
|
|
"closeBtn": {
|
|
"message": "Close",
|
|
"description": "Close button"
|
|
},
|
|
"createEnvBtn": {
|
|
"message": "New Environment",
|
|
"description": "Create env button"
|
|
},
|
|
"envManageEmpty": {
|
|
"message": "No environments",
|
|
"description": "Env manage list empty"
|
|
},
|
|
"envCurrentMark": {
|
|
"message": "current",
|
|
"description": "Env manage list - current env mark"
|
|
},
|
|
"renameBtn": {
|
|
"message": "Rename",
|
|
"description": "Rename button"
|
|
},
|
|
"deleteBtn": {
|
|
"message": "Delete",
|
|
"description": "Delete button"
|
|
},
|
|
"envCreateTitle": {
|
|
"message": "New Environment",
|
|
"description": "Env create dialog title"
|
|
},
|
|
"envRenameTitle": {
|
|
"message": "Rename Environment",
|
|
"description": "Env rename dialog title"
|
|
},
|
|
"envNameLabel": {
|
|
"message": "Environment Name",
|
|
"description": "Env name label"
|
|
},
|
|
"envNamePlaceholder": {
|
|
"message": "e.g. Personal / Test / Prod / Customer A",
|
|
"description": "Env name placeholder"
|
|
},
|
|
"presetPersonal": {
|
|
"message": "Personal",
|
|
"description": "Preset env - Personal"
|
|
},
|
|
"presetTest": {
|
|
"message": "Test",
|
|
"description": "Preset env - Test"
|
|
},
|
|
"presetProd": {
|
|
"message": "Prod",
|
|
"description": "Preset env - Prod"
|
|
},
|
|
"presetDev": {
|
|
"message": "Dev",
|
|
"description": "Preset env - Dev"
|
|
},
|
|
"presetStaging": {
|
|
"message": "Staging",
|
|
"description": "Preset env - Staging"
|
|
},
|
|
"cancelBtn": {
|
|
"message": "Cancel",
|
|
"description": "Cancel button"
|
|
},
|
|
"confirmBtn": {
|
|
"message": "OK",
|
|
"description": "Confirm button"
|
|
},
|
|
"okBtn": {
|
|
"message": "OK",
|
|
"description": "OK button (submit in dialog)"
|
|
},
|
|
"envWarnEmpty": {
|
|
"message": "Environment name cannot be empty",
|
|
"description": "Env name empty warning"
|
|
},
|
|
"envWarnTooLong": {
|
|
"message": "Name too long (max 20 chars)",
|
|
"description": "Env name too long warning"
|
|
},
|
|
"pwdModalExportTitle": {
|
|
"message": "Encrypted Export",
|
|
"description": "Encrypted export dialog title"
|
|
},
|
|
"pwdModalImportTitle": {
|
|
"message": "Enter Decryption File Password",
|
|
"description": "Decrypt import dialog title"
|
|
},
|
|
"encryptExportLabel": {
|
|
"message": "Encrypt export file",
|
|
"description": "Encrypt export checkbox"
|
|
},
|
|
"encryptExportHelp": {
|
|
"message": "Checked: encrypt with file password; unchecked: plain JSON",
|
|
"description": "Encrypt export help"
|
|
},
|
|
"filePasswordLabel": {
|
|
"message": "File Password",
|
|
"description": "File password label"
|
|
},
|
|
"filePasswordPlaceholder": {
|
|
"message": "Enter file password",
|
|
"description": "File password placeholder"
|
|
},
|
|
"filePasswordConfirmLabel": {
|
|
"message": "Confirm File Password",
|
|
"description": "Confirm file password label"
|
|
},
|
|
"filePasswordConfirmPlaceholder": {
|
|
"message": "Re-enter file password",
|
|
"description": "Confirm file password placeholder"
|
|
},
|
|
"pwdModalExportWarn": {
|
|
"message": "File password is used for AES-GCM encryption. Cannot be recovered. Save it carefully.",
|
|
"description": "Export dialog warning"
|
|
},
|
|
"pwdModalImportWarn": {
|
|
"message": "Enter the file password set during export",
|
|
"description": "Import dialog hint"
|
|
},
|
|
"strengthEmpty": {
|
|
"message": "Not entered",
|
|
"description": "Password strength - empty"
|
|
},
|
|
"strengthVeryWeak": {
|
|
"message": "Very weak",
|
|
"description": "Password strength - very weak"
|
|
},
|
|
"strengthWeak": {
|
|
"message": "Weak",
|
|
"description": "Password strength - weak"
|
|
},
|
|
"strengthMedium": {
|
|
"message": "Medium",
|
|
"description": "Password strength - medium"
|
|
},
|
|
"strengthStrong": {
|
|
"message": "Strong",
|
|
"description": "Password strength - strong"
|
|
},
|
|
"strengthVeryStrong": {
|
|
"message": "Very strong",
|
|
"description": "Password strength - very strong"
|
|
},
|
|
"strengthLabel": {
|
|
"message": "Strength: $1 (entropy $2 bits)",
|
|
"description": "Strength label, $1 strength, $2 entropy"
|
|
},
|
|
"crackTimeLabel": {
|
|
"message": "Crack time: $1",
|
|
"description": "Crack time label, $1 time"
|
|
},
|
|
"crackInstant": {
|
|
"message": "instant",
|
|
"description": "Crack time - instant"
|
|
},
|
|
"crackSeconds": {
|
|
"message": "about $1 seconds",
|
|
"description": "Crack time - seconds, $1 number"
|
|
},
|
|
"crackMinutes": {
|
|
"message": "about $1 minutes",
|
|
"description": "Crack time - minutes, $1 number"
|
|
},
|
|
"crackHours": {
|
|
"message": "about $1 hours",
|
|
"description": "Crack time - hours, $1 number"
|
|
},
|
|
"crackDays": {
|
|
"message": "about $1 days",
|
|
"description": "Crack time - days, $1 number"
|
|
},
|
|
"crackMonths": {
|
|
"message": "about $1 months",
|
|
"description": "Crack time - months, $1 number"
|
|
},
|
|
"crackYears": {
|
|
"message": "about $1 years",
|
|
"description": "Crack time - years, $1 number"
|
|
},
|
|
"crackThousandYears": {
|
|
"message": "about $1 thousand years",
|
|
"description": "Crack time - thousand years, $1 number"
|
|
},
|
|
"crackMillionYears": {
|
|
"message": "about $1 million years",
|
|
"description": "Crack time - million years, $1 number"
|
|
},
|
|
"crackBillionYears": {
|
|
"message": "about $1 billion years",
|
|
"description": "Crack time - billion years, $1 number"
|
|
},
|
|
"crackTrillionYears": {
|
|
"message": "about $1 trillion years",
|
|
"description": "Crack time - trillion years, $1 number (scientific notation)"
|
|
},
|
|
"warnFilePwdEmpty": {
|
|
"message": "File password cannot be empty",
|
|
"description": "File password empty warning"
|
|
},
|
|
"warnFilePwdMismatch": {
|
|
"message": "The two file passwords do not match",
|
|
"description": "File password mismatch warning"
|
|
},
|
|
"toastSwitchEnv": {
|
|
"message": "Environment switched",
|
|
"description": "Toast - switched env"
|
|
},
|
|
"toastRenamed": {
|
|
"message": "Renamed",
|
|
"description": "Toast - rename success"
|
|
},
|
|
"toastRenameFail": {
|
|
"message": "Rename failed",
|
|
"description": "Toast - rename failed"
|
|
},
|
|
"toastKeepOneEnv": {
|
|
"message": "Keep at least one environment",
|
|
"description": "Toast - keep at least one env"
|
|
},
|
|
"confirmDeleteEnvWithCfgs": {
|
|
"message": "Environment \"$1\" has $2 configs. Delete? (All these configs will be deleted)",
|
|
"description": "Confirm delete env with configs, $1 env name, $2 count"
|
|
},
|
|
"confirmDeleteEnv": {
|
|
"message": "Delete environment \"$1\"?",
|
|
"description": "Confirm delete empty env, $1 env name"
|
|
},
|
|
"confirmDeleteConfig": {
|
|
"message": "Delete \"$1\"?",
|
|
"description": "Confirm delete domain config, $1 alias or domain"
|
|
},
|
|
"toastEnvDeleted": {
|
|
"message": "Environment deleted",
|
|
"description": "Toast - env deleted"
|
|
},
|
|
"toastDeleteFail": {
|
|
"message": "Delete failed",
|
|
"description": "Toast - delete failed"
|
|
},
|
|
"toastEnvCreated": {
|
|
"message": "Created environment \"$1\"",
|
|
"description": "Toast - env created, $1 env name"
|
|
},
|
|
"toastCreateFail": {
|
|
"message": "Create failed",
|
|
"description": "Toast - create failed"
|
|
},
|
|
"emptyStateTitle": {
|
|
"message": "No configurations",
|
|
"description": "Empty state title"
|
|
},
|
|
"emptyStateSub": {
|
|
"message": "Fill in domain / username / password above and click \"Add Configuration\"",
|
|
"description": "Empty state subtext"
|
|
},
|
|
"tagDisabled": {
|
|
"message": "disabled",
|
|
"description": "Config item - disabled tag"
|
|
},
|
|
"attemptToastTitle": {
|
|
"message": "Auto-submit paused",
|
|
"description": "Toast title - auto submit paused"
|
|
},
|
|
"attemptToastBody": {
|
|
"message": "Auto-submit ran $1 times in a row for this domain. To avoid locking your account, credentials are only filled without submitting. It resumes automatically after $2 minutes, or you can click login yourself.",
|
|
"description": "Toast body - $1 attempt limit, $2 cooldown minutes"
|
|
},
|
|
"logLoginSuccessReset": {
|
|
"message": "Login appears successful ($1); attempt counter reset",
|
|
"description": "Log - reset attempts after success"
|
|
},
|
|
"tagUnauthorized": {
|
|
"message": "no access",
|
|
"description": "Config item - site access not granted"
|
|
},
|
|
"tagUnauthorizedTitle": {
|
|
"message": "Site access has not been granted, so auto-fill will not work. Click to grant access.",
|
|
"description": "Tooltip for the unauthorized tag"
|
|
},
|
|
"toastUnauthorized": {
|
|
"message": "Saved, but site access was not granted — auto-fill will not work (click \"no access\" in the list to grant it)",
|
|
"description": "Toast - not authorized"
|
|
},
|
|
"toastAuthorized": {
|
|
"message": "Access granted. Auto-fill will work on this site.",
|
|
"description": "Toast - authorized"
|
|
},
|
|
"toastAuthFail": {
|
|
"message": "Access was not granted; auto-fill stays disabled for this site.",
|
|
"description": "Toast - authorization denied or failed"
|
|
},
|
|
"toastNoTabUrl": {
|
|
"message": "Cannot read the current page URL. Click the extension icon on the target page and retry.",
|
|
"description": "Toast - tab URL unavailable (no activeTab grant)"
|
|
},
|
|
"toastNeedActiveTab": {
|
|
"message": "Cannot access the current page. Click the extension icon on the target page and retry.",
|
|
"description": "Toast - missing site access for injection"
|
|
},
|
|
"tagDelay": {
|
|
"message": "delay $1ms",
|
|
"description": "Config item - delay tag, $1 ms"
|
|
},
|
|
"configDetailUser": {
|
|
"message": "user: $1 | auto-submit: $2",
|
|
"description": "Config detail, $1 username, $2 auto-submit"
|
|
},
|
|
"yesShort": {
|
|
"message": "Yes",
|
|
"description": "Short yes"
|
|
},
|
|
"noShort": {
|
|
"message": "No",
|
|
"description": "Short no"
|
|
},
|
|
"toggleEnable": {
|
|
"message": "Enable",
|
|
"description": "Enable button (when config disabled)"
|
|
},
|
|
"toggleDisable": {
|
|
"message": "Disable",
|
|
"description": "Disable button (when config enabled)"
|
|
},
|
|
"toggleEnableTitle": {
|
|
"message": "Click to enable this config",
|
|
"description": "Enable button title"
|
|
},
|
|
"toggleDisableTitle": {
|
|
"message": "Click to disable this config",
|
|
"description": "Disable button title"
|
|
},
|
|
"editBtn": {
|
|
"message": "Edit",
|
|
"description": "Edit button"
|
|
},
|
|
"moreActionsTitle": {
|
|
"message": "More actions",
|
|
"description": "More actions button title"
|
|
},
|
|
"toastEnabled": {
|
|
"message": "Enabled",
|
|
"description": "Toast - enabled"
|
|
},
|
|
"toastDisabled": {
|
|
"message": "Disabled",
|
|
"description": "Toast - disabled"
|
|
},
|
|
"toastAdded": {
|
|
"message": "Configuration added",
|
|
"description": "Toast - config added"
|
|
},
|
|
"toastUpdated": {
|
|
"message": "Configuration updated",
|
|
"description": "Toast - config updated"
|
|
},
|
|
"toastDeleted": {
|
|
"message": "Deleted",
|
|
"description": "Toast - deleted"
|
|
},
|
|
"toastRequired": {
|
|
"message": "Domain, username, password cannot be empty",
|
|
"description": "Toast - required fields empty"
|
|
},
|
|
"toastNoTab": {
|
|
"message": "Cannot get current tab",
|
|
"description": "Toast - cannot get current tab"
|
|
},
|
|
"toastNoMatch": {
|
|
"message": "No matching configuration for current domain",
|
|
"description": "Toast - no matching config"
|
|
},
|
|
"toastFilled": {
|
|
"message": "Filled. Please confirm.",
|
|
"description": "Toast - filled"
|
|
},
|
|
"toastFilledNoForm": {
|
|
"message": "Sent but login form not found. Make sure the page is fully loaded.",
|
|
"description": "Toast - sent but no form"
|
|
},
|
|
"toastScriptNotInjected": {
|
|
"message": "Script not injected. Refresh the page and retry.",
|
|
"description": "Toast - script not injected"
|
|
},
|
|
"toastSendFail": {
|
|
"message": "Send failed: $1",
|
|
"description": "Toast - send failed, $1 error"
|
|
},
|
|
"toastMultiMatch": {
|
|
"message": "$1 env configs matched. Choose on the page.",
|
|
"description": "Toast - multi match, $1 count"
|
|
},
|
|
"toastNoDomain": {
|
|
"message": "No valid domain on current page",
|
|
"description": "Toast - no valid domain"
|
|
},
|
|
"toastDomainFilled": {
|
|
"message": "Filled: $1",
|
|
"description": "Toast - domain filled, $1 domain"
|
|
},
|
|
"toastUrlParseFail": {
|
|
"message": "Cannot parse current page URL",
|
|
"description": "Toast - URL parse failed"
|
|
},
|
|
"toastNoExportable": {
|
|
"message": "No configurations to export",
|
|
"description": "Toast - nothing to export"
|
|
},
|
|
"toastExportCancelled": {
|
|
"message": "Export cancelled",
|
|
"description": "Toast - export cancelled"
|
|
},
|
|
"toastExported": {
|
|
"message": "Exported $1 envs / $2 configs$3",
|
|
"description": "Toast - export success, $1 envs, $2 configs, $3 encrypted mark"
|
|
},
|
|
"encryptedMark": {
|
|
"message": " (encrypted)",
|
|
"description": "Encrypted mark at end of export toast"
|
|
},
|
|
"toastImportCancelled": {
|
|
"message": "Import cancelled",
|
|
"description": "Toast - import cancelled"
|
|
},
|
|
"toastImportedEnvs": {
|
|
"message": "Imported $1 envs / $2 configs, skipped $3 (duplicate or invalid)",
|
|
"description": "Toast - imported envs, $1 envs, $2 configs, $3 skipped"
|
|
},
|
|
"toastImportedCfgs": {
|
|
"message": "Imported $1 configs to current env, skipped $2 (duplicate or invalid)",
|
|
"description": "Toast - imported configs, $1 added, $2 skipped"
|
|
},
|
|
"toastInvalidFormat": {
|
|
"message": "Decrypted content format invalid",
|
|
"description": "Toast - decrypted content invalid"
|
|
},
|
|
"toastDecryptFail": {
|
|
"message": "Decryption failed: wrong file password or corrupted file",
|
|
"description": "Toast - decrypt failed"
|
|
},
|
|
"toastFileInvalid": {
|
|
"message": "File format invalid",
|
|
"description": "Toast - file invalid"
|
|
},
|
|
"toastImportFail": {
|
|
"message": "Import failed: $1",
|
|
"description": "Toast - import failed, $1 error"
|
|
},
|
|
"toastContextReload": {
|
|
"message": "Extension reloaded. Refreshing panel...",
|
|
"description": "Toast - context reload"
|
|
},
|
|
"captchaTitleRe": {
|
|
"message": "reCAPTCHA detected",
|
|
"description": "Captcha - reCAPTCHA"
|
|
},
|
|
"captchaTitleH": {
|
|
"message": "hCaptcha detected",
|
|
"description": "Captcha - hCaptcha"
|
|
},
|
|
"captchaReasonSlider": {
|
|
"message": "Captcha element detected ($1)",
|
|
"description": "Captcha - slider, $1 selector"
|
|
},
|
|
"captchaReasonInput": {
|
|
"message": "Captcha input detected",
|
|
"description": "Captcha - input"
|
|
},
|
|
"captchaToastTitle": {
|
|
"message": "Manual action required",
|
|
"description": "Captcha toast title"
|
|
},
|
|
"captchaToastBody": {
|
|
"message": "$1. Credentials filled. Complete the captcha and click login.",
|
|
"description": "Captcha toast body, $1 reason"
|
|
},
|
|
"fillToastMsg": {
|
|
"message": "Username and password filled",
|
|
"description": "Fill complete lightweight toast"
|
|
},
|
|
"logNoPasswordField": {
|
|
"message": "Password input not found",
|
|
"description": "Log - no password field"
|
|
},
|
|
"logFilledUsername": {
|
|
"message": "Username filled",
|
|
"description": "Log - filled username"
|
|
},
|
|
"logNoUsernameField": {
|
|
"message": "Username field not found, skipping username fill",
|
|
"description": "Log - no username field"
|
|
},
|
|
"logFilledPassword": {
|
|
"message": "Password filled",
|
|
"description": "Log - filled password"
|
|
},
|
|
"logCaptchaSkip": {
|
|
"message": "$1. Auto-submit skipped. Complete the captcha and click login.",
|
|
"description": "Log - captcha skip, $1 reason"
|
|
},
|
|
"logAutoClick": {
|
|
"message": "Auto-clicking login button (delay $1ms)",
|
|
"description": "Log - auto click, $1 delay"
|
|
},
|
|
"logTryFormSubmit": {
|
|
"message": "Login button not found, trying form submit",
|
|
"description": "Log - try form submit"
|
|
},
|
|
"logNoSubmitAndForm": {
|
|
"message": "Login button not found, form submit also unavailable",
|
|
"description": "Log - no submit and no form"
|
|
},
|
|
"logCaptchaFilled": {
|
|
"message": "Captcha detected. Fill only, no auto-submit. Complete the captcha and click login.",
|
|
"description": "Log - captcha filled"
|
|
},
|
|
"logAttemptExceeded": {
|
|
"message": "Auto-submit reached its limit. Fill only, no auto-submit. Confirm and click login manually.",
|
|
"description": "Log - auto submit limit reached"
|
|
},
|
|
"logNoAutoSubmit": {
|
|
"message": "Auto-submit is off. Fill only.",
|
|
"description": "Log - auto-submit off"
|
|
},
|
|
"logMatchedMulti": {
|
|
"message": "Matched $1 env configs, showing picker",
|
|
"description": "Log - matched multi, $1 count"
|
|
},
|
|
"logStartFillEnv": {
|
|
"message": "Filling with env \"$1\" config",
|
|
"description": "Log - start fill, $1 env name"
|
|
},
|
|
"logAttemptExceededDetail": {
|
|
"message": "Env \"$1\" domain $2 auto-submitted $3 times, reached limit $4. Auto-submit stopped. Confirm and login manually, or it resumes after $5 minutes.",
|
|
"description": "Log - limit reached detail, $1 env, $2 domain, $3 submitted, $4 limit, $5 cooldown min"
|
|
},
|
|
"logSpaTimeout": {
|
|
"message": "SPA dynamic form wait timeout ($1s), stopped",
|
|
"description": "Log - SPA timeout, $1 seconds"
|
|
},
|
|
"envPickerTitle": {
|
|
"message": "Choose which environment to use",
|
|
"description": "Env picker title"
|
|
},
|
|
"defaultEnvName": {
|
|
"message": "Default",
|
|
"description": "Default env name"
|
|
},
|
|
"logGetLockStatusFail": {
|
|
"message": "Failed to get lock status",
|
|
"description": "Log - failed to get lock status"
|
|
},
|
|
"importBookmarkBtnTitle": {
|
|
"message": "Import from bookmarks",
|
|
"description": "Bookmark import button title"
|
|
},
|
|
"bookmarkImportTitle": {
|
|
"message": "Import from bookmarks",
|
|
"description": "Bookmark import dialog title"
|
|
},
|
|
"bookmarkSelectAll": {
|
|
"message": "Select all",
|
|
"description": "Bookmark select all"
|
|
},
|
|
"bookmarkSearchPlaceholder": {
|
|
"message": "Search bookmarks",
|
|
"description": "Bookmark search placeholder"
|
|
},
|
|
"bookmarkImportBtn": {
|
|
"message": "Import selected",
|
|
"description": "Bookmark import confirm button"
|
|
},
|
|
"bookmarkLoadFail": {
|
|
"message": "Failed to load bookmarks",
|
|
"description": "Toast - bookmark load failed"
|
|
},
|
|
"toastBookmarkImported": {
|
|
"message": "Imported $1, skipped $2",
|
|
"description": "Toast - bookmark import result, $1 imported, $2 skipped"
|
|
}
|
|
}
|