smart-admin-web 10.12.0 → 10.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib/runtime.js
CHANGED
package/dist/locales/en-US.d.ts
CHANGED
package/dist/locales/en-US.js
CHANGED
|
@@ -1443,7 +1443,8 @@ const e = {
|
|
|
1443
1443
|
upstreamBadResponse: "Upstream service returned an unexpected response",
|
|
1444
1444
|
dataProtectionKeyMissing: "Data protection key unavailable, cannot decrypt the API key",
|
|
1445
1445
|
sceneRequired: "A call scene is required",
|
|
1446
|
-
multimodalSystemUnsupported: "System messages do not support multi-part content such as images"
|
|
1446
|
+
multimodalSystemUnsupported: "System messages do not support multi-part content such as images",
|
|
1447
|
+
structuredOutputUnsupported: "This provider does not support structured output (json_schema) constraints"
|
|
1447
1448
|
},
|
|
1448
1449
|
recycle: {
|
|
1449
1450
|
notFound: "Deleted record not found",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.js","sources":["../../src/locales/en-US.ts"],"sourcesContent":["export default {\n common: {\n rowNo: 'No.',\n copySuffix: '- Copy',\n zoomIn: 'Maximize',\n zoomOut: 'Restore',\n success: 'Success',\n confirm: 'Confirm',\n confirmTitle: 'Confirm',\n cancel: 'Cancel',\n close: 'Close',\n more: 'More',\n search: 'Search',\n reset: 'Reset',\n expandAll: 'Expand all',\n collapseAll: 'Collapse all',\n add: 'Add',\n edit: 'Edit',\n delete: 'Delete',\n save: 'Save',\n submit: 'Submit',\n format: 'Format',\n copy: 'Copy',\n copied: 'Copied',\n loading: 'Loading…',\n yes: 'Yes',\n no: 'No',\n status: 'Status',\n enabled: 'Enabled',\n disabled: 'Disabled',\n visible: 'Visible',\n hidden: 'Hidden',\n operation: 'Actions',\n createTime: 'Created',\n batchDelete: 'Batch delete',\n batchDeleteConfirm: 'Delete the {count} selected item(s)? This cannot be undone.',\n all: 'All',\n noData: 'No data',\n back: 'Back',\n detail: 'Detail',\n },\n notFound: {\n desc: 'Page not found',\n back: 'Back to workbench',\n },\n // Content-area render fallback (components/ErrorBoundary)\n errorBoundary: {\n title: 'This page hit an error',\n desc: 'The page threw an unhandled exception while rendering. You can retry, or go back home and keep working.',\n retry: 'Retry',\n home: 'Go home',\n },\n // Portal bootstrap failure (network / 5xx / rate limit): the session is fine, so it is kept\n bootError: {\n title: 'Could not load the workbench',\n desc: 'We could not fetch your apps and menus. This is usually a network problem or a temporarily unavailable server. You are still signed in.',\n retry: 'Retry',\n relogin: 'Sign in again',\n },\n missingRoute: {\n title: 'Menu page unavailable',\n message: 'The component path configured for “{title}” does not exist: {component}',\n },\n userPicker: {\n title: 'Select users',\n available: 'Available',\n selected: 'Selected',\n add: 'Add',\n added: 'Added',\n addChecked: 'Add checked',\n clear: 'Clear',\n },\n app: {\n theme: 'Theme',\n dark: 'Dark',\n light: 'Light',\n accent: 'Accent',\n density: 'Density',\n comfortable: 'Comfortable',\n compact: 'Compact',\n language: 'Language',\n loginStyle: 'Login style',\n collapse: 'Collapse',\n openMenu: 'Open menu',\n switchModule: 'Switch app',\n logout: 'Log out',\n personalCenter: 'Account',\n clearCache: 'Clear cache',\n cacheCleared: 'Cache cleared',\n profile: 'Profile',\n password: 'Change password',\n security: 'Account security',\n sessions: 'My sessions',\n bindings: 'Account bindings',\n search: 'Search',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit fullscreen',\n settings: 'Settings',\n notice: {\n title: 'Notifications',\n empty: 'No notifications',\n markAllRead: 'Mark all read',\n viewAll: 'View all',\n },\n },\n settings: {\n title: 'Settings',\n tabAppearance: 'Appearance',\n tabLayout: 'Layout',\n tabGeneral: 'General',\n themeMode: 'Theme mode',\n auto: 'Auto',\n themeColor: 'Theme color',\n custom: 'Custom',\n layout: 'Layout',\n layoutVertical: 'Vertical',\n layoutVerticalMix: 'Vertical Mix',\n layoutVerticalHybridHeaderFirst: 'Left Hybrid (Header)',\n layoutHorizontal: 'Horizontal',\n layoutTopHybridSidebarFirst: 'Top Hybrid (Sidebar)',\n layoutTopHybridHeaderFirst: 'Top Hybrid (Header)',\n interface: 'Interface',\n showBreadcrumb: 'Breadcrumb',\n showTabs: 'Tabs',\n fixedHeader: 'Fixed header',\n pageTransition: 'Page transition',\n transitionNone: 'None',\n transitionFade: 'Fade',\n transitionFadeSlide: 'Fade slide',\n grayscale: 'Grayscale',\n watermark: 'Watermark',\n watermarkText: 'Watermark text',\n watermarkPlaceholder: 'Enter watermark text',\n formStyle: 'Form style',\n formStyleModal: 'Modal',\n formStyleDrawer: 'Drawer',\n resetConfirm: 'Reset all settings to default?',\n copyConfig: 'Copy config',\n configCopied:\n 'Current config copied (paste into DEFAULTS in stores/app.ts to make it the new default)',\n searchPlaceholder: 'Search menu…',\n searchEmpty: 'No matching menu',\n searchHint: '↑↓ navigate · ↵ open · Esc close',\n },\n tabs: {\n refresh: 'Refresh',\n pin: 'Pin',\n unpin: 'Unpin',\n close: 'Close',\n closeOthers: 'Close others',\n closeLeft: 'Close left',\n closeRight: 'Close right',\n closeAll: 'Close all',\n },\n login: {\n title: 'Sign in',\n subtitle: 'A unified access layer for every org and app',\n headlinePre: 'Enterprise ',\n headlineAccent: 'RBAC',\n headlinePost: ' console',\n welcome: 'Welcome back',\n welcomeSub: 'Sign in to continue',\n featRbac: 'RBAC authorization',\n featScope: 'Multi-org data scope',\n featPortal: 'Multi-app portal',\n account: 'Account',\n accountPlaceholder: 'Enter account',\n password: 'Password',\n passwordPlaceholder: 'Enter password',\n required: 'Enter account and password',\n captcha: 'Captcha',\n captchaPlaceholder: 'Enter captcha',\n captchaMathPlaceholder: 'Enter the result',\n captchaRequired: 'Enter the captcha',\n remember: 'Remember me',\n submit: 'Sign in',\n success: 'Signed in',\n smsLogin: 'SMS sign-in',\n accountLogin: 'Password sign-in',\n phone: 'Phone',\n phonePlaceholder: 'Enter phone number',\n smsCode: 'SMS code',\n smsCodePlaceholder: 'Enter the SMS code',\n smsRequired: 'Enter phone number and SMS code',\n sendCode: 'Send code',\n resendAfter: 'Resend in {s}s',\n smsSent: 'Code sent',\n mfaTitle: 'A code was sent to {phone}',\n mfaSub: 'Enter the SMS code to finish signing in',\n setupAuthenticator: 'Set up authenticator',\n totpTitle: 'Two-factor authentication',\n totpSub: 'Enter the 6-digit code from your authenticator app',\n totpCode: 'Authenticator code',\n totpPlaceholder: 'Enter 6-digit code',\n totpBindTitle: 'Authenticator required',\n totpBindSub:\n 'An administrator requires two-factor authentication for this account. Set it up, then sign in again.',\n useRecovery: 'Use a recovery code',\n backToPassword: 'Back to password sign-in',\n otherMethods: 'Other methods',\n moreMethods: 'More sign-in methods',\n ssoWecom: 'WeCom',\n ssoDingtalk: 'DingTalk',\n sso: 'SSO',\n ssoComingSoon: 'Third-party login coming soon',\n skinAurora: 'Aurora',\n skinSplit: 'Split',\n skinSpotlight: 'Spotlight',\n },\n module: {\n choose: 'Choose app',\n empty: 'No accessible apps. Contact your administrator.',\n setDefault: 'Set default',\n isDefault: 'Default',\n back: 'Back',\n enter: 'Enter',\n manage: 'Modules',\n code: 'Code',\n name: 'Name',\n icon: 'Icon',\n defaultRoute: 'Default route',\n apiPrefix: 'API prefix',\n apiPrefixHint:\n 'Filters the permission-route dropdown by app. Enter the backend route segment (e.g. sys, biz); empty = no filter',\n sort: 'Sort',\n remark: 'Remark',\n builtin: 'Built-in',\n codeRequired: 'Enter a code',\n nameRequired: 'Enter a name',\n addTitle: 'Add app',\n editTitle: 'Edit app',\n deleteConfirm: 'Delete app \"{title}\"?',\n disableConfirm: 'Disable app \"{title}\"? It will disappear from the portal',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n menu: {\n searchPlaceholder: 'Search title / route / permission',\n workbench: 'Workbench',\n profile: 'Profile',\n password: 'Change password',\n security: 'Account security',\n notice: 'My notifications',\n sessions: 'My sessions',\n bindings: 'Account bindings',\n manage: 'Menus',\n parent: 'Parent',\n parentRoot: 'Top level (root)',\n type: 'Type',\n typeCatalog: 'Catalog',\n typeMenu: 'Page',\n typeButton: 'Button',\n title: 'Title',\n permission: 'Permission',\n permissionPlaceholder: 'Pick routes (multiple allowed)',\n permissionHint:\n 'A button may carry several routes; granting it grants them all. A Query button carries the list and detail routes.',\n configPerms: 'Permissions ({n})',\n showAllRoutes: \"Show all apps' routes\",\n routesInApp: 'This app',\n routesOther: 'Other apps',\n module: 'App',\n moduleHint: 'Top-level catalog only',\n linkHint:\n 'External / embed: an http(s) URL in Path = external link (new window); an http(s) URL in Component = embedded iframe.',\n moduleAll: 'All',\n moduleUnassigned: 'Unassigned',\n path: 'Route path',\n component: 'Component',\n icon: 'Icon',\n sort: 'Sort',\n visible: 'Sidebar visible',\n titleRequired: 'Enter a title',\n addTitle: 'Add menu',\n editTitle: 'Edit menu',\n addChild: 'Add child',\n buttons: 'Buttons',\n buttonManagerTitle: '\"{title}\" · Buttons',\n buttonParent: 'Parent page',\n addButton: 'Add button',\n batchFromRoutes: 'Add from routes',\n batchTitle: 'Add buttons from routes',\n batchSearchPlaceholder: 'Search method / path / title',\n noRoutesLeft: 'No routes to add (all covered by this menu, or the route list is empty)',\n btnQuery: 'Query',\n btnCreate: 'Create',\n btnUpdate: 'Edit',\n btnDelete: 'Delete',\n deleteConfirm: 'Delete menu \"{title}\"?',\n disableConfirm: 'Disable menu \"{title}\"? Its children will be hidden too',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n iconPicker: {\n placeholder: 'Select icon',\n title: 'Select icon',\n search: 'Search icon name…',\n local: 'Local SVG',\n online: 'Online',\n onlinePlaceholder: 'Any iconify name, e.g. mdi:home',\n use: 'Use',\n offlineHint: 'Offline — online icons not bundled cannot be previewed',\n empty: 'No matching icon',\n more: '{n} more — keep typing to narrow',\n },\n // SmartTable (smart-naive-table) chrome text; search/reset/density reuse common/app keys, injected globally in createSmartAdmin.ts\n table: {\n refresh: 'Refresh',\n columnSettings: 'Columns',\n columnSettingsReset: 'Restore defaults',\n fixedLeft: 'Pin left',\n fixedRight: 'Pin right',\n fixedNone: 'Unpin',\n expand: 'Expand',\n collapse: 'Collapse',\n // TableZoomButton (blow a wide table up to the full viewport)\n zoom: 'Zoom in',\n zoomExit: 'Zoom out',\n },\n workbench: {\n welcome: 'Hello, {name}',\n subtitle: 'SmartAdmin · Enterprise RBAC console',\n roles: 'Roles',\n users: 'Authorized users',\n perms: 'Permissions',\n online: 'Online sessions',\n trendTitle: 'Activity (last 7 days)',\n distributionTitle: 'Resource distribution',\n trendLogins: 'Logins',\n trendActive: 'Active users',\n },\n // Business app workbench (dashboard/biz.vue; real data, an app overrides the same page key with its own stats)\n biz: {\n welcome: 'Welcome back, {name}',\n subtitle: 'App workbench',\n quick: 'Quick access',\n notices: 'My notifications',\n viewAll: 'View all',\n noMenus: 'No menus in this app yet',\n },\n user: {\n title: 'Users',\n account: 'Account',\n name: 'Name',\n status: 'Status',\n enabled: 'Enabled',\n disabled: 'Disabled',\n superAdmin: 'Super',\n createTime: 'Created',\n // Write-side field (create/edit only)\n password: 'Initial password',\n passwordHint: 'Leave blank to auto-generate one (shown once after creation)',\n org: 'Org',\n allOrgs: 'All',\n orgPlaceholder: 'Select org (optional)',\n position: 'Position',\n positionPlaceholder: 'Select position (optional)',\n director: 'Manager',\n directorPlaceholder: 'Select manager (optional)',\n nickname: 'Nickname',\n nicknamePlaceholder: 'Nickname (optional)',\n phone: 'Phone',\n phonePlaceholder: 'Phone (optional)',\n phoneInvalid: 'Invalid phone number',\n email: 'Email',\n emailPlaceholder: 'Email (optional)',\n emailInvalid: 'Invalid email',\n gender: 'Gender',\n genderPlaceholder: 'Select gender (optional)',\n avatar: 'Avatar',\n avatarUploading: 'Uploading…',\n roles: 'Roles',\n rolesPlaceholder: 'Assign roles (optional)',\n accountRequired: 'Enter an account',\n nameRequired: 'Enter a name',\n addTitle: 'Add user',\n editTitle: 'Edit user',\n deleteConfirm: 'Delete user \"{name}\"?',\n disableConfirm: 'Disable user \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n resetPassword: 'Reset password',\n newPassword: 'New password',\n newPasswordHint: 'Leave blank to auto-generate one',\n resetDone: 'Password reset',\n createDone: 'User created',\n resetDoneHint:\n 'Relay the initial password below to the user; it will not show again after closing:',\n copy: 'Copy',\n copied: 'Copied to clipboard',\n copyFailed: 'Copy failed, please select manually',\n forceTotp: 'Require authenticator',\n totpBound: 'Authenticator bound',\n issueTotpInvite: 'Invite authenticator',\n clearMfa: 'Unbind authenticator',\n clearMfaConfirm:\n 'Unbind authenticator for \"{name}\"? They must set it up again before two-factor sign-in works.',\n mfaCleared: 'Authenticator unbound for user',\n totpInviteTitle: 'Authenticator invite for {name}',\n totpInviteOnce:\n 'This invitation is shown only now. Send the link or token to the user through an approved channel.',\n totpInviteUrl: 'Binding link',\n totpInviteToken: 'Invite token',\n totpInviteExpires: 'Expires at',\n },\n mfa: {\n bindTitle: 'Set up authenticator',\n recoveryTitle: 'Use recovery code',\n useRecovery: 'Use a recovery code',\n backToBind: 'Set up authenticator',\n stepVerify: 'Verify',\n stepAuthenticator: 'Authenticator',\n stepRecovery: 'Recovery codes',\n bindHint:\n 'Enter your account and current password to enroll (TOTP must be enabled by the admin).',\n account: 'Account',\n currentPassword: 'Current password',\n startBind: 'Start setup',\n bindRequired: 'Enter your account and current password',\n scanSetupHint:\n 'Scan the QR code with Google Authenticator, Microsoft Authenticator, or a similar app.',\n manualSetupHint:\n 'If you cannot scan, enter the key manually in your authenticator app, then type the current 6-digit code.',\n manualKey: 'Manual setup key',\n otpauthUri: 'Authenticator URI',\n authenticatorCode: 'Authenticator code',\n completeBind: 'Complete setup',\n codeRequired: 'Enter the authenticator code',\n recoveryOnce:\n 'Save these recovery codes now. Each can be used once and they will not be displayed again. Download them to your device for safekeeping.',\n copy: 'Copy',\n copied: 'Copied to clipboard',\n copyFailed: 'Copy failed; select and copy manually',\n copyAll: 'Copy all codes',\n downloadCodes: 'Download',\n recoveryDownloaded: 'Recovery codes download started',\n recoveryDownloadHeader: 'SmartAdmin recovery codes (account: {account})',\n recoveryDownloadFooter: 'Each code can be used only once. Store offline and do not share.',\n backToLogin: 'Back to sign in',\n recoveryHint:\n 'A recovery code removes your authenticator and signs out existing sessions. Enroll again afterwards.',\n recoveryCode: 'Recovery code',\n submitRecovery: 'Use recovery code',\n recoveryRequired: 'Enter your account, current password, and recovery code',\n recoveryDone:\n 'Authenticator removed. Sign in again and complete a new self-service setup if required.',\n bindStartResponseIncomplete: 'The setup response was incomplete. Start the setup again.',\n bindCompleteResponseIncomplete: 'The setup response was incomplete. Start the setup again.',\n },\n reauth: {\n title: 'Re-authenticate',\n hint: 'This is a high-risk change. Enter an authenticator code or your current password to continue (valid for about 5 minutes).',\n method: 'Method',\n methodTotp: 'Authenticator',\n methodPassword: 'Current password',\n totpCode: 'Code',\n totpPlaceholder: '6-digit code',\n totpRequired: 'Enter the authenticator code',\n password: 'Current password',\n passwordPlaceholder: 'Current login password',\n passwordRequired: 'Enter your current password',\n confirm: 'Verify and continue',\n },\n // Import wizard / export column picker\n import: {\n button: 'Import',\n wizardTitle: 'Import users',\n stepUpload: 'Upload',\n stepMapping: 'Map columns',\n stepPreview: 'Preview & fix',\n stepResult: 'Done',\n downloadTemplate: 'Download template',\n dropHint: 'Click or drop an xlsx here',\n dropSub: '.xlsx only; use template dropdown values for dict columns',\n needFile: 'Please choose a file first',\n mappingHint: 'Map file headers to target fields. Auto-matched ones are pre-selected.',\n fileHeader: 'File header',\n targetColumn: 'Target column',\n unmap: '(Skip)',\n summary: '{total} rows, {errors} with errors',\n summaryDup: 'plus {n} already existing',\n onlyErrors: 'Errors only',\n revalidate: 'Re-validate',\n revalidated: 'Re-validated: {errors}/{total} rows have errors',\n errors: 'Errors',\n ok: 'OK',\n errorCount: '{n}',\n dupTag: 'Exists',\n // Key suffix = the DuplicateStrategy value (0 skip / 1 overwrite / 2 error)\n dupHint: {\n 0: 'This row already exists; it will be skipped on commit. No change needed.',\n 1: 'This row already exists; it will be updated on commit. No change needed.',\n 2: 'This row already exists and the current strategy treats that as a failure.',\n },\n strategy: 'Duplicates',\n strategySkip: 'Skip existing',\n strategyOverwrite: 'Overwrite existing',\n strategyError: 'Treat existing as error',\n commit: 'Commit import',\n prev: 'Back',\n next: 'Next',\n resultTitle: 'Import finished',\n resultTotal: 'Total {n}',\n resultInserted: 'Inserted {n}',\n resultUpdated: 'Updated {n}',\n resultSkipped: 'Skipped {n}',\n resultFailed: 'Failed {n}',\n editFailures: 'Edit failed rows',\n downloadErrorReport: 'Download error report',\n noErrorRows: 'No error rows',\n },\n export: {\n button: 'Export',\n pickColumns: 'Choose columns',\n selectAll: 'Select all',\n confirm: 'Export',\n done: 'Export started',\n },\n config: {\n title: 'Configs',\n key: 'Key',\n name: 'Name',\n value: 'Value',\n group: 'Group',\n sort: 'Sort',\n remark: 'Remark',\n keyRequired: 'Enter a key',\n nameRequired: 'Enter a name',\n addTitle: 'Add config',\n editTitle: 'Edit config',\n deleteConfirm: 'Delete config \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n groupManagedBy: 'This group belongs to the \"{tab}\" tab; saved configs appear there',\n groupExtra: {\n title: 'Other configs in this group',\n hint: 'Configs in this group that the form above does not list. View, edit or delete them here.',\n },\n tab: {\n base: 'General',\n security: 'Security',\n externalAuth: 'External login',\n upload: 'Upload',\n job: 'Scheduled jobs',\n other: 'Other',\n },\n job: {\n logRetentionDays: 'Log retention days',\n alertEmails: 'Alert emails',\n alertEmailsHint: 'Separate multiple emails with commas',\n },\n externalAuth: {\n hint: 'Choose which deployed third-party sign-in methods appear on the login page. Disabled methods are hidden and authorize is rejected. Secrets stay in server appsettings.',\n empty: 'No external login providers registered (install optional packages or configure OIDC)',\n showOnLogin: 'On login page',\n hidden: 'Hidden',\n loginVisible: 'Show on login page',\n summary: '{total} methods · {on} shown on login',\n summaryFull: '{total} total · {registered} configured · {on} on login',\n reset: 'Reset',\n notConfigured: 'Not configured',\n notConfiguredTip:\n 'Not registered on this deployment (package/secrets missing). Cannot show on login.',\n linkByAccount: 'Link by account',\n linkByAccountConfirmTitle: 'Turn on link by account?',\n linkByAccountConfirm:\n 'The first time someone signs in with {name}, if their {name} account ID is exactly the same as a local account, the two are bound and they are signed in directly. Super admins, disabled accounts and accounts already bound to {name} are never linked. Make sure both sides are the same people first, e.g. local accounts were synced from {name}.',\n },\n base: {\n siteTitle: 'Site title',\n logo: 'Logo URL',\n siteSubtitle: 'Login subtitle',\n copyright: 'Copyright',\n copyrightUrl: 'Copyright link',\n },\n security: {\n loginLock: {\n title: 'Login lockout',\n maxFailCount: 'Max fail count',\n lockMinutes: 'Lock minutes',\n },\n password: {\n title: 'Password complexity',\n minLength: 'Min length',\n requireUpper: 'Require uppercase',\n requireLower: 'Require lowercase',\n requireDigit: 'Require digit',\n requireSpecial: 'Require special char',\n expireDays: 'Password max age (days, 0 = never)',\n historyCount: 'Password history count (0 = off)',\n },\n session: {\n title: 'Session lifetime',\n accessMinutes: 'Access token (min)',\n refreshMinutes: 'Refresh token (min)',\n },\n captcha: {\n title: 'Login captcha',\n enabled: 'Enable login captcha',\n type: 'Captcha type',\n types: { char: 'Characters', path: 'Stroke (anti-scrape)', math: 'Arithmetic' },\n },\n totp: {\n title: 'Authenticator (TOTP)',\n enabled: 'Enable authenticator',\n requireForSuperAdmin: 'Require authenticator for super admin',\n hint: 'Toggles like login captcha — takes effect immediately. Per-user “require authenticator” only enforces at sign-in when this is on; users bind under Account security.',\n },\n sms: {\n title: 'SMS verification',\n hint: 'The second factor only applies to users with a bound phone; in development, codes are printed to the backend log — production requires a real SMS provider (ISmsSender).',\n },\n mfa: { enabled: 'Enable SMS second factor' },\n smsLogin: { enabled: 'Enable SMS code sign-in' },\n rateLimit: {\n title: 'Rate limiting',\n enabled: 'Enable rate limiting',\n windowSeconds: 'Window (seconds)',\n permitPerWindow: 'Global requests / window',\n authPermitPerWindow: 'Auth-endpoint requests / window',\n },\n highSens: {\n title: 'High-sensitivity permissions (custom)',\n hint: 'Kernel defaults cannot be removed; only consumer custom codes can be added/deleted. Writes require recent reauth.',\n code: 'Permission code',\n remark: 'Remark',\n codePh: 'e.g. POST:/api/v1/biz/order',\n remarkPh: 'Optional remark',\n codeRequired: 'Permission code is required',\n },\n },\n upload: {\n title: 'Upload limits',\n maxSizeMb: 'Max size (MB)',\n allowedExtensions: 'Allowed extensions',\n extPlaceholder: 'Type an extension, e.g. .jpg',\n extTip: 'With leading dot, lowercase; empty falls back to server default',\n },\n },\n // Dict management (master-detail: types on the left, items on the right)\n dict: {\n title: 'Dictionaries',\n code: 'Type code',\n name: 'Type name',\n searchName: 'Search name',\n sort: 'Sort',\n remark: 'Remark',\n codeRequired: 'Enter a type code',\n nameRequired: 'Enter a type name',\n addTypeTitle: 'Add dict type',\n editTypeTitle: 'Edit dict type',\n typeDeleteConfirm: 'Delete dict type \"{name}\"? Its items will be removed too.',\n typeSaved: 'Saved',\n typeDeleted: 'Deleted',\n itemsOf: 'Items of \"{name}\"',\n selectTypeHint: 'Select a dict type on the left to manage its items',\n itemLabel: 'Label',\n itemValue: 'Value',\n itemLabelRequired: 'Enter a label',\n itemValueRequired: 'Enter a value',\n addItem: 'Add item',\n addItemTitle: 'Add dict item',\n editItemTitle: 'Edit dict item',\n itemDeleteConfirm: 'Delete dict item \"{label}\"?',\n itemSaved: 'Saved',\n itemDeleted: 'Deleted',\n },\n // Org management (tree table + parent-org tree select)\n org: {\n title: 'Organizations',\n searchPlaceholder: 'Search name / code',\n name: 'Name',\n code: 'Code',\n category: 'Category',\n categoryPlaceholder: 'Select category',\n sort: 'Sort',\n parent: 'Parent org',\n parentPlaceholder: 'Select parent (blank = top level)',\n nameRequired: 'Enter a name',\n codePlaceholder: 'Leave blank to auto-generate',\n addChild: 'Add child',\n addTitle: 'Add org',\n editTitle: 'Edit org',\n deleteConfirm: 'Delete org \"{name}\"?',\n copy: 'Copy',\n copyTitle: 'Copy org',\n copyConfirm: 'This will copy \"{name}\" and all descendants. Cloned codes get a -copy suffix.',\n copyNameLabel: 'New org name',\n copied: 'Copied',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n // File management (list + upload/download/delete)\n file: {\n title: 'Files',\n name: 'File name',\n extension: 'Ext',\n size: 'Size',\n contentType: 'Type',\n uploadTime: 'Uploaded',\n upload: 'Upload',\n uploadChunked: 'Chunked upload',\n uploaded: 'Uploaded successfully',\n download: 'Download',\n deleteConfirm: 'Delete file \"{name}\"?',\n deleted: 'Deleted',\n },\n // Notifications (NoticeController admin side: publish / list / delete)\n notice: {\n title: 'Notifications',\n mine: 'My notifications',\n status: 'Status',\n read: 'Read',\n unread: 'Unread',\n allRead: 'All marked as read',\n noticeTitle: 'Title',\n content: 'Content',\n type: 'Type',\n typeNotice: 'Notice',\n typeAnnouncement: 'Announcement',\n typeMessage: 'Message',\n receiver: 'Recipients',\n receiverAll: 'Everyone',\n receiverRole: 'Roles',\n receiverUser: 'Users',\n receiverPlaceholder: 'Select recipients',\n receiverRequired: 'Select at least one recipient',\n publishTime: 'Published at',\n publish: 'Publish',\n publishTitle: 'Publish notification',\n titleRequired: 'Title is required',\n deleteConfirm: 'Delete notification \"{title}\"?',\n published: 'Published',\n deleted: 'Deleted',\n view: 'View',\n detailTitle: 'Notification detail',\n // Action buttons (optional at publish time, rendered under the body)\n actions: 'Actions',\n actionsHint:\n 'Up to 5; a url starting with /api/ is called as an API, any other site path opens as a page; a label containing \".\" is translated as an i18n key',\n actionCount: '{count} action(s)',\n actionLabel: 'Label',\n actionMethod: 'Method',\n actionUrl: 'Site path',\n actionStyle: 'Style',\n actionStyleDefault: 'Default',\n actionStylePrimary: 'Primary',\n actionStyleError: 'Danger',\n actionNeedConfirm: 'Confirm first',\n actionNeedComment: 'Ask for a comment',\n actionAdd: 'Add action',\n actionConfirm: 'Run \"{label}\"?',\n actionCommentPlaceholder: 'Your comment (optional)',\n actionDone: 'Done',\n actionInvalidUrl: 'Invalid action url',\n },\n // Realtime (SignalR; instant push when SmartAdmin:Realtime:Enabled, else polling / lazy 401)\n realtime: {\n forcedLogout: 'You have been signed out by an administrator',\n },\n // Online sessions (read-only + force logout)\n session: {\n title: 'Online sessions',\n account: 'Account',\n ip: 'IP',\n device: 'Device',\n loginTime: 'Login time',\n expiresAt: 'Expires at',\n kick: 'Force logout',\n self: 'Current session',\n kickConfirm: 'Force-logout the session of \"{account}\"? It will be invalidated immediately.',\n kicked: 'Forced logout',\n mineTitle: 'My sessions',\n current: 'This device',\n kickMineConfirm: 'Sign out the session on this device? It will be invalidated immediately.',\n },\n // External login / SSO: callback result page + personal-center account bindings\n oauth: {\n processing: 'Signing you in…',\n backToLogin: 'Returning to the sign-in page',\n failed: 'Third-party sign-in failed, please try again',\n bindingsTitle: 'Account bindings',\n bindingsHint:\n 'Bind a third-party account to sign in with one click. Binding redirects you to that provider to authorize once.',\n bindingsTip:\n 'Binding opens the provider for authorization. After unbinding you can no longer sign in with that account.',\n boundCountLabel: 'bound',\n bindTip: 'Use the button below to authorize and bind',\n disabledTip: 'This method is turned off; existing bindings can still be removed',\n cannotBind: 'Unavailable',\n noProviders: 'No third-party sign-in methods are enabled',\n thirdParty: 'third-party account',\n pendingLinkTitle: 'Link {name}',\n pendingLinkHint:\n 'This {name} is not linked yet. Sign in with your own system account; you will be asked to confirm binding after login. Do not open binding links from unknown sources.',\n pendingLinkSuccess: '{name} linked. You can sign in with it next time.',\n pendingLinkConfirmTitle: 'Bind this third-party account?',\n pendingLinkConfirmContent:\n 'Bind {name}{identity} to the current account “{account}”. If this is not the account you just authorized, choose “Sign in only”.',\n pendingLinkConfirmOk: 'Bind',\n pendingLinkConfirmSkip: 'Sign in only',\n pendingLinkIdentity: ' ({display})',\n bind: 'Bind',\n unbind: 'Unbind',\n bound: 'Bound',\n notBound: 'Not bound',\n boundAt: 'Bound at {time}',\n unbound: 'Unbound',\n unbindConfirm: 'Unbind \"{name}\"? You will no longer be able to sign in with it.',\n disabled: 'Disabled',\n // Built-in brand display names (used when the backend sends no displayName)\n brand: {\n github: 'GitHub',\n wechat: 'WeChat',\n wecom: 'WeCom',\n dingtalk: 'DingTalk',\n gitee: 'Gitee',\n qq: 'QQ',\n },\n },\n // Position management (plain CRUD; positions are not linked to orgs)\n position: {\n title: 'Positions',\n code: 'Code',\n name: 'Name',\n sort: 'Sort',\n codePlaceholder: 'Auto-generated if empty',\n nameRequired: 'Enter a name',\n addTitle: 'Add position',\n editTitle: 'Edit position',\n deleteConfirm: 'Delete position \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n role: {\n title: 'Roles',\n code: 'Code',\n name: 'Name',\n sort: 'Sort',\n remark: 'Remark',\n codeRequired: 'Enter a code',\n nameRequired: 'Enter a name',\n addTitle: 'Add role',\n editTitle: 'Edit role',\n deleteConfirm: 'Delete role \"{name}\"? Its grants, data scope and user links will be removed.',\n deleteConfirmNoUsers: 'Delete role \"{name}\"? No user currently holds it.',\n deleteConfirmWithUsers:\n 'Role \"{name}\" is held by {count} user(s). Deleting it strips those users of every permission it grants, and the links cannot be restored. Delete anyway?',\n batchDeleteWithUsers:\n 'Delete the {count} selected role(s)? {users} user(s) will immediately lose the permissions they grant, and the links cannot be restored.',\n isDelegatable: 'Delegatable',\n isDelegatableHint:\n 'When enabled, non-superadmin users can assign this role to users within their data scope',\n grantUsers: 'Grant users',\n grantUsersSaved: 'User grants saved',\n saved: 'Saved',\n deleted: 'Deleted',\n grantMenus: 'Grant menus',\n grantSaved: 'Grants saved',\n catalog: 'Directory',\n menuCol: 'Menu',\n buttonsCol: 'Buttons',\n apiOnlyRow: 'API only (no page)',\n dataScope: 'Data scope',\n scopeType: 'Scope type',\n customOrgs: 'Custom orgs',\n customOrgsHint: 'Select orgs visible to this role',\n scopeSaved: 'Data scope saved',\n scope: {\n all: 'All data',\n org: 'Own org',\n orgAndChildren: 'Own org & below',\n self: 'Self only',\n custom: 'Custom orgs',\n },\n },\n log: {\n loginTitle: 'Login logs',\n account: 'Account',\n result: 'Result',\n success: 'Success',\n failed: 'Failed',\n resultCode: 'Code',\n name: 'Name',\n ip: 'IP',\n userAgent: 'Client',\n device: 'Device',\n clear: 'Clear logs',\n clearLoginConfirm: 'Clear all login logs? This is a hard delete and cannot be undone.',\n cleared: 'Cleared',\n // Operation logs\n opTitle: 'Operation logs',\n opName: 'Operation',\n method: 'Method',\n path: 'Path',\n elapsed: 'Elapsed',\n operator: 'Operator',\n operatorPlaceholder: 'Select operator',\n param: 'Params',\n exception: 'Exception',\n detail: 'Detail',\n clearOpConfirm: 'Clear all operation logs? This is a hard delete and cannot be undone.',\n // Exception logs\n exceptionTitle: 'Exception logs',\n exceptionType: 'Exception type',\n exceptionMessage: 'Message',\n stackTrace: 'Stack trace',\n traceId: 'Trace ID',\n clearExceptionConfirm: 'Clear all exception logs? This is a hard delete and cannot be undone.',\n },\n monitor: {\n title: 'Server monitor',\n refresh: 'Refresh',\n cpu: 'CPU usage',\n memory: 'Memory usage',\n runtime: 'Runtime',\n disk: 'Disk',\n processorCount: 'Processors',\n threadCount: 'Threads',\n gcHeap: 'GC heap',\n totalMemory: 'Available',\n machineName: 'Machine',\n framework: 'Framework',\n os: 'OS',\n arch: 'Arch',\n uptime: 'Uptime',\n free: 'Free',\n days: 'd',\n hours: 'h',\n minutes: 'm',\n },\n // Scheduled jobs (job list / run logs / monitor / CronEditor; error texts live in error.job.*, do not duplicate)\n job: {\n title: 'Scheduled Jobs',\n name: 'Job name',\n code: 'Job code',\n codePlaceholder: 'Unique code, immutable after creation',\n remark: 'Remark',\n nameRequired: 'Please enter the job name',\n codeRequired: 'Please enter the job code',\n addTitle: 'New job',\n editTitle: 'Edit job',\n deleteConfirm: 'Delete job \"{name}\"?',\n saved: 'Saved; takes effect within 30 seconds across the cluster',\n deleted: 'Deleted',\n runOnce: 'Run',\n runConfirm: 'Run job \"{name}\" once now? This run does not affect its schedule.',\n runStarted: 'Run triggered',\n viewLogs: 'Logs',\n protectedTip: 'Built-in job is protected from deletion',\n pauseConfirm: 'Pause job \"{name}\"? It will no longer be scheduled.',\n panicTooltip:\n 'Tripped after {n} consecutive failures; re-enabling resets the counter and resumes scheduling',\n nextRunTime: 'Next run',\n lastRunTime: 'Last run',\n runCount: 'Runs / Errors',\n status: { ready: 'Ready', paused: 'Paused', completed: 'Completed', panic: 'Panic' },\n form: {\n sectionBasic: 'Basic',\n sectionTrigger: 'Trigger',\n sectionHandler: 'Payload',\n sectionAdvanced: 'Advanced',\n sectionAdvancedHint:\n 'Active window, misfire, concurrency, retry and alerting — saving works without opening this',\n startTime: 'Active from',\n endTime: 'Active until',\n windowPlaceholder: 'Empty = unlimited',\n misfireStrategy: 'Misfire strategy',\n misfireSkip: 'Skip',\n misfireFireOnceNow: 'Fire once now',\n concurrencyMode: 'Concurrency',\n concurrencySerial: 'Serial (skip overlap)',\n concurrencyParallel: 'Parallel',\n timeoutSeconds: 'Timeout (s)',\n timeoutHint: '0 = unlimited',\n retryCount: 'Retry count',\n retryIntervalSeconds: 'Retry interval (s)',\n failAlertThreshold: 'Failure alert threshold',\n failAlertHint: '0 = no alert, no panic',\n alertByNotice: 'Alert via notice',\n alertEmails: 'Alert emails',\n alertEmailsPlaceholder: 'Comma separated; empty falls back to global config',\n },\n trigger: {\n kind: 'Trigger',\n cron: 'Cron',\n interval: 'Fixed interval',\n oneShot: 'One-shot',\n cronExpression: 'Cron expression',\n cronRequired: 'Please enter a cron expression',\n intervalSeconds: 'Interval seconds',\n intervalRequired: 'Please enter interval seconds (≥5)',\n oneShotTime: 'Run at',\n oneShotRequired: 'Please pick the run time',\n seconds: 's',\n everySeconds: 'Every {n}s',\n },\n handler: {\n kind: 'Payload type',\n compiled: 'Compiled',\n http: 'HTTP',\n sql: 'SQL',\n sqlDisabledHint: 'SQL payloads are off — the backend must set SmartAdmin:Jobs:Sql:Enabled',\n name: 'Handler',\n namePlaceholder: 'Pick a registered handler',\n nameRequired: 'Please pick a handler',\n props: 'Properties',\n propKey: 'Key',\n propValue: 'Value',\n addProp: 'Add item',\n httpUrl: 'Request URL',\n httpUrlRequired: 'Please enter the request URL',\n httpMethod: 'Method',\n httpHeaders: 'Headers',\n headersMaskHint:\n 'For security, stored header values show as ********; leave unchanged to keep them as-is',\n httpBody: 'Body',\n successStatuses: 'Success statuses',\n successStatusesPlaceholder: 'e.g. 200,201; empty = any 2xx',\n sqlText: 'SQL statement',\n sqlRequired: 'Please enter the SQL statement',\n },\n log: {\n title: 'Job Runs',\n job: 'Job',\n jobPlaceholder: 'Select job',\n fireMode: 'Fired by',\n fireModeSchedule: 'Schedule',\n fireModeManual: 'Manual',\n fireModeBackfill: 'Backfill',\n fireModeMisfireSkip: 'Misfire skip',\n scheduledTime: 'Scheduled at',\n startTime: 'Started at',\n elapsed: 'Elapsed',\n runStatus: 'Status',\n running: 'Running',\n success: 'Success',\n failed: 'Failed',\n timeout: 'Timeout',\n cancelled: 'Cancelled',\n skipped: 'Skipped',\n retryIndex: 'Retry',\n node: 'Node',\n kill: 'Kill',\n killConfirm:\n 'Kill this run of \"{name}\"? Once the flag is written, the executing node stops within seconds.',\n killed: 'Kill requested',\n clear: 'Clear logs',\n clearTitle: 'Clear run logs',\n clearAll: 'All records',\n beforeDays: 'Older than {n} days',\n clearHint: 'Running records are always kept; this is a hard delete and cannot be undone.',\n cleared: 'Removed {n} records',\n message: 'Handler output',\n error: 'Error',\n attempts: 'Attempts of the same fire',\n firstTry: 'First try',\n retryN: 'Retry #{n}',\n },\n monitor: {\n title: 'Job Monitor',\n todaySuccess: 'Success today',\n todayFailed: 'Failed today',\n running: 'Running',\n totalJobs: 'Total jobs',\n trendTitle: '14-day success/failure trend',\n trendSuccess: 'Success',\n trendFailed: 'Failed',\n upcomingTitle: 'Upcoming runs',\n upcomingJob: 'Job',\n upcomingTime: 'Time',\n nodesTitle: 'Cluster nodes',\n nodeName: 'Node',\n role: 'Role',\n leader: 'leader',\n standby: 'standby',\n lastHeartbeat: 'Last heartbeat',\n workerId: 'WorkerId',\n pid: 'PID',\n justNow: 'just now',\n secondsAgo: '{n}s ago',\n minutesAgo: '{n}m ago',\n hoursAgo: '{n}h ago',\n },\n cron: {\n tabSecond: 'Second',\n tabMinute: 'Minute',\n tabHour: 'Hour',\n tabDay: 'Day',\n tabMonth: 'Month',\n tabWeek: 'Week',\n tabExpression: 'Expression',\n every: 'Every',\n any: 'Not specified (?)',\n range: 'Range',\n to: 'to',\n step: 'Step',\n stepFrom: 'from',\n stepEvery: ', every',\n list: 'Values',\n lastDay: 'Last day (L)',\n lastDayHint: '0 = last day, n = n days before month end (L-n)',\n nearestWeekday: 'Nearest weekday (nW)',\n nearestWeekdayHint: 'Nearest weekday to that day, within the month',\n lastWeekday: 'Last weekday (LW)',\n lastOfWeek: 'Last weekday-of-month (nL)',\n nth: 'Nth weekday (n#m)',\n nthPrefix: 'the',\n nthInfix: 'th',\n sun: 'Sun',\n mon: 'Mon',\n tue: 'Tue',\n wed: 'Wed',\n thu: 'Thu',\n fri: 'Fri',\n sat: 'Sat',\n expressionPlaceholder: 'e.g. 0 0 2 * * ? (sec min hour day month week)',\n expressionHint:\n '5 fields (seconds auto-filled) or 6; day and week cannot both be restricted — one must be * or ?',\n normalized: 'Normalized',\n nextRuns: 'Next {n} runs',\n noUpcoming: 'No future occurrences',\n everySecondWarning:\n 'This expression effectively fires every second — make sure that is intended',\n },\n },\n // AI model management (providers + models; error text lives in error.ai.*, don't duplicate)\n aiModel: {\n title: 'AI Models',\n searchPlaceholder: 'Search provider code / name',\n addProvider: 'Add provider',\n editProvider: 'Edit provider',\n deleteProvider: 'Delete provider',\n deleteConfirm:\n 'Delete provider \"{name}\"? Its models are deleted too; existing usage logs are unaffected.',\n deleted: 'Deleted',\n saved: 'Saved',\n enabled: 'Enabled',\n disabled: 'Disabled',\n pendingConfigTip: 'No API key configured yet — fill it in before saving',\n provider: {\n code: 'Provider code',\n codePlaceholder: 'Unique code, immutable after creation',\n codeRequired: 'Please enter a provider code',\n name: 'Provider name',\n nameRequired: 'Please enter a provider name',\n preset: 'Provider preset',\n presetPlaceholder: 'Pick a preset provider to fill in protocol and base URL',\n presetCustom: 'Custom',\n protocol: 'Protocol',\n baseUrl: 'Base URL',\n baseUrlRequired: 'Please enter a base URL',\n authScheme: 'Auth scheme',\n apiKey: 'API key',\n apiKeyPlaceholder: 'Leave empty to keep the existing key',\n apiKeyHint: 'A saved key only echoes back masked, never in plain text',\n hasApiKeyYes: 'Configured',\n hasApiKeyNo: 'Not configured',\n disableConfirm: 'Disable provider \"{name}\"?',\n sort: 'Sort',\n remark: 'Remark',\n },\n model: {\n title: 'Models',\n add: 'Add model',\n remove: 'Remove',\n name: 'Model name',\n nameRequired: 'Please enter a model name',\n displayName: 'Display name',\n displayNameRequired: 'Please enter a display name',\n contextWindow: 'Context window',\n contextWindowPlaceholder: 'e.g. 128000, leave empty for unlimited',\n inputPrice: 'Input price',\n outputPrice: 'Output price',\n pricePlaceholder: 'Per million tokens, leave empty for free',\n enabled: 'Enabled',\n isDefault: 'Default model',\n setDefault: 'Set as default',\n defaultTag: 'Default',\n atLeastOne: 'Keep at least one model',\n duplicateName: 'Duplicate model name',\n noDefault: 'No default model set',\n },\n test: {\n action: 'Test connection',\n testing: 'Testing…',\n ok: 'Connected',\n failed: 'Connection failed',\n latency: '{ms} ms',\n model: 'Model',\n usage: 'Usage',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n error: 'Error',\n },\n },\n // AI usage stats (filters / summary tiles / grouping / trend / detail table)\n aiUsage: {\n title: 'AI Usage',\n filter: {\n dateRange: 'Date range',\n today: 'Today',\n last7Days: 'Last 7 days',\n last30Days: 'Last 30 days',\n provider: 'Provider',\n providerAll: 'All providers',\n model: 'Model',\n modelAll: 'All models',\n scene: 'Scene',\n sceneAll: 'All scenes',\n scenePlaceholder: 'Filter by call scene',\n },\n metric: {\n totalTokens: 'Total tokens',\n totalCalls: 'Total calls',\n failureCount: 'Failures',\n avgLatency: 'Avg. latency',\n },\n groupBy: {\n label: 'Group by',\n provider: 'By provider',\n model: 'By model',\n scene: 'By scene',\n user: 'By user',\n },\n trend: {\n title: 'Usage trend',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n callCount: 'Calls',\n },\n table: {\n createTime: 'Time',\n provider: 'Provider',\n model: 'Model',\n scene: 'Scene',\n user: 'User',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n totalTokens: 'Total tokens',\n latency: 'Latency',\n status: 'Status',\n success: 'Success',\n failed: 'Failed',\n requestId: 'Request Id',\n streamed: 'Streamed',\n usageSource: 'Usage source',\n usageSourceReported: 'Reported upstream',\n usageSourceMissing: 'Estimated (missing)',\n },\n share: 'Share',\n },\n cache: {\n authTitle: 'Permission cache',\n authDesc:\n \"Clear every user's permission-code and data-scope cache. Forces authorization to be recomputed on the next request after direct DB edits or troubleshooting.\",\n authConfirm:\n \"Clear all users' permission / data-scope cache? Authorization will be recomputed on the next request.\",\n dictTitle: 'Dictionary cache',\n dictDesc:\n 'Clear cached items for every dictionary type. Forces dropdown data sources to rebuild from the latest dictionaries after direct DB edits.',\n dictConfirm: 'Clear all dictionary item cache?',\n configTitle: 'Config cache',\n configDesc:\n 'Clear the read-through cache of every system config item. Forces config values to be re-read from the latest tables after direct DB edits.',\n configConfirm: 'Clear all system config cache?',\n portalTitle: 'Portal menu cache',\n portalDesc:\n \"Bump the portal generation, invalidating every user's module / menu-tree cache so it rebuilds on next entry.\",\n portalConfirm:\n \"Rebuild the portal menu cache? Every user's menu will be recomputed on their next request.\",\n execute: 'Execute',\n flushed: 'Cleared {n} cache entries',\n portalDone: 'Portal menu cache rebuilt',\n note: 'Invalidation only — no key browsing, no value reads: the cache holds plaintext OTP / one-time tokens and keys embed phone numbers / IPs. Normal authorization changes already invalidate automatically; this page is for manual refresh after out-of-band changes such as direct DB edits.',\n },\n profile: {\n title: 'Profile',\n account: 'Account',\n name: 'Name',\n org: 'Org',\n position: 'Position',\n nickname: 'Nickname',\n gender: 'Gender',\n phone: 'Phone',\n email: 'Email',\n avatar: 'Avatar',\n avatarUploading: 'Uploading…',\n phoneInvalid: 'Invalid phone number',\n emailInvalid: 'Invalid email format',\n saved: 'Profile updated',\n },\n personalSecurity: {\n title: 'Account security',\n // Everyone: what the user can do — no admin console paths.\n hint: 'Bind or manage your authenticator (TOTP) for sign-in two-factor verification.',\n // Admins only (super-admin / system-config access): points at Security policy toggle.\n adminHint:\n 'If setup fails or sign-in never asks for a code, open System config → Security and ensure “Enable authenticator” is on.',\n bindDesc:\n 'Self-service setup uses your account and current password. You can also use a recovery code to remove and rebind.',\n setupAuthenticator: 'Set up authenticator',\n useRecovery: 'Use recovery code',\n note: 'Start voluntary setup from this page. If MFA is required and not bound yet, a prompt appears after password sign-in succeeds.',\n },\n changePassword: {\n title: 'Change password',\n oldPassword: 'Current password',\n newPassword: 'New password',\n confirmPassword: 'Confirm new password',\n oldRequired: 'Please enter your current password',\n newRequired: 'Please enter a new password',\n confirmRequired: 'Please confirm your new password',\n mismatch: 'Passwords do not match',\n changed: 'Password changed, please sign in again',\n forcedHint:\n 'First login or password reset — please change your password before using the system.',\n strength: { label: 'Password strength', weak: 'Weak', fair: 'Fair', strong: 'Strong' },\n rules: {\n minLength: 'At least {n} characters',\n upper: 'Contains uppercase',\n lower: 'Contains lowercase',\n digit: 'Contains a digit',\n special: 'Contains a special character',\n specialOptional: 'Contains a special character (optional, stronger)',\n },\n },\n error: {\n _fallback: 'Operation failed, please try again',\n // Client-side failures (not backend error codes): the timeout guard fired, or the call was cancelled\n network: {\n timeout: 'Request timed out, check your connection and try again',\n aborted: 'Request cancelled',\n },\n auth: {\n passwordWrong: 'Incorrect account or password',\n captchaExpired: 'Captcha expired',\n captchaWrong: 'Incorrect captcha',\n accountLocked: 'Account locked, try again later',\n accountDisabled: 'Account disabled',\n tokenInvalid: 'Invalid session, please sign in again',\n refreshTokenInvalid: 'Session expired, please sign in again',\n tooManyRequests: 'Too many requests, slow down',\n smsCodeRequired: 'Please enter the SMS verification code',\n smsCodeWrong: 'Incorrect SMS verification code',\n smsCodeExpired: 'SMS verification code is incorrect or expired, please request a new one',\n smsLoginDisabled: 'SMS code sign-in is not enabled',\n oauthProviderDisabled: 'This third-party sign-in method is not enabled or does not exist',\n oauthStateInvalid: 'Sign-in session expired, please start the third-party sign-in again',\n oauthExchangeFailed: 'Third-party sign-in failed to resolve identity, please try again',\n oauthAccountNotBound:\n 'This third-party account is not linked yet; sign in with your system account to complete linking',\n oauthAlreadyBound:\n 'This third-party account is already bound, or the current account is already bound to the same provider',\n totpRequired: 'Please enter the authenticator code to complete MFA',\n totpWrong: 'Incorrect authenticator code',\n totpNotBound: 'Authenticator is not bound yet; complete binding first',\n bindInviteInvalid: 'Authenticator setup is invalid or expired. Start again.',\n mfaBindInvalid: 'Authenticator setup is invalid or expired. Start again.',\n recoveryCodeInvalid: 'Recovery code is invalid or already used',\n csrfInvalid: 'Request validation failed; refresh the page and try again',\n reauthRequired: 'This action requires re-authentication',\n mfaBindPasswordRequired: 'Verify your current password before binding an authenticator',\n apiKeyInvalid: 'API key missing or invalid',\n },\n perm: {\n denied: 'Access denied',\n demoReadOnly: 'Demo environment is read-only',\n superAdminRequired: 'This action requires super admin privileges',\n },\n user: {\n notFound: 'User not found',\n accountExists: 'Account already exists',\n superAdminProtected: 'Super admin is protected',\n passwordTooWeak: 'New password does not meet the complexity policy',\n passwordReused: 'New password must differ from your current and recently used passwords',\n outOfDataScope: 'Target user is outside your data scope',\n avatarUrlInvalid: 'Avatar URL is not allowed',\n cannotOperateSelf: 'You cannot perform this action on yourself',\n },\n role: {\n notFound: 'Role not found',\n codeExists: 'Role code already exists',\n notDelegatable: 'Role is not delegatable',\n },\n org: {\n notFound: 'Org not found',\n hasChildren: 'Org has children and cannot be deleted',\n invalidParent: 'Invalid parent org',\n codeExists: 'Org code already exists',\n hasUsers: 'Org still has active users and cannot be deleted',\n outOfScope: 'Target org is outside your data scope',\n },\n position: {\n notFound: 'Position not found',\n codeExists: 'Position code already exists',\n hasUsers: 'Position still has active users and cannot be deleted',\n },\n module: {\n notFound: 'App not found',\n codeExists: 'App code already exists',\n protected: 'Built-in app is protected',\n accessDenied: 'No access to this app',\n hasMenus: 'App still has menus attached; move or delete them first',\n },\n menu: {\n notFound: 'Menu not found',\n hasChildren: 'Menu has children and cannot be deleted',\n invalidParent: 'Invalid parent menu (cannot be itself or its descendant)',\n },\n session: { notFound: 'Session not found or already signed out' },\n dict: {\n typeNotFound: 'Dict type not found',\n typeCodeExists: 'Dict type code exists',\n itemNotFound: 'Dict item not found',\n seedProtected: 'Seed data is protected and cannot be deleted',\n itemValueExists: 'Dict item value already exists under this type',\n },\n config: { notFound: 'Config not found', keyExists: 'Config key exists' },\n notice: {\n notFound: 'Notification not found',\n receiverRequired: 'At least one receiver must be specified',\n receiverNotFound: 'Receiver does not exist or is disabled',\n actionInvalid:\n 'Invalid action list: label required, method must be GET/POST, url must be a site path starting with a single /, at most 5 actions',\n },\n file: {\n empty: 'Empty file',\n tooLarge: 'File too large',\n extNotAllowed: 'File type not allowed',\n notFound: 'File not found',\n chunkMissing: 'Missing chunk, please retry upload',\n chunkHashMismatch: 'File integrity check failed, please re-upload',\n },\n excel: {\n providerMissing:\n 'Excel support is not installed; install SmartAdmin.Excel and call AddSmartAdminExcel()',\n },\n import: {\n fileEmpty: 'Import file is empty',\n rowLimitExceeded: 'Import row count exceeds the limit',\n columnMissing: 'A required column is not mapped',\n cellRequired: 'This cell is required',\n cellDictInvalid: 'Invalid dictionary value',\n cellRefNotFound: 'Referenced data not found',\n cellFormatInvalid: 'Invalid cell format',\n duplicateInFile: 'Business key is duplicated within the file',\n duplicateInDb: 'Business key already exists in the database',\n orgOutOfScope: 'Organization is outside the current data scope',\n },\n export: {\n tooManyRows: 'Export exceeds the row limit; narrow your filters first',\n columnInvalid: 'Requested export column is not allowed',\n },\n job: {\n notFound: 'Job not found',\n codeExists: 'Job code already exists',\n cronInvalid: 'Invalid cron expression',\n triggerInvalid: 'Invalid trigger configuration',\n handlerNotFound: 'Job handler not registered',\n alreadyRunning: 'Previous run is still in progress',\n runNotAlive: 'This run is not in progress',\n sqlDisabled: 'SQL jobs are disabled',\n httpUrlBlocked: 'Target URL rejected by security policy',\n statusConflict: 'Operation not allowed in current job status',\n propsInvalid: 'Job properties missing or invalid',\n logNotFound: 'Job run record not found',\n runLimitReached: 'Concurrent run limit reached, try again later',\n protected: 'Built-in job is protected from deletion',\n },\n ai: {\n providerNotFound: 'Provider not found',\n providerCodeExists: 'Provider code already exists',\n providerDisabled: 'Provider is disabled',\n apiKeyMissing: 'API key is not configured',\n baseUrlBlocked: 'Target URL rejected by security policy',\n presetNotFound: 'Preset provider not found',\n presetImmutable: \"A preset provider's protocol/preset id cannot be changed\",\n modelNotFound: 'Model not found',\n noDefaultModel: 'No default model configured',\n modelDisabled: 'Model is disabled',\n modelNameExists: 'Model name already exists',\n upstreamError: 'Upstream service call failed',\n upstreamTimeout: 'Upstream service call timed out',\n upstreamRateLimited: 'Upstream service rate-limited, please retry later',\n upstreamAuthFailed: 'Upstream authentication failed, check the API key',\n upstreamBadResponse: 'Upstream service returned an unexpected response',\n dataProtectionKeyMissing: 'Data protection key unavailable, cannot decrypt the API key',\n sceneRequired: 'A call scene is required',\n multimodalSystemUnsupported:\n 'System messages do not support multi-part content such as images',\n },\n recycle: {\n notFound: 'Deleted record not found',\n uniqueConflict: 'Restore failed: code/account already taken by another record',\n invalidType: 'Unsupported recycle bin type',\n },\n request: {\n pageSizeExceeded:\n 'Page size exceeds the limit of {max}; use a smaller page or the export endpoint',\n },\n system: { internal: 'Internal server error' },\n },\n\n // Recycle bin\n recycle: {\n title: 'Recycle Bin',\n name: 'Name',\n code: 'Code',\n deletedAt: 'Deleted at',\n restore: 'Restore',\n purge: 'Purge',\n restoreConfirm: 'Restore \"{name}\"?',\n purgeConfirm: 'Permanently delete \"{name}\"? This cannot be undone.',\n restored: 'Restored',\n purged: 'Permanently deleted',\n empty: 'Recycle bin is empty',\n tabs: {\n user: 'Users',\n role: 'Roles',\n org: 'Orgs',\n position: 'Positions',\n module: 'Modules',\n config: 'Configs',\n dict: 'Dicts',\n menu: 'Menus',\n job: 'Jobs',\n },\n },\n // User import / export: column titles + file names (mirror UserImportProfile / UserExportProfile columns)\n userExport: {\n account: 'Account',\n name: 'Name',\n nickname: 'Nickname',\n phone: 'Phone',\n email: 'Email',\n gender: 'Gender',\n orgName: 'Organization',\n positionName: 'Position',\n directorName: 'Director',\n enabled: 'Enabled',\n superAdmin: 'Super Admin',\n createTime: 'Created At',\n fileName: 'users.xlsx',\n importTemplateName: 'user-import-template.xlsx',\n errorReportName: 'user-import-errors.xlsx',\n },\n logOp: {\n fileName: 'op-logs.xlsx',\n },\n}\n"],"names":["enUS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"en-US.js","sources":["../../src/locales/en-US.ts"],"sourcesContent":["export default {\n common: {\n rowNo: 'No.',\n copySuffix: '- Copy',\n zoomIn: 'Maximize',\n zoomOut: 'Restore',\n success: 'Success',\n confirm: 'Confirm',\n confirmTitle: 'Confirm',\n cancel: 'Cancel',\n close: 'Close',\n more: 'More',\n search: 'Search',\n reset: 'Reset',\n expandAll: 'Expand all',\n collapseAll: 'Collapse all',\n add: 'Add',\n edit: 'Edit',\n delete: 'Delete',\n save: 'Save',\n submit: 'Submit',\n format: 'Format',\n copy: 'Copy',\n copied: 'Copied',\n loading: 'Loading…',\n yes: 'Yes',\n no: 'No',\n status: 'Status',\n enabled: 'Enabled',\n disabled: 'Disabled',\n visible: 'Visible',\n hidden: 'Hidden',\n operation: 'Actions',\n createTime: 'Created',\n batchDelete: 'Batch delete',\n batchDeleteConfirm: 'Delete the {count} selected item(s)? This cannot be undone.',\n all: 'All',\n noData: 'No data',\n back: 'Back',\n detail: 'Detail',\n },\n notFound: {\n desc: 'Page not found',\n back: 'Back to workbench',\n },\n // Content-area render fallback (components/ErrorBoundary)\n errorBoundary: {\n title: 'This page hit an error',\n desc: 'The page threw an unhandled exception while rendering. You can retry, or go back home and keep working.',\n retry: 'Retry',\n home: 'Go home',\n },\n // Portal bootstrap failure (network / 5xx / rate limit): the session is fine, so it is kept\n bootError: {\n title: 'Could not load the workbench',\n desc: 'We could not fetch your apps and menus. This is usually a network problem or a temporarily unavailable server. You are still signed in.',\n retry: 'Retry',\n relogin: 'Sign in again',\n },\n missingRoute: {\n title: 'Menu page unavailable',\n message: 'The component path configured for “{title}” does not exist: {component}',\n },\n userPicker: {\n title: 'Select users',\n available: 'Available',\n selected: 'Selected',\n add: 'Add',\n added: 'Added',\n addChecked: 'Add checked',\n clear: 'Clear',\n },\n app: {\n theme: 'Theme',\n dark: 'Dark',\n light: 'Light',\n accent: 'Accent',\n density: 'Density',\n comfortable: 'Comfortable',\n compact: 'Compact',\n language: 'Language',\n loginStyle: 'Login style',\n collapse: 'Collapse',\n openMenu: 'Open menu',\n switchModule: 'Switch app',\n logout: 'Log out',\n personalCenter: 'Account',\n clearCache: 'Clear cache',\n cacheCleared: 'Cache cleared',\n profile: 'Profile',\n password: 'Change password',\n security: 'Account security',\n sessions: 'My sessions',\n bindings: 'Account bindings',\n search: 'Search',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit fullscreen',\n settings: 'Settings',\n notice: {\n title: 'Notifications',\n empty: 'No notifications',\n markAllRead: 'Mark all read',\n viewAll: 'View all',\n },\n },\n settings: {\n title: 'Settings',\n tabAppearance: 'Appearance',\n tabLayout: 'Layout',\n tabGeneral: 'General',\n themeMode: 'Theme mode',\n auto: 'Auto',\n themeColor: 'Theme color',\n custom: 'Custom',\n layout: 'Layout',\n layoutVertical: 'Vertical',\n layoutVerticalMix: 'Vertical Mix',\n layoutVerticalHybridHeaderFirst: 'Left Hybrid (Header)',\n layoutHorizontal: 'Horizontal',\n layoutTopHybridSidebarFirst: 'Top Hybrid (Sidebar)',\n layoutTopHybridHeaderFirst: 'Top Hybrid (Header)',\n interface: 'Interface',\n showBreadcrumb: 'Breadcrumb',\n showTabs: 'Tabs',\n fixedHeader: 'Fixed header',\n pageTransition: 'Page transition',\n transitionNone: 'None',\n transitionFade: 'Fade',\n transitionFadeSlide: 'Fade slide',\n grayscale: 'Grayscale',\n watermark: 'Watermark',\n watermarkText: 'Watermark text',\n watermarkPlaceholder: 'Enter watermark text',\n formStyle: 'Form style',\n formStyleModal: 'Modal',\n formStyleDrawer: 'Drawer',\n resetConfirm: 'Reset all settings to default?',\n copyConfig: 'Copy config',\n configCopied:\n 'Current config copied (paste into DEFAULTS in stores/app.ts to make it the new default)',\n searchPlaceholder: 'Search menu…',\n searchEmpty: 'No matching menu',\n searchHint: '↑↓ navigate · ↵ open · Esc close',\n },\n tabs: {\n refresh: 'Refresh',\n pin: 'Pin',\n unpin: 'Unpin',\n close: 'Close',\n closeOthers: 'Close others',\n closeLeft: 'Close left',\n closeRight: 'Close right',\n closeAll: 'Close all',\n },\n login: {\n title: 'Sign in',\n subtitle: 'A unified access layer for every org and app',\n headlinePre: 'Enterprise ',\n headlineAccent: 'RBAC',\n headlinePost: ' console',\n welcome: 'Welcome back',\n welcomeSub: 'Sign in to continue',\n featRbac: 'RBAC authorization',\n featScope: 'Multi-org data scope',\n featPortal: 'Multi-app portal',\n account: 'Account',\n accountPlaceholder: 'Enter account',\n password: 'Password',\n passwordPlaceholder: 'Enter password',\n required: 'Enter account and password',\n captcha: 'Captcha',\n captchaPlaceholder: 'Enter captcha',\n captchaMathPlaceholder: 'Enter the result',\n captchaRequired: 'Enter the captcha',\n remember: 'Remember me',\n submit: 'Sign in',\n success: 'Signed in',\n smsLogin: 'SMS sign-in',\n accountLogin: 'Password sign-in',\n phone: 'Phone',\n phonePlaceholder: 'Enter phone number',\n smsCode: 'SMS code',\n smsCodePlaceholder: 'Enter the SMS code',\n smsRequired: 'Enter phone number and SMS code',\n sendCode: 'Send code',\n resendAfter: 'Resend in {s}s',\n smsSent: 'Code sent',\n mfaTitle: 'A code was sent to {phone}',\n mfaSub: 'Enter the SMS code to finish signing in',\n setupAuthenticator: 'Set up authenticator',\n totpTitle: 'Two-factor authentication',\n totpSub: 'Enter the 6-digit code from your authenticator app',\n totpCode: 'Authenticator code',\n totpPlaceholder: 'Enter 6-digit code',\n totpBindTitle: 'Authenticator required',\n totpBindSub:\n 'An administrator requires two-factor authentication for this account. Set it up, then sign in again.',\n useRecovery: 'Use a recovery code',\n backToPassword: 'Back to password sign-in',\n otherMethods: 'Other methods',\n moreMethods: 'More sign-in methods',\n ssoWecom: 'WeCom',\n ssoDingtalk: 'DingTalk',\n sso: 'SSO',\n ssoComingSoon: 'Third-party login coming soon',\n skinAurora: 'Aurora',\n skinSplit: 'Split',\n skinSpotlight: 'Spotlight',\n },\n module: {\n choose: 'Choose app',\n empty: 'No accessible apps. Contact your administrator.',\n setDefault: 'Set default',\n isDefault: 'Default',\n back: 'Back',\n enter: 'Enter',\n manage: 'Modules',\n code: 'Code',\n name: 'Name',\n icon: 'Icon',\n defaultRoute: 'Default route',\n apiPrefix: 'API prefix',\n apiPrefixHint:\n 'Filters the permission-route dropdown by app. Enter the backend route segment (e.g. sys, biz); empty = no filter',\n sort: 'Sort',\n remark: 'Remark',\n builtin: 'Built-in',\n codeRequired: 'Enter a code',\n nameRequired: 'Enter a name',\n addTitle: 'Add app',\n editTitle: 'Edit app',\n deleteConfirm: 'Delete app \"{title}\"?',\n disableConfirm: 'Disable app \"{title}\"? It will disappear from the portal',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n menu: {\n searchPlaceholder: 'Search title / route / permission',\n workbench: 'Workbench',\n profile: 'Profile',\n password: 'Change password',\n security: 'Account security',\n notice: 'My notifications',\n sessions: 'My sessions',\n bindings: 'Account bindings',\n manage: 'Menus',\n parent: 'Parent',\n parentRoot: 'Top level (root)',\n type: 'Type',\n typeCatalog: 'Catalog',\n typeMenu: 'Page',\n typeButton: 'Button',\n title: 'Title',\n permission: 'Permission',\n permissionPlaceholder: 'Pick routes (multiple allowed)',\n permissionHint:\n 'A button may carry several routes; granting it grants them all. A Query button carries the list and detail routes.',\n configPerms: 'Permissions ({n})',\n showAllRoutes: \"Show all apps' routes\",\n routesInApp: 'This app',\n routesOther: 'Other apps',\n module: 'App',\n moduleHint: 'Top-level catalog only',\n linkHint:\n 'External / embed: an http(s) URL in Path = external link (new window); an http(s) URL in Component = embedded iframe.',\n moduleAll: 'All',\n moduleUnassigned: 'Unassigned',\n path: 'Route path',\n component: 'Component',\n icon: 'Icon',\n sort: 'Sort',\n visible: 'Sidebar visible',\n titleRequired: 'Enter a title',\n addTitle: 'Add menu',\n editTitle: 'Edit menu',\n addChild: 'Add child',\n buttons: 'Buttons',\n buttonManagerTitle: '\"{title}\" · Buttons',\n buttonParent: 'Parent page',\n addButton: 'Add button',\n batchFromRoutes: 'Add from routes',\n batchTitle: 'Add buttons from routes',\n batchSearchPlaceholder: 'Search method / path / title',\n noRoutesLeft: 'No routes to add (all covered by this menu, or the route list is empty)',\n btnQuery: 'Query',\n btnCreate: 'Create',\n btnUpdate: 'Edit',\n btnDelete: 'Delete',\n deleteConfirm: 'Delete menu \"{title}\"?',\n disableConfirm: 'Disable menu \"{title}\"? Its children will be hidden too',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n iconPicker: {\n placeholder: 'Select icon',\n title: 'Select icon',\n search: 'Search icon name…',\n local: 'Local SVG',\n online: 'Online',\n onlinePlaceholder: 'Any iconify name, e.g. mdi:home',\n use: 'Use',\n offlineHint: 'Offline — online icons not bundled cannot be previewed',\n empty: 'No matching icon',\n more: '{n} more — keep typing to narrow',\n },\n // SmartTable (smart-naive-table) chrome text; search/reset/density reuse common/app keys, injected globally in createSmartAdmin.ts\n table: {\n refresh: 'Refresh',\n columnSettings: 'Columns',\n columnSettingsReset: 'Restore defaults',\n fixedLeft: 'Pin left',\n fixedRight: 'Pin right',\n fixedNone: 'Unpin',\n expand: 'Expand',\n collapse: 'Collapse',\n // TableZoomButton (blow a wide table up to the full viewport)\n zoom: 'Zoom in',\n zoomExit: 'Zoom out',\n },\n workbench: {\n welcome: 'Hello, {name}',\n subtitle: 'SmartAdmin · Enterprise RBAC console',\n roles: 'Roles',\n users: 'Authorized users',\n perms: 'Permissions',\n online: 'Online sessions',\n trendTitle: 'Activity (last 7 days)',\n distributionTitle: 'Resource distribution',\n trendLogins: 'Logins',\n trendActive: 'Active users',\n },\n // Business app workbench (dashboard/biz.vue; real data, an app overrides the same page key with its own stats)\n biz: {\n welcome: 'Welcome back, {name}',\n subtitle: 'App workbench',\n quick: 'Quick access',\n notices: 'My notifications',\n viewAll: 'View all',\n noMenus: 'No menus in this app yet',\n },\n user: {\n title: 'Users',\n account: 'Account',\n name: 'Name',\n status: 'Status',\n enabled: 'Enabled',\n disabled: 'Disabled',\n superAdmin: 'Super',\n createTime: 'Created',\n // Write-side field (create/edit only)\n password: 'Initial password',\n passwordHint: 'Leave blank to auto-generate one (shown once after creation)',\n org: 'Org',\n allOrgs: 'All',\n orgPlaceholder: 'Select org (optional)',\n position: 'Position',\n positionPlaceholder: 'Select position (optional)',\n director: 'Manager',\n directorPlaceholder: 'Select manager (optional)',\n nickname: 'Nickname',\n nicknamePlaceholder: 'Nickname (optional)',\n phone: 'Phone',\n phonePlaceholder: 'Phone (optional)',\n phoneInvalid: 'Invalid phone number',\n email: 'Email',\n emailPlaceholder: 'Email (optional)',\n emailInvalid: 'Invalid email',\n gender: 'Gender',\n genderPlaceholder: 'Select gender (optional)',\n avatar: 'Avatar',\n avatarUploading: 'Uploading…',\n roles: 'Roles',\n rolesPlaceholder: 'Assign roles (optional)',\n accountRequired: 'Enter an account',\n nameRequired: 'Enter a name',\n addTitle: 'Add user',\n editTitle: 'Edit user',\n deleteConfirm: 'Delete user \"{name}\"?',\n disableConfirm: 'Disable user \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n resetPassword: 'Reset password',\n newPassword: 'New password',\n newPasswordHint: 'Leave blank to auto-generate one',\n resetDone: 'Password reset',\n createDone: 'User created',\n resetDoneHint:\n 'Relay the initial password below to the user; it will not show again after closing:',\n copy: 'Copy',\n copied: 'Copied to clipboard',\n copyFailed: 'Copy failed, please select manually',\n forceTotp: 'Require authenticator',\n totpBound: 'Authenticator bound',\n issueTotpInvite: 'Invite authenticator',\n clearMfa: 'Unbind authenticator',\n clearMfaConfirm:\n 'Unbind authenticator for \"{name}\"? They must set it up again before two-factor sign-in works.',\n mfaCleared: 'Authenticator unbound for user',\n totpInviteTitle: 'Authenticator invite for {name}',\n totpInviteOnce:\n 'This invitation is shown only now. Send the link or token to the user through an approved channel.',\n totpInviteUrl: 'Binding link',\n totpInviteToken: 'Invite token',\n totpInviteExpires: 'Expires at',\n },\n mfa: {\n bindTitle: 'Set up authenticator',\n recoveryTitle: 'Use recovery code',\n useRecovery: 'Use a recovery code',\n backToBind: 'Set up authenticator',\n stepVerify: 'Verify',\n stepAuthenticator: 'Authenticator',\n stepRecovery: 'Recovery codes',\n bindHint:\n 'Enter your account and current password to enroll (TOTP must be enabled by the admin).',\n account: 'Account',\n currentPassword: 'Current password',\n startBind: 'Start setup',\n bindRequired: 'Enter your account and current password',\n scanSetupHint:\n 'Scan the QR code with Google Authenticator, Microsoft Authenticator, or a similar app.',\n manualSetupHint:\n 'If you cannot scan, enter the key manually in your authenticator app, then type the current 6-digit code.',\n manualKey: 'Manual setup key',\n otpauthUri: 'Authenticator URI',\n authenticatorCode: 'Authenticator code',\n completeBind: 'Complete setup',\n codeRequired: 'Enter the authenticator code',\n recoveryOnce:\n 'Save these recovery codes now. Each can be used once and they will not be displayed again. Download them to your device for safekeeping.',\n copy: 'Copy',\n copied: 'Copied to clipboard',\n copyFailed: 'Copy failed; select and copy manually',\n copyAll: 'Copy all codes',\n downloadCodes: 'Download',\n recoveryDownloaded: 'Recovery codes download started',\n recoveryDownloadHeader: 'SmartAdmin recovery codes (account: {account})',\n recoveryDownloadFooter: 'Each code can be used only once. Store offline and do not share.',\n backToLogin: 'Back to sign in',\n recoveryHint:\n 'A recovery code removes your authenticator and signs out existing sessions. Enroll again afterwards.',\n recoveryCode: 'Recovery code',\n submitRecovery: 'Use recovery code',\n recoveryRequired: 'Enter your account, current password, and recovery code',\n recoveryDone:\n 'Authenticator removed. Sign in again and complete a new self-service setup if required.',\n bindStartResponseIncomplete: 'The setup response was incomplete. Start the setup again.',\n bindCompleteResponseIncomplete: 'The setup response was incomplete. Start the setup again.',\n },\n reauth: {\n title: 'Re-authenticate',\n hint: 'This is a high-risk change. Enter an authenticator code or your current password to continue (valid for about 5 minutes).',\n method: 'Method',\n methodTotp: 'Authenticator',\n methodPassword: 'Current password',\n totpCode: 'Code',\n totpPlaceholder: '6-digit code',\n totpRequired: 'Enter the authenticator code',\n password: 'Current password',\n passwordPlaceholder: 'Current login password',\n passwordRequired: 'Enter your current password',\n confirm: 'Verify and continue',\n },\n // Import wizard / export column picker\n import: {\n button: 'Import',\n wizardTitle: 'Import users',\n stepUpload: 'Upload',\n stepMapping: 'Map columns',\n stepPreview: 'Preview & fix',\n stepResult: 'Done',\n downloadTemplate: 'Download template',\n dropHint: 'Click or drop an xlsx here',\n dropSub: '.xlsx only; use template dropdown values for dict columns',\n needFile: 'Please choose a file first',\n mappingHint: 'Map file headers to target fields. Auto-matched ones are pre-selected.',\n fileHeader: 'File header',\n targetColumn: 'Target column',\n unmap: '(Skip)',\n summary: '{total} rows, {errors} with errors',\n summaryDup: 'plus {n} already existing',\n onlyErrors: 'Errors only',\n revalidate: 'Re-validate',\n revalidated: 'Re-validated: {errors}/{total} rows have errors',\n errors: 'Errors',\n ok: 'OK',\n errorCount: '{n}',\n dupTag: 'Exists',\n // Key suffix = the DuplicateStrategy value (0 skip / 1 overwrite / 2 error)\n dupHint: {\n 0: 'This row already exists; it will be skipped on commit. No change needed.',\n 1: 'This row already exists; it will be updated on commit. No change needed.',\n 2: 'This row already exists and the current strategy treats that as a failure.',\n },\n strategy: 'Duplicates',\n strategySkip: 'Skip existing',\n strategyOverwrite: 'Overwrite existing',\n strategyError: 'Treat existing as error',\n commit: 'Commit import',\n prev: 'Back',\n next: 'Next',\n resultTitle: 'Import finished',\n resultTotal: 'Total {n}',\n resultInserted: 'Inserted {n}',\n resultUpdated: 'Updated {n}',\n resultSkipped: 'Skipped {n}',\n resultFailed: 'Failed {n}',\n editFailures: 'Edit failed rows',\n downloadErrorReport: 'Download error report',\n noErrorRows: 'No error rows',\n },\n export: {\n button: 'Export',\n pickColumns: 'Choose columns',\n selectAll: 'Select all',\n confirm: 'Export',\n done: 'Export started',\n },\n config: {\n title: 'Configs',\n key: 'Key',\n name: 'Name',\n value: 'Value',\n group: 'Group',\n sort: 'Sort',\n remark: 'Remark',\n keyRequired: 'Enter a key',\n nameRequired: 'Enter a name',\n addTitle: 'Add config',\n editTitle: 'Edit config',\n deleteConfirm: 'Delete config \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n groupManagedBy: 'This group belongs to the \"{tab}\" tab; saved configs appear there',\n groupExtra: {\n title: 'Other configs in this group',\n hint: 'Configs in this group that the form above does not list. View, edit or delete them here.',\n },\n tab: {\n base: 'General',\n security: 'Security',\n externalAuth: 'External login',\n upload: 'Upload',\n job: 'Scheduled jobs',\n other: 'Other',\n },\n job: {\n logRetentionDays: 'Log retention days',\n alertEmails: 'Alert emails',\n alertEmailsHint: 'Separate multiple emails with commas',\n },\n externalAuth: {\n hint: 'Choose which deployed third-party sign-in methods appear on the login page. Disabled methods are hidden and authorize is rejected. Secrets stay in server appsettings.',\n empty: 'No external login providers registered (install optional packages or configure OIDC)',\n showOnLogin: 'On login page',\n hidden: 'Hidden',\n loginVisible: 'Show on login page',\n summary: '{total} methods · {on} shown on login',\n summaryFull: '{total} total · {registered} configured · {on} on login',\n reset: 'Reset',\n notConfigured: 'Not configured',\n notConfiguredTip:\n 'Not registered on this deployment (package/secrets missing). Cannot show on login.',\n linkByAccount: 'Link by account',\n linkByAccountConfirmTitle: 'Turn on link by account?',\n linkByAccountConfirm:\n 'The first time someone signs in with {name}, if their {name} account ID is exactly the same as a local account, the two are bound and they are signed in directly. Super admins, disabled accounts and accounts already bound to {name} are never linked. Make sure both sides are the same people first, e.g. local accounts were synced from {name}.',\n },\n base: {\n siteTitle: 'Site title',\n logo: 'Logo URL',\n siteSubtitle: 'Login subtitle',\n copyright: 'Copyright',\n copyrightUrl: 'Copyright link',\n },\n security: {\n loginLock: {\n title: 'Login lockout',\n maxFailCount: 'Max fail count',\n lockMinutes: 'Lock minutes',\n },\n password: {\n title: 'Password complexity',\n minLength: 'Min length',\n requireUpper: 'Require uppercase',\n requireLower: 'Require lowercase',\n requireDigit: 'Require digit',\n requireSpecial: 'Require special char',\n expireDays: 'Password max age (days, 0 = never)',\n historyCount: 'Password history count (0 = off)',\n },\n session: {\n title: 'Session lifetime',\n accessMinutes: 'Access token (min)',\n refreshMinutes: 'Refresh token (min)',\n },\n captcha: {\n title: 'Login captcha',\n enabled: 'Enable login captcha',\n type: 'Captcha type',\n types: { char: 'Characters', path: 'Stroke (anti-scrape)', math: 'Arithmetic' },\n },\n totp: {\n title: 'Authenticator (TOTP)',\n enabled: 'Enable authenticator',\n requireForSuperAdmin: 'Require authenticator for super admin',\n hint: 'Toggles like login captcha — takes effect immediately. Per-user “require authenticator” only enforces at sign-in when this is on; users bind under Account security.',\n },\n sms: {\n title: 'SMS verification',\n hint: 'The second factor only applies to users with a bound phone; in development, codes are printed to the backend log — production requires a real SMS provider (ISmsSender).',\n },\n mfa: { enabled: 'Enable SMS second factor' },\n smsLogin: { enabled: 'Enable SMS code sign-in' },\n rateLimit: {\n title: 'Rate limiting',\n enabled: 'Enable rate limiting',\n windowSeconds: 'Window (seconds)',\n permitPerWindow: 'Global requests / window',\n authPermitPerWindow: 'Auth-endpoint requests / window',\n },\n highSens: {\n title: 'High-sensitivity permissions (custom)',\n hint: 'Kernel defaults cannot be removed; only consumer custom codes can be added/deleted. Writes require recent reauth.',\n code: 'Permission code',\n remark: 'Remark',\n codePh: 'e.g. POST:/api/v1/biz/order',\n remarkPh: 'Optional remark',\n codeRequired: 'Permission code is required',\n },\n },\n upload: {\n title: 'Upload limits',\n maxSizeMb: 'Max size (MB)',\n allowedExtensions: 'Allowed extensions',\n extPlaceholder: 'Type an extension, e.g. .jpg',\n extTip: 'With leading dot, lowercase; empty falls back to server default',\n },\n },\n // Dict management (master-detail: types on the left, items on the right)\n dict: {\n title: 'Dictionaries',\n code: 'Type code',\n name: 'Type name',\n searchName: 'Search name',\n sort: 'Sort',\n remark: 'Remark',\n codeRequired: 'Enter a type code',\n nameRequired: 'Enter a type name',\n addTypeTitle: 'Add dict type',\n editTypeTitle: 'Edit dict type',\n typeDeleteConfirm: 'Delete dict type \"{name}\"? Its items will be removed too.',\n typeSaved: 'Saved',\n typeDeleted: 'Deleted',\n itemsOf: 'Items of \"{name}\"',\n selectTypeHint: 'Select a dict type on the left to manage its items',\n itemLabel: 'Label',\n itemValue: 'Value',\n itemLabelRequired: 'Enter a label',\n itemValueRequired: 'Enter a value',\n addItem: 'Add item',\n addItemTitle: 'Add dict item',\n editItemTitle: 'Edit dict item',\n itemDeleteConfirm: 'Delete dict item \"{label}\"?',\n itemSaved: 'Saved',\n itemDeleted: 'Deleted',\n },\n // Org management (tree table + parent-org tree select)\n org: {\n title: 'Organizations',\n searchPlaceholder: 'Search name / code',\n name: 'Name',\n code: 'Code',\n category: 'Category',\n categoryPlaceholder: 'Select category',\n sort: 'Sort',\n parent: 'Parent org',\n parentPlaceholder: 'Select parent (blank = top level)',\n nameRequired: 'Enter a name',\n codePlaceholder: 'Leave blank to auto-generate',\n addChild: 'Add child',\n addTitle: 'Add org',\n editTitle: 'Edit org',\n deleteConfirm: 'Delete org \"{name}\"?',\n copy: 'Copy',\n copyTitle: 'Copy org',\n copyConfirm: 'This will copy \"{name}\" and all descendants. Cloned codes get a -copy suffix.',\n copyNameLabel: 'New org name',\n copied: 'Copied',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n // File management (list + upload/download/delete)\n file: {\n title: 'Files',\n name: 'File name',\n extension: 'Ext',\n size: 'Size',\n contentType: 'Type',\n uploadTime: 'Uploaded',\n upload: 'Upload',\n uploadChunked: 'Chunked upload',\n uploaded: 'Uploaded successfully',\n download: 'Download',\n deleteConfirm: 'Delete file \"{name}\"?',\n deleted: 'Deleted',\n },\n // Notifications (NoticeController admin side: publish / list / delete)\n notice: {\n title: 'Notifications',\n mine: 'My notifications',\n status: 'Status',\n read: 'Read',\n unread: 'Unread',\n allRead: 'All marked as read',\n noticeTitle: 'Title',\n content: 'Content',\n type: 'Type',\n typeNotice: 'Notice',\n typeAnnouncement: 'Announcement',\n typeMessage: 'Message',\n receiver: 'Recipients',\n receiverAll: 'Everyone',\n receiverRole: 'Roles',\n receiverUser: 'Users',\n receiverPlaceholder: 'Select recipients',\n receiverRequired: 'Select at least one recipient',\n publishTime: 'Published at',\n publish: 'Publish',\n publishTitle: 'Publish notification',\n titleRequired: 'Title is required',\n deleteConfirm: 'Delete notification \"{title}\"?',\n published: 'Published',\n deleted: 'Deleted',\n view: 'View',\n detailTitle: 'Notification detail',\n // Action buttons (optional at publish time, rendered under the body)\n actions: 'Actions',\n actionsHint:\n 'Up to 5; a url starting with /api/ is called as an API, any other site path opens as a page; a label containing \".\" is translated as an i18n key',\n actionCount: '{count} action(s)',\n actionLabel: 'Label',\n actionMethod: 'Method',\n actionUrl: 'Site path',\n actionStyle: 'Style',\n actionStyleDefault: 'Default',\n actionStylePrimary: 'Primary',\n actionStyleError: 'Danger',\n actionNeedConfirm: 'Confirm first',\n actionNeedComment: 'Ask for a comment',\n actionAdd: 'Add action',\n actionConfirm: 'Run \"{label}\"?',\n actionCommentPlaceholder: 'Your comment (optional)',\n actionDone: 'Done',\n actionInvalidUrl: 'Invalid action url',\n },\n // Realtime (SignalR; instant push when SmartAdmin:Realtime:Enabled, else polling / lazy 401)\n realtime: {\n forcedLogout: 'You have been signed out by an administrator',\n },\n // Online sessions (read-only + force logout)\n session: {\n title: 'Online sessions',\n account: 'Account',\n ip: 'IP',\n device: 'Device',\n loginTime: 'Login time',\n expiresAt: 'Expires at',\n kick: 'Force logout',\n self: 'Current session',\n kickConfirm: 'Force-logout the session of \"{account}\"? It will be invalidated immediately.',\n kicked: 'Forced logout',\n mineTitle: 'My sessions',\n current: 'This device',\n kickMineConfirm: 'Sign out the session on this device? It will be invalidated immediately.',\n },\n // External login / SSO: callback result page + personal-center account bindings\n oauth: {\n processing: 'Signing you in…',\n backToLogin: 'Returning to the sign-in page',\n failed: 'Third-party sign-in failed, please try again',\n bindingsTitle: 'Account bindings',\n bindingsHint:\n 'Bind a third-party account to sign in with one click. Binding redirects you to that provider to authorize once.',\n bindingsTip:\n 'Binding opens the provider for authorization. After unbinding you can no longer sign in with that account.',\n boundCountLabel: 'bound',\n bindTip: 'Use the button below to authorize and bind',\n disabledTip: 'This method is turned off; existing bindings can still be removed',\n cannotBind: 'Unavailable',\n noProviders: 'No third-party sign-in methods are enabled',\n thirdParty: 'third-party account',\n pendingLinkTitle: 'Link {name}',\n pendingLinkHint:\n 'This {name} is not linked yet. Sign in with your own system account; you will be asked to confirm binding after login. Do not open binding links from unknown sources.',\n pendingLinkSuccess: '{name} linked. You can sign in with it next time.',\n pendingLinkConfirmTitle: 'Bind this third-party account?',\n pendingLinkConfirmContent:\n 'Bind {name}{identity} to the current account “{account}”. If this is not the account you just authorized, choose “Sign in only”.',\n pendingLinkConfirmOk: 'Bind',\n pendingLinkConfirmSkip: 'Sign in only',\n pendingLinkIdentity: ' ({display})',\n bind: 'Bind',\n unbind: 'Unbind',\n bound: 'Bound',\n notBound: 'Not bound',\n boundAt: 'Bound at {time}',\n unbound: 'Unbound',\n unbindConfirm: 'Unbind \"{name}\"? You will no longer be able to sign in with it.',\n disabled: 'Disabled',\n // Built-in brand display names (used when the backend sends no displayName)\n brand: {\n github: 'GitHub',\n wechat: 'WeChat',\n wecom: 'WeCom',\n dingtalk: 'DingTalk',\n gitee: 'Gitee',\n qq: 'QQ',\n },\n },\n // Position management (plain CRUD; positions are not linked to orgs)\n position: {\n title: 'Positions',\n code: 'Code',\n name: 'Name',\n sort: 'Sort',\n codePlaceholder: 'Auto-generated if empty',\n nameRequired: 'Enter a name',\n addTitle: 'Add position',\n editTitle: 'Edit position',\n deleteConfirm: 'Delete position \"{name}\"?',\n saved: 'Saved',\n deleted: 'Deleted',\n },\n role: {\n title: 'Roles',\n code: 'Code',\n name: 'Name',\n sort: 'Sort',\n remark: 'Remark',\n codeRequired: 'Enter a code',\n nameRequired: 'Enter a name',\n addTitle: 'Add role',\n editTitle: 'Edit role',\n deleteConfirm: 'Delete role \"{name}\"? Its grants, data scope and user links will be removed.',\n deleteConfirmNoUsers: 'Delete role \"{name}\"? No user currently holds it.',\n deleteConfirmWithUsers:\n 'Role \"{name}\" is held by {count} user(s). Deleting it strips those users of every permission it grants, and the links cannot be restored. Delete anyway?',\n batchDeleteWithUsers:\n 'Delete the {count} selected role(s)? {users} user(s) will immediately lose the permissions they grant, and the links cannot be restored.',\n isDelegatable: 'Delegatable',\n isDelegatableHint:\n 'When enabled, non-superadmin users can assign this role to users within their data scope',\n grantUsers: 'Grant users',\n grantUsersSaved: 'User grants saved',\n saved: 'Saved',\n deleted: 'Deleted',\n grantMenus: 'Grant menus',\n grantSaved: 'Grants saved',\n catalog: 'Directory',\n menuCol: 'Menu',\n buttonsCol: 'Buttons',\n apiOnlyRow: 'API only (no page)',\n dataScope: 'Data scope',\n scopeType: 'Scope type',\n customOrgs: 'Custom orgs',\n customOrgsHint: 'Select orgs visible to this role',\n scopeSaved: 'Data scope saved',\n scope: {\n all: 'All data',\n org: 'Own org',\n orgAndChildren: 'Own org & below',\n self: 'Self only',\n custom: 'Custom orgs',\n },\n },\n log: {\n loginTitle: 'Login logs',\n account: 'Account',\n result: 'Result',\n success: 'Success',\n failed: 'Failed',\n resultCode: 'Code',\n name: 'Name',\n ip: 'IP',\n userAgent: 'Client',\n device: 'Device',\n clear: 'Clear logs',\n clearLoginConfirm: 'Clear all login logs? This is a hard delete and cannot be undone.',\n cleared: 'Cleared',\n // Operation logs\n opTitle: 'Operation logs',\n opName: 'Operation',\n method: 'Method',\n path: 'Path',\n elapsed: 'Elapsed',\n operator: 'Operator',\n operatorPlaceholder: 'Select operator',\n param: 'Params',\n exception: 'Exception',\n detail: 'Detail',\n clearOpConfirm: 'Clear all operation logs? This is a hard delete and cannot be undone.',\n // Exception logs\n exceptionTitle: 'Exception logs',\n exceptionType: 'Exception type',\n exceptionMessage: 'Message',\n stackTrace: 'Stack trace',\n traceId: 'Trace ID',\n clearExceptionConfirm: 'Clear all exception logs? This is a hard delete and cannot be undone.',\n },\n monitor: {\n title: 'Server monitor',\n refresh: 'Refresh',\n cpu: 'CPU usage',\n memory: 'Memory usage',\n runtime: 'Runtime',\n disk: 'Disk',\n processorCount: 'Processors',\n threadCount: 'Threads',\n gcHeap: 'GC heap',\n totalMemory: 'Available',\n machineName: 'Machine',\n framework: 'Framework',\n os: 'OS',\n arch: 'Arch',\n uptime: 'Uptime',\n free: 'Free',\n days: 'd',\n hours: 'h',\n minutes: 'm',\n },\n // Scheduled jobs (job list / run logs / monitor / CronEditor; error texts live in error.job.*, do not duplicate)\n job: {\n title: 'Scheduled Jobs',\n name: 'Job name',\n code: 'Job code',\n codePlaceholder: 'Unique code, immutable after creation',\n remark: 'Remark',\n nameRequired: 'Please enter the job name',\n codeRequired: 'Please enter the job code',\n addTitle: 'New job',\n editTitle: 'Edit job',\n deleteConfirm: 'Delete job \"{name}\"?',\n saved: 'Saved; takes effect within 30 seconds across the cluster',\n deleted: 'Deleted',\n runOnce: 'Run',\n runConfirm: 'Run job \"{name}\" once now? This run does not affect its schedule.',\n runStarted: 'Run triggered',\n viewLogs: 'Logs',\n protectedTip: 'Built-in job is protected from deletion',\n pauseConfirm: 'Pause job \"{name}\"? It will no longer be scheduled.',\n panicTooltip:\n 'Tripped after {n} consecutive failures; re-enabling resets the counter and resumes scheduling',\n nextRunTime: 'Next run',\n lastRunTime: 'Last run',\n runCount: 'Runs / Errors',\n status: { ready: 'Ready', paused: 'Paused', completed: 'Completed', panic: 'Panic' },\n form: {\n sectionBasic: 'Basic',\n sectionTrigger: 'Trigger',\n sectionHandler: 'Payload',\n sectionAdvanced: 'Advanced',\n sectionAdvancedHint:\n 'Active window, misfire, concurrency, retry and alerting — saving works without opening this',\n startTime: 'Active from',\n endTime: 'Active until',\n windowPlaceholder: 'Empty = unlimited',\n misfireStrategy: 'Misfire strategy',\n misfireSkip: 'Skip',\n misfireFireOnceNow: 'Fire once now',\n concurrencyMode: 'Concurrency',\n concurrencySerial: 'Serial (skip overlap)',\n concurrencyParallel: 'Parallel',\n timeoutSeconds: 'Timeout (s)',\n timeoutHint: '0 = unlimited',\n retryCount: 'Retry count',\n retryIntervalSeconds: 'Retry interval (s)',\n failAlertThreshold: 'Failure alert threshold',\n failAlertHint: '0 = no alert, no panic',\n alertByNotice: 'Alert via notice',\n alertEmails: 'Alert emails',\n alertEmailsPlaceholder: 'Comma separated; empty falls back to global config',\n },\n trigger: {\n kind: 'Trigger',\n cron: 'Cron',\n interval: 'Fixed interval',\n oneShot: 'One-shot',\n cronExpression: 'Cron expression',\n cronRequired: 'Please enter a cron expression',\n intervalSeconds: 'Interval seconds',\n intervalRequired: 'Please enter interval seconds (≥5)',\n oneShotTime: 'Run at',\n oneShotRequired: 'Please pick the run time',\n seconds: 's',\n everySeconds: 'Every {n}s',\n },\n handler: {\n kind: 'Payload type',\n compiled: 'Compiled',\n http: 'HTTP',\n sql: 'SQL',\n sqlDisabledHint: 'SQL payloads are off — the backend must set SmartAdmin:Jobs:Sql:Enabled',\n name: 'Handler',\n namePlaceholder: 'Pick a registered handler',\n nameRequired: 'Please pick a handler',\n props: 'Properties',\n propKey: 'Key',\n propValue: 'Value',\n addProp: 'Add item',\n httpUrl: 'Request URL',\n httpUrlRequired: 'Please enter the request URL',\n httpMethod: 'Method',\n httpHeaders: 'Headers',\n headersMaskHint:\n 'For security, stored header values show as ********; leave unchanged to keep them as-is',\n httpBody: 'Body',\n successStatuses: 'Success statuses',\n successStatusesPlaceholder: 'e.g. 200,201; empty = any 2xx',\n sqlText: 'SQL statement',\n sqlRequired: 'Please enter the SQL statement',\n },\n log: {\n title: 'Job Runs',\n job: 'Job',\n jobPlaceholder: 'Select job',\n fireMode: 'Fired by',\n fireModeSchedule: 'Schedule',\n fireModeManual: 'Manual',\n fireModeBackfill: 'Backfill',\n fireModeMisfireSkip: 'Misfire skip',\n scheduledTime: 'Scheduled at',\n startTime: 'Started at',\n elapsed: 'Elapsed',\n runStatus: 'Status',\n running: 'Running',\n success: 'Success',\n failed: 'Failed',\n timeout: 'Timeout',\n cancelled: 'Cancelled',\n skipped: 'Skipped',\n retryIndex: 'Retry',\n node: 'Node',\n kill: 'Kill',\n killConfirm:\n 'Kill this run of \"{name}\"? Once the flag is written, the executing node stops within seconds.',\n killed: 'Kill requested',\n clear: 'Clear logs',\n clearTitle: 'Clear run logs',\n clearAll: 'All records',\n beforeDays: 'Older than {n} days',\n clearHint: 'Running records are always kept; this is a hard delete and cannot be undone.',\n cleared: 'Removed {n} records',\n message: 'Handler output',\n error: 'Error',\n attempts: 'Attempts of the same fire',\n firstTry: 'First try',\n retryN: 'Retry #{n}',\n },\n monitor: {\n title: 'Job Monitor',\n todaySuccess: 'Success today',\n todayFailed: 'Failed today',\n running: 'Running',\n totalJobs: 'Total jobs',\n trendTitle: '14-day success/failure trend',\n trendSuccess: 'Success',\n trendFailed: 'Failed',\n upcomingTitle: 'Upcoming runs',\n upcomingJob: 'Job',\n upcomingTime: 'Time',\n nodesTitle: 'Cluster nodes',\n nodeName: 'Node',\n role: 'Role',\n leader: 'leader',\n standby: 'standby',\n lastHeartbeat: 'Last heartbeat',\n workerId: 'WorkerId',\n pid: 'PID',\n justNow: 'just now',\n secondsAgo: '{n}s ago',\n minutesAgo: '{n}m ago',\n hoursAgo: '{n}h ago',\n },\n cron: {\n tabSecond: 'Second',\n tabMinute: 'Minute',\n tabHour: 'Hour',\n tabDay: 'Day',\n tabMonth: 'Month',\n tabWeek: 'Week',\n tabExpression: 'Expression',\n every: 'Every',\n any: 'Not specified (?)',\n range: 'Range',\n to: 'to',\n step: 'Step',\n stepFrom: 'from',\n stepEvery: ', every',\n list: 'Values',\n lastDay: 'Last day (L)',\n lastDayHint: '0 = last day, n = n days before month end (L-n)',\n nearestWeekday: 'Nearest weekday (nW)',\n nearestWeekdayHint: 'Nearest weekday to that day, within the month',\n lastWeekday: 'Last weekday (LW)',\n lastOfWeek: 'Last weekday-of-month (nL)',\n nth: 'Nth weekday (n#m)',\n nthPrefix: 'the',\n nthInfix: 'th',\n sun: 'Sun',\n mon: 'Mon',\n tue: 'Tue',\n wed: 'Wed',\n thu: 'Thu',\n fri: 'Fri',\n sat: 'Sat',\n expressionPlaceholder: 'e.g. 0 0 2 * * ? (sec min hour day month week)',\n expressionHint:\n '5 fields (seconds auto-filled) or 6; day and week cannot both be restricted — one must be * or ?',\n normalized: 'Normalized',\n nextRuns: 'Next {n} runs',\n noUpcoming: 'No future occurrences',\n everySecondWarning:\n 'This expression effectively fires every second — make sure that is intended',\n },\n },\n // AI model management (providers + models; error text lives in error.ai.*, don't duplicate)\n aiModel: {\n title: 'AI Models',\n searchPlaceholder: 'Search provider code / name',\n addProvider: 'Add provider',\n editProvider: 'Edit provider',\n deleteProvider: 'Delete provider',\n deleteConfirm:\n 'Delete provider \"{name}\"? Its models are deleted too; existing usage logs are unaffected.',\n deleted: 'Deleted',\n saved: 'Saved',\n enabled: 'Enabled',\n disabled: 'Disabled',\n pendingConfigTip: 'No API key configured yet — fill it in before saving',\n provider: {\n code: 'Provider code',\n codePlaceholder: 'Unique code, immutable after creation',\n codeRequired: 'Please enter a provider code',\n name: 'Provider name',\n nameRequired: 'Please enter a provider name',\n preset: 'Provider preset',\n presetPlaceholder: 'Pick a preset provider to fill in protocol and base URL',\n presetCustom: 'Custom',\n protocol: 'Protocol',\n baseUrl: 'Base URL',\n baseUrlRequired: 'Please enter a base URL',\n authScheme: 'Auth scheme',\n apiKey: 'API key',\n apiKeyPlaceholder: 'Leave empty to keep the existing key',\n apiKeyHint: 'A saved key only echoes back masked, never in plain text',\n hasApiKeyYes: 'Configured',\n hasApiKeyNo: 'Not configured',\n disableConfirm: 'Disable provider \"{name}\"?',\n sort: 'Sort',\n remark: 'Remark',\n },\n model: {\n title: 'Models',\n add: 'Add model',\n remove: 'Remove',\n name: 'Model name',\n nameRequired: 'Please enter a model name',\n displayName: 'Display name',\n displayNameRequired: 'Please enter a display name',\n contextWindow: 'Context window',\n contextWindowPlaceholder: 'e.g. 128000, leave empty for unlimited',\n inputPrice: 'Input price',\n outputPrice: 'Output price',\n pricePlaceholder: 'Per million tokens, leave empty for free',\n enabled: 'Enabled',\n isDefault: 'Default model',\n setDefault: 'Set as default',\n defaultTag: 'Default',\n atLeastOne: 'Keep at least one model',\n duplicateName: 'Duplicate model name',\n noDefault: 'No default model set',\n },\n test: {\n action: 'Test connection',\n testing: 'Testing…',\n ok: 'Connected',\n failed: 'Connection failed',\n latency: '{ms} ms',\n model: 'Model',\n usage: 'Usage',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n error: 'Error',\n },\n },\n // AI usage stats (filters / summary tiles / grouping / trend / detail table)\n aiUsage: {\n title: 'AI Usage',\n filter: {\n dateRange: 'Date range',\n today: 'Today',\n last7Days: 'Last 7 days',\n last30Days: 'Last 30 days',\n provider: 'Provider',\n providerAll: 'All providers',\n model: 'Model',\n modelAll: 'All models',\n scene: 'Scene',\n sceneAll: 'All scenes',\n scenePlaceholder: 'Filter by call scene',\n },\n metric: {\n totalTokens: 'Total tokens',\n totalCalls: 'Total calls',\n failureCount: 'Failures',\n avgLatency: 'Avg. latency',\n },\n groupBy: {\n label: 'Group by',\n provider: 'By provider',\n model: 'By model',\n scene: 'By scene',\n user: 'By user',\n },\n trend: {\n title: 'Usage trend',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n callCount: 'Calls',\n },\n table: {\n createTime: 'Time',\n provider: 'Provider',\n model: 'Model',\n scene: 'Scene',\n user: 'User',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n totalTokens: 'Total tokens',\n latency: 'Latency',\n status: 'Status',\n success: 'Success',\n failed: 'Failed',\n requestId: 'Request Id',\n streamed: 'Streamed',\n usageSource: 'Usage source',\n usageSourceReported: 'Reported upstream',\n usageSourceMissing: 'Estimated (missing)',\n },\n share: 'Share',\n },\n cache: {\n authTitle: 'Permission cache',\n authDesc:\n \"Clear every user's permission-code and data-scope cache. Forces authorization to be recomputed on the next request after direct DB edits or troubleshooting.\",\n authConfirm:\n \"Clear all users' permission / data-scope cache? Authorization will be recomputed on the next request.\",\n dictTitle: 'Dictionary cache',\n dictDesc:\n 'Clear cached items for every dictionary type. Forces dropdown data sources to rebuild from the latest dictionaries after direct DB edits.',\n dictConfirm: 'Clear all dictionary item cache?',\n configTitle: 'Config cache',\n configDesc:\n 'Clear the read-through cache of every system config item. Forces config values to be re-read from the latest tables after direct DB edits.',\n configConfirm: 'Clear all system config cache?',\n portalTitle: 'Portal menu cache',\n portalDesc:\n \"Bump the portal generation, invalidating every user's module / menu-tree cache so it rebuilds on next entry.\",\n portalConfirm:\n \"Rebuild the portal menu cache? Every user's menu will be recomputed on their next request.\",\n execute: 'Execute',\n flushed: 'Cleared {n} cache entries',\n portalDone: 'Portal menu cache rebuilt',\n note: 'Invalidation only — no key browsing, no value reads: the cache holds plaintext OTP / one-time tokens and keys embed phone numbers / IPs. Normal authorization changes already invalidate automatically; this page is for manual refresh after out-of-band changes such as direct DB edits.',\n },\n profile: {\n title: 'Profile',\n account: 'Account',\n name: 'Name',\n org: 'Org',\n position: 'Position',\n nickname: 'Nickname',\n gender: 'Gender',\n phone: 'Phone',\n email: 'Email',\n avatar: 'Avatar',\n avatarUploading: 'Uploading…',\n phoneInvalid: 'Invalid phone number',\n emailInvalid: 'Invalid email format',\n saved: 'Profile updated',\n },\n personalSecurity: {\n title: 'Account security',\n // Everyone: what the user can do — no admin console paths.\n hint: 'Bind or manage your authenticator (TOTP) for sign-in two-factor verification.',\n // Admins only (super-admin / system-config access): points at Security policy toggle.\n adminHint:\n 'If setup fails or sign-in never asks for a code, open System config → Security and ensure “Enable authenticator” is on.',\n bindDesc:\n 'Self-service setup uses your account and current password. You can also use a recovery code to remove and rebind.',\n setupAuthenticator: 'Set up authenticator',\n useRecovery: 'Use recovery code',\n note: 'Start voluntary setup from this page. If MFA is required and not bound yet, a prompt appears after password sign-in succeeds.',\n },\n changePassword: {\n title: 'Change password',\n oldPassword: 'Current password',\n newPassword: 'New password',\n confirmPassword: 'Confirm new password',\n oldRequired: 'Please enter your current password',\n newRequired: 'Please enter a new password',\n confirmRequired: 'Please confirm your new password',\n mismatch: 'Passwords do not match',\n changed: 'Password changed, please sign in again',\n forcedHint:\n 'First login or password reset — please change your password before using the system.',\n strength: { label: 'Password strength', weak: 'Weak', fair: 'Fair', strong: 'Strong' },\n rules: {\n minLength: 'At least {n} characters',\n upper: 'Contains uppercase',\n lower: 'Contains lowercase',\n digit: 'Contains a digit',\n special: 'Contains a special character',\n specialOptional: 'Contains a special character (optional, stronger)',\n },\n },\n error: {\n _fallback: 'Operation failed, please try again',\n // Client-side failures (not backend error codes): the timeout guard fired, or the call was cancelled\n network: {\n timeout: 'Request timed out, check your connection and try again',\n aborted: 'Request cancelled',\n },\n auth: {\n passwordWrong: 'Incorrect account or password',\n captchaExpired: 'Captcha expired',\n captchaWrong: 'Incorrect captcha',\n accountLocked: 'Account locked, try again later',\n accountDisabled: 'Account disabled',\n tokenInvalid: 'Invalid session, please sign in again',\n refreshTokenInvalid: 'Session expired, please sign in again',\n tooManyRequests: 'Too many requests, slow down',\n smsCodeRequired: 'Please enter the SMS verification code',\n smsCodeWrong: 'Incorrect SMS verification code',\n smsCodeExpired: 'SMS verification code is incorrect or expired, please request a new one',\n smsLoginDisabled: 'SMS code sign-in is not enabled',\n oauthProviderDisabled: 'This third-party sign-in method is not enabled or does not exist',\n oauthStateInvalid: 'Sign-in session expired, please start the third-party sign-in again',\n oauthExchangeFailed: 'Third-party sign-in failed to resolve identity, please try again',\n oauthAccountNotBound:\n 'This third-party account is not linked yet; sign in with your system account to complete linking',\n oauthAlreadyBound:\n 'This third-party account is already bound, or the current account is already bound to the same provider',\n totpRequired: 'Please enter the authenticator code to complete MFA',\n totpWrong: 'Incorrect authenticator code',\n totpNotBound: 'Authenticator is not bound yet; complete binding first',\n bindInviteInvalid: 'Authenticator setup is invalid or expired. Start again.',\n mfaBindInvalid: 'Authenticator setup is invalid or expired. Start again.',\n recoveryCodeInvalid: 'Recovery code is invalid or already used',\n csrfInvalid: 'Request validation failed; refresh the page and try again',\n reauthRequired: 'This action requires re-authentication',\n mfaBindPasswordRequired: 'Verify your current password before binding an authenticator',\n apiKeyInvalid: 'API key missing or invalid',\n },\n perm: {\n denied: 'Access denied',\n demoReadOnly: 'Demo environment is read-only',\n superAdminRequired: 'This action requires super admin privileges',\n },\n user: {\n notFound: 'User not found',\n accountExists: 'Account already exists',\n superAdminProtected: 'Super admin is protected',\n passwordTooWeak: 'New password does not meet the complexity policy',\n passwordReused: 'New password must differ from your current and recently used passwords',\n outOfDataScope: 'Target user is outside your data scope',\n avatarUrlInvalid: 'Avatar URL is not allowed',\n cannotOperateSelf: 'You cannot perform this action on yourself',\n },\n role: {\n notFound: 'Role not found',\n codeExists: 'Role code already exists',\n notDelegatable: 'Role is not delegatable',\n },\n org: {\n notFound: 'Org not found',\n hasChildren: 'Org has children and cannot be deleted',\n invalidParent: 'Invalid parent org',\n codeExists: 'Org code already exists',\n hasUsers: 'Org still has active users and cannot be deleted',\n outOfScope: 'Target org is outside your data scope',\n },\n position: {\n notFound: 'Position not found',\n codeExists: 'Position code already exists',\n hasUsers: 'Position still has active users and cannot be deleted',\n },\n module: {\n notFound: 'App not found',\n codeExists: 'App code already exists',\n protected: 'Built-in app is protected',\n accessDenied: 'No access to this app',\n hasMenus: 'App still has menus attached; move or delete them first',\n },\n menu: {\n notFound: 'Menu not found',\n hasChildren: 'Menu has children and cannot be deleted',\n invalidParent: 'Invalid parent menu (cannot be itself or its descendant)',\n },\n session: { notFound: 'Session not found or already signed out' },\n dict: {\n typeNotFound: 'Dict type not found',\n typeCodeExists: 'Dict type code exists',\n itemNotFound: 'Dict item not found',\n seedProtected: 'Seed data is protected and cannot be deleted',\n itemValueExists: 'Dict item value already exists under this type',\n },\n config: { notFound: 'Config not found', keyExists: 'Config key exists' },\n notice: {\n notFound: 'Notification not found',\n receiverRequired: 'At least one receiver must be specified',\n receiverNotFound: 'Receiver does not exist or is disabled',\n actionInvalid:\n 'Invalid action list: label required, method must be GET/POST, url must be a site path starting with a single /, at most 5 actions',\n },\n file: {\n empty: 'Empty file',\n tooLarge: 'File too large',\n extNotAllowed: 'File type not allowed',\n notFound: 'File not found',\n chunkMissing: 'Missing chunk, please retry upload',\n chunkHashMismatch: 'File integrity check failed, please re-upload',\n },\n excel: {\n providerMissing:\n 'Excel support is not installed; install SmartAdmin.Excel and call AddSmartAdminExcel()',\n },\n import: {\n fileEmpty: 'Import file is empty',\n rowLimitExceeded: 'Import row count exceeds the limit',\n columnMissing: 'A required column is not mapped',\n cellRequired: 'This cell is required',\n cellDictInvalid: 'Invalid dictionary value',\n cellRefNotFound: 'Referenced data not found',\n cellFormatInvalid: 'Invalid cell format',\n duplicateInFile: 'Business key is duplicated within the file',\n duplicateInDb: 'Business key already exists in the database',\n orgOutOfScope: 'Organization is outside the current data scope',\n },\n export: {\n tooManyRows: 'Export exceeds the row limit; narrow your filters first',\n columnInvalid: 'Requested export column is not allowed',\n },\n job: {\n notFound: 'Job not found',\n codeExists: 'Job code already exists',\n cronInvalid: 'Invalid cron expression',\n triggerInvalid: 'Invalid trigger configuration',\n handlerNotFound: 'Job handler not registered',\n alreadyRunning: 'Previous run is still in progress',\n runNotAlive: 'This run is not in progress',\n sqlDisabled: 'SQL jobs are disabled',\n httpUrlBlocked: 'Target URL rejected by security policy',\n statusConflict: 'Operation not allowed in current job status',\n propsInvalid: 'Job properties missing or invalid',\n logNotFound: 'Job run record not found',\n runLimitReached: 'Concurrent run limit reached, try again later',\n protected: 'Built-in job is protected from deletion',\n },\n ai: {\n providerNotFound: 'Provider not found',\n providerCodeExists: 'Provider code already exists',\n providerDisabled: 'Provider is disabled',\n apiKeyMissing: 'API key is not configured',\n baseUrlBlocked: 'Target URL rejected by security policy',\n presetNotFound: 'Preset provider not found',\n presetImmutable: \"A preset provider's protocol/preset id cannot be changed\",\n modelNotFound: 'Model not found',\n noDefaultModel: 'No default model configured',\n modelDisabled: 'Model is disabled',\n modelNameExists: 'Model name already exists',\n upstreamError: 'Upstream service call failed',\n upstreamTimeout: 'Upstream service call timed out',\n upstreamRateLimited: 'Upstream service rate-limited, please retry later',\n upstreamAuthFailed: 'Upstream authentication failed, check the API key',\n upstreamBadResponse: 'Upstream service returned an unexpected response',\n dataProtectionKeyMissing: 'Data protection key unavailable, cannot decrypt the API key',\n sceneRequired: 'A call scene is required',\n multimodalSystemUnsupported:\n 'System messages do not support multi-part content such as images',\n structuredOutputUnsupported:\n 'This provider does not support structured output (json_schema) constraints',\n },\n recycle: {\n notFound: 'Deleted record not found',\n uniqueConflict: 'Restore failed: code/account already taken by another record',\n invalidType: 'Unsupported recycle bin type',\n },\n request: {\n pageSizeExceeded:\n 'Page size exceeds the limit of {max}; use a smaller page or the export endpoint',\n },\n system: { internal: 'Internal server error' },\n },\n\n // Recycle bin\n recycle: {\n title: 'Recycle Bin',\n name: 'Name',\n code: 'Code',\n deletedAt: 'Deleted at',\n restore: 'Restore',\n purge: 'Purge',\n restoreConfirm: 'Restore \"{name}\"?',\n purgeConfirm: 'Permanently delete \"{name}\"? This cannot be undone.',\n restored: 'Restored',\n purged: 'Permanently deleted',\n empty: 'Recycle bin is empty',\n tabs: {\n user: 'Users',\n role: 'Roles',\n org: 'Orgs',\n position: 'Positions',\n module: 'Modules',\n config: 'Configs',\n dict: 'Dicts',\n menu: 'Menus',\n job: 'Jobs',\n },\n },\n // User import / export: column titles + file names (mirror UserImportProfile / UserExportProfile columns)\n userExport: {\n account: 'Account',\n name: 'Name',\n nickname: 'Nickname',\n phone: 'Phone',\n email: 'Email',\n gender: 'Gender',\n orgName: 'Organization',\n positionName: 'Position',\n directorName: 'Director',\n enabled: 'Enabled',\n superAdmin: 'Super Admin',\n createTime: 'Created At',\n fileName: 'users.xlsx',\n importTemplateName: 'user-import-template.xlsx',\n errorReportName: 'user-import-errors.xlsx',\n },\n logOp: {\n fileName: 'op-logs.xlsx',\n },\n}\n"],"names":["enUS"],"mappings":"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"}
|
package/dist/locales/zh-CN.d.ts
CHANGED
package/dist/locales/zh-CN.js
CHANGED
|
@@ -1449,7 +1449,8 @@ const e = {
|
|
|
1449
1449
|
upstreamBadResponse: "上游服务返回异常",
|
|
1450
1450
|
dataProtectionKeyMissing: "数据保护密钥不可用,无法解密 API Key",
|
|
1451
1451
|
sceneRequired: "必须指定调用场景(scene)",
|
|
1452
|
-
multimodalSystemUnsupported: "System 角色消息不支持图片等多段内容"
|
|
1452
|
+
multimodalSystemUnsupported: "System 角色消息不支持图片等多段内容",
|
|
1453
|
+
structuredOutputUnsupported: "该厂商不支持结构化输出(json_schema)约束"
|
|
1453
1454
|
},
|
|
1454
1455
|
recycle: {
|
|
1455
1456
|
notFound: "回收站中未找到该记录",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-CN.js","sources":["../../src/locales/zh-CN.ts"],"sourcesContent":["// 中文文案。error.* 键 = 后端 msgKey(点分路径,来自 ErrorCode.cs 的 [MsgKey]),供请求层翻译。\nexport default {\n common: {\n rowNo: '序号',\n copySuffix: '-副本',\n zoomIn: '放大',\n zoomOut: '还原',\n success: '操作成功',\n confirm: '确定',\n confirmTitle: '操作确认',\n cancel: '取消',\n close: '关闭',\n more: '更多',\n search: '查询',\n reset: '重置',\n expandAll: '展开全部',\n collapseAll: '折叠全部',\n add: '新增',\n edit: '编辑',\n delete: '删除',\n save: '保存',\n submit: '提交',\n format: '格式化',\n copy: '复制',\n copied: '已复制',\n loading: '加载中…',\n yes: '是',\n no: '否',\n status: '状态',\n enabled: '启用',\n disabled: '停用',\n visible: '显示',\n hidden: '隐藏',\n operation: '操作',\n createTime: '创建时间',\n batchDelete: '批量删除',\n batchDeleteConfirm: '确认删除选中的 {count} 项?此操作不可恢复。',\n all: '全部',\n noData: '暂无数据',\n back: '返回',\n detail: '详情',\n },\n userPicker: {\n title: '选择用户',\n available: '可选用户',\n selected: '已选',\n add: '添加',\n added: '已选',\n addChecked: '添加选中',\n clear: '清空',\n },\n notFound: {\n desc: '页面不存在',\n back: '返回工作台',\n },\n // 内容区渲染异常兜底(components/ErrorBoundary)\n errorBoundary: {\n title: '这个页面出错了',\n desc: '页面渲染时抛出了未处理的异常。可以重试,或先回首页继续用别的功能。',\n retry: '重试',\n home: '回首页',\n },\n // 门户重建失败(网络/5xx/限流):会话没坏,不清会话\n bootError: {\n title: '加载工作台失败',\n desc: '没能取到你的应用与菜单。多半是网络不通或服务端暂时不可用,你的登录状态仍然有效。',\n retry: '重试',\n relogin: '重新登录',\n },\n missingRoute: {\n title: '菜单页面无法加载',\n message: '菜单“{title}”配置的组件路径不存在,请检查组件路径:{component}',\n },\n app: {\n theme: '主题',\n dark: '暗色',\n light: '亮色',\n accent: '主色',\n density: '密度',\n comfortable: '舒适',\n compact: '紧凑',\n language: '语言',\n loginStyle: '登录页样式',\n collapse: '折叠菜单',\n openMenu: '打开菜单',\n switchModule: '切换应用',\n logout: '退出登录',\n personalCenter: '个人中心',\n clearCache: '清除缓存',\n cacheCleared: '缓存已清除',\n profile: '个人资料',\n password: '修改密码',\n security: '账号安全',\n sessions: '我的会话',\n bindings: '账号绑定',\n search: '搜索菜单',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏',\n settings: '系统设置',\n notice: {\n title: '消息通知',\n empty: '暂无通知',\n markAllRead: '全部已读',\n viewAll: '查看全部',\n },\n },\n settings: {\n title: '系统设置',\n tabAppearance: '外观',\n tabLayout: '布局',\n tabGeneral: '通用',\n themeMode: '主题模式',\n auto: '跟随系统',\n themeColor: '主题色',\n custom: '自定义',\n layout: '布局模式',\n layoutVertical: '左侧菜单模式',\n layoutVerticalMix: '左侧菜单混合模式',\n layoutVerticalHybridHeaderFirst: '左侧混合-顶部优先',\n layoutHorizontal: '顶部菜单模式',\n layoutTopHybridSidebarFirst: '顶部混合-侧边优先',\n layoutTopHybridHeaderFirst: '顶部混合-顶部优先',\n interface: '界面功能',\n showBreadcrumb: '显示面包屑',\n showTabs: '显示多标签',\n fixedHeader: '固定头部',\n pageTransition: '切换动画',\n transitionNone: '无',\n transitionFade: '淡入淡出',\n transitionFadeSlide: '滑动淡入',\n grayscale: '灰色模式',\n watermark: '水印',\n watermarkText: '水印文案',\n watermarkPlaceholder: '请输入水印文案',\n formStyle: '表单形态',\n formStyleModal: '弹窗',\n formStyleDrawer: '抽屉',\n resetConfirm: '确定恢复默认设置?',\n copyConfig: '复制配置',\n configCopied: '已复制当前配置(粘回 stores/app.ts 的 DEFAULTS 即为新默认)',\n searchPlaceholder: '搜索菜单…',\n searchEmpty: '无匹配菜单',\n searchHint: '↑↓ 导航 · ↵ 进入 · Esc 关闭',\n },\n tabs: {\n refresh: '刷新',\n pin: '固定',\n unpin: '取消固定',\n close: '关闭',\n closeOthers: '关闭其他',\n closeLeft: '关闭左侧',\n closeRight: '关闭右侧',\n closeAll: '关闭全部',\n },\n login: {\n title: '登录',\n subtitle: '面向多机构、多应用的统一权限底座',\n headlinePre: '企业级',\n headlineAccent: '权限',\n headlinePost: '管理后台',\n welcome: '欢迎回来',\n welcomeSub: '请登录以继续管理后台',\n featRbac: 'RBAC 角色授权',\n featScope: '多机构数据范围',\n featPortal: '多应用门户',\n account: '账号',\n accountPlaceholder: '请输入账号',\n password: '密码',\n passwordPlaceholder: '请输入密码',\n required: '请输入账号和密码',\n captcha: '验证码',\n captchaPlaceholder: '请输入验证码',\n captchaMathPlaceholder: '请输入计算结果',\n captchaRequired: '请输入验证码',\n remember: '记住我',\n submit: '登 录',\n success: '登录成功',\n smsLogin: '短信登录',\n accountLogin: '账号登录',\n phone: '手机号',\n phonePlaceholder: '请输入手机号',\n smsCode: '短信验证码',\n smsCodePlaceholder: '请输入短信验证码',\n smsRequired: '请输入手机号和短信验证码',\n sendCode: '获取验证码',\n resendAfter: '{s}s 后重发',\n smsSent: '验证码已发送',\n mfaTitle: '验证码已发送至 {phone}',\n mfaSub: '请输入短信验证码完成登录',\n setupAuthenticator: '设置身份验证器',\n totpTitle: '二次验证',\n totpSub: '请输入身份验证器中的 6 位动态口令',\n totpCode: '动态口令',\n totpPlaceholder: '请输入 6 位动态口令',\n totpBindTitle: '需要设置身份验证器',\n totpBindSub: '管理员已要求此账号启用二次验证。请先完成绑定,再重新登录。',\n useRecovery: '使用恢复码',\n backToPassword: '返回密码登录',\n otherMethods: '其他登录方式',\n moreMethods: '更多登录方式',\n ssoWecom: '企业微信',\n ssoDingtalk: '钉钉',\n sso: 'SSO',\n ssoComingSoon: '第三方登录即将开放',\n skinAurora: '极光',\n skinSplit: '双栏',\n skinSpotlight: '聚光',\n },\n module: {\n choose: '选择应用',\n empty: '暂无可访问的应用,请联系管理员分配',\n setDefault: '设为默认',\n isDefault: '默认',\n back: '返回',\n enter: '进入',\n manage: '模块管理',\n code: '编码',\n name: '名称',\n icon: '图标',\n defaultRoute: '默认路由',\n apiPrefix: '路由前缀',\n apiPrefixHint: '用于权限路由下拉按应用过滤,填后端路由段(如 sys、biz);留空=不过滤',\n sort: '排序',\n remark: '备注',\n builtin: '内置',\n codeRequired: '请输入编码',\n nameRequired: '请输入名称',\n addTitle: '新增应用',\n editTitle: '编辑应用',\n deleteConfirm: '确定删除应用「{title}」?',\n disableConfirm: '确定停用应用「{title}」?门户将不再显示该应用',\n saved: '保存成功',\n deleted: '已删除',\n },\n menu: {\n searchPlaceholder: '搜索名称/路由/权限码',\n workbench: '工作台',\n profile: '个人资料',\n password: '修改密码',\n security: '账号安全',\n notice: '我的通知',\n sessions: '我的会话',\n bindings: '账号绑定',\n manage: '菜单管理',\n parent: '上级菜单',\n parentRoot: '顶级(根目录)',\n type: '类型',\n typeCatalog: '目录',\n typeMenu: '页面',\n typeButton: '按钮',\n title: '标题',\n permission: '权限码',\n permissionPlaceholder: '选择路由,可多选',\n permissionHint: '一颗按钮可挂多条路由,角色勾上它即一起授出;「查询」按钮挂列表与详情两条路由。',\n configPerms: '配置权限 ({n})',\n showAllRoutes: '显示全部应用路由',\n routesInApp: '本应用路由',\n routesOther: '其他应用路由',\n module: '所属应用',\n moduleHint: '仅顶级目录可设',\n linkHint: '外链/内嵌:路径填 http(s) URL = 外链(新窗口打开);组件填 http(s) URL = 内嵌 iframe。',\n moduleAll: '全部',\n moduleUnassigned: '未分配',\n path: '路由路径',\n component: '组件路径',\n icon: '图标',\n sort: '排序',\n visible: '侧栏可见',\n titleRequired: '请输入标题',\n addTitle: '新增菜单',\n editTitle: '编辑菜单',\n addChild: '新增子节点',\n buttons: '权限按钮',\n buttonManagerTitle: '「{title}」· 权限按钮',\n buttonParent: '所属页面',\n addButton: '新增按钮',\n batchFromRoutes: '从路由批量添加',\n batchTitle: '从路由批量添加按钮',\n batchSearchPlaceholder: '搜索方法/路径/标题',\n noRoutesLeft: '没有可添加的路由(该菜单已覆盖全部,或路由清单为空)',\n btnQuery: '查询',\n btnCreate: '新增',\n btnUpdate: '编辑',\n btnDelete: '删除',\n deleteConfirm: '确定删除菜单「{title}」?',\n disableConfirm: '确定停用菜单「{title}」?其子节点将一并隐藏',\n saved: '保存成功',\n deleted: '已删除',\n },\n iconPicker: {\n placeholder: '选择图标',\n title: '选择图标',\n search: '搜索图标名…',\n local: '本地 SVG',\n online: '在线',\n onlinePlaceholder: '输入任意 iconify 名,如 mdi:home',\n use: '使用',\n offlineHint: '当前离线,未内置的在线图标无法预览',\n empty: '无匹配图标',\n more: '还有 {n} 个,继续输入以缩小范围',\n },\n // SmartTable(smart-naive-table)组件文案;查询/重置/密度复用 common/app 键,全局注入见 createSmartAdmin.ts\n table: {\n refresh: '刷新',\n columnSettings: '列设置',\n columnSettingsReset: '恢复默认',\n fixedLeft: '固定到左侧',\n fixedRight: '固定到右侧',\n fixedNone: '取消固定',\n expand: '展开',\n collapse: '收起',\n // TableZoomButton(表格铺满视口看宽表)\n zoom: '放大',\n zoomExit: '还原',\n },\n workbench: {\n welcome: '你好,{name}',\n subtitle: 'SmartAdmin · 企业级权限管理后台',\n roles: '角色总数',\n users: '授权用户',\n perms: '权限点',\n online: '在线会话',\n trendTitle: '近 7 日活跃趋势',\n distributionTitle: '资源分布',\n trendLogins: '登录数',\n trendActive: '活跃用户',\n },\n // 业务系统工作台(dashboard/biz.vue;真数据拼装,应用可用同 key 页面覆盖成自己的业务统计)\n biz: {\n welcome: '{name},欢迎回来',\n subtitle: '应用工作台',\n quick: '快捷入口',\n notices: '我的通知',\n viewAll: '查看全部',\n noMenus: '当前应用暂无菜单',\n },\n user: {\n title: '用户管理',\n account: '账号',\n name: '姓名',\n status: '状态',\n enabled: '启用',\n disabled: '停用',\n superAdmin: '超管',\n createTime: '创建时间',\n // 写侧字段(创建/编辑专用)\n password: '初始密码',\n // 未配 Security:DefaultInitialPassword 时(默认就没配),后端生成随机强口令 —— 文案别写\"系统默认初始密码\",\n // 那个东西默认不存在,照着这句话去告诉新人\"用默认密码登\"必然登不上。\n passwordHint: '留空则自动生成随机密码(创建后显示一次)',\n org: '归属机构',\n allOrgs: '全部',\n orgPlaceholder: '选择机构(可空)',\n position: '职位',\n positionPlaceholder: '选择职位(可空)',\n director: '直属主管',\n directorPlaceholder: '选择主管(可空)',\n nickname: '昵称',\n nicknamePlaceholder: '昵称(可空)',\n phone: '手机号',\n phonePlaceholder: '手机号(可空)',\n phoneInvalid: '手机号格式不正确',\n email: '邮箱',\n emailPlaceholder: '邮箱(可空)',\n emailInvalid: '邮箱格式不正确',\n gender: '性别',\n genderPlaceholder: '选择性别(可空)',\n avatar: '头像',\n avatarUploading: '上传中…',\n roles: '角色',\n rolesPlaceholder: '分配角色(可空)',\n accountRequired: '请输入账号',\n nameRequired: '请输入姓名',\n addTitle: '新增用户',\n editTitle: '编辑用户',\n deleteConfirm: '确定删除用户「{name}」?',\n disableConfirm: '确定停用用户「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n resetPassword: '重置密码',\n newPassword: '新密码',\n newPasswordHint: '留空则自动生成随机密码',\n resetDone: '密码已重置',\n createDone: '用户已创建',\n resetDoneHint: '请将下方初始密码转达给用户,关闭后不再显示:',\n copy: '复制',\n copied: '已复制到剪贴板',\n copyFailed: '复制失败,请手动选取',\n forceTotp: '强制动态口令',\n totpBound: '已绑动态口令',\n issueTotpInvite: '发放动态口令邀请',\n clearMfa: '解绑身份验证器',\n clearMfaConfirm: '确定解绑用户「{name}」的身份验证器?解绑后需重新绑定才能使用二次验证。',\n mfaCleared: '已解绑该用户的身份验证器',\n totpInviteTitle: '{name} 的动态口令邀请',\n totpInviteOnce: '邀请仅在当前显示一次,请通过受控渠道将链接或令牌发送给用户。',\n totpInviteUrl: '绑定链接',\n totpInviteToken: '邀请令牌',\n totpInviteExpires: '过期时间',\n },\n mfa: {\n bindTitle: '设置身份验证器',\n recoveryTitle: '使用恢复码',\n useRecovery: '使用恢复码',\n backToBind: '设置身份验证器',\n stepVerify: '验证身份',\n stepAuthenticator: '身份验证器',\n stepRecovery: '恢复码',\n bindHint: '输入账号和当前密码开始自助绑定(需管理员已开启 TOTP)。',\n account: '账号',\n currentPassword: '当前密码',\n startBind: '开始设置',\n bindRequired: '请输入账号和当前密码',\n scanSetupHint: '用 Google Authenticator、Microsoft Authenticator 等应用扫描下方二维码。',\n manualSetupHint: '无法扫码时,可手动输入密钥添加到身份验证器,再填写当前 6 位动态口令。',\n manualKey: '手动设置密钥',\n otpauthUri: '身份验证器 URI',\n authenticatorCode: '动态口令',\n completeBind: '完成设置',\n codeRequired: '请输入动态口令',\n recoveryOnce:\n '请立即保存这些恢复码。每个只能使用一次,关闭页面后将不再显示。建议下载到本地妥善保管。',\n copy: '复制',\n copied: '已复制到剪贴板',\n copyFailed: '复制失败,请手动选取',\n copyAll: '复制全部恢复码',\n downloadCodes: '下载到本地',\n recoveryDownloaded: '恢复码文件已开始下载',\n recoveryDownloadHeader: 'SmartAdmin 恢复码(账号:{account})',\n recoveryDownloadFooter: '每个恢复码仅可使用一次。请离线妥善保管,勿转发他人。',\n backToLogin: '返回登录',\n recoveryHint: '恢复码会移除身份验证器并注销所有现有会话。之后请重新自助绑定。',\n recoveryCode: '恢复码',\n submitRecovery: '使用恢复码',\n recoveryRequired: '请输入账号、当前密码和恢复码',\n recoveryDone: '身份验证器已移除。请重新登录;如仍被要求,请再次自助绑定。',\n bindStartResponseIncomplete: '设置响应不完整,请重新开始设置。',\n bindCompleteResponseIncomplete: '设置响应不完整,请重新开始设置。',\n },\n reauth: {\n title: '再次验证身份',\n hint: '此操作涉及高风险变更,请输入动态口令或当前密码以继续(约 5 分钟内有效)。',\n method: '验证方式',\n methodTotp: '动态口令',\n methodPassword: '当前密码',\n totpCode: '动态口令',\n totpPlaceholder: '6 位动态口令',\n totpRequired: '请输入动态口令',\n password: '当前密码',\n passwordPlaceholder: '当前登录密码',\n passwordRequired: '请输入当前密码',\n confirm: '验证并继续',\n },\n // 导入向导 / 导出选列\n import: {\n button: '导入',\n wizardTitle: '导入用户',\n stepUpload: '上传文件',\n stepMapping: '列映射',\n stepPreview: '预览改错',\n stepResult: '完成',\n downloadTemplate: '下载模板',\n dropHint: '点击或拖拽 xlsx 到此处',\n dropSub: '仅支持 .xlsx;字典列请用模板下拉值',\n needFile: '请先选择导入文件',\n mappingHint: '将文件表头映射到目标字段;自动匹配的已预选,可按需调整。',\n fileHeader: '文件表头',\n targetColumn: '目标列',\n unmap: '(不映射)',\n summary: '共 {total} 行,其中 {errors} 行有错误',\n summaryDup: '另有 {n} 行已存在',\n onlyErrors: '只看错误行',\n revalidate: '重新校验',\n revalidated: '已重验:{errors}/{total} 行有错',\n errors: '错误',\n ok: '通过',\n errorCount: '{n} 项',\n dupTag: '已存在',\n // 键名后缀 = DuplicateStrategy 的数值(0 跳过 / 1 覆盖 / 2 记为错误)\n dupHint: {\n 0: '该行已存在,提交时按「跳过已存在」略过,不必修改',\n 1: '该行已存在,提交时按「覆盖已存在」更新,不必修改',\n 2: '该行已存在,当前策略「已存在记为错误」下会被判失败',\n },\n strategy: '重复策略',\n strategySkip: '跳过已存在',\n strategyOverwrite: '覆盖已存在',\n strategyError: '已存在记为错误',\n commit: '提交导入',\n prev: '上一步',\n next: '下一步',\n resultTitle: '导入完成',\n resultTotal: '合计 {n} 行',\n resultInserted: '新增 {n}',\n resultUpdated: '更新 {n}',\n resultSkipped: '跳过 {n}',\n resultFailed: '失败 {n}',\n editFailures: '继续修改失败行',\n downloadErrorReport: '下载错误报告',\n noErrorRows: '当前没有错误行',\n },\n export: {\n button: '导出',\n pickColumns: '选择导出列',\n selectAll: '全选',\n confirm: '导出',\n done: '导出成功',\n },\n config: {\n title: '配置管理',\n key: '配置键',\n name: '配置名称',\n value: '配置值',\n group: '分组编码',\n sort: '排序',\n remark: '备注',\n keyRequired: '请输入配置键',\n nameRequired: '请输入配置名称',\n addTitle: '新增配置',\n editTitle: '编辑配置',\n deleteConfirm: '确定删除配置「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n groupManagedBy: '该分组归「{tab}」管理,保存后在那里显示',\n groupExtra: {\n title: '本组其它配置',\n hint: '同一分组里上面的表单没有列出的配置项,在这里查看、修改或删除。',\n },\n tab: {\n base: '系统基础',\n security: '安全策略',\n externalAuth: '第三方登录',\n upload: '上传策略',\n job: '定时任务',\n other: '其他配置',\n },\n job: {\n logRetentionDays: '日志保留天数',\n alertEmails: '告警邮箱',\n alertEmailsHint: '多个邮箱用逗号分隔',\n },\n externalAuth: {\n hint: '控制登录页显示哪些已部署的第三方登录方式。关闭后按钮隐藏,授权入口同步拒绝。连接密钥仍在服务器配置文件中。',\n empty: '当前未注册任何第三方登录(需在部署中装包或配置 OIDC)',\n showOnLogin: '登录页显示',\n hidden: '已隐藏',\n loginVisible: '登录页显示',\n summary: '共 {total} 种方式 · {on} 个在登录页显示',\n summaryFull: '共 {total} 种 · 已配置 {registered} · 登录页显示 {on}',\n reset: '还原',\n notConfigured: '未配置',\n notConfiguredTip: '部署侧未注册该方式(未装包或未填密钥),无法在登录页开启。',\n linkByAccount: '按账号自动关联',\n linkByAccountConfirmTitle: '打开按账号自动关联?',\n linkByAccountConfirm:\n '{name}账号与本地账号完全相同的人,首次从{name}登录时会自动绑定到该本地账号并直接登录;超级管理员、已停用账号、已绑过{name}的账号除外。请先确认两边账号是同一批人,比如本地账号就是从{name}同步来的。',\n },\n base: {\n siteTitle: '站点标题',\n logo: 'Logo 地址',\n siteSubtitle: '登录副标题',\n copyright: '版权信息',\n copyrightUrl: '版权链接',\n },\n security: {\n loginLock: {\n title: '登录失败锁定',\n maxFailCount: '锁定阈值(次)',\n lockMinutes: '锁定时长(分钟)',\n },\n password: {\n title: '密码复杂度',\n minLength: '最小长度',\n requireUpper: '须含大写字母',\n requireLower: '须含小写字母',\n requireDigit: '须含数字',\n requireSpecial: '须含特殊字符',\n expireDays: '密码有效天数(0=永不过期)',\n historyCount: '密码历史防重用条数(0=关闭)',\n },\n session: {\n title: '会话时长',\n accessMinutes: '访问令牌(分钟)',\n refreshMinutes: '刷新令牌(分钟)',\n },\n captcha: {\n title: '登录验证码',\n enabled: '启用登录验证码',\n type: '验证码类型',\n types: { char: '字符', path: '描边(更抗爬)', math: '算术' },\n },\n totp: {\n title: '动态口令(TOTP)',\n enabled: '启用动态口令',\n requireForSuperAdmin: '超管必须动态口令',\n hint: '与登录验证码一样可即时开关。开启后,用户管理里的「强制动态口令」才会在登录时生效;用户可在账号安全中自助绑定。',\n },\n sms: {\n title: '短信验证',\n hint: '二次验证仅对绑定了手机号的用户生效;开发环境验证码打印在后端日志,生产需注册真实短信通道(ISmsSender)。',\n },\n mfa: { enabled: '启用短信二次验证' },\n smsLogin: { enabled: '启用短信验证码登录' },\n rateLimit: {\n title: '请求限流',\n enabled: '启用请求限流',\n windowSeconds: '限流窗口(秒)',\n permitPerWindow: '全局每窗口请求数',\n authPermitPerWindow: '认证端点每窗口请求数',\n },\n highSens: {\n title: '高敏感权限(自定义追加)',\n hint: '内核默认高敏权限不可删除;下方仅可追加/删除消费者自定义权限码。写操作需近期再认证。',\n code: '权限码',\n remark: '备注',\n codePh: '如 POST:/api/v1/biz/order',\n remarkPh: '可选备注',\n codeRequired: '请填写权限码',\n },\n },\n upload: {\n title: '上传约束',\n maxSizeMb: '单文件上限(MB)',\n allowedExtensions: '允许的后缀',\n extPlaceholder: '输入后缀回车,如 .jpg',\n extTip: '含点、小写;留空则回退到服务端默认',\n },\n },\n // 字典管理(主从:左类型 / 右字典项)\n dict: {\n title: '字典管理',\n code: '类型编码',\n name: '类型名称',\n searchName: '搜索名称',\n sort: '排序',\n remark: '备注',\n codeRequired: '请输入类型编码',\n nameRequired: '请输入类型名称',\n addTypeTitle: '新增字典类型',\n editTypeTitle: '编辑字典类型',\n typeDeleteConfirm: '确定删除字典类型「{name}」?其下字典项将一并删除。',\n typeSaved: '保存成功',\n typeDeleted: '已删除',\n itemsOf: '「{name}」的字典项',\n selectTypeHint: '请选择左侧字典类型以管理其字典项',\n itemLabel: '显示文本',\n itemValue: '值',\n itemLabelRequired: '请输入显示文本',\n itemValueRequired: '请输入值',\n addItem: '新增字典项',\n addItemTitle: '新增字典项',\n editItemTitle: '编辑字典项',\n itemDeleteConfirm: '确定删除字典项「{label}」?',\n itemSaved: '保存成功',\n itemDeleted: '已删除',\n },\n // 机构管理(树表 + 上级机构树选)\n org: {\n title: '机构管理',\n searchPlaceholder: '搜索机构名称/编码',\n name: '机构名称',\n code: '机构编码',\n category: '分类',\n categoryPlaceholder: '选择机构分类',\n sort: '排序',\n parent: '上级机构',\n parentPlaceholder: '选择上级机构(留空=顶级)',\n nameRequired: '请输入机构名称',\n codePlaceholder: '不填则自动生成',\n addChild: '新增下级',\n addTitle: '新增机构',\n editTitle: '编辑机构',\n deleteConfirm: '确定删除机构「{name}」?',\n copy: '复制',\n copyTitle: '复制机构',\n copyConfirm: '将复制「{name}」及其全部下级,克隆编码自动追加 -copy 后缀。',\n copyNameLabel: '新机构名称',\n copied: '已复制',\n saved: '保存成功',\n deleted: '已删除',\n },\n // 文件管理(列表 + 上传/下载/删除)\n file: {\n title: '文件管理',\n name: '文件名',\n extension: '后缀',\n size: '大小',\n contentType: '类型',\n uploadTime: '上传时间',\n upload: '上传文件',\n uploadChunked: '分片上传',\n uploaded: '上传成功',\n download: '下载',\n deleteConfirm: '确定删除文件「{name}」?',\n deleted: '已删除',\n },\n // 消息通知(管理端发布/列表/删除 + 用户侧「我的通知」共用此命名空间)\n notice: {\n title: '消息通知',\n mine: '我的通知',\n status: '状态',\n read: '已读',\n unread: '未读',\n allRead: '已全部标记为已读',\n noticeTitle: '标题',\n content: '内容',\n type: '类型',\n typeNotice: '通知',\n typeAnnouncement: '公告',\n typeMessage: '消息',\n receiver: '接收范围',\n receiverAll: '全体用户',\n receiverRole: '指定角色',\n receiverUser: '指定用户',\n receiverPlaceholder: '请选择接收对象',\n receiverRequired: '请选择接收对象',\n publishTime: '发布时间',\n publish: '发布通知',\n publishTitle: '发布通知',\n titleRequired: '请输入标题',\n deleteConfirm: '确定删除通知「{title}」?',\n published: '已发布',\n deleted: '已删除',\n view: '查看',\n detailTitle: '通知详情',\n // 动作按钮(发布时可选带上,渲染在正文下)\n actions: '动作按钮',\n actionsHint:\n '最多 5 条;url 以 /api/ 开头是接口调用,其它站内路径是页面跳转;文案含「.」按 i18n key 翻译',\n actionCount: '{count} 个动作',\n actionLabel: '文案',\n actionMethod: '方法',\n actionUrl: '站内路径',\n actionStyle: '样式',\n actionStyleDefault: '默认',\n actionStylePrimary: '主色',\n actionStyleError: '危险',\n actionNeedConfirm: '先确认',\n actionNeedComment: '填意见',\n actionAdd: '添加动作',\n actionConfirm: '确定执行「{label}」?',\n actionCommentPlaceholder: '请输入意见(可留空)',\n actionDone: '已执行',\n actionInvalidUrl: '动作地址不合法',\n },\n // 实时通知(SignalR;后端 SmartAdmin:Realtime:Enabled 开启后即时推送,否则退回轮询/惰性 401)\n realtime: {\n forcedLogout: '您已被强制下线',\n },\n // 在线会话(只读 + 踢人)\n session: {\n title: '在线会话',\n account: '账号',\n ip: 'IP 地址',\n device: '设备',\n loginTime: '登录时间',\n expiresAt: '过期时间',\n kick: '强制下线',\n self: '当前会话',\n kickConfirm: '确定强制下线账号「{account}」的会话?该会话将立即失效。',\n kicked: '已强制下线',\n mineTitle: '我的会话',\n current: '当前设备',\n kickMineConfirm: '确定下线该设备上的会话?其登录状态将立即失效。',\n },\n // 外部登录 / SSO:回调结果页 + 个人中心账号绑定\n oauth: {\n processing: '正在处理登录…',\n backToLogin: '即将返回登录页',\n failed: '第三方登录失败,请重试',\n bindingsTitle: '账号绑定',\n bindingsHint: '把第三方账号绑定到本账号后,即可用它一键登录。绑定需跳转到对应平台完成一次授权。',\n bindingsTip: '绑定会跳转到对应平台授权;解绑后将无法再用该方式登录本账号。',\n boundCountLabel: '已绑定',\n bindTip: '点击下方按钮前往授权绑定',\n disabledTip: '运营已关闭该登录方式,已绑定的仍可解绑',\n cannotBind: '暂不可绑定',\n noProviders: '当前未启用任何第三方登录方式',\n thirdParty: '第三方账号',\n pendingLinkTitle: '待绑定 {name}',\n pendingLinkHint:\n '该 {name} 尚未绑定系统账号。请用你自己的系统账号登录;登录后将请你确认是否绑定。请勿打开来源不明的绑定链接。',\n pendingLinkSuccess: '已绑定 {name},下次可直接用它登录',\n pendingLinkConfirmTitle: '确认绑定第三方账号?',\n pendingLinkConfirmContent:\n '将把 {name}{identity} 绑定到当前账号「{account}」。若这不是你本人刚授权的第三方账号,请选择「仅登录」。',\n pendingLinkConfirmOk: '确认绑定',\n pendingLinkConfirmSkip: '仅登录,不绑定',\n pendingLinkIdentity: '({display})',\n bind: '绑定',\n unbind: '解绑',\n bound: '已绑定',\n notBound: '未绑定',\n boundAt: '绑定于 {time}',\n unbound: '已解绑',\n unbindConfirm: '确定解绑「{name}」?解绑后将不能再用它登录本账号。',\n disabled: '已停用',\n // 内置品牌显示名(后端未下发 displayName 时用)\n brand: {\n github: 'GitHub',\n wechat: '微信',\n wecom: '企业微信',\n dingtalk: '钉钉',\n gitee: 'Gitee',\n qq: 'QQ',\n },\n },\n // 岗位管理(普通 CRUD;岗位与机构无关联)\n position: {\n title: '岗位管理',\n code: '岗位编码',\n name: '岗位名称',\n sort: '排序',\n codePlaceholder: '不填则自动生成',\n nameRequired: '请输入岗位名称',\n addTitle: '新增岗位',\n editTitle: '编辑岗位',\n deleteConfirm: '确定删除岗位「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n },\n // 角色管理(CRUD + 授权菜单 + 数据范围)\n role: {\n title: '角色管理',\n code: '角色编码',\n name: '角色名称',\n sort: '排序',\n remark: '备注',\n codeRequired: '请输入角色编码',\n nameRequired: '请输入角色名称',\n addTitle: '新增角色',\n editTitle: '编辑角色',\n // 删角色会物理删掉用户↔角色关联(不可恢复),故删前先查人数当面告知;查不到人数(无用户查询权限)才退回这条通用文案\n deleteConfirm: '确定删除角色「{name}」?其授权、数据范围及用户关联将一并清除。',\n deleteConfirmNoUsers: '确定删除角色「{name}」?当前没有用户使用该角色。',\n deleteConfirmWithUsers:\n '角色「{name}」当前有 {count} 个用户在用。删除后这些用户将立即失去该角色的全部权限,且关联无法恢复。确定删除?',\n batchDeleteWithUsers:\n '确定删除所选 {count} 个角色?其中 {users} 个用户将立即失去相应权限,且关联无法恢复。',\n isDelegatable: '可转授',\n isDelegatableHint: '开启后,非超管用户可把该角色指派给其数据范围内的用户',\n grantUsers: '授权用户',\n grantUsersSaved: '用户授权已保存',\n saved: '保存成功',\n deleted: '已删除',\n grantMenus: '授权菜单',\n grantSaved: '授权已保存',\n catalog: '一级目录',\n menuCol: '菜单',\n buttonsCol: '按钮授权',\n apiOnlyRow: '接口权限(无页面)',\n dataScope: '数据范围',\n scopeType: '范围类型',\n customOrgs: '自定义机构',\n customOrgsHint: '选择该角色可见的机构',\n scopeSaved: '数据范围已保存',\n scope: {\n all: '全部数据',\n org: '本机构',\n orgAndChildren: '本机构及以下',\n self: '仅本人',\n custom: '自定义机构',\n },\n },\n // 日志(登录 / 操作共用一个命名空间;共享 result/success/failed/ip/userAgent/clear/cleared)\n log: {\n loginTitle: '登录日志',\n account: '账号',\n result: '结果',\n success: '成功',\n failed: '失败',\n resultCode: '结果码',\n name: '姓名',\n ip: 'IP 地址',\n userAgent: '客户端',\n device: '设备',\n clear: '清空日志',\n clearLoginConfirm: '确定清空全部登录日志?此为硬删除,不可恢复。',\n cleared: '已清空',\n // 操作日志\n opTitle: '操作日志',\n opName: '操作名',\n method: '方法',\n path: '路径',\n elapsed: '耗时',\n operator: '操作人',\n operatorPlaceholder: '选择操作人',\n param: '入参',\n exception: '异常信息',\n detail: '详情',\n clearOpConfirm: '确定清空全部操作日志?此为硬删除,不可恢复。',\n // 异常日志\n exceptionTitle: '异常日志',\n exceptionType: '异常类型',\n exceptionMessage: '异常消息',\n stackTrace: '异常堆栈',\n traceId: '追踪号',\n clearExceptionConfirm: '确定清空全部异常日志?此为硬删除,不可恢复。',\n },\n monitor: {\n title: '服务器监控',\n refresh: '刷新',\n cpu: 'CPU 占用',\n memory: '内存占用',\n runtime: '运行时',\n disk: '磁盘',\n processorCount: '处理器',\n threadCount: '线程',\n gcHeap: '托管堆',\n totalMemory: '可用上界',\n machineName: '主机名',\n framework: '框架',\n os: '操作系统',\n arch: '架构',\n uptime: '运行时长',\n free: '可用',\n days: '天',\n hours: '时',\n minutes: '分',\n },\n // 定时任务(任务列表 / 执行记录 / 任务监控 / CronEditor;错误码文案在 error.job.*,别重复)\n job: {\n title: '定时任务',\n name: '任务名称',\n code: '任务编码',\n codePlaceholder: '唯一编码,创建后不可变',\n remark: '备注',\n nameRequired: '请输入任务名称',\n codeRequired: '请输入任务编码',\n addTitle: '新增任务',\n editTitle: '编辑任务',\n deleteConfirm: '确定删除任务「{name}」?',\n saved: '保存成功,集群下最长 30 秒后生效',\n deleted: '已删除',\n runOnce: '执行',\n runConfirm: '确定立即执行一次任务「{name}」?本次执行不影响原调度节奏。',\n runStarted: '已触发执行',\n viewLogs: '记录',\n protectedTip: '内置任务受保护,禁止删除',\n pauseConfirm: '确定暂停任务「{name}」?暂停后不再调度。',\n panicTooltip: '连续失败 {n} 次已熔断;重新启用将清零连败并恢复调度',\n nextRunTime: '下次执行',\n lastRunTime: '上次执行',\n runCount: '执行/失败',\n status: { ready: '就绪', paused: '已暂停', completed: '已完成', panic: '已熔断' },\n form: {\n sectionBasic: '基本',\n sectionTrigger: '触发',\n sectionHandler: '载荷',\n sectionAdvanced: '高级选项',\n sectionAdvancedHint: '生效窗口、错过策略、并发、重试与告警;不展开也能保存',\n startTime: '生效开始',\n endTime: '生效结束',\n windowPlaceholder: '留空=不限',\n misfireStrategy: '错过策略',\n misfireSkip: '跳过',\n misfireFireOnceNow: '立即补跑一次',\n concurrencyMode: '并发模式',\n concurrencySerial: '串行跳过',\n concurrencyParallel: '并行',\n timeoutSeconds: '执行超时(秒)',\n timeoutHint: '0 = 不限制',\n retryCount: '失败重试次数',\n retryIntervalSeconds: '重试间隔(秒)',\n failAlertThreshold: '连败告警阈值',\n failAlertHint: '0 = 不告警不熔断',\n alertByNotice: '站内信告警',\n alertEmails: '告警邮箱',\n alertEmailsPlaceholder: '逗号分隔;留空回退全局配置',\n },\n trigger: {\n kind: '触发方式',\n cron: 'Cron',\n interval: '固定间隔',\n oneShot: '一次性',\n cronExpression: 'Cron 表达式',\n cronRequired: '请输入 cron 表达式',\n intervalSeconds: '间隔秒数',\n intervalRequired: '请输入间隔秒数(≥5)',\n oneShotTime: '执行时刻',\n oneShotRequired: '请选择执行时刻',\n seconds: '秒',\n everySeconds: '每 {n} 秒',\n },\n handler: {\n kind: '载荷类型',\n compiled: '编译类',\n http: 'HTTP',\n sql: 'SQL',\n sqlDisabledHint: 'SQL 载荷未启用:需后端开启 SmartAdmin:Jobs:Sql:Enabled',\n name: '处理器',\n namePlaceholder: '选择已注册的处理器',\n nameRequired: '请选择处理器',\n props: '属性包',\n propKey: '键',\n propValue: '值',\n addProp: '添加一项',\n httpUrl: '请求地址',\n httpUrlRequired: '请输入请求地址',\n httpMethod: '请求方法',\n httpHeaders: '请求头',\n headersMaskHint: '出于安全,已存请求头的值以 ******** 显示;不修改则原样保存生效',\n httpBody: '请求体',\n successStatuses: '成功状态码',\n successStatusesPlaceholder: '如 200,201;留空 = 2xx 即成功',\n sqlText: 'SQL 语句',\n sqlRequired: '请输入 SQL 语句',\n },\n log: {\n title: '执行记录',\n job: '任务',\n jobPlaceholder: '选择任务',\n fireMode: '触发来源',\n fireModeSchedule: '调度',\n fireModeManual: '手动',\n fireModeBackfill: '补跑',\n fireModeMisfireSkip: '错过跳过',\n scheduledTime: '计划时刻',\n startTime: '开始时间',\n elapsed: '耗时',\n runStatus: '状态',\n running: '运行中',\n success: '成功',\n failed: '失败',\n timeout: '超时',\n cancelled: '已取消',\n skipped: '已跳过',\n retryIndex: '重试次',\n node: '节点',\n kill: '终止',\n killConfirm: '确定终止任务「{name}」的这次执行?终止旗标写入后,目标节点最迟数秒内停止。',\n killed: '已请求终止',\n clear: '清空记录',\n clearTitle: '清空执行记录',\n clearAll: '全部记录',\n beforeDays: '{n} 天以前的记录',\n clearHint: '运行中的记录一律保留;此为硬删除,不可恢复。',\n cleared: '已清理 {n} 条记录',\n message: '处理器输出',\n error: '异常信息',\n attempts: '同一次触发的各次尝试',\n firstTry: '首次',\n retryN: '第 {n} 次重试',\n },\n monitor: {\n title: '任务监控',\n todaySuccess: '今日成功',\n todayFailed: '今日失败',\n running: '运行中',\n totalJobs: '任务总数',\n trendTitle: '近 14 日成败趋势',\n trendSuccess: '成功',\n trendFailed: '失败',\n upcomingTitle: '即将执行',\n upcomingJob: '任务',\n upcomingTime: '时刻',\n nodesTitle: '集群节点',\n nodeName: '节点',\n role: '角色',\n leader: 'leader',\n standby: 'standby',\n lastHeartbeat: '最后心跳',\n workerId: 'WorkerId',\n pid: 'PID',\n justNow: '刚刚',\n secondsAgo: '{n} 秒前',\n minutesAgo: '{n} 分钟前',\n hoursAgo: '{n} 小时前',\n },\n cron: {\n tabSecond: '秒',\n tabMinute: '分',\n tabHour: '时',\n tabDay: '日',\n tabMonth: '月',\n tabWeek: '周',\n tabExpression: '表达式',\n every: '每',\n any: '不指定(?)',\n range: '区间',\n to: '到',\n step: '步长',\n stepFrom: '从',\n stepEvery: '起,每',\n list: '指定值',\n lastDay: '月末(L)',\n lastDayHint: '0 = 月末当天,n = 月末前 n 天(L-n)',\n nearestWeekday: '最近工作日(nW)',\n nearestWeekdayHint: '距该日最近的工作日,不跨月',\n lastWeekday: '月末工作日(LW)',\n lastOfWeek: '最后一个周几(nL)',\n nth: '第 m 个周几(n#m)',\n nthPrefix: '第',\n nthInfix: '个',\n sun: '周日',\n mon: '周一',\n tue: '周二',\n wed: '周三',\n thu: '周四',\n fri: '周五',\n sat: '周六',\n expressionPlaceholder: '如 0 0 2 * * ?(秒 分 时 日 月 周)',\n expressionHint: '支持 5 段(自动补秒位)或 6 段;日与周不能同时受限,其一须为 * 或 ?',\n normalized: '归一化',\n nextRuns: '未来 {n} 次',\n noUpcoming: '已无未来执行时刻',\n everySecondWarning: '该表达式等效每秒执行,请确认这是有意为之',\n },\n },\n // AI 模型管理(厂商 + 模型;错误码文案在 error.ai.*,别重复)\n aiModel: {\n title: 'AI 模型管理',\n searchPlaceholder: '搜索厂商编码/名称',\n addProvider: '新增厂商',\n editProvider: '编辑厂商',\n deleteProvider: '删除厂商',\n deleteConfirm: '确定删除厂商「{name}」?其下模型一并删除,已产生的用量记录不受影响。',\n deleted: '已删除',\n saved: '已保存',\n enabled: '启用',\n disabled: '已停用',\n pendingConfigTip: '尚未配置 API Key,保存前请填写',\n provider: {\n code: '厂商编码',\n codePlaceholder: '唯一编码,创建后不可变',\n codeRequired: '请输入厂商编码',\n name: '厂商名称',\n nameRequired: '请输入厂商名称',\n preset: '厂商预设',\n presetPlaceholder: '选择预设厂商,自动带出协议与 Base URL',\n presetCustom: '自定义',\n protocol: '协议',\n baseUrl: 'Base URL',\n baseUrlRequired: '请输入 Base URL',\n authScheme: '鉴权方式',\n apiKey: 'API Key',\n apiKeyPlaceholder: '留空 = 不修改现有 Key',\n apiKeyHint: '已保存的 Key 只回显掩码,不回填明文',\n hasApiKeyYes: '已配置',\n hasApiKeyNo: '未配置',\n disableConfirm: '确定停用厂商「{name}」?',\n sort: '排序',\n remark: '备注',\n },\n model: {\n title: '模型',\n add: '添加模型',\n remove: '移除',\n name: '模型名',\n nameRequired: '请输入模型名',\n displayName: '展示名',\n displayNameRequired: '请输入展示名',\n contextWindow: '上下文窗口',\n contextWindowPlaceholder: '如 128000,留空不限',\n inputPrice: '输入单价',\n outputPrice: '输出单价',\n pricePlaceholder: '每百万 Token,留空不计费',\n enabled: '启用',\n isDefault: '默认模型',\n setDefault: '设为默认',\n defaultTag: '默认',\n atLeastOne: '至少保留一个模型',\n duplicateName: '模型名重复',\n noDefault: '未设置默认模型',\n },\n test: {\n action: '测试连接',\n testing: '测试中…',\n ok: '连接成功',\n failed: '连接失败',\n latency: '耗时 {ms} ms',\n model: '模型',\n usage: '用量',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n error: '错误信息',\n },\n },\n // AI 用量统计(筛选 / 四格指标 / 分组 / 趋势 / 明细)\n aiUsage: {\n title: 'AI 用量统计',\n filter: {\n dateRange: '时间范围',\n today: '今天',\n last7Days: '近 7 天',\n last30Days: '近 30 天',\n provider: '厂商',\n providerAll: '全部厂商',\n model: '模型',\n modelAll: '全部模型',\n scene: '场景',\n sceneAll: '全部场景',\n scenePlaceholder: '按调用场景过滤',\n },\n metric: {\n totalTokens: '总 Token 数',\n totalCalls: '总调用次数',\n failureCount: '失败次数',\n avgLatency: '平均耗时',\n },\n groupBy: {\n label: '统计维度',\n provider: '按厂商',\n model: '按模型',\n scene: '按场景',\n user: '按用户',\n },\n trend: {\n title: '用量趋势',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n callCount: '调用次数',\n },\n table: {\n createTime: '时间',\n provider: '厂商',\n model: '模型',\n scene: '场景',\n user: '用户',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n totalTokens: '合计 Token',\n latency: '耗时',\n status: '状态',\n success: '成功',\n failed: '失败',\n requestId: '请求 Id',\n streamed: '流式',\n usageSource: '用量来源',\n usageSourceReported: '上游上报',\n usageSourceMissing: '缺失估算',\n },\n share: '占比',\n },\n cache: {\n authTitle: '权限缓存',\n authDesc: '清除全部用户的权限码与数据范围缓存。直接改库或排障后,强制下次请求按最新授权重算。',\n authConfirm: '确定清除全部用户的权限/数据范围缓存?下次请求将重新计算授权。',\n dictTitle: '字典缓存',\n dictDesc: '清除全部字典类型的字典项缓存。直接改库后,强制下拉数据源按最新字典重建。',\n dictConfirm: '确定清除全部字典项缓存?',\n configTitle: '配置缓存',\n configDesc: '清除全部系统配置项的读穿透缓存。直接改库后,强制配置值按最新库表重读。',\n configConfirm: '确定清除全部系统配置缓存?',\n portalTitle: '门户菜单缓存',\n portalDesc: '递增门户代际,令所有用户的模块/菜单树缓存整体失效,下次进入重建。',\n portalConfirm: '确定重建门户菜单缓存?所有用户的菜单将在下次请求时重算。',\n execute: '执行',\n flushed: '已清除 {n} 项缓存',\n portalDone: '已重建门户菜单缓存',\n note: '仅提供定向失效,不浏览键、不读取值——缓存中含明文验证码/一次性令牌、键中内嵌手机号/IP。正常的授权变更已自动失效,此页用于直接改库等旁路场景的手动刷新。',\n },\n profile: {\n title: '个人资料',\n account: '账号',\n name: '姓名',\n org: '机构',\n position: '职位',\n nickname: '昵称',\n gender: '性别',\n phone: '手机号',\n email: '邮箱',\n avatar: '头像',\n avatarUploading: '上传中…',\n phoneInvalid: '手机号格式不正确',\n emailInvalid: '邮箱格式不正确',\n saved: '资料已更新',\n },\n personalSecurity: {\n title: '账号安全',\n // 全员可见:只说用户能做什么,不指向后台配置路径。\n hint: '在此绑定或管理身份验证器(TOTP),用于登录二次验证。',\n // 仅管理员可见(超管 / 能进系统配置):指向「安全策略」开关,普通用户无需也不应看到。\n adminHint:\n '若绑定失败或登录不要求二次验证,请到「系统配置 → 安全策略」确认已开启「启用动态口令」。',\n bindDesc: '使用账号与当前密码完成自助绑定;也可使用恢复码解除绑定后重新绑定。',\n setupAuthenticator: '设置身份验证器',\n useRecovery: '使用恢复码',\n note: '自愿绑定请从本页进入。若账号被要求启用二次验证且尚未绑定,登录账密通过后会弹出引导。',\n },\n changePassword: {\n title: '修改密码',\n oldPassword: '原密码',\n newPassword: '新密码',\n confirmPassword: '确认新密码',\n oldRequired: '请输入原密码',\n newRequired: '请输入新密码',\n confirmRequired: '请再次输入新密码',\n mismatch: '两次输入的新密码不一致',\n changed: '密码已修改,请重新登录',\n forcedHint: '首次登录或密码被重置,请先修改密码后再使用系统。',\n strength: { label: '密码强度', weak: '弱', fair: '中', strong: '强' },\n rules: {\n minLength: '至少 {n} 位',\n upper: '包含大写字母',\n lower: '包含小写字母',\n digit: '包含数字',\n special: '包含特殊字符',\n specialOptional: '包含特殊字符(可选,更安全)',\n },\n },\n // ── 后端错误码 msgKey → 文案 ──────────────────────────────\n error: {\n _fallback: '操作失败,请稍后重试',\n // 前端侧错误(不来自后端错误码):请求被超时闸掐断或主动取消\n network: {\n timeout: '请求超时,请检查网络后重试',\n aborted: '请求已取消',\n },\n auth: {\n passwordWrong: '账号或密码错误',\n captchaExpired: '验证码已过期',\n captchaWrong: '验证码错误',\n accountLocked: '账号已锁定,请稍后再试',\n accountDisabled: '账号已停用',\n tokenInvalid: '登录状态无效,请重新登录',\n refreshTokenInvalid: '登录已过期,请重新登录',\n tooManyRequests: '操作过于频繁,请稍后再试',\n smsCodeRequired: '请输入短信验证码',\n smsCodeWrong: '短信验证码错误',\n smsCodeExpired: '短信验证码错误或已失效,请重新获取',\n smsLoginDisabled: '短信验证码登录未启用',\n oauthProviderDisabled: '该第三方登录方式未启用或不存在',\n oauthStateInvalid: '登录会话已失效,请重新发起第三方登录',\n oauthExchangeFailed: '第三方登录换取身份失败,请重试',\n oauthAccountNotBound: '该第三方账号尚未绑定系统账号,请先登录本系统账号以完成绑定',\n oauthAlreadyBound: '该第三方账号已被绑定,或当前账号已绑定同一登录方式',\n totpRequired: '请输入动态口令完成二次验证',\n totpWrong: '动态口令错误',\n totpNotBound: '尚未绑定动态口令,请先完成绑定',\n bindInviteInvalid: '绑定无效或已过期,请重新开始设置',\n mfaBindInvalid: '绑定无效或已过期,请重新开始设置',\n recoveryCodeInvalid: '恢复码无效或已使用',\n csrfInvalid: '请求校验失败,请刷新页面后重试',\n reauthRequired: '此操作需要再次验证身份',\n mfaBindPasswordRequired: '绑定动态口令前请先验证当前密码',\n apiKeyInvalid: 'API Key 缺失或无效',\n },\n perm: {\n denied: '无权限访问',\n demoReadOnly: '当前为演示环境,禁止修改操作',\n superAdminRequired: '该操作仅限超级管理员执行',\n },\n user: {\n notFound: '用户不存在',\n accountExists: '账号已存在',\n superAdminProtected: '超级管理员受保护,禁止此操作',\n passwordTooWeak: '新密码不满足密码复杂度要求',\n passwordReused: '新密码不能与当前或最近使用过的密码相同',\n outOfDataScope: '目标用户超出当前数据范围',\n avatarUrlInvalid: '头像地址不合法',\n cannotOperateSelf: '不能对自己执行此操作',\n },\n role: {\n notFound: '角色不存在',\n codeExists: '角色编码已存在',\n notDelegatable: '目标角色不可转授',\n },\n org: {\n notFound: '机构不存在',\n hasChildren: '存在子机构,不可删除',\n invalidParent: '上级机构无效',\n codeExists: '机构编码已存在',\n hasUsers: '机构下仍有用户,不可删除',\n outOfScope: '目标机构超出当前数据范围',\n },\n position: {\n notFound: '职位不存在',\n codeExists: '职位编码已存在',\n hasUsers: '该职位下仍有用户,不可删除',\n },\n module: {\n notFound: '应用不存在',\n codeExists: '应用编码已存在',\n protected: '内置应用受保护,禁止此操作',\n accessDenied: '无该应用访问权限',\n hasMenus: '应用下仍有挂靠菜单,请先迁移或删除后再删应用',\n },\n menu: {\n notFound: '菜单不存在',\n hasChildren: '存在子节点,不可删除',\n invalidParent: '上级菜单无效(不能指向自身或其子节点)',\n },\n session: { notFound: '会话不存在或已下线' },\n dict: {\n typeNotFound: '字典类型不存在',\n typeCodeExists: '字典类型编码已存在',\n itemNotFound: '字典项不存在',\n seedProtected: '种子数据受保护,不可删除',\n itemValueExists: '字典项值在该类型下已存在',\n },\n config: { notFound: '配置不存在', keyExists: '配置键已存在' },\n notice: {\n notFound: '通知不存在',\n receiverRequired: '定向发布必须指定至少一个接收对象',\n receiverNotFound: '接收对象不存在或已停用',\n actionInvalid:\n '动作列表不合法:文案不能为空,方法只能是 GET/POST,地址须是单个 / 开头的站内路径,最多 5 条',\n },\n file: {\n empty: '文件为空',\n tooLarge: '文件超出大小限制',\n extNotAllowed: '不支持的文件类型',\n notFound: '文件不存在',\n chunkMissing: '分片缺失,请重试上传',\n chunkHashMismatch: '文件校验失败,请重新上传',\n },\n excel: {\n providerMissing: '未安装 Excel 支持包,请安装 SmartAdmin.Excel 并调用 AddSmartAdminExcel()',\n },\n import: {\n fileEmpty: '导入文件为空',\n rowLimitExceeded: '导入行数超过上限',\n columnMissing: '必填列未映射',\n cellRequired: '该单元格为必填项',\n cellDictInvalid: '字典值无效',\n cellRefNotFound: '引用的数据不存在',\n cellFormatInvalid: '单元格格式不正确',\n duplicateInFile: '业务键在本文件内重复',\n duplicateInDb: '业务键在库中已存在',\n orgOutOfScope: '机构不在当前数据范围内',\n },\n export: {\n tooManyRows: '导出结果超过行数上限,请先收窄筛选条件',\n columnInvalid: '请求导出的列无效',\n },\n job: {\n notFound: '任务不存在',\n codeExists: '任务编码已存在',\n cronInvalid: 'cron 表达式不合法',\n triggerInvalid: '触发配置不合法',\n handlerNotFound: '处理器未注册',\n alreadyRunning: '上次执行尚未结束',\n runNotAlive: '该执行记录不在运行中',\n sqlDisabled: 'SQL 任务未启用',\n httpUrlBlocked: '目标地址被安全策略拒绝',\n statusConflict: '任务状态不允许该操作',\n propsInvalid: '任务参数缺失或不合法',\n logNotFound: '执行记录不存在',\n runLimitReached: '运行中任务数已达上限,请稍后再试',\n protected: '内置任务受保护,禁止删除',\n },\n ai: {\n providerNotFound: '厂商不存在',\n providerCodeExists: '厂商编码已存在',\n providerDisabled: '厂商已停用',\n apiKeyMissing: '未配置 API Key',\n baseUrlBlocked: '目标地址被安全策略拒绝',\n presetNotFound: '预置厂商不存在',\n presetImmutable: '预置厂商的协议、预置标识不可修改',\n modelNotFound: '模型不存在',\n noDefaultModel: '未配置默认模型',\n modelDisabled: '模型已停用',\n modelNameExists: '模型名称已存在',\n upstreamError: '上游服务调用失败',\n upstreamTimeout: '上游服务调用超时',\n upstreamRateLimited: '上游服务限流,请稍后重试',\n upstreamAuthFailed: '上游服务鉴权失败,请检查 API Key',\n upstreamBadResponse: '上游服务返回异常',\n dataProtectionKeyMissing: '数据保护密钥不可用,无法解密 API Key',\n sceneRequired: '必须指定调用场景(scene)',\n multimodalSystemUnsupported: 'System 角色消息不支持图片等多段内容',\n },\n recycle: {\n notFound: '回收站中未找到该记录',\n uniqueConflict: '恢复失败:编码/账号已被新记录占用',\n invalidType: '不支持的回收站类型',\n },\n request: {\n pageSizeExceeded: '每页条数超过上限 {max},请调小分页或使用导出',\n },\n system: { internal: '服务器内部错误' },\n },\n\n // 回收站\n recycle: {\n title: '回收站',\n name: '名称',\n code: '编码',\n deletedAt: '删除时间',\n restore: '恢复',\n purge: '彻底删除',\n restoreConfirm: '确定恢复「{name}」?',\n purgeConfirm: '确定彻底删除「{name}」?数据将无法恢复。',\n restored: '已恢复',\n purged: '已彻底删除',\n empty: '回收站为空',\n tabs: {\n user: '用户',\n role: '角色',\n org: '机构',\n position: '岗位',\n module: '模块',\n config: '配置',\n dict: '字典',\n menu: '菜单',\n job: '定时任务',\n },\n },\n // 用户导入导出:列标题 + 文件名(与 UserImportProfile / UserExportProfile 的列一一对应)\n userExport: {\n account: '登录账号',\n name: '姓名',\n nickname: '昵称',\n phone: '手机号',\n email: '邮箱',\n gender: '性别',\n orgName: '所属机构',\n positionName: '职位',\n directorName: '直属主管',\n enabled: '启用状态',\n superAdmin: '超级管理员',\n createTime: '创建时间',\n fileName: '用户导出.xlsx',\n importTemplateName: '用户导入模板.xlsx',\n errorReportName: '用户导入错误报告.xlsx',\n },\n logOp: {\n fileName: '操作日志导出.xlsx',\n },\n}\n"],"names":["zhCN"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zh-CN.js","sources":["../../src/locales/zh-CN.ts"],"sourcesContent":["// 中文文案。error.* 键 = 后端 msgKey(点分路径,来自 ErrorCode.cs 的 [MsgKey]),供请求层翻译。\nexport default {\n common: {\n rowNo: '序号',\n copySuffix: '-副本',\n zoomIn: '放大',\n zoomOut: '还原',\n success: '操作成功',\n confirm: '确定',\n confirmTitle: '操作确认',\n cancel: '取消',\n close: '关闭',\n more: '更多',\n search: '查询',\n reset: '重置',\n expandAll: '展开全部',\n collapseAll: '折叠全部',\n add: '新增',\n edit: '编辑',\n delete: '删除',\n save: '保存',\n submit: '提交',\n format: '格式化',\n copy: '复制',\n copied: '已复制',\n loading: '加载中…',\n yes: '是',\n no: '否',\n status: '状态',\n enabled: '启用',\n disabled: '停用',\n visible: '显示',\n hidden: '隐藏',\n operation: '操作',\n createTime: '创建时间',\n batchDelete: '批量删除',\n batchDeleteConfirm: '确认删除选中的 {count} 项?此操作不可恢复。',\n all: '全部',\n noData: '暂无数据',\n back: '返回',\n detail: '详情',\n },\n userPicker: {\n title: '选择用户',\n available: '可选用户',\n selected: '已选',\n add: '添加',\n added: '已选',\n addChecked: '添加选中',\n clear: '清空',\n },\n notFound: {\n desc: '页面不存在',\n back: '返回工作台',\n },\n // 内容区渲染异常兜底(components/ErrorBoundary)\n errorBoundary: {\n title: '这个页面出错了',\n desc: '页面渲染时抛出了未处理的异常。可以重试,或先回首页继续用别的功能。',\n retry: '重试',\n home: '回首页',\n },\n // 门户重建失败(网络/5xx/限流):会话没坏,不清会话\n bootError: {\n title: '加载工作台失败',\n desc: '没能取到你的应用与菜单。多半是网络不通或服务端暂时不可用,你的登录状态仍然有效。',\n retry: '重试',\n relogin: '重新登录',\n },\n missingRoute: {\n title: '菜单页面无法加载',\n message: '菜单“{title}”配置的组件路径不存在,请检查组件路径:{component}',\n },\n app: {\n theme: '主题',\n dark: '暗色',\n light: '亮色',\n accent: '主色',\n density: '密度',\n comfortable: '舒适',\n compact: '紧凑',\n language: '语言',\n loginStyle: '登录页样式',\n collapse: '折叠菜单',\n openMenu: '打开菜单',\n switchModule: '切换应用',\n logout: '退出登录',\n personalCenter: '个人中心',\n clearCache: '清除缓存',\n cacheCleared: '缓存已清除',\n profile: '个人资料',\n password: '修改密码',\n security: '账号安全',\n sessions: '我的会话',\n bindings: '账号绑定',\n search: '搜索菜单',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏',\n settings: '系统设置',\n notice: {\n title: '消息通知',\n empty: '暂无通知',\n markAllRead: '全部已读',\n viewAll: '查看全部',\n },\n },\n settings: {\n title: '系统设置',\n tabAppearance: '外观',\n tabLayout: '布局',\n tabGeneral: '通用',\n themeMode: '主题模式',\n auto: '跟随系统',\n themeColor: '主题色',\n custom: '自定义',\n layout: '布局模式',\n layoutVertical: '左侧菜单模式',\n layoutVerticalMix: '左侧菜单混合模式',\n layoutVerticalHybridHeaderFirst: '左侧混合-顶部优先',\n layoutHorizontal: '顶部菜单模式',\n layoutTopHybridSidebarFirst: '顶部混合-侧边优先',\n layoutTopHybridHeaderFirst: '顶部混合-顶部优先',\n interface: '界面功能',\n showBreadcrumb: '显示面包屑',\n showTabs: '显示多标签',\n fixedHeader: '固定头部',\n pageTransition: '切换动画',\n transitionNone: '无',\n transitionFade: '淡入淡出',\n transitionFadeSlide: '滑动淡入',\n grayscale: '灰色模式',\n watermark: '水印',\n watermarkText: '水印文案',\n watermarkPlaceholder: '请输入水印文案',\n formStyle: '表单形态',\n formStyleModal: '弹窗',\n formStyleDrawer: '抽屉',\n resetConfirm: '确定恢复默认设置?',\n copyConfig: '复制配置',\n configCopied: '已复制当前配置(粘回 stores/app.ts 的 DEFAULTS 即为新默认)',\n searchPlaceholder: '搜索菜单…',\n searchEmpty: '无匹配菜单',\n searchHint: '↑↓ 导航 · ↵ 进入 · Esc 关闭',\n },\n tabs: {\n refresh: '刷新',\n pin: '固定',\n unpin: '取消固定',\n close: '关闭',\n closeOthers: '关闭其他',\n closeLeft: '关闭左侧',\n closeRight: '关闭右侧',\n closeAll: '关闭全部',\n },\n login: {\n title: '登录',\n subtitle: '面向多机构、多应用的统一权限底座',\n headlinePre: '企业级',\n headlineAccent: '权限',\n headlinePost: '管理后台',\n welcome: '欢迎回来',\n welcomeSub: '请登录以继续管理后台',\n featRbac: 'RBAC 角色授权',\n featScope: '多机构数据范围',\n featPortal: '多应用门户',\n account: '账号',\n accountPlaceholder: '请输入账号',\n password: '密码',\n passwordPlaceholder: '请输入密码',\n required: '请输入账号和密码',\n captcha: '验证码',\n captchaPlaceholder: '请输入验证码',\n captchaMathPlaceholder: '请输入计算结果',\n captchaRequired: '请输入验证码',\n remember: '记住我',\n submit: '登 录',\n success: '登录成功',\n smsLogin: '短信登录',\n accountLogin: '账号登录',\n phone: '手机号',\n phonePlaceholder: '请输入手机号',\n smsCode: '短信验证码',\n smsCodePlaceholder: '请输入短信验证码',\n smsRequired: '请输入手机号和短信验证码',\n sendCode: '获取验证码',\n resendAfter: '{s}s 后重发',\n smsSent: '验证码已发送',\n mfaTitle: '验证码已发送至 {phone}',\n mfaSub: '请输入短信验证码完成登录',\n setupAuthenticator: '设置身份验证器',\n totpTitle: '二次验证',\n totpSub: '请输入身份验证器中的 6 位动态口令',\n totpCode: '动态口令',\n totpPlaceholder: '请输入 6 位动态口令',\n totpBindTitle: '需要设置身份验证器',\n totpBindSub: '管理员已要求此账号启用二次验证。请先完成绑定,再重新登录。',\n useRecovery: '使用恢复码',\n backToPassword: '返回密码登录',\n otherMethods: '其他登录方式',\n moreMethods: '更多登录方式',\n ssoWecom: '企业微信',\n ssoDingtalk: '钉钉',\n sso: 'SSO',\n ssoComingSoon: '第三方登录即将开放',\n skinAurora: '极光',\n skinSplit: '双栏',\n skinSpotlight: '聚光',\n },\n module: {\n choose: '选择应用',\n empty: '暂无可访问的应用,请联系管理员分配',\n setDefault: '设为默认',\n isDefault: '默认',\n back: '返回',\n enter: '进入',\n manage: '模块管理',\n code: '编码',\n name: '名称',\n icon: '图标',\n defaultRoute: '默认路由',\n apiPrefix: '路由前缀',\n apiPrefixHint: '用于权限路由下拉按应用过滤,填后端路由段(如 sys、biz);留空=不过滤',\n sort: '排序',\n remark: '备注',\n builtin: '内置',\n codeRequired: '请输入编码',\n nameRequired: '请输入名称',\n addTitle: '新增应用',\n editTitle: '编辑应用',\n deleteConfirm: '确定删除应用「{title}」?',\n disableConfirm: '确定停用应用「{title}」?门户将不再显示该应用',\n saved: '保存成功',\n deleted: '已删除',\n },\n menu: {\n searchPlaceholder: '搜索名称/路由/权限码',\n workbench: '工作台',\n profile: '个人资料',\n password: '修改密码',\n security: '账号安全',\n notice: '我的通知',\n sessions: '我的会话',\n bindings: '账号绑定',\n manage: '菜单管理',\n parent: '上级菜单',\n parentRoot: '顶级(根目录)',\n type: '类型',\n typeCatalog: '目录',\n typeMenu: '页面',\n typeButton: '按钮',\n title: '标题',\n permission: '权限码',\n permissionPlaceholder: '选择路由,可多选',\n permissionHint: '一颗按钮可挂多条路由,角色勾上它即一起授出;「查询」按钮挂列表与详情两条路由。',\n configPerms: '配置权限 ({n})',\n showAllRoutes: '显示全部应用路由',\n routesInApp: '本应用路由',\n routesOther: '其他应用路由',\n module: '所属应用',\n moduleHint: '仅顶级目录可设',\n linkHint: '外链/内嵌:路径填 http(s) URL = 外链(新窗口打开);组件填 http(s) URL = 内嵌 iframe。',\n moduleAll: '全部',\n moduleUnassigned: '未分配',\n path: '路由路径',\n component: '组件路径',\n icon: '图标',\n sort: '排序',\n visible: '侧栏可见',\n titleRequired: '请输入标题',\n addTitle: '新增菜单',\n editTitle: '编辑菜单',\n addChild: '新增子节点',\n buttons: '权限按钮',\n buttonManagerTitle: '「{title}」· 权限按钮',\n buttonParent: '所属页面',\n addButton: '新增按钮',\n batchFromRoutes: '从路由批量添加',\n batchTitle: '从路由批量添加按钮',\n batchSearchPlaceholder: '搜索方法/路径/标题',\n noRoutesLeft: '没有可添加的路由(该菜单已覆盖全部,或路由清单为空)',\n btnQuery: '查询',\n btnCreate: '新增',\n btnUpdate: '编辑',\n btnDelete: '删除',\n deleteConfirm: '确定删除菜单「{title}」?',\n disableConfirm: '确定停用菜单「{title}」?其子节点将一并隐藏',\n saved: '保存成功',\n deleted: '已删除',\n },\n iconPicker: {\n placeholder: '选择图标',\n title: '选择图标',\n search: '搜索图标名…',\n local: '本地 SVG',\n online: '在线',\n onlinePlaceholder: '输入任意 iconify 名,如 mdi:home',\n use: '使用',\n offlineHint: '当前离线,未内置的在线图标无法预览',\n empty: '无匹配图标',\n more: '还有 {n} 个,继续输入以缩小范围',\n },\n // SmartTable(smart-naive-table)组件文案;查询/重置/密度复用 common/app 键,全局注入见 createSmartAdmin.ts\n table: {\n refresh: '刷新',\n columnSettings: '列设置',\n columnSettingsReset: '恢复默认',\n fixedLeft: '固定到左侧',\n fixedRight: '固定到右侧',\n fixedNone: '取消固定',\n expand: '展开',\n collapse: '收起',\n // TableZoomButton(表格铺满视口看宽表)\n zoom: '放大',\n zoomExit: '还原',\n },\n workbench: {\n welcome: '你好,{name}',\n subtitle: 'SmartAdmin · 企业级权限管理后台',\n roles: '角色总数',\n users: '授权用户',\n perms: '权限点',\n online: '在线会话',\n trendTitle: '近 7 日活跃趋势',\n distributionTitle: '资源分布',\n trendLogins: '登录数',\n trendActive: '活跃用户',\n },\n // 业务系统工作台(dashboard/biz.vue;真数据拼装,应用可用同 key 页面覆盖成自己的业务统计)\n biz: {\n welcome: '{name},欢迎回来',\n subtitle: '应用工作台',\n quick: '快捷入口',\n notices: '我的通知',\n viewAll: '查看全部',\n noMenus: '当前应用暂无菜单',\n },\n user: {\n title: '用户管理',\n account: '账号',\n name: '姓名',\n status: '状态',\n enabled: '启用',\n disabled: '停用',\n superAdmin: '超管',\n createTime: '创建时间',\n // 写侧字段(创建/编辑专用)\n password: '初始密码',\n // 未配 Security:DefaultInitialPassword 时(默认就没配),后端生成随机强口令 —— 文案别写\"系统默认初始密码\",\n // 那个东西默认不存在,照着这句话去告诉新人\"用默认密码登\"必然登不上。\n passwordHint: '留空则自动生成随机密码(创建后显示一次)',\n org: '归属机构',\n allOrgs: '全部',\n orgPlaceholder: '选择机构(可空)',\n position: '职位',\n positionPlaceholder: '选择职位(可空)',\n director: '直属主管',\n directorPlaceholder: '选择主管(可空)',\n nickname: '昵称',\n nicknamePlaceholder: '昵称(可空)',\n phone: '手机号',\n phonePlaceholder: '手机号(可空)',\n phoneInvalid: '手机号格式不正确',\n email: '邮箱',\n emailPlaceholder: '邮箱(可空)',\n emailInvalid: '邮箱格式不正确',\n gender: '性别',\n genderPlaceholder: '选择性别(可空)',\n avatar: '头像',\n avatarUploading: '上传中…',\n roles: '角色',\n rolesPlaceholder: '分配角色(可空)',\n accountRequired: '请输入账号',\n nameRequired: '请输入姓名',\n addTitle: '新增用户',\n editTitle: '编辑用户',\n deleteConfirm: '确定删除用户「{name}」?',\n disableConfirm: '确定停用用户「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n resetPassword: '重置密码',\n newPassword: '新密码',\n newPasswordHint: '留空则自动生成随机密码',\n resetDone: '密码已重置',\n createDone: '用户已创建',\n resetDoneHint: '请将下方初始密码转达给用户,关闭后不再显示:',\n copy: '复制',\n copied: '已复制到剪贴板',\n copyFailed: '复制失败,请手动选取',\n forceTotp: '强制动态口令',\n totpBound: '已绑动态口令',\n issueTotpInvite: '发放动态口令邀请',\n clearMfa: '解绑身份验证器',\n clearMfaConfirm: '确定解绑用户「{name}」的身份验证器?解绑后需重新绑定才能使用二次验证。',\n mfaCleared: '已解绑该用户的身份验证器',\n totpInviteTitle: '{name} 的动态口令邀请',\n totpInviteOnce: '邀请仅在当前显示一次,请通过受控渠道将链接或令牌发送给用户。',\n totpInviteUrl: '绑定链接',\n totpInviteToken: '邀请令牌',\n totpInviteExpires: '过期时间',\n },\n mfa: {\n bindTitle: '设置身份验证器',\n recoveryTitle: '使用恢复码',\n useRecovery: '使用恢复码',\n backToBind: '设置身份验证器',\n stepVerify: '验证身份',\n stepAuthenticator: '身份验证器',\n stepRecovery: '恢复码',\n bindHint: '输入账号和当前密码开始自助绑定(需管理员已开启 TOTP)。',\n account: '账号',\n currentPassword: '当前密码',\n startBind: '开始设置',\n bindRequired: '请输入账号和当前密码',\n scanSetupHint: '用 Google Authenticator、Microsoft Authenticator 等应用扫描下方二维码。',\n manualSetupHint: '无法扫码时,可手动输入密钥添加到身份验证器,再填写当前 6 位动态口令。',\n manualKey: '手动设置密钥',\n otpauthUri: '身份验证器 URI',\n authenticatorCode: '动态口令',\n completeBind: '完成设置',\n codeRequired: '请输入动态口令',\n recoveryOnce:\n '请立即保存这些恢复码。每个只能使用一次,关闭页面后将不再显示。建议下载到本地妥善保管。',\n copy: '复制',\n copied: '已复制到剪贴板',\n copyFailed: '复制失败,请手动选取',\n copyAll: '复制全部恢复码',\n downloadCodes: '下载到本地',\n recoveryDownloaded: '恢复码文件已开始下载',\n recoveryDownloadHeader: 'SmartAdmin 恢复码(账号:{account})',\n recoveryDownloadFooter: '每个恢复码仅可使用一次。请离线妥善保管,勿转发他人。',\n backToLogin: '返回登录',\n recoveryHint: '恢复码会移除身份验证器并注销所有现有会话。之后请重新自助绑定。',\n recoveryCode: '恢复码',\n submitRecovery: '使用恢复码',\n recoveryRequired: '请输入账号、当前密码和恢复码',\n recoveryDone: '身份验证器已移除。请重新登录;如仍被要求,请再次自助绑定。',\n bindStartResponseIncomplete: '设置响应不完整,请重新开始设置。',\n bindCompleteResponseIncomplete: '设置响应不完整,请重新开始设置。',\n },\n reauth: {\n title: '再次验证身份',\n hint: '此操作涉及高风险变更,请输入动态口令或当前密码以继续(约 5 分钟内有效)。',\n method: '验证方式',\n methodTotp: '动态口令',\n methodPassword: '当前密码',\n totpCode: '动态口令',\n totpPlaceholder: '6 位动态口令',\n totpRequired: '请输入动态口令',\n password: '当前密码',\n passwordPlaceholder: '当前登录密码',\n passwordRequired: '请输入当前密码',\n confirm: '验证并继续',\n },\n // 导入向导 / 导出选列\n import: {\n button: '导入',\n wizardTitle: '导入用户',\n stepUpload: '上传文件',\n stepMapping: '列映射',\n stepPreview: '预览改错',\n stepResult: '完成',\n downloadTemplate: '下载模板',\n dropHint: '点击或拖拽 xlsx 到此处',\n dropSub: '仅支持 .xlsx;字典列请用模板下拉值',\n needFile: '请先选择导入文件',\n mappingHint: '将文件表头映射到目标字段;自动匹配的已预选,可按需调整。',\n fileHeader: '文件表头',\n targetColumn: '目标列',\n unmap: '(不映射)',\n summary: '共 {total} 行,其中 {errors} 行有错误',\n summaryDup: '另有 {n} 行已存在',\n onlyErrors: '只看错误行',\n revalidate: '重新校验',\n revalidated: '已重验:{errors}/{total} 行有错',\n errors: '错误',\n ok: '通过',\n errorCount: '{n} 项',\n dupTag: '已存在',\n // 键名后缀 = DuplicateStrategy 的数值(0 跳过 / 1 覆盖 / 2 记为错误)\n dupHint: {\n 0: '该行已存在,提交时按「跳过已存在」略过,不必修改',\n 1: '该行已存在,提交时按「覆盖已存在」更新,不必修改',\n 2: '该行已存在,当前策略「已存在记为错误」下会被判失败',\n },\n strategy: '重复策略',\n strategySkip: '跳过已存在',\n strategyOverwrite: '覆盖已存在',\n strategyError: '已存在记为错误',\n commit: '提交导入',\n prev: '上一步',\n next: '下一步',\n resultTitle: '导入完成',\n resultTotal: '合计 {n} 行',\n resultInserted: '新增 {n}',\n resultUpdated: '更新 {n}',\n resultSkipped: '跳过 {n}',\n resultFailed: '失败 {n}',\n editFailures: '继续修改失败行',\n downloadErrorReport: '下载错误报告',\n noErrorRows: '当前没有错误行',\n },\n export: {\n button: '导出',\n pickColumns: '选择导出列',\n selectAll: '全选',\n confirm: '导出',\n done: '导出成功',\n },\n config: {\n title: '配置管理',\n key: '配置键',\n name: '配置名称',\n value: '配置值',\n group: '分组编码',\n sort: '排序',\n remark: '备注',\n keyRequired: '请输入配置键',\n nameRequired: '请输入配置名称',\n addTitle: '新增配置',\n editTitle: '编辑配置',\n deleteConfirm: '确定删除配置「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n groupManagedBy: '该分组归「{tab}」管理,保存后在那里显示',\n groupExtra: {\n title: '本组其它配置',\n hint: '同一分组里上面的表单没有列出的配置项,在这里查看、修改或删除。',\n },\n tab: {\n base: '系统基础',\n security: '安全策略',\n externalAuth: '第三方登录',\n upload: '上传策略',\n job: '定时任务',\n other: '其他配置',\n },\n job: {\n logRetentionDays: '日志保留天数',\n alertEmails: '告警邮箱',\n alertEmailsHint: '多个邮箱用逗号分隔',\n },\n externalAuth: {\n hint: '控制登录页显示哪些已部署的第三方登录方式。关闭后按钮隐藏,授权入口同步拒绝。连接密钥仍在服务器配置文件中。',\n empty: '当前未注册任何第三方登录(需在部署中装包或配置 OIDC)',\n showOnLogin: '登录页显示',\n hidden: '已隐藏',\n loginVisible: '登录页显示',\n summary: '共 {total} 种方式 · {on} 个在登录页显示',\n summaryFull: '共 {total} 种 · 已配置 {registered} · 登录页显示 {on}',\n reset: '还原',\n notConfigured: '未配置',\n notConfiguredTip: '部署侧未注册该方式(未装包或未填密钥),无法在登录页开启。',\n linkByAccount: '按账号自动关联',\n linkByAccountConfirmTitle: '打开按账号自动关联?',\n linkByAccountConfirm:\n '{name}账号与本地账号完全相同的人,首次从{name}登录时会自动绑定到该本地账号并直接登录;超级管理员、已停用账号、已绑过{name}的账号除外。请先确认两边账号是同一批人,比如本地账号就是从{name}同步来的。',\n },\n base: {\n siteTitle: '站点标题',\n logo: 'Logo 地址',\n siteSubtitle: '登录副标题',\n copyright: '版权信息',\n copyrightUrl: '版权链接',\n },\n security: {\n loginLock: {\n title: '登录失败锁定',\n maxFailCount: '锁定阈值(次)',\n lockMinutes: '锁定时长(分钟)',\n },\n password: {\n title: '密码复杂度',\n minLength: '最小长度',\n requireUpper: '须含大写字母',\n requireLower: '须含小写字母',\n requireDigit: '须含数字',\n requireSpecial: '须含特殊字符',\n expireDays: '密码有效天数(0=永不过期)',\n historyCount: '密码历史防重用条数(0=关闭)',\n },\n session: {\n title: '会话时长',\n accessMinutes: '访问令牌(分钟)',\n refreshMinutes: '刷新令牌(分钟)',\n },\n captcha: {\n title: '登录验证码',\n enabled: '启用登录验证码',\n type: '验证码类型',\n types: { char: '字符', path: '描边(更抗爬)', math: '算术' },\n },\n totp: {\n title: '动态口令(TOTP)',\n enabled: '启用动态口令',\n requireForSuperAdmin: '超管必须动态口令',\n hint: '与登录验证码一样可即时开关。开启后,用户管理里的「强制动态口令」才会在登录时生效;用户可在账号安全中自助绑定。',\n },\n sms: {\n title: '短信验证',\n hint: '二次验证仅对绑定了手机号的用户生效;开发环境验证码打印在后端日志,生产需注册真实短信通道(ISmsSender)。',\n },\n mfa: { enabled: '启用短信二次验证' },\n smsLogin: { enabled: '启用短信验证码登录' },\n rateLimit: {\n title: '请求限流',\n enabled: '启用请求限流',\n windowSeconds: '限流窗口(秒)',\n permitPerWindow: '全局每窗口请求数',\n authPermitPerWindow: '认证端点每窗口请求数',\n },\n highSens: {\n title: '高敏感权限(自定义追加)',\n hint: '内核默认高敏权限不可删除;下方仅可追加/删除消费者自定义权限码。写操作需近期再认证。',\n code: '权限码',\n remark: '备注',\n codePh: '如 POST:/api/v1/biz/order',\n remarkPh: '可选备注',\n codeRequired: '请填写权限码',\n },\n },\n upload: {\n title: '上传约束',\n maxSizeMb: '单文件上限(MB)',\n allowedExtensions: '允许的后缀',\n extPlaceholder: '输入后缀回车,如 .jpg',\n extTip: '含点、小写;留空则回退到服务端默认',\n },\n },\n // 字典管理(主从:左类型 / 右字典项)\n dict: {\n title: '字典管理',\n code: '类型编码',\n name: '类型名称',\n searchName: '搜索名称',\n sort: '排序',\n remark: '备注',\n codeRequired: '请输入类型编码',\n nameRequired: '请输入类型名称',\n addTypeTitle: '新增字典类型',\n editTypeTitle: '编辑字典类型',\n typeDeleteConfirm: '确定删除字典类型「{name}」?其下字典项将一并删除。',\n typeSaved: '保存成功',\n typeDeleted: '已删除',\n itemsOf: '「{name}」的字典项',\n selectTypeHint: '请选择左侧字典类型以管理其字典项',\n itemLabel: '显示文本',\n itemValue: '值',\n itemLabelRequired: '请输入显示文本',\n itemValueRequired: '请输入值',\n addItem: '新增字典项',\n addItemTitle: '新增字典项',\n editItemTitle: '编辑字典项',\n itemDeleteConfirm: '确定删除字典项「{label}」?',\n itemSaved: '保存成功',\n itemDeleted: '已删除',\n },\n // 机构管理(树表 + 上级机构树选)\n org: {\n title: '机构管理',\n searchPlaceholder: '搜索机构名称/编码',\n name: '机构名称',\n code: '机构编码',\n category: '分类',\n categoryPlaceholder: '选择机构分类',\n sort: '排序',\n parent: '上级机构',\n parentPlaceholder: '选择上级机构(留空=顶级)',\n nameRequired: '请输入机构名称',\n codePlaceholder: '不填则自动生成',\n addChild: '新增下级',\n addTitle: '新增机构',\n editTitle: '编辑机构',\n deleteConfirm: '确定删除机构「{name}」?',\n copy: '复制',\n copyTitle: '复制机构',\n copyConfirm: '将复制「{name}」及其全部下级,克隆编码自动追加 -copy 后缀。',\n copyNameLabel: '新机构名称',\n copied: '已复制',\n saved: '保存成功',\n deleted: '已删除',\n },\n // 文件管理(列表 + 上传/下载/删除)\n file: {\n title: '文件管理',\n name: '文件名',\n extension: '后缀',\n size: '大小',\n contentType: '类型',\n uploadTime: '上传时间',\n upload: '上传文件',\n uploadChunked: '分片上传',\n uploaded: '上传成功',\n download: '下载',\n deleteConfirm: '确定删除文件「{name}」?',\n deleted: '已删除',\n },\n // 消息通知(管理端发布/列表/删除 + 用户侧「我的通知」共用此命名空间)\n notice: {\n title: '消息通知',\n mine: '我的通知',\n status: '状态',\n read: '已读',\n unread: '未读',\n allRead: '已全部标记为已读',\n noticeTitle: '标题',\n content: '内容',\n type: '类型',\n typeNotice: '通知',\n typeAnnouncement: '公告',\n typeMessage: '消息',\n receiver: '接收范围',\n receiverAll: '全体用户',\n receiverRole: '指定角色',\n receiverUser: '指定用户',\n receiverPlaceholder: '请选择接收对象',\n receiverRequired: '请选择接收对象',\n publishTime: '发布时间',\n publish: '发布通知',\n publishTitle: '发布通知',\n titleRequired: '请输入标题',\n deleteConfirm: '确定删除通知「{title}」?',\n published: '已发布',\n deleted: '已删除',\n view: '查看',\n detailTitle: '通知详情',\n // 动作按钮(发布时可选带上,渲染在正文下)\n actions: '动作按钮',\n actionsHint:\n '最多 5 条;url 以 /api/ 开头是接口调用,其它站内路径是页面跳转;文案含「.」按 i18n key 翻译',\n actionCount: '{count} 个动作',\n actionLabel: '文案',\n actionMethod: '方法',\n actionUrl: '站内路径',\n actionStyle: '样式',\n actionStyleDefault: '默认',\n actionStylePrimary: '主色',\n actionStyleError: '危险',\n actionNeedConfirm: '先确认',\n actionNeedComment: '填意见',\n actionAdd: '添加动作',\n actionConfirm: '确定执行「{label}」?',\n actionCommentPlaceholder: '请输入意见(可留空)',\n actionDone: '已执行',\n actionInvalidUrl: '动作地址不合法',\n },\n // 实时通知(SignalR;后端 SmartAdmin:Realtime:Enabled 开启后即时推送,否则退回轮询/惰性 401)\n realtime: {\n forcedLogout: '您已被强制下线',\n },\n // 在线会话(只读 + 踢人)\n session: {\n title: '在线会话',\n account: '账号',\n ip: 'IP 地址',\n device: '设备',\n loginTime: '登录时间',\n expiresAt: '过期时间',\n kick: '强制下线',\n self: '当前会话',\n kickConfirm: '确定强制下线账号「{account}」的会话?该会话将立即失效。',\n kicked: '已强制下线',\n mineTitle: '我的会话',\n current: '当前设备',\n kickMineConfirm: '确定下线该设备上的会话?其登录状态将立即失效。',\n },\n // 外部登录 / SSO:回调结果页 + 个人中心账号绑定\n oauth: {\n processing: '正在处理登录…',\n backToLogin: '即将返回登录页',\n failed: '第三方登录失败,请重试',\n bindingsTitle: '账号绑定',\n bindingsHint: '把第三方账号绑定到本账号后,即可用它一键登录。绑定需跳转到对应平台完成一次授权。',\n bindingsTip: '绑定会跳转到对应平台授权;解绑后将无法再用该方式登录本账号。',\n boundCountLabel: '已绑定',\n bindTip: '点击下方按钮前往授权绑定',\n disabledTip: '运营已关闭该登录方式,已绑定的仍可解绑',\n cannotBind: '暂不可绑定',\n noProviders: '当前未启用任何第三方登录方式',\n thirdParty: '第三方账号',\n pendingLinkTitle: '待绑定 {name}',\n pendingLinkHint:\n '该 {name} 尚未绑定系统账号。请用你自己的系统账号登录;登录后将请你确认是否绑定。请勿打开来源不明的绑定链接。',\n pendingLinkSuccess: '已绑定 {name},下次可直接用它登录',\n pendingLinkConfirmTitle: '确认绑定第三方账号?',\n pendingLinkConfirmContent:\n '将把 {name}{identity} 绑定到当前账号「{account}」。若这不是你本人刚授权的第三方账号,请选择「仅登录」。',\n pendingLinkConfirmOk: '确认绑定',\n pendingLinkConfirmSkip: '仅登录,不绑定',\n pendingLinkIdentity: '({display})',\n bind: '绑定',\n unbind: '解绑',\n bound: '已绑定',\n notBound: '未绑定',\n boundAt: '绑定于 {time}',\n unbound: '已解绑',\n unbindConfirm: '确定解绑「{name}」?解绑后将不能再用它登录本账号。',\n disabled: '已停用',\n // 内置品牌显示名(后端未下发 displayName 时用)\n brand: {\n github: 'GitHub',\n wechat: '微信',\n wecom: '企业微信',\n dingtalk: '钉钉',\n gitee: 'Gitee',\n qq: 'QQ',\n },\n },\n // 岗位管理(普通 CRUD;岗位与机构无关联)\n position: {\n title: '岗位管理',\n code: '岗位编码',\n name: '岗位名称',\n sort: '排序',\n codePlaceholder: '不填则自动生成',\n nameRequired: '请输入岗位名称',\n addTitle: '新增岗位',\n editTitle: '编辑岗位',\n deleteConfirm: '确定删除岗位「{name}」?',\n saved: '保存成功',\n deleted: '已删除',\n },\n // 角色管理(CRUD + 授权菜单 + 数据范围)\n role: {\n title: '角色管理',\n code: '角色编码',\n name: '角色名称',\n sort: '排序',\n remark: '备注',\n codeRequired: '请输入角色编码',\n nameRequired: '请输入角色名称',\n addTitle: '新增角色',\n editTitle: '编辑角色',\n // 删角色会物理删掉用户↔角色关联(不可恢复),故删前先查人数当面告知;查不到人数(无用户查询权限)才退回这条通用文案\n deleteConfirm: '确定删除角色「{name}」?其授权、数据范围及用户关联将一并清除。',\n deleteConfirmNoUsers: '确定删除角色「{name}」?当前没有用户使用该角色。',\n deleteConfirmWithUsers:\n '角色「{name}」当前有 {count} 个用户在用。删除后这些用户将立即失去该角色的全部权限,且关联无法恢复。确定删除?',\n batchDeleteWithUsers:\n '确定删除所选 {count} 个角色?其中 {users} 个用户将立即失去相应权限,且关联无法恢复。',\n isDelegatable: '可转授',\n isDelegatableHint: '开启后,非超管用户可把该角色指派给其数据范围内的用户',\n grantUsers: '授权用户',\n grantUsersSaved: '用户授权已保存',\n saved: '保存成功',\n deleted: '已删除',\n grantMenus: '授权菜单',\n grantSaved: '授权已保存',\n catalog: '一级目录',\n menuCol: '菜单',\n buttonsCol: '按钮授权',\n apiOnlyRow: '接口权限(无页面)',\n dataScope: '数据范围',\n scopeType: '范围类型',\n customOrgs: '自定义机构',\n customOrgsHint: '选择该角色可见的机构',\n scopeSaved: '数据范围已保存',\n scope: {\n all: '全部数据',\n org: '本机构',\n orgAndChildren: '本机构及以下',\n self: '仅本人',\n custom: '自定义机构',\n },\n },\n // 日志(登录 / 操作共用一个命名空间;共享 result/success/failed/ip/userAgent/clear/cleared)\n log: {\n loginTitle: '登录日志',\n account: '账号',\n result: '结果',\n success: '成功',\n failed: '失败',\n resultCode: '结果码',\n name: '姓名',\n ip: 'IP 地址',\n userAgent: '客户端',\n device: '设备',\n clear: '清空日志',\n clearLoginConfirm: '确定清空全部登录日志?此为硬删除,不可恢复。',\n cleared: '已清空',\n // 操作日志\n opTitle: '操作日志',\n opName: '操作名',\n method: '方法',\n path: '路径',\n elapsed: '耗时',\n operator: '操作人',\n operatorPlaceholder: '选择操作人',\n param: '入参',\n exception: '异常信息',\n detail: '详情',\n clearOpConfirm: '确定清空全部操作日志?此为硬删除,不可恢复。',\n // 异常日志\n exceptionTitle: '异常日志',\n exceptionType: '异常类型',\n exceptionMessage: '异常消息',\n stackTrace: '异常堆栈',\n traceId: '追踪号',\n clearExceptionConfirm: '确定清空全部异常日志?此为硬删除,不可恢复。',\n },\n monitor: {\n title: '服务器监控',\n refresh: '刷新',\n cpu: 'CPU 占用',\n memory: '内存占用',\n runtime: '运行时',\n disk: '磁盘',\n processorCount: '处理器',\n threadCount: '线程',\n gcHeap: '托管堆',\n totalMemory: '可用上界',\n machineName: '主机名',\n framework: '框架',\n os: '操作系统',\n arch: '架构',\n uptime: '运行时长',\n free: '可用',\n days: '天',\n hours: '时',\n minutes: '分',\n },\n // 定时任务(任务列表 / 执行记录 / 任务监控 / CronEditor;错误码文案在 error.job.*,别重复)\n job: {\n title: '定时任务',\n name: '任务名称',\n code: '任务编码',\n codePlaceholder: '唯一编码,创建后不可变',\n remark: '备注',\n nameRequired: '请输入任务名称',\n codeRequired: '请输入任务编码',\n addTitle: '新增任务',\n editTitle: '编辑任务',\n deleteConfirm: '确定删除任务「{name}」?',\n saved: '保存成功,集群下最长 30 秒后生效',\n deleted: '已删除',\n runOnce: '执行',\n runConfirm: '确定立即执行一次任务「{name}」?本次执行不影响原调度节奏。',\n runStarted: '已触发执行',\n viewLogs: '记录',\n protectedTip: '内置任务受保护,禁止删除',\n pauseConfirm: '确定暂停任务「{name}」?暂停后不再调度。',\n panicTooltip: '连续失败 {n} 次已熔断;重新启用将清零连败并恢复调度',\n nextRunTime: '下次执行',\n lastRunTime: '上次执行',\n runCount: '执行/失败',\n status: { ready: '就绪', paused: '已暂停', completed: '已完成', panic: '已熔断' },\n form: {\n sectionBasic: '基本',\n sectionTrigger: '触发',\n sectionHandler: '载荷',\n sectionAdvanced: '高级选项',\n sectionAdvancedHint: '生效窗口、错过策略、并发、重试与告警;不展开也能保存',\n startTime: '生效开始',\n endTime: '生效结束',\n windowPlaceholder: '留空=不限',\n misfireStrategy: '错过策略',\n misfireSkip: '跳过',\n misfireFireOnceNow: '立即补跑一次',\n concurrencyMode: '并发模式',\n concurrencySerial: '串行跳过',\n concurrencyParallel: '并行',\n timeoutSeconds: '执行超时(秒)',\n timeoutHint: '0 = 不限制',\n retryCount: '失败重试次数',\n retryIntervalSeconds: '重试间隔(秒)',\n failAlertThreshold: '连败告警阈值',\n failAlertHint: '0 = 不告警不熔断',\n alertByNotice: '站内信告警',\n alertEmails: '告警邮箱',\n alertEmailsPlaceholder: '逗号分隔;留空回退全局配置',\n },\n trigger: {\n kind: '触发方式',\n cron: 'Cron',\n interval: '固定间隔',\n oneShot: '一次性',\n cronExpression: 'Cron 表达式',\n cronRequired: '请输入 cron 表达式',\n intervalSeconds: '间隔秒数',\n intervalRequired: '请输入间隔秒数(≥5)',\n oneShotTime: '执行时刻',\n oneShotRequired: '请选择执行时刻',\n seconds: '秒',\n everySeconds: '每 {n} 秒',\n },\n handler: {\n kind: '载荷类型',\n compiled: '编译类',\n http: 'HTTP',\n sql: 'SQL',\n sqlDisabledHint: 'SQL 载荷未启用:需后端开启 SmartAdmin:Jobs:Sql:Enabled',\n name: '处理器',\n namePlaceholder: '选择已注册的处理器',\n nameRequired: '请选择处理器',\n props: '属性包',\n propKey: '键',\n propValue: '值',\n addProp: '添加一项',\n httpUrl: '请求地址',\n httpUrlRequired: '请输入请求地址',\n httpMethod: '请求方法',\n httpHeaders: '请求头',\n headersMaskHint: '出于安全,已存请求头的值以 ******** 显示;不修改则原样保存生效',\n httpBody: '请求体',\n successStatuses: '成功状态码',\n successStatusesPlaceholder: '如 200,201;留空 = 2xx 即成功',\n sqlText: 'SQL 语句',\n sqlRequired: '请输入 SQL 语句',\n },\n log: {\n title: '执行记录',\n job: '任务',\n jobPlaceholder: '选择任务',\n fireMode: '触发来源',\n fireModeSchedule: '调度',\n fireModeManual: '手动',\n fireModeBackfill: '补跑',\n fireModeMisfireSkip: '错过跳过',\n scheduledTime: '计划时刻',\n startTime: '开始时间',\n elapsed: '耗时',\n runStatus: '状态',\n running: '运行中',\n success: '成功',\n failed: '失败',\n timeout: '超时',\n cancelled: '已取消',\n skipped: '已跳过',\n retryIndex: '重试次',\n node: '节点',\n kill: '终止',\n killConfirm: '确定终止任务「{name}」的这次执行?终止旗标写入后,目标节点最迟数秒内停止。',\n killed: '已请求终止',\n clear: '清空记录',\n clearTitle: '清空执行记录',\n clearAll: '全部记录',\n beforeDays: '{n} 天以前的记录',\n clearHint: '运行中的记录一律保留;此为硬删除,不可恢复。',\n cleared: '已清理 {n} 条记录',\n message: '处理器输出',\n error: '异常信息',\n attempts: '同一次触发的各次尝试',\n firstTry: '首次',\n retryN: '第 {n} 次重试',\n },\n monitor: {\n title: '任务监控',\n todaySuccess: '今日成功',\n todayFailed: '今日失败',\n running: '运行中',\n totalJobs: '任务总数',\n trendTitle: '近 14 日成败趋势',\n trendSuccess: '成功',\n trendFailed: '失败',\n upcomingTitle: '即将执行',\n upcomingJob: '任务',\n upcomingTime: '时刻',\n nodesTitle: '集群节点',\n nodeName: '节点',\n role: '角色',\n leader: 'leader',\n standby: 'standby',\n lastHeartbeat: '最后心跳',\n workerId: 'WorkerId',\n pid: 'PID',\n justNow: '刚刚',\n secondsAgo: '{n} 秒前',\n minutesAgo: '{n} 分钟前',\n hoursAgo: '{n} 小时前',\n },\n cron: {\n tabSecond: '秒',\n tabMinute: '分',\n tabHour: '时',\n tabDay: '日',\n tabMonth: '月',\n tabWeek: '周',\n tabExpression: '表达式',\n every: '每',\n any: '不指定(?)',\n range: '区间',\n to: '到',\n step: '步长',\n stepFrom: '从',\n stepEvery: '起,每',\n list: '指定值',\n lastDay: '月末(L)',\n lastDayHint: '0 = 月末当天,n = 月末前 n 天(L-n)',\n nearestWeekday: '最近工作日(nW)',\n nearestWeekdayHint: '距该日最近的工作日,不跨月',\n lastWeekday: '月末工作日(LW)',\n lastOfWeek: '最后一个周几(nL)',\n nth: '第 m 个周几(n#m)',\n nthPrefix: '第',\n nthInfix: '个',\n sun: '周日',\n mon: '周一',\n tue: '周二',\n wed: '周三',\n thu: '周四',\n fri: '周五',\n sat: '周六',\n expressionPlaceholder: '如 0 0 2 * * ?(秒 分 时 日 月 周)',\n expressionHint: '支持 5 段(自动补秒位)或 6 段;日与周不能同时受限,其一须为 * 或 ?',\n normalized: '归一化',\n nextRuns: '未来 {n} 次',\n noUpcoming: '已无未来执行时刻',\n everySecondWarning: '该表达式等效每秒执行,请确认这是有意为之',\n },\n },\n // AI 模型管理(厂商 + 模型;错误码文案在 error.ai.*,别重复)\n aiModel: {\n title: 'AI 模型管理',\n searchPlaceholder: '搜索厂商编码/名称',\n addProvider: '新增厂商',\n editProvider: '编辑厂商',\n deleteProvider: '删除厂商',\n deleteConfirm: '确定删除厂商「{name}」?其下模型一并删除,已产生的用量记录不受影响。',\n deleted: '已删除',\n saved: '已保存',\n enabled: '启用',\n disabled: '已停用',\n pendingConfigTip: '尚未配置 API Key,保存前请填写',\n provider: {\n code: '厂商编码',\n codePlaceholder: '唯一编码,创建后不可变',\n codeRequired: '请输入厂商编码',\n name: '厂商名称',\n nameRequired: '请输入厂商名称',\n preset: '厂商预设',\n presetPlaceholder: '选择预设厂商,自动带出协议与 Base URL',\n presetCustom: '自定义',\n protocol: '协议',\n baseUrl: 'Base URL',\n baseUrlRequired: '请输入 Base URL',\n authScheme: '鉴权方式',\n apiKey: 'API Key',\n apiKeyPlaceholder: '留空 = 不修改现有 Key',\n apiKeyHint: '已保存的 Key 只回显掩码,不回填明文',\n hasApiKeyYes: '已配置',\n hasApiKeyNo: '未配置',\n disableConfirm: '确定停用厂商「{name}」?',\n sort: '排序',\n remark: '备注',\n },\n model: {\n title: '模型',\n add: '添加模型',\n remove: '移除',\n name: '模型名',\n nameRequired: '请输入模型名',\n displayName: '展示名',\n displayNameRequired: '请输入展示名',\n contextWindow: '上下文窗口',\n contextWindowPlaceholder: '如 128000,留空不限',\n inputPrice: '输入单价',\n outputPrice: '输出单价',\n pricePlaceholder: '每百万 Token,留空不计费',\n enabled: '启用',\n isDefault: '默认模型',\n setDefault: '设为默认',\n defaultTag: '默认',\n atLeastOne: '至少保留一个模型',\n duplicateName: '模型名重复',\n noDefault: '未设置默认模型',\n },\n test: {\n action: '测试连接',\n testing: '测试中…',\n ok: '连接成功',\n failed: '连接失败',\n latency: '耗时 {ms} ms',\n model: '模型',\n usage: '用量',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n error: '错误信息',\n },\n },\n // AI 用量统计(筛选 / 四格指标 / 分组 / 趋势 / 明细)\n aiUsage: {\n title: 'AI 用量统计',\n filter: {\n dateRange: '时间范围',\n today: '今天',\n last7Days: '近 7 天',\n last30Days: '近 30 天',\n provider: '厂商',\n providerAll: '全部厂商',\n model: '模型',\n modelAll: '全部模型',\n scene: '场景',\n sceneAll: '全部场景',\n scenePlaceholder: '按调用场景过滤',\n },\n metric: {\n totalTokens: '总 Token 数',\n totalCalls: '总调用次数',\n failureCount: '失败次数',\n avgLatency: '平均耗时',\n },\n groupBy: {\n label: '统计维度',\n provider: '按厂商',\n model: '按模型',\n scene: '按场景',\n user: '按用户',\n },\n trend: {\n title: '用量趋势',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n callCount: '调用次数',\n },\n table: {\n createTime: '时间',\n provider: '厂商',\n model: '模型',\n scene: '场景',\n user: '用户',\n inputTokens: '输入 Token',\n outputTokens: '输出 Token',\n totalTokens: '合计 Token',\n latency: '耗时',\n status: '状态',\n success: '成功',\n failed: '失败',\n requestId: '请求 Id',\n streamed: '流式',\n usageSource: '用量来源',\n usageSourceReported: '上游上报',\n usageSourceMissing: '缺失估算',\n },\n share: '占比',\n },\n cache: {\n authTitle: '权限缓存',\n authDesc: '清除全部用户的权限码与数据范围缓存。直接改库或排障后,强制下次请求按最新授权重算。',\n authConfirm: '确定清除全部用户的权限/数据范围缓存?下次请求将重新计算授权。',\n dictTitle: '字典缓存',\n dictDesc: '清除全部字典类型的字典项缓存。直接改库后,强制下拉数据源按最新字典重建。',\n dictConfirm: '确定清除全部字典项缓存?',\n configTitle: '配置缓存',\n configDesc: '清除全部系统配置项的读穿透缓存。直接改库后,强制配置值按最新库表重读。',\n configConfirm: '确定清除全部系统配置缓存?',\n portalTitle: '门户菜单缓存',\n portalDesc: '递增门户代际,令所有用户的模块/菜单树缓存整体失效,下次进入重建。',\n portalConfirm: '确定重建门户菜单缓存?所有用户的菜单将在下次请求时重算。',\n execute: '执行',\n flushed: '已清除 {n} 项缓存',\n portalDone: '已重建门户菜单缓存',\n note: '仅提供定向失效,不浏览键、不读取值——缓存中含明文验证码/一次性令牌、键中内嵌手机号/IP。正常的授权变更已自动失效,此页用于直接改库等旁路场景的手动刷新。',\n },\n profile: {\n title: '个人资料',\n account: '账号',\n name: '姓名',\n org: '机构',\n position: '职位',\n nickname: '昵称',\n gender: '性别',\n phone: '手机号',\n email: '邮箱',\n avatar: '头像',\n avatarUploading: '上传中…',\n phoneInvalid: '手机号格式不正确',\n emailInvalid: '邮箱格式不正确',\n saved: '资料已更新',\n },\n personalSecurity: {\n title: '账号安全',\n // 全员可见:只说用户能做什么,不指向后台配置路径。\n hint: '在此绑定或管理身份验证器(TOTP),用于登录二次验证。',\n // 仅管理员可见(超管 / 能进系统配置):指向「安全策略」开关,普通用户无需也不应看到。\n adminHint:\n '若绑定失败或登录不要求二次验证,请到「系统配置 → 安全策略」确认已开启「启用动态口令」。',\n bindDesc: '使用账号与当前密码完成自助绑定;也可使用恢复码解除绑定后重新绑定。',\n setupAuthenticator: '设置身份验证器',\n useRecovery: '使用恢复码',\n note: '自愿绑定请从本页进入。若账号被要求启用二次验证且尚未绑定,登录账密通过后会弹出引导。',\n },\n changePassword: {\n title: '修改密码',\n oldPassword: '原密码',\n newPassword: '新密码',\n confirmPassword: '确认新密码',\n oldRequired: '请输入原密码',\n newRequired: '请输入新密码',\n confirmRequired: '请再次输入新密码',\n mismatch: '两次输入的新密码不一致',\n changed: '密码已修改,请重新登录',\n forcedHint: '首次登录或密码被重置,请先修改密码后再使用系统。',\n strength: { label: '密码强度', weak: '弱', fair: '中', strong: '强' },\n rules: {\n minLength: '至少 {n} 位',\n upper: '包含大写字母',\n lower: '包含小写字母',\n digit: '包含数字',\n special: '包含特殊字符',\n specialOptional: '包含特殊字符(可选,更安全)',\n },\n },\n // ── 后端错误码 msgKey → 文案 ──────────────────────────────\n error: {\n _fallback: '操作失败,请稍后重试',\n // 前端侧错误(不来自后端错误码):请求被超时闸掐断或主动取消\n network: {\n timeout: '请求超时,请检查网络后重试',\n aborted: '请求已取消',\n },\n auth: {\n passwordWrong: '账号或密码错误',\n captchaExpired: '验证码已过期',\n captchaWrong: '验证码错误',\n accountLocked: '账号已锁定,请稍后再试',\n accountDisabled: '账号已停用',\n tokenInvalid: '登录状态无效,请重新登录',\n refreshTokenInvalid: '登录已过期,请重新登录',\n tooManyRequests: '操作过于频繁,请稍后再试',\n smsCodeRequired: '请输入短信验证码',\n smsCodeWrong: '短信验证码错误',\n smsCodeExpired: '短信验证码错误或已失效,请重新获取',\n smsLoginDisabled: '短信验证码登录未启用',\n oauthProviderDisabled: '该第三方登录方式未启用或不存在',\n oauthStateInvalid: '登录会话已失效,请重新发起第三方登录',\n oauthExchangeFailed: '第三方登录换取身份失败,请重试',\n oauthAccountNotBound: '该第三方账号尚未绑定系统账号,请先登录本系统账号以完成绑定',\n oauthAlreadyBound: '该第三方账号已被绑定,或当前账号已绑定同一登录方式',\n totpRequired: '请输入动态口令完成二次验证',\n totpWrong: '动态口令错误',\n totpNotBound: '尚未绑定动态口令,请先完成绑定',\n bindInviteInvalid: '绑定无效或已过期,请重新开始设置',\n mfaBindInvalid: '绑定无效或已过期,请重新开始设置',\n recoveryCodeInvalid: '恢复码无效或已使用',\n csrfInvalid: '请求校验失败,请刷新页面后重试',\n reauthRequired: '此操作需要再次验证身份',\n mfaBindPasswordRequired: '绑定动态口令前请先验证当前密码',\n apiKeyInvalid: 'API Key 缺失或无效',\n },\n perm: {\n denied: '无权限访问',\n demoReadOnly: '当前为演示环境,禁止修改操作',\n superAdminRequired: '该操作仅限超级管理员执行',\n },\n user: {\n notFound: '用户不存在',\n accountExists: '账号已存在',\n superAdminProtected: '超级管理员受保护,禁止此操作',\n passwordTooWeak: '新密码不满足密码复杂度要求',\n passwordReused: '新密码不能与当前或最近使用过的密码相同',\n outOfDataScope: '目标用户超出当前数据范围',\n avatarUrlInvalid: '头像地址不合法',\n cannotOperateSelf: '不能对自己执行此操作',\n },\n role: {\n notFound: '角色不存在',\n codeExists: '角色编码已存在',\n notDelegatable: '目标角色不可转授',\n },\n org: {\n notFound: '机构不存在',\n hasChildren: '存在子机构,不可删除',\n invalidParent: '上级机构无效',\n codeExists: '机构编码已存在',\n hasUsers: '机构下仍有用户,不可删除',\n outOfScope: '目标机构超出当前数据范围',\n },\n position: {\n notFound: '职位不存在',\n codeExists: '职位编码已存在',\n hasUsers: '该职位下仍有用户,不可删除',\n },\n module: {\n notFound: '应用不存在',\n codeExists: '应用编码已存在',\n protected: '内置应用受保护,禁止此操作',\n accessDenied: '无该应用访问权限',\n hasMenus: '应用下仍有挂靠菜单,请先迁移或删除后再删应用',\n },\n menu: {\n notFound: '菜单不存在',\n hasChildren: '存在子节点,不可删除',\n invalidParent: '上级菜单无效(不能指向自身或其子节点)',\n },\n session: { notFound: '会话不存在或已下线' },\n dict: {\n typeNotFound: '字典类型不存在',\n typeCodeExists: '字典类型编码已存在',\n itemNotFound: '字典项不存在',\n seedProtected: '种子数据受保护,不可删除',\n itemValueExists: '字典项值在该类型下已存在',\n },\n config: { notFound: '配置不存在', keyExists: '配置键已存在' },\n notice: {\n notFound: '通知不存在',\n receiverRequired: '定向发布必须指定至少一个接收对象',\n receiverNotFound: '接收对象不存在或已停用',\n actionInvalid:\n '动作列表不合法:文案不能为空,方法只能是 GET/POST,地址须是单个 / 开头的站内路径,最多 5 条',\n },\n file: {\n empty: '文件为空',\n tooLarge: '文件超出大小限制',\n extNotAllowed: '不支持的文件类型',\n notFound: '文件不存在',\n chunkMissing: '分片缺失,请重试上传',\n chunkHashMismatch: '文件校验失败,请重新上传',\n },\n excel: {\n providerMissing: '未安装 Excel 支持包,请安装 SmartAdmin.Excel 并调用 AddSmartAdminExcel()',\n },\n import: {\n fileEmpty: '导入文件为空',\n rowLimitExceeded: '导入行数超过上限',\n columnMissing: '必填列未映射',\n cellRequired: '该单元格为必填项',\n cellDictInvalid: '字典值无效',\n cellRefNotFound: '引用的数据不存在',\n cellFormatInvalid: '单元格格式不正确',\n duplicateInFile: '业务键在本文件内重复',\n duplicateInDb: '业务键在库中已存在',\n orgOutOfScope: '机构不在当前数据范围内',\n },\n export: {\n tooManyRows: '导出结果超过行数上限,请先收窄筛选条件',\n columnInvalid: '请求导出的列无效',\n },\n job: {\n notFound: '任务不存在',\n codeExists: '任务编码已存在',\n cronInvalid: 'cron 表达式不合法',\n triggerInvalid: '触发配置不合法',\n handlerNotFound: '处理器未注册',\n alreadyRunning: '上次执行尚未结束',\n runNotAlive: '该执行记录不在运行中',\n sqlDisabled: 'SQL 任务未启用',\n httpUrlBlocked: '目标地址被安全策略拒绝',\n statusConflict: '任务状态不允许该操作',\n propsInvalid: '任务参数缺失或不合法',\n logNotFound: '执行记录不存在',\n runLimitReached: '运行中任务数已达上限,请稍后再试',\n protected: '内置任务受保护,禁止删除',\n },\n ai: {\n providerNotFound: '厂商不存在',\n providerCodeExists: '厂商编码已存在',\n providerDisabled: '厂商已停用',\n apiKeyMissing: '未配置 API Key',\n baseUrlBlocked: '目标地址被安全策略拒绝',\n presetNotFound: '预置厂商不存在',\n presetImmutable: '预置厂商的协议、预置标识不可修改',\n modelNotFound: '模型不存在',\n noDefaultModel: '未配置默认模型',\n modelDisabled: '模型已停用',\n modelNameExists: '模型名称已存在',\n upstreamError: '上游服务调用失败',\n upstreamTimeout: '上游服务调用超时',\n upstreamRateLimited: '上游服务限流,请稍后重试',\n upstreamAuthFailed: '上游服务鉴权失败,请检查 API Key',\n upstreamBadResponse: '上游服务返回异常',\n dataProtectionKeyMissing: '数据保护密钥不可用,无法解密 API Key',\n sceneRequired: '必须指定调用场景(scene)',\n multimodalSystemUnsupported: 'System 角色消息不支持图片等多段内容',\n structuredOutputUnsupported: '该厂商不支持结构化输出(json_schema)约束',\n },\n recycle: {\n notFound: '回收站中未找到该记录',\n uniqueConflict: '恢复失败:编码/账号已被新记录占用',\n invalidType: '不支持的回收站类型',\n },\n request: {\n pageSizeExceeded: '每页条数超过上限 {max},请调小分页或使用导出',\n },\n system: { internal: '服务器内部错误' },\n },\n\n // 回收站\n recycle: {\n title: '回收站',\n name: '名称',\n code: '编码',\n deletedAt: '删除时间',\n restore: '恢复',\n purge: '彻底删除',\n restoreConfirm: '确定恢复「{name}」?',\n purgeConfirm: '确定彻底删除「{name}」?数据将无法恢复。',\n restored: '已恢复',\n purged: '已彻底删除',\n empty: '回收站为空',\n tabs: {\n user: '用户',\n role: '角色',\n org: '机构',\n position: '岗位',\n module: '模块',\n config: '配置',\n dict: '字典',\n menu: '菜单',\n job: '定时任务',\n },\n },\n // 用户导入导出:列标题 + 文件名(与 UserImportProfile / UserExportProfile 的列一一对应)\n userExport: {\n account: '登录账号',\n name: '姓名',\n nickname: '昵称',\n phone: '手机号',\n email: '邮箱',\n gender: '性别',\n orgName: '所属机构',\n positionName: '职位',\n directorName: '直属主管',\n enabled: '启用状态',\n superAdmin: '超级管理员',\n createTime: '创建时间',\n fileName: '用户导出.xlsx',\n importTemplateName: '用户导入模板.xlsx',\n errorReportName: '用户导入错误报告.xlsx',\n },\n logOp: {\n fileName: '操作日志导出.xlsx',\n },\n}\n"],"names":["zhCN"],"mappings":"AACA,MAAAA,IAAe;AAAA,EACb,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAAA,EAEV,YAAY;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAAA;AAAA,EAGR,eAAe;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA;AAAA,EAGR,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,cAAc;AAAA,IACZ,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,KAAK;AAAA,IACH,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,UAAU;AAAA,IACR,OAAO;AAAA,IACP,eAAe;AAAA,IACf,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iCAAiC;AAAA,IACjC,kBAAkB;AAAA,IAClB,6BAA6B;AAAA,IAC7B,4BAA4B;AAAA,IAC5B,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,cAAc;AAAA,IACd,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,KAAK;AAAA,IACL,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,eAAe;AAAA,EAAA;AAAA,EAEjB,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,MAAM;AAAA,IACJ,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,uBAAuB;AAAA,IACvB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,UAAU;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,wBAAwB;AAAA,IACxB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,YAAY;AAAA,IACV,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,KAAK;AAAA,IACL,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA;AAAA,EAGR,OAAO;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA;AAAA,IAEV,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,WAAW;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,aAAa;AAAA,EAAA;AAAA;AAAA,EAGf,KAAK;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAAA,EAEX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,IAEZ,UAAU;AAAA;AAAA;AAAA,IAGV,cAAc;AAAA,IACd,KAAK;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,eAAe;AAAA,IACf,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,EAAA;AAAA,EAErB,KAAK;AAAA,IACH,WAAW;AAAA,IACX,eAAe;AAAA,IACf,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,cAAc;AAAA,IACd,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cACE;AAAA,IACF,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,6BAA6B;AAAA,IAC7B,gCAAgC;AAAA,EAAA;AAAA,EAElC,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,IAClB,SAAS;AAAA,EAAA;AAAA;AAAA,EAGX,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,YAAY;AAAA,IACZ,QAAQ;AAAA;AAAA,IAER,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,IAEL,UAAU;AAAA,IACV,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,eAAe;AAAA,IACf,cAAc;AAAA,IACd,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,aAAa;AAAA,EAAA;AAAA,EAEf,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAER,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,YAAY;AAAA,MACV,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER,KAAK;AAAA,MACH,MAAM;AAAA,MACN,UAAU;AAAA,MACV,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,IAET,KAAK;AAAA,MACH,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,iBAAiB;AAAA,IAAA;AAAA,IAEnB,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,MACP,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,2BAA2B;AAAA,MAC3B,sBACE;AAAA,IAAA;AAAA,IAEJ,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,MAAM;AAAA,MACN,cAAc;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,IAAA;AAAA,IAEhB,UAAU;AAAA,MACR,WAAW;AAAA,QACT,OAAO;AAAA,QACP,cAAc;AAAA,QACd,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc;AAAA,QACd,cAAc;AAAA,QACd,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,MAEhB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,eAAe;AAAA,QACf,gBAAgB;AAAA,MAAA;AAAA,MAElB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,MAAM,WAAW,MAAM,KAAA;AAAA,MAAK;AAAA,MAEnD,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,sBAAsB;AAAA,QACtB,MAAM;AAAA,MAAA;AAAA,MAER,KAAK;AAAA,QACH,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,MAER,KAAK,EAAE,SAAS,WAAA;AAAA,MAChB,UAAU,EAAE,SAAS,YAAA;AAAA,MACrB,WAAW;AAAA,QACT,OAAO;AAAA,QACP,SAAS;AAAA,QACT,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,qBAAqB;AAAA,MAAA;AAAA,MAEvB,UAAU;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAEF,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA;AAAA,EAGF,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,cAAc;AAAA,IACd,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,EAAA;AAAA;AAAA,EAGf,KAAK;AAAA,IACH,OAAO;AAAA,IACP,mBAAmB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,MAAM;AAAA,IACN,WAAW;AAAA,IACX,aAAa;AAAA,IACb,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA;AAAA,EAGX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IACX,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,IACf,SAAS;AAAA,EAAA;AAAA;AAAA,EAGX,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,cAAc;AAAA,IACd,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,cAAc;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,WAAW;AAAA,IACX,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA;AAAA,IAEb,SAAS;AAAA,IACT,aACE;AAAA,IACF,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,0BAA0B;AAAA,IAC1B,YAAY;AAAA,IACZ,kBAAkB;AAAA,EAAA;AAAA;AAAA,EAGpB,UAAU;AAAA,IACR,cAAc;AAAA,EAAA;AAAA;AAAA,EAGhB,SAAS;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,iBAAiB;AAAA,EAAA;AAAA;AAAA,EAGnB,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,IACd,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,iBACE;AAAA,IACF,oBAAoB;AAAA,IACpB,yBAAyB;AAAA,IACzB,2BACE;AAAA,IACF,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,qBAAqB;AAAA,IACrB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,eAAe;AAAA,IACf,UAAU;AAAA;AAAA,IAEV,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,IAAI;AAAA,IAAA;AAAA,EACN;AAAA;AAAA,EAGF,UAAU;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA;AAAA,EAGX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA;AAAA,IAEX,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,wBACE;AAAA,IACF,sBACE;AAAA,IACF,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA;AAAA,EAGF,KAAK;AAAA,IACH,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,mBAAmB;AAAA,IACnB,SAAS;AAAA;AAAA,IAET,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,gBAAgB;AAAA;AAAA,IAEhB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,uBAAuB;AAAA,EAAA;AAAA,EAEzB,SAAS;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA;AAAA,EAGX,KAAK;AAAA,IACH,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ,EAAE,OAAO,MAAM,QAAQ,OAAO,WAAW,OAAO,OAAO,MAAA;AAAA,IAC/D,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,aAAa;AAAA,MACb,wBAAwB;AAAA,IAAA;AAAA,IAE1B,SAAS;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,IAEhB,SAAS;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,KAAK;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,4BAA4B;AAAA,MAC5B,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,KAAK;AAAA,MACH,OAAO;AAAA,MACP,KAAK;AAAA,MACL,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV,SAAS;AAAA,MACP,OAAO;AAAA,MACP,cAAc;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,eAAe;AAAA,MACf,UAAU;AAAA,MACV,KAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA;AAAA,IAEZ,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,eAAe;AAAA,MACf,OAAO;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,WAAW;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,WAAW;AAAA,MACX,UAAU;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,oBAAoB;AAAA,IAAA;AAAA,EACtB;AAAA;AAAA,EAGF,SAAS;AAAA,IACP,OAAO;AAAA,IACP,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,UAAU;AAAA,MACR,MAAM;AAAA,MACN,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,MAAM;AAAA,MACN,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,IAEV,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,0BAA0B;AAAA,MAC1B,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,WAAW;AAAA,IAAA;AAAA,IAEb,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa;AAAA,MACb,cAAc;AAAA,MACd,OAAO;AAAA,IAAA;AAAA,EACT;AAAA;AAAA,EAGF,SAAS;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,kBAAkB;AAAA,IAAA;AAAA,IAEpB,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,IAAA;AAAA,IAEd,SAAS;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER,OAAO;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,cAAc;AAAA,MACd,WAAW;AAAA,IAAA;AAAA,IAEb,OAAO;AAAA,MACL,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IAAA;AAAA,IAEtB,OAAO;AAAA,EAAA;AAAA,EAET,OAAO;AAAA,IACL,WAAW;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,OAAO;AAAA,EAAA;AAAA,EAET,kBAAkB;AAAA,IAChB,OAAO;AAAA;AAAA,IAEP,MAAM;AAAA;AAAA,IAEN,WACE;AAAA,IACF,UAAU;AAAA,IACV,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,MAAM;AAAA,EAAA;AAAA,EAER,gBAAgB;AAAA,IACd,OAAO;AAAA,IACP,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,KAAK,QAAQ,IAAA;AAAA,IACzD,OAAO;AAAA,MACL,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,WAAW;AAAA;AAAA,IAEX,SAAS;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,IAAA;AAAA,IAEX,MAAM;AAAA,MACJ,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,uBAAuB;AAAA,MACvB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,MACtB,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,yBAAyB;AAAA,MACzB,eAAe;AAAA,IAAA;AAAA,IAEjB,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,oBAAoB;AAAA,IAAA;AAAA,IAEtB,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,IAAA;AAAA,IAErB,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,gBAAgB;AAAA,IAAA;AAAA,IAElB,KAAK;AAAA,MACH,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,IAAA;AAAA,IAEd,UAAU;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA;AAAA,IAEZ,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,IAAA;AAAA,IAEjB,SAAS,EAAE,UAAU,YAAA;AAAA,IACrB,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,iBAAiB;AAAA,IAAA;AAAA,IAEnB,QAAQ,EAAE,UAAU,SAAS,WAAW,SAAA;AAAA,IACxC,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,eACE;AAAA,IAAA;AAAA,IAEJ,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,UAAU;AAAA,MACV,eAAe;AAAA,MACf,UAAU;AAAA,MACV,cAAc;AAAA,MACd,mBAAmB;AAAA,IAAA;AAAA,IAErB,OAAO;AAAA,MACL,iBAAiB;AAAA,IAAA;AAAA,IAEnB,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,eAAe;AAAA,IAAA;AAAA,IAEjB,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,eAAe;AAAA,IAAA;AAAA,IAEjB,KAAK;AAAA,MACH,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,WAAW;AAAA,IAAA;AAAA,IAEb,IAAI;AAAA,MACF,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,MACrB,0BAA0B;AAAA,MAC1B,eAAe;AAAA,MACf,6BAA6B;AAAA,MAC7B,6BAA6B;AAAA,IAAA;AAAA,IAE/B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,IAAA;AAAA,IAEf,SAAS;AAAA,MACP,kBAAkB;AAAA,IAAA;AAAA,IAEpB,QAAQ,EAAE,UAAU,UAAA;AAAA,EAAU;AAAA;AAAA,EAIhC,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IAAA;AAAA,EACP;AAAA;AAAA,EAGF,YAAY;AAAA,IACV,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,cAAc;AAAA,IACd,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,EAAA;AAAA,EAEnB,OAAO;AAAA,IACL,UAAU;AAAA,EAAA;AAEd;"}
|