migrate some more

This commit is contained in:
thororen1234 2026-03-06 20:59:33 -05:00
parent 6498cd1787
commit 4b418c80ca
No known key found for this signature in database
58 changed files with 211 additions and 112 deletions

View file

@ -676,7 +676,7 @@
}
},
"moyai": {
"description": "Play the moyai sound effect when 🗿 emoji is used",
"description": "Plays a 🗿 sound effect whenever a moyai emoji is sent, reacted, or used as a voice effect in your current channel.",
"settings": {
"volume": "Volume of the moyai sound",
"quality": "Quality of the moyai sound",
@ -1179,7 +1179,7 @@
"description": "Changes the home button to a typing indicator if someone in your dms is typing"
},
"hopOn": {
"description": "Hop on Fortnite or Hop on bloons :3",
"description": "Hop on! Opens a configurable URL when a message matches a custom regex in the current channel.",
"settings": {
"regex": "Regex to trigger on",
"url": "URL to open"
@ -2462,5 +2462,27 @@
},
"youtubeDescription": {
"description": "Adds a toggleable description for YouTube video embeds"
},
"mainWindowFrameless": {
"title": "Disable the Main Window Frame",
"description": "Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area."
},
"equicordDonor": {
"title": "Equicord Donor",
"description": "This Badge is a special perk for Equicord (Not Vencord) Donors",
"description2": "Please consider supporting the development of Equicord by becoming a donor. It would mean a lot!!"
},
"equicordTranslator": {
"title": "Equicord Translator",
"description": "Awarded to contributors who expand Equicord's language support by translating content for the community."
},
"audioPlayerAPI": {
"description": "API to play internal Discord audio files or external audio links."
},
"headerBarAPI": {
"description": "API to add buttons to the header bar and channel toolbar."
},
"userAreaAPI": {
"description": "API to add buttons to the user area panel."
}
}

View file

@ -139,6 +139,7 @@
"description": "API to add badges to users"
},
"betterFolders": {
"description": "Shows server folders on dedicated sidebar and adds folder related improvements",
"settings": {
"closeAllFolders": "Close all folders when selecting a server not in a folder",
"closeAllHomeButton": "Close all folders when clicking on the home button",
@ -188,6 +189,7 @@
}
},
"betterSessions": {
"description": "Enhances the sessions (devices) menu. Allows you to view exact timestamps, give each session a custom name, and receive notifications about new sessions.",
"newBadge": "NEW",
"newSession": "New session:",
"rename": "Rename",
@ -203,6 +205,7 @@
}
},
"betterSettings": {
"description": "Enhances your settings-menu-opening experience",
"settings": {
"disableFade": "Disable the crossfade animation",
"eagerLoad": "Removes the loading delay when opening the menu for the first time",
@ -370,6 +373,7 @@
}
},
"customRPC": {
"description": "Add a fully customisable Rich Presence (Game status) to your Discord profile",
"activityType": "Activity Type",
"activityTypes": {
"competing": "Competing",
@ -454,7 +458,9 @@
"enableAndRestart": "Enable Decor and restart your client to change your avatar decoration.",
"profilesLink": "Profiles",
"removeDecoration": "Remove Decoration",
"title": "Decor"
"title": "Decor",
"baseUrl": "Decor api url",
"agreedToGuidelines": "Agreed to guidelines"
},
"devCompanion": {
"description": "Dev Companion Plugin. Please report anything not working or being weird (most likely its a bug) to sadan, either ping or dm, thanks!",
@ -500,6 +506,7 @@
"warning3": "No, you cannot use server-side features like checking the \"Send to Client\" box."
},
"expressionCloner": {
"description": "Allows you to clone Emotes & Stickers to your own server (right click them)",
"cloneEmoji": "Clone Emoji",
"cloneSticker": "Clone Sticker",
"cloneTo": "Clone to {guild}",
@ -699,6 +706,7 @@
"description": "Do not hide messages from 'likely spammers'"
},
"ignoreActivities": {
"description": "Ignore activities from showing up on your status ONLY. You can configure which ones are specifically ignored from the Registered Games and Activities tabs, or use the general settings below",
"disableActivity": "Disable activity",
"enableActivity": "Enable activity",
"filterList": {
@ -732,6 +740,7 @@
"description": "Never hide image links in messages, even if it's the only content"
},
"imageZoom": {
"description": "Lets you zoom in to images and gifs. Use scroll wheel to zoom in and shift + scroll wheel to increase lens radius / size",
"lensSize": "Lens Size",
"nearestNeighbour": "Nearest Neighbour",
"settings": {
@ -840,6 +849,7 @@
"showLogs": "Show Logs"
},
"memberCount": {
"description": "Shows the number of online members, total members, and users in voice channels on the server — in the member list and tooltip.",
"settings": {
"memberList": "Show member count in the member list",
"toolTip": "Show member count on the server tooltip",
@ -928,6 +938,7 @@
"description": "API required by anything using message events"
},
"messageLatency": {
"description": "Displays an indicator for messages that took ≥n seconds to send",
"clockAhead": "This user's clock is {delta} ahead.",
"delayedMessage": "Delayed Message",
"messageDelayed": "This message was sent with a delay of {delta}.",
@ -985,6 +996,7 @@
}
},
"messageLogger": {
"description": "Temporarily logs deleted and edited messages.",
"clearMessageLog": "Clear Message Log",
"deletedMessages_one": "{count} deleted message",
"deletedMessages_other": "{count} deleted messages",
@ -1230,6 +1242,7 @@
}
},
"permissionsViewer": {
"description": "View the permissions a user or channel has, and the roles of a server",
"noPermissions": "No permissions to display!",
"owner": "owner",
"permissions": "Permissions",
@ -1276,6 +1289,7 @@
"togglePip": "Toggle Picture in Picture"
},
"pinDms": {
"description": "Allows you to pin private channels to the top of your DM list. To pin/unpin or re-order pins, right click DMs",
"addCategory": "Add Category",
"color": "Color",
"create": "Create",
@ -1446,7 +1460,8 @@
},
"system": "System",
"unblockUser": "Unblock user",
"viewReviews": "View Reviews"
"viewReviews": "View Reviews",
"description": "Review other users (Adds a new settings to profiles)"
},
"roleColorEverywhere": {
"description": "Adds the top role color anywhere possible",
@ -1603,8 +1618,8 @@
"title": "Enable React Developer Tools"
},
"frameless": {
"description": "Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area.",
"title": "Disable the window frame"
"title": "Disable All Window Frames",
"description": "Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area."
},
"hint": "Hint: You can change the position of this settings section in the <0>settings of the Settings plugin</0>!",
"macosVibrancyStyle": {
@ -1827,6 +1842,7 @@
}
},
"silentTyping": {
"description": "Hide your typing indicator from chat.",
"clickActions": {
"openPluginSettings": "Open Plugin Settings",
"toggleTypingGlobally": "Toggle Typing Globally",
@ -1918,6 +1934,7 @@
"settings": "Equicord Settings"
},
"textReplace": {
"description": "Replace text in your or others' messages. You can find pre-made rules in the #textreplace-rules channel in Vencord's Server.",
"find": "Find",
"messageWithRules": "Message with rules applied",
"onlyIfIncludes": "Only if includes",
@ -1928,7 +1945,9 @@
"testRules": "Test Rules",
"typeMessage": "Type a message",
"usingRegex": "Using Regex",
"usingString": "Using String"
"usingString": "Using String",
"stringRules": "Rules for replacing text using string matching.",
"regexRules": "Rules for replacing text using regular expressions."
},
"themeAttributes": {
"description": "Adds data attributes to various elements for theming purposes"
@ -1940,6 +1959,7 @@
"title": "Equicord Auto-Translate Enabled"
},
"autoTranslateEnabledLabel": "Auto Translate Enabled",
"description": "Translate messages with Google Translate or DeepL",
"disableAutoTranslate": "Disable Auto-Translate",
"dontShowAgain": "Don't show again",
"gotIt": "Got it",
@ -2094,6 +2114,7 @@
"downloadVoiceMessage": "Download voice message"
},
"voiceMessages": {
"description": "Allows you to send voice messages like on mobile. To do so, right click the upload button and click Send Voice Message.",
"echoCancellation": "Echo Cancellation",
"failedToParse": "Failed to parse selected audio file: {error}",
"failedToUpload": "Failed to upload voice message",
@ -2126,6 +2147,7 @@
"description": "Removes 2500kbps bitrate cap on chromium and vesktop clients."
},
"whoReacted": {
"description": "Renders the avatars of users who reacted to a message",
"settings": {
"avatarClick": "Toggle clicking avatars in reactions"
}
@ -2161,5 +2183,25 @@
},
"youtubeAdblock": {
"description": "Block ads in YouTube embeds and the WatchTogether activity via AdGuard"
},
"vencordDonor": {
"title": "Vencord Donor",
"description": "This Badge is a special perk for Vencord Donors",
"description2": "Please consider supporting the development of Vencord by becoming a donor. It would mean a lot!!"
},
"settingsPlugin": {
"description": "Adds Settings UI and debug info",
"settingsLocation": "Where to put the Equicord settings section",
"top": "At the very top",
"aboveNitro": "Above the Nitro section",
"belowNitro": "Below the Nitro section",
"aboveActivity": "Above Activity Settings",
"belowActivity": "Below Activity Settings",
"bottom": "At the very bottom"
},
"supportHelper": {
"description": "Helps us provide support to you",
"debug": "Send Equicord debug info",
"plugins": "Send Equicord plugin list"
}
}

