diff --git a/src/components/ThemeSettings/components/SettingColorComponent.tsx b/src/components/ThemeSettings/components/SettingColorComponent.tsx index 8e0582ba..f8d779f2 100644 --- a/src/components/ThemeSettings/components/SettingColorComponent.tsx +++ b/src/components/ThemeSettings/components/SettingColorComponent.tsx @@ -15,7 +15,7 @@ interface ColorPickerProps { showEyeDropper?: boolean; onChange(value: number | null): void; } -const ColorPicker = findComponentByCodeLazy(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)"); +const ColorPicker = findComponentByCodeLazy("#{intl::USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR}", ".BACKGROUND_PRIMARY)"); // TinyColor is completely unmangled and it's duplicated in two modules! Fun! const TinyColor: tinycolor.Constructor = findByCodeLazy("this._gradientType="); diff --git a/src/equicordplugins/anammox/index.ts b/src/equicordplugins/anammox/index.ts index e0861b60..e80031cb 100644 --- a/src/equicordplugins/anammox/index.ts +++ b/src/equicordplugins/anammox/index.ts @@ -74,10 +74,10 @@ export default definePlugin({ }, { // Settings, sidebar - find: "Messages.BILLING_SETTINGS", + find: "#{intl::BILLING_SETTINGS}", replacement: [ { - match: /(?<=Messages.BILLING_SETTINGS,)/, + match: /(?<=#{intl::BILLING_SETTINGS}\),)/, replace: "capitalism:true," }, { @@ -99,7 +99,7 @@ export default definePlugin({ }, { // Emoji list - find: "Messages.EMOJI_PICKER_CREATE_EMOJI_TITLE,size:", + find: "#{intl::EMOJI_PICKER_CREATE_EMOJI_TITLE}),size:", replacement: { match: /(\i)=\i\|\|!\i&&\i.\i.isEmojiCategoryNitroLocked\(\{[^}]*\}\);/, replace: "$&$1||" @@ -108,7 +108,7 @@ export default definePlugin({ }, { // Emoji category list - find: "Messages.EMOJI_CATEGORY_TOP_GUILD_EMOJI.format({", + find: "#{intl::EMOJI_CATEGORY_TOP_GUILD_EMOJI}", replacement: { match: /(?<=(\i)\.unshift\((\i)\):)(?=\1\.push\(\2\))/, replace: "$2.isNitroLocked||" diff --git a/src/equicordplugins/bannersEverywhere/index.tsx b/src/equicordplugins/bannersEverywhere/index.tsx index d3e6b164..3badaa03 100644 --- a/src/equicordplugins/bannersEverywhere/index.tsx +++ b/src/equicordplugins/bannersEverywhere/index.tsx @@ -39,7 +39,7 @@ export default definePlugin({ settings, patches: [ { - find: ".Messages.GUILD_OWNER,", + find: "#{intl::GUILD_OWNER}),", replacement: { // We add the banner as a property while we can still access the user id diff --git a/src/equicordplugins/betterBanReasons/index.tsx b/src/equicordplugins/betterBanReasons/index.tsx index 853cd1b0..892d2579 100644 --- a/src/equicordplugins/betterBanReasons/index.tsx +++ b/src/equicordplugins/betterBanReasons/index.tsx @@ -8,8 +8,9 @@ import "./style.css"; import { definePluginSettings } from "@api/Settings"; import { Devs } from "@utils/constants"; +import { getIntlMessage } from "@utils/discord"; import definePlugin, { OptionType } from "@utils/types"; -import { Button, Forms, i18n, TextInput } from "@webpack/common"; +import { Button, Forms, TextInput } from "@webpack/common"; function ReasonsComponent() { const { reasons } = settings.use(["reasons"]); @@ -72,9 +73,9 @@ export default definePlugin({ authors: [Devs.Inbestigator], patches: [ { - find: "Messages.BAN_MULTIPLE_CONFIRM_TITLE", + find: "#{intl::BAN_MULTIPLE_CONFIRM_TITLE}", replacement: [{ - match: /\[\{name:\i\.\i\.Messages\.BAN_REASON_OPTION_SPAM_ACCOUNT.+?\}\]/, + match: /\[\{name:\i\.\i\.string\(\i\.\i#{intl::BAN_REASON_OPTION_SPAM_ACCOUNT}\).+?\}\]/, replace: "$self.getReasons()" }, { @@ -87,9 +88,9 @@ export default definePlugin({ const reasons = settings.store.reasons.length ? settings.store.reasons : [ - i18n.Messages.BAN_REASON_OPTION_SPAM_ACCOUNT, - i18n.Messages.BAN_REASON_OPTION_HACKED_ACCOUNT, - i18n.Messages.BAN_REASON_OPTION_BREAKING_RULES + getIntlMessage("BAN_REASON_OPTION_SPAM_ACCOUNT"), + getIntlMessage("BAN_REASON_OPTION_HACKED_ACCOUNT"), + getIntlMessage("BAN_REASON_OPTION_BREAKING_RULES") ]; return reasons.map(s => ({ name: s, value: s })); }, diff --git a/src/equicordplugins/betterInvites/index.tsx b/src/equicordplugins/betterInvites/index.tsx index e157d077..c26e21ba 100644 --- a/src/equicordplugins/betterInvites/index.tsx +++ b/src/equicordplugins/betterInvites/index.tsx @@ -37,10 +37,10 @@ export default definePlugin({ authors: [EquicordDevs.iamme], patches: [ { - find: ".Messages.HUB_INVITE_ANOTHER_SCHOOL_LINK", + find: "#{intl::HUB_INVITE_ANOTHER_SCHOOL_LINK}", replacement: [ { - match: /,(\i)&&(\(.{0,15}\i\.TooltipContainer.+)(\i\.\i\.Messages.GUEST_MEMBERSHIP_EXPLANATION)/, + match: /,(\i)&&(\(.{0,15}\i\.TooltipContainer.+)(\i\.\i\.string\(\i\.\i#{intl::GUEST_MEMBERSHIP_EXPLANATION}\))/, replace: ",($1||((!$1)&&arguments[0].invite.expires_at)) && $2$self.RenderTip($1, $3, arguments[0].invite.expires_at)" }, { diff --git a/src/equicordplugins/betterQuickReact/index.tsx b/src/equicordplugins/betterQuickReact/index.tsx index c3186ec4..85b3b12e 100644 --- a/src/equicordplugins/betterQuickReact/index.tsx +++ b/src/equicordplugins/betterQuickReact/index.tsx @@ -59,7 +59,7 @@ export default definePlugin({ } }, { - find: ".ADD_REACTION_NAMED.format", + find: "#{intl::ADD_REACTION_NAMED}", group: true, replacement: [ // Override limit of emojis to display with offset hook. diff --git a/src/equicordplugins/betterUserArea/index.tsx b/src/equicordplugins/betterUserArea/index.tsx index 5724e5ec..06c72bc5 100644 --- a/src/equicordplugins/betterUserArea/index.tsx +++ b/src/equicordplugins/betterUserArea/index.tsx @@ -15,7 +15,7 @@ export default definePlugin({ description: "Reworks the user area styling to fit more buttons and overall look nicer", authors: [Devs.Samwich], patches: [{ - find: ".Messages.ACCOUNT_SPEAKING_WHILE_MUTED", + find: "#{intl::ACCOUNT_SPEAKING_WHILE_MUTED}", replacement: [ // add a custom class to make things easier diff --git a/src/equicordplugins/channelTabs/components/BookmarkContainer.tsx b/src/equicordplugins/channelTabs/components/BookmarkContainer.tsx index 4cc2ae7c..19565f96 100644 --- a/src/equicordplugins/channelTabs/components/BookmarkContainer.tsx +++ b/src/equicordplugins/channelTabs/components/BookmarkContainer.tsx @@ -5,10 +5,11 @@ */ import { classNameFactory } from "@api/Styles"; +import { getIntlMessage } from "@utils/discord"; import { classes } from "@utils/misc"; import { closeModal, openModal } from "@utils/modal"; import { findByPropsLazy } from "@webpack"; -import { Avatar, ChannelStore, ContextMenuApi, FluxDispatcher, GuildStore, i18n, Menu, ReadStateStore, ReadStateUtils, Text, Tooltip, useDrag, useDrop, useEffect, useRef, UserStore } from "@webpack/common"; +import { Avatar, ChannelStore, ContextMenuApi, FluxDispatcher, GuildStore, Menu, ReadStateStore, ReadStateUtils, Text, Tooltip, useDrag, useDrop, useEffect, useRef, UserStore } from "@webpack/common"; import { BasicChannelTabsProps, Bookmark, BookmarkFolder, BookmarkProps, CircleQuestionIcon, isBookmarkFolder, settings, switchChannel, useBookmarks } from "../util"; import { NotificationDot } from "./ChannelTab"; @@ -108,7 +109,7 @@ function BookmarkFolderOpenMenu(props: BookmarkProps) { ReadStateUtils.ackChannel(ChannelStore.getChannel(b.channelId))} /> diff --git a/src/equicordplugins/channelTabs/components/ChannelTab.tsx b/src/equicordplugins/channelTabs/components/ChannelTab.tsx index 0a9756a6..3bdd20ce 100644 --- a/src/equicordplugins/channelTabs/components/ChannelTab.tsx +++ b/src/equicordplugins/channelTabs/components/ChannelTab.tsx @@ -5,10 +5,10 @@ */ import { classNameFactory } from "@api/Styles"; -import { getUniqueUsername } from "@utils/discord"; +import { getIntlMessage, getUniqueUsername } from "@utils/discord"; import { classes } from "@utils/misc"; import { findByPropsLazy, findComponentByCodeLazy } from "@webpack"; -import { Avatar, ChannelStore, ContextMenuApi, Dots, GuildStore, i18n, PresenceStore, ReadStateStore, Text, TypingStore, useDrag, useDrop, useRef, UserStore, useStateFromStores } from "@webpack/common"; +import { Avatar, ChannelStore, ContextMenuApi, Dots, GuildStore, PresenceStore, ReadStateStore, Text, TypingStore, useDrag, useDrop, useRef, UserStore, useStateFromStores } from "@webpack/common"; import { Channel, Guild, User } from "discord-types/general"; import { ChannelTabsProps, CircleQuestionIcon, closeTab, isTabSelected, moveDraggedTabs, moveToTab, openedTabs, settings } from "../util"; @@ -113,22 +113,22 @@ function ChannelTabContent(props: ChannelTabsProps & { ); else { - let name = `${i18n.Messages.UNKNOWN_CHANNEL} (${channelId})`; + let name = `${getIntlMessage("UNKNOWN_CHANNEL")} (${channelId})`; switch (channelId) { case "customize-community": - name = i18n.Messages.CHANNELS_AND_ROLES; + name = getIntlMessage("CHANNELS_AND_ROLES"); break; case "channel-browser": - name = i18n.Messages.GUILD_SIDEBAR_CHANNEL_BROWSER; + name = getIntlMessage("GUILD_SIDEBAR_CHANNEL_BROWSER"); break; case "shop": - name = i18n.Messages.GUILD_SHOP_CHANNEL_LABEL; + name = getIntlMessage("GUILD_SHOP_CHANNEL_LABEL"); break; case "member-safety": - name = i18n.Messages.MEMBER_SAFETY_CHANNEL_TITLE; + name = getIntlMessage("MEMBER_SAFETY_CHANNEL_TITLE"); break; case "@home": - name = i18n.Messages.SERVER_GUIDE; + name = getIntlMessage("SERVER_GUIDE"); break; } return ( @@ -168,7 +168,7 @@ function ChannelTabContent(props: ChannelTabsProps & { return ( <> - {!compact && {channel?.name || i18n.Messages.GROUP_DM}} + {!compact && {channel?.name || getIntlMessage("GROUP_DM")}} @@ -180,14 +180,14 @@ function ChannelTabContent(props: ChannelTabsProps & { return ( <> - {!compact && {i18n.Messages.FRIENDS}} + {!compact && {getIntlMessage("FRIENDS")}} ); return ( <> - {!compact && {i18n.Messages.UNKNOWN_CHANNEL}} + {!compact && {getIntlMessage("UNKNOWN_CHANNEL")}} ); } diff --git a/src/equicordplugins/channelTabs/components/ContextMenus.tsx b/src/equicordplugins/channelTabs/components/ContextMenus.tsx index 38a74a62..d29cc09a 100644 --- a/src/equicordplugins/channelTabs/components/ContextMenus.tsx +++ b/src/equicordplugins/channelTabs/components/ContextMenus.tsx @@ -4,9 +4,10 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import { getIntlMessage } from "@utils/discord"; import { Margins } from "@utils/margins"; import { closeModal, ModalContent, ModalFooter, ModalHeader, ModalProps, ModalRoot, openModal } from "@utils/modal"; -import { Button, ChannelStore, FluxDispatcher, Forms, i18n, Menu, ReadStateStore, ReadStateUtils, Select, Text, TextInput, useState } from "@webpack/common"; +import { Button, ChannelStore, FluxDispatcher, Forms, Menu, ReadStateStore, ReadStateUtils, Select, Text, TextInput, useState } from "@webpack/common"; import { bookmarkFolderColors, bookmarkPlaceholderName, closeOtherTabs, closeTab, closeTabsToTheLeft, closeTabsToTheRight, createTab, hasClosedTabs, isBookmarkFolder, openedTabs, reopenClosedTab, settings, toggleCompactTab } from "../util"; import { Bookmark, BookmarkFolder, Bookmarks, ChannelTabsProps, UseBookmarkMethods } from "../util/types"; @@ -177,7 +178,7 @@ export function BookmarkContextMenu({ bookmarks, index, methods }: { bookmarks: {bookmarkNotificationDot && !isFolder && ReadStateUtils.ackChannel(ChannelStore.getChannel(bookmark.channelId))} /> @@ -287,7 +288,7 @@ export function TabContextMenu({ tab }: { tab: ChannelTabsProps; }) { {channel && ReadStateUtils.ackChannel(channel)} /> diff --git a/src/equicordplugins/clientSideBlock/index.tsx b/src/equicordplugins/clientSideBlock/index.tsx index ee0ee741..2301322c 100644 --- a/src/equicordplugins/clientSideBlock/index.tsx +++ b/src/equicordplugins/clientSideBlock/index.tsx @@ -167,7 +167,7 @@ export default definePlugin({ }, // "1 blocked message" { - find: "Messages.BLOCKED_MESSAGES_HIDE.format", + find: "#{intl::BLOCKED_MESSAGES_HIDE}", replacement: { match: /\i.memo\(function\(\i\){/, replace: "$&return null;" diff --git a/src/equicordplugins/customTimestamps/index.tsx b/src/equicordplugins/customTimestamps/index.tsx index 59024930..9644c091 100644 --- a/src/equicordplugins/customTimestamps/index.tsx +++ b/src/equicordplugins/customTimestamps/index.tsx @@ -67,7 +67,7 @@ export default definePlugin({ ), patches: [{ - find: "MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL.format", + find: "#{intl::MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL}", replacement: [ { match: /(?<=\i=\i\?)\(0,\i\.\i\)\((\i),"LT"\):\(0,\i\.\i\)\(\i\)/, diff --git a/src/equicordplugins/deadMembers/index.tsx b/src/equicordplugins/deadMembers/index.tsx index 7e253de4..1da633c8 100644 --- a/src/equicordplugins/deadMembers/index.tsx +++ b/src/equicordplugins/deadMembers/index.tsx @@ -22,7 +22,7 @@ export default definePlugin({ } }, { - find: "Messages.FORUM_POST_AUTHOR_A11Y_LABEL", + find: "#{intl::FORUM_POST_AUTHOR_A11Y_LABEL}", replacement: { match: /(?<=\}=(\i),\{(user:\i,author:\i)\}=.{0,400}?\(\i\.Fragment,{children:)\i(?=}\),)/, replace: "$self.wrapForumAuthor({...$1,$2},$&)" diff --git a/src/equicordplugins/frequentQuickSwitcher/index.tsx b/src/equicordplugins/frequentQuickSwitcher/index.tsx index 52994d9c..c2d61a11 100644 --- a/src/equicordplugins/frequentQuickSwitcher/index.tsx +++ b/src/equicordplugins/frequentQuickSwitcher/index.tsx @@ -41,7 +41,7 @@ export default definePlugin({ generateSearchResults: generateSearchResults, patches: [ { - find: ".QUICKSWITCHER_PLACEHOLDER", + find: "#{intl::QUICKSWITCHER_PLACEHOLDER}", replacement: { match: /let{selectedIndex:\i,results:\i}/, replace: "this.props.results = $self.generateSearchResults(this.state.query);$&" diff --git a/src/equicordplugins/friendTags/index.tsx b/src/equicordplugins/friendTags/index.tsx index e6c2b9d9..7cf3b2ef 100644 --- a/src/equicordplugins/friendTags/index.tsx +++ b/src/equicordplugins/friendTags/index.tsx @@ -212,7 +212,7 @@ export default definePlugin({ queryFriendTags: queryFriendTags, patches: [ { - find: ".QUICKSWITCHER_PLACEHOLDER", + find: "#{intl::QUICKSWITCHER_PLACEHOLDER}", replacement: { match: /let{selectedIndex:\i,results:\i}/, replace: "if(this.state.query.includes(\"&\")){ this.props.results = $self.queryFriendTags(this.state.query); }$&" diff --git a/src/equicordplugins/fullUserInChatbox/index.tsx b/src/equicordplugins/fullUserInChatbox/index.tsx index 51e60676..b51c488c 100644 --- a/src/equicordplugins/fullUserInChatbox/index.tsx +++ b/src/equicordplugins/fullUserInChatbox/index.tsx @@ -17,7 +17,7 @@ export default definePlugin({ patches: [ { - find: "UNKNOWN_ROLE_PLACEHOLDER]", + find: "#{intl::UNKNOWN_ROLE_PLACEHOLDER})]", replacement: { match: /(hidePersonalInformation.*?)return/, replace: "$1return $self.patchChatboxMention(arguments[0]);" diff --git a/src/equicordplugins/glide/index.tsx b/src/equicordplugins/glide/index.tsx index 8e98b3bc..6b31fee8 100644 --- a/src/equicordplugins/glide/index.tsx +++ b/src/equicordplugins/glide/index.tsx @@ -88,7 +88,7 @@ function CopyPresetComponent() { ); } -const ColorPicker = findComponentByCodeLazy(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)"); +const ColorPicker = findComponentByCodeLazy("#{intl::USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR}", ".BACKGROUND_PRIMARY)"); export function generateAndApplyProceduralTheme() { diff --git a/src/equicordplugins/hideServers/index.tsx b/src/equicordplugins/hideServers/index.tsx index a7dfbd4a..789884b5 100644 --- a/src/equicordplugins/hideServers/index.tsx +++ b/src/equicordplugins/hideServers/index.tsx @@ -77,7 +77,7 @@ export default definePlugin({ find: '("guildsnav")', replacement: [ { - match: /(?<=Messages\.SERVERS,children:.{0,300}?)(\i)(\)?\.map\(\i\))/, + match: /(?<=#{intl::SERVERS}\),children:.{0,300}?)(\i)(\)?\.map\(\i\))/, replace: "$self.useFilteredGuilds($1)$2", }, // despite my best efforts, the above doesnt trigger a rerender @@ -88,7 +88,7 @@ export default definePlugin({ ] }, { - find: "QUICKSWITCHER_PROTIP.format", + find: "#{intl::QUICKSWITCHER_PROTIP}", replacement: { match: /(?<=renderResults\(\){)let{query/, replace: "this.props.results = $self.filteredGuildResults(this.props.results);$&", diff --git a/src/equicordplugins/homeTyping/index.tsx b/src/equicordplugins/homeTyping/index.tsx index f54ef98f..7331753e 100644 --- a/src/equicordplugins/homeTyping/index.tsx +++ b/src/equicordplugins/homeTyping/index.tsx @@ -26,7 +26,7 @@ export default definePlugin({ }, patches: [ { - find: ".Messages.DISCODO_DISABLED", + find: "#{intl::DISCODO_DISABLED}", replacement: [ { diff --git a/src/equicordplugins/identity/index.tsx b/src/equicordplugins/identity/index.tsx index 58462594..b39e1683 100644 --- a/src/equicordplugins/identity/index.tsx +++ b/src/equicordplugins/identity/index.tsx @@ -140,7 +140,7 @@ export default definePlugin({ { find: "DefaultCustomizationSections", replacement: { - match: /(?<=USER_SETTINGS_AVATAR_DECORATION},"decoration"\),)/, + match: /(?<=#{intl::USER_SETTINGS_AVATAR_DECORATION}\)},"decoration"\),)/, replace: "$self.ResetCard()," } }, diff --git a/src/equicordplugins/ignoreTerms/index.ts b/src/equicordplugins/ignoreTerms/index.ts index dc25dcf3..9fd92261 100644 --- a/src/equicordplugins/ignoreTerms/index.ts +++ b/src/equicordplugins/ignoreTerms/index.ts @@ -13,7 +13,7 @@ export default definePlugin({ authors: [Devs.D3SOX], patches: [ { - find: "Messages.NEW_TERMS_TITLE", + find: "#{intl::NEW_TERMS_TITLE}", replacement: { match: /function (\i)\((\i)\)\{let\{transitionState:(\i)\}=(\i)/g, replace: "function $1($2){return $self.closeModal($2);let{transitionState:$3}=$4" diff --git a/src/equicordplugins/keywordNotify/index.tsx b/src/equicordplugins/keywordNotify/index.tsx index bf4cc2a3..f4e15bcc 100644 --- a/src/equicordplugins/keywordNotify/index.tsx +++ b/src/equicordplugins/keywordNotify/index.tsx @@ -33,7 +33,7 @@ const recentMentionsPopoutClass = findByPropsLazy("recentMentionsPopout"); const tabClass = findByPropsLazy("inboxTitle", "tab"); const buttonClass = findByPropsLazy("size36"); const MenuHeader = findByCodeLazy(".getUnseenInviteCount())"); -const Popout = findByCodeLazy(".Messages.UNBLOCK_TO_JUMP_TITLE", "canCloseAllMessages:"); +const Popout = findByCodeLazy("#{intl::UNBLOCK_TO_JUMP_TITLE}", "canCloseAllMessages:"); const createMessageRecord = findByCodeLazy(".createFromServer(", ".isBlockedForMessage", "messageReference:"); const KEYWORD_ENTRIES_KEY = "KeywordNotify_keywordEntries"; const KEYWORD_LOG_KEY = "KeywordNotify_log"; @@ -313,14 +313,14 @@ export default definePlugin({ settings, patches: [ { - find: "Messages.UNREADS_TAB_LABEL}", + find: "#{intl::UNREADS_TAB_LABEL}", replacement: { match: /\i\?\(0,\i\.jsxs\)\(\i\.TabBar\.Item/, replace: "$self.keywordTabBar(),$&" } }, { - find: "location:\"RecentsPopout\"})", + find: "location:\"RecentsPopout\"});", replacement: { match: /:(\i)===\i\.\i\.MENTIONS\?\(0,.+?setTab:(\i),onJump:(\i),badgeState:\i,closePopout:(\i)/, replace: ": $1 === 8 ? $self.tryKeywordMenu($2, $3, $4) $&" diff --git a/src/equicordplugins/loginWithQR/index.tsx b/src/equicordplugins/loginWithQR/index.tsx index dbadb292..955576ab 100644 --- a/src/equicordplugins/loginWithQR/index.tsx +++ b/src/equicordplugins/loginWithQR/index.tsx @@ -6,8 +6,9 @@ import { definePluginSettings } from "@api/Settings"; import { EquicordDevs } from "@utils/constants"; +import { getIntlMessage } from "@utils/discord"; import definePlugin, { OptionType } from "@utils/types"; -import { Button, Forms, i18n, Menu } from "@webpack/common"; +import { Button, Forms, Menu } from "@webpack/common"; import { ReactElement } from "react"; import { preload, unload } from "./images"; @@ -33,7 +34,7 @@ export default definePlugin({ return ( ); }, @@ -58,13 +59,13 @@ export default definePlugin({ replacement: { // Find the Edit User Profile button and insert our custom button. // A bit jank, but whatever - match: /,(.{11}\.Button,.{58}\.USER_SETTINGS_EDIT_USER_PROFILE}\))/, + match: /,(.{0,20}\.Button,.{0,100}#{intl::USER_SETTINGS_EDIT_USER_PROFILE}\)}\))/, replace: ",$self.insertScanQrButton($1)", }, }, // Insert a Scan QR Code MenuItem in the Swith Accounts popout { - find: ".SWITCH_ACCOUNTS_MANAGE_ACCOUNTS,", + find: 'id:"manage-accounts"', replacement: { match: /(id:"manage-accounts",.*?)}\)\)(,\i)/, replace: "$1}),$self.ScanQrMenuItem)$2" @@ -94,21 +95,21 @@ export default definePlugin({ insertScanQrButton: (button: ReactElement) => (
{button}
), get ScanQrMenuItem() { - return ; + return ; }, get ScanQrSettingsSheet() { return { - section: i18n.Messages.USER_SETTINGS_SCAN_QR_CODE, + section: getIntlMessage("USER_SETTINGS_SCAN_QR_CODE"), onClick: openQrModal, - searchableTitles: [i18n.Messages.USER_SETTINGS_SCAN_QR_CODE], - label: i18n.Messages.USER_SETTINGS_SCAN_QR_CODE, - ariaLabel: i18n.Messages.USER_SETTINGS_SCAN_QR_CODE + searchableTitles: [getIntlMessage("USER_SETTINGS_SCAN_QR_CODE")], + label: getIntlMessage("USER_SETTINGS_SCAN_QR_CODE"), + ariaLabel: getIntlMessage("USER_SETTINGS_SCAN_QR_CODE") }; }, diff --git a/src/equicordplugins/loginWithQR/ui/modals/QrModal.tsx b/src/equicordplugins/loginWithQR/ui/modals/QrModal.tsx index 2cd87a73..77ae5170 100644 --- a/src/equicordplugins/loginWithQR/ui/modals/QrModal.tsx +++ b/src/equicordplugins/loginWithQR/ui/modals/QrModal.tsx @@ -4,6 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import { getIntlMessage } from "@utils/discord"; import { ModalContent, ModalHeader, @@ -15,7 +16,6 @@ import { import { findByPropsLazy } from "@webpack"; import { Button, - i18n, RestAPI, Text, useEffect, @@ -372,7 +372,7 @@ function QrModal(props: ModalProps) { tag="h1" style={{ flexGrow: 1 }} > - {i18n.Messages.USER_SETTINGS_SCAN_QR_CODE} + {getIntlMessage("USER_SETTINGS_SCAN_QR_CODE")} diff --git a/src/equicordplugins/loginWithQR/ui/modals/VerifyModal.tsx b/src/equicordplugins/loginWithQR/ui/modals/VerifyModal.tsx index fb1a6dcd..49ffd413 100644 --- a/src/equicordplugins/loginWithQR/ui/modals/VerifyModal.tsx +++ b/src/equicordplugins/loginWithQR/ui/modals/VerifyModal.tsx @@ -4,6 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import { getIntlMessage } from "@utils/discord"; import { ModalContent, ModalFooter, @@ -15,7 +16,6 @@ import { import { findByPropsLazy } from "@webpack"; import { Button, - i18n, RestAPI, Text, useEffect, @@ -131,14 +131,14 @@ function VerifyModal({ tag="h1" className={cl("device-header")} > - {i18n.Messages.QR_CODE_LOGIN_SUCCESS} + {getIntlMessage("QR_CODE_LOGIN_SUCCESS")} - {i18n.Messages.QR_CODE_LOGIN_SUCCESS_FLAVOR} + {getIntlMessage("QR_CODE_LOGIN_SUCCESS_FLAVOR")} ) : state === VerifyState.NotFound ? ( @@ -155,14 +155,14 @@ function VerifyModal({ tag="h1" className={cl("device-header")} > - {i18n.Messages.QR_CODE_NOT_FOUND} + {getIntlMessage("QR_CODE_NOT_FOUND")} - {i18n.Messages.QR_CODE_NOT_FOUND_DESCRIPTION} + {getIntlMessage("QR_CODE_NOT_FOUND_DESCRIPTION")} ) : ( @@ -179,7 +179,7 @@ function VerifyModal({ tag="h1" className={cl("device-header")} > - {i18n.Messages.QR_CODE_LOGIN_CONFIRM} + {getIntlMessage("QR_CODE_LOGIN_CONFIRM")} Never scan a login QR code from another user or application. @@ -205,7 +205,7 @@ function VerifyModal({ {state === VerifyState.LoggedIn ? ( ) : ( )} diff --git a/src/equicordplugins/messageLinkTooltip/index.tsx b/src/equicordplugins/messageLinkTooltip/index.tsx index debd6d26..89116658 100644 --- a/src/equicordplugins/messageLinkTooltip/index.tsx +++ b/src/equicordplugins/messageLinkTooltip/index.tsx @@ -101,7 +101,7 @@ export default definePlugin({ predicate: () => settings.store.onLink, }, { - find: "Messages.REPLY_QUOTE_MESSAGE_NOT_LOADED", + find: "#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED}", replacement: { // Should match two places match: /(\i\.Clickable),\{/g, @@ -110,7 +110,7 @@ export default definePlugin({ predicate: () => settings.store.onReply, }, { - find: "Messages.MESSAGE_FORWARDED}", + find: "#{intl::MESSAGE_FORWARDED}", replacement: { match: /(\i\.Clickable),\{/, replace: "$self.ForwardTooltip,{Component:$1,vcProps:arguments[0]," diff --git a/src/equicordplugins/moreStickers/index.tsx b/src/equicordplugins/moreStickers/index.tsx index bcd56fbe..f02e6dc3 100644 --- a/src/equicordplugins/moreStickers/index.tsx +++ b/src/equicordplugins/moreStickers/index.tsx @@ -32,7 +32,7 @@ export default definePlugin({ patches: [ { - find: "STICKER_BUTTON_LABEL,", + find: "#{intl::STICKER_BUTTON_LABEL}", replacement: [{ match: /(children:\(0,\w\.jsx\)\()([\w.]+?)(,{innerClassName.{10,30}\.stickerButton)/, replace: (_, head, button, tail) => { @@ -64,11 +64,11 @@ export default definePlugin({ } }, { - find: ".Messages.EXPRESSION_PICKER_GIF", + find: "#{intl::EXPRESSION_PICKER_GIF}", replacement: { - match: /role:"tablist",.+?\.Messages\.EXPRESSION_PICKER_CATEGORIES_A11Y_LABEL,children:(\[.*?\)\]}\)}\):null,)(.*?closePopout:\w.*?:null)/s, + match: /role:"tablist",.+?#{intl::EXPRESSION_PICKER_CATEGORIES_A11Y_LABEL}\),children:(\[.*?\)\]}\)}\):null,)(.*?closePopout:\w.*?:null)/s, replace: m => { - const stickerTabRegex = /(\w+?)\?(\([^()]+?\))\((.{1,2}),{.{0,128},isActive:(.{1,2})===.{1,150},children:(.{1,10}Messages.EXPRESSION_PICKER_STICKER).*?:null/s; + const stickerTabRegex = /(\w+?)\?(\([^()]+?\))\((.{1,2}),{.{0,128},isActive:(.{1,2})===.{1,150},children:(.{1,10}#{intl::EXPRESSION_PICKER_STICKER}).*?:null/s; const res = m.replace(stickerTabRegex, (_m, canUseStickers, jsx, tabHeaderComp, currentTab, stickerText) => { const isActive = `${currentTab}==="stickers+"`; return ( diff --git a/src/equicordplugins/noAppsAllowed/index.tsx b/src/equicordplugins/noAppsAllowed/index.tsx index a31bf239..70b1443c 100644 --- a/src/equicordplugins/noAppsAllowed/index.tsx +++ b/src/equicordplugins/noAppsAllowed/index.tsx @@ -14,10 +14,10 @@ export default definePlugin({ patches: [ { - find: ",APP_TAG:\"", + find: "#{intl::APP_TAG})", replacement: { - match: /APP_TAG:".*?"/, - replace: "APP_TAG:\"BOT\"" + match: /\i\.\i\.string\(\i\.\i#{intl::APP_TAG}\)/, + replace: '"BOT"' } } ], diff --git a/src/equicordplugins/notificationTitle/index.tsx b/src/equicordplugins/notificationTitle/index.tsx index fa3dfff8..2bb27fd5 100644 --- a/src/equicordplugins/notificationTitle/index.tsx +++ b/src/equicordplugins/notificationTitle/index.tsx @@ -5,9 +5,10 @@ */ import { Devs } from "@utils/constants"; +import { getIntlMessage } from "@utils/discord"; import definePlugin from "@utils/types"; import { findByCodeLazy, findByPropsLazy } from "@webpack"; -import { ChannelStore, GuildStore, i18n, RelationshipStore, UserStore } from "@webpack/common"; +import { ChannelStore, GuildStore, RelationshipStore, UserStore } from "@webpack/common"; const { getName } = findByPropsLazy("getName", "useName", "getNickname"); const computeChannelName = findByCodeLazy(".isThread())return'\"'.concat("); @@ -39,7 +40,7 @@ export default definePlugin({ if (message.type === MessageTypes.REPLY && message.referenced_message?.author) { const replyUser = UserStore.getUser(message.referenced_message.author.id); const replyUsername = getName(channel.guild_id, channel.id, replyUser); - title = i18n.Messages.CHANNEL_MESSAGE_REPLY_A11Y_LABEL.format({ + title = getIntlMessage("CHANNEL_MESSAGE_REPLY_A11Y_LABEL", { author: username, repliedAuthor: replyUsername, }); diff --git a/src/equicordplugins/pinIcon/index.tsx b/src/equicordplugins/pinIcon/index.tsx index d9e58067..cb603e6e 100644 --- a/src/equicordplugins/pinIcon/index.tsx +++ b/src/equicordplugins/pinIcon/index.tsx @@ -27,9 +27,9 @@ export default definePlugin({ authors: [EquicordDevs.iamme], patches: [ { - find: "Messages.MESSAGE_EDITED,", + find: "#{intl::MESSAGE_EDITED}),", replacement: { - match: /Messages\.MESSAGE_EDITED,(?:[^}]*[}]){3}\)/, + match: /#{intl::MESSAGE_EDITED}\),(?:[^}]*[}]){3}\)/, replace: "$&,$self.PinnedIcon(arguments[0].message)" } } diff --git a/src/equicordplugins/showBadgesInChat/index.tsx b/src/equicordplugins/showBadgesInChat/index.tsx index dbc0c116..7d09e81f 100644 --- a/src/equicordplugins/showBadgesInChat/index.tsx +++ b/src/equicordplugins/showBadgesInChat/index.tsx @@ -11,7 +11,7 @@ import definePlugin from "@utils/types"; import { findByPropsLazy, findComponentByCodeLazy } from "@webpack"; import badges from "plugins/_api/badges"; const roleIconClassName = findByPropsLazy("roleIcon", "separator").roleIcon; -const RoleIconComponent = findComponentByCodeLazy(".Messages.ROLE_ICON_ALT_TEXT"); +const RoleIconComponent = findComponentByCodeLazy("#{intl::ROLE_ICON_ALT_TEXT}"); import "./styles.css"; import { User } from "discord-types/general"; diff --git a/src/equicordplugins/sidebarChat/index.tsx b/src/equicordplugins/sidebarChat/index.tsx index daf9cc73..8614e729 100644 --- a/src/equicordplugins/sidebarChat/index.tsx +++ b/src/equicordplugins/sidebarChat/index.tsx @@ -34,7 +34,7 @@ const { HeaderBar, HeaderBarIcon } = mapMangledModuleLazy(".themedMobile]:", { }); const Chat = findComponentByCodeLazy("filterAfterTimestamp:", "chatInputType"); const Resize = findComponentByCodeLazy("sidebarType:", "homeSidebarWidth"); -const ChannelHeader = findComponentByCodeLazy(".Messages.HUB_DIRECTORY_CHANNEL_TITLE.format({"); +const ChannelHeader = findComponentByCodeLazy("#{intl::HUB_DIRECTORY_CHANNEL_TITLE}"); const ChatInputTypes = findByPropsLazy("FORM", "NORMAL"); const Sidebars = findByPropsLazy("ThreadSidebar", "MessageRequestSidebar"); diff --git a/src/equicordplugins/statusPresets/index.tsx b/src/equicordplugins/statusPresets/index.tsx index 6761caa3..5889448d 100644 --- a/src/equicordplugins/statusPresets/index.tsx +++ b/src/equicordplugins/statusPresets/index.tsx @@ -131,14 +131,14 @@ export default definePlugin({ dependencies: ["UserSettingsAPI"], patches: [ { - find: "Messages.CUSTOM_STATUS_SET_CUSTOM_STATUS}", + find: "#{intl::CUSTOM_STATUS_SET_CUSTOM_STATUS}", replacement: { - match: /\.ModalFooter,.{0,70}\.Messages\.SAVE\}\)/, + match: /\.ModalFooter,.{0,70}\i\.\i\.string\(\i\.\i#{intl::SAVE}\)\}\)/, replace: "$&,$self.renderRememberButton(this.state)" } }, { - find: /"aria-label":.{0,3}\.Messages.STATUS_MENU_LABEL/, + find: /"aria-label":.{0,1}\.\i\.string\(\i\.\i#{intl::STATUS_MENU_LABEL}/, replacement: { match: /!\i&&(.{0,15}\i\.Fragment.{0,55}null==(\i).{0,200}customEmojiPlaceholder\}\),onClick:([^}]+}))/, replace: "$self.render($2, $3),false&&$1" diff --git a/src/equicordplugins/timezones/index.tsx b/src/equicordplugins/timezones/index.tsx index 9dc1ad41..970ed28e 100644 --- a/src/equicordplugins/timezones/index.tsx +++ b/src/equicordplugins/timezones/index.tsx @@ -14,7 +14,7 @@ import { Devs } from "@utils/constants"; import { openModal } from "@utils/modal"; import definePlugin, { OptionType } from "@utils/types"; import { findByPropsLazy } from "@webpack"; -import { i18n, Menu, Tooltip, useEffect, useState } from "@webpack/common"; +import { Menu, Tooltip, useEffect, useState } from "@webpack/common"; import { Message, User } from "discord-types/general"; import { SetTimezoneModal } from "./TimezoneModal"; @@ -27,6 +27,7 @@ export let timezones: Record = {}; })(); const classes = findByPropsLazy("timestamp", "compact", "contentOnly"); +const locale = findByPropsLazy("getLocale"); export const settings = definePluginSettings({ "24h Time": { @@ -50,7 +51,7 @@ export const settings = definePluginSettings({ function getTime(timezone: string, timestamp: string | number, props: Intl.DateTimeFormatOptions = {}) { const date = new Date(timestamp); - const formatter = new Intl.DateTimeFormat(i18n?.getLocale?.() ?? "en-US", { + const formatter = new Intl.DateTimeFormat(locale.getLocale() ?? "en-US", { hour12: !settings.store["24h Time"], timeZone: timezone, ...props diff --git a/src/equicordplugins/viewRaw2/index.tsx b/src/equicordplugins/viewRaw2/index.tsx index 8b709abf..4518d3b2 100644 --- a/src/equicordplugins/viewRaw2/index.tsx +++ b/src/equicordplugins/viewRaw2/index.tsx @@ -8,10 +8,11 @@ import { NavContextMenuPatchCallback } from "@api/ContextMenu"; import { CodeBlock } from "@components/CodeBlock"; import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; +import { getIntlMessage } from "@utils/discord"; import { Margins } from "@utils/margins"; import { closeModal, ModalCloseButton, ModalContent, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal"; import definePlugin from "@utils/types"; -import { Forms, i18n, Menu, Text } from "@webpack/common"; +import { Forms, Menu, Text } from "@webpack/common"; import { Message } from "discord-types/general"; type CustomMessage = Message & { editHistory?: any; deleted?: any; firstEditTimestamp?: any; }; @@ -64,7 +65,7 @@ function openViewRawModal(obj: any, type: string, isMessage?: boolean) { function makeContextCallback(name: string, action: (any) => void): NavContextMenuPatchCallback { return (children, props) => { - if (props.label === i18n.Messages.CHANNEL_ACTIONS_MENU_LABEL) return; // random shit like notification settings + if (props.label === getIntlMessage("CHANNEL_ACTIONS_MENU_LABEL")) return; // random shit like notification settings const value = props[name]; if (!value) return; diff --git a/src/equicordplugins/whitelistedEmojis/index.tsx b/src/equicordplugins/whitelistedEmojis/index.tsx index 5354642a..8c97de45 100644 --- a/src/equicordplugins/whitelistedEmojis/index.tsx +++ b/src/equicordplugins/whitelistedEmojis/index.tsx @@ -601,7 +601,7 @@ export default definePlugin({ authors: [EquicordDevs.creations], patches: [ { - find: ".Messages.EMOJI_MATCHING", + find: "#{intl::EMOJI_MATCHING}", replacement: { match: /renderResults\((\i)\){/, replace: "$&$1.results.emojis=$self.filterEmojis($1);if($1.results.emojis.length===0)return;" diff --git a/src/equicordplugins/whosWatching/index.tsx b/src/equicordplugins/whosWatching/index.tsx index b26f4af7..4247c583 100644 --- a/src/equicordplugins/whosWatching/index.tsx +++ b/src/equicordplugins/whosWatching/index.tsx @@ -9,12 +9,12 @@ import { classNameFactory } from "@api/Styles"; import ErrorBoundary from "@components/ErrorBoundary"; import { Flex } from "@components/Flex"; import { EquicordDevs } from "@utils/constants"; -import { openUserProfile } from "@utils/discord"; +import { getIntlMessage, openUserProfile } from "@utils/discord"; import { Margins } from "@utils/margins"; import { classes } from "@utils/misc"; import definePlugin, { OptionType } from "@utils/types"; import { findByPropsLazy, findComponentByCodeLazy, findStoreLazy } from "@webpack"; -import { Clickable, Forms, i18n, RelationshipStore, Tooltip, UserStore, useStateFromStores } from "@webpack/common"; +import { Clickable, Forms, RelationshipStore, Tooltip, UserStore, useStateFromStores } from "@webpack/common"; import { User } from "discord-types/general"; interface WatchingProps { @@ -46,7 +46,7 @@ function Watching({ userIds, guildId }: WatchingProps): JSX.Element {
{userIds.length ? (<> - {i18n.Messages.SPECTATORS.format({ numViewers: userIds.length })} + {getIntlMessage("SPECTATORS", { numViewers: userIds.length })} {users.map(user => ( @@ -54,7 +54,7 @@ function Watching({ userIds, guildId }: WatchingProps): JSX.Element { {getUsername(user)} ))} - {missingUsers > 0 && {`+${i18n.Messages.NUM_USERS.format({ num: missingUsers })}`}} + {missingUsers > 0 && {`+${getIntlMessage("NUM_USERS", { num: missingUsers })}`}} ) : (No spectators)} @@ -121,7 +121,7 @@ export default definePlugin({ {users.length ? <> - {i18n.Messages.SPECTATORS.format({ numViewers: userIds.length })} + {getIntlMessage("SPECTATORS", { numViewers: userIds.length })}