mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-28 05:46:36 +08:00
497edfd564
- 一次性回灌:主包最新内容(含 565 个未同步键)全量写回 6 个 fragment 文件,fragments 成为完整唯一源;新增 core fragment(common/docs/home 等 9 个此前仅存在于主包的命名空间)
- merge-i18n-fragments.mjs 改为从零重建主包(不再以主包为基础),重建结果与原主包语义零差异
- 主包 messages/{zh-CN,en}.json 移出跟踪并加入 .gitignore
- 生成接入入口:predev/prebuild/prebuild:embed/precheck:i18n 钩子 + Makefile code-check 与 checks.sh vitest 前置生成
- 修复既有漂移:configVersions.title 现以 fragments(Config versions)为准
1464 lines
70 KiB
JSON
1464 lines
70 KiB
JSON
{
|
|
"auth": {
|
|
"login": {
|
|
"title": "Sign in to your account",
|
|
"description": "Welcome back. Enter your credentials to continue.",
|
|
"username": "Email or username",
|
|
"usernamePlaceholder": "Enter email or username",
|
|
"password": "Password",
|
|
"passwordPlaceholder": "Enter your password",
|
|
"showPassword": "Show password",
|
|
"hidePassword": "Hide password",
|
|
"submit": "Sign in",
|
|
"submitting": "Signing in…",
|
|
"success": "Signed in successfully",
|
|
"failed": "Sign-in failed. Please try again.",
|
|
"incomplete": "Email/username or password is incomplete",
|
|
"incompleteDesc": "Please enter both email/username and password before signing in",
|
|
"capPending": "Human verification is still running…",
|
|
"capRequired": "Please complete human verification first",
|
|
"orUse": "Or continue with",
|
|
"oauthLogin": "Sign in with {name}",
|
|
"oauthFailed": "Third-party sign-in failed",
|
|
"noAccount": "Don't have an account?",
|
|
"registerNow": "Register",
|
|
"codeSent": "A sign-in code was sent to your email",
|
|
"codeTipMasked": "A sign-in code was sent to your secure email {email}.",
|
|
"codeTipGeneric": "Please enter your sign-in verification code.",
|
|
"needBind": "Your third-party account is not linked to a local account, and registration is closed. Sign in with an existing local account to bind it.",
|
|
"bindSuccess": "Account bound",
|
|
"checkingSession": "Checking sign-in status",
|
|
"checkingSessionDesc": "Please wait while we confirm your session...",
|
|
"redirecting": "Redirecting to the console...",
|
|
"verifyingCredentials": "Verifying credentials",
|
|
"establishingSession": "Please wait while we establish a secure session..."
|
|
},
|
|
"otp": {
|
|
"title": "Verify your sign-in",
|
|
"description": "Enter the 6-digit code sent to your secure email.",
|
|
"code": "Verification code",
|
|
"resend": "Resend",
|
|
"resendIn": "Resend in {seconds}s",
|
|
"submit": "Verify",
|
|
"submitting": "Verifying…",
|
|
"help": "Having trouble signing in?",
|
|
"contactSupport": "Contact support"
|
|
},
|
|
"register": {
|
|
"title": "Create your account",
|
|
"description": "Fill in the details below to get started.",
|
|
"username": "Username",
|
|
"usernamePlaceholder": "Enter username",
|
|
"nickname": "Nickname",
|
|
"nicknamePlaceholder": "Enter nickname",
|
|
"email": "Email",
|
|
"emailPlaceholder": "Enter email",
|
|
"password": "Password",
|
|
"passwordPlaceholder": "Enter password (at least 8 characters)",
|
|
"emailCode": "Email verification code",
|
|
"emailCodePlaceholder": "Enter 6-digit code",
|
|
"getCode": "Get code",
|
|
"resendIn": "Resend in {seconds}s",
|
|
"submit": "Create account",
|
|
"submitting": "Creating…",
|
|
"success": "Registered and signed in",
|
|
"failed": "Registration failed. Please try again.",
|
|
"closed": "Registration is currently disabled",
|
|
"codeSent": "Verification code sent to your email",
|
|
"sendCodeFailed": "Failed to send verification code",
|
|
"emailRequired": "Please enter an email address first",
|
|
"emailInvalid": "Please enter a valid email address",
|
|
"usernamePasswordRequired": "Username and password are required",
|
|
"passwordTooShort": "Password must be at least 8 characters",
|
|
"emailEmpty": "Email is required",
|
|
"codeRequired": "Verification code is required",
|
|
"capPending": "Human verification is still running…",
|
|
"capRequired": "Please complete human verification first",
|
|
"hasAccount": "Already have an account?",
|
|
"backToLogin": "Back to sign in"
|
|
},
|
|
"capWidget": {
|
|
"clickToStart": "Click to start verification",
|
|
"waitingVerification": "Waiting for verification…",
|
|
"verifying": "Completing verification…",
|
|
"verificationPassed": "Verification passed",
|
|
"verificationFailed": "Verification failed",
|
|
"retry": "Retry"
|
|
},
|
|
"requireAuth": {
|
|
"accessDenied": "Access denied",
|
|
"noPermission": "You don't have permission to access this page"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"categories": {
|
|
"personal": "Personal",
|
|
"account": "Account"
|
|
},
|
|
"items": {
|
|
"profile": "Profile",
|
|
"profileDesc": "View your account information",
|
|
"accessToken": "Access tokens",
|
|
"accessTokenDesc": "Manage personal tokens for API access",
|
|
"notifications": "Notifications",
|
|
"notificationsDesc": "Manage your notification preferences",
|
|
"appearance": "Appearance",
|
|
"appearanceDesc": "Customize theme and display"
|
|
},
|
|
"appearance": {
|
|
"breadcrumb": "Appearance",
|
|
"themeMode": "Theme mode",
|
|
"themeModeDesc": "Choose the overall light or dark theme",
|
|
"modeLight": "Light",
|
|
"modeDark": "Dark",
|
|
"modeSystem": "System",
|
|
"interface": "Interface",
|
|
"interfaceDesc": "Choose color scheme and visual style",
|
|
"switched": "Appearance switched to {name}",
|
|
"switchFailed": "Failed to switch appearance",
|
|
"language": "Language",
|
|
"languageDesc": "Choose the interface language",
|
|
"comingSoon": "Coming soon",
|
|
"comingSoonBody": "More customization options are on the way…"
|
|
},
|
|
"notifications": {
|
|
"breadcrumb": "Notifications",
|
|
"display": "Notification display",
|
|
"displayDesc": "Configure notification-related display options",
|
|
"showBell": "Show notification bell",
|
|
"showBellDesc": "Show the notification bell in the top navigation bar"
|
|
},
|
|
"accessToken": {
|
|
"breadcrumb": "Access tokens",
|
|
"title": "Personal access tokens",
|
|
"generate": "Generate token",
|
|
"securityTitle": "Security note:",
|
|
"securityBody": "Access tokens have full API permissions for your account. Never share them via source control, chat, or public channels. Create tokens on demand and revoke unused ones promptly.",
|
|
"listTitle": "Active tokens",
|
|
"listDesc": "All currently available access tokens",
|
|
"userToken": "User token",
|
|
"empty": "You have not created any access tokens yet",
|
|
"generateFirst": "Generate your first token",
|
|
"createTitle": "Generate token",
|
|
"createDesc": "Give the token a recognizable name for easier management later.",
|
|
"name": "Token name",
|
|
"adminHint": "When enabled, this token can access /admin/** endpoints (off by default)",
|
|
"generateAction": "Generate",
|
|
"readyTitle": "Token secret is ready",
|
|
"readyBody": "This is the only time you can view the plaintext secret. Copy it now and store it securely.",
|
|
"nameRequired": "Please enter a token name",
|
|
"createSuccess": "Access token created",
|
|
"createFailed": "Failed to create access token",
|
|
"deleteSuccess": "Access token revoked",
|
|
"deleteFailed": "Failed to delete access token",
|
|
"rotateSuccess": "Access token rotated; the old secret is invalid",
|
|
"rotateFailed": "Failed to rotate access token",
|
|
"deleteConfirm": "Revoke token “{name}”? It will stop working immediately and cannot be recovered.",
|
|
"rotateConfirm": "Rotate the secret for token “{name}”? A new secret will be issued and the old one will stop working immediately.",
|
|
"deleteConfirmTitle": "Confirm token revocation",
|
|
"rotateConfirmTitle": "Confirm token rotation",
|
|
"confirmRevoke": "Confirm revoke",
|
|
"confirmRotate": "Confirm rotate",
|
|
"revoking": "Revoking...",
|
|
"rotating": "Rotating...",
|
|
"subtitle": "Manage API access secrets for development or third-party tools",
|
|
"adminBadge": "Admin",
|
|
"adminPermission": "Admin permission",
|
|
"createdAt": "Created: {date}",
|
|
"copy": "Copy",
|
|
"rotate": "Rotate",
|
|
"revoke": "Revoke",
|
|
"copySuccess": "Copied",
|
|
"copyFailed": "Copy failed",
|
|
"namePlaceholder": "e.g. my-development-key",
|
|
"generating": "Generating…",
|
|
"importantTitle": "Important:",
|
|
"savedConfirm": "I have copied and stored it securely"
|
|
},
|
|
"profile": {
|
|
"passwordChangeSuccess": "Password changed successfully",
|
|
"passwordChangeFailed": "Failed to change password. Please try again.",
|
|
"passwordMismatch": "New passwords do not match",
|
|
"passwordTooShort": "New password must be at least 8 characters",
|
|
"profileUpdateSuccess": "Profile updated successfully",
|
|
"profileUpdateFailed": "Failed to update profile. Please try again.",
|
|
"bindSourceFailed": "Failed to bind authentication source",
|
|
"avatarUploadSuccess": "Avatar uploaded. Click save to apply.",
|
|
"avatarUploadFailed": "Failed to upload avatar",
|
|
"genderMale": "Male",
|
|
"genderFemale": "Female",
|
|
"genderSecret": "Prefer not to say",
|
|
"title": "Profile",
|
|
"userNotFound": "User information not found",
|
|
"breadcrumbSettings": "Settings",
|
|
"breadcrumbProfile": "Profile",
|
|
"basicInfo": "Basic information",
|
|
"basicInfoDesc": "Your account basic information",
|
|
"editProfile": "Edit profile",
|
|
"account": "Account",
|
|
"nickname": "Nickname",
|
|
"notSet": "Not set",
|
|
"uid": "User ID (UID)",
|
|
"email": "Email",
|
|
"notBound": "Not bound",
|
|
"phone": "Phone number",
|
|
"gender": "Gender",
|
|
"website": "Website",
|
|
"location": "Location",
|
|
"isAdmin": "Administrator",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"bio": "Bio",
|
|
"bioDefault": "This user hasn't written anything yet.",
|
|
"changePassword": "Change password",
|
|
"changePasswordDesc": "Change your account password for security. Must be at least 8 characters.",
|
|
"passwordRiskWarning": "Password security warning",
|
|
"mustChangePassword": "For your account security, you must change the initial password.",
|
|
"currentPassword": "Current password",
|
|
"currentPasswordPlaceholder": "Enter current password",
|
|
"newPassword": "New password",
|
|
"newPasswordPlaceholder": "New password (at least 8 characters)",
|
|
"confirmNewPassword": "Confirm new password",
|
|
"confirmNewPasswordPlaceholder": "Confirm new password",
|
|
"submitting": "Submitting...",
|
|
"confirmChange": "Confirm change",
|
|
"thirdPartyBinding": "Third-party account binding",
|
|
"thirdPartyBindingDesc": "Manage and link third-party authorized accounts for quick login and verification",
|
|
"boundAccounts": "Bound accounts",
|
|
"noAccountIdentifier": "No account identifier provided",
|
|
"unbind": "Unbind",
|
|
"bindingRemoved": "Binding removed",
|
|
"noBoundAccounts": "No third-party accounts bound yet",
|
|
"bindNewAccount": "Bind new account",
|
|
"bindSource": "Bind {name}",
|
|
"noAvailableSources": "No available third-party authentication sources",
|
|
"editProfileTitle": "Edit profile",
|
|
"editProfileDesc": "Update your basic information. Changes take effect immediately after saving.",
|
|
"uploadAvatar": "Click to upload/change avatar",
|
|
"nicknamePlaceholder": "Enter your nickname",
|
|
"emailPlaceholder": "Enter your email",
|
|
"phonePlaceholder": "Enter phone number",
|
|
"genderPlaceholder": "Select gender",
|
|
"locationPlaceholder": "e.g. New York",
|
|
"bioPlaceholder": "Tell us about yourself...",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"saveChanges": "Save changes",
|
|
"cropAvatar": "Crop avatar",
|
|
"cropAvatarDesc": "Adjust the avatar position and size to fit within the centered circular area."
|
|
},
|
|
"botBinding": {
|
|
"title": "Bind a bot",
|
|
"description": "Link your Telegram or QQ private-chat identity to this account so messages you send the bot can be saved.",
|
|
"bound": "Bound",
|
|
"empty": "No bots bound yet",
|
|
"unbind": "Unbind",
|
|
"bind": "Enter pairing code",
|
|
"bindDialogTitle": "Bind a bot",
|
|
"bindDialogDescription": "Choose an enabled channel and enter the pairing code the bot sent you.",
|
|
"selectChannel": "Select a channel",
|
|
"pairingCode": "Pairing code",
|
|
"pairingCodePlaceholder": "ABCD-EFGH",
|
|
"submit": "Bind",
|
|
"cancel": "Cancel",
|
|
"bindSuccess": "Bound successfully",
|
|
"bindFailed": "Failed to bind",
|
|
"unbindSuccess": "Unbound",
|
|
"unbindFailed": "Failed to unbind",
|
|
"platformUserId": "Platform user ID",
|
|
"noChannels": "No channels available. Ask an admin to add one.",
|
|
"typeTelegram": "Telegram",
|
|
"typeQQ": "QQ",
|
|
"loadFailed": "Failed to load bindings"
|
|
},
|
|
"security": {
|
|
"passwordLoginEnabled": "Allow password login",
|
|
"passwordLoginEnabledDesc": "When disabled, only third-party OIDC authentication sources are available for login.",
|
|
"registrationEnabled": "Allow registration",
|
|
"registrationEnabledDesc": "When disabled, new users cannot self-register.",
|
|
"passwordRegisterEnabled": "Allow password registration",
|
|
"passwordRegisterEnabledDesc": "When disabled, accounts can only be created by admins or linked via third-party auth.",
|
|
"oidcLoginEnabled": "Allow OIDC login",
|
|
"oidcLoginEnabledDesc": "When disabled, all third-party OIDC login buttons will be hidden.",
|
|
"emailLoginVerification": "Email login verification",
|
|
"emailLoginVerificationDesc": "When enabled, password login requires a 6-digit verification code sent via email.",
|
|
"emailRegisterVerification": "Email registration verification",
|
|
"emailRegisterVerificationDesc": "When enabled, registration requires a 6-digit verification code sent via email.",
|
|
"loginSessionTTLUpdated": "Login session duration updated",
|
|
"updateConfigFailed": "Failed to update configuration",
|
|
"invalidHours": "Please enter a valid number of hours (positive integer)",
|
|
"securityConfigUpdated": "Security configuration updated",
|
|
"authSourceStatusUpdated": "Authentication source status updated",
|
|
"toggleStatusFailed": "Failed to toggle status",
|
|
"authSourceDeleted": "Authentication source deleted",
|
|
"deleteAuthSourceFailed": "Failed to delete authentication source",
|
|
"captchaConfigSaved": "CAPTCHA configuration saved",
|
|
"saveConfigFailed": "Failed to save configuration",
|
|
"loginRegistrationSettings": "Login / Registration settings",
|
|
"loginRegistrationSettingsDesc": "Configure login restrictions and user self-registration permissions",
|
|
"loginSessionTTL": "Login session duration",
|
|
"loginSessionTTLDesc": "Configure how long login sessions persist in the browser. Set to \"Off\" to sign out when the browser closes.",
|
|
"selectRetentionTime": "Select retention time",
|
|
"sessionOff": "Off (sign out when browser closes)",
|
|
"session7Days": "7 days",
|
|
"session30Days": "30 days",
|
|
"sessionNeverExpire": "Never expire",
|
|
"sessionCustom": "Custom duration",
|
|
"hoursPlaceholder": "hours",
|
|
"authSourceManagement": "Authentication source management",
|
|
"authSourceManagementDesc": "Add, modify, and enable custom OIDC authentication sources",
|
|
"addAuthSource": "Add authentication source",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"identifier": "Identifier",
|
|
"type": "Type",
|
|
"secretConfigured": "Secret configured",
|
|
"secretNotConfigured": "Secret not configured",
|
|
"deleteAuthSourceConfirm": "Delete authentication source “{name}”? This cannot be undone.",
|
|
"deleteAuthSourceTitle": "Confirm delete authentication source",
|
|
"confirmDelete": "Confirm delete",
|
|
"deleting": "Deleting...",
|
|
"noAuthSources": "No authentication sources configured. Click the button above to add one.",
|
|
"captchaConfig": "CAPTCHA configuration (Cap CAPTCHA)",
|
|
"captchaConfigDesc": "Configure Proof-of-Work (PoW) based invisible CAPTCHA to protect login from brute-force and credential-stuffing attacks",
|
|
"autoStartSolving": "Start solving automatically when page loads",
|
|
"challengeCount": "Challenge count",
|
|
"challengeCountDesc": "Number of challenges the client must solve. Default 1, recommended 1 to 5",
|
|
"challengeDifficulty": "Difficulty",
|
|
"challengeDifficultyDesc": "PoW prefix hash bits; each increment doubles computation time. Default 4, recommended 4",
|
|
"challengeSize": "Salt size",
|
|
"challengeSizeDesc": "Challenge salt obfuscation character length. Default 32",
|
|
"challengeTTL": "Challenge TTL (seconds)",
|
|
"challengeTTLDesc": "Challenge validity period. Default 600s (10 minutes)",
|
|
"tokenTTL": "Token TTL (seconds)",
|
|
"tokenTTLDesc": "Validity period of the signed login token after PoW completion. Default 1200s (20 minutes)",
|
|
"saving": "Saving...",
|
|
"saveConfig": "Save configuration"
|
|
},
|
|
"system": {
|
|
"addressAutoDetected": "Current domain detected and filled automatically",
|
|
"configUpdated": "Configuration updated",
|
|
"updateConfigFailed": "Failed to update configuration",
|
|
"generalConfigSaved": "General configuration saved",
|
|
"saveConfigFailed": "Failed to save configuration",
|
|
"smtpConfigSaved": "SMTP mail configuration saved",
|
|
"connectingTest": "Sending test request...",
|
|
"testEmailSent": "Test email sent successfully",
|
|
"sendFailedCheckConfig": "Send failed. Please check configuration and logs.",
|
|
"testEmailFailed": "Failed to send test email",
|
|
"requestFailed": "Request failed",
|
|
"requestError": "[Request error]",
|
|
"testRequestFailed": "Test request failed",
|
|
"enterTargetEmail": "Enter target email address",
|
|
"generalSettings": "General settings",
|
|
"generalSettingsDesc": "Configure site identity, server address, and search engine indexing policy",
|
|
"siteName": "Site name",
|
|
"siteNameDesc": "Used in page titles, login/register pages, admin panel, and system emails.",
|
|
"serverAddress": "Server address",
|
|
"useCurrentDomain": "Use current domain",
|
|
"serverAddressDesc": "Restrict allowed API origins; leave empty to allow any origin.",
|
|
"searchEngineIndexing": "Search engine indexing",
|
|
"indexingAllowed": "Allow indexing",
|
|
"indexingDenied": "Deny indexing",
|
|
"searchEngineIndexingDesc": "Control whether Google, Baidu, Bing and other search engines can index public pages.",
|
|
"addressChangeWarning": "Changing the address affects CORS policy. Please enter the full URL with protocol and domain.",
|
|
"saving": "Saving...",
|
|
"saveConfig": "Save configuration",
|
|
"smtpSettings": "SMTP mail settings",
|
|
"smtpSettingsDesc": "Configure the system's email sending service (SMTP)",
|
|
"smtpHost": "SMTP host",
|
|
"smtpPort": "SMTP port",
|
|
"smtpUsername": "SMTP username",
|
|
"smtpPassword": "SMTP password",
|
|
"smtpPasswordMasked": "•••••• (configured, leave empty to keep)",
|
|
"smtpPasswordPlaceholder": "Enter password",
|
|
"testSend": "Send test",
|
|
"smtpTestTitle": "SMTP send test",
|
|
"smtpTestDesc": "Enter an email address to receive the test message. The system will use the SMTP configuration you've entered in the form above.",
|
|
"targetEmail": "Target email address",
|
|
"connectionLog": "Connection and transmission log",
|
|
"testSuccess": "Test succeeded! Email sent successfully.",
|
|
"testFailed": "Test failed",
|
|
"close": "Close",
|
|
"testing": "Testing...",
|
|
"startTest": "Start test"
|
|
},
|
|
"other": {
|
|
"menuDisplayUpdated": "Menu display configuration updated",
|
|
"updateConfigFailed": "Failed to update configuration",
|
|
"menuDisplayManagement": "Menu display management",
|
|
"menuDisplayManagementDesc": "Configure the visibility of sidebar menu items for all logged-in users.",
|
|
"notHideable": "Cannot be hidden",
|
|
"securityTipTitle": "Security note:",
|
|
"securityTipDesc": "To prevent admins from being locked out after hiding \"System Settings\", the system restricts disabling this menu item. All other menu items can be freely toggled. When hidden, empty group headers are also automatically hidden.",
|
|
"groupBusiness": "Business menu",
|
|
"groupAdmin": "Admin menu",
|
|
"groupDocs": "Docs menu",
|
|
"descDashboard": "View multi-dimensional charts for edge requests, visitors, and traffic",
|
|
"descNodes": "Register and manage reverse-proxy edge node status",
|
|
"descProxyRoutes": "Configure and publish proxy routes, load balancing, and origin bindings",
|
|
"descWebsites": "Configure root domains and view linked website details",
|
|
"descCertificates": "Manage and distribute website SSL/TLS certificates",
|
|
"descDnsAccounts": "Configure Cloudflare/Alidns and other DNS provider API credentials",
|
|
"descOrigins": "Centrally maintain backend origin server groups",
|
|
"descWaf": "Configure WAF custom rules and rate limits",
|
|
"descIpGroups": "Manage allow/deny IP sets used by WAF rules",
|
|
"descPages": "Host and publish static site projects with automatic domain binding",
|
|
"descConfigVersions": "View rule snapshots and perform hot updates or rollbacks",
|
|
"descAccessLogs": "Browse real-time edge request access details",
|
|
"descPerformance": "Configure cache, image compression, and other acceleration policies",
|
|
"descUsers": "View and manage system users and their status",
|
|
"descTasks": "View and schedule asynchronous and cron tasks",
|
|
"descStorage": "Manage file storage and clean unused files",
|
|
"descDatabase": "Monitor the physical database, browse tables, and run interactive SQL",
|
|
"descPush": "Configure and send system notifications",
|
|
"descLogs": "View async task execution logs and system runtime status",
|
|
"descSystem": "Manage core system key-value configuration",
|
|
"descAdminSettings": "Configure captcha, email, and menu visibility",
|
|
"descUsageDocs": "Deployment and operations guide for developers"
|
|
},
|
|
"templates": {
|
|
"templateCreated": "Notification template created",
|
|
"createTemplateFailed": "Failed to create template",
|
|
"templateSaved": "Notification template saved",
|
|
"updateTemplateFailed": "Failed to update template",
|
|
"templateDeleted": "Notification template deleted",
|
|
"deleteTemplateFailed": "Failed to delete template",
|
|
"templateManagement": "Notification template management",
|
|
"templateManagementDesc": "Configure and edit notification email/SMS templates with dynamic variable rendering",
|
|
"addTemplate": "Add template",
|
|
"systemBuiltIn": "System built-in",
|
|
"custom": "Custom",
|
|
"identifier": "Identifier",
|
|
"subject": "Subject",
|
|
"deleteTemplateConfirm": "Delete template “{name}”? This cannot be undone.",
|
|
"deleteTemplateTitle": "Confirm delete template",
|
|
"confirmDelete": "Confirm delete",
|
|
"deleting": "Deleting...",
|
|
"noTemplates": "No notification templates configured. Click the button above to add one.",
|
|
"editTemplate": "Edit notification template",
|
|
"addTemplateTitle": "Add notification template",
|
|
"templateDesc": "Configure template rendering logic. Supports Go `text/template` syntax (e.g. `{{.Code}}` for verification code).",
|
|
"templateKey": "Template key",
|
|
"templateKeyDesc": "Unique identifier used to reference this template in code.",
|
|
"templateName": "Template name",
|
|
"templateNameDesc": "Human-readable name for admin identification.",
|
|
"templateType": "Template type",
|
|
"templateTypeDesc": "Template category. Currently supports `email`.",
|
|
"templateSubject": "Subject",
|
|
"templateSubjectDesc": "Email subject line (effective when type is email).",
|
|
"templateDescription": "Description and variable documentation",
|
|
"templateContent": "Content",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"saveConfig": "Save configuration"
|
|
},
|
|
"info": {
|
|
"upgradeVerified": "Upgrade package verified. Service is restarting.",
|
|
"applyUpgradeFailed": "Failed to apply upgrade",
|
|
"appUpdate": "Application update",
|
|
"appUpdateDesc": "Check upstream GitHub Actions Release and upgrade the current service",
|
|
"newVersionAvailable": "New version available",
|
|
"alreadyLatest": "Already up to date",
|
|
"cannotGetVersion": "Unable to fetch upstream version info",
|
|
"recheck": "Re-check",
|
|
"currentVersion": "Current version",
|
|
"latestVersion": "Latest version",
|
|
"buildTime": "Build time",
|
|
"platform": "Platform",
|
|
"upstreamRepo": "Upstream repo",
|
|
"releaseAsset": "Release asset",
|
|
"releaseNotes": "Release notes",
|
|
"checkUpdate": "Check for update",
|
|
"viewRelease": "View release",
|
|
"upgradeNow": "Upgrade now",
|
|
"upgradeTo": "Upgrade to {version}?",
|
|
"upgradeDesc": "The service will download and verify {asset}, then replace the current binary and restart. Ensure the install directory is writable and the service supports in-place restart.",
|
|
"cancel": "Cancel",
|
|
"confirmUpgrade": "Confirm upgrade",
|
|
"devBuildNoUpgrade": "Development builds have no comparable release version. Auto-upgrade is not available.",
|
|
"platformNotSupported": "Auto-upgrade is not supported on this platform. Please upgrade manually from the Release page.",
|
|
"noUpgradeNeeded": "Current version does not need an upgrade."
|
|
},
|
|
"operation": {
|
|
"whitelistUpdated": "File access whitelist updated",
|
|
"updateWhitelistFailed": "Failed to update whitelist",
|
|
"fileAccessControl": "File access control",
|
|
"fileAccessControlDesc": "Configure file business types that can be accessed without login. Files not in the whitelist require authentication.",
|
|
"addAuthFreeType": "Add auth-free type:",
|
|
"selectBusinessType": "Select business type...",
|
|
"allTypesAdded": "All types added",
|
|
"currentAuthFreeList": "Current auth-free list",
|
|
"whitelistEmpty": "Whitelist is empty. All file types require login.",
|
|
"typeAvatar": "Avatar (avatar)",
|
|
"typeAttachment": "Attachment (attachment)",
|
|
"typeDoc": "Document (doc)",
|
|
"typeGeneric": "Generic (generic)",
|
|
"logRetentionTitle": "Log retention",
|
|
"logRetentionDesc": "Configure retention days for each log database. Expired logs are cleaned automatically after switching the log store.",
|
|
"days": "days",
|
|
"save": "Save",
|
|
"logRetentionUpdated": "Log retention updated",
|
|
"logRetentionUpdateFailed": "Failed to update log retention",
|
|
"retentionInvalid": "{label} must be an integer greater than or equal to 1",
|
|
"retentionPostgresDesc": "Retention days for access logs and observability metrics",
|
|
"retentionSqliteDesc": "SQLite log retention days",
|
|
"retentionClickhouseDesc": "ClickHouse log retention days"
|
|
},
|
|
"authSourceModal": {
|
|
"authSourceSaved": "Authentication source saved",
|
|
"saveAuthSourceFailed": "Failed to save authentication source",
|
|
"editAuthSource": "Edit authentication source",
|
|
"addAuthSource": "Add authentication source",
|
|
"editAuthSourceDesc": "Modify custom OIDC authentication source parameters.",
|
|
"addAuthSourceDesc": "Configure a new custom OIDC authentication source.",
|
|
"identifier": "Identifier (English name)",
|
|
"displayName": "Display name",
|
|
"keepOriginalIfEmpty": "Leave empty to keep current value",
|
|
"discoveryURL": "Discovery URL (OIDC issuer URL)",
|
|
"iconURL": "Icon URL (optional)",
|
|
"enableAuthSource": "Enable authentication source",
|
|
"enableAuthSourceDesc": "When enabled, it will appear on the login page and account binding.",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save"
|
|
}
|
|
},
|
|
"admin": {
|
|
"files": {
|
|
"pageTitle": "Storage",
|
|
"tabStats": "File statistics",
|
|
"tabList": "File list",
|
|
"tabStorage": "Storage config",
|
|
"stats": {
|
|
"noData": "No upload data yet",
|
|
"noDataDesc": "Upload files to see capacity and distribution analysis here.",
|
|
"totalFiles": "Total files",
|
|
"countUnit": "",
|
|
"totalFilesDesc": "Total number of available uploaded files",
|
|
"totalSize": "Storage used",
|
|
"totalSizeDesc": "Total disk/S3 space occupied by files",
|
|
"weeklyNewFiles": "New files (7 days)",
|
|
"weeklyNewFilesDesc": "Files uploaded successfully in the last 7 days",
|
|
"weeklyNewSize": "New size (7 days)",
|
|
"weeklyNewSizeDesc": "Storage bandwidth consumed by uploads in the last 7 days",
|
|
"trendTitle": "7-day upload trend",
|
|
"trendDesc": "Daily upload statistics over the past week",
|
|
"trendCount": "New count",
|
|
"trendSize": "New size (MB)",
|
|
"chartLabelCount": "New files",
|
|
"chartLabelSize": "New size",
|
|
"countDistTitle": "File format distribution (count)",
|
|
"countDistDesc": "Percentage of files by format type",
|
|
"noCategoryData": "No category data",
|
|
"maxCountHint": "The most common file type is “{name}” with {count} files uploaded.",
|
|
"sizeDistTitle": "File format distribution (size)",
|
|
"sizeDistDesc": "Percentage of storage by format type",
|
|
"noSizeData": "No size data",
|
|
"maxSizeHint": "The largest storage consumer is “{name}”, using {size} of storage.",
|
|
"catImages": "Images",
|
|
"catVideos": "Videos",
|
|
"catAudio": "Audio",
|
|
"catDocuments": "Documents",
|
|
"catArchives": "Archives",
|
|
"catOthers": "Others",
|
|
"none": "None"
|
|
},
|
|
"list": {
|
|
"searchPlaceholder": "Search file name...",
|
|
"selectAll": "Select all on this page",
|
|
"deselectAll": "Deselect all",
|
|
"selectedCount": "{count} selected",
|
|
"batchDownload": "Download as archive",
|
|
"batchDownloadSuccess": "Batch download started",
|
|
"batchDownloadFailed": "Batch download failed",
|
|
"totalFiles": "{count} files total",
|
|
"noMatch": "No matching files",
|
|
"noFiles": "No files uploaded yet",
|
|
"colPreview": "Preview",
|
|
"colName": "File name",
|
|
"colPath": "Path",
|
|
"colType": "Business type",
|
|
"colMime": "MIME type",
|
|
"colSize": "Size",
|
|
"colUploadedAt": "Uploaded at",
|
|
"colActions": "Actions",
|
|
"viewDetail": "View details",
|
|
"download": "Download",
|
|
"delete": "Delete",
|
|
"prevPage": "Previous",
|
|
"nextPage": "Next",
|
|
"detailTitle": "File details",
|
|
"detailDesc": "View the complete metadata and configuration properties of the file.",
|
|
"detailId": "File ID",
|
|
"detailName": "File name",
|
|
"detailPath": "Storage path",
|
|
"detailSize": "Size",
|
|
"bytes": "bytes",
|
|
"detailMime": "MIME type",
|
|
"detailExtension": "Extension",
|
|
"detailBizType": "Business type",
|
|
"detailDriver": "Storage driver",
|
|
"detailUploaderId": "Uploader ID",
|
|
"detailUploadedAt": "Uploaded at",
|
|
"detailMetadata": "Extra metadata",
|
|
"deleteTitle": "Confirm file deletion",
|
|
"deleteConfirm": "Delete file “{name}”? This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirmDelete": "Confirm delete",
|
|
"deleteSuccess": "File deleted",
|
|
"deleteFailed": "Delete failed",
|
|
"extensionFile": "{ext} file"
|
|
},
|
|
"storage": {
|
|
"maintenanceMode": "Storage maintenance mode",
|
|
"maintenanceDesc": "{source} → {target}. During migration, files are read-only; upload, delete, and cleanup are disabled.",
|
|
"migrationProgress": "Check task execution log for migration progress: {taskId}",
|
|
"notDispatched": "Not dispatched yet",
|
|
"retryMigration": "Retry migration",
|
|
"fileStorage": "File storage",
|
|
"fileStorageDesc": "Default is local storage. Configure the storage medium for system files. When switching storage type with existing files, the system enters maintenance mode and migrates files automatically.",
|
|
"storageType": "Storage type",
|
|
"rootDir": "Root directory",
|
|
"endpoint": "Endpoint",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"basePath": "Base path",
|
|
"switchWarning": "⚠️ You've switched storage types. Clicking “Save configuration” will switch the active storage engine and update existing file driver tags. Use “Start migration” only when physical file copying is needed.",
|
|
"saveConfig": "Save configuration",
|
|
"startMigration": "Start migration",
|
|
"keyPrefix": "Object prefix",
|
|
"cdnUrl": "CDN URL",
|
|
"pathStyleDesc": "Self-hosted S3 like MinIO usually requires path-style enabled.",
|
|
"saveSuccess": "Storage configuration saved",
|
|
"saveFailed": "Failed to save storage configuration",
|
|
"migrateSuccess": "Storage migration task dispatched",
|
|
"migrateFailed": "Failed to dispatch storage migration task",
|
|
"retrySuccess": "Storage migration task re-dispatched",
|
|
"retryFailed": "Failed to run storage migration",
|
|
"driverLocal": "Local filesystem",
|
|
"driverS3": "AWS S3",
|
|
"driverR2": "Cloudflare R2",
|
|
"driverMinio": "MinIO",
|
|
"driverOss": "Alibaba Cloud OSS",
|
|
"driverWebdav": "WebDAV",
|
|
"driverUnknown": "Unknown"
|
|
}
|
|
},
|
|
"users": {
|
|
"pageTitle": "Users",
|
|
"createUser": "Create user",
|
|
"colUser": "User",
|
|
"colEmail": "Email",
|
|
"colLastLogin": "Last login",
|
|
"colRegisteredAt": "Registered at",
|
|
"colLastUpdate": "Last update",
|
|
"colActions": "Actions",
|
|
"loadingUsers": "Loading users...",
|
|
"noUsers": "No users found",
|
|
"adminAccount": "Admin account",
|
|
"disableAccount": "Disable account",
|
|
"enableAccount": "Enable account",
|
|
"viewDetail": "View details",
|
|
"editUser": "Edit user",
|
|
"editTitle": "Edit user",
|
|
"editDesc": "Modify user profile, grant/revoke admin access, or reset password.",
|
|
"usernameImmutable": "Username (immutable)",
|
|
"nicknameOptional": "Nickname (optional)",
|
|
"nicknamePlaceholder": "Enter nickname",
|
|
"email": "Email",
|
|
"emailPlaceholder": "Enter email address",
|
|
"resetPasswordOptional": "Reset password (optional)",
|
|
"resetPasswordPlaceholder": "Leave empty to keep current password, or enter new one (at least 8 characters)",
|
|
"adminPermission": "Admin permission",
|
|
"adminPermissionDesc": "When enabled, this account will have admin access.",
|
|
"cannotRevokeSelfAdmin": "Cannot revoke admin permission from the currently logged-in user.",
|
|
"deleteUser": "Delete user",
|
|
"cancel": "Cancel",
|
|
"save": "Save",
|
|
"saving": "Saving...",
|
|
"deleteConfirmTitle": "Confirm user deletion",
|
|
"deleteConfirmDesc": "Delete user {name}? This will remove the account and cannot be undone.",
|
|
"confirmDelete": "Confirm delete",
|
|
"createTitle": "Create user",
|
|
"createDesc": "Create a new local password-login account.",
|
|
"username": "Username",
|
|
"usernamePlaceholder": "Enter username (at least 3 characters)",
|
|
"password": "Password",
|
|
"passwordPlaceholder": "Enter password (at least 8 characters)",
|
|
"enableAccountLabel": "Enable account",
|
|
"enableAccountDesc": "When disabled, this account cannot log in.",
|
|
"create": "Create",
|
|
"creating": "Creating...",
|
|
"userProfile": "User profile",
|
|
"refreshingDetail": "Refreshing details",
|
|
"registeredAt": "Registered at",
|
|
"personalInfo": "Personal info",
|
|
"phone": "Phone",
|
|
"gender": "Gender",
|
|
"location": "Location",
|
|
"website": "Website",
|
|
"bio": "Bio",
|
|
"systemRecords": "System records",
|
|
"accountStatus": "Account status",
|
|
"statusActive": "Active",
|
|
"statusDisabled": "Disabled",
|
|
"isAdmin": "Admin",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"lastLogin": "Last login",
|
|
"lastUpdate": "Last update",
|
|
"banAccount": "Ban account",
|
|
"unbanAccount": "Unban account",
|
|
"search": "Search",
|
|
"searchUserIdPlaceholder": "Enter user ID...",
|
|
"searchUsernamePlaceholder": "Enter username...",
|
|
"searchEmailPlaceholder": "Enter email...",
|
|
"clear": "Clear",
|
|
"status": "Status",
|
|
"statusAll": "All statuses",
|
|
"clearFilters": "Clear filters",
|
|
"totalRecords": "{total} records",
|
|
"perPage": "{count}/page",
|
|
"refreshData": "Refresh data",
|
|
"validation": {
|
|
"emailRequired": "Email is required",
|
|
"emailInvalid": "Invalid email format",
|
|
"passwordTooShort": "Password must be at least 8 characters",
|
|
"usernameRequired": "Username is required",
|
|
"usernameTooShort": "Username must be at least 3 characters",
|
|
"passwordRequired": "Password is required"
|
|
}
|
|
},
|
|
"tasks": {
|
|
"pageTitle": "Tasks",
|
|
"tabTasks": "Task manager",
|
|
"tabSchedules": "Scheduled tasks",
|
|
"tabExecutions": "Execution log",
|
|
"unknownError": "Unknown error",
|
|
"statusPending": "Pending",
|
|
"statusRunning": "Running",
|
|
"statusSucceeded": "Succeeded",
|
|
"statusFailed": "Failed",
|
|
"triggerSystem": "System",
|
|
"triggerManual": "Manual",
|
|
"triggerRetry": "Retry",
|
|
"triggerSchedule": "Scheduled",
|
|
"allStatuses": "All statuses",
|
|
"allTasks": "All tasks",
|
|
"refresh": "Refresh",
|
|
"loadingExecutions": "Loading execution records...",
|
|
"noExecutions": "No execution records found",
|
|
"colTask": "Task",
|
|
"colStatus": "Status",
|
|
"colTrigger": "Trigger",
|
|
"colRetry": "Retry",
|
|
"colDuration": "Duration",
|
|
"colResult": "Result / Error",
|
|
"colCreatedAt": "Created at",
|
|
"paginationInfo": "{total} records, page {current}/{totalPages}",
|
|
"prevPage": "Previous",
|
|
"nextPage": "Next",
|
|
"executionDetailTitle": "Execution details",
|
|
"loadingDetail": "Loading task details...",
|
|
"detailStatus": "Status",
|
|
"detailTrigger": "Trigger source",
|
|
"detailRetryCount": "Retry count",
|
|
"detailDuration": "Duration",
|
|
"detailTaskId": "Task ID",
|
|
"detailCreatedAt": "Created at",
|
|
"detailStartedAt": "Started at",
|
|
"detailFinishedAt": "Finished at",
|
|
"detailUpdatedAt": "Updated at",
|
|
"detailResult": "Result",
|
|
"detailError": "Error",
|
|
"detailPayload": "Payload",
|
|
"detailLog": "Execution log",
|
|
"noLog": "No log available",
|
|
"noExecutionSelected": "No execution record selected",
|
|
"refreshDetail": "Refresh details",
|
|
"retryTask": "Retry task",
|
|
"retrySuccess": "Task re-dispatched",
|
|
"retrySuccessDesc": "New task ID: {taskId}",
|
|
"retryFailed": "Task retry failed",
|
|
"loadSchedulesFailed": "Failed to load scheduled tasks",
|
|
"scheduleEnabled": "Scheduled task enabled: {name}",
|
|
"scheduleDisabled": "Scheduled task disabled: {name}",
|
|
"changeScheduleStatusFailed": "Failed to change task status",
|
|
"scheduleNameRequired": "Task name is required",
|
|
"cronRequired": "Cron expression is required",
|
|
"scheduleUpdateSuccess": "Scheduled task updated",
|
|
"scheduleCreateSuccess": "Scheduled task created",
|
|
"submitFailed": "Submission failed",
|
|
"scheduleDeleteSuccess": "Scheduled task deleted",
|
|
"deleteFailed": "Delete failed",
|
|
"addSchedule": "Add scheduled task",
|
|
"loadingSchedules": "Loading scheduled tasks...",
|
|
"noSchedules": "No scheduled tasks configured. Click the button above to add one.",
|
|
"colScheduleName": "Task name",
|
|
"colAssociatedTask": "Associated async task",
|
|
"colCron": "Cron expression",
|
|
"colPayload": "Payload",
|
|
"colEnabled": "Enabled",
|
|
"colActions": "Actions",
|
|
"editSchedule": "Edit scheduled task",
|
|
"scheduleDialogDesc": "Configure scheduling parameters and runtime payload for the scheduled task.",
|
|
"scheduleName": "Task name",
|
|
"scheduleNamePlaceholder": "e.g. daily-data-cleanup",
|
|
"associatedTask": "Associated async task",
|
|
"cronExpression": "Cron expression",
|
|
"cronPlaceholder": "e.g. 0 */2 * * * or @daily",
|
|
"cronHint": "Uses standard 5-field Cron format (minute, hour, day of month, month, day of week).",
|
|
"scheduleActive": "Enabled",
|
|
"scheduleActiveDesc": "Determines whether this scheduled task will be triggered on schedule.",
|
|
"noParamsRequired": "Selected task type does not require runtime parameters.",
|
|
"payloadConfig": "Payload configuration",
|
|
"paramOn": "On",
|
|
"paramOff": "Off",
|
|
"saveChanges": "Save changes",
|
|
"confirmCreate": "Confirm create",
|
|
"deleteScheduleTitle": "Delete scheduled task",
|
|
"deleteScheduleDesc": "Delete this scheduled task? This cannot be undone and will immediately cancel its schedule.",
|
|
"cancel": "Cancel",
|
|
"confirmDelete": "Confirm delete",
|
|
"loadTaskTypesFailed": "Failed to load task types",
|
|
"dispatchSuccess": "Task dispatched",
|
|
"dispatchSuccessDesc": "Task {name} added to queue: {taskId}",
|
|
"dispatchFailed": "Task dispatch failed",
|
|
"loadingTaskTypes": "Loading task types...",
|
|
"noTaskTypes": "No task types available",
|
|
"taskType": "Type:",
|
|
"taskRetry": "Retry:",
|
|
"executeNow": "Execute now",
|
|
"dispatchTask": "Dispatch task",
|
|
"dispatchTaskDesc": "Configure parameters and start. The task runs asynchronously in the background.",
|
|
"executeTask": "Execute task",
|
|
"startTime": "Start time",
|
|
"startTimeDesc": "Select the start time for sync",
|
|
"endTime": "End time",
|
|
"endTimeDesc": "Select the end time for sync",
|
|
"noParamsHint": "This task requires no additional parameters. It will be dispatched directly on confirmation.",
|
|
"start": "Start",
|
|
"dispatching": "Dispatching...",
|
|
"selectDate": "Select date",
|
|
"logPrimaryDb": "Log primary database",
|
|
"retentionDays": "Retention days",
|
|
"migrationStatus": "Migration status",
|
|
"migrating": "Migrating",
|
|
"idle": "Idle",
|
|
"selectLogDb": "Select log database",
|
|
"dbPostgresPrimary": "PostgreSQL (primary)",
|
|
"dbSqlitePrimary": "SQLite (primary)",
|
|
"dbClickhouse": "ClickHouse",
|
|
"taskTypeFilter": "Task type",
|
|
"executionRecord": "Execution record"
|
|
},
|
|
"push": {
|
|
"pageTitle": "Push notifications",
|
|
"eventsTab": "Event management",
|
|
"historiesTab": "Notification history",
|
|
"settingsTab": "Channel management & settings",
|
|
"events": {
|
|
"eventUpdateSuccess": "Event updated",
|
|
"eventUpdateFailed": "Event update failed",
|
|
"operationFailed": "Operation failed",
|
|
"eventCreateSuccess": "Event created",
|
|
"eventCreateFailed": "Event creation failed",
|
|
"configDeleteSuccess": "Configuration deleted",
|
|
"configDeleteFailed": "Configuration deletion failed",
|
|
"templateInvalidJson": "Message template is not valid JSON",
|
|
"selectSystemEvent": "Please select a system event",
|
|
"selectAsyncTask": "Please select an async task",
|
|
"addEvent": "Add notification event",
|
|
"loadingEvents": "Loading notification events...",
|
|
"noEvents": "No notification events configured. Click the button above to add one.",
|
|
"colEvent": "Event",
|
|
"colChannels": "Channels",
|
|
"colTargets": "Targets",
|
|
"colStatus": "Status",
|
|
"colActions": "Actions",
|
|
"taskBadge": "Task",
|
|
"noChannelSpecified": "No channel specified",
|
|
"emailChannel": "Email",
|
|
"configure": "Configure",
|
|
"deleteEventConfirm": "Delete this notification event configuration? This cannot be undone.",
|
|
"deleteEventTitle": "Confirm delete notification event",
|
|
"confirmDelete": "Confirm delete",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"addEventDialogTitle": "Add notification event",
|
|
"addEventDialogDesc": "Select a system event and bind push channels. It will be active immediately after creation.",
|
|
"eventType": "Event type",
|
|
"builtinEventType": "System built-in event",
|
|
"taskEventType": "Task completion event",
|
|
"systemEvent": "System event",
|
|
"loadingSystemEvents": "Loading system events...",
|
|
"allBuiltinEventsConfigured": "All built-in events are already configured. No new events available.",
|
|
"selectSystemEventPlaceholder": "Select system event",
|
|
"systemAsyncTask": "System async task",
|
|
"loadingAsyncTasks": "Loading async tasks...",
|
|
"noAvailableTasks": "No system tasks available.",
|
|
"selectAsyncTaskPlaceholder": "Select async task",
|
|
"eventDescription": "Event description:",
|
|
"noDescription": "No description",
|
|
"taskDescription": "Task description:",
|
|
"pushChannelsMulti": "Push channels (multi-select)",
|
|
"selectConfiguredChannels": "Select configured push channels",
|
|
"emailPush": "Email push",
|
|
"noAvailableChannels": "No channels available. Please create or enable one in “Channel management & settings” first.",
|
|
"pushTargets": "Push targets (email and similar channels only)",
|
|
"pushTargetsPlaceholder": "Separate multiple targets with commas, e.g.: user1@test.com, user2@test.com",
|
|
"contentTemplate": "Content template (JSON)",
|
|
"taskTemplateVars": "Supported variables: {{task_name}}, {{task_status}}, {{task_duration}}, {{user.username}}",
|
|
"eventTemplateVars": "Supported variables: {{user.username}}, {{ip}}, {{time}}",
|
|
"enableStatus": "Enabled",
|
|
"enableStatusDesc": "Whether to start receiving notifications for this event immediately after creation",
|
|
"cancel": "Cancel",
|
|
"enableSave": "Enable and save",
|
|
"editEventDialogTitle": "Event notification channel configuration",
|
|
"editEventDialogDesc": "Customize the push channels and recipient configuration for this event",
|
|
"eventName": "Event name",
|
|
"eventKey": "Event key",
|
|
"relatedAsyncTask": "Associated async task",
|
|
"noAvailableChannelsEdit": "No channels available. Please create and enable one in “Channel management & settings” first.",
|
|
"saveChanges": "Save changes",
|
|
"taskCompleteTitle": "Task completed: {name}",
|
|
"taskCompleteContent": "Async task {{task_name}} completed. Status: {{task_status}}, duration: {{task_duration}} ms."
|
|
},
|
|
"settings": {
|
|
"channelCreateSuccess": "Channel created",
|
|
"channelCreateFailed": "Channel creation failed",
|
|
"channelUpdateSuccess": "Channel updated",
|
|
"channelUpdateFailed": "Channel update failed",
|
|
"channelDeleteSuccess": "Channel deleted",
|
|
"channelDeleteFailed": "Channel deletion failed",
|
|
"channelNameRequired": "Channel name is required",
|
|
"channelNameFormat": "Channel name can only contain letters, numbers, and underscores",
|
|
"invalidChannelType": "Invalid channel type",
|
|
"httpsRequired": "URL must start with https:// for security",
|
|
"jsonFormatRequired": "Request body must be valid JSON",
|
|
"larkTemplateFormat": "Custom card template must be valid JSON",
|
|
"sendingTestPush": "Sending test push...",
|
|
"testPushSuccess": "Test push sent. Please check the target platform.",
|
|
"connectivityTestFailed": "Connectivity test failed",
|
|
"customPushChannels": "Custom push channels",
|
|
"customPushChannelsDesc": "Add, configure, and manage custom data push channels for third-party Webhook integration",
|
|
"createChannel": "Create channel",
|
|
"loadingChannels": "Loading channels...",
|
|
"noCustomChannels": "No custom channels configured. Click the button above to create one.",
|
|
"colName": "Name",
|
|
"colType": "Type",
|
|
"colRemark": "Remark",
|
|
"colStatus": "Status",
|
|
"colActions": "Actions",
|
|
"noRemark": "No remark",
|
|
"test": "Test",
|
|
"edit": "Edit",
|
|
"deleteChannelConfirm": "Delete channel \"{name}\"? This cannot be undone.",
|
|
"deleteChannelTitle": "Confirm delete channel",
|
|
"confirmDelete": "Confirm delete",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"editChannelDialogTitle": "Edit channel",
|
|
"createChannelDialogTitle": "Create channel",
|
|
"channelDialogDesc": "Configure a custom notification push channel. Supports POST requests to third-party Webhooks or push services.",
|
|
"channelName": "Name",
|
|
"channelNamePlaceholder": "Enter channel name. Use only English letters and underscores. Must be unique.",
|
|
"channelNameHint": "Unique channel identifier. Cannot be changed after creation.",
|
|
"channelRemark": "Remark",
|
|
"channelRemarkPlaceholder": "Enter remark",
|
|
"channelType": "Channel type",
|
|
"selectChannelType": "Select channel type",
|
|
"quickLoadTemplates": "Quick-load template examples:",
|
|
"loadedFeishuTemplate": "Feishu Webhook template loaded",
|
|
"loadedDingTalkTemplate": "DingTalk robot template loaded",
|
|
"loadedWeChatTemplate": "WeCom robot template loaded",
|
|
"loadedBarkTemplate": "Bark App template loaded",
|
|
"cancel": "Cancel",
|
|
"confirm": "Confirm",
|
|
"sendTestNotification": "Send test notification",
|
|
"sendTestNotificationDesc": "Enter the test target and click send. The system will run a connectivity push test via this channel.",
|
|
"pushChannelName": "Push channel name",
|
|
"testPushTarget": "Test target (template variable $to)",
|
|
"testPushTargetPlaceholder": "Enter test target identifier, such as Bark token or email",
|
|
"sendTest": "Send test",
|
|
"fieldRequired": "{label} is required",
|
|
"configHelp": "{name} configuration help"
|
|
},
|
|
"histories": {
|
|
"searchPlaceholder": "Filter by event key...",
|
|
"sendStatus": "Send status",
|
|
"allStatus": "All statuses",
|
|
"sendSuccess": "Sent",
|
|
"sendFailed": "Failed",
|
|
"colEvent": "Event",
|
|
"colChannel": "Channel",
|
|
"colTarget": "Target",
|
|
"colTitle": "Title",
|
|
"colLevel": "Level",
|
|
"colStatus": "Status",
|
|
"colTime": "Time",
|
|
"loadingHistories": "Loading push history...",
|
|
"noHistoryData": "No push history data",
|
|
"emailChannel": "Email",
|
|
"success": "Success",
|
|
"failed": "Failed",
|
|
"totalRecords": "{total} history records",
|
|
"pushNotificationDetail": "Push notification details",
|
|
"pushNotificationDetailDesc": "View detailed audit information and content of this notification",
|
|
"eventIdentifier": "Event identifier",
|
|
"sendChannel": "Send channel",
|
|
"emailPush": "Email push",
|
|
"pushTarget": "Push target",
|
|
"sendTime": "Send time",
|
|
"notificationLevel": "Notification level",
|
|
"failureReason": "Failure reason",
|
|
"notificationTitle": "Notification title",
|
|
"notificationContent": "Notification content",
|
|
"close": "Close"
|
|
}
|
|
},
|
|
"messageGateway": {
|
|
"pageTitle": "Messaging channels",
|
|
"pageDescription": "Configure instance-level Telegram and QQ bots. Users bind their private-chat identity with a pairing code.",
|
|
"addChannel": "Add channel",
|
|
"emptyTitle": "No messaging channels yet",
|
|
"emptyDescription": "Add a shared bot so users can bind it on their profile and send private messages.",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"delete": "Delete",
|
|
"deleteConfirmTitle": "Delete this channel?",
|
|
"deleteConfirmDescription": "Bindings and unused pairing codes for this channel will also be removed. This cannot be undone.",
|
|
"createSuccess": "Channel created",
|
|
"createFailed": "Failed to create channel",
|
|
"updateSuccess": "Channel updated",
|
|
"updateFailed": "Failed to update channel",
|
|
"deleteSuccess": "Channel deleted",
|
|
"deleteFailed": "Failed to delete channel",
|
|
"testSuccess": "Connectivity test passed",
|
|
"testFailed": "Connectivity test failed",
|
|
"name": "Name",
|
|
"namePlaceholder": "e.g. Ops bot",
|
|
"type": "Type",
|
|
"typeTelegram": "Telegram",
|
|
"typeQQ": "QQ",
|
|
"selectType": "Select a channel type",
|
|
"botToken": "Bot token",
|
|
"botTokenPlaceholder": "From BotFather",
|
|
"baseUrl": "API base URL",
|
|
"baseUrlPlaceholder": "https://api.telegram.org",
|
|
"appId": "App ID",
|
|
"appSecret": "App Secret",
|
|
"portalHost": "Portal host",
|
|
"portalHostPlaceholder": "q.qq.com",
|
|
"keepSecretHint": "Leave blank to keep the saved secret",
|
|
"cancel": "Cancel",
|
|
"create": "Create",
|
|
"testConnection": "Test connection",
|
|
"loadFailed": "Failed to load channels"
|
|
},
|
|
"database": {
|
|
"pageTitle": "Database",
|
|
"refreshData": "Refresh data",
|
|
"fetchOverviewFailed": "Failed to fetch database overview",
|
|
"fetchTablesFailed": "Failed to fetch table list",
|
|
"exportSuccess": "Database exported",
|
|
"exportSuccessDesc": "Downloaded archive: {filename}",
|
|
"exportFailed": "Database export failed",
|
|
"dbType": "Database type",
|
|
"versionInfo": "Version info",
|
|
"nameOrPath": "Name / Path",
|
|
"dbSize": "Database size",
|
|
"physicalTables": "Physical tables",
|
|
"activeConnections": "Active connections",
|
|
"featureArea": "Features",
|
|
"featureAreaDesc": "Database export and custom advanced SQL terminal",
|
|
"dbBackupExport": "Database backup export",
|
|
"dbBackupExportDesc": "Export and download the physical database image (SQLite exports .db, PostgreSQL exports a packaged .sql text file)",
|
|
"preparing": "Preparing...",
|
|
"startExport": "Start export",
|
|
"sqlQueryConsole": "SQL query console",
|
|
"sqlQueryConsoleDesc": "Open an online SQL terminal to execute native SQL for data filtering, updates, debugging, or performance tuning",
|
|
"enterConsole": "Enter console",
|
|
"cache": {
|
|
"fetchCacheStatusFailed": "Failed to fetch disk cache status",
|
|
"saveFailed": "Save failed",
|
|
"maxSizeMustBePositive": "Max size must be an integer >= 1",
|
|
"ttlMustBeNonNegative": "Default TTL must be an integer >= 0",
|
|
"saveSuccess": "Saved",
|
|
"cachePolicyHotUpdated": "Disk cache policy hot-reloaded",
|
|
"saveConfigFailed": "Failed to save configuration",
|
|
"clearSuccess": "Cleared",
|
|
"cacheDataCleared": "All cache data cleared",
|
|
"clearCacheFailed": "Failed to clear cache",
|
|
"cacheManagement": "Cache management",
|
|
"cacheManagementDesc": "Manage and monitor system-level disk cache resource usage, lifecycle, and eviction policy",
|
|
"refreshStatus": "Refresh status",
|
|
"runtimeStatus": "Runtime status",
|
|
"usedSpace": "Used space",
|
|
"cacheKeysCount": "Cache key count",
|
|
"files": "files",
|
|
"cacheBaseDirectory": "Cache base directory",
|
|
"clearCacheNow": "Clear cache now",
|
|
"policyConfig": "Policy configuration",
|
|
"maxSizeLimit": "Max size limit (MB)",
|
|
"maxSizeHint": "Eviction is triggered when total size exceeds this value",
|
|
"ttlLimit": "TTL limit (minutes)",
|
|
"ttlHint": "Maximum lifetime of a cache item. Expired items are cleaned up.",
|
|
"enableLru": "Enable LRU eviction",
|
|
"enableLruDesc": "When the max size limit is reached, automatically remove the least recently accessed items. When disabled, only expired items are cleaned.",
|
|
"saving": "Saving...",
|
|
"saveSettings": "Save settings",
|
|
"noCacheStatus": "No cache status information loaded",
|
|
"confirmClearAllCache": "Clear all cache?",
|
|
"confirmClearDesc": "This will permanently delete all cache files from the disk directory (including temporary extracts, processed images, and block files), resetting key count to 0. This cannot be undone and may cause a temporary slowdown for users fetching resources.",
|
|
"cancel": "Cancel",
|
|
"clearing": "Clearing...",
|
|
"confirmClear": "Confirm clear",
|
|
"unknownError": "Unknown error",
|
|
"maxSizePlaceholder": "e.g. 100",
|
|
"ttlPlaceholder": "e.g. 60, 0 means never expire"
|
|
},
|
|
"sql": {
|
|
"sqlExecSuccess": "SQL executed successfully",
|
|
"sqlExecFailed": "SQL execution failed",
|
|
"sqlQueryTerminal": "SQL query terminal",
|
|
"sqlEditor": "SQL editor",
|
|
"quickTemplates": "Quick templates:",
|
|
"selectPresetSQL": "Select preset SQL",
|
|
"queryUsers": "Query users (SELECT users)",
|
|
"queryFiles": "Query files (SELECT uploads)",
|
|
"queryTaskExecutions": "Query task executions (SELECT task_executions)",
|
|
"sqliteVersion": "SQLite version (SQLite only)",
|
|
"postgresVersion": "PostgreSQL version (Postgres only)",
|
|
"running": "Running...",
|
|
"run": "Run",
|
|
"executionOutput": "Output",
|
|
"type": "Type",
|
|
"duration": "Duration",
|
|
"executingQuery": "Executing query, please wait...",
|
|
"queryResultEmpty": "Query result is empty",
|
|
"sqlExecSuccessTitle": "SQL executed successfully",
|
|
"affectedRows": "Affected rows: {rows}, duration: {ms}ms.",
|
|
"editorReady": "Editor ready. Write SQL above and run to see results.",
|
|
"unknownExecError": "Unknown execution error",
|
|
"clearEditor": "Clear editor",
|
|
"dragResize": "Drag to resize",
|
|
"execErrorTitle": "SQL execution error:"
|
|
},
|
|
"tableBrowser": {
|
|
"tableBrowser": "Table browser",
|
|
"tableBrowserDesc": "Browse physical database table details and contents",
|
|
"selectTable": "Select table",
|
|
"noRecordsInTable": "No records in this table",
|
|
"totalRows": "Total rows",
|
|
"records": "records",
|
|
"prevPage": "Previous",
|
|
"nextPage": "Next",
|
|
"pageIndicator": "Page {current} / {total}",
|
|
"noTableSelected": "No table selected or table structure cannot be loaded",
|
|
"fetchTableFailed": "Failed to fetch data for table {table}",
|
|
"unknownError": "Unknown error"
|
|
},
|
|
"unknownError": "Unknown error",
|
|
"exportException": "Export failed"
|
|
},
|
|
"logs": {
|
|
"pageTitle": "System logs",
|
|
"accessAnalytics": "Access analytics",
|
|
"userAccessLogs": "User access logs",
|
|
"appRuntimeLogs": "Application logs",
|
|
"accessLogs": {
|
|
"clickhouseDisabled": "ClickHouse disabled",
|
|
"clickhouseDisabledDesc": "ClickHouse storage is not enabled in the current system configuration. User access logs are not collected. To use this feature, configure and enable ClickHouse in the backend config.yaml file.",
|
|
"username": "Username",
|
|
"usernamePlaceholder": "Search by username...",
|
|
"apiPath": "API path",
|
|
"pathPlaceholder": "Fuzzy match path...",
|
|
"startTime": "Start time",
|
|
"endTime": "End time",
|
|
"search": "Search",
|
|
"reset": "Reset",
|
|
"loadingAccessLogs": "Loading access logs...",
|
|
"noAccessLogs": "No access log data found",
|
|
"colMethod": "Method",
|
|
"colPath": "Path",
|
|
"colUser": "User",
|
|
"colIp": "IP",
|
|
"colStatus": "Status",
|
|
"colLatency": "Latency",
|
|
"colRequestTime": "Request time",
|
|
"colDetail": "Detail",
|
|
"unknownUser": "Unknown user",
|
|
"paginationInfo": "{total} records, page {page}/{totalPages}",
|
|
"prevPage": "Previous",
|
|
"nextPage": "Next",
|
|
"accessLogDetail": "Access log details",
|
|
"method": "Method",
|
|
"responseStatus": "Response status",
|
|
"latency": "Latency",
|
|
"ipAddress": "IP address",
|
|
"user": "User",
|
|
"noNickname": "No nickname",
|
|
"unknownGuest": "Unknown / Guest",
|
|
"requestPath": "Request path",
|
|
"requestTime": "Request time",
|
|
"noLogSelected": "No log entry selected",
|
|
"copiedToClipboard": "{subject} copied to clipboard",
|
|
"noHeaderData": "No header data",
|
|
"accessId": "Access ID: {id}",
|
|
"copyUserAgent": "Copy User-Agent",
|
|
"copyHeaders": "Copy Headers"
|
|
},
|
|
"analytics": {
|
|
"clickhouseDisabled": "ClickHouse disabled",
|
|
"clickhouseDisabledDesc": "ClickHouse storage is not enabled in the current system configuration. User access logs are not collected. To use this feature, configure and enable ClickHouse in the backend config.yaml file.",
|
|
"loadingAnalytics": "Loading access analytics...",
|
|
"totalRequests7d": "Total requests (7 days)",
|
|
"totalRequests7dDesc": "Total authenticated API requests recorded by the system",
|
|
"activeBrowserTypes": "Active browser types",
|
|
"activeBrowserTypesDesc": "Number of browser agent categories that made requests this week",
|
|
"activeUsers": "Active unique users",
|
|
"activeUsersDesc": "Registered accounts with high-frequency requests in the past week",
|
|
"weeklyAccessTrend": "Weekly access trend",
|
|
"weeklyAccessTrendDesc": "Daily API request curve over the last 7 days",
|
|
"noTrendData": "No trend data",
|
|
"browserRanking": "Browser ranking",
|
|
"browserRankingDesc": "Weekly distribution based on User-Agent header classification",
|
|
"noBrowserData": "No browser ranking data",
|
|
"topActiveUsers": "Most active users (Top 10)",
|
|
"topActiveUsersDesc": "Accounts with the most API requests in the past week",
|
|
"noActiveUsersData": "No active user data",
|
|
"unknown": "Unknown",
|
|
"noNickname": "(no nickname)",
|
|
"requests": "requests",
|
|
"fetchFailed": "Failed to fetch analytics",
|
|
"requestVolume": "Requests",
|
|
"requestCount": "Request count",
|
|
"countTimes": "{count} ({percent}%)"
|
|
},
|
|
"appLogs": {
|
|
"loading": "Loading...",
|
|
"loadOlderLogs": "Load older logs",
|
|
"noLogs": "No logs",
|
|
"backToLatest": "Back to latest",
|
|
"fetchFailed": "Failed to fetch logs",
|
|
"loadOlderFailed": "Failed to load older logs"
|
|
}
|
|
},
|
|
"system": {
|
|
"pageTitle": "System config",
|
|
"configKey": "Key",
|
|
"configValue": "Value",
|
|
"required": "Required",
|
|
"configDescription": "Description",
|
|
"optionalDescription": "Optional description",
|
|
"publicVisibility": "Public visibility",
|
|
"configType": "Config type",
|
|
"systemConfig": "System config",
|
|
"businessConfig": "Business config",
|
|
"createdAt": "Created at",
|
|
"emptyDescription": "No system configuration found",
|
|
"loadingDescription": "Loading configuration...",
|
|
"visible": "Visible",
|
|
"invisible": "Hidden",
|
|
"description": "Description"
|
|
},
|
|
"settings": {
|
|
"pageTitle": "System settings",
|
|
"tabs": {
|
|
"security": "Security",
|
|
"operation": "Operation",
|
|
"system": "System",
|
|
"other": "Other",
|
|
"status": "Status",
|
|
"info": "Info",
|
|
"openflare": "OpenFlare"
|
|
},
|
|
"status": {
|
|
"pageTitle": "System status",
|
|
"fetchFailed": "Failed to fetch system status",
|
|
"unknownRequestError": "An unknown error occurred during the request",
|
|
"autoRefresh": "Auto refresh",
|
|
"refresh": "Refresh",
|
|
"cards": {
|
|
"serviceOverview": "Service overview",
|
|
"serviceOverviewDesc": "Basic service health indicators",
|
|
"memoryStats": "Memory statistics",
|
|
"memoryStatsDesc": "Main memory consumption overview",
|
|
"heapStack": "Heap / Stack details",
|
|
"heapStackDesc": "Runtime heap and stack memory space details",
|
|
"internalStructs": "Internal structures",
|
|
"internalStructsDesc": "Runtime internal management structure overhead",
|
|
"gcAndAlloc": "GC & allocation counts",
|
|
"gcAndAllocDesc": "GC history data and allocation frequency"
|
|
},
|
|
"metrics": {
|
|
"uptime": "Service uptime",
|
|
"goroutines": "Current goroutines",
|
|
"heapObjects": "Heap objects",
|
|
"alloc": "Current memory usage",
|
|
"totalAlloc": "Total allocated memory",
|
|
"sys": "Memory footprint",
|
|
"nextGc": "Next GC memory target",
|
|
"memoryUsagePercent": "Current usage (Alloc / Sys)",
|
|
"heapAlloc": "Current heap memory usage",
|
|
"heapSys": "Heap memory footprint",
|
|
"heapIdle": "Heap memory idle",
|
|
"heapInuse": "Heap memory in use",
|
|
"heapReleased": "Heap memory released",
|
|
"stackInuse": "Stack memory in use",
|
|
"stackSys": "Allocated stack memory",
|
|
"mspanInuse": "MSpan structure memory in use",
|
|
"mspanSys": "Allocated MSpan memory",
|
|
"mcacheInuse": "MCache structure memory in use",
|
|
"mcacheSys": "Allocated MCache memory",
|
|
"buckHashSys": "Allocated profiling hash table memory",
|
|
"gcSys": "Allocated GC metadata memory",
|
|
"otherSys": "Other allocated system memory",
|
|
"numGc": "GC execution count",
|
|
"lastGcTime": "Time since last GC",
|
|
"pauseTotalNs": "Total GC pause time",
|
|
"lastPause": "Last GC pause time",
|
|
"mallocs": "Memory allocation count",
|
|
"frees": "Memory free count",
|
|
"lookups": "Pointer lookup count"
|
|
}
|
|
}
|
|
},
|
|
"demo": {
|
|
"pageTitle": "Development standards demo",
|
|
"specTitle": "Specification notes",
|
|
"specDescription": "This page demonstrates the standard title bar layout for sidebar-linked pages, for development reference.",
|
|
"coreSpecTitle": "Core specification details and writing principles:",
|
|
"rules": {
|
|
"structureFocus": {
|
|
"title": "Structure focus",
|
|
"description": ": Page title area must be kept absolutely clean. Do not place any description paragraphs or small subtitles below the title. Keep the page minimal and information-pure at first glance."
|
|
},
|
|
"containerAlignment": {
|
|
"title": "Container and top-margin alignment",
|
|
"description": "As the base container for the title row (without bottom border), the outer wrapper uniformly uses",
|
|
"description2": "for top-margin visual alignment, ensuring consistent top height feel when switching menus."
|
|
},
|
|
"iconPresentation": {
|
|
"title": "Icon presentation",
|
|
"description": "style. Do not wrap icons in any background cards, rounded corners, or decorative borders."
|
|
},
|
|
"textStyle": {
|
|
"title": "Text style standard",
|
|
"description": ". No bold weight (e.g.",
|
|
"description2": ") or any gradients. Maintain consistent typography site-wide."
|
|
},
|
|
"tabsModular": {
|
|
"title": "Tabs modular decomposition",
|
|
"description": "or place locally under",
|
|
"description2": "). The main page file only maintains the active tab state and outer skeleton layout."
|
|
},
|
|
"complexityDriven": {
|
|
"title": "Complexity-driven block decomposition",
|
|
"description": "lines, high-density blocks must be decomposed into sub-components. Route-specific, non-reusable sub-components go in the route's feature directory (e.g.",
|
|
"description2": "). Only truly cross-page reusable components go into the global",
|
|
"description3": ". A typical reference case is \"Database\" ("
|
|
}
|
|
},
|
|
"tabs": {
|
|
"dashboard": "Dashboard & metric cards",
|
|
"table": "Data table standards",
|
|
"controls": "Input controls & forms"
|
|
},
|
|
"controls": {
|
|
"formDemoTitle": "Form & input interaction demo",
|
|
"formDemoDesc": "Includes button variants, dropdown selects, checkboxes, and standard input styles",
|
|
"taskName": "Task name",
|
|
"taskNamePlaceholder": "Enter task description...",
|
|
"taskNameHint": "Task name is used for human-readable display in execution records",
|
|
"taskCategory": "Task category",
|
|
"categoryDatabase": "Database ops",
|
|
"categorySync": "Batch data sync",
|
|
"categoryCleanup": "Expired disk cleanup",
|
|
"allowNotify": "Allow async push notifications",
|
|
"allowNotifyDesc": "When checked, multi-channel push notifications will be dispatched after successful task completion.",
|
|
"buttonStyles": "Button style alignment:",
|
|
"primaryButton": "Primary action",
|
|
"secondaryButton": "Secondary action",
|
|
"outlineButton": "Outline",
|
|
"ghostButton": "Ghost",
|
|
"formDesignSpec": "Form design specification",
|
|
"spec": {
|
|
"unifiedHeight": "1. Unified control height and shadow:",
|
|
"checkboxAlignment": "2. Checkbox and text alignment:",
|
|
"buttonStrategy": "3. Button usage strategy:"
|
|
}
|
|
},
|
|
"table": {
|
|
"mockData": {
|
|
"syncExport": "Batch user info sync export",
|
|
"dbBackup": "Weekly automatic database backup archive",
|
|
"s3Cleanup": "Remote S3 expired cache object auto-cleanup task"
|
|
},
|
|
"mockType": {
|
|
"dataSync": "Data sync",
|
|
"dbOps": "Database ops",
|
|
"diskCleanup": "Disk cleanup"
|
|
},
|
|
"mockDuration": {
|
|
"running": "Running"
|
|
},
|
|
"searchPlaceholder": "Search by task name...",
|
|
"filter": "Filter",
|
|
"newTask": "New task",
|
|
"columns": {
|
|
"taskId": "Task ID",
|
|
"taskName": "Task name",
|
|
"taskType": "Type",
|
|
"status": "Status",
|
|
"duration": "Duration",
|
|
"triggerTime": "Trigger time",
|
|
"actions": "Actions"
|
|
},
|
|
"status": {
|
|
"success": "Success",
|
|
"running": "Running",
|
|
"failed": "Failed"
|
|
},
|
|
"tableDesignSpec": "Table design specification and code template",
|
|
"spec": {
|
|
"container": "Table containers must use dashed-border containers, i.e. class name:",
|
|
"headerBg": "Table header background is",
|
|
"headerStyle": ". Header cell font is small and bold.",
|
|
"cellDivider": "Cells use dashed dividers between rows and columns (",
|
|
"rowHover": "). Table row hover uses a gentle transition.",
|
|
"monoFont": "Encoded, primary key, or unique ID fields must use monospace font:",
|
|
"badgeStyle": "Badges should be rounded (",
|
|
"badgeStyle2": ") with light backgrounds and corresponding icon dots for a modern, high-contrast visual feel."
|
|
}
|
|
},
|
|
"dashboard": {
|
|
"cpuUsage": "Container CPU usage",
|
|
"cpuStatus": "Container running normally, load stable",
|
|
"storageUsage": "Storage used",
|
|
"storageStatus": "Data synced to remote S3 bucket, supports auto-expiry",
|
|
"database": "Physical database",
|
|
"activeConnections": "Active connections:",
|
|
"totalTables": "Total tables:",
|
|
"dbStatus": "Connection pool auto-maintained, max connections: 100",
|
|
"dashboardDesignSpec": "Metric cards & dashboard design specification",
|
|
"spec": {
|
|
"dashedBorder": "Metric cards uniformly use",
|
|
"dashedBorder2": "for border and shadow.",
|
|
"headerLayout": "Header uses",
|
|
"headerLayout2": "layout: small title text on the left, Lucide icon on the right.",
|
|
"valueStyle": "Numeric emphasis uses and only uses",
|
|
"valueStyle2": "display.",
|
|
"progressBar": "Progress bars use",
|
|
"progressBar2": "thin bar height, not overpowering.",
|
|
"secondaryText": "Secondary description text at the bottom must uniformly use",
|
|
"secondaryText2": "and similar utility classes."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|