Op verzoek: "Slug: gegenereerde-slug [Aanpassen]" direct onder het titelveld, waarbij de preview meebeweegt met wat je typt in Titel (client-side mirror van de backend Slugifier) zolang de slug niet handmatig is overschreven. Zodra de admin 'm expliciet aanpast en niet leeg laat, stopt het meebewegen met de titel — consistent met hoe OfferingsService.UpdateAsync de slug al behandelde. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
308 lines
11 KiB
JSON
308 lines
11 KiB
JSON
{
|
|
"common": {
|
|
"appName": "SlpModularCms",
|
|
"loading": "Loading…",
|
|
"cancel": "Cancel",
|
|
"save": "Save",
|
|
"retry": "Retry"
|
|
},
|
|
"nav": {
|
|
"dashboard": "Dashboard",
|
|
"users": "Users",
|
|
"cms": "CMS",
|
|
"offerings": "Offerings",
|
|
"profile": "Profile",
|
|
"settings": "Settings",
|
|
"openMenu": "Open navigation",
|
|
"closeMenu": "Close navigation"
|
|
},
|
|
"theme": {
|
|
"switchToLight": "Switch to light theme",
|
|
"switchToDark": "Switch to dark theme"
|
|
},
|
|
"login": {
|
|
"title": "Sign in",
|
|
"subtitle": "Sign in to your SlpModularCms account",
|
|
"email": "Email",
|
|
"emailPlaceholder": "you@example.com",
|
|
"password": "Password",
|
|
"submit": "Sign in",
|
|
"submitting": "Signing in…",
|
|
"errors": {
|
|
"emailRequired": "Email is required",
|
|
"emailInvalid": "Enter a valid email address",
|
|
"passwordRequired": "Password is required",
|
|
"invalidCredentials": "Invalid email or password",
|
|
"generic": "Something went wrong. Please try again."
|
|
}
|
|
},
|
|
"setup": {
|
|
"title": "System Setup",
|
|
"nameLabel": "Full name",
|
|
"emailLabel": "Email",
|
|
"passwordLabel": "Password",
|
|
"confirmPasswordLabel": "Confirm password",
|
|
"languageLabel": "Language preference",
|
|
"submitButton": "Create owner account",
|
|
"successMessage": "Account created. You can now sign in."
|
|
},
|
|
"inviteComplete": {
|
|
"title": "Complete your account",
|
|
"emailLabel": "Email",
|
|
"nameLabel": "Full name",
|
|
"passwordLabel": "Password",
|
|
"confirmPasswordLabel": "Confirm password",
|
|
"submitButton": "Complete setup",
|
|
"loadingMessage": "Validating your invitation…",
|
|
"invalidTokenMessage": "This invitation link has expired or is invalid.",
|
|
"requestNewInvitationLink": "Request a new invitation link",
|
|
"successMessage": "Account setup complete. You can now sign in."
|
|
},
|
|
"dashboard": {
|
|
"title": "Dashboard",
|
|
"welcome": "Welcome back, {{name}}"
|
|
},
|
|
"availability": {
|
|
"title": "System Status",
|
|
"available": "Available",
|
|
"maintenance": "Maintenance",
|
|
"unavailable": "Unavailable",
|
|
"messageAvailable": "System is running normally.",
|
|
"messageMaintenance": "System is undergoing scheduled maintenance.",
|
|
"messageUnavailable": "System is currently unavailable.",
|
|
"errorTitle": "Could not load status",
|
|
"staleLabel": "Last known status",
|
|
"retry": "Retry"
|
|
},
|
|
"userMenu": {
|
|
"language": "Language",
|
|
"logout": "Sign out"
|
|
},
|
|
"users": {
|
|
"title": "Users",
|
|
"inviteButton": "Invite User",
|
|
"table": {
|
|
"name": "Name",
|
|
"email": "Email",
|
|
"role": "Role",
|
|
"status": "Status",
|
|
"createdAt": "Created",
|
|
"actions": "Actions"
|
|
},
|
|
"status": {
|
|
"active": "Active",
|
|
"inactive": "Inactive",
|
|
"pendingInvite": "Pending invite"
|
|
},
|
|
"actions": {
|
|
"copyInviteLink": "Copy invite link",
|
|
"changeRole": "Change role",
|
|
"deactivate": "Deactivate",
|
|
"activate": "Activate",
|
|
"delete": "Delete user",
|
|
"linkCopied": "Invite link copied to clipboard"
|
|
},
|
|
"active": {
|
|
"successDeactivated": "{{name}} has been deactivated.",
|
|
"successActivated": "{{name}} has been activated."
|
|
},
|
|
"delete": {
|
|
"title": "Delete user",
|
|
"description": "Are you sure you want to delete {{name}} ({{email}})? This action cannot be undone.",
|
|
"descriptionPending": "Are you sure you want to delete the pending invitation for {{email}}? This action cannot be undone.",
|
|
"confirmButton": "Delete",
|
|
"success": "{{name}} has been deleted."
|
|
},
|
|
"invite": {
|
|
"title": "Invite User",
|
|
"emailLabel": "Email address",
|
|
"roleLabel": "Role",
|
|
"rolePlaceholder": "Select a role",
|
|
"submitButton": "Send invitation",
|
|
"step2Title": "Invitation created",
|
|
"step2Description": "Share the link below with the invitee.",
|
|
"linkLabel": "Invite link",
|
|
"copyLink": "Copy link",
|
|
"close": "Close"
|
|
},
|
|
"roles": {
|
|
"Owner": "Owner",
|
|
"Administrator": "Administrator",
|
|
"User": "User"
|
|
},
|
|
"ownerAssign": {
|
|
"title": "Assign Owner role",
|
|
"description": "You are about to make <strong>{{name}}</strong> an Owner. Owners have full access to the system, including the ability to manage and remove other Owners. Are you sure?",
|
|
"confirmButton": "Make Owner"
|
|
},
|
|
"selfRoleChange": {
|
|
"title": "Change your own role",
|
|
"description": "You are about to change your own role to <strong>{{role}}</strong>. You will be logged out automatically so the change takes effect immediately.",
|
|
"confirmButton": "Change and log out"
|
|
},
|
|
"errors": {
|
|
"lastOwnerRequired": "At least one Owner must remain. Assign another Owner before changing this role.",
|
|
"insufficientPermissions": "You do not have permission to perform this action."
|
|
}
|
|
},
|
|
"profile": {
|
|
"title": "My Profile",
|
|
"name": "Full name",
|
|
"email": "Email address",
|
|
"role": "Role",
|
|
"save": "Save changes",
|
|
"saving": "Saving…",
|
|
"saveSuccess": "Profile updated successfully",
|
|
"changePassword": "Change password",
|
|
"changePasswordDialog": {
|
|
"title": "Change Password",
|
|
"current": "Current password",
|
|
"new": "New password",
|
|
"confirm": "Confirm new password",
|
|
"submit": "Change password",
|
|
"submitting": "Changing…",
|
|
"success": "Password changed successfully",
|
|
"errorCurrent": "Current password is incorrect"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "System Settings",
|
|
"availability": {
|
|
"title": "System Availability",
|
|
"mode": "Availability mode",
|
|
"reason": "Message (optional)",
|
|
"save": "Update availability",
|
|
"saving": "Updating…",
|
|
"saveSuccess": "Availability updated",
|
|
"modes": {
|
|
"Available": "Available",
|
|
"Maintenance": "Maintenance",
|
|
"NotAvailable": "Unavailable"
|
|
},
|
|
"masterControlledTitle": "Controlled by Master CMS",
|
|
"masterControlled": "This instance has been disabled by the Master CMS. Availability cannot be changed here until the Master releases it.",
|
|
"masterControlledSaveError": "Cannot be changed: the Master CMS controls this status."
|
|
},
|
|
"modules": { "title": "Module Management", "comingSoon": "Coming soon" },
|
|
"systemConfig": { "title": "System Configuration", "comingSoon": "Coming soon" },
|
|
"branding": { "title": "Branding / Theme", "comingSoon": "Coming soon" }
|
|
},
|
|
"cms": {
|
|
"title": "CMS Instances",
|
|
"addButton": "Add CMS",
|
|
"emptyState": {
|
|
"heading": "No CMS instances yet",
|
|
"description": "Add your first CMS instance to get started."
|
|
},
|
|
"table": {
|
|
"name": "Name",
|
|
"url": "URL",
|
|
"status": "Status",
|
|
"lastContact": "Last Contact",
|
|
"disableMessage": "Disable Message",
|
|
"actions": "Actions"
|
|
},
|
|
"status": {
|
|
"Available": "Available",
|
|
"NotAvailable": "Unavailable",
|
|
"Inactive": "Inactive"
|
|
},
|
|
"actions": {
|
|
"setStatus": "Set Status"
|
|
},
|
|
"add": {
|
|
"title": "Add CMS Instance",
|
|
"nameLabel": "Name",
|
|
"urlLabel": "URL",
|
|
"apiKeyLabel": "API Key",
|
|
"submitButton": "Add",
|
|
"successToast": "CMS instance added successfully",
|
|
"errors": {
|
|
"conflict": "A CMS instance with this name or URL already exists."
|
|
}
|
|
},
|
|
"setStatus": {
|
|
"title": "Set Status",
|
|
"statusLabel": "Status",
|
|
"disableMessageLabel": "Disable Message",
|
|
"disableMessagePlaceholder": "Reason for disabling…",
|
|
"submitButton": "Save",
|
|
"successContactedToast": "Status updated — cliënt confirmed",
|
|
"successUnreachableToast": "Status saved — cliënt unreachable"
|
|
}
|
|
},
|
|
"offerings": {
|
|
"title": "Offerings",
|
|
"addButton": "Add Offering",
|
|
"emptyState": {
|
|
"heading": "No offerings yet",
|
|
"description": "Add your first offering to get started."
|
|
},
|
|
"table": {
|
|
"title": "Title",
|
|
"price": "Price",
|
|
"featured": "Featured",
|
|
"actions": "Actions"
|
|
},
|
|
"actions": {
|
|
"drag": "Drag to reorder",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"moveUp": "Move up",
|
|
"moveDown": "Move down",
|
|
"markFeatured": "Mark as featured",
|
|
"unmarkFeatured": "Remove featured"
|
|
},
|
|
"deleteDialog": {
|
|
"title": "Delete offering",
|
|
"message": "Are you sure you want to delete '{{title}}'?",
|
|
"confirmButton": "Delete",
|
|
"cancelButton": "Cancel"
|
|
},
|
|
"form": {
|
|
"createTitle": "New Offering",
|
|
"editTitle": "Edit Offering",
|
|
"titleLabel": "Title",
|
|
"slugLabel": "Slug",
|
|
"slugAutoHint": "Auto-generated from the title",
|
|
"editSlugButton": "Edit",
|
|
"confirmSlugButton": "Confirm slug",
|
|
"cancelSlugEditButton": "Cancel slug edit",
|
|
"descriptionLabel": "Description",
|
|
"priceLabel": "Price",
|
|
"priceNoteLabel": "Price note",
|
|
"featuresLabel": "Features",
|
|
"addFeatureButton": "Add feature",
|
|
"removeFeatureButton": "Remove",
|
|
"ctaLabelLabel": "Button text",
|
|
"featuredLabel": "Featured",
|
|
"submitButton": "Save",
|
|
"successToast": "Offering saved successfully"
|
|
}
|
|
},
|
|
"error": {
|
|
"403": {
|
|
"title": "Access Denied",
|
|
"message": "You don't have permission to view this page."
|
|
},
|
|
"404": {
|
|
"title": "Page Not Found",
|
|
"message": "The page you're looking for doesn't exist."
|
|
},
|
|
"backToDashboard": "Back to Dashboard",
|
|
"unexpected": {
|
|
"title": "Something went wrong",
|
|
"message": "This page could not be displayed. Try again, or go back to the dashboard."
|
|
}
|
|
},
|
|
"errors": {
|
|
"network": "Unable to reach the server. Check your connection and try again.",
|
|
"generic": "Something went wrong. Please try again.",
|
|
"accessDenied": "You do not have permission to access this page.",
|
|
"setupRequired": "System setup required. Please initialize the system first.",
|
|
"invalidInvitationToken": "Invalid or expired invitation token.",
|
|
"featureUnavailableTitle": "Not available on this instance",
|
|
"featureUnavailable": "This feature is only available on a Master CMS instance."
|
|
}
|
|
}
|