View file

@ -6,11 +6,12 @@
import { AudioPlayerInternal, AudioPlayerOptions, audioProcessorFunctions, AudioType, identifyAudioType, playAudio } from "@api/AudioPlayer";
import { EquicordDevs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "AudioPlayerAPI",
description: "API to play internal Discord audio files or external audio links.",
description: t("equicord.audioPlayerAPI.description"),
authors: [EquicordDevs.Etorix],
AudioType,
playAudio,

View file

@ -5,11 +5,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "HeaderBarAPI",
description: "API to add buttons to the header bar and channel toolbar.",
description: t("equicord.headerBarAPI.description"),
authors: [Devs.prism],
patches: [

View file

@ -7,6 +7,7 @@
import { isPluginEnabled } from "@api/PluginManager";
import declutter from "@equicordplugins/declutter";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { findCssClassesLazy } from "@webpack";
@ -14,7 +15,7 @@ const { iconForeground } = findCssClassesLazy("iconForeground", "accountPopoutBu
export default definePlugin({
name: "UserAreaAPI",
description: "API to add buttons to the user area panel.",
description: t("equicord.userAreaAPI.description"),
authors: [Devs.prism],
patches: [

View file

@ -25,6 +25,7 @@ import { Devs } from "@utils/constants";
import { copyWithToast } from "@utils/discord";
import { Logger } from "@utils/Logger";
import { shouldShowContributorBadge, shouldShowEquicordContributorBadge } from "@utils/misc";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { ContextMenuApi, Menu, Toasts, UserStore } from "@webpack/common";
@ -126,7 +127,7 @@ export function BadgeContextMenu({ badge }: { badge: ProfileBadge & BadgeUserArg
export default definePlugin({
name: "BadgeAPI",
description: "API to add badges to users",
description: t("vencord.badgeAPI.description"),
authors: [Devs.Megu, Devs.Ven, Devs.TheSun],
required: true,
patches: [

View file

@ -12,6 +12,7 @@ import { Paragraph } from "@components/Paragraph";
import { DonateButton, TranslateButton } from "@components/settings";
import { Margins } from "@utils/margins";
import { closeModal, ModalContent, ModalFooter, ModalHeader, ModalRoot, openModal } from "@utils/modal";
import { Translate } from "@utils/translation";
export function VencordDonorModal() {
const modalKey = openModal(props => (
@ -30,7 +31,9 @@ export function VencordDonorModal() {
>
<Flex justifyContent="center" alignItems="center" gap="0.5em">
<Heart />
<Translate i18nKey="vencord.vencordDonor.title">
Vencord Donor
</Translate>
</Flex>
</HeadingPrimary>
</ModalHeader>
@ -85,7 +88,9 @@ export function EquicordDonorModal() {
>
<Flex justifyContent="center" alignItems="center" gap="0.5em">
<Heart />
<Translate i18nKey="equicord.equicordDonor.title">
Equicord Donor
</Translate>
</Flex>
</HeadingPrimary>
</ModalHeader>
@ -106,10 +111,14 @@ export function EquicordDonorModal() {
</Flex>
<div style={{ padding: "1em" }}>
<Paragraph>
<Translate i18nKey="equicord.equicordDonor.description">
This Badge is a special perk for Equicord (Not Vencord) Donors
</Translate>
</Paragraph>
<Paragraph className={Margins.top20}>
Please consider supporting the development of Equicord by becoming a donor. It would mean a lot! :3
<Translate i18nKey="equicord.equicordDonor.description2">
Please consider supporting the development of Equicord by becoming a donor. It would mean a lot!!
</Translate>
</Paragraph>
</div>
</ModalContent>
@ -138,7 +147,9 @@ export function EquicordTranslatorModal() {
}}
>
<Flex justifyContent="center" alignItems="center" gap="0.5em">
<Translate i18nKey="equicord.equicordTranslator.title">
Equicord Translator
</Translate>
</Flex>
</HeadingPrimary>
</ModalHeader>
@ -153,7 +164,9 @@ export function EquicordTranslatorModal() {
</Flex>
<div className="vc-translate-modal-paragraph">
<Paragraph>
Awarded to contributors who expand Equicord’s language support by translating content for the community.
<Translate i18nKey="equicord.equicordTranslator.description">
Awarded to contributors who expand Equicord's language support by translating content for the community.
</Translate>
</Paragraph>
</div>
</ModalContent>

View file

@ -5,11 +5,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "ChatInputButtonAPI",
description: "API to add buttons to the chat input",
description: t("vencord.chatInputButtonAPI.description"),
authors: [Devs.Ven],
patches: [

View file

@ -17,12 +17,13 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "CommandsAPI",
authors: [Devs.Arjix],
description: "Api required by anything that uses commands",
description: t("vencord.commandsAPI.description"),
patches: [
// obtain BUILT_IN_COMMANDS instance
{

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "ContextMenuAPI",
description: "API for adding/removing items to/from context menus.",
description: t("vencord.contextMenuAPI.description"),
authors: [Devs.Nuckyz, Devs.Ven, Devs.Kyuuhachi],
required: true,

View file

@ -5,12 +5,13 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "DynamicImageModalAPI",
authors: [Devs.sadan, Devs.Nuckyz],
description: "Allows you to omit either width or height when opening an image modal",
description: t("vencord.dynamicImageModalAPI.description"),
patches: [
{
// TODO: bundler compat

View file

@ -17,13 +17,14 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import managedStyle from "./style.css?managed";
export default definePlugin({
name: "MemberListDecoratorsAPI",
description: "API to add decorators to member list (both in servers and DMs)",
description: t("vencord.memberListDecoratorsAPI.description"),
authors: [Devs.TheSun, Devs.Ven],
managedStyle,

View file

@ -6,6 +6,7 @@
import { Devs } from "@utils/constants";
import { canonicalizeMatch } from "@utils/patches";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
// duplicate values have multiple branches with different types. Just include all to be safe
@ -24,7 +25,7 @@ const nameMap = {
export default definePlugin({
name: "MenuItemDemanglerAPI",
description: "Demangles Discord's Menu Item module",
description: t("vencord.menuItemDemanglerAPI.description"),
authors: [Devs.Ven],
required: true,
patches: [

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "MessageAccessoriesAPI",
description: "API to add message accessories.",
description: t("vencord.messageAccessoriesAPI.description"),
authors: [Devs.Cyn],
patches: [
{

View file

@ -17,13 +17,14 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import managedStyle from "./style.css?managed";
export default definePlugin({
name: "MessageDecorationsAPI",
description: "API to add decorations to messages",
description: t("vencord.messageDecorationsAPI.description"),
authors: [Devs.TheSun],
managedStyle,

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "MessageEventsAPI",
description: "Api required by anything using message events.",
description: t("vencord.messageEventsAPI.description"),
authors: [Devs.Arjix, Devs.hunt, Devs.Ven],
patches: [
{

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "MessagePopoverAPI",
description: "API to add buttons to message popovers.",
description: t("vencord.messagePopoverAPI.description"),
authors: [Devs.KingFish, Devs.Ven, Devs.Nuckyz],
patches: [
{

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "MessageUpdaterAPI",
description: "API for updating and re-rendering messages.",
description: t("vencord.messageUpdaterAPI.description"),
authors: [Devs.Nuckyz],
patches: [

View file

@ -5,11 +5,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NicknameIconsAPI",
description: "API to add icons to the nickname, in profiles",
description: t("vencord.nicknameIconsAPI.description"),
authors: [Devs.Nuckyz],
patches: [
{

View file

@ -17,8 +17,8 @@
*/
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoticesAPI",

View file

@ -17,8 +17,8 @@
*/
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "ServerListAPI",

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "UserSettingsAPI",
description: "Patches Discord's UserSettings to expose their group and name.",
description: t("vencord.userSettingsAPI.description"),
authors: [Devs.Nuckyz],
patches: [

View file

@ -19,6 +19,7 @@ import {
import { gitHashShort } from "@shared/vencordUserAgent";
import { Devs } from "@utils/constants";
import { isTruthy } from "@utils/guards";
import { t } from "@utils/translation";
import definePlugin, { IconProps, OptionType } from "@utils/types";
import { findByPropsLazy } from "@webpack";
import { React } from "@webpack/common";
@ -91,14 +92,14 @@ interface SettingsLayoutBuilder {
const settings = definePluginSettings({
settingsLocation: {
type: OptionType.SELECT,
description: "Where to put the Equicord settings section",
description: t("vencord.settingsPlugin.settingsLocation"),
options: [
{ label: "At the very top", value: "top" },
{ label: "Above the Nitro section", value: "aboveNitro", default: true },
{ label: "Below the Nitro section", value: "belowNitro" },
{ label: "Above Activity Settings", value: "aboveActivity" },
{ label: "Below Activity Settings", value: "belowActivity" },
{ label: "At the very bottom", value: "bottom" },
{ label: t("vencord.settingsPlugin.top"), value: "top" },
{ label: t("vencord.settingsPlugin.aboveNitro"), value: "aboveNitro", default: true },
{ label: t("vencord.settingsPlugin.belowNitro"), value: "belowNitro" },
{ label: t("vencord.settingsPlugin.aboveActivity"), value: "aboveActivity" },
{ label: t("vencord.settingsPlugin.belowActivity"), value: "belowActivity" },
{ label: t("vencord.settingsPlugin.bottom"), value: "bottom" },
] as { label: string; value: SettingsLocation; default?: boolean; }[]
}
});
@ -117,7 +118,7 @@ const settingsSectionMap: [string, string][] = [
export default definePlugin({
name: "Settings",
description: "Adds Settings UI and debug info",
description: t("vencord.settingsPlugin.description"),
authors: [Devs.Ven, Devs.Megu],
required: true,

View file

@ -38,6 +38,7 @@ import { isAnyPluginDev, isEquicordGuild, isEquicordSupport, isSupportChannel, t
import { relaunch } from "@utils/native";
import { onlyOnce } from "@utils/onlyOnce";
import { makeCodeblock } from "@utils/text";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { checkForUpdates, isOutdated, update } from "@utils/updater";
import { CloudUploadPlatform } from "@vencord/discord-types/enums";
@ -287,7 +288,7 @@ const settings = definePluginSettings({}).withPrivateSettings<{
export default definePlugin({
name: "SupportHelper",
required: true,
description: "Helps us provide support to you",
description: t("vencord.supportHelper.description"),
authors: [Devs.Ven],
dependencies: ["UserSettingsAPI"],
@ -304,14 +305,14 @@ export default definePlugin({
commands: [
{
name: "equicord-debug",
description: "Send Equicord debug info",
description: t("vencord.supportHelper.debug"),
// @ts-ignore
predicate: ctx => isAnyPluginDev(UserStore.getCurrentUser()?.id) || isEquicordGuild(ctx?.guild?.id, true),
execute: async () => ({ content: await generateDebugInfoMessage() })
},
{
name: "equicord-plugins",
description: "Send Equicord plugin list",
description: t("vencord.supportHelper.plugins"),
// @ts-ignore
predicate: ctx => isAnyPluginDev(UserStore.getCurrentUser()?.id) || isEquicordGuild(ctx?.guild?.id, true),
execute: async () => {

View file

@ -20,8 +20,8 @@ import "./style.css";
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import { getIntlMessage } from "@utils/discord";
import { t } from "@utils/translation";
import definePlugin, { OptionType } from "@utils/types";
import type { GuildFolder } from "@vencord/discord-types";
import { findByPropsLazy, findComponentByCodeLazy, findStoreLazy } from "@webpack";
@ -249,7 +249,7 @@ const GRID_STYLE_NAME = "vc-betterFolders-sidebar-grid";
export default definePlugin({
name: "BetterFolders",
description: "Shows server folders on dedicated sidebar and adds folder related improvements",
description: t("vencord.betterFolders.description"),
authors: [Devs.juby, Devs.AutumnVN, Devs.Nuckyz],
isModified: true,

View file

@ -55,7 +55,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "BetterSessions",
description: "Enhances the sessions (devices) menu. Allows you to view exact timestamps, give each session a custom name, and receive notifications about new sessions.",
description: t("vencord.betterSessions.description"),
authors: [Devs.amia],
settings: settings,

View file

@ -77,7 +77,7 @@ function Layer({ mode, baseLayer = false, ...props }: LayerProps) {
export default definePlugin({
name: "BetterSettings",
description: "Enhances your settings-menu-opening experience",
description: t("vencord.betterSettings.description"),
authors: [Devs.Kyuuhachi],
settings,

View file

@ -215,7 +215,7 @@ export async function setRpc(disable?: boolean) {
export default definePlugin({
name: "CustomRPC",
description: "Add a fully customisable Rich Presence (Game status) to your Discord profile",
description: t("vencord.customRPC.description"),
authors: [Devs.captain, Devs.AutumnVN, Devs.nin0dev],
dependencies: ["UserSettingsAPI"],
// This plugin's patch is not important for functionality, so don't require a restart

View file

@ -28,14 +28,16 @@ export const settings = definePluginSettings({
return <div>
<DecorSection hideTitle hideDivider noMargin />
<Paragraph className={classes(Margins.top8, Margins.bottom8)}>
{t("decor.accessFromProfiles", { link: <Link
{t("decor.accessFromProfiles", {
link: <Link
href="/settings/profile-customization"
onClick={e => {
e.preventDefault();
closeAllModals();
FluxDispatcher.dispatch({ type: "USER_SETTINGS_MODAL_SET_SECTION", section: "Profile Customization" });
}}
>{t("vencord.decor.profilesLink")}</Link> })}
>{t("vencord.decor.profilesLink")}</Link>
})}
</Paragraph>
</div>;
}
@ -43,12 +45,12 @@ export const settings = definePluginSettings({
baseUrl: {
type: OptionType.STRING,
hidden: true,
description: "Decor api url",
description: t("vencord.decor.baseUrl"),
default: "https://decor.fieryflames.dev"
},
agreedToGuidelines: {
type: OptionType.BOOLEAN,
description: "Agreed to guidelines",
description: t("vencord.decor.agreedToGuidelines"),
hidden: true,
default: false
}

View file

@ -411,7 +411,7 @@ const expressionPickerPatch: NavContextMenuPatchCallback = (children, props: { t
migratePluginSettings("ExpressionCloner", "EmoteCloner");
export default definePlugin({
name: "ExpressionCloner",
description: "Allows you to clone Emotes & Stickers to your own server (right click them)",
description: t("vencord.expressionCloner.description"),
tags: ["StickerCloner", "EmoteCloner", "EmojiCloner"],
authors: [Devs.Ven, Devs.Nuckyz],
contextMenus: {

View file

@ -232,7 +232,7 @@ function isActivityTypeIgnored(type: number, id?: string) {
export default definePlugin({
name: "IgnoreActivities",
authors: [Devs.Nuckyz, Devs.Kylie],
description: "Ignore activities from showing up on your status ONLY. You can configure which ones are specifically ignored from the Registered Games and Activities tabs, or use the general settings below",
description: t("vencord.ignoreActivities.description"),
dependencies: ["UserSettingsAPI"],
settings,

View file

@ -155,7 +155,7 @@ const imageContextMenuPatch: NavContextMenuPatchCallback = (children, props) =>
export default definePlugin({
name: "ImageZoom",
description: "Lets you zoom in to images and gifs. Use scroll wheel to zoom in and shift + scroll wheel to increase lens radius / size",
description: t("vencord.imageZoom.description"),
authors: [Devs.Aria],
tags: ["ImageUtilities"],

View file

@ -18,6 +18,7 @@
import * as DataStore from "@api/DataStore";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { ChannelRouter, ChannelStore, NavigationRouter, SelectedChannelStore, SelectedGuildStore } from "@webpack/common";
@ -42,7 +43,7 @@ let previousCache: PreviousChannel | undefined;
export default definePlugin({
name: "KeepCurrentChannel",
description: "Attempt to navigate to the channel you were in before switching accounts or loading Discord.",
description: t("vencord.keepCurrentChannel.description"),
authors: [Devs.Nuckyz],
patches: [

View file

@ -62,7 +62,7 @@ export const cl = classNameFactory("vc-membercount-");
export default definePlugin({
name: "MemberCount",
description: "Shows the number of online members, total members, and users in voice channels on the server — in the member list and tooltip.",
description: t("vencord.memberCount.description"),
authors: [Devs.Ven, Devs.Commandtechno, Devs.Apexo],
settings,

View file

@ -29,7 +29,7 @@ const DISCORD_KT_DELAY = 1471228928;
export default definePlugin({
name: "MessageLatency",
description: "Displays an indicator for messages that took ≥n seconds to send",
description: t("vencord.messageLatency.description"),
authors: [Devs.arHSM],
settings: definePluginSettings({

View file

@ -407,7 +407,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "MessageLogger",
description: "Temporarily logs deleted and edited messages.",
description: t("vencord.messageLogger.description"),
authors: [Devs.rushii, Devs.Ven, Devs.AutumnVN, Devs.Nickyux, Devs.Kyuuhachi, EquicordDevs.justjxke],
dependencies: ["MessageUpdaterAPI"],
isModified: true,

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoDevtoolsWarning",
description: "Disables the 'HOLD UP' banner in the console. As a side effect, also prevents Discord from hiding your token, which prevents random logouts.",
description: t("vencord.noDevtoolsWarning.description"),
authors: [Devs.Ven],
patches: [{
find: "setDevtoolsCallbacks",

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoF1",
description: "Disables F1 help bind.",
description: t("vencord.noF1.description"),
authors: [Devs.Cyn],
patches: [
{

View file

@ -5,12 +5,13 @@
*/
import { Devs } from "@utils/constants.js";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoMaskedUrlPaste",
authors: [Devs.CatNoir],
description: "Pasting a link while having text selected will not paste as masked URL",
description: t("vencord.noMaskedUrlPaste.description"),
patches: [
{
find: ".selection,preventEmojiSurrogates:",

View file

@ -6,11 +6,12 @@
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin, { OptionType } from "@utils/types";
const settings = definePluginSettings({
inlineVideo: {
description: "Play videos without carousel modal",
description: t("vencord.noMosaic.description.settings.inlineVideo"),
type: OptionType.BOOLEAN,
default: true,
restartNeeded: true
@ -20,7 +21,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "NoMosaic",
authors: [Devs.AutumnVN],
description: "Removes Discord image mosaic",
description: t("vencord.noMosaic.description"),
tags: ["image", "mosaic", "media"],
settings,

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoOnboardingDelay",
description: "Skips the slow and annoying onboarding delay",
description: t("vencord.noOnboardingDelay.description"),
authors: [Devs.nekohaxx],
patches: [
{

View file

@ -17,12 +17,13 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { UserStore } from "@webpack/common";
export default definePlugin({
name: "NoProfileThemes",
description: "Completely removes Nitro profile themes from everyone but yourself",
description: t("vencord.noProfileThemes.description"),
authors: [Devs.TheKodeToad],
patches: [
{

View file

@ -5,12 +5,13 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoTypingAnimation",
authors: [Devs.AutumnVN],
description: "Disables the CPU-intensive typing dots animation",
description: t("vencord.noTypingAnimation.description"),
patches: [
{
find: "dotCycle",

View file

@ -17,11 +17,12 @@
*/
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "NoUnblockToJump",
description: "Allows you to jump to messages of blocked or ignored users and likely spammers without unblocking them",
description: t("vencord.noUnblockToJump.description"),
authors: [Devs.dzshn],
patches: [
{

View file

@ -7,26 +7,27 @@
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import { canonicalizeMatch } from "@utils/patches";
import { t } from "@utils/translation";
import definePlugin, { OptionType } from "@utils/types";
const settings = definePluginSettings({
lockout: {
type: OptionType.BOOLEAN,
default: true,
description: 'Bypass the permission lockout prevention ("Pretty sure you don\'t want to do this")',
description: t("vencord.permissionFreeWill.settings.lockout"),
restartNeeded: true
},
onboarding: {
type: OptionType.BOOLEAN,
default: true,
description: 'Bypass the onboarding requirements ("Making this change will make your server incompatible [...]")',
description: t("vencord.permissionFreeWill.settings.onboarding"),
restartNeeded: true
}
});
export default definePlugin({
name: "PermissionFreeWill",
description: "Disables the client-side restrictions for channel permission management.",
description: t("vencord.permissionFreeWill.description"),
authors: [Devs.lewisakura],
patches: [

View file

@ -160,7 +160,7 @@ function makeContextMenuPatch(childId: string | string[], type?: MenuItemParentT
export default definePlugin({
name: "PermissionsViewer",
description: "View the permissions a user or channel has, and the roles of a server",
description: t("vencord.permissionsViewer.description"),
authors: [Devs.Nuckyz, Devs.Ven],
settings,

View file

@ -67,7 +67,7 @@ export const settings = definePluginSettings({
export default definePlugin({
name: "PinDMs",
description: "Allows you to pin private channels to the top of your DM list. To pin/unpin or re-order pins, right click DMs",
description: t("vencord.pinDms.description"),
authors: [Devs.Ven, Devs.Aria],
settings,
contextMenus,

View file

@ -19,11 +19,12 @@
import "./style.css";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
export default definePlugin({
name: "PlainFolderIcon",
description: "Dont show the small guild icons in folders",
description: t("vencord.plainFolderIcon.description"),
authors: [Devs.botato],
patches: [

View file

@ -8,6 +8,7 @@ import "./style.css";
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import type { Message } from "@vencord/discord-types";
import { findCssClassesLazy } from "@webpack";
@ -57,7 +58,7 @@ function ReplyTimestamp({
export default definePlugin({
name: "ReplyTimestamp",
description: "Shows a timestamp on replied-message previews",
description: t("vencord.replyTimestamp.description"),
authors: [Devs.Kyuuhachi],
patches: [

View file

@ -17,6 +17,7 @@
*/
import { Devs, IS_MAC } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { findCssClassesLazy } from "@webpack";
@ -25,7 +26,7 @@ const MessagesClasses = findCssClassesLazy("messagesWrapper", "navigationDescrip
export default definePlugin({
name: "RevealAllSpoilers",
description: "Reveal all spoilers in a message by Ctrl-clicking a spoiler, or in the chat with Ctrl+Shift-click",
description: t("vencord.revealAllSpoilers.description"),
authors: [Devs.whqwert],
patches: [

View file

@ -1,19 +1,7 @@
/*
* Vencord, a modification for Discord's desktop app
* Copyright (c) 2022 Vendicated and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
* Vencord, a Discord client mod
* Copyright (c) 2026 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import "./style.css";
@ -23,7 +11,6 @@ import ErrorBoundary from "@components/ErrorBoundary";
import { NotesIcon, OpenExternalIcon } from "@components/Icons";
import { TooltipContainer } from "@components/TooltipContainer";
import { Devs } from "@utils/constants";
import { classes } from "@utils/misc";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { Guild, User } from "@vencord/discord-types";
@ -65,7 +52,7 @@ const userContextPatch: NavContextMenuPatchCallback = (children, { user }: { use
export default definePlugin({
name: "ReviewDB",
description: "Review other users (Adds a new settings to profiles)",
description: t("vencord.reviewDB.description"),
authors: [Devs.mantikafasi, Devs.Ven],
isModified: true,

View file

@ -7,6 +7,7 @@
import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/ContextMenu";
import { definePluginSettings } from "@api/Settings";
import { Devs, EquicordDevs } from "@utils/constants";
import { t } from "@utils/translation";
import definePlugin, { OptionType } from "@utils/types";
import { Guild } from "@vencord/discord-types";
import { Menu } from "@webpack/common";
@ -28,19 +29,19 @@ const Patch: NavContextMenuPatchCallback = (children, { guild }: { guild: Guild;
export const settings = definePluginSettings({
sorting: {
type: OptionType.SELECT,
description: "Username or if applicable Display Name",
description: t("vencord.serverInfo.settings.sorting"),
options: [
{
label: "Username",
label: t("vencord.serverInfo.settings.sortingOptions.username"),
value: "username"
},
{
label: "Display Name",
label: t("vencord.serverInfo.settings.sortingOptions.displayname"),
value: "displayname",
default: true
},
{
label: "Dont Sort",
label: t("vencord.serverInfo.settings.sortingOptions.none"),
value: "none",
}
]
@ -49,7 +50,7 @@ export const settings = definePluginSettings({
export default definePlugin({
name: "ServerInfo",
description: "Allows you to view info about a server",
description: t("vencord.serverInfo.description"),
authors: [Devs.Ven, Devs.Nuckyz, EquicordDevs.Z1xus],
dependencies: ["DynamicImageModalAPI"],
tags: ["guild", "info", "ServerProfile"],

View file

@ -297,7 +297,7 @@ function shouldHideMembersListTypingIndicators(): boolean {
export default definePlugin({
name: "SilentTyping",
authors: [Devs.Ven, Devs.Rini, Devs.ImBanana, EquicordDevs.Etorix],
description: "Hide your typing indicator from chat.",
description: t("vencord.silentTyping.description"),
isModified: true,
settings,

View file

@ -67,12 +67,12 @@ const settings = definePluginSettings({
stringRules: {
type: OptionType.CUSTOM,
default: makeEmptyRuleArray(),
description: "Rules for replacing text using string matching."
description: t("vencord.textReplace.stringRules")
},
regexRules: {
type: OptionType.CUSTOM,
default: makeEmptyRuleArray(),
description: "Rules for replacing text using regular expressions."
description: t("vencord.textReplace.regexRules")
}
});
@ -256,7 +256,7 @@ const TEXT_REPLACE_RULES_EXEMPT_CHANNEL_IDS = [
export default definePlugin({
name: "TextReplace",
description: "Replace text in your or others' messages. You can find pre-made rules in the #textreplace-rules channel in Vencord's Server.",
description: t("vencord.textReplace.description"),
authors: [Devs.AutumnVN, Devs.TheKodeToad, EquicordDevs.Etorix],
isModified: true,

View file

@ -63,7 +63,7 @@ let tooltipTimeout: any;
export default definePlugin({
name: "Translate",
description: "Translate messages with Google Translate or DeepL",
description: t("vencord.translate.description"),
authors: [Devs.Ven, Devs.AshtonMemer],
settings,
contextMenus: {

View file

@ -21,8 +21,8 @@ import { Devs } from "@utils/constants";
import { isNonNullish } from "@utils/guards";
import { sleep } from "@utils/misc";
import { Queue } from "@utils/Queue";
import definePlugin from "@utils/types";
import { t } from "@utils/translation";
import definePlugin from "@utils/types";
import { ProfileBadge } from "@vencord/discord-types";
import { Constants, FluxDispatcher, RestAPI, UserProfileStore, UserStore, useState } from "@webpack/common";
import { type ComponentType, type ReactNode } from "react";

View file

@ -278,7 +278,7 @@ export const settings = definePluginSettings({
export default definePlugin({
name: "VoiceMessages",
description: "Allows you to send voice messages like on mobile. To do so, right click the upload button and click Send Voice Message.",
description: t("vencord.voiceMessages.description"),
authors: [Devs.Ven, Devs.Vap, Devs.Nickyux, EquicordDevs.Z1xus, Devs.prism],
settings,

View file

@ -88,7 +88,7 @@ const settings = definePluginSettings({
export default definePlugin({
name: "WhoReacted",
description: "Renders the avatars of users who reacted to a message",
description: t("vencord.whoReacted.settings.description"),
authors: [Devs.Ven, Devs.KannaDev, Devs.newwares],
isModified: true,
settings,