Files
Nexumi/apps/webui/src/messages/en.json
TheOnlyMace 03bb406d82 Enhance AutoMod functionality with default word list and improved filtering
- Introduced a default blocked words list for the WORD_FILTER, including common profanity in both English and German.
- Updated the word matching logic to utilize Unicode word boundaries, reducing false positives.
- Implemented a button in the WebUI to load the default word list, enhancing user experience.
- Added functionality to seed default word filters only when necessary, preventing overwriting user-defined lists.
- Improved localization for new features related to the word list in both English and German.
- Documented changes in phase tracking to reflect the new AutoMod enhancements.
2026-07-25 17:42:06 +02:00

1272 lines
49 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Save",
"saving": "Saving…",
"discard": "Discard",
"cancel": "Cancel",
"confirm": "Confirm",
"add": "Add",
"remove": "Remove",
"loading": "Loading…",
"yes": "Yes",
"no": "No",
"enabled": "Enabled",
"disabled": "Disabled",
"unsavedChanges": "You have unsaved changes",
"saveSuccess": "Changes saved",
"saveError": "Could not save changes",
"networkError": "Network error",
"back": "Back",
"comingSoon": "Coming soon",
"close": "Close",
"optional": "Optional",
"searchSelect": "Search and select…",
"noResults": "No results",
"clearSelection": "Clear selection"
},
"embedBuilder": {
"title": "Title",
"titlePlaceholder": "Welcome!",
"description": "Description",
"descriptionPlaceholder": "Glad you're here, {user}.",
"color": "Color",
"preview": "Preview",
"previewTitlePlaceholder": "Embed title",
"previewDescriptionPlaceholder": "Embed description appears here…",
"clear": "Clear embed",
"clearHint": "Empty fields do not save an embed.",
"advancedToggle": "Advanced embed options (author, images, footer)",
"authorSection": "Author (header)",
"authorNamePlaceholder": "Author name, e.g. {server}",
"authorIconPlaceholder": "Author icon URL or {server.icon}",
"authorUrlPlaceholder": "Author link (https://…)",
"mediaSection": "Media",
"thumbnailPlaceholder": "Thumbnail URL or {user.avatar}",
"imagePlaceholder": "Large image / banner URL (https://…)",
"titleUrlPlaceholder": "Title link (https://…)",
"footerSection": "Footer",
"footerTextPlaceholder": "Footer text, e.g. Nexumi",
"footerIconPlaceholder": "Footer icon URL or {server.icon}",
"timestamp": "Show timestamp",
"timestampPreview": "just now",
"mediaHint": "Image URLs must start with http(s). For Welcome you can use {user.avatar} and {server.icon}."
},
"componentsV2Builder": {
"blocks": "Layout blocks",
"addBlock": "Add block…",
"addNestedBlock": "Add nested block…",
"empty": "No blocks yet — add a container or text block to get started.",
"preview": "Preview",
"previewEmptyText": "Text content…",
"previewInvalidUrl": "Invalid image URL",
"clear": "Clear layout",
"clearHint": "Invalid blocks are dropped when saving.",
"actionsTitle": "Button & select actions",
"textPlaceholder": "Markdown-style text (Discord formatting)",
"divider": "Show divider line",
"spacing": "Spacing",
"spacingSmall": "Small",
"spacingLarge": "Large",
"accentColor": "Accent color (decimal)",
"spoiler": "Spoiler container",
"sectionText": "Section text",
"accessoryType": "Accessory",
"accessoryThumbnail": "Thumbnail",
"accessoryButton": "Button",
"urlPlaceholder": "https://… or {user.avatar}",
"addMediaItem": "Add image",
"addButton": "Add button",
"addSelect": "Add select…",
"buttonLabel": "Button label",
"linkUrl": "Link URL (https://…)",
"actionId": "Action ID",
"centralActionId": "Central action ID (optional)",
"optionLabel": "Option label",
"optionValue": "Option value",
"optionActionId": "Per-option action ID (optional)",
"addOption": "Add option",
"removeOption": "Remove option",
"selectPlaceholder": "Select placeholder",
"replyContent": "Reply message",
"roleAction": "Target role",
"defaultButtonLabel": "Button",
"blockTypes": {
"container": "Container",
"text_display": "Text",
"separator": "Separator",
"section": "Section",
"media_gallery": "Media gallery",
"action_row": "Action row",
"button": "Button"
},
"buttonStyles": {
"Primary": "Primary",
"Secondary": "Secondary",
"Success": "Success",
"Danger": "Danger",
"Link": "Link"
},
"selectTypes": {
"string_select": "String select",
"user_select": "User select",
"role_select": "Role select",
"channel_select": "Channel select",
"mentionable_select": "Mentionable select"
},
"actionTypes": {
"EPHEMERAL_REPLY": "Ephemeral reply",
"PUBLIC_REPLY": "Public reply",
"ASSIGN_ROLE": "Assign role",
"REMOVE_ROLE": "Remove role",
"TOGGLE_ROLE": "Toggle role",
"ASSIGN_SELECTED_ROLES": "Assign selected roles",
"NONE": "No action"
}
},
"placeholders": {
"toggle": "Show available placeholders",
"hint": "Tap copy to insert. Only the placeholders listed here work in this field.",
"copy": "Copy placeholder",
"copied": "Placeholder copied",
"copyFailed": "Could not copy",
"desc": {
"userMention": "Mention of the member",
"userName": "Member display name",
"userTag": "Member username/tag",
"userId": "Member Discord ID",
"userDisplayName": "Display name (no mention)",
"userTagPlain": "Username without mention",
"username": "Member display name",
"server": "Server name",
"memberCount": "Current member count",
"args": "Arguments after the tag command",
"random": "Random choice from options (separated by |)",
"age": "Age in years (only if birth year is set)",
"level": "Reached level",
"count": "Current stats value",
"feedTitle": "Feed item title",
"feedUrl": "Feed item URL",
"channelBracket": "Channel mention (dashboard syntax — replace the ID)",
"channelNative": "Channel mention (Discord syntax — replace the ID)",
"userAvatar": "Member avatar URL (for thumbnail/icons)",
"serverIcon": "Server icon URL (for author/footer)"
}
},
"nav": {
"dashboard": "Dashboard",
"overview": "Overview",
"settings": "Settings",
"modules": "Modules",
"access": "Dashboard access",
"commands": "Commands"
},
"moduleGroups": {
"moderation": "Moderation",
"engagement": "Engagement",
"utility": "Utility",
"community": "Community",
"integrations": "Integrations"
},
"modules": {
"moderation": {
"label": "Moderation",
"description": "Bans, warns, timeouts and the case system"
},
"automod": {
"label": "Auto-Moderation",
"description": "Spam, raid and nuke protection"
},
"logging": {
"label": "Logging",
"description": "Server event log channels"
},
"welcome": {
"label": "Welcome & Leave",
"description": "Join and leave messages, autoroles"
},
"verification": {
"label": "Verification",
"description": "Button and captcha verification"
},
"leveling": {
"label": "Leveling & XP",
"description": "Text and voice XP, level rewards"
},
"economy": {
"label": "Economy",
"description": "Currency, shop and games"
},
"fun": {
"label": "Fun & Games",
"description": "Mini games and media commands"
},
"giveaways": {
"label": "Giveaways",
"description": "Button-based giveaways"
},
"tickets": {
"label": "Tickets",
"description": "Support ticket panels and transcripts"
},
"selfroles": {
"label": "Self Roles",
"description": "Reaction, button and dropdown role panels"
},
"tags": {
"label": "Tags",
"description": "Custom commands and auto-responders"
},
"starboard": {
"label": "Starboard",
"description": "Highlight popular messages"
},
"suggestions": {
"label": "Suggestions",
"description": "Community suggestion voting"
},
"birthdays": {
"label": "Birthdays",
"description": "Birthday announcements and roles"
},
"tempvoice": {
"label": "Temp Voice",
"description": "Join-to-create voice channels"
},
"stats": {
"label": "Server Stats",
"description": "Auto-updating stat channels and invites"
},
"feeds": {
"label": "Social Feeds",
"description": "Twitch, YouTube, RSS and Reddit notifications"
},
"scheduler": {
"label": "Scheduler",
"description": "Scheduled and recurring announcements"
},
"guildbackup": {
"label": "Backups",
"description": "Server backup and restore"
},
"messages": {
"label": "Messages",
"description": "Send embeds or Components V2 layouts to a channel"
}
},
"login": {
"title": "Nexumi",
"subtitle": "Sign in with Discord to manage your servers.",
"cta": "Login with Discord",
"footer": "By logging in you agree to the Nexumi Terms of Service and Privacy Policy.",
"errors": {
"access_denied": "You cancelled the Discord login.",
"invalid_request": "Invalid login request. Please try again.",
"invalid_state": "Your login session expired. Please try again.",
"oauth_failed": "Discord login failed. Please try again."
}
},
"dashboard": {
"guildList": {
"title": "Your servers",
"subtitle": "Select a server to manage, or invite Nexumi to a new one.",
"manage": "Manage",
"invite": "Invite",
"botMissing": "Not installed",
"empty": "No servers found. You need the Manage Server permission on a Discord server to appear here."
},
"ownerBypass": {
"title": "Owner access",
"description": "You are editing this server via the Owner panel without Discord Manage Server permission.",
"backToOwner": "Back to guild management"
},
"overview": {
"title": "Overview",
"moduleStatusTitle": "Module status",
"moduleStatusEmpty": "No module data yet.",
"recentAuditTitle": "Recent dashboard activity",
"auditEmpty": "No dashboard changes yet.",
"auditPath": "Path",
"viewAllModules": "Manage modules",
"activityTitle": "Activity (last 7 days)",
"activityMessages": "Messages",
"activityVoiceMinutes": "Voice minutes",
"activityActiveUsers": "Active members",
"activityHint": "Aggregated from the leveling and stats modules' activity tracking."
}
},
"settings": {
"general": {
"title": "General settings",
"description": "Language, timezone and the moderation module toggle for this server.",
"localeLabel": "Dashboard & bot language",
"localeHint": "Used for bot replies and dashboard defaults on this server.",
"timezoneLabel": "Timezone",
"timezoneHint": "IANA timezone identifier, e.g. Europe/Berlin or America/New_York.",
"moderationLabel": "Moderation module",
"moderationHint": "Enable moderation commands (ban, kick, warn, purge, …) on this server.",
"snipeLabel": "Snipe / Editsnipe",
"snipeHint": "Temporarily stores deleted/edited messages (off by default for privacy)."
}
},
"modulesPage": {
"title": "Modules",
"description": "Enable or disable individual Nexumi modules for this server.",
"configure": "Configure"
},
"access": {
"title": "Dashboard access",
"description": "Grant additional Discord roles access to specific dashboard sections, in addition to server administrators.",
"roleIdLabel": "Role ID",
"roleIdPlaceholder": "e.g. 123456789012345678",
"roleIdHint": "Right-click a role in Discord with Developer Mode enabled and choose \"Copy Role ID\".",
"modulesLabel": "Allowed modules",
"allModulesOption": "All modules",
"specificModulesOption": "Specific modules",
"addRule": "Add rule",
"removeRule": "Remove",
"noRules": "No additional access rules configured. Only server administrators can access the dashboard.",
"invalidRoleId": "Enter a valid Discord role ID (1720 digits)."
},
"modulePlaceholder": {
"title": "{module} settings",
"message": "Module settings arrive in a later phase.",
"backToModules": "Back to modules"
},
"modulePages": {
"moderation": {
"title": "Moderation",
"description": "Enable the moderation module and configure automatic escalation rules.",
"enabledLabel": "Moderation module enabled",
"enabledHint": "Enables ban, kick, warn, purge and the case system on this server.",
"escalationsTitle": "Escalation rules",
"escalationsDescription": "Automatic penalties once a member reaches a certain number of warnings.",
"noEscalations": "No escalation rules configured.",
"addEscalation": "Add rule",
"warnCount": "Warning count",
"action": "Action",
"actions": {
"TIMEOUT": "Timeout",
"KICK": "Kick",
"BAN": "Ban"
},
"durationMs": "Duration (ms)",
"reason": "Reason",
"reasonPlaceholder": "Optional default reason",
"casesTitle": "Cases",
"casesDescription": "View moderation cases, edit the reason, or soft-delete.",
"searchPlaceholder": "Search by user/moderator ID or reason",
"actionPlaceholder": "Filter by action, e.g. BAN",
"casesEmpty": "No cases found.",
"target": "Target",
"moderator": "Moderator",
"createdAt": "Created at",
"noReason": "No reason provided",
"editReason": "Edit reason",
"saveReason": "Save",
"deleteCase": "Delete case",
"confirmDeleteCase": "Really delete this case?",
"warningsTitle": "Warnings",
"warningsDescription": "Recent warnings with short numbers (#). Remove deletes the warning entry.",
"warningsEmpty": "No warnings found.",
"warningsSearchUser": "Filter by user ID",
"removeWarning": "Remove warning",
"confirmRemoveWarning": "Really remove this warning?"
},
"automod": {
"title": "Auto-Moderation",
"description": "Filter rules, anti-raid and anti-nuke for this server.",
"enabledLabel": "Auto-moderation enabled",
"enabledHint": "Master switch: only enabled rules below apply when this is on.",
"rulesTitle": "Filter rules",
"rulesDescription": "Per rule: action, thresholds, word/link lists and exceptions.",
"ruleAction": "Action",
"timeoutMinutes": "Timeout (minutes)",
"actions": {
"DELETE": "Delete message",
"WARN": "Warn",
"TIMEOUT": "Timeout",
"KICK": "Kick",
"BAN": "Ban"
},
"thresholds": {
"maxMessages": "Max messages",
"windowSeconds": "Time window (seconds)",
"maxMentions": "Max mentions",
"capsPercent": "Caps ratio (%)",
"minLength": "Min message length",
"maxEmojis": "Max emojis",
"duplicateCount": "Duplicate count"
},
"linkWhitelist": "Link whitelist (hosts)",
"linkBlacklist": "Link blacklist (hosts)",
"addHost": "Add host",
"wordList": "Word list",
"loadDefaultWords": "Load default list (DE/EN)",
"regexList": "Regex patterns",
"wordPlaceholder": "banned word",
"addWord": "Add word",
"addRegex": "Add regex",
"exceptionRoles": "Exception roles",
"exceptionChannels": "Exception channels",
"rules": {
"SPAM": {
"title": "Spam",
"description": "Too many messages in a short time."
},
"MASS_MENTION": {
"title": "Mass mentions",
"description": "Too many @-mentions in one message."
},
"CAPS": {
"title": "Caps",
"description": "Mostly uppercase text."
},
"INVITE_LINK": {
"title": "Invite links",
"description": "Block Discord invite links."
},
"EXTERNAL_LINK": {
"title": "External links",
"description": "Check links against whitelist/blacklist."
},
"WORD_FILTER": {
"title": "Word filter",
"description": "Words and regex patterns."
},
"DUPLICATE": {
"title": "Duplicates",
"description": "Repeated identical messages."
},
"EMOJI_SPAM": {
"title": "Emoji spam",
"description": "Too many emojis in one message."
},
"ZALGO": {
"title": "Zalgo",
"description": "Block zalgo/combining characters."
},
"PHISHING": {
"title": "Phishing",
"description": "Known scam/phishing domains."
}
},
"antiRaidTitle": "Anti-Raid",
"antiRaidDescription": "Detects unusually fast join waves.",
"antiRaidEnabled": "Anti-raid enabled",
"antiRaidJoinThreshold": "Join threshold",
"antiRaidWindowSeconds": "Time window (seconds)",
"antiRaidAction": "Response",
"antiRaidActions": {
"LOCKDOWN": "Lockdown (lock channels)",
"VERIFY": "Verify (unverified role)"
},
"antiRaidActionHint": "Verify applies the unverified role from the Verification module and continues for new joins until the raid status is cleared.",
"antiNukeTitle": "Anti-Nuke",
"antiNukeDescription": "Protects against mass bans or mass channel deletions by compromised accounts.",
"antiNukeEnabled": "Anti-nuke enabled",
"antiNukeBanThreshold": "Ban threshold",
"antiNukeChannelThreshold": "Channel deletion threshold",
"antiNukeWindowSeconds": "Time window (seconds)",
"lockdownActive": "Raid response active",
"lockdownActiveHint": "Lockdown: unlock channels when turned off. Verify: only clears the status flag."
},
"logging": {
"title": "Logging",
"description": "Log channels, ignore lists and the event-to-channel mapping.",
"enabledLabel": "Logging enabled",
"ignoreBotsLabel": "Ignore bot messages/actions",
"ignoredChannelsLabel": "Ignored channels",
"ignoredRolesLabel": "Ignored roles",
"idsPlaceholder": "Comma-separated IDs, e.g. 123456789012345678, 234567890123456789",
"idsHint": "Enter Discord IDs, comma-separated. Enable Developer Mode to copy IDs.",
"retentionLabel": "Retention (days)",
"retentionHint": "Delete cases and dashboard audit older than X days. 0 = keep forever.",
"channelsTitle": "Event-channel mapping",
"channelsDescription": "Pick a log channel and assign one or more event types to it.",
"channelsEmpty": "No event-channel mappings configured.",
"channelsHint": "Each event type can only map to one channel. Selecting it here removes it from other rows.",
"eventType": "Event type",
"eventTypesLabel": "Event types",
"eventTypesPlaceholder": "Search event types…",
"channelId": "Log channel",
"addMapping": "Add mapping",
"errors": {
"duplicateEventType": "An event type is assigned more than once. Please check your selection."
},
"eventTypes": {
"MESSAGE_EDIT": "Message edited",
"MESSAGE_DELETE": "Message deleted",
"MESSAGE_BULK_DELETE": "Messages bulk deleted",
"MEMBER_JOIN": "Member joined",
"MEMBER_LEAVE": "Member left",
"MEMBER_BAN": "Member banned",
"MEMBER_UNBAN": "Member unbanned",
"MEMBER_UPDATE": "Member updated",
"CHANNEL_CREATE": "Channel created",
"CHANNEL_DELETE": "Channel deleted",
"CHANNEL_UPDATE": "Channel updated",
"VOICE_JOIN": "Voice joined",
"VOICE_LEAVE": "Voice left",
"VOICE_MOVE": "Voice moved",
"INVITE_CREATE": "Invite created",
"EMOJI_CREATE": "Emoji created",
"EMOJI_UPDATE": "Emoji updated",
"EMOJI_DELETE": "Emoji deleted",
"STICKER_CREATE": "Sticker created",
"STICKER_UPDATE": "Sticker updated",
"STICKER_DELETE": "Sticker deleted",
"THREAD_CREATE": "Thread created",
"THREAD_UPDATE": "Thread updated",
"THREAD_DELETE": "Thread deleted",
"GUILD_UPDATE": "Server updated",
"MOD_ACTION": "Moderation action",
"VERIFICATION_FAIL": "Verification failed"
}
},
"welcome": {
"welcomeTitle": "Welcome",
"welcomeDescription": "Message, channel and autoroles for new members.",
"welcomeEnabledLabel": "Welcome message enabled",
"welcomeChannelId": "Welcome channel ID",
"welcomeType": "Message type",
"type": {
"TEXT": "Text",
"EMBED": "Embed",
"IMAGE": "Image card",
"COMPONENTS_V2": "Components V2"
},
"welcomeContent": "Message content",
"contentPlaceholder": "Welcome {user} to {server}!",
"placeholdersHint": "Available placeholders: see the list below.",
"welcomeEmbed": "Embed",
"welcomeComponents": "Components V2 layout",
"welcomeDmEnabled": "Welcome DM enabled",
"dmContentPlaceholder": "Optional private message to new members",
"userAutoroles": "Autoroles for users",
"botAutoroles": "Autoroles for bots",
"imageTitle": "Image card: title",
"imageSubtitle": "Image card: subtitle",
"leaveTitle": "Leave",
"leaveDescription": "Message and channel when a member leaves the server.",
"leaveEnabledLabel": "Leave message enabled",
"leaveChannelId": "Leave channel ID",
"leaveType": "Message type",
"leaveTypes": {
"TEXT": "Text",
"EMBED": "Embed",
"COMPONENTS_V2": "Components V2"
},
"leaveContent": "Message content",
"leaveContentPlaceholder": "Goodbye {user.tag} — see you around on {server}!",
"leaveEmbed": "Embed",
"leaveComponents": "Components V2 layout",
"leaveEmbedTitlePlaceholder": "Goodbye",
"leaveEmbedDescriptionPlaceholder": "{user.tag} left {server}."
},
"verification": {
"title": "Verification",
"description": "Mode, roles and requirements. Saving (enabled, with channel and role) posts or updates the verification panel in the selected channel.",
"enabledLabel": "Verification enabled",
"mode": "Mode",
"modes": {
"BUTTON": "Button",
"CAPTCHA": "Captcha (WebUI)"
},
"captchaProvider": "Captcha provider",
"captchaProviders": {
"MATH": "Math challenge",
"RECAPTCHA_V2": "Google reCAPTCHA v2",
"RECAPTCHA_V3": "Google reCAPTCHA v3",
"HCAPTCHA": "hCaptcha",
"TURNSTILE": "Cloudflare Turnstile"
},
"failAction": "Action on failure",
"failActions": {
"KICK": "Kick",
"BAN": "Ban",
"NONE": "None"
},
"channelId": "Verification channel",
"verifiedRoleId": "Role after verification",
"unverifiedRoleId": "Role before verification",
"minAccountAgeDays": "Minimum account age (days)",
"altTitle": "Alt-account detection",
"altDescription": "Flags likely alternate accounts via shared captcha IP (salted hash) and invite clustering. No browser fingerprinting.",
"altDetectionEnabled": "Enable alt detection",
"altBlockOnMatch": "Block on match",
"altBlockOnMatchHint": "Uses the configured fail action (Kick/Ban/None). Off = flag only, still verify.",
"altIpWindowDays": "IP window (days)",
"altInviteWindowHours": "Invite cluster window (hours)",
"altMaxAccountsPerInvite": "Max accounts per invite (cluster)",
"errors": {
"panelTimeout": "The bot did not confirm the verification panel in time. It may still be posting — check the channel and bot permissions, then save again.",
"panelNotPosted": "The verification panel could not be created in the Discord channel. Check bot permissions (View Channel, Send Messages, Embed Links)."
}
},
"leveling": {
"title": "Leveling & XP",
"description": "Text and voice XP rates, cooldowns and no-XP lists.",
"enabledLabel": "Leveling enabled",
"textXpMin": "Text XP (minimum)",
"textXpMax": "Text XP (maximum)",
"textCooldownSeconds": "Text XP cooldown (seconds)",
"voiceXpPerMinute": "Voice XP per minute",
"noXpChannels": "No-XP channels",
"noXpRoles": "No-XP roles",
"roleMultipliers": "Role multipliers",
"channelMultipliers": "Channel multipliers",
"multiplierHint": "Pick a role or channel and set a multiplier (e.g. 1.5).",
"multiplierValue": "Multiplier",
"addMultiplier": "Add multiplier",
"errors": {
"multiplierMissingId": "Every multiplier needs a role or channel.",
"multiplierInvalid": "Multipliers must be a positive number.",
"multiplierDuplicate": "Each role or channel may only appear once.",
"rewardMissingRole": "Every reward needs a role.",
"rewardInvalidLevel": "Level must be a whole number of at least 1.",
"rewardDuplicateLevel": "Each level may only have one reward."
},
"levelUpTitle": "Level-up message",
"levelUpMode": "Mode",
"modes": {
"CHANNEL": "Channel",
"DM": "Direct message",
"OFF": "Off"
},
"levelUpChannelId": "Level-up channel",
"levelUpMessage": "Message content",
"rewardsTitle": "Role rewards",
"rewardsDescription": "Choose which role is granted at which level.",
"rewardLevel": "Level",
"rewardRole": "Role",
"addReward": "Add reward",
"stackRewards": "Stack role rewards",
"stackRewardsHint": "On = keep all unlocked reward roles. Off = only the role for the current level.",
"rankCardTitle": "Rank card",
"cardAccentColor": "Accent color",
"cardBackgroundColor": "Background color"
},
"economy": {
"title": "Economy",
"description": "Currency and amounts for the income commands.",
"enabledLabel": "Economy enabled",
"currencyName": "Currency name",
"currencySymbol": "Currency symbol",
"amountsTitle": "Amounts",
"dailyAmount": "Daily reward",
"weeklyAmount": "Weekly reward",
"workMin": "Work: minimum",
"workMax": "Work: maximum",
"workCooldownSeconds": "Work cooldown (seconds)",
"startingBalance": "Starting balance"
},
"fun": {
"title": "Fun & Games",
"description": "Mini games and media commands for this server.",
"enabledLabel": "Fun module enabled",
"enabledHint": "Enables mini games like trivia, tic-tac-toe and 8-ball.",
"mediaEnabledLabel": "Media commands enabled",
"mediaEnabledHint": "Enables API-based commands like /cat and /dog."
},
"tickets": {
"title": "Tickets",
"description": "Configure how support tickets are created. Saving (enabled, with panel channel and at least one category) posts or updates the ticket panel in the selected channel.",
"enabledLabel": "Tickets module enabled",
"mode": "Ticket mode",
"modes": {
"CHANNEL": "Private channel",
"THREAD": "Private thread"
},
"panelChannelId": "Panel channel",
"panelChannelHint": "Channel where the ticket panel with category buttons is posted.",
"categoryId": "Discord category for ticket channels",
"logChannelId": "Log channel",
"inactivityHours": "Auto-close after inactivity (hours)",
"transcriptDm": "DM transcript to ticket creator",
"transcriptDmHint": "Sends a transcript to the user via DM once their ticket is closed.",
"ratingEnabled": "Ask for a rating after closing",
"categoriesTitle": "Ticket categories",
"categoriesDescription": "Categories members can choose from when opening a ticket. Changes update an existing panel.",
"categoriesEmpty": "No ticket categories configured yet.",
"categoryName": "Name",
"categoryEmoji": "Emoji",
"categoryDescription": "Description",
"supportRoleIds": "Support roles",
"idsPlaceholder": "One or more IDs, comma-separated",
"addCategory": "Add category",
"nameRequired": "A name is required.",
"openList": {
"title": "Open tickets",
"description": "Active tickets (open or claimed). Close, claim, or set priority — changes are applied in Discord.",
"refresh": "Refresh",
"empty": "No open tickets.",
"noSubject": "No subject",
"noCategory": "No category",
"categoryLine": "Category: {category}",
"claimedBy": "Claimed by {user}",
"openInDiscord": "Open in Discord",
"claim": "Claim",
"close": "Close",
"closed": "Ticket closed.",
"closeReasonPlaceholder": "Optional close reason…",
"status": {
"OPEN": "Open",
"CLAIMED": "Claimed"
},
"priority": {
"LOW": "Low",
"NORMAL": "Normal",
"HIGH": "High",
"URGENT": "Urgent"
}
},
"errors": {
"panelTimeout": "The bot did not confirm the ticket panel in time. It may still be posting — check the channel and bot permissions, then save again.",
"panelNotPosted": "The ticket panel could not be created in the Discord channel. Check bot permissions (View Channel, Send Messages, Embed Links).",
"noCategories": "Create at least one ticket category before the panel can be posted."
}
},
"giveaways": {
"formIncomplete": "Please fill in the channel, prize and end date.",
"created": "Giveaway created.",
"confirmDelete": "Really delete this giveaway?",
"createTitle": "Start a giveaway",
"createDescription": "Posts a giveaway message in Discord and picks winners automatically when it ends.",
"channelId": "Channel ID",
"prize": "Prize",
"winnerCount": "Winner count",
"endsAt": "Ends at",
"requiredRoleId": "Required role ID",
"requiredLevel": "Required level",
"requiredMemberDays": "Required membership (days)",
"create": "Start giveaway",
"listTitle": "Giveaways",
"listDescription": "Active and ended giveaways for this server.",
"empty": "No giveaways yet.",
"entrants": "Entrants",
"statusEnded": "Ended",
"statusPaused": "Paused",
"statusActive": "Active",
"endedAt": "Ended at",
"winners": "Winners",
"pause": "Pause",
"unpause": "Resume",
"end": "End now"
},
"selfroles": {
"formIncomplete": "Please fill in the channel, title and at least one role.",
"confirmDelete": "Really delete this panel?",
"createTitle": "Create a self-role panel",
"createDescription": "Posts a message in Discord that members can use to assign themselves roles.",
"channelId": "Channel ID",
"panelTitle": "Panel title",
"mode": "Mode",
"modes": {
"BUTTONS": "Buttons",
"DROPDOWN": "Dropdown",
"REACTIONS": "Reactions"
},
"behavior": "Behavior",
"behaviors": {
"NORMAL": "Normal (toggle freely)",
"UNIQUE": "Unique (only one role from this panel)",
"VERIFY": "Verification role",
"TEMPORARY": "Temporary (expires after a while)"
},
"description": "Description",
"roles": "Roles",
"roleSelect": "Role",
"roleLabel": "Label",
"roleLabelPlaceholder": "Button display name",
"roleEmoji": "Emoji",
"roleDescription": "Description (optional)",
"roleDescriptionPlaceholder": "Short text for dropdown",
"addRole": "Add role",
"emojiPlaceholder": "Choose emoji…",
"emojiSearch": "Find the perfect emoji",
"emojiSearchResults": "Search results",
"emojiServer": "Server",
"emojiServerEmpty": "No server emojis available.",
"emojiUnicode": "Standard",
"emojiSkinTone": "Skin tone",
"emojiHoverHint": "Pick an emoji",
"emojiCategories": {
"people": "Smileys & People",
"nature": "Animals & Nature",
"foods": "Food & Drink",
"activity": "Activities",
"places": "Travel & Places",
"objects": "Objects",
"symbols": "Symbols",
"flags": "Flags"
},
"emojiRequired": "Reaction mode requires an emoji for every role.",
"tooManyRoles": "Maximum 25 roles per panel.",
"rolesBuilderHint": "Pick a role, label, and optional emoji/description. Reaction mode requires an emoji.",
"create": "Create panel",
"listTitle": "Self-role panels",
"listDescription": "Existing panels for this server.",
"empty": "No self-role panels yet."
},
"tags": {
"nameRequired": "A name is required.",
"confirmDelete": "Really delete this tag?",
"createTitle": "Create a tag",
"createDescription": "Custom commands and auto-responders triggered by name or keyword.",
"name": "Name",
"responseType": "Response type",
"responseTypes": {
"TEXT": "Text",
"EMBED": "Embed",
"COMPONENTS_V2": "Components V2"
},
"triggerWord": "Trigger word (optional)",
"cooldownSeconds": "Cooldown (seconds)",
"cooldownHint": "Minimum time between auto-replies in the same channel. 0 = no cooldown. Default: 15.",
"content": "Content",
"embed": "Embed",
"components": "Components V2 layout",
"embedRequired": "Embed tags need a title or description.",
"componentsRequired": "Components V2 tags need at least one block.",
"allowedRoleIds": "Allowed roles",
"allowedChannelIds": "Allowed channel IDs",
"idsPlaceholder": "One or more IDs, comma-separated",
"create": "Create tag",
"listTitle": "Tags",
"listDescription": "Existing tags for this server.",
"empty": "No tags yet."
},
"starboard": {
"title": "Starboard",
"description": "Highlight popular messages in a dedicated channel.",
"enabledLabel": "Starboard enabled",
"enabledHint": "A target channel is required before enabling starboard.",
"channelId": "Starboard channel",
"emoji": "Trigger emoji",
"emojiHint": "Unicode (⭐) or custom emoji as <:name:id> / <a:name:id>.",
"threshold": "Star threshold",
"allowSelfStar": "Allow starring your own messages",
"ignoredChannelIds": "Ignored channels",
"nsfwHint": "NSFW channels are always excluded.",
"errors": {
"channelRequired": "Pick a starboard channel before enabling.",
"thresholdRange": "Threshold must be between 1 and 100."
}
},
"suggestions": {
"configTitle": "Suggestions settings",
"configDescription": "Configure where suggestions are posted and moved once reviewed.",
"enabledLabel": "Suggestions enabled",
"openChannelId": "Open channel ID",
"approvedChannelId": "Approved channel ID",
"deniedChannelId": "Denied channel ID",
"createThread": "Create a discussion thread",
"createThreadHint": "Automatically opens a thread under every new suggestion.",
"listTitle": "Suggestions",
"listDescription": "Review and moderate suggestions submitted by members.",
"statusAll": "All statuses",
"status": {
"OPEN": "Open",
"APPROVED": "Approved",
"DENIED": "Denied",
"CONSIDERED": "Considered",
"IMPLEMENTED": "Implemented"
},
"empty": "No suggestions found.",
"staffReason": "Staff reason",
"reasonPlaceholder": "Optional reason shown to the author",
"approve": "Approve",
"deny": "Deny",
"consider": "Consider",
"implement": "Implement"
},
"birthdays": {
"title": "Birthdays",
"description": "Announce member birthdays and optionally assign a birthday role.",
"enabledLabel": "Birthdays enabled",
"channelId": "Announcement channel ID",
"roleId": "Birthday role ID",
"timezone": "Timezone",
"message": "Announcement message",
"messagePlaceholder": "Optional custom message, e.g. Happy birthday {user}!"
},
"tempvoice": {
"title": "Temp Voice",
"description": "Members joining the hub channel get their own temporary voice channel.",
"enabledLabel": "Temp voice enabled",
"hubChannelId": "Hub channel ID",
"categoryId": "Category ID for created channels",
"defaultName": "Default channel name",
"defaultLimit": "Default user limit",
"defaultLimitHint": "Set to 0 for no limit."
},
"stats": {
"title": "Server Stats",
"description": "Voice channels with live values. After saving (module enabled) names update immediately, then every 10 minutes. The bot needs Manage Channels.",
"enabledLabel": "Server stats enabled",
"membersChannelId": "Members channel",
"membersTemplate": "Members template",
"onlineChannelId": "Online channel",
"onlineTemplate": "Online template",
"boostsChannelId": "Boosts channel",
"boostsTemplate": "Boosts template",
"templateHint": "Use {count} as a placeholder for the live value."
},
"feeds": {
"title": "Social Feeds",
"description": "Post notifications when new content is published on Twitch, YouTube, RSS or Reddit.",
"empty": "No feeds configured yet.",
"addFeed": "Add feed",
"type": "Feed type",
"sourceId": "Source ID",
"sourceIdPlaceholder": "Channel name, subreddit or feed URL",
"channelId": "Discord channel ID",
"rolePingId": "Role to ping",
"template": "Message template",
"templatePlaceholder": "Optional custom message template",
"formIncomplete": "Please fill in the source and channel ID.",
"confirmDelete": "Really delete this feed?"
},
"scheduler": {
"createTitle": "Schedule a message",
"createDescription": "Send a message once at a specific time or repeatedly on a cron schedule.",
"channelId": "Channel ID",
"rolePingId": "Role to ping",
"cron": "Cron expression",
"runAt": "Run at",
"timingMode": "Schedule",
"timingModes": {
"once": "One-time",
"cron": "Recurring (cron)"
},
"content": "Message content",
"embed": "Embed (optional)",
"components": "Components V2 layout",
"contentMode": "Message format",
"contentModes": {
"text": "Text",
"embed": "Embed",
"components_v2": "Components V2"
},
"componentsPreview": "(Components V2)",
"cronHint": "One-time time or cron recurrence — evaluated in the server timezone under General Settings. Choose text, embed, or Components V2 (mutually exclusive).",
"create": "Schedule message",
"created": "Message scheduled.",
"formIncomplete": "Please fill channel, choose a message format with content, and either a cron expression or a date/time.",
"errors": {
"invalidCron": "Invalid cron expression (56 fields, e.g. 0 9 * * *).",
"invalidWhen": "Invalid date/time.",
"missingScheduleTime": "Provide a cron expression or a date/time."
},
"confirmDelete": "Really delete this schedule?",
"listTitle": "Scheduled messages",
"listDescription": "Upcoming and recurring scheduled messages.",
"empty": "No scheduled messages yet.",
"noContent": "(embed only)"
},
"guildbackup": {
"createTitle": "Create a backup",
"createDescription": "Snapshots roles, channels and server settings for later restore.",
"name": "Backup name",
"namePlaceholder": "e.g. Before season 3 update",
"create": "Create backup",
"created": "Backup created.",
"nameRequired": "A name is required.",
"listTitle": "Backups",
"listDescription": "Existing backups for this server.",
"empty": "No backups yet.",
"info": "Info",
"infoUnavailable": "Backup details are unavailable.",
"infoGuildName": "Server name",
"infoRoles": "Roles",
"infoChannels": "Channels",
"download": "Download JSON",
"restore": "Restore",
"confirmRestoreStep1": "Restore this backup? Missing roles/channels will be added and overwrites applied best-effort. Existing channels will not be deleted.",
"confirmRestoreStep2": "Final confirmation: restore this backup now? This cannot be undone.",
"restoreQueued": "Restore queued - it will run in the background.",
"confirmDelete": "Really delete this backup?",
"ownerOnlyBadge": "Owner-only restore"
},
"messages": {
"sendTitle": "Send a message",
"sendDescription": "Post an embed or Components V2 layout to a channel via the bot.",
"channelId": "Target channel",
"channelRequired": "Select a channel first.",
"mode": "Message type",
"modes": {
"EMBED": "Embed",
"COMPONENTS_V2": "Components V2"
},
"embedRequired": "Embed mode needs title, description, or a color.",
"componentsRequired": "Add at least one valid Components V2 block.",
"send": "Send message",
"sending": "Sending…",
"sent": "Message sent.",
"sentWithId": "Message sent (ID: {id})."
},
"commands": {
"title": "Commands",
"description": "Enable/disable individual slash commands and restrict them by role, channel or cooldown.",
"searchPlaceholder": "Search commands…",
"empty": "No commands match your search.",
"cooldownSeconds": "Cooldown (seconds)",
"allowedRoleIds": "Allowed roles",
"deniedRoleIds": "Denied roles",
"allowedChannelIds": "Allowed channels",
"deniedChannelIds": "Denied channels",
"idsPlaceholder": "One or more IDs, comma-separated",
"reset": "Reset to default",
"globalTitle": "Global command rules",
"globalDescription": "Channel whitelist and blacklist for all slash commands on this server. Empty whitelist = all channels (except blacklist). Per-command rules apply on top.",
"globalAllowedChannels": "Whitelist channels",
"globalDeniedChannels": "Blacklist channels",
"globalAllowedHint": "When set, commands can only be used in these channels.",
"globalDeniedHint": "Commands are always blocked in these channels.",
"channelSearchPlaceholder": "Search channels…",
"roleSearchPlaceholder": "Search roles…"
}
},
"userMenu": {
"theme": "Theme",
"themeDark": "Dark",
"themeLight": "Light",
"logout": "Log out",
"loggingOut": "Logging out…",
"ownerPanel": "Owner panel"
},
"owner": {
"nav": {
"title": "Owner",
"backToDashboard": "Back to dashboard",
"overview": "Overview",
"guilds": "Guilds",
"users": "User blacklist",
"flags": "Feature flags",
"premium": "Premium",
"presence": "Presence",
"about": "About",
"team": "Team",
"jobs": "Jobs",
"changelog": "Changelog",
"audit": "Audit"
},
"common": {
"empty": "No entries.",
"noteOptional": "Note (optional)"
},
"overview": {
"title": "Owner overview",
"subtitle": "Global bot metrics and recent owner actions.",
"guilds": "Guilds",
"blacklistedUsers": "Blacklisted users",
"blacklistedGuilds": "Blacklisted guilds",
"maintenance": "Maintenance mode",
"uptime": "WebUI uptime",
"recentAudit": "Recent owner activity",
"emptyAudit": "No owner actions yet.",
"viewAudit": "Open audit",
"changelog": "Changelog",
"emptyChangelog": "No changelog entries yet.",
"manageChangelog": "Manage changelog"
},
"guilds": {
"title": "Guild management",
"subtitle": "Search guilds, blacklist them, or leave with the bot.",
"search": "Search guild name or ID…",
"unknownName": "Unknown guild",
"members": "{count} members",
"membersUnknown": "Member count unknown",
"createInvite": "Create invite",
"inviteCopied": "Invite copied: {url}",
"inviteCreated": "Invite created: {url}",
"openDashboard": "Open dashboard",
"blacklisted": "Blacklisted",
"blacklist": "Blacklist",
"unblacklist": "Remove blacklist",
"leave": "Leave guild",
"leaveConfirm": "Really remove the bot from this guild?"
},
"users": {
"title": "User blacklist",
"subtitle": "Globally blocked Discord users (bot ignores them everywhere).",
"userIdPlaceholder": "Discord user ID"
},
"flags": {
"title": "Feature flags",
"subtitle": "Control modules globally and configure rollouts.",
"keyPlaceholder": "Flag key (e.g. new.module)",
"rollout": "Rollout %"
},
"premium": {
"title": "Premium",
"subtitle": "Free/Premium tiers, limits, and manual assignment (no payments).",
"maxTags": "Max tags",
"maxFeeds": "Max feeds",
"maxBackups": "Max backups",
"feature": {
"tags": "Tags",
"feeds": "Feeds",
"guildbackup": "Backups"
},
"guildsTitle": "Guild assignments",
"usersTitle": "User assignments",
"guildIdPlaceholder": "Discord guild ID",
"userIdPlaceholder": "Discord user ID",
"expires": "Expires"
},
"presence": {
"title": "Bot presence",
"subtitle": "Status, activity, and maintenance mode.",
"editorTitle": "Edit presence",
"editorDescription": "Changes apply to the bot immediately after saving.",
"previewTitle": "Preview",
"previewRotatingHint": "Preview shows the first rotating line; Discord rotates about every minute.",
"status": "Status",
"activityType": "Activity type",
"activityText": "Activity text",
"activityTextHint": "Fallback when no rotating messages are set.",
"rotating": "Rotating messages (one per line)",
"rotatingHint": "Max. 20 lines of 128 characters. Rotates about every minute.",
"maintenanceMode": "Maintenance mode enabled",
"maintenanceMessage": "Maintenance message",
"maintenanceHint": "Slash commands will only reply with the maintenance notice.",
"maintenanceConfirm": "Really enable maintenance mode? Users will not be able to use commands.",
"maintenancePreviewBanner": "Maintenance mode: Discord shows DND and the maintenance text.",
"maintenanceFallbackActivity": "Maintenance",
"readOnly": "View only — saving requires Admin owner role or higher.",
"statusLabel": {
"online": "Online",
"idle": "Idle",
"dnd": "Do not disturb",
"invisible": "Invisible"
},
"activityTypeLabel": {
"Playing": "Playing",
"Listening": "Listening to",
"Watching": "Watching",
"Competing": "Competing in"
}
},
"about": {
"title": "About /about",
"subtitle": "Content of the global /about reply in Discord.",
"editorTitle": "About message",
"editorDescription": "TEXT, embed, or Components V2 — shown for /about on every server.",
"enabled": "About enabled",
"enabledHint": "When off, /about replies with a disabled notice.",
"messageType": "Message type",
"type": {
"TEXT": "Text",
"EMBED": "Embed",
"COMPONENTS_V2": "Components V2"
},
"content": "Text content",
"contentPlaceholder": "Short text about Nexumi…",
"embed": "Embed",
"components": "Components V2",
"componentsHint": "Role actions apply in the server where /about is used. No role picker here without a guild context.",
"readOnly": "View only — saving requires Admin owner role or higher."
},
"team": {
"title": "Team",
"subtitle": "Additional owners/admins with graded permissions.",
"bootstrap": "Bootstrap owners (OWNER_USER_IDS)",
"noBootstrap": "No bootstrap owners set in OWNER_USER_IDS."
},
"jobs": {
"title": "Jobs & migrations",
"subtitle": "BullMQ queues and Prisma migration status.",
"queues": "Queues",
"migrations": "Migrations",
"retryFailed": "Retry failed"
},
"changelog": {
"title": "Changelog",
"subtitle": "Release notes for the dashboard.",
"version": "Version",
"titleField": "Title",
"body": "Body"
},
"audit": {
"title": "Owner audit",
"subtitle": "All owner actions in the global audit log."
}
},
"serverSwitcher": {
"switchServer": "Switch server",
"allServers": "All servers",
"noOtherServers": "No other manageable servers"
},
"errors": {
"unauthorized": "Please log in to continue.",
"forbidden": "You do not have access to this server.",
"notFound": "Not found.",
"generic": "Something went wrong. Please try again."
},
"site": {
"nav": {
"status": "Status",
"invite": "Invite",
"support": "Support",
"login": "Log in",
"dashboard": "Dashboard",
"theme": "Theme"
},
"footer": {
"status": "Status",
"impressum": "Legal notice",
"privacy": "Privacy",
"terms": "Terms",
"dashboard": "Dashboard"
}
},
"landing": {
"hero": {
"subtitle": "Discord bot with moderation, community, and integration modules plus a web dashboard.",
"invite": "Invite bot",
"login": "Open dashboard",
"dashboard": "Open dashboard",
"support": "Support server"
},
"stats": {
"guilds": "Servers",
"users": "Users (approx.)"
},
"features": {
"title": "Modules",
"subtitle": "Features Nexumi provides per server."
}
},
"status": {
"title": "Status",
"subtitle": "Availability, shard status, and recent notices.",
"overall": {
"operational": "Operational",
"maintenance": "Maintenance",
"degraded": "Degraded"
},
"latency": "API latency",
"guilds": "Servers",
"uptime": "Bot uptime",
"shardsTitle": "Shards",
"shardsEmpty": "No shard data from the bot (Redis bot:status missing or expired).",
"shardLabel": "Shard {id}",
"shardStatus": "Status",
"updatesTitle": "Updates & incidents",
"updatesEmpty": "No entries yet.",
"incident": "Incident"
},
"search": {
"title": "Search",
"placeholder": "Search pages, commands, or settings…",
"empty": "No results",
"openNav": "Open navigation",
"groups": {
"pages": "Pages",
"commands": "Commands",
"settings": "Settings"
}
}
}