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" : {
2026-09-16 17:53:32 +08:00
"message" : "New Environment" ,
2026-09-14 15:38:07 +08:00
"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"
},
2026-09-18 10:08:27 +08:00
"confirmDeleteConfig" : {
"message" : "Delete \"$1\"?" ,
"description" : "Confirm delete domain config, $1 alias or domain"
},
2026-09-14 15:38:07 +08:00
"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"
},
2026-09-18 00:05:20 +08:00
"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"
},
2026-09-14 15:38:07 +08:00
"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"
},
2026-09-16 16:55:33 +08:00
"moreActionsTitle" : {
"message" : "More actions" ,
"description" : "More actions button title"
},
2026-09-14 15:38:07 +08:00
"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"
},
2026-09-18 10:08:27 +08:00
"fillToastMsg" : {
"message" : "Username and password filled" ,
"description" : "Fill complete lightweight toast"
},
2026-09-14 15:38:07 +08:00
"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" : {
2026-09-18 00:05:20 +08:00
"message" : "Auto-submit reached its limit. Fill only, no auto-submit. Confirm and click login manually." ,
"description" : "Log - auto submit limit reached"
2026-09-14 15:38:07 +08:00
},
"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" : {
2026-09-18 00:05:20 +08:00
"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"
2026-09-14 15:38:07 +08:00
},
"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"
2026-09-16 17:31:26 +08:00
},
"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"
2026-09-14 15:38:07 +08:00
}
}