Files
auto-login/_locales/en/messages.json
T

799 lines
24 KiB
JSON
Raw Normal View History

2026-09-14 15:38:07 +08:00
{
"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"
},
2026-09-14 17:51:40 +08:00
"editConfigTitle": {
"message": "Edit Domain Configuration",
"description": "Edit config section title"
},
2026-09-14 15:38:07 +08:00
"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": {
2026-09-16 15:27:18 +08:00
"message": "Empty=auto find, or paste element HTML / CSS selector",
2026-09-14 15:38:07 +08:00
"description": "Username selector placeholder"
},
"usernameSelectorHelp": {
2026-09-16 15:27:18 +08:00
"message": "Paste the input's DOM node, or a CSS selector; empty = auto find.",
2026-09-14 15:38:07 +08:00
"description": "Username selector help"
},
"passwordSelectorLabel": {
"message": "Password Input Selector",
"description": "Password selector label"
},
"passwordSelectorPlaceholder": {
2026-09-16 15:27:18 +08:00
"message": "Empty=auto find, or paste element HTML / CSS selector",
2026-09-14 15:38:07 +08:00
"description": "Password selector placeholder"
},
"passwordSelectorHelp": {
2026-09-16 15:27:18 +08:00
"message": "Paste the input's DOM node, or a CSS selector; empty = auto find.",
2026-09-14 15:38:07 +08:00
"description": "Password selector help"
},
"submitSelectorLabel": {
"message": "Login Button Selector",
"description": "Submit selector label"
},
"submitSelectorPlaceholder": {
2026-09-16 15:27:18 +08:00
"message": "Empty=auto find, or paste element HTML / CSS selector",
2026-09-14 15:38:07 +08:00
"description": "Submit selector placeholder"
},
"submitSelectorHelp": {
2026-09-16 15:27:18 +08:00
"message": "Paste the button's DOM node, or a CSS selector; empty = auto find.",
2026-09-14 15:38:07 +08:00
"description": "Submit selector help"
},
"addConfigBtn": {
"message": "Add Configuration",
"description": "Add config button"
},
"updateConfigBtn": {
"message": "Update Configuration",
"description": "Update config button"
},
"configuredDomainsTitle": {
2026-09-15 01:09:11 +08:00
"message": "Domain List",
"description": "Domain list section title"
2026-09-14 15:38:07 +08:00
},
"exportBtn": {
"message": "Export",
"description": "Export button"
},
"importBtn": {
"message": "Import",
"description": "Import button"
},
2026-09-15 00:31:34 +08:00
"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"
},
2026-09-14 15:38:07 +08:00
"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"
},
2026-09-15 00:31:34 +08:00
"okBtn": {
"message": "OK",
"description": "OK button (submit in dialog)"
},
2026-09-14 15:38:07 +08:00
"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"
},
"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"
},
"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"
},
"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"
},
"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-login attempts reached limit. Fill only, no auto-submit. Confirm and click login manually.",
"description": "Log - attempt exceeded"
},
"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-login failed $3 times, reached limit $4. Auto-submit stopped. Confirm and login manually, or retry after $5 minutes.",
"description": "Log - attempt exceeded detail, $1 env, $2 domain, $3 fails, $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"
}
}