- 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.
1272 lines
49 KiB
JSON
1272 lines
49 KiB
JSON
{
|
||
"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 (17–20 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 (5–6 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"
|
||
}
|
||
}
|
||
}
|