// settings namespace — Settings page (general/password/about, notifications, LDAP, image registry), English copy. // Note: theme & language card titles and ThemeSection copy are owned elsewhere and are not in this dictionary. export default { title: 'Settings', description: 'General settings, alert notifications, LDAP integration, and the default image registry', tabs: { general: 'General', notify: 'Alert Notifications', ldap: 'LDAP Integration', registry: 'Default Image Registry', }, // Action labels shared across sections actions: { cancel: 'Cancel', saving: 'Saving...', testing: 'Testing...', }, password: { title: 'Change Password', oldLabel: 'Current password', oldPlaceholder: 'Enter current password', newLabel: 'New password', newPlaceholder: 'Enter new password (at least 6 characters)', confirmLabel: 'Confirm new password', confirmPlaceholder: 'Re-enter new password', submit: 'Change password', submitting: 'Changing...', errMismatch: 'Passwords do not match', errTooShort: 'New password must be at least 6 characters', errFailed: 'Failed to change password', }, about: { title: 'About LokiStack', versionLabel: 'Version', backendLabel: 'Backend', frontendLabel: 'Frontend', k8sLabel: 'Kubernetes Access', summaryLabel: 'Overview', backendValue: 'Go + Gin + JSON file storage', frontendValue: 'React 19 + TypeScript + Tailwind CSS', k8sValue: 'client-go, direct API Server access', summaryValue: 'Lightweight Loki log management platform', }, notify: { cardTitle: 'Alert Channels — Feishu (Lark)', create: 'New channel', // Empty state is assembled as "prefix + link + suffix" (link points to the Alerts page) emptyBefore: 'No channels yet — create one per alert group (e.g. "App alerts", "Nginx alerts"), then link rules to it on the ', emptyLink: 'Alerts', emptyAfter: ' page', webhookConfigured: 'Webhook configured', webhookMissing: 'Not configured', secretConfigured: ' · Signing secret configured', testAria: 'Test {{name}}', editAria: 'Edit {{name}}', deleteAria: 'Delete {{name}}', editTitle: 'Edit Channel · {{name}}', createTitle: 'New Notification Channel', nameLabel: 'Channel name *', namePlaceholder: 'e.g. App alerts / Nginx alerts', webhookLabel: 'Webhook URL', webhookKeepHint: ' (leave blank to keep current)', webhookSavedPlaceholder: 'Saved — enter a new URL to replace it', signingLabel: 'Signing secret (optional)', signingSavedPlaceholder: 'Saved — leave blank to keep current', signingPlaceholder: 'Feishu (Lark) bot signing secret', enable: 'Enable channel', saveChanges: 'Save changes', createChannel: 'Create channel', deleteTitle: 'Delete Notification Channel', testSent: 'Test card sent to "{{name}}"', errLoad: 'Failed to load notification channels', errNameRequired: 'Channel name is required', errWebhookRequired: 'A Webhook URL is required for a new channel', errSave: 'Save failed', errSend: 'Send failed', errToggle: 'Failed to toggle', errDelete: 'Delete failed', }, ldap: { cardTitle: 'LDAP Integration', headerHint: 'Enables LDAP sign-in and bulk user import', errLoad: 'Failed to load LDAP configuration', disabledHint: 'LDAP is disabled — turn it on and fill in the directory details (server / Bind DN / Base DN). After saving, "Import from LDAP" appears on the Users page.', hostLabel: 'Server address *', portLabel: 'Port', ldapsLabel: 'LDAPS', bindDnLabel: 'Bind DN *', bindPasswordLabel: 'Bind password *', bindPasswordSavedPlaceholder: 'Saved — enter a new password to replace it', bindPasswordPlaceholder: 'Administrator password', baseDnLabel: 'Base DN *', userFilterLabel: 'User filter', usernameLabel: 'Username', nameLabel: 'Full name', emailLabel: 'Email', noEmail: 'No email', testButton: 'Test connection', saveButton: 'Save configuration', errMissingFields: 'Fill in the server address / Bind DN / Base DN first', errTest: 'Test failed', savedToast: 'LDAP configuration saved', }, registry: { cardTitle: 'Image Registry', modeOverseasLabel: 'Official (overseas)', modeOverseasDesc: 'docker.io, for overseas networks', modeCnLabel: 'China mirror', modeCnDesc: 'docker.m.daocloud.io mirror, for networks in China', modeCustomLabel: 'Private registry', modeCustomDesc: 'Your own registry prefix (e.g. Huawei Cloud SWR)', errLoad: 'Failed to load image registry configuration', savedToast: 'Image registry saved. Future deployments and collectors will use the new image addresses.', customPrefixLabel: 'Private registry prefix *', customPrefixHint: 'The platform prepends this prefix to image names, e.g. {{example}}/grafana/loki:3.4.0', imagesLabel: 'Per-service images (repository / tag can be overridden)', tagFollowVersion: 'Follows deployment version', repoAria: '{{label}} image repository', tagAria: '{{label}} image tag', // The images hint is assembled as "prefix + grafana/loki + suffix" imagesHintBefore: 'Repository is the image path (e.g. ', imagesHintAfter: '); when Tag is empty, Loki / Grafana follow the deployment version and Promtail / Fluent Bit use built-in defaults.', previewTitle: 'Effective image preview', saveButton: 'Save image registry', }, themeCard: { title: 'Theme', light: 'Light', dark: 'Dark', system: 'Follow System', auto: 'Scheduled', timezone: 'Timezone', timezoneAria: 'Theme schedule timezone', browser: 'Follow browser (local)', autoHint: 'Light from {{start}}:00 to {{end}}:00 in the selected timezone, dark otherwise; the sun/moon toggle overrides anytime.', }, prefsCard: { title: 'Appearance & Language', }, }