diff --git a/i18n/en-US/equicord.json b/i18n/en-US/equicord.json index be4db3fb4..547012866 100644 --- a/i18n/en-US/equicord.json +++ b/i18n/en-US/equicord.json @@ -722,6 +722,9 @@ "noNitroUpsell": { "description": "Removes Nitro upsells by overriding your premium type" }, + "noPushToTalk": { + "description": "Bypasses the push-to-talk requirement for voice activity in channels that enforce it." + }, "noRPC": { "description": "Disables Discord's Rich Presence (RPC) feature" }, @@ -770,7 +773,8 @@ "noDefaultHangStatus": "Disable the default hang status when joining voice channels", "refreshSlashCommands": "Refreshes Slash Commands to show newly added commands without restarting your client.", "forceRoleIcon": "Forces role icons to display next to messages in compact mode", - "accountStandingButton": "Show an account standing button in the header bar" + "accountStandingButton": "Show an account standing button in the header bar", + "restoreFileDownloadButton": "Adds back the Download button at the top right corner of files" }, "standing": { "allGood": "All good!", @@ -1137,6 +1141,15 @@ "open": "Open" } }, + "hideMessages": { + "description": "A plugin to temporarily hide messages until you restart.", + "settings": { + "hidePopoverButton": "Hide the hide button in the message popover." + }, + "ui": { + "hide": "Hide" + } + }, "hideServers": { "description": "Allows you to hide servers from the guild list and quick switcher by right clicking them", "ui": { @@ -1902,6 +1915,21 @@ "openThemeLibrary": "Open Theme Library" } }, + "triviaAI": { + "description": "A plugin that helps you answer trivia questions using AI.", + "settings": { + "apiKey": "API Key.", + "model": "AI Model to use.", + "systemPrompt": "System Prompt for the AI.", + "maxTokens": "Maximum number of tokens in the response.", + "endpoint": "OpenAI Compatible AI Endpoint.", + "autoRespond": "Automatically respond to messages on receiving a response.", + "supportImages": "Pass images to the AI for context (if any). This is not supported by all models." + }, + "ui": { + "answerWithAI": "Answer With AI" + } + }, "tidalEmbeds": { "description": "Embeds Tidal music links with a custom player" }, @@ -2163,9 +2191,26 @@ "voiceButtons": { "description": "Adds quick action buttons (chat, mute, deafen) to voice channel users", "settings": { - "showChatButton": "Show chat button", - "showMuteButton": "Show mute button", - "showDeafenButton": "Show deafen button" + "showChatButton": "Whether you want to display the chat button", + "showMuteButton": "Whether you want to display the mute button", + "showDeafenButton": "Whether you want to display the deafen button", + "muteSoundboard": "Toggles their soundboard upon clicking deafen button.", + "disableVideo": "Toggles their video upon clicking deafen button.", + "useServer": "Use server mute/deafen instead of local when you have permission.", + "serverSelf": "Deafen / Mute yourself on the server when using mute/deafen.", + "showButtonsSelf": "Whether you want to display buttons for your own user. Same functionality as other button(s) except it'll open DMs panel and mute/deafen for yourself upon clicking button(s).", + "whichNameToShow": "Choose whether to show nickname or username in tooltip.", + "buttonPosition": "Choose where to place voice buttons in the voice user row." + }, + "options": { + "display": "Display", + "hide": "Hide", + "disable": "Disable", + "both": "Both", + "globalName": "Global Name", + "username": "Username", + "left": "Left", + "right": "Right" } }, "voiceChannelLog": { @@ -2194,6 +2239,7 @@ }, "contextMenu": { "voiceTools": "Voice Tools", + "mentionAllUsers": "Mention all Users", "disconnectAll": "Disconnect all", "muteAll": "Mute all", "unmuteAll": "Unmute all", diff --git a/i18n/en-US/vencord.json b/i18n/en-US/vencord.json index 9cc548466..5f9b9d76d 100644 --- a/i18n/en-US/vencord.json +++ b/i18n/en-US/vencord.json @@ -915,7 +915,10 @@ "linkCopied":"Link copied!", "messageContentCopied":"Message content copied!", "messageIdCopied":"Message ID copied!", - "userIdCopied":"User ID copied!" + "userIdCopied":"User ID copied!", + "selectEmojiForReactions": "Select Emoji For Reactions", + "selectAdditionalEmojis": "Select Additional Emojis", + "maxAdditionalEmojis": "comma/newline separated, max {count}" } }, "messageDecorationsAPI":{ diff --git a/src/equicordplugins/equicordHelper/index.tsx b/src/equicordplugins/equicordHelper/index.tsx index 9faec8117..262fde4ca 100644 --- a/src/equicordplugins/equicordHelper/index.tsx +++ b/src/equicordplugins/equicordHelper/index.tsx @@ -103,7 +103,7 @@ const settings = definePluginSettings({ }, restoreFileDownloadButton: { type: OptionType.BOOLEAN, - description: "Adds back the Download button at the top right corner of files", + description: t("equicordHelper.settings.restoreFileDownloadButton"), restartNeeded: true, default: false }, diff --git a/src/equicordplugins/hideMessages/index.tsx b/src/equicordplugins/hideMessages/index.tsx index ca5feb6bd..9a002b687 100644 --- a/src/equicordplugins/hideMessages/index.tsx +++ b/src/equicordplugins/hideMessages/index.tsx @@ -7,6 +7,7 @@ import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/ContextMenu"; import { definePluginSettings } from "@api/Settings"; import { EquicordDevs } from "@utils/constants"; +import { t } from "@utils/translation"; import definePlugin, { IconComponent, OptionType } from "@utils/types"; import { Message } from "@vencord/discord-types"; import { findExportedComponentLazy } from "@webpack"; @@ -31,7 +32,7 @@ const messageCtxPatch: NavContextMenuPatchCallback = (children, { message }: { m group.splice(group.findIndex(c => c?.props?.id === "copy-text") + 1, 0, ( hideMessage(message.id, message.channel_id)} /> @@ -41,14 +42,14 @@ const messageCtxPatch: NavContextMenuPatchCallback = (children, { message }: { m const settings = definePluginSettings({ hidePopoverButton: { type: OptionType.BOOLEAN, - description: "Hide the hide button in the message popover.", + description: t("hideMessages.settings.hidePopoverButton"), default: false } }); export default definePlugin({ name: "HideMessages", - description: "A plugin to temporarily hide messages until you restart.", + description: t("hideMessages.description"), authors: [EquicordDevs.yash], contextMenus: { "message": messageCtxPatch @@ -59,7 +60,7 @@ export default definePlugin({ render(message: Message) { if (settings.store.hidePopoverButton) return null; return { - label: "Hide", + label: t("hideMessages.ui.hide"), icon: EyeIcon, message, channel: ChannelStore.getChannel(message.channel_id), diff --git a/src/equicordplugins/noPushToTalk/index.ts b/src/equicordplugins/noPushToTalk/index.ts index ff5ee8682..cde91a0a9 100644 --- a/src/equicordplugins/noPushToTalk/index.ts +++ b/src/equicordplugins/noPushToTalk/index.ts @@ -5,11 +5,12 @@ */ import { EquicordDevs } from "@utils/constants"; +import { t } from "@utils/translation"; import definePlugin from "@utils/types"; export default definePlugin({ name: "NoPushToTalk", - description: "Bypasses the push-to-talk requirement for voice activity in channels that enforce it.", + description: t("noPushToTalk.description"), authors: [EquicordDevs.omaw], patches: [ { diff --git a/src/equicordplugins/triviaAI/index.tsx b/src/equicordplugins/triviaAI/index.tsx index f4c860347..196ebfcd9 100644 --- a/src/equicordplugins/triviaAI/index.tsx +++ b/src/equicordplugins/triviaAI/index.tsx @@ -6,6 +6,7 @@ import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/ContextMenu"; import { EquicordDevs } from "@utils/constants"; +import { t } from "@utils/translation"; import definePlugin, { IconComponent } from "@utils/types"; import { Message } from "@vencord/discord-types"; import { findExportedComponentLazy } from "@webpack"; @@ -27,7 +28,7 @@ const messageCtxPatch: NavContextMenuPatchCallback = (children, { message }: { m group.splice(group.findIndex(c => c?.props?.id === "copy-text") + 1, 0, ( { const ans = await getResponse(payload); @@ -39,7 +40,7 @@ const messageCtxPatch: NavContextMenuPatchCallback = (children, { message }: { m export default definePlugin({ name: "TriviaAI", - description: "A plugin that helps you answer trivia questions using AI.", + description: t("triviaAI.description"), authors: [EquicordDevs.yash], settings, contextMenus: { @@ -52,7 +53,7 @@ export default definePlugin({ if (!payload) return null; return { - label: "Answer With AI", + label: t("triviaAI.ui.answerWithAI"), icon: RobotIcon, message, channel: ChannelStore.getChannel(message.channel_id), diff --git a/src/equicordplugins/triviaAI/settings.ts b/src/equicordplugins/triviaAI/settings.ts index b4a97e823..4f35a20e9 100644 --- a/src/equicordplugins/triviaAI/settings.ts +++ b/src/equicordplugins/triviaAI/settings.ts @@ -5,12 +5,13 @@ */ import { definePluginSettings } from "@api/Settings"; +import { t } from "@utils/translation"; import { OptionType } from "@utils/types"; export const settings = definePluginSettings({ apiKey: { type: OptionType.STRING, - description: "API Key.", + description: t("triviaAI.settings.apiKey"), default: "", placeholder: "Enter API Key here for your AI endpoint.", componentProps: { @@ -19,35 +20,35 @@ export const settings = definePluginSettings({ }, model: { type: OptionType.STRING, - description: "AI Model to use.", + description: t("triviaAI.settings.model"), default: "google/gemini-3-flash-preview", placeholder: "e.g. google/gemini-3-flash-preview, inception/mercury, openai/gpt-5.2-chat, etc." }, systemPrompt: { type: OptionType.STRING, - description: "System Prompt for the AI.", + description: t("triviaAI.settings.systemPrompt"), default: "You are a helpful assistant who answers questions for the user in a concise and short way while using the least amount of words and punctuation.", placeholder: "Enter system prompt." }, maxTokens: { type: OptionType.NUMBER, - description: "Maximum number of tokens in the response.", + description: t("triviaAI.settings.maxTokens"), default: 500 }, endpoint: { type: OptionType.STRING, - description: "OpenAI Compatible AI Endpoint.", + description: t("triviaAI.settings.endpoint"), default: "https://openrouter.ai/api/v1/chat/completions", placeholder: "Enter your OpenAI compatible AI endpoint here." }, autoRespond: { type: OptionType.BOOLEAN, - description: "Automatically respond to messages on receiving a response.", + description: t("triviaAI.settings.autoRespond"), default: false }, supportImages: { type: OptionType.BOOLEAN, - description: "Pass images to the AI for context (if any). This is not supported by all models.", + description: t("triviaAI.settings.supportImages"), default: true } }); diff --git a/src/equicordplugins/voiceButtons/settings.ts b/src/equicordplugins/voiceButtons/settings.ts index e12cfe7cb..898655b0d 100644 --- a/src/equicordplugins/voiceButtons/settings.ts +++ b/src/equicordplugins/voiceButtons/settings.ts @@ -5,72 +5,73 @@ */ import { definePluginSettings } from "@api/Settings"; +import { t } from "@utils/translation"; import { OptionType } from "@utils/types"; export const settings = definePluginSettings({ showChatButton: { type: OptionType.BOOLEAN, default: true, - description: "Whether you want to display the chat button", + description: t("voiceButtons.settings.showChatButton"), restartNeeded: true, }, showMuteButton: { type: OptionType.BOOLEAN, default: true, - description: "Whether you want to display the mute button", + description: t("voiceButtons.settings.showMuteButton"), restartNeeded: true, }, showDeafenButton: { type: OptionType.BOOLEAN, default: true, - description: "Whether you want to display the deafen button", + description: t("voiceButtons.settings.showDeafenButton"), restartNeeded: true, }, muteSoundboard: { type: OptionType.BOOLEAN, default: true, - description: "Toggles their soundboard upon clicking deafen button.", + description: t("voiceButtons.settings.muteSoundboard"), }, disableVideo: { type: OptionType.BOOLEAN, default: true, - description: "Toggles their video upon clicking deafen button.", + description: t("voiceButtons.settings.disableVideo"), }, useServer: { type: OptionType.BOOLEAN, - description: "Use server mute/deafen instead of local when you have permission.", + description: t("voiceButtons.settings.useServer"), default: false, }, serverSelf: { type: OptionType.BOOLEAN, - description: "Deafen / Mute yourself on the server when using mute/deafen.", + description: t("voiceButtons.settings.serverSelf"), default: false, }, showButtonsSelf: { type: OptionType.SELECT, - description: "Whether you want to display buttons for your own user. Same functionality as other button(s) except it'll open DMs panel and mute/deafen for yourself upon clicking button(s).", + description: t("voiceButtons.settings.showButtonsSelf"), restartNeeded: true, options: [ - { label: "Display", value: "display", default: true }, - { label: "Hide", value: "hide" }, - { label: "Disable", value: "disable" }, + { label: t("voiceButtons.options.display"), value: "display", default: true }, + { label: t("voiceButtons.options.hide"), value: "hide" }, + { label: t("voiceButtons.options.disable"), value: "disable" }, ], }, whichNameToShow: { type: OptionType.SELECT, - description: "Choose whether to show nickname or username in tooltip.", + description: t("voiceButtons.settings.whichNameToShow"), options: [ - { label: "Both", value: "both", default: true }, - { label: "Global Name", value: "global" }, - { label: "Username", value: "username" }, + { label: t("voiceButtons.options.both"), value: "both", default: true }, + { label: t("voiceButtons.options.globalName"), value: "global" }, + { label: t("voiceButtons.options.username"), value: "username" }, ], }, buttonPosition: { type: OptionType.SELECT, - description: "Choose where to place voice buttons in the voice user row.", + description: t("voiceButtons.settings.buttonPosition"), options: [ - { label: "Left", value: "left", default: true }, - { label: "Right", value: "right" }, + { label: t("voiceButtons.options.left"), value: "left", default: true }, + { label: t("voiceButtons.options.right"), value: "right" }, ], } }, { diff --git a/src/equicordplugins/voiceChatUtils/index.tsx b/src/equicordplugins/voiceChatUtils/index.tsx index c41187f02..561538836 100644 --- a/src/equicordplugins/voiceChatUtils/index.tsx +++ b/src/equicordplugins/voiceChatUtils/index.tsx @@ -78,21 +78,21 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }: -1, 0, mentionVoiceUsers(channel)} /> sendPatch(channel, { channel_id: null, })} @@ -101,7 +101,7 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }: sendPatch(channel, { mute: true, })} @@ -110,7 +110,7 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }: sendPatch(channel, { mute: false, })} @@ -119,7 +119,7 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }: sendPatch(channel, { deaf: true, })} @@ -128,14 +128,14 @@ const VoiceChannelContext: NavContextMenuPatchCallback = (children, { channel }: sendPatch(channel, { deaf: false, })} /> diff --git a/src/plugins/messageClickActions/ReactEmojiSetting.tsx b/src/plugins/messageClickActions/ReactEmojiSetting.tsx index 44f78ede7..d83f81c4f 100644 --- a/src/plugins/messageClickActions/ReactEmojiSetting.tsx +++ b/src/plugins/messageClickActions/ReactEmojiSetting.tsx @@ -7,6 +7,7 @@ import "./styles.css"; import { Heading } from "@components/Heading"; +import { t } from "@utils/translation"; import type { IPluginOptionComponentProps } from "@utils/types"; import { findComponentByCodeLazy } from "@webpack"; import { TextInput, useState } from "@webpack/common"; @@ -66,7 +67,7 @@ export function ReactEmojiSetting({ setValue }: IPluginOptionComponentProps) { return (
- Select Emoji For Reactions + {t("messageClickActions.ui.selectEmojiForReactions")}
event.stopPropagation()} @@ -106,7 +107,7 @@ export function AdditionalReactEmojisSetting({ setValue }: IPluginOptionComponen return (
- Select Additional Emojis + {t("messageClickActions.ui.selectAdditionalEmojis")}
{ setEmojiList(newValue); setValue(newValue);