Merge branch 'l10n_translation' of https://github.com/Equicord/Equicord into l10n_translation
This commit is contained in:
commit
ab66705ed4
83 changed files with 2815 additions and 809 deletions
|
|
@ -1327,4 +1327,4 @@
|
|||
"scanQrCode": "Scan QR Code"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +1,25 @@
|
|||
{
|
||||
"commands": {
|
||||
"errorExecuting": "An Error occurred while executing command \"{name}\""
|
||||
"errorExecuting": "حدث خطأ أثناء تنفيذ الأمر \"{name}\""
|
||||
},
|
||||
"notifications": {
|
||||
"dismissNotification": "Dismiss Notification",
|
||||
"noNotifications": "No notifications yet",
|
||||
"notificationLog": "Notification Log",
|
||||
"notificationSettings": "Notification Settings",
|
||||
"dismissNotification": "تجاهل الإشعار",
|
||||
"noNotifications": "لا توجد اشعارات حتى الان",
|
||||
"notificationLog": "سجل الإشعار",
|
||||
"notificationSettings": "إعدادات الإشعارات",
|
||||
"logs": {
|
||||
"title": "Are you sure?",
|
||||
"body_zero": "No notification selected.",
|
||||
"title": "هل انت متأكد ؟",
|
||||
"body_zero": "لم يتم تحديد إشعار.",
|
||||
"body_one": "This will permanently remove {count} notification. This action cannot be undone.",
|
||||
"body_other": "This will permanently remove {count} notifications. This action cannot be undone.",
|
||||
"confirm": "Do it!",
|
||||
"cancel": "Nevermind",
|
||||
"body_other": "سيؤدي هذا إلى إزالة الإشعارات {count} بشكل دائم. لا يمكن التراجع عن هذا الإجراء.",
|
||||
"confirm": "افعلها!",
|
||||
"cancel": "لا يهم",
|
||||
"clearNotificationLog": "Clear Notification Log"
|
||||
},
|
||||
"missedNotifications": {
|
||||
"title": "While you were away",
|
||||
"title": "بينما كنت بعيدا",
|
||||
"body_one": "{count} notification received",
|
||||
"body_other": "{count} notifications received"
|
||||
"body_other": "تم استلام إشعارات {count}"
|
||||
}
|
||||
},
|
||||
"memberListDecorators": {
|
||||
|
|
@ -32,6 +32,6 @@
|
|||
"fallback": "Failed to render {key} Message Decoration"
|
||||
},
|
||||
"notices": {
|
||||
"fallback": "Error Showing Notice"
|
||||
"fallback": "خطأ في عرض الإشعار"
|
||||
}
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@
|
|||
"expireTooltip": "This invite will {expiry}",
|
||||
"expireWill": "expire",
|
||||
"notExpire": "not expire",
|
||||
"invitedYouTo": "{inviter} invited you to {guild}"
|
||||
"invitedYouTo": "{inviter} دعاك إلى {guild}"
|
||||
}
|
||||
},
|
||||
"bypassStatus": {
|
||||
|
|
@ -97,14 +97,14 @@
|
|||
"statusToUse": "Status to use for whitelist"
|
||||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"invisible": "Invisible"
|
||||
"online": "متصل",
|
||||
"idle": "مشغول",
|
||||
"dnd": "عدم الإزعاج",
|
||||
"invisible": "مخفي"
|
||||
},
|
||||
"contextMenu": {
|
||||
"addStatusBypass": "Add Status Bypass",
|
||||
"removeStatusBypass": "Remove Status Bypass"
|
||||
"addStatusBypass": "إضافة تجاوز الحالة",
|
||||
"removeStatusBypass": "إزالة تجاوز الحالة"
|
||||
},
|
||||
"placeholder": {
|
||||
"separateWithCommas": "Separate with commas"
|
||||
|
|
@ -135,9 +135,9 @@
|
|||
"soundQuality": "Quality of sound to use"
|
||||
},
|
||||
"quality": {
|
||||
"high": "High",
|
||||
"medium": "Medium",
|
||||
"low": "Low",
|
||||
"high": "مرتفع",
|
||||
"medium": "متوسط",
|
||||
"low": "منخفض",
|
||||
"lowest": "Lowest"
|
||||
}
|
||||
},
|
||||
|
|
@ -1327,4 +1327,4 @@
|
|||
"scanQrCode": "Scan QR Code"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +1,37 @@
|
|||
{
|
||||
"commands": {
|
||||
"errorExecuting": "An Error occurred while executing command \"{name}\""
|
||||
"errorExecuting": "Nastala chyba při provádění příkazu \"{name}\""
|
||||
},
|
||||
"notifications": {
|
||||
"dismissNotification": "Dismiss Notification",
|
||||
"noNotifications": "No notifications yet",
|
||||
"notificationLog": "Notification Log",
|
||||
"notificationSettings": "Notification Settings",
|
||||
"dismissNotification": "Odmítnout oznámení",
|
||||
"noNotifications": "Zatím žádná oznámení",
|
||||
"notificationLog": "Záznam oznámení",
|
||||
"notificationSettings": "Nastavení oznámení",
|
||||
"logs": {
|
||||
"title": "Are you sure?",
|
||||
"body_zero": "No notification selected.",
|
||||
"body_one": "This will permanently remove {count} notification. This action cannot be undone.",
|
||||
"body_other": "This will permanently remove {count} notifications. This action cannot be undone.",
|
||||
"confirm": "Do it!",
|
||||
"cancel": "Nevermind",
|
||||
"clearNotificationLog": "Clear Notification Log"
|
||||
"title": "Jste si jistý?",
|
||||
"body_zero": "Nebylo vybráno žádné oznámení.",
|
||||
"body_one": "Toto trvale odstraní {count} oznámení. Tuto akci nelze vrátit zpět.",
|
||||
"body_other": "Toto trvale odstraní {count} oznámení. Tuto akci nelze vrátit zpět.",
|
||||
"confirm": "Udělejte to!",
|
||||
"cancel": "Nevadí",
|
||||
"clearNotificationLog": "Vyčistit protokol oznámení"
|
||||
},
|
||||
"missedNotifications": {
|
||||
"title": "While you were away",
|
||||
"body_one": "{count} notification received",
|
||||
"body_other": "{count} notifications received"
|
||||
"title": "Když jste byli pryč",
|
||||
"body_one": "Přijato {count} oznámení",
|
||||
"body_other": "Přijata {count} oznámení"
|
||||
}
|
||||
},
|
||||
"memberListDecorators": {
|
||||
"fallback": "Failed to render {key} Member List Decorator"
|
||||
"fallback": "Nepodařilo se vykreslit {key} dekoraci seznamu členů"
|
||||
},
|
||||
"messageAccessories": {
|
||||
"fallback": "Failed to render {key} Message Accessory"
|
||||
"fallback": "Nepodařilo se zobrazit {key} příslušenství zpráv"
|
||||
},
|
||||
"messageDecorations": {
|
||||
"fallback": "Failed to render {key} Message Decoration"
|
||||
"fallback": "Nepodařilo se zobrazit dekoraci {key} zpráv"
|
||||
},
|
||||
"notices": {
|
||||
"fallback": "Error Showing Notice"
|
||||
"fallback": "Chyba při zobrazování oznámení"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,88 +1,88 @@
|
|||
{
|
||||
"absRPC": {
|
||||
"description": "Rich presence for AudioBookShelf media server",
|
||||
"description": "Bohatá přítomnost pro AudioBookShelf media server",
|
||||
"settings": {
|
||||
"serverUrl": "AudioBookShelf server URL (e.g., https://abs.example.com)",
|
||||
"username": "AudioBookShelf username",
|
||||
"password": "AudioBookShelf password"
|
||||
"serverUrl": "Adresa URL serveru AudioBookShelf (např. https://abs.example.com)",
|
||||
"username": "AudioBookShelf uživatelské jméno",
|
||||
"password": "AudiobookShelf heslo"
|
||||
},
|
||||
"about": {
|
||||
"title": "How to connect to AudioBookShelf",
|
||||
"description": "Enter your AudioBookShelf server URL, username, and password to display your currently playing audiobooks as Discord Rich Presence.",
|
||||
"automaticAuth": "The plugin will automatically authenticate and fetch your listening progress."
|
||||
"title": "Jak se připojit k AudioBookShelf",
|
||||
"description": "Zadejte URL svého AudioBookShelf serveru, uživatelské jméno a heslo pro zobrazení tvých aktuálně přehrávaných audioknih jako Discord Rich Presence.",
|
||||
"automaticAuth": "Plugin automaticky ověří a načte váš postup poslechu."
|
||||
},
|
||||
"toasts": {
|
||||
"notConfigured": "AudioBookShelf RPC is not configured."
|
||||
"notConfigured": "AudioBookShelf RPC není nakonfigurován."
|
||||
}
|
||||
},
|
||||
"altKrispSwitch": {
|
||||
"description": "Makes the Noise Suppression Popout switch between None and Krisp instead of Krisp and Standard"
|
||||
"description": "Umění přepínač Popout na potlačení šumu mezi None a Krisp namísto Krisp a Standard"
|
||||
},
|
||||
"bannersEverywhere": {
|
||||
"description": "Displays banners in the member list ",
|
||||
"description": "Zobrazuje bannery v seznamu členů ",
|
||||
"settings": {
|
||||
"animate": "Animate banners",
|
||||
"preferNameplate": "prefer nameplate over banner"
|
||||
"animate": "Animovat bannery",
|
||||
"preferNameplate": "preferovaná tabulka se jménem nad bannerem"
|
||||
}
|
||||
},
|
||||
"baseDecoder": {
|
||||
"description": "Decode base64 content of any message and copy the decoded content.",
|
||||
"description": "Dekódujte base64 obsah zprávy a zkopírujte dekódovaný obsah.",
|
||||
"settings": {
|
||||
"clickMethod": "Change the button to decode base64 content of any message.",
|
||||
"clickMethod": "Změňte tlačítko pro dekódování base64 obsahu jakékoli zprávy.",
|
||||
"clickMethodOptions": {
|
||||
"left": "Left Click to decode the base64 content.",
|
||||
"right": "Right click to decode the base64 content."
|
||||
"left": "Kliknutím levým tlačítkem dekódovat obsah base64.",
|
||||
"right": "Kliknutím pravým tlačítkem myši dekódovat obsah base64."
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"modalTitle": "Decoded Base64 Content",
|
||||
"decodedContent": "Decoded Content",
|
||||
"copyDecoded": "Copy Decoded Content",
|
||||
"copiedToast": "Decoded content copied to clipboard!",
|
||||
"tooltipLeft": "Copy Decoded (Left Click) / Decode Base64 (Right Click)",
|
||||
"tooltipRight": "Decode Base64 (Left Click) / Copy Decoded (Right Click)"
|
||||
"modalTitle": "Obsah base64 dekódován",
|
||||
"decodedContent": "Dekódovaný Obsah",
|
||||
"copyDecoded": "Zkopírovat dekódovaný obsah",
|
||||
"copiedToast": "Dekódovaný obsah zkopírován do schránky!",
|
||||
"tooltipLeft": "Kopírovat dekódované (kliknutím levým tlačítkem) / Dekódovat Base64 (pravé kliknutí)",
|
||||
"tooltipRight": "Dekódovat Base64 (kliknutí levým tlačítkem) / Kopírovat dekódované (pravé kliknutí)"
|
||||
}
|
||||
},
|
||||
"betterAudioPlayer": {
|
||||
"description": "Adds a spectrograph and oscilloscope visualizer to audio attachment players",
|
||||
"description": "",
|
||||
"settings": {
|
||||
"oscilloscope": "Enable oscilloscope visualizer",
|
||||
"spectrograph": "Enable spectrograph visualizer",
|
||||
"oscilloscopeSolidColor": "Use solid color for oscilloscope",
|
||||
"oscilloscopeColor": "Color for oscilloscope",
|
||||
"spectrographSolidColor": "Use solid color for spectrograph",
|
||||
"spectrographColor": "Color for spectrograph",
|
||||
"forceMoveBelow": "Force the visualizer below the audio player"
|
||||
"oscilloscope": "Povolit vizualizér osciloskopu",
|
||||
"spectrograph": "Povolit vizualizér spektografu",
|
||||
"oscilloscopeSolidColor": "Použít pevnou barvu pro osciloskop",
|
||||
"oscilloscopeColor": "Barva pro osciloskop",
|
||||
"spectrographSolidColor": "Použít pevnou barvu pro spektrograf",
|
||||
"spectrographColor": "Barva pro spektrograf",
|
||||
"forceMoveBelow": "Vynutit vizualizér pod zvukovým přehrávačem"
|
||||
},
|
||||
"toasts": {
|
||||
"invalidColor": "Invalid color format for {settingKey}, make sure it's in the format 'R, G, B' or '#RRGGBB'"
|
||||
"invalidColor": "Neplatný formát barvy pro {settingKey}, ujistěte se, že je ve formátu 'R, G, B' nebo '#RRGBB'"
|
||||
}
|
||||
},
|
||||
"betterBanReasons": {
|
||||
"description": "Create custom reasons to use in the Discord ban modal, and/or show a text input by default instead of the options.",
|
||||
"description": "Vytvořte vlastní důvody pro použití v režimu zakázání Discord a/nebo zobrazí výchozí textový vstup namísto možností.",
|
||||
"settings": {
|
||||
"reasons": "Your custom reasons",
|
||||
"reasons": "Vaše vlastní důvody",
|
||||
"isTextInputDefault": "Shows a text input instead of a select menu by default. (Equivalent to clicking the \"Other\" option)"
|
||||
},
|
||||
"ui": {
|
||||
"reasons": "Reasons",
|
||||
"reasonPlaceholder": "Reason",
|
||||
"addAnotherReason": "Add another reason"
|
||||
"reasons": "Zdůvodnění",
|
||||
"reasonPlaceholder": "Důvod",
|
||||
"addAnotherReason": "Přidat další důvod"
|
||||
}
|
||||
},
|
||||
"betterBlockedUsers": {
|
||||
"description": "Allows you to search in blocked users list and makes names selectable in settings.",
|
||||
"ui": {
|
||||
"searchPlaceholder": "Search users..."
|
||||
"searchPlaceholder": "Hledat uživatele..."
|
||||
}
|
||||
},
|
||||
"betterInvites": {
|
||||
"description": "See invites expiration date, view inviter profile and preview servers before joining by clicking the name",
|
||||
"ui": {
|
||||
"expireTooltip": "This invite will {expiry}",
|
||||
"expireWill": "expire",
|
||||
"notExpire": "not expire",
|
||||
"invitedYouTo": "{inviter} invited you to {guild}"
|
||||
"expireTooltip": "Tato pozvánka bude {expiry}",
|
||||
"expireWill": "vyprší",
|
||||
"notExpire": "nevyprší",
|
||||
"invitedYouTo": "{inviter} vás pozval do {guild}"
|
||||
}
|
||||
},
|
||||
"bypassStatus": {
|
||||
|
|
@ -98,9 +98,9 @@
|
|||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"invisible": "Invisible"
|
||||
"idle": "Nečinný",
|
||||
"dnd": "Nerušit",
|
||||
"invisible": "Neviditelný"
|
||||
},
|
||||
"contextMenu": {
|
||||
"addStatusBypass": "Add Status Bypass",
|
||||
|
|
@ -135,10 +135,10 @@
|
|||
"soundQuality": "Quality of sound to use"
|
||||
},
|
||||
"quality": {
|
||||
"high": "High",
|
||||
"medium": "Medium",
|
||||
"low": "Low",
|
||||
"lowest": "Lowest"
|
||||
"high": "Vysoký",
|
||||
"medium": "Střední",
|
||||
"low": "Nízká",
|
||||
"lowest": "Nejnižší"
|
||||
}
|
||||
},
|
||||
"atSomeone": {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"description": "Assists with translating Equicord",
|
||||
"description": "Pomoc s překládáním Equicord",
|
||||
"settings": {
|
||||
"forceLocale": {
|
||||
"description": "Force a different locale for Equicord to use",
|
||||
"followDiscord": "Default (follow Discord)"
|
||||
"description": "Vynutit jinou lokalizaci pro použití Equicord",
|
||||
"followDiscord": "Výchozí (sledovat Discord)"
|
||||
},
|
||||
"showMissingKeys": "If the current locale is missing translations, show the keys instead of falling back to English"
|
||||
"showMissingKeys": "Pokud v aktuálním jazyku chybí překlady, zobrazte klíče místo toho, aby se vrátily do angličtiny"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +1,37 @@
|
|||
{
|
||||
"commands": {
|
||||
"errorExecuting": "An Error occurred while executing command \"{name}\""
|
||||
"errorExecuting": "Der opstod en fejl under udførelse af kommandoen \"{name}\""
|
||||
},
|
||||
"notifications": {
|
||||
"dismissNotification": "Dismiss Notification",
|
||||
"noNotifications": "No notifications yet",
|
||||
"notificationLog": "Notification Log",
|
||||
"notificationSettings": "Notification Settings",
|
||||
"dismissNotification": "Afvis notifikation",
|
||||
"noNotifications": "Ingen notifikationer endnu",
|
||||
"notificationLog": "Notifikationslog",
|
||||
"notificationSettings": "Indstillinger for notifikationer",
|
||||
"logs": {
|
||||
"title": "Are you sure?",
|
||||
"body_zero": "No notification selected.",
|
||||
"body_one": "This will permanently remove {count} notification. This action cannot be undone.",
|
||||
"body_other": "This will permanently remove {count} notifications. This action cannot be undone.",
|
||||
"confirm": "Do it!",
|
||||
"cancel": "Nevermind",
|
||||
"clearNotificationLog": "Clear Notification Log"
|
||||
"title": "Er du sikker?",
|
||||
"body_zero": "Ingen notifikation valgt.",
|
||||
"body_one": "Dette vil permanent fjerne {count} notifikation. Denne handling kan ikke fortrydes.",
|
||||
"body_other": "Dette vil permanent fjerne {count} notifikationer. Denne handling kan ikke fortrydes.",
|
||||
"confirm": "Gør det!",
|
||||
"cancel": "Glem det",
|
||||
"clearNotificationLog": "Ryd notifikationslog"
|
||||
},
|
||||
"missedNotifications": {
|
||||
"title": "While you were away",
|
||||
"body_one": "{count} notification received",
|
||||
"body_other": "{count} notifications received"
|
||||
"title": "Mens du var væk",
|
||||
"body_one": "{count} notifikation modtaget",
|
||||
"body_other": "{count} notifikationer modtaget"
|
||||
}
|
||||
},
|
||||
"memberListDecorators": {
|
||||
"fallback": "Failed to render {key} Member List Decorator"
|
||||
"fallback": "Kunne ikke vise {key} medlemsliste dekorator"
|
||||
},
|
||||
"messageAccessories": {
|
||||
"fallback": "Failed to render {key} Message Accessory"
|
||||
"fallback": "Kunne ikke vise {key} beskedtilbehør"
|
||||
},
|
||||
"messageDecorations": {
|
||||
"fallback": "Failed to render {key} Message Decoration"
|
||||
"fallback": "Kunne ikke vise {key} besked dekoration"
|
||||
},
|
||||
"notices": {
|
||||
"fallback": "Error Showing Notice"
|
||||
"fallback": "Fejl ved visning af meddelelse"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"description": "Assists with translating Equicord",
|
||||
"description": "Hjælp med at oversætte Equicord",
|
||||
"settings": {
|
||||
"forceLocale": {
|
||||
"description": "Force a different locale for Equicord to use",
|
||||
"followDiscord": "Default (follow Discord)"
|
||||
"description": "Tving en anden sprogstandard for Equicord at bruge",
|
||||
"followDiscord": "Standard (følg Discord)"
|
||||
},
|
||||
"showMissingKeys": "If the current locale is missing translations, show the keys instead of falling back to English"
|
||||
"showMissingKeys": "Hvis den aktuelle sprogstandard mangler oversættelser, så vis nøglerne i stedet for at falde tilbage til engelsk"
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,240 @@
|
|||
{
|
||||
"badgeAPI": {
|
||||
"description": "API to add badges to users"
|
||||
},
|
||||
"chatInputButtonAPI": {
|
||||
"description": "API to add buttons to the chat input"
|
||||
},
|
||||
"commandsAPI": {
|
||||
"description": "API required by anything that uses commands"
|
||||
},
|
||||
"contextMenuAPI": {
|
||||
"description": "API for adding/removing items to/from context menus"
|
||||
},
|
||||
"dynamicImageModalAPI": {
|
||||
"description": "Allows you to omit either width or height when opening an image modal"
|
||||
},
|
||||
"memberListDecoratorsAPI": {
|
||||
"description": "API to add decorators to member list (both in servers and DMs)"
|
||||
},
|
||||
"menuItemDemanglerAPI": {
|
||||
"description": "Demangles Discord's Menu Item module"
|
||||
},
|
||||
"messageAccessoriesAPI": {
|
||||
"description": "API to add message accessories"
|
||||
},
|
||||
"messageDecorationsAPI": {
|
||||
"description": "API to add decorations to messages"
|
||||
},
|
||||
"messageEventsAPI": {
|
||||
"description": "API required by anything using message events"
|
||||
},
|
||||
"messagePopoverAPI": {
|
||||
"description": "API to add buttons to message popovers"
|
||||
},
|
||||
"messageUpdaterAPI": {
|
||||
"description": "API for updating and re-rendering messages"
|
||||
},
|
||||
"nicknameIconsAPI": {
|
||||
"description": "API to add icons to the nickname, in profiles"
|
||||
},
|
||||
"noticesAPI": {
|
||||
"description": "Fixes notices being automatically dismissed"
|
||||
},
|
||||
"serverListAPI": {
|
||||
"description": "API required for plugins that modify the server list"
|
||||
},
|
||||
"userSettingsAPI": {
|
||||
"description": "Patches Discord's UserSettings to expose their group and name"
|
||||
},
|
||||
"secretRingTone": {
|
||||
"description": "Always play the secret version of the discord ringtone (except during special ringtone events)",
|
||||
"settings": {
|
||||
"onlySnow": "Only play the Snow Halation Theme"
|
||||
}
|
||||
},
|
||||
"shikiCodeblocks": {
|
||||
"description": "Brings vscode-style codeblocks into Discord, powered by Shiki",
|
||||
"settings": {
|
||||
"theme": "Default themes",
|
||||
"customTheme": "A link to a custom vscode theme",
|
||||
"tryHljs": "Use the more lightweight default Discord highlighter and theme.",
|
||||
"tryHljsOptions": {
|
||||
"never": "Never",
|
||||
"preferShiki": "Prefer Shiki instead of Highlight.js",
|
||||
"preferHljs": "Prefer Highlight.js instead of Shiki",
|
||||
"always": "Always"
|
||||
},
|
||||
"useDevIcon": "How to show language icons on codeblocks",
|
||||
"useDevIconOptions": {
|
||||
"disabled": "Disabled",
|
||||
"colorless": "Colorless",
|
||||
"colored": "Colored"
|
||||
},
|
||||
"bgOpacity": "Background opacity"
|
||||
}
|
||||
},
|
||||
"showHiddenThings": {
|
||||
"description": "Displays various hidden & moderator-only things regardless of permissions.",
|
||||
"settings": {
|
||||
"showTimeouts": "Show member timeout icons in chat.",
|
||||
"showInvitesPaused": "Show the invites paused tooltip in the server list.",
|
||||
"showModView": "Show the member mod view context menu item in all servers."
|
||||
}
|
||||
},
|
||||
"spotifyCrack": {
|
||||
"description": "Free listen along, no auto-pausing in voice chat, and allows activity to continue playing when idling",
|
||||
"settings": {
|
||||
"noSpotifyAutoPause": "Disable Spotify auto-pause",
|
||||
"keepSpotifyActivityOnIdle": "Keep Spotify activity playing when idling"
|
||||
}
|
||||
},
|
||||
"spotifyShareCommands": {
|
||||
"description": "Share your current Spotify track, album or artist via slash command (/track, /album, /artist)",
|
||||
"commands": {
|
||||
"shareDescription": "Share your current Spotify {name} in chat",
|
||||
"notListening": "You're not listening to any music.",
|
||||
"trackNotFound": "Failed to find the track on spotify."
|
||||
}
|
||||
},
|
||||
"startupTimings": {
|
||||
"description": "Adds Startup Timings to the Settings menu",
|
||||
"ui": {
|
||||
"title": "Startup Timings"
|
||||
}
|
||||
},
|
||||
"stickerPaste": {
|
||||
"description": "Makes picking a sticker in the sticker picker insert it into the chatbox instead of instantly sending"
|
||||
},
|
||||
"streamerModeOnStream": {
|
||||
"description": "Automatically enables streamer mode when you start streaming in Discord"
|
||||
},
|
||||
"superReactionTweaks": {
|
||||
"description": "Customize the limit of Super Reactions playing at once, and super react by default",
|
||||
"settings": {
|
||||
"superReactByDefault": "Reaction picker will default to Super Reactions",
|
||||
"unlimitedSuperReactionPlaying": "Remove the limit on Super Reactions playing at once",
|
||||
"superReactionPlayingLimit": "Max Super Reactions to play at once. 0 to disable playing Super Reactions"
|
||||
}
|
||||
},
|
||||
"themeAttributes": {
|
||||
"description": "Adds data attributes to various elements for theming purposes"
|
||||
},
|
||||
"unindent": {
|
||||
"description": "Trims leading indentation from codeblocks"
|
||||
},
|
||||
"unlockedAvatarZoom": {
|
||||
"description": "Allows you to zoom in further in the image crop tool when changing your avatar",
|
||||
"settings": {
|
||||
"zoomMultiplier": "Zoom multiplier"
|
||||
}
|
||||
},
|
||||
"userMessagesPronouns": {
|
||||
"description": "Adds pronouns to chat user messages",
|
||||
"settings": {
|
||||
"pronounsFormat": "The format for pronouns to appear in chat",
|
||||
"pronounsFormatOptions": {
|
||||
"lowercase": "Lowercase",
|
||||
"capitalized": "Capitalized"
|
||||
},
|
||||
"showSelf": "Enable or disable showing pronouns for yourself"
|
||||
}
|
||||
},
|
||||
"validReply": {
|
||||
"description": "Fixes \"Message could not be loaded\" upon hovering over the reply"
|
||||
},
|
||||
"validUser": {
|
||||
"description": "Fix mentions for unknown users showing up as '@unknown-user' (hover over a mention to fix it)"
|
||||
},
|
||||
"vcDoubleClick": {
|
||||
"description": "Join voice chats via double click instead of single click"
|
||||
},
|
||||
"volumeBooster": {
|
||||
"description": "Allows you to set the user and stream volume above the default maximum",
|
||||
"settings": {
|
||||
"multiplier": "Volume Multiplier"
|
||||
}
|
||||
},
|
||||
"webContextMenus": {
|
||||
"description": "Re-adds context menus missing in the web version of Discord: Links & Images (Copy/Open Link/Image), Text Area (Copy, Cut, Paste, SpellCheck)",
|
||||
"settings": {
|
||||
"addBack": "Add back the Discord context menus for images, links and the chat input bar"
|
||||
}
|
||||
},
|
||||
"webKeybinds": {
|
||||
"description": "Re-adds keybinds missing in the web version of Discord: ctrl+t, ctrl+shift+t, ctrl+tab, ctrl+shift+tab, ctrl+1-9, ctrl+,. Only works fully on Vesktop/Legcord, not inside your browser"
|
||||
},
|
||||
"webScreenShareFixes": {
|
||||
"description": "Removes 2500kbps bitrate cap on chromium and vesktop clients."
|
||||
},
|
||||
"youtubeAdblock": {
|
||||
"description": "Block ads in YouTube embeds and the WatchTogether activity via AdGuard"
|
||||
},
|
||||
"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!",
|
||||
"settings": {
|
||||
"notifyOnAutoConnect": "Whether to notify when Dev Companion has automatically connected.",
|
||||
"usePatchedModule": "On extract requests, reply with the current patched module (if it is patched) instead of the original.",
|
||||
"reloadAfterToggle": "Reload after a disable/enable plugin command is recived."
|
||||
}
|
||||
},
|
||||
"disableCallIdle": {
|
||||
"description": "Disables automatically getting kicked from a DM voice call after 3 minutes and being moved to an AFK voice channel."
|
||||
},
|
||||
"dontRoundMyTimestamps": {
|
||||
"description": "Always rounds relative timestamps down, so 7.6y becomes 7y instead of 8y"
|
||||
},
|
||||
"f8break": {
|
||||
"description": "Pause the client when you press F8 with DevTools (+ breakpoints) open."
|
||||
},
|
||||
"fixCodeblockGap": {
|
||||
"description": "Removes the gap between codeblocks and text below it"
|
||||
},
|
||||
"fixSpotifyEmbeds": {
|
||||
"description": "Fixes spotify embeds being incredibly loud by letting you customise the volume",
|
||||
"settings": {
|
||||
"volume": "The volume % to set for spotify embeds. Anything above 10% is veeeery loud"
|
||||
}
|
||||
},
|
||||
"fixYoutubeEmbeds": {
|
||||
"description": "Bypasses youtube videos being blocked from display on Discord (for example by UMG)"
|
||||
},
|
||||
"forceOwnerCrown": {
|
||||
"description": "Force the owner crown next to usernames even if the server is large."
|
||||
},
|
||||
"friendInvites": {
|
||||
"description": "Create and manage friend invite links via slash commands (/create friend invite, /view friend invites, /revoke friend invites).",
|
||||
"commands": {
|
||||
"createFriendInvite": {
|
||||
"name": "create friend invite",
|
||||
"description": "Generates a friend invite link."
|
||||
},
|
||||
"viewFriendInvites": {
|
||||
"name": "view friend invites",
|
||||
"description": "View a list of all generated friend invites."
|
||||
},
|
||||
"revokeFriendInvites": {
|
||||
"name": "revoke friend invites",
|
||||
"description": "Revokes all generated friend invites."
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"expires": "Expires:",
|
||||
"maxUses": "Max uses:",
|
||||
"timesUsed": "Times used:",
|
||||
"noActiveInvites": "You have no active friend invites!",
|
||||
"allRevoked": "All friend invites have been revoked."
|
||||
}
|
||||
},
|
||||
"fullSearchContext": {
|
||||
"description": "Makes the message context menu in message search results have all options you'd expect"
|
||||
},
|
||||
"fullUserInChatbox": {
|
||||
"description": "Makes the user mention in the chatbox have more functionalities, like left/right clicking"
|
||||
},
|
||||
"gifPaste": {
|
||||
"description": "Makes picking a gif in the gif picker insert a link into the chatbox instead of instantly sending it"
|
||||
},
|
||||
"donate": "Donate",
|
||||
"invite": "Invite",
|
||||
"loading": "Loading...",
|
||||
|
|
@ -279,6 +515,7 @@
|
|||
"echoCancellation": "Echo Cancellation"
|
||||
},
|
||||
"showHiddenChannels": {
|
||||
"description": "Show channels that you do not have access to view.",
|
||||
"hiddenChannel": "This is a hidden {type} channel",
|
||||
"lockedChannel": "This is a locked {type} channel",
|
||||
"nsfw": "NSFW",
|
||||
|
|
@ -302,6 +539,25 @@
|
|||
"allowedUsersAndRoles": "Allowed users and roles:",
|
||||
"hideAllowedUsersAndRoles": "Hide Allowed Users and Roles",
|
||||
"viewAllowedUsersAndRoles": "View Allowed Users and Roles",
|
||||
"hiddenChannelTooltip": "Hidden Channel",
|
||||
"settings": {
|
||||
"channelStyle": {
|
||||
"description": "The style used to display hidden channels.",
|
||||
"classic": "Classic",
|
||||
"muted": "Muted",
|
||||
"showUnreads": "Show Unreads",
|
||||
"mutedAndShowUnreads": "Muted and Show Unreads"
|
||||
},
|
||||
"showMode": {
|
||||
"description": "The mode used to display hidden channels.",
|
||||
"lockIcon": "Lock Icon replacing channel icon",
|
||||
"eyeIconRight": "Eye icon on the right",
|
||||
"lockIconRight": "Lock icon on the right"
|
||||
},
|
||||
"defaultAllowedUsersAndRolesDropdownState": {
|
||||
"description": "Whether the allowed users and roles dropdown on hidden channels should be open by default"
|
||||
}
|
||||
},
|
||||
"channelTypes": {
|
||||
"text": "text",
|
||||
"announcement": "announcement",
|
||||
|
|
@ -309,7 +565,11 @@
|
|||
"voice": "voice",
|
||||
"stage": "stage",
|
||||
"messages": "messages",
|
||||
"posts": "posts"
|
||||
"message": "message",
|
||||
"posts": "posts",
|
||||
"post": "post",
|
||||
"threads": "threads",
|
||||
"thread": "thread"
|
||||
},
|
||||
"sortOrders": {
|
||||
"latestActivity": "Latest activity",
|
||||
|
|
@ -684,10 +944,16 @@
|
|||
"servers": "Notify when removed from a server",
|
||||
"groups": "Notify when removed from a group chat"
|
||||
},
|
||||
"description": "Notifies you when a friend, group chat, or server removes you.",
|
||||
"friendRemoved": "{username} removed you as a friend.",
|
||||
"friendRequestRemoved": "A friend request from {username} has been removed.",
|
||||
"serverRemoved": "You were removed from the server {name}.",
|
||||
"groupRemoved": "You were removed from the group {name}."
|
||||
"groupRemoved": "You were removed from the group {name}.",
|
||||
"offlineGroupRemoved": "You are no longer in the group {name}.",
|
||||
"offlineServerRemoved": "You are no longer in the server {name}.",
|
||||
"offlineFriendRemoved": "You are no longer friends with {username}.",
|
||||
"offlineFriendRequestRevoked": "Friend request from {username} has been revoked.",
|
||||
"notificationTitle": "Relationship Notifier"
|
||||
},
|
||||
"messageLatency": {
|
||||
"settings": {
|
||||
|
|
@ -830,6 +1096,65 @@
|
|||
"disableGameActivity": "Disable Game Activity",
|
||||
"enableGameActivity": "Enable Game Activity"
|
||||
},
|
||||
"autoDndWhilePlaying": {
|
||||
"description": "Automatically sets your status to Do Not Disturb or another status when playing games",
|
||||
"settings": {
|
||||
"statusToSet": "Status to set when playing games",
|
||||
"excludeInvisible": "Don't change status if you're currently invisible"
|
||||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"invisible": "Invisible"
|
||||
}
|
||||
},
|
||||
"appleMusicRichPresence": {
|
||||
"description": "Shows your currently playing Apple Music track in your Discord status",
|
||||
"settings": {
|
||||
"activityType": "Activity type to display as",
|
||||
"statusDisplayType": "Show the track or artist name in the member list",
|
||||
"refreshInterval": "How often to refresh the track data (in seconds)",
|
||||
"enableTimestamps": "Enable timestamps showing how long you've been listening",
|
||||
"enableButtons": "Enable buttons to view the track on Apple Music or SongLink",
|
||||
"nameString": "The name to display for the activity. Use {name}, {artist}, and {album} as placeholders",
|
||||
"detailsString": "The details text. Use {name}, {artist}, and {album} as placeholders",
|
||||
"stateString": "The state text. Use {name}, {artist}, and {album} as placeholders",
|
||||
"largeImageType": "The type of image to use for the large activity image",
|
||||
"largeTextString": "The text to display when hovering over the large image. Use {name}, {artist}, and {album} as placeholders",
|
||||
"smallImageType": "The type of image to use for the small activity image",
|
||||
"smallTextString": "The text to display when hovering over the small image. Use {name}, {artist}, and {album} as placeholders"
|
||||
},
|
||||
"activityTypes": {
|
||||
"playing": "Playing",
|
||||
"listening": "Listening"
|
||||
},
|
||||
"statusDisplayTypes": {
|
||||
"off": "Off",
|
||||
"artist": "Artist name",
|
||||
"track": "Track name"
|
||||
},
|
||||
"assetImageTypes": {
|
||||
"album": "Album Artwork",
|
||||
"artist": "Artist Artwork",
|
||||
"disabled": "Disabled"
|
||||
},
|
||||
"defaultName": "Apple Music",
|
||||
"defaultDetails": "{name}",
|
||||
"defaultState": "by {artist}",
|
||||
"defaultLargeText": "{album}",
|
||||
"defaultSmallText": "by {artist}",
|
||||
"settingsAbout": {
|
||||
"intro": "You can use placeholders in the string fields:",
|
||||
"namePlaceholder": "will be replaced with the track name",
|
||||
"artistPlaceholder": "will be replaced with the artist name",
|
||||
"albumPlaceholder": "will be replaced with the album name"
|
||||
},
|
||||
"buttons": {
|
||||
"listenOnAppleMusic": "Listen on Apple Music",
|
||||
"viewOnSongLink": "View on SongLink"
|
||||
}
|
||||
},
|
||||
"lastfmRichPresence": {
|
||||
"description": "Little plugin for Last.fm rich presence",
|
||||
"settings": {
|
||||
|
|
@ -1390,5 +1715,507 @@
|
|||
"both_one": "[no content, {attachments} attachment and {embeds} embed]",
|
||||
"both_other": "[no content, {attachments} attachments and {embeds} embeds]"
|
||||
}
|
||||
},
|
||||
"alwaysAnimate": {
|
||||
"description": "Animates anything that can be animated",
|
||||
"settings": {
|
||||
"icons": "Always animate server icons, avatars, decor and more",
|
||||
"statusEmojis": "Always animate status emojis",
|
||||
"serverBanners": "Always animate server banners",
|
||||
"nameplates": "Always animate nameplates",
|
||||
"roleGradients": "Always animate role gradients"
|
||||
}
|
||||
},
|
||||
"alwaysExpandRoles": {
|
||||
"description": "Always expands the role list in profile popouts",
|
||||
"settings": {
|
||||
"hideArrow": "Hide Arrow"
|
||||
}
|
||||
},
|
||||
"alwaysTrust": {
|
||||
"description": "Removes the annoying untrusted domain and suspicious file popup",
|
||||
"settings": {
|
||||
"domain": "Remove the untrusted domain popup when opening links",
|
||||
"file": "Remove the 'Potentially Dangerous Download' popup when opening links",
|
||||
"noDeleteSafety": "Removes the enter server name requirement when deleting a server",
|
||||
"confirmModal": "Should a \"are you sure you want to delete\" modal be shown?"
|
||||
},
|
||||
"ui": {
|
||||
"deleteServerTitle": "Delete server?",
|
||||
"deleteServerBody": "It's permanent, if that wasn't obvious.",
|
||||
"deleteServerConfirm": "Delete"
|
||||
}
|
||||
},
|
||||
"autoDndWhilePlaying": {
|
||||
"description": "Automatically updates your online status (online, idle, dnd) when launching games",
|
||||
"settings": {
|
||||
"statusToSet": "Status to set while playing a game",
|
||||
"excludeInvisible": "Prevent automatic status changes while your status is set to invisible"
|
||||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"invisible": "Invisible"
|
||||
}
|
||||
},
|
||||
"betterGifAltText": {
|
||||
"description": "Change GIF alt text from simply being 'GIF' to containing the gif tags / filename"
|
||||
},
|
||||
"betterNotesBox": {
|
||||
"description": "Hide notes or disable spellcheck (Configure in settings!!)",
|
||||
"settings": {
|
||||
"hide": "Hide notes",
|
||||
"noSpellCheck": "Disable spellcheck in notes"
|
||||
}
|
||||
},
|
||||
"betterRoleDot": {
|
||||
"description": "Copy role colour on RoleDot (accessibility setting) click. Also allows using both RoleDot and coloured names simultaneously",
|
||||
"settings": {
|
||||
"bothStyles": "Show both role dot and coloured names",
|
||||
"copyRoleColorInProfilePopout": "Allow click on role dot in profile popout to copy role color"
|
||||
}
|
||||
},
|
||||
"betterUploadButton": {
|
||||
"description": "Upload with a single click, open menu with right click"
|
||||
},
|
||||
"blurNsfw": {
|
||||
"description": "Blur attachments in NSFW channels until hovered",
|
||||
"settings": {
|
||||
"blurAmount": "Blur Amount (in pixels)",
|
||||
"blurAllChannels": "Blur attachments in all channels (not just NSFW)"
|
||||
}
|
||||
},
|
||||
"clearURLs": {
|
||||
"description": "Automatically removes tracking elements from URLs you send"
|
||||
},
|
||||
"colorSighted": {
|
||||
"description": "Removes the colorblind-friendly icons from statuses, just like 2015-2017 Discord"
|
||||
},
|
||||
"consoleShortcuts": {
|
||||
"description": "Adds shorter Aliases for many things on the window. Run `shortcutList` for a list."
|
||||
},
|
||||
"crashHandler": {
|
||||
"description": "Utility plugin for handling and possibly recovering from crashes without a restart",
|
||||
"settings": {
|
||||
"attemptToPreventCrashes": "Whether to attempt to prevent Discord crashes.",
|
||||
"attemptToNavigateToHome": "Whether to attempt to navigate to the home when preventing Discord crashes."
|
||||
},
|
||||
"notifications": {
|
||||
"crashedTitle": "Discord has crashed!",
|
||||
"crashedBody": "Awn :( Discord has crashed two times rapidly, not attempting to recover. Click here to join our support server!",
|
||||
"recoveringBody": "Attempting to recover... Click here to join our support server!",
|
||||
"invalidInvite": "Invalid or expired invite"
|
||||
},
|
||||
"updatePrompt": "Uh oh, Discord has just crashed... but good news, there is a Equicord update available that might fix this issue! Would you like to update now?"
|
||||
},
|
||||
"ctrlEnterSend": {
|
||||
"description": "Use Ctrl+Enter to send messages (customizable)",
|
||||
"settings": {
|
||||
"submitRule": "The way to send a message",
|
||||
"sendMessageInTheMiddleOfACodeBlock": "Whether to send a message in the middle of a code block"
|
||||
},
|
||||
"submitRuleOptions": {
|
||||
"ctrlEnter": "Ctrl+Enter (Enter or Shift+Enter for new line) (cmd+enter on macOS)",
|
||||
"shiftEnter": "Shift+Enter (Enter for new line)",
|
||||
"enter": "Enter (Shift+Enter for new line; Discord default)"
|
||||
}
|
||||
},
|
||||
"customIdle": {
|
||||
"description": "Allows you to set the time before Discord goes idle (or disable auto-idle)",
|
||||
"settings": {
|
||||
"idleTimeout": "Minutes before Discord goes idle (0 to disable auto-idle)",
|
||||
"remainInIdle": "When you come back to Discord, remain idle until you confirm you want to go online"
|
||||
},
|
||||
"ui": {
|
||||
"backOnlineMessage": "Welcome back! Click the button to go online. Click the X to stay idle until reload.",
|
||||
"exitIdle": "Exit idle"
|
||||
}
|
||||
},
|
||||
"iLoveSpam": {
|
||||
"description": "Do not hide messages from 'likely spammers'"
|
||||
},
|
||||
"imageFilename": {
|
||||
"description": "Display the file name of images & GIFs as a tooltip when hovering over them",
|
||||
"settings": {
|
||||
"showFullUrl": "Show the full URL of the image instead of just the file name. Always enabled for GIFs because they usually have no meaningful file name"
|
||||
}
|
||||
},
|
||||
"imageLink": {
|
||||
"description": "Never hide image links in messages, even if it's the only content"
|
||||
},
|
||||
"implicitRelationships": {
|
||||
"description": "Shows your implicit relationships in the Friends tab.",
|
||||
"settings": {
|
||||
"sortByAffinity": "Whether to sort implicit relationships by their affinity to you."
|
||||
},
|
||||
"ui": {
|
||||
"implicitHeader": "Implicit — {count}",
|
||||
"implicitSection": "Implicit"
|
||||
}
|
||||
},
|
||||
"ircColors": {
|
||||
"description": "Makes username colors in chat unique, like in IRC clients",
|
||||
"settings": {
|
||||
"lightness": "Lightness, in %. Change if the colors are too light or too dark",
|
||||
"memberListColors": "Replace role colors in the member list",
|
||||
"applyColorOnlyToUsersWithoutColor": "Apply colors only to users who don't have a predefined color",
|
||||
"applyColorOnlyInDms": "Apply colors only in direct messages; do not apply colors in servers."
|
||||
}
|
||||
},
|
||||
"keepCurrentChannel": {
|
||||
"description": "Attempt to navigate to the channel you were in before switching accounts or loading Discord."
|
||||
},
|
||||
"loadingQuotes": {
|
||||
"description": "Replace Discords loading quotes",
|
||||
"settings": {
|
||||
"replaceEvents": "Should this plugin also apply during events with special event themed quotes? (e.g. Halloween)",
|
||||
"enablePluginPresetQuotes": "Enable the quotes preset by this plugin",
|
||||
"enableDiscordPresetQuotes": "Enable Discord's preset quotes (including event quotes, during events)",
|
||||
"additionalQuotes": "Additional custom quotes to possibly appear, separated by the below delimiter",
|
||||
"additionalQuotesDelimiter": "Delimiter for additional quotes"
|
||||
},
|
||||
"ui": {
|
||||
"noQuotesQuote": "Did you really disable all loading quotes? What a buffoon you are..."
|
||||
}
|
||||
},
|
||||
"mentionAvatars": {
|
||||
"description": "Shows user avatars and role icons inside mentions",
|
||||
"settings": {
|
||||
"showAtSymbol": "Whether the the @ symbol should be displayed on user mentions"
|
||||
}
|
||||
},
|
||||
"messageTags": {
|
||||
"description": "Allows you to save messages and to use them with a simple command.",
|
||||
"settings": {
|
||||
"clydeName": "Clyde message on send",
|
||||
"clydeDescription": "If enabled, clyde will send you an ephemeral message when a tag was used."
|
||||
},
|
||||
"commands": {
|
||||
"tags": "Manage all the tags for yourself",
|
||||
"create": "Create a new tag",
|
||||
"delete": "Remove a tag from your yourself",
|
||||
"list": "List all tags from yourself",
|
||||
"preview": "Preview a tag without sending it publicly",
|
||||
"tagName": "The name of the tag to trigger the response",
|
||||
"message": "The message that you will send when using this tag"
|
||||
},
|
||||
"ui": {
|
||||
"tagDoesNotExist": "The tag **{name}** does not exist anymore! Please reload ur Discord to fix :)",
|
||||
"tagSent": "The tag **{name}** has been sent!",
|
||||
"tagAlreadyExists": "A Tag with the name **{name}** already exists!",
|
||||
"tagCreated": "Successfully created the tag **{name}**!",
|
||||
"tagDoesNotExist2": "A Tag with the name **{name}** does not exist!",
|
||||
"tagDeleted": "Successfully deleted the tag **{name}**!",
|
||||
"allTags": "All Tags:",
|
||||
"noTagsYet": "Woops! There are no tags yet, use `/tags create` to create one!",
|
||||
"invalidSubCommand": "Invalid sub-command"
|
||||
}
|
||||
},
|
||||
"moreQuickReactions": {
|
||||
"description": "Improves the quick react buttons in the message context menu.",
|
||||
"settings": {
|
||||
"reactionCount": "Number of reactions (0-42)",
|
||||
"frequentEmojis": "Use frequently used emojis instead of favourite emojis",
|
||||
"rows": "Rows of quick reactions to display",
|
||||
"columns": "Columns of quick reactions to display",
|
||||
"compactMode": "Scales the buttons to 75% of their original scale, whilst increasing the inner emoji to 125% scale. Emojis will be 93.75% of the original size. Recommended to have a minimum of 5 columns",
|
||||
"scroll": "Enable scrolling the list of emojis"
|
||||
}
|
||||
},
|
||||
"noDeepLinks": {
|
||||
"description": "Disables Discord's stupid deep linking feature which tries to force you to use their Desktop App"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"noF1": {
|
||||
"description": "Disables F1 help bind."
|
||||
},
|
||||
"noMaskedUrlPaste": {
|
||||
"description": "Pasting a link while having text selected will not paste as masked URL"
|
||||
},
|
||||
"noMosaic": {
|
||||
"description": "Removes Discord image mosaic",
|
||||
"settings": {
|
||||
"inlineVideo": "Play videos without carousel modal"
|
||||
}
|
||||
},
|
||||
"noOnboardingDelay": {
|
||||
"description": "Skips the slow and annoying onboarding delay"
|
||||
},
|
||||
"noPendingCount": {
|
||||
"description": "Removes the ping count of incoming friend requests, message requests, and nitro offers.",
|
||||
"settings": {
|
||||
"hideFriendRequestsCount": "Hide incoming friend requests count",
|
||||
"hideMessageRequestsCount": "Hide message requests count",
|
||||
"hidePremiumOffersCount": "Hide nitro offers count"
|
||||
}
|
||||
},
|
||||
"noProfileThemes": {
|
||||
"description": "Completely removes Nitro profile themes from everyone but yourself"
|
||||
},
|
||||
"noServerEmojis": {
|
||||
"description": "Do not show server emojis in the autocomplete menu.",
|
||||
"settings": {
|
||||
"shownEmojis": "The types of emojis to show in the autocomplete menu.",
|
||||
"shownEmojisOptions": {
|
||||
"onlyUnicode": "Only unicode emojis",
|
||||
"currentServer": "Unicode emojis and server emojis from current server",
|
||||
"all": "Unicode emojis and all server emojis (Discord default)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noSystemBadge": {
|
||||
"description": "Disables the taskbar and system tray unread count badge."
|
||||
},
|
||||
"notificationVolume": {
|
||||
"description": "Save your ears and set a separate volume for notifications and in-app sounds",
|
||||
"settings": {
|
||||
"notificationVolume": "Notification volume"
|
||||
}
|
||||
},
|
||||
"noTypingAnimation": {
|
||||
"description": "Disables the CPU-intensive typing dots animation"
|
||||
},
|
||||
"noUnblockToJump": {
|
||||
"description": "Allows you to jump to messages of blocked or ignored users and likely spammers without unblocking them"
|
||||
},
|
||||
"onePingPerDM": {
|
||||
"description": "If unread messages are sent by a user in DMs multiple times, you'll only receive one audio ping.",
|
||||
"settings": {
|
||||
"channelToAffect": "Select the type of DM for the plugin to affect",
|
||||
"channelToAffectOptions": {
|
||||
"both": "Both",
|
||||
"userDm": "User DMs",
|
||||
"groupDm": "Group DMs"
|
||||
},
|
||||
"allowMentions": "Receive audio pings for @mentions",
|
||||
"allowEveryone": "Receive audio pings for @everyone and @here in group DMs",
|
||||
"ignoreUsers": "User IDs (comma + space) whose pings should NEVER be throttled",
|
||||
"alwaysPlaySound": "Play the message notification sound even when its disabled"
|
||||
}
|
||||
},
|
||||
"openInApp": {
|
||||
"description": "Open links in their respective apps instead of your browser",
|
||||
"settings": {
|
||||
"spotify": "Open Spotify links in the Spotify app",
|
||||
"steam": "Open Steam links in the Steam app",
|
||||
"epic": "Open Epic Games links in the Epic Games Launcher",
|
||||
"tidal": "Open Tidal links in the Tidal app",
|
||||
"itunes": "Open Apple Music links in the iTunes app",
|
||||
"vrcx": "Open VRChat links in the VRCX app"
|
||||
},
|
||||
"ui": {
|
||||
"openedInApp": "Opened link in native app"
|
||||
}
|
||||
},
|
||||
"permissionFreeWill": {
|
||||
"description": "Disables the client-side restrictions for channel permission management.",
|
||||
"settings": {
|
||||
"lockout": "Bypass the permission lockout prevention (\"Pretty sure you don't want to do this\")",
|
||||
"onboarding": "Bypass the onboarding requirements (\"Making this change will make your server incompatible [...]\")"
|
||||
}
|
||||
},
|
||||
"petpet": {
|
||||
"description": "Adds a /petpet slash command to create headpet gifs from any image",
|
||||
"commands": {
|
||||
"petpet": {
|
||||
"name": "petpet",
|
||||
"description": "Create a petpet gif. You can only specify one of the image options",
|
||||
"options": {
|
||||
"delay": "The delay between each frame in ms. Rounded to nearest 10ms. Defaults to the minimum value of 20.",
|
||||
"resolution": "Resolution for the gif. Defaults to 120. If you enter an insane number and it freezes Discord that's your fault.",
|
||||
"image": "Image attachment to use",
|
||||
"url": "URL to fetch image from",
|
||||
"user": "User whose avatar to use as image",
|
||||
"noServerPfp": "Use the normal avatar instead of the server specific one when using the 'user' option"
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"noImage": "No Image specified!",
|
||||
"delayMinimum": "Delay must be at least 20.",
|
||||
"uploadNotImage": "Upload is not an image",
|
||||
"failedToFetchUser": "Failed to fetch user. Check the console for more info."
|
||||
}
|
||||
},
|
||||
"plainFolderIcon": {
|
||||
"description": "Dont show the small guild icons in folders"
|
||||
},
|
||||
"quickReply": {
|
||||
"description": "Reply to (ctrl + up/down) and edit (ctrl + shift + up/down) messages via keybinds",
|
||||
"settings": {
|
||||
"shouldMention": "Ping reply by default",
|
||||
"shouldMentionOptions": {
|
||||
"followPlugin": "Follow NoReplyMention plugin (if enabled)",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
},
|
||||
"ignoreBlockedAndIgnored": "Ignore messages by blocked/ignored users when navigating"
|
||||
}
|
||||
},
|
||||
"reactErrorDecoder": {
|
||||
"description": "Replaces \"Minifed React Error\" with the actual error."
|
||||
},
|
||||
"replyTimestamp": {
|
||||
"description": "Shows a timestamp on replied-message previews"
|
||||
},
|
||||
"revealAllSpoilers": {
|
||||
"description": "Reveal all spoilers in a message by Ctrl-clicking a spoiler, or in the chat with Ctrl+Shift-click"
|
||||
},
|
||||
"roleColorEverywhere": {
|
||||
"description": "Adds the top role color anywhere possible",
|
||||
"settings": {
|
||||
"chatMentions": "Show role colors in chat mentions (including in the message box)",
|
||||
"memberList": "Show role colors in member list role headers",
|
||||
"voiceUsers": "Show role colors in the voice chat user list",
|
||||
"reactorsList": "Show role colors in the reactors list",
|
||||
"pollResults": "Show role colors in the poll results",
|
||||
"colorChatMessages": "Color chat messages based on the author's role color",
|
||||
"messageSaturation": "Intensity of message coloring."
|
||||
}
|
||||
},
|
||||
"betterGifPicker": {
|
||||
"description": "Makes the gif picker open the favourite category by default",
|
||||
"settings": {
|
||||
"keepOpen": "Keeps the gif picker open after selecting a gif"
|
||||
}
|
||||
},
|
||||
"favEmojiFirst": {
|
||||
"description": "Puts your favorite emoji first in the emoji autocomplete and also has emoji alias.",
|
||||
"settings": {
|
||||
"aliases": "Manage your emoji aliases.",
|
||||
"clearAll": "Delete all aliases."
|
||||
},
|
||||
"ui": {
|
||||
"setAlias": "Set alias",
|
||||
"editAlias": "Edit alias",
|
||||
"aliasRequired": "Alias is required.",
|
||||
"aliasValidation": "Alias must be 2-32 characters and only use lowercase letters, numbers, or underscores.",
|
||||
"duplicateAlias": "Duplicate alias",
|
||||
"failedToSave": "Failed to save alias.",
|
||||
"aliasSetFor": "Alias set for {emoji}.",
|
||||
"removedAlias": "Removed alias :{alias}:",
|
||||
"failedToRemove": "Failed to remove alias.",
|
||||
"deletedAllAliases": "Deleted all emoji aliases.",
|
||||
"failedToDelete": "Failed to delete aliases.",
|
||||
"noAliasesYet": "No aliases set yet.",
|
||||
"deleteAllAliases": "Delete all aliases",
|
||||
"remove": "Remove",
|
||||
"modal": {
|
||||
"setTitle": "Set alias",
|
||||
"setDescription": "Set an alias for {emoji}",
|
||||
"placeholder": "Alias, e.g. \"sob\"",
|
||||
"save": "Save"
|
||||
},
|
||||
"confirmModal": {
|
||||
"title": "Delete all aliases",
|
||||
"description": "This will remove every emoji alias you saved.",
|
||||
"confirmButton": "Delete all aliases"
|
||||
}
|
||||
}
|
||||
},
|
||||
"messageClickActions": {
|
||||
"description": "Customize click actions on messages.",
|
||||
"settings": {
|
||||
"reactEmoji": "Emoji to use for react actions",
|
||||
"singleClickAction": "Action on single click (your messages)",
|
||||
"singleClickModifier": "Modifier required for single click action (your messages)",
|
||||
"singleClickOthersAction": "Action on single click (others' messages)",
|
||||
"singleClickOthersModifier": "Modifier required for single click action (others' messages)",
|
||||
"doubleClickAction": "Action on double-click (your messages)",
|
||||
"doubleClickOthersAction": "Action on double-click (others' messages)",
|
||||
"doubleClickModifier": "Modifier required for double-click action",
|
||||
"tripleClickAction": "Action on triple-click",
|
||||
"tripleClickModifier": "Modifier required for triple-click action",
|
||||
"disableInDms": "Disable all click actions in direct messages",
|
||||
"disableInSystemDms": "Disable all click actions in system DMs",
|
||||
"clickTimeout": "Timeout to distinguish double/triple clicks (ms)",
|
||||
"doubleClickHoldThreshold": "Max hold time for double-click actions (ms). Holding longer allows text selection",
|
||||
"deferDoubleClickForTriple": "Delay double-click to allow triple-click actions (disables triple-click when off)",
|
||||
"selectionHoldTimeout": "Timeout to allow text selection (ms)",
|
||||
"quoteWithReply": "When quoting, also reply to the message",
|
||||
"useSelectionForQuote": "When quoting, use selected text if available"
|
||||
},
|
||||
"actions": {
|
||||
"none": "None",
|
||||
"delete": "Delete",
|
||||
"copyLink": "Copy Link",
|
||||
"copyId": "Copy ID",
|
||||
"copyContent": "Copy Content",
|
||||
"copyUserId": "Copy User ID",
|
||||
"edit": "Edit",
|
||||
"reply": "Reply",
|
||||
"react": "React",
|
||||
"openThread": "Open Thread",
|
||||
"openTab": "Open Tab",
|
||||
"quote": "Quote",
|
||||
"pin": "Pin"
|
||||
},
|
||||
"modifiers": {
|
||||
"none": "None",
|
||||
"shift": "Shift",
|
||||
"ctrl": "Ctrl",
|
||||
"alt": "Alt",
|
||||
"backspace": "Backspace",
|
||||
"delete": "Delete"
|
||||
},
|
||||
"toasts": {
|
||||
"cannotReact": "Cannot react: Missing permissions",
|
||||
"cannotPin": "Cannot pin: Missing permissions",
|
||||
"cannotQuote": "Cannot quote this message type"
|
||||
},
|
||||
"ui": {
|
||||
"linkCopied": "Link copied!",
|
||||
"messageIdCopied": "Message ID copied!",
|
||||
"messageContentCopied": "Message content copied!",
|
||||
"userIdCopied": "User ID copied!"
|
||||
}
|
||||
},
|
||||
"noBlockedMessages": {
|
||||
"description": "Hide all blocked/ignored messages from chat completely.",
|
||||
"settings": {
|
||||
"alsoHideIgnoredUsers": "Also hide messages from ignored users.",
|
||||
"disableNotifications": "Hide new message notifications for blocked users. Always true if \"Default Hide Users\" is enabled below and the user triggering the notification is not exempted in \"Override Users\".",
|
||||
"allowAutoModMessages": "Allow messages sent by AutoMod to bypass filtering.",
|
||||
"hideBlockedUserReplies": "Hide replies to blocked users.",
|
||||
"defaultHideUsers": "If enabled, messages from blocked users will be completely hidden and any messages from user IDs in the override list will be collapsed (default Discord behavior) instead. If disabled, messages from blocked users will be collapsed and any messages from user IDs in the override list will be completely hidden instead.",
|
||||
"overrideUsers": "Comma separated list of user IDs which will be hidden or collapsed instead of the default behavior selected above."
|
||||
}
|
||||
},
|
||||
"serverInfo": {
|
||||
"description": "Allows you to view info about a server",
|
||||
"settings": {
|
||||
"sorting": "Username or if applicable Display Name",
|
||||
"sortingOptions": {
|
||||
"username": "Username",
|
||||
"displayname": "Display Name",
|
||||
"none": "Dont Sort"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"serverInfo": "Server Info",
|
||||
"friends": "Friends",
|
||||
"mutualUsers": "Mutual Users",
|
||||
"blockedUsers": "Blocked Users",
|
||||
"ignoredUsers": "Ignored Users",
|
||||
"serverOwner": "Server Owner",
|
||||
"createdAt": "Created At",
|
||||
"joinedAt": "Joined At",
|
||||
"vanityLink": "Vanity Link",
|
||||
"preferredLocale": "Preferred Locale",
|
||||
"verificationLevel": "Verification Level",
|
||||
"serverBoosts": "Server Boosts",
|
||||
"channels": "Channels",
|
||||
"roles": "Roles"
|
||||
}
|
||||
},
|
||||
"showAllMessageButtons": {
|
||||
"description": "Always show all message buttons no matter if you are holding the shift key or not.",
|
||||
"settings": {
|
||||
"noShiftDelete": "Remove requirement to hold shift for deleting a message.",
|
||||
"noShiftPin": "Remove requirement to hold shift for pinning a message."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"absRPC": {
|
||||
"description": "Rich presence for AudioBookShelf media server",
|
||||
"description": "Rich presence para el servidor multimedia de AudioBookShelf",
|
||||
"settings": {
|
||||
"serverUrl": "AudioBookShelf server URL (e.g., https://abs.example.com)",
|
||||
"username": "AudioBookShelf username",
|
||||
"password": "AudioBookShelf password"
|
||||
"serverUrl": "URL del servidor AudioBookShelf (p. ej. https://abs.example.com)",
|
||||
"username": "Usuario de AudioBookShelf",
|
||||
"password": "Contraseña de AudioBookShelf"
|
||||
},
|
||||
"about": {
|
||||
"title": "How to connect to AudioBookShelf",
|
||||
"title": "Cómo conectarse a AudioBookShelf",
|
||||
"description": "Enter your AudioBookShelf server URL, username, and password to display your currently playing audiobooks as Discord Rich Presence.",
|
||||
"automaticAuth": "The plugin will automatically authenticate and fetch your listening progress."
|
||||
},
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
"bannersEverywhere": {
|
||||
"description": "Displays banners in the member list ",
|
||||
"settings": {
|
||||
"animate": "Animate banners",
|
||||
"animate": "Animar banners",
|
||||
"preferNameplate": "prefer nameplate over banner"
|
||||
}
|
||||
},
|
||||
|
|
@ -35,12 +35,12 @@
|
|||
}
|
||||
},
|
||||
"ui": {
|
||||
"modalTitle": "Decoded Base64 Content",
|
||||
"decodedContent": "Decoded Content",
|
||||
"copyDecoded": "Copy Decoded Content",
|
||||
"copiedToast": "Decoded content copied to clipboard!",
|
||||
"tooltipLeft": "Copy Decoded (Left Click) / Decode Base64 (Right Click)",
|
||||
"tooltipRight": "Decode Base64 (Left Click) / Copy Decoded (Right Click)"
|
||||
"modalTitle": "Contenido Base64 Decodificado",
|
||||
"decodedContent": "Contenido Decodificado",
|
||||
"copyDecoded": "Copiar Contenido Decodificado",
|
||||
"copiedToast": "¡Contenido decodificado ha sido copiado al portapapeles!",
|
||||
"tooltipLeft": "Copiar Decodificado (Click Izquierdo) / Decodificar Base64 (Click Derecho)",
|
||||
"tooltipRight": "Decodificar Base64 (Click Izquierdo) / Copiar decodificado (Click Derecho)"
|
||||
}
|
||||
},
|
||||
"betterAudioPlayer": {
|
||||
|
|
@ -61,28 +61,28 @@
|
|||
"betterBanReasons": {
|
||||
"description": "Create custom reasons to use in the Discord ban modal, and/or show a text input by default instead of the options.",
|
||||
"settings": {
|
||||
"reasons": "Your custom reasons",
|
||||
"reasons": "Tus razones personalizadas",
|
||||
"isTextInputDefault": "Shows a text input instead of a select menu by default. (Equivalent to clicking the \"Other\" option)"
|
||||
},
|
||||
"ui": {
|
||||
"reasons": "Reasons",
|
||||
"reasonPlaceholder": "Reason",
|
||||
"addAnotherReason": "Add another reason"
|
||||
"reasons": "Razones",
|
||||
"reasonPlaceholder": "Razón",
|
||||
"addAnotherReason": "Añadir otro motivo"
|
||||
}
|
||||
},
|
||||
"betterBlockedUsers": {
|
||||
"description": "Allows you to search in blocked users list and makes names selectable in settings.",
|
||||
"ui": {
|
||||
"searchPlaceholder": "Search users..."
|
||||
"searchPlaceholder": "Buscar usuarios..."
|
||||
}
|
||||
},
|
||||
"betterInvites": {
|
||||
"description": "See invites expiration date, view inviter profile and preview servers before joining by clicking the name",
|
||||
"ui": {
|
||||
"expireTooltip": "This invite will {expiry}",
|
||||
"expireTooltip": "Esta invitación va a {expiry}",
|
||||
"expireWill": "expire",
|
||||
"notExpire": "not expire",
|
||||
"invitedYouTo": "{inviter} invited you to {guild}"
|
||||
"invitedYouTo": "{inviter} Te invitó a {guild}"
|
||||
}
|
||||
},
|
||||
"bypassStatus": {
|
||||
|
|
@ -94,33 +94,33 @@
|
|||
"allowOutsideOfDms": "Allow selected users to bypass status outside of DMs too (acts like a channel/guild bypass, but it's for all messages sent by the selected users)",
|
||||
"notificationSound": "Whether the notification sound should be played",
|
||||
"respectSilentPings": "Respect silent pings (@silent / suppress notifications)",
|
||||
"statusToUse": "Status to use for whitelist"
|
||||
"statusToUse": ""
|
||||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"idle": "Ausente",
|
||||
"dnd": "No molestar",
|
||||
"invisible": "Invisible"
|
||||
},
|
||||
"contextMenu": {
|
||||
"addStatusBypass": "Add Status Bypass",
|
||||
"removeStatusBypass": "Remove Status Bypass"
|
||||
"addStatusBypass": "Añadir Bypass de Estado",
|
||||
"removeStatusBypass": "Eliminar Bypass de Estado"
|
||||
},
|
||||
"placeholder": {
|
||||
"separateWithCommas": "Separate with commas"
|
||||
"separateWithCommas": "Separar con comas"
|
||||
}
|
||||
},
|
||||
"alwaysExpandProfiles": {
|
||||
"description": "Always expands profile popouts to the full modal"
|
||||
},
|
||||
"anammox": {
|
||||
"description": "Hides various features related to nitro and the store",
|
||||
"description": "Ocultar varias funciones relacionadas con el nitro y la tienda",
|
||||
"settings": {
|
||||
"dms": "Remove shops above DMs list",
|
||||
"quests": "Remove quests above DMs list",
|
||||
"serverBoost": "Remove server boost info above channel list",
|
||||
"billing": "Remove billing settings",
|
||||
"gift": "Remove gift button",
|
||||
"dms": "Eliminar tiendas sobre la lista de Mensajes Directos",
|
||||
"quests": "Eliminar misiones sobre la lista de Mensajes Directos",
|
||||
"serverBoost": "Eliminar información sobre mejoras del servidor sobre la lista de Mensajes Directos",
|
||||
"billing": "Eliminar ajustes de facturación",
|
||||
"gift": "Eliminar botón de regalo",
|
||||
"emojiList": "Remove unavailable categories from the emoji picker"
|
||||
}
|
||||
},
|
||||
|
|
@ -129,22 +129,22 @@
|
|||
"settings": {
|
||||
"volume": "Volume of the animalese sound",
|
||||
"speed": "Speed of the animalese sound",
|
||||
"pitch": "Pitch multiplier",
|
||||
"pitch": "Multiplicador de tono",
|
||||
"messageLengthLimit": "Maximum length of message to process",
|
||||
"processOwnMessages": "Enable to yap your own messages too",
|
||||
"soundQuality": "Quality of sound to use"
|
||||
},
|
||||
"quality": {
|
||||
"high": "High",
|
||||
"medium": "Medium",
|
||||
"low": "Low",
|
||||
"lowest": "Lowest"
|
||||
"high": "Alto",
|
||||
"medium": "Mediano",
|
||||
"low": "Bajo",
|
||||
"lowest": "Muy bajo"
|
||||
}
|
||||
},
|
||||
"atSomeone": {
|
||||
"description": "Mention someone randomly",
|
||||
"description": "Mencionar a alguien al azar",
|
||||
"contextMenu": {
|
||||
"someone": "Mention someone randomly"
|
||||
"someone": "Mencionar a alguien al azar"
|
||||
}
|
||||
},
|
||||
"autoZipper": {
|
||||
|
|
@ -193,7 +193,7 @@
|
|||
}
|
||||
},
|
||||
"blockKrisp": {
|
||||
"description": "Prevent Krisp from loading"
|
||||
"description": "Evitar que Krisp cargue"
|
||||
},
|
||||
"bypassPinPrompt": {
|
||||
"description": "Bypass the pin prompt when using the pin functions"
|
||||
|
|
@ -202,10 +202,10 @@
|
|||
"description": "Adds badges to channels based on their type",
|
||||
"settings": {
|
||||
"oneBadgePerChannel": "Show only one badge per channel",
|
||||
"showTextBadge": "Show Text badge",
|
||||
"showVoiceBadge": "Show Voice badge",
|
||||
"showCategoryBadge": "Show Category badge",
|
||||
"showDirectoryBadge": "Show Directory badge",
|
||||
"showTextBadge": "Mostrar insignia de texto",
|
||||
"showVoiceBadge": "Mostrar insignia de voz",
|
||||
"showCategoryBadge": "Mostrar insignia de categoría",
|
||||
"showDirectoryBadge": "Mostrar insignia de directorio",
|
||||
"showAnnouncementThreadBadge": "Show Announcement Thread badge",
|
||||
"showPublicThreadBadge": "Show Public Thread badge",
|
||||
"showPrivateThreadBadge": "Show Private Thread badge",
|
||||
|
|
@ -242,22 +242,22 @@
|
|||
"stageBadgeColor": "Stage badge color",
|
||||
"directoryBadgeColor": "Directory badge color",
|
||||
"forumBadgeColor": "Forum badge color",
|
||||
"mediaBadgeColor": "Media badge color",
|
||||
"nsfwBadgeColor": "NSFW badge color",
|
||||
"lockedBadgeColor": "Locked badge color",
|
||||
"rulesBadgeColor": "Rules badge color",
|
||||
"unknownBadgeColor": "Unknown badge color"
|
||||
"mediaBadgeColor": "Color de la insignia multimedia",
|
||||
"nsfwBadgeColor": "Color de la insignia NSFW",
|
||||
"lockedBadgeColor": "Color de insignia bloqueada",
|
||||
"rulesBadgeColor": "Color de la insignia de Reglas",
|
||||
"unknownBadgeColor": "Color de insignia Desconocido"
|
||||
},
|
||||
"tooltips": {
|
||||
"lockedChannel": "This channel is locked.",
|
||||
"nsfwChannel": "This channel is marked as NSFW.",
|
||||
"rulesChannel": "This channel is the server rules channel."
|
||||
"nsfwChannel": "Este canal está marcado como NSFW.",
|
||||
"rulesChannel": "Este canal es el canal de reglas del servidor."
|
||||
}
|
||||
},
|
||||
"channelTabs": {
|
||||
"description": "Group your commonly visited channels in tabs, like a browser",
|
||||
"contextMenu": {
|
||||
"openInNewTab": "Open in New Tab"
|
||||
"openInNewTab": "Abrir en una Nueva Pestaña"
|
||||
}
|
||||
},
|
||||
"characterCounter": {
|
||||
|
|
@ -283,7 +283,7 @@
|
|||
"blockedReplyDisplay": "What should display instead of the message when someone replies to someone you have hidden",
|
||||
"blockedReplyDisplayOptions": {
|
||||
"displayText": "Display text saying a hidden message was replied to",
|
||||
"hideReply": "Literally nothing"
|
||||
"hideReply": "Literalmente nada"
|
||||
},
|
||||
"guildBlackList": "Guild ids to disable functionality in",
|
||||
"guildWhiteList": "Guild ids to enable functionality in"
|
||||
|
|
@ -297,9 +297,9 @@
|
|||
"settings": {
|
||||
"richPresenceTagging": "When should clips be tagged with the current Rich Presence?",
|
||||
"richPresenceTaggingOptions": {
|
||||
"always": "Always",
|
||||
"always": "Siempre",
|
||||
"whenMatched": "Only when beginning or end of activity name matches",
|
||||
"never": "Never"
|
||||
"never": "Nunca"
|
||||
},
|
||||
"enableScreenshotKeybind": "Enable the screenshot keybind feature",
|
||||
"enableVoiceOnlyClips": "Enable voice-only clips (audio without video)",
|
||||
|
|
@ -312,10 +312,10 @@
|
|||
"description": "Quickly run actions through a searchable command palette",
|
||||
"settings": {
|
||||
"hotkey": "Hotkey used to open the command palette",
|
||||
"visualStyle": "Palette appearance",
|
||||
"visualStyle": "Aspecto de la paleta",
|
||||
"visualStyleOptions": {
|
||||
"classic": "Classic",
|
||||
"polished": "Polished"
|
||||
"classic": "Clásico",
|
||||
"polished": "Pulido"
|
||||
},
|
||||
"showTags": "Display tag chips for commands",
|
||||
"enableTagFilter": "Show the tag filter bar",
|
||||
|
|
@ -324,8 +324,8 @@
|
|||
"ui": {
|
||||
"hotkeyTitle": "Command Palette Hotkey",
|
||||
"hotkeyDescription": "Hotkey used to open the command palette",
|
||||
"pressAnyKey": "Press any key...",
|
||||
"reset": "Reset"
|
||||
"pressAnyKey": "Presiona cualquier tecla...",
|
||||
"reset": "Restablecer"
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
|
|
@ -337,8 +337,8 @@
|
|||
"onClick": "Only show trigger content on click instead of hover"
|
||||
},
|
||||
"ui": {
|
||||
"flaggedWords": "Flagged Words",
|
||||
"placeholder": "Word"
|
||||
"flaggedWords": "Palabras marcadas",
|
||||
"placeholder": "Palabra"
|
||||
}
|
||||
},
|
||||
"copyProfileColors": {
|
||||
|
|
@ -347,7 +347,7 @@
|
|||
"copyProfileColors": "Copy Profile Colors"
|
||||
},
|
||||
"toast": {
|
||||
"noColorsFound": "No profile colors found!",
|
||||
"noColorsFound": "¡No se encontraron colores de perfil!",
|
||||
"copied": "Profile colors copied to clipboard!",
|
||||
"error": "Error copying profile colors!"
|
||||
}
|
||||
|
|
@ -355,7 +355,7 @@
|
|||
"copyStatusUrls": {
|
||||
"description": "Copy the users status url when you right-click it",
|
||||
"toast": {
|
||||
"copied": "Copied URL",
|
||||
"copied": "URL Copiado",
|
||||
"error": "Error copying URL, check console for more info"
|
||||
}
|
||||
},
|
||||
|
|
@ -371,19 +371,19 @@
|
|||
"buddy": "Pick a cursor buddy",
|
||||
"buddyOptions": {
|
||||
"oneko": "Oneko",
|
||||
"fathorse": "Fatass Horse"
|
||||
"fathorse": "Caballo Gordo"
|
||||
},
|
||||
"speed": "Speed of your buddy",
|
||||
"fps": "Framerate of your buddy",
|
||||
"furColor": "Fur hex color for Oneko",
|
||||
"speed": "Velocidad de tu amigo",
|
||||
"fps": "Cantidad de frames de tu amigo",
|
||||
"furColor": "Color hexadecimal de piel de Oneko",
|
||||
"outlineColor": "Outline hex color for Oneko",
|
||||
"size": "Size of the fatass horse",
|
||||
"size": "Tamaño del caballo gordo",
|
||||
"fade": "If the horse should fade when the cursor is near",
|
||||
"freeroam": "If the horse should roam freely when idle",
|
||||
"shake": "If the horse should shake the window when it's walking"
|
||||
},
|
||||
"ui": {
|
||||
"furColor": "Fur Color",
|
||||
"furColor": "Color de Pelaje",
|
||||
"outlineColor": "Outline Color"
|
||||
}
|
||||
},
|
||||
|
|
@ -395,9 +395,9 @@
|
|||
"settings": {
|
||||
"searchSounds": "Search Sounds",
|
||||
"searchPlaceholder": "Search by name or ID",
|
||||
"import": "Import",
|
||||
"export": "Export",
|
||||
"resetAll": "Reset All",
|
||||
"import": "Importar",
|
||||
"export": "Exportar",
|
||||
"resetAll": "Resetear todo",
|
||||
"debug": "Debug"
|
||||
},
|
||||
"toast": {
|
||||
|
|
@ -412,11 +412,11 @@
|
|||
"description": "Custom timestamps on messages and tooltips",
|
||||
"settings": {
|
||||
"formats": "Customize the timestamp formats",
|
||||
"calendarFormats": "Calendar formats",
|
||||
"calendarFormats": "Formatos del calendario",
|
||||
"calendarFormatsDescription": "How to format the [calendar] value if used in the above timestamps."
|
||||
},
|
||||
"about": {
|
||||
"title": "How to use:",
|
||||
"title": "Cómo usar:",
|
||||
"additional": "Additionally you can use these in your inputs:",
|
||||
"calendar": "enables dynamic date formatting such as \"Today\" or \"Yesterday\".",
|
||||
"relative": "gives you times such as \"4 hours ago\"."
|
||||
|
|
@ -429,7 +429,7 @@
|
|||
"colorInServers": "If name colors should be changed within servers"
|
||||
},
|
||||
"contextMenu": {
|
||||
"setColor": "Set Color"
|
||||
"setColor": "Definir Color"
|
||||
}
|
||||
},
|
||||
"disableCameras": {
|
||||
|
|
@ -446,33 +446,33 @@
|
|||
"settings": {
|
||||
"userOutput": "User drop output.",
|
||||
"userOutputOptions": {
|
||||
"mention": "Mention user",
|
||||
"id": "User ID"
|
||||
"mention": "Mencionar usuario",
|
||||
"id": "ID de Usuario"
|
||||
},
|
||||
"channelOutput": "Channel drop output.",
|
||||
"channelOutputOptions": {
|
||||
"mention": "#channel mention",
|
||||
"link": "Channel link"
|
||||
"link": "Enlace del canal"
|
||||
},
|
||||
"inviteExpireAfter": "Invite expiration.",
|
||||
"inviteExpireAfterOptions": {
|
||||
"30min": "30 minutes",
|
||||
"1hour": "1 hour",
|
||||
"6hours": "6 hours",
|
||||
"12hours": "12 hours",
|
||||
"1day": "1 day",
|
||||
"7days": "7 days",
|
||||
"never": "Never"
|
||||
"30min": "30 minutos",
|
||||
"1hour": "1 hora",
|
||||
"6hours": "6 horas",
|
||||
"12hours": "12 horas",
|
||||
"1day": "1 día",
|
||||
"7days": "7 días",
|
||||
"never": "Nunca"
|
||||
},
|
||||
"inviteMaxUses": "Invite max uses.",
|
||||
"inviteMaxUsesOptions": {
|
||||
"noLimit": "No limit",
|
||||
"1use": "1 use",
|
||||
"5uses": "5 uses",
|
||||
"10uses": "10 uses",
|
||||
"25uses": "25 uses",
|
||||
"50uses": "50 uses",
|
||||
"100uses": "100 uses"
|
||||
"noLimit": "Ilimitado",
|
||||
"1use": "1 uso",
|
||||
"5uses": "5 usos",
|
||||
"10uses": "10 usos",
|
||||
"25uses": "25 usos",
|
||||
"50uses": "50 usos",
|
||||
"100uses": "100 usos"
|
||||
},
|
||||
"inviteTemporaryMembership": "Grant temporary membership.",
|
||||
"reuseExistingInvites": "Reuse existing invite instead of creating a new one.",
|
||||
|
|
@ -481,8 +481,8 @@
|
|||
"toast": {
|
||||
"dropFailed": "Dragify failed to handle drop.",
|
||||
"noChannelForInvites": "No channel available for invites.",
|
||||
"inviteCreated": "Invite created.",
|
||||
"inviteFailed": "Unable to create invite."
|
||||
"inviteCreated": "Invitación creada.",
|
||||
"inviteFailed": "No se pudo crear la invitación."
|
||||
}
|
||||
},
|
||||
"messageLoggerEnhanced": {
|
||||
|
|
@ -517,41 +517,41 @@
|
|||
"selectLogsDir": "Select logs directory",
|
||||
"importLogsFromFile": "Import Logs From File",
|
||||
"exportLogsFromIndexedDB": "Export Logs From IndexedDB",
|
||||
"openLogs": "Open Logs",
|
||||
"openLogs": "Abrir Registros",
|
||||
"openImageCacheFolder": "Opens the image cache directory"
|
||||
},
|
||||
"modal": {
|
||||
"filterMessages": "Filter Messages",
|
||||
"deleted": "Deleted",
|
||||
"edited": "Edited",
|
||||
"ghostPinged": "Ghost Pinged",
|
||||
"clearAllLogs": "Clear All Logs",
|
||||
"clearVisibleLogs": "Clear Visible Logs",
|
||||
"sortOldestFirst": "Sort Oldest First",
|
||||
"sortNewestFirst": "Sort Newest First",
|
||||
"noResultsIn": "No results in {tab}.",
|
||||
"maybeTry": "Maybe try {nextTab} or {lastTab}",
|
||||
"deleted": "Eliminado",
|
||||
"edited": "Editado",
|
||||
"ghostPinged": "Ping Fantasma",
|
||||
"clearAllLogs": "Borrar todos los registros",
|
||||
"clearVisibleLogs": "Borrar Registros Visibles",
|
||||
"sortOldestFirst": "Ordenar primero más antiguo",
|
||||
"sortNewestFirst": "Ordenar primero más nuevo",
|
||||
"noResultsIn": "Sin resultados en {tab}.",
|
||||
"maybeTry": "Tal vez pruebe {nextTab} o {lastTab}",
|
||||
"emptyLogs": "Empty eh",
|
||||
"importLogsTooltip": "ML Enhanced now stores logs in indexeddb. You need to import your old logs from the logs directory. Importing wont overwrite existing logs",
|
||||
"importLogs": "Import Logs",
|
||||
"loadMore": "Load More",
|
||||
"importLogs": "Importar Registros",
|
||||
"loadMore": "Cargar Más",
|
||||
"jumpToMessage": "Jump To Message",
|
||||
"openUserProfile": "Open user profile",
|
||||
"copyContent": "Copy Content",
|
||||
"copyUserId": "Copy User ID",
|
||||
"copyMessageId": "Copy Message ID",
|
||||
"copyChannelId": "Copy Channel ID",
|
||||
"copyServerId": "Copy Server ID",
|
||||
"deleteLog": "Delete Log",
|
||||
"copyContent": "Copiar Contenido",
|
||||
"copyUserId": "Copiar ID del Usuario",
|
||||
"copyMessageId": "Copiar ID del mensaje",
|
||||
"copyChannelId": "Copiar ID del canal",
|
||||
"copyServerId": "Copiar ID del servidor",
|
||||
"deleteLog": "Eliminar registro",
|
||||
"fromDms": "From {username}'s DMs",
|
||||
"fromGroupDm": "From {name} Group DM",
|
||||
"fromChannel": "From {channel} in {guild}"
|
||||
},
|
||||
"buttons": {
|
||||
"importing": "Importing...",
|
||||
"importLogs": "Import Logs",
|
||||
"exporting": "Exporting...",
|
||||
"exportLogs": "Export Logs"
|
||||
"importing": "Importando...",
|
||||
"importLogs": "Importar Registros",
|
||||
"exporting": "Exportando...",
|
||||
"exportLogs": "Exportar Registros"
|
||||
}
|
||||
},
|
||||
"friendCodes": {
|
||||
|
|
@ -561,13 +561,13 @@
|
|||
"webhookUrl": "Webhook URL to send friend code to"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Friend Codes",
|
||||
"title": "Códigos de Amigo",
|
||||
"currentCode": "Current Friend Code",
|
||||
"copyCode": "Copy Code",
|
||||
"copyCode": "Copiar código",
|
||||
"copied": "Copied!",
|
||||
"sendToServer": "Send to Server",
|
||||
"sent": "Sent!",
|
||||
"refresh": "Refresh",
|
||||
"sendToServer": "Enviar al Servidor",
|
||||
"sent": "¡Enviado!",
|
||||
"refresh": "Refrescar",
|
||||
"error": "Error: {error}"
|
||||
}
|
||||
},
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
},
|
||||
"ui": {
|
||||
"recording": "Recording...",
|
||||
"reset": "Reset",
|
||||
"reset": "Reiniciar",
|
||||
"copiedColor": "Copied color to clipboard!"
|
||||
}
|
||||
},
|
||||
|
|
@ -603,10 +603,10 @@
|
|||
},
|
||||
"standing": {
|
||||
"allGood": "All good!",
|
||||
"limited": "Limited",
|
||||
"veryLimited": "Very limited",
|
||||
"atRisk": "At risk",
|
||||
"suspended": "Suspended"
|
||||
"limited": "Limitado",
|
||||
"veryLimited": "Muy limitado",
|
||||
"atRisk": "En Riesgo",
|
||||
"suspended": "Suspendido"
|
||||
},
|
||||
"commands": {
|
||||
"refreshCommands": "Refresh Slash Commands",
|
||||
|
|
@ -616,8 +616,8 @@
|
|||
"alerts": {
|
||||
"supportWarningTitle": "Vencord Support Channel Warning",
|
||||
"supportWarningBody": "Before asking for help. Check updates and if this issue is actually caused by Equicord!",
|
||||
"equicordSupport": "Equicord Support",
|
||||
"okayContinue": "Okay continue"
|
||||
"equicordSupport": "Soporte de Equicord",
|
||||
"okayContinue": "Okay continuar"
|
||||
}
|
||||
},
|
||||
"equicordToolbox": {
|
||||
|
|
@ -626,15 +626,15 @@
|
|||
"showPluginMenu": "Show the plugins menu in the toolbox"
|
||||
},
|
||||
"ui": {
|
||||
"tooltip": "Equicord Toolbox",
|
||||
"tooltip": "Caja de herramientas de Equicord",
|
||||
"plugins": "Plugins",
|
||||
"themes": "Themes",
|
||||
"openNotificationLog": "Open Notification Log",
|
||||
"openSettings": "Open Settings",
|
||||
"enableQuickCss": "Enable QuickCSS",
|
||||
"editQuickCss": "Edit QuickCSS",
|
||||
"manageThemes": "Manage Themes",
|
||||
"restartToApply": "Restart to apply the change"
|
||||
"themes": "Temas",
|
||||
"openNotificationLog": "Abrir el registro de notificaciones",
|
||||
"openSettings": "Abrir Ajustes",
|
||||
"enableQuickCss": "Habilitar QuickCSS",
|
||||
"editQuickCss": "Editar QuickCSS",
|
||||
"manageThemes": "Gestionar Temas",
|
||||
"restartToApply": "Reiniciar para aplicar el cambio"
|
||||
}
|
||||
},
|
||||
"equissant": {
|
||||
|
|
@ -666,14 +666,14 @@
|
|||
},
|
||||
"ui": {
|
||||
"exportMessage": "Export Message",
|
||||
"export": "Export",
|
||||
"export": "Exportar",
|
||||
"contactsCopied": "Contacts copied to clipboard successfully.",
|
||||
"contactListUndefined": "Contact list is undefined. Click on the \"All\" tab before exporting."
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Export Messages",
|
||||
"title": "Exportar mensajes",
|
||||
"exportSuccess": "Message exported successfully as {filename}",
|
||||
"exportFailed": "Failed to export message"
|
||||
"exportFailed": "Error al exportar el mensaje"
|
||||
}
|
||||
},
|
||||
"fastDeleteChannels": {
|
||||
|
|
@ -702,7 +702,7 @@
|
|||
"hideButtonIfNoReply": "Hides the button if there are no replies to the message"
|
||||
},
|
||||
"ui": {
|
||||
"jumpToReply": "Jump to Reply"
|
||||
"jumpToReply": "Ir a la respuesta"
|
||||
},
|
||||
"toasts": {
|
||||
"useBottomPanel": "Use the bottom panel to navigate between replies.",
|
||||
|
|
@ -720,7 +720,7 @@
|
|||
"leaveWhenUserLeaves": "Leave the voice channel when the user leaves. (That can cause you to sometimes enter infinite leave/join loop)"
|
||||
},
|
||||
"ui": {
|
||||
"followUser": "Follow User"
|
||||
"followUser": "Seguir usuario"
|
||||
},
|
||||
"info": "This Plugin is used to follow a Friend/Friends into voice chat(s)."
|
||||
},
|
||||
|
|
@ -1107,21 +1107,21 @@
|
|||
"savedPasswords": "Saved Passwords (Seperated with a , )"
|
||||
},
|
||||
"ui": {
|
||||
"encryptMessage": "Encrypt Message",
|
||||
"decryptMessage": "Decrypt Message",
|
||||
"encryptMessage": "Encriptar Mensaje",
|
||||
"decryptMessage": "Descifrar Mensaje",
|
||||
"hiddenMessageIndicator": "This message has a hidden message! (InvisibleChat)"
|
||||
}
|
||||
},
|
||||
"inviteDefaults": {
|
||||
"description": "Allows you to edit the default values when creating server invites.",
|
||||
"settings": {
|
||||
"inviteDuration": "Invite Duration",
|
||||
"inviteDuration": "Duración de la invitación",
|
||||
"maxUses": "Invite Use Count",
|
||||
"temporaryMembership": "Temporary Membership"
|
||||
},
|
||||
"options": {
|
||||
"infinite": "Infinite",
|
||||
"forever": "Forever"
|
||||
"infinite": "Infinito",
|
||||
"forever": "Permanente"
|
||||
}
|
||||
},
|
||||
"jellyfinRichPresence": {
|
||||
|
|
@ -1142,7 +1142,7 @@
|
|||
"nameFormatOptions": {
|
||||
"seriesMovieName": "Series/Movie Name",
|
||||
"seriesEpisodeName": "Series - Episode/Track/Movie Name",
|
||||
"custom": "Custom"
|
||||
"custom": "Personalizado"
|
||||
},
|
||||
"coverTypeOptions": {
|
||||
"seriesCover": "Series Cover",
|
||||
|
|
@ -1154,14 +1154,14 @@
|
|||
"fulltext": "Season 1 Episode 1"
|
||||
},
|
||||
"overrideTypeOptions": {
|
||||
"off": "Off",
|
||||
"listening": "Listening",
|
||||
"playing": "Playing",
|
||||
"off": "Desactivado",
|
||||
"listening": "Escuchando",
|
||||
"playing": "Jugando",
|
||||
"streaming": "Streaming",
|
||||
"watching": "Watching"
|
||||
"watching": "Viendo"
|
||||
},
|
||||
"howToGetApiKey": {
|
||||
"title": "How to get an API key",
|
||||
"title": "Cómo obtener una clave API",
|
||||
"description": "Auth token can be found by following these steps:",
|
||||
"userIdInfo": "You'll also need your User ID, which can be found in the url of your user profile page."
|
||||
},
|
||||
|
|
@ -1169,22 +1169,22 @@
|
|||
"notConfigured": "JellyfinRPC is not configured."
|
||||
},
|
||||
"privacyMode": {
|
||||
"episodeHidden": "[Episode Hidden]",
|
||||
"trackHidden": "[Track Hidden]",
|
||||
"movieHidden": "[Movie Hidden]",
|
||||
"titleHidden": "[Title Hidden]",
|
||||
"seriesHidden": "[Series Hidden]",
|
||||
"artistHidden": "[Artist Hidden]",
|
||||
"albumHidden": "[Album Hidden]",
|
||||
"episodeHidden": "[Episodio oculto]",
|
||||
"trackHidden": "[Pista oculta]",
|
||||
"movieHidden": "[Película oculta]",
|
||||
"titleHidden": "[Título oculto]",
|
||||
"seriesHidden": "[Serie oculta]",
|
||||
"artistHidden": "[Artista oculta]",
|
||||
"albumHidden": "[Álbum oculto]",
|
||||
"mediaHidden": "[Media Hidden]",
|
||||
"watchingTvShow": "Watching a TV Show",
|
||||
"watchingSomething": "Watching Something",
|
||||
"listeningToMusic": "Listening to music"
|
||||
"watchingTvShow": "Ver una serie de TV",
|
||||
"watchingSomething": "Viendo algo",
|
||||
"listeningToMusic": "Escuchando música"
|
||||
},
|
||||
"state": {
|
||||
"paused": "Paused",
|
||||
"season": "Season {season}",
|
||||
"episode": "Episode {episode}"
|
||||
"paused": "Pausado",
|
||||
"season": "Temporada {season}",
|
||||
"episode": "Episodio {episode}"
|
||||
}
|
||||
},
|
||||
"jumpscare": {
|
||||
|
|
@ -1198,13 +1198,13 @@
|
|||
"jumpTo": {
|
||||
"description": "Adds context menu options to jump to the start or bottom of a channel/DM.",
|
||||
"ui": {
|
||||
"jumpToFirst": "Jump To First Message",
|
||||
"jumpToLast": "Jump To Last Message",
|
||||
"yourLastMessage": "Your Last Message",
|
||||
"jumpToFirst": "Ir al primer mensaje",
|
||||
"jumpToLast": "Ir al último mensaje",
|
||||
"yourLastMessage": "Tu último mensaje",
|
||||
"usersLastMessage": "User's Last Message"
|
||||
},
|
||||
"errors": {
|
||||
"noMessagesFound": "No messages found from this user in this channel.",
|
||||
"noMessagesFound": "No se han encontrado mensajes de este usuario en este canal.",
|
||||
"failedSearch": "Failed to search for messages.",
|
||||
"channelNotAvailable": "Channel information not available.",
|
||||
"failedJump": "Failed to jump to message. Check console for details."
|
||||
|
|
@ -1217,7 +1217,7 @@
|
|||
"allowMouseControl": "Allow the mouse to control the command palette."
|
||||
},
|
||||
"ui": {
|
||||
"recording": "Recording...",
|
||||
"recording": "Grabando...",
|
||||
"recordKeybind": "Record keybind"
|
||||
},
|
||||
"commands": {
|
||||
|
|
@ -1225,7 +1225,7 @@
|
|||
}
|
||||
},
|
||||
"keyboardSounds": {
|
||||
"description": "Adds OperaGX or osu! sound effects when typing on your keyboard.",
|
||||
"description": "Añade efectos de sonido de OperaGX u osu! al escribir en el teclado.",
|
||||
"settings": {
|
||||
"volume": "Volume of the keyboard sounds.",
|
||||
"soundPack": "Sound pack to use."
|
||||
|
|
@ -1240,12 +1240,12 @@
|
|||
"settings": {
|
||||
"ignoreBots": "Ignore messages from bots",
|
||||
"amountToKeep": "Amount of messages to keep in the log",
|
||||
"keywords": "Manage keywords"
|
||||
"keywords": "Administrar palabras clave"
|
||||
},
|
||||
"ui": {
|
||||
"keywords": "Keywords",
|
||||
"keywords": "Palabras clave",
|
||||
"clearAll": "Clear All",
|
||||
"addId": "Add ID",
|
||||
"addId": "Agregar ID",
|
||||
"addKeywordEntry": "Add Keyword Entry",
|
||||
"keywordEntry": "Keyword Entry {index}",
|
||||
"ignoreCase": "Ignore Case",
|
||||
|
|
@ -1280,8 +1280,8 @@
|
|||
"listenBrainzRPC": {
|
||||
"description": "Little plugin for ListenBrainz rich presence",
|
||||
"settings": {
|
||||
"username": "ListenBrainz username",
|
||||
"mbContact": "ListenBrainz contact",
|
||||
"username": "Nombre de usuario ListenBrainz",
|
||||
"mbContact": "Contacto ListenBrainz",
|
||||
"shareUsername": "Show link to ListenBrainz profile (may only be visible to other users)",
|
||||
"shareSong": "Show link to song on ListenBrainz (may only be visible to other users)",
|
||||
"hideWithSpotify": "Hide ListenBrainz presence if Spotify is running",
|
||||
|
|
@ -1294,37 +1294,37 @@
|
|||
"useLogo": "Show ListenBrainz logo on album art"
|
||||
},
|
||||
"nameFormatOptions": {
|
||||
"customStatus": "Use custom status name",
|
||||
"artistFirst": "Use format 'artist - song'",
|
||||
"songFirst": "Use format 'song - artist'",
|
||||
"artistOnly": "Use artist name only",
|
||||
"songOnly": "Use song name only",
|
||||
"customStatus": "Usar nombre de estado personalizado",
|
||||
"artistFirst": "Usar formato 'artista - canción'",
|
||||
"songFirst": "Usar formato 'canción - artista'",
|
||||
"artistOnly": "Usar solo el nombre del artista",
|
||||
"songOnly": "Usar solo nombre de canción",
|
||||
"albumName": "Use album name (falls back to custom status text if song has no album)"
|
||||
},
|
||||
"missingArtOptions": {
|
||||
"listenbrainzLogo": "Use large ListenBrainz logo",
|
||||
"placeholder": "Use generic placeholder"
|
||||
"placeholder": "Usar placeholder genérico"
|
||||
},
|
||||
"about": {
|
||||
"title": "About MusicBrainz API",
|
||||
"title": "Acerca de la API de MusicBrainz ",
|
||||
"description": "The MusicBrainz API does not require an API key, but it does require a meaningful user-agent string. For most, an email address should suffice."
|
||||
},
|
||||
"buttons": {
|
||||
"profile": "ListenBrainz Profile",
|
||||
"viewSong": "View Song"
|
||||
"profile": "Perfil ListenBrainz",
|
||||
"viewSong": "Ver canción"
|
||||
},
|
||||
"defaults": {
|
||||
"statusName": "some music"
|
||||
"statusName": "Algo de música"
|
||||
}
|
||||
},
|
||||
"loginWithQR": {
|
||||
"description": "Allows you to login to another device by scanning a login QR code, just like on mobile!",
|
||||
"settings": {
|
||||
"scanQr": "Scan a QR code"
|
||||
"scanQr": "Escanear código QR"
|
||||
},
|
||||
"ui": {
|
||||
"enableAndRestart": "Enable the plugin and restart your client to scan a login QR code",
|
||||
"scanQrCode": "Scan QR Code"
|
||||
"scanQrCode": "Escanear código QR"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,343 +1,343 @@
|
|||
{
|
||||
"absRPC": {
|
||||
"description": "Rich presence for AudioBookShelf media server",
|
||||
"description": "Rich presence para servidor de mídia AudioBookShelf",
|
||||
"settings": {
|
||||
"serverUrl": "AudioBookShelf server URL (e.g., https://abs.example.com)",
|
||||
"username": "AudioBookShelf username",
|
||||
"password": "AudioBookShelf password"
|
||||
"serverUrl": "URL do servidor AudioBookShelf (exemplo: https://abs.exemplo.com)",
|
||||
"username": "Usuário AudioBookShelf",
|
||||
"password": "Senha AudioBookShelf"
|
||||
},
|
||||
"about": {
|
||||
"title": "How to connect to AudioBookShelf",
|
||||
"description": "Enter your AudioBookShelf server URL, username, and password to display your currently playing audiobooks as Discord Rich Presence.",
|
||||
"automaticAuth": "The plugin will automatically authenticate and fetch your listening progress."
|
||||
"title": "Como conectar ao AudioBookShelf",
|
||||
"description": "Insira a URL do seu servidor AudioBookShelf, usuário e senha para exibir os audiolivros que você está ouvindo no Discord Rich Presence.",
|
||||
"automaticAuth": "O plugin irá autenticar automaticamente e buscar seu progresso de escuta."
|
||||
},
|
||||
"toasts": {
|
||||
"notConfigured": "AudioBookShelf RPC is not configured."
|
||||
"notConfigured": "AudioBookShelf RPC não está configurado."
|
||||
}
|
||||
},
|
||||
"altKrispSwitch": {
|
||||
"description": "Makes the Noise Suppression Popout switch between None and Krisp instead of Krisp and Standard"
|
||||
"description": "Faz o Popout de Supressão de Ruído alternar entre Nenhum e Krisp em vez de Krisp e Padrão"
|
||||
},
|
||||
"bannersEverywhere": {
|
||||
"description": "Displays banners in the member list ",
|
||||
"description": "Exibe banners na lista de membros ",
|
||||
"settings": {
|
||||
"animate": "Animate banners",
|
||||
"preferNameplate": "prefer nameplate over banner"
|
||||
"animate": "Animar banners",
|
||||
"preferNameplate": "preferir placa de identificação em vez de banner"
|
||||
}
|
||||
},
|
||||
"baseDecoder": {
|
||||
"description": "Decode base64 content of any message and copy the decoded content.",
|
||||
"description": "Decodificar conteúdo base64 de qualquer mensagem e copiar o conteúdo decodificado.",
|
||||
"settings": {
|
||||
"clickMethod": "Change the button to decode base64 content of any message.",
|
||||
"clickMethod": "Altere o botão para decodificar conteúdo base64 de qualquer mensagem.",
|
||||
"clickMethodOptions": {
|
||||
"left": "Left Click to decode the base64 content.",
|
||||
"right": "Right click to decode the base64 content."
|
||||
"left": "Clique esquerdo para decodificar o conteúdo base64.",
|
||||
"right": "Clique direito para decodificar o conteúdo base64."
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"modalTitle": "Decoded Base64 Content",
|
||||
"decodedContent": "Decoded Content",
|
||||
"copyDecoded": "Copy Decoded Content",
|
||||
"copiedToast": "Decoded content copied to clipboard!",
|
||||
"tooltipLeft": "Copy Decoded (Left Click) / Decode Base64 (Right Click)",
|
||||
"tooltipRight": "Decode Base64 (Left Click) / Copy Decoded (Right Click)"
|
||||
"modalTitle": "Conteúdo Base64 Decodificado",
|
||||
"decodedContent": "Conteúdo Decodificado",
|
||||
"copyDecoded": "Copiar Conteúdo Decodificado",
|
||||
"copiedToast": "Conteúdo decodificado copiado para área de transferência!",
|
||||
"tooltipLeft": "Copiar Decodificado (Clique esquerdo) / Decodificar Base64 (Clique direito)",
|
||||
"tooltipRight": "Decodificar Base64 (Clique esquerdo) / Copiar Decodificado (Clique direito)"
|
||||
}
|
||||
},
|
||||
"betterAudioPlayer": {
|
||||
"description": "Adds a spectrograph and oscilloscope visualizer to audio attachment players",
|
||||
"description": "Adiciona um visualizador de espectrógrafo e osciloscópio aos reprodutores de anexos de áudio",
|
||||
"settings": {
|
||||
"oscilloscope": "Enable oscilloscope visualizer",
|
||||
"spectrograph": "Enable spectrograph visualizer",
|
||||
"oscilloscopeSolidColor": "Use solid color for oscilloscope",
|
||||
"oscilloscopeColor": "Color for oscilloscope",
|
||||
"spectrographSolidColor": "Use solid color for spectrograph",
|
||||
"spectrographColor": "Color for spectrograph",
|
||||
"forceMoveBelow": "Force the visualizer below the audio player"
|
||||
"oscilloscope": "Ativar visualizador de osciloscópio",
|
||||
"spectrograph": "Ativar visualizador espectrográfico",
|
||||
"oscilloscopeSolidColor": "Usar cor sólida para o osciloscópio",
|
||||
"oscilloscopeColor": "Cor para osciloscópio",
|
||||
"spectrographSolidColor": "Usar cores sólidas para o espectrógrafo",
|
||||
"spectrographColor": "Cor para espectrográfico",
|
||||
"forceMoveBelow": "Forçar o visualizador abaixo do reprodutor de áudio"
|
||||
},
|
||||
"toasts": {
|
||||
"invalidColor": "Invalid color format for {settingKey}, make sure it's in the format 'R, G, B' or '#RRGGBB'"
|
||||
"invalidColor": "Formato de cor inválido para {settingKey}, verifique se está no formato 'R, G, B' ou '#RGGBB'"
|
||||
}
|
||||
},
|
||||
"betterBanReasons": {
|
||||
"description": "Create custom reasons to use in the Discord ban modal, and/or show a text input by default instead of the options.",
|
||||
"description": "Criar motivos personalizados para usar na janela de banimento do Discord e/ou exibir uma entrada de texto por padrão em vez das opções.",
|
||||
"settings": {
|
||||
"reasons": "Your custom reasons",
|
||||
"isTextInputDefault": "Shows a text input instead of a select menu by default. (Equivalent to clicking the \"Other\" option)"
|
||||
"reasons": "Seus motivos personalizados",
|
||||
"isTextInputDefault": "Mostra uma entrada de texto em vez de um menu de seleção por padrão. (Equivalente a clicar na opção \"Outro\")"
|
||||
},
|
||||
"ui": {
|
||||
"reasons": "Reasons",
|
||||
"reasonPlaceholder": "Reason",
|
||||
"addAnotherReason": "Add another reason"
|
||||
"reasons": "Motivos",
|
||||
"reasonPlaceholder": "Motivo",
|
||||
"addAnotherReason": "Adicionar outro motivo"
|
||||
}
|
||||
},
|
||||
"betterBlockedUsers": {
|
||||
"description": "Allows you to search in blocked users list and makes names selectable in settings.",
|
||||
"description": "Permite que você pesquise na lista de usuários bloqueados e torna os nomes selecionáveis nas configurações.",
|
||||
"ui": {
|
||||
"searchPlaceholder": "Search users..."
|
||||
"searchPlaceholder": "Pesquisar usuários..."
|
||||
}
|
||||
},
|
||||
"betterInvites": {
|
||||
"description": "See invites expiration date, view inviter profile and preview servers before joining by clicking the name",
|
||||
"description": "Ver a data de expiração dos convites, visualizar o perfil de quem convidou e pré-visualizar servidores antes de entrar ao clicar no nome",
|
||||
"ui": {
|
||||
"expireTooltip": "This invite will {expiry}",
|
||||
"expireWill": "expire",
|
||||
"notExpire": "not expire",
|
||||
"invitedYouTo": "{inviter} invited you to {guild}"
|
||||
"expireTooltip": "Este convite irá {expiry}",
|
||||
"expireWill": "expirar",
|
||||
"notExpire": "não expirar",
|
||||
"invitedYouTo": "{inviter} convidou você para {guild}"
|
||||
}
|
||||
},
|
||||
"bypassStatus": {
|
||||
"description": "Still get notifications from specific sources when in do not disturb mode. Right-click on users/channels/guilds to set them to bypass do not disturb mode.",
|
||||
"description": "Ainda receba notificações de lugares específicos quando estiver no modo não perturbe. Clique com o botão direito em usuários/canais/servidores para defini-los para ignorar o modo não perturbe.",
|
||||
"settings": {
|
||||
"guilds": "Guilds to let bypass (notified when pinged anywhere in guild)",
|
||||
"channels": "Channels to let bypass (notified when pinged in that channel)",
|
||||
"users": "Users to let bypass (notified for all messages sent in DMs)",
|
||||
"allowOutsideOfDms": "Allow selected users to bypass status outside of DMs too (acts like a channel/guild bypass, but it's for all messages sent by the selected users)",
|
||||
"notificationSound": "Whether the notification sound should be played",
|
||||
"respectSilentPings": "Respect silent pings (@silent / suppress notifications)",
|
||||
"statusToUse": "Status to use for whitelist"
|
||||
"guilds": "Servidores para permitir ignorar (notificado quando mencionado em qualquer lugar no servidor)",
|
||||
"channels": "Canais para permitir ignorar (notificado quando mencionado naquele canal)",
|
||||
"users": "Usuários para permitir ignorar (notificado para todas as mensagens enviadas em DMs)",
|
||||
"allowOutsideOfDms": "Permitir que usuários selecionados ignorem o status fora de DMs também (age como uma exceção de canal/servidor, mas é para todas as mensagens enviadas pelos usuários selecionados)",
|
||||
"notificationSound": "Se o som de notificação deve ser reproduzido",
|
||||
"respectSilentPings": "Respeita pings silenciosos (@silent / suprimir notificações)",
|
||||
"statusToUse": "Status para usar para lista de permissões"
|
||||
},
|
||||
"statusOptions": {
|
||||
"online": "Online",
|
||||
"idle": "Idle",
|
||||
"dnd": "Do Not Disturb",
|
||||
"invisible": "Invisible"
|
||||
"idle": "Ausente",
|
||||
"dnd": "Não perturbe",
|
||||
"invisible": "Invisível"
|
||||
},
|
||||
"contextMenu": {
|
||||
"addStatusBypass": "Add Status Bypass",
|
||||
"removeStatusBypass": "Remove Status Bypass"
|
||||
"addStatusBypass": "Adicionar Exceção de Status",
|
||||
"removeStatusBypass": "Remover Exceção de Status"
|
||||
},
|
||||
"placeholder": {
|
||||
"separateWithCommas": "Separate with commas"
|
||||
"separateWithCommas": "Separe com vírgulas"
|
||||
}
|
||||
},
|
||||
"alwaysExpandProfiles": {
|
||||
"description": "Always expands profile popouts to the full modal"
|
||||
"description": "Sempre expande os popouts de perfil para o modal completo"
|
||||
},
|
||||
"anammox": {
|
||||
"description": "Hides various features related to nitro and the store",
|
||||
"description": "Oculta vários recursos relacionados com o nitro e a loja",
|
||||
"settings": {
|
||||
"dms": "Remove shops above DMs list",
|
||||
"quests": "Remove quests above DMs list",
|
||||
"serverBoost": "Remove server boost info above channel list",
|
||||
"billing": "Remove billing settings",
|
||||
"gift": "Remove gift button",
|
||||
"emojiList": "Remove unavailable categories from the emoji picker"
|
||||
"dms": "Remover lojas acima da lista de DMs",
|
||||
"quests": "Remover lojas acima da lista de DMs",
|
||||
"serverBoost": "Remover informação de boost do servidor acima da lista de canais",
|
||||
"billing": "Remover configurações de cobrança",
|
||||
"gift": "Remover botão de presente",
|
||||
"emojiList": "Remover categorias indisponíveis do seletor de emoji"
|
||||
}
|
||||
},
|
||||
"animalese": {
|
||||
"description": "Plays animal crossing animalese for every message sent (they yap a lot)",
|
||||
"description": "Reproduz animalese de animal crossing para cada mensagem enviada (eles são muito tagarela)",
|
||||
"settings": {
|
||||
"volume": "Volume of the animalese sound",
|
||||
"speed": "Speed of the animalese sound",
|
||||
"pitch": "Pitch multiplier",
|
||||
"messageLengthLimit": "Maximum length of message to process",
|
||||
"processOwnMessages": "Enable to yap your own messages too",
|
||||
"soundQuality": "Quality of sound to use"
|
||||
"volume": "Volume do som de animalese",
|
||||
"speed": "Velocidade do som de animalese",
|
||||
"pitch": "Multiplicador de Tom",
|
||||
"messageLengthLimit": "Tamanho máximo de mensagens para processar",
|
||||
"processOwnMessages": "Ativar para tagarelar suas próprias mensagens também",
|
||||
"soundQuality": "Qualidade do som para ser usado"
|
||||
},
|
||||
"quality": {
|
||||
"high": "High",
|
||||
"medium": "Medium",
|
||||
"low": "Low",
|
||||
"lowest": "Lowest"
|
||||
"high": "Alto",
|
||||
"medium": "Médio",
|
||||
"low": "Baixa",
|
||||
"lowest": "Mais Baixa"
|
||||
}
|
||||
},
|
||||
"atSomeone": {
|
||||
"description": "Mention someone randomly",
|
||||
"description": "Mencione alguém aleatoriamente",
|
||||
"contextMenu": {
|
||||
"someone": "Mention someone randomly"
|
||||
"someone": "Mencione alguém aleatoriamente"
|
||||
}
|
||||
},
|
||||
"autoZipper": {
|
||||
"description": "Automatically zips specified file types and folders before uploading to Discord",
|
||||
"description": "Compacta automaticamente pastas e tipos de arquivos especificados antes de fazer o upload para o Discord",
|
||||
"settings": {
|
||||
"extensions": "Comma-separated list of file extensions to auto-zip (e.g., .psd,.blend,.exe,.dmg)"
|
||||
"extensions": "Aqui está a tradução fiel, respeitando a capitalização original:\n\nLista de extensões de arquivos separadas por vírgulas para compactar automaticamente (ex: .psd, .blend, .exe, .dmg)"
|
||||
}
|
||||
},
|
||||
"betterCommands": {
|
||||
"description": "Enhances the command system with miscellaneous improvements.",
|
||||
"description": "Melhora o sistema de comandos com diversas melhorias.",
|
||||
"settings": {
|
||||
"autoFillArguments": "Automatically fill command with all arguements instead of just required ones",
|
||||
"allowNewlinesInCommands": "Allow newlines in command inputs (CTRL + Shift + Enter)"
|
||||
"autoFillArguments": "Preencher automaticamente o comando com todos os argumentos em vez de apenas os necessários",
|
||||
"allowNewlinesInCommands": "Permitir novas linhas em entradas de comando (CTRL + Shift + Enter)"
|
||||
},
|
||||
"commands": {
|
||||
"refresh": {
|
||||
"description": "Refreshes Discord application commands locally",
|
||||
"userOption": "specific user to try and refresh",
|
||||
"refreshing": "Refreshing application commands...",
|
||||
"success": "Commands refreshed successfully!",
|
||||
"failed": "Failed to refresh commands. Check the console for details."
|
||||
"description": "Atualiza os comandos do aplicativo Discord localmente",
|
||||
"userOption": "usuário específico para tentar atualizar",
|
||||
"refreshing": "Atualizando comandos do aplicativo...",
|
||||
"success": "Comandos atualizados com sucesso!",
|
||||
"failed": "Falha ao atualizar comandos. Verifique o console para detalhes."
|
||||
}
|
||||
}
|
||||
},
|
||||
"betterPlusReacts": {
|
||||
"description": "The amount of plus before :emoji: is the message to add it to"
|
||||
"description": "A quantidade de mais antes de :emoji: é a mensagem para adicioná-lo"
|
||||
},
|
||||
"betterUserArea": {
|
||||
"description": "Customize and make the user area more clean.",
|
||||
"description": "Personalize e faça a área do usuário mais limpa.",
|
||||
"settings": {
|
||||
"removeNameplate": "Remove nameplate styling.",
|
||||
"removeAudioMenus": "Remove menus next to mute and deafen buttons.",
|
||||
"alwaysShowUsername": "Always show username instead of status.",
|
||||
"removeButtonTooltips": "Remove button tooltips.",
|
||||
"removeAvatarDecoration": "Remove avatar decoration.",
|
||||
"removeUsernameStyles": "Remove username colors and effects."
|
||||
"removeNameplate": "Remover estilo da placa de identificação.",
|
||||
"removeAudioMenus": "Remova menus ao lado dos botões de mutar e silenciar áudio.",
|
||||
"alwaysShowUsername": "Sempre mostrar nome de usuário em vez de status.",
|
||||
"removeButtonTooltips": "Remover dicas de ferramentas dos botões.",
|
||||
"removeAvatarDecoration": "Remover decoração de avatar.",
|
||||
"removeUsernameStyles": "Remover cores e efeitos de nome de usuário."
|
||||
}
|
||||
},
|
||||
"blockKeywords": {
|
||||
"description": "Blocks messages containing specific user-defined keywords, as if the user sending them was blocked.",
|
||||
"description": "Bloqueia mensagens contendo palavras-chave específicas definidas pelo usuário, como se o usuário que as enviou estivesse bloqueado.",
|
||||
"settings": {
|
||||
"blockedWords": "Comma-seperated list of words to block",
|
||||
"useRegex": "Use each value as a regular expression when checking message content (advanced)",
|
||||
"caseSensitive": "Whether to use a case sensitive search or not",
|
||||
"ignoreBlockedMessages": "Completely ignores (recent) new messages bar"
|
||||
"blockedWords": "Lista de palavras separadas por vírgulas para bloquear",
|
||||
"useRegex": "Usar cada valor como uma expressão regular ao verificar o conteúdo da mensagem (avançado)",
|
||||
"caseSensitive": "Se deve usar uma pesquisa sensível a maiúsculas e minúsculas ou não",
|
||||
"ignoreBlockedMessages": "Ignora completamente a barra de novas mensagens (recentes)"
|
||||
}
|
||||
},
|
||||
"blockKrisp": {
|
||||
"description": "Prevent Krisp from loading"
|
||||
"description": "Impede que Krisp carregue"
|
||||
},
|
||||
"bypassPinPrompt": {
|
||||
"description": "Bypass the pin prompt when using the pin functions"
|
||||
"description": "Ignorar a confirmação de fixação ao usar as funções de fixar"
|
||||
},
|
||||
"channelBadges": {
|
||||
"description": "Adds badges to channels based on their type",
|
||||
"description": "Adiciona emblemas a canais baseados no seu tipo",
|
||||
"settings": {
|
||||
"oneBadgePerChannel": "Show only one badge per channel",
|
||||
"showTextBadge": "Show Text badge",
|
||||
"showVoiceBadge": "Show Voice badge",
|
||||
"showCategoryBadge": "Show Category badge",
|
||||
"showDirectoryBadge": "Show Directory badge",
|
||||
"showAnnouncementThreadBadge": "Show Announcement Thread badge",
|
||||
"showPublicThreadBadge": "Show Public Thread badge",
|
||||
"showPrivateThreadBadge": "Show Private Thread badge",
|
||||
"showStageBadge": "Show Stage badge",
|
||||
"showAnnouncementBadge": "Show Announcement badge",
|
||||
"showForumBadge": "Show Forum badge",
|
||||
"showMediaBadge": "Show Media badge",
|
||||
"showNSFWBadge": "Show NSFW badge",
|
||||
"showLockedBadge": "Show Locked badge",
|
||||
"showRulesBadge": "Show Rules badge",
|
||||
"showUnknownBadge": "Show Unknown badge",
|
||||
"textBadgeLabel": "Text badge label",
|
||||
"voiceBadgeLabel": "Voice badge label",
|
||||
"categoryBadgeLabel": "Category badge label",
|
||||
"announcementBadgeLabel": "Announcement badge label",
|
||||
"announcementThreadBadgeLabel": "Announcement Thread badge label",
|
||||
"publicThreadBadgeLabel": "Public Thread badge label",
|
||||
"privateThreadBadgeLabel": "Private Thread badge label",
|
||||
"stageBadgeLabel": "Stage badge label",
|
||||
"directoryBadgeLabel": "Directory badge label",
|
||||
"forumBadgeLabel": "Forum badge label",
|
||||
"mediaBadgeLabel": "Media badge label",
|
||||
"nsfwBadgeLabel": "NSFW badge label",
|
||||
"lockedBadgeLabel": "Locked badge label",
|
||||
"rulesBadgeLabel": "Rules badge label",
|
||||
"unknownBadgeLabel": "Unknown badge label",
|
||||
"textBadgeColor": "Text badge color",
|
||||
"voiceBadgeColor": "Voice badge color",
|
||||
"categoryBadgeColor": "Category badge color",
|
||||
"announcementBadgeColor": "Announcement badge color",
|
||||
"announcementThreadBadgeColor": "Announcement Thread badge color",
|
||||
"publicThreadBadgeColor": "Public Thread badge color",
|
||||
"privateThreadBadgeColor": "Private Thread badge color",
|
||||
"stageBadgeColor": "Stage badge color",
|
||||
"directoryBadgeColor": "Directory badge color",
|
||||
"forumBadgeColor": "Forum badge color",
|
||||
"mediaBadgeColor": "Media badge color",
|
||||
"nsfwBadgeColor": "NSFW badge color",
|
||||
"lockedBadgeColor": "Locked badge color",
|
||||
"rulesBadgeColor": "Rules badge color",
|
||||
"unknownBadgeColor": "Unknown badge color"
|
||||
"oneBadgePerChannel": "Mostrar apenas um emblema por canal",
|
||||
"showTextBadge": "Mostrar emblema de Texto",
|
||||
"showVoiceBadge": "Mostrar emblema de Voz",
|
||||
"showCategoryBadge": "Mostrar emblema de Categoria",
|
||||
"showDirectoryBadge": "Mostrar emblema de Diretório",
|
||||
"showAnnouncementThreadBadge": "Mostrar emblema de Tópico de Anúncio",
|
||||
"showPublicThreadBadge": "Mostrar emblema de Tópico Público",
|
||||
"showPrivateThreadBadge": "Mostrar emblema de Tópico Privado",
|
||||
"showStageBadge": "Mostrar emblema de Palco",
|
||||
"showAnnouncementBadge": "Mostrar emblema de Anúncio",
|
||||
"showForumBadge": "Mostrar emblema de Fórum",
|
||||
"showMediaBadge": "Mostrar emblema de Mídia",
|
||||
"showNSFWBadge": "Mostrar emblema de NSFW",
|
||||
"showLockedBadge": "Mostrar emblema de Bloqueado",
|
||||
"showRulesBadge": "Mostrar emblema de Regras",
|
||||
"showUnknownBadge": "Mostrar emblema de Desconhecido",
|
||||
"textBadgeLabel": "Rótulo do emblema de Texto",
|
||||
"voiceBadgeLabel": "Rótulo do emblema de Voz",
|
||||
"categoryBadgeLabel": "Rótulo do emblema de Categoria",
|
||||
"announcementBadgeLabel": "Rótulo do emblema de Anúncio",
|
||||
"announcementThreadBadgeLabel": "Rótulo do emblema de Tópico de Anúncio",
|
||||
"publicThreadBadgeLabel": "Rótulo do emblema de Tópico público",
|
||||
"privateThreadBadgeLabel": "Rótulo do emblema de Tópico privado",
|
||||
"stageBadgeLabel": "Rótulo do emblema de Palco",
|
||||
"directoryBadgeLabel": "Rótulo do emblema de Diretório",
|
||||
"forumBadgeLabel": "Rótulo do emblema de Fórum",
|
||||
"mediaBadgeLabel": "Rótulo do emblema de Mídia",
|
||||
"nsfwBadgeLabel": "Rótulo do emblema de NSFW",
|
||||
"lockedBadgeLabel": "Rótulo do emblema de Bloqueado",
|
||||
"rulesBadgeLabel": "Rótulo do emblema de Regras",
|
||||
"unknownBadgeLabel": "Rótulo do emblema de Desconhecido",
|
||||
"textBadgeColor": "Cor do emblema de Texto",
|
||||
"voiceBadgeColor": "Cor do emblema de Voz",
|
||||
"categoryBadgeColor": "Cor do emblema de Categoria",
|
||||
"announcementBadgeColor": "Cor do emblema de Anúncio",
|
||||
"announcementThreadBadgeColor": "Cor do emblema de Tópico de Anúncio",
|
||||
"publicThreadBadgeColor": "Cor do emblema de Tópico Público",
|
||||
"privateThreadBadgeColor": "Cor do emblema de Tópico Privado",
|
||||
"stageBadgeColor": "Cor do emblema de Palco",
|
||||
"directoryBadgeColor": "Cor do emblema de Diretório",
|
||||
"forumBadgeColor": "Cor do emblema de Fórum",
|
||||
"mediaBadgeColor": "Cor do emblema de Mídia",
|
||||
"nsfwBadgeColor": "Cor do emblema de NSFW",
|
||||
"lockedBadgeColor": "Cor do emblema de Bloqueado",
|
||||
"rulesBadgeColor": "Cor do emblema de Regras",
|
||||
"unknownBadgeColor": "Cor do emblema de Desconhecido"
|
||||
},
|
||||
"tooltips": {
|
||||
"lockedChannel": "This channel is locked.",
|
||||
"nsfwChannel": "This channel is marked as NSFW.",
|
||||
"rulesChannel": "This channel is the server rules channel."
|
||||
"lockedChannel": "Este canal está bloqueado.",
|
||||
"nsfwChannel": "Este canal está marcado como NSFW.",
|
||||
"rulesChannel": "Este canal é o canal de regras do servidor."
|
||||
}
|
||||
},
|
||||
"channelTabs": {
|
||||
"description": "Group your commonly visited channels in tabs, like a browser",
|
||||
"description": "Agrupe os canais que você visita com frequência em guias, como em um navegador",
|
||||
"contextMenu": {
|
||||
"openInNewTab": "Open in New Tab"
|
||||
"openInNewTab": "Abrir em Nova Aba"
|
||||
}
|
||||
},
|
||||
"characterCounter": {
|
||||
"description": "Adds a character counter to the chat input",
|
||||
"description": "Adiciona um contador de caracteres na entrada de chat",
|
||||
"settings": {
|
||||
"colorEffects": "Turn on or off color effects for getting close to the character limit"
|
||||
"colorEffects": "Ativar ou desativar efeitos de cor para ficar perto do limite de caracteres"
|
||||
}
|
||||
},
|
||||
"cleanChannelName": {
|
||||
"description": "remove all emoji and decor shit from channel names"
|
||||
"description": "remove todos os emojis e decorações irrelevantes dos nomes dos canais"
|
||||
},
|
||||
"cleanerChannelGroups": {
|
||||
"description": "Hides all channels in collapsed categories, even if they have unread messages."
|
||||
"description": "Oculta todos os canais em categorias colapsadas, mesmo se tiverem mensagens não lidas."
|
||||
},
|
||||
"clientSideBlock": {
|
||||
"description": "Allows you to locally hide almost all content from any user",
|
||||
"description": "Permite que você oculte localmente quase todo o conteúdo de qualquer usuário",
|
||||
"settings": {
|
||||
"hideVc": "Hide voice channels containing blocked users.",
|
||||
"usersToBlock": "User IDs seperated by a comma and a space",
|
||||
"hideBlockedUsers": "Should blocked users should also be hidden everywhere",
|
||||
"hideBlockedMessages": "Should messages from blocked users should be hidden fully (same as the old noblockedmessages plugin)",
|
||||
"hideEmptyRoles": "Should role headers be hidden if all of their members are blocked",
|
||||
"blockedReplyDisplay": "What should display instead of the message when someone replies to someone you have hidden",
|
||||
"hideVc": "Ocultar canais de voz contendo usuários bloqueados.",
|
||||
"usersToBlock": "IDs de usuários separados por uma vírgula e um espaço",
|
||||
"hideBlockedUsers": "Usuários bloqueados também devem estar ocultos em todos os lugares",
|
||||
"hideBlockedMessages": "Se as mensagens de usuários bloqueados devem ser totalmente ocultadas (igual ao antigo plugin noblockedmessages)",
|
||||
"hideEmptyRoles": "Se os cabeçalhos de cargos devem ser ocultados se todos os seus membros estiverem bloqueados",
|
||||
"blockedReplyDisplay": "O que deve ser exibido em vez da mensagem quando alguém responde a alguém que você ocultou",
|
||||
"blockedReplyDisplayOptions": {
|
||||
"displayText": "Display text saying a hidden message was replied to",
|
||||
"hideReply": "Literally nothing"
|
||||
"displayText": "Exibir texto informando que uma mensagem oculta foi respondida",
|
||||
"hideReply": "Literalmente nada"
|
||||
},
|
||||
"guildBlackList": "Guild ids to disable functionality in",
|
||||
"guildWhiteList": "Guild ids to enable functionality in"
|
||||
"guildBlackList": "Ids de servidores para desativar a funcionalidade em",
|
||||
"guildWhiteList": "Ids de servidores para ativar a funcionalidade em"
|
||||
},
|
||||
"reply": {
|
||||
"replyingToBlocked": "Replying to blocked message"
|
||||
"replyingToBlocked": "Respondendo a uma mensagem bloqueada"
|
||||
}
|
||||
},
|
||||
"clipsEnhancements": {
|
||||
"description": "Add more Clip FPS and duration options, custom clip length, RPC tagging and more",
|
||||
"description": "Adicionar mais opções de FPS e duração de Clipes, comprimento de clipe personalizado, marcação de RPC e mais",
|
||||
"settings": {
|
||||
"richPresenceTagging": "When should clips be tagged with the current Rich Presence?",
|
||||
"richPresenceTagging": "Quando os clipes devem ser marcados com a Rich Presence atual?",
|
||||
"richPresenceTaggingOptions": {
|
||||
"always": "Always",
|
||||
"whenMatched": "Only when beginning or end of activity name matches",
|
||||
"never": "Never"
|
||||
"always": "Sempre",
|
||||
"whenMatched": "Somente quando o início ou o fim do nome da atividade coincidir",
|
||||
"never": "Nunca"
|
||||
},
|
||||
"enableScreenshotKeybind": "Enable the screenshot keybind feature",
|
||||
"enableVoiceOnlyClips": "Enable voice-only clips (audio without video)",
|
||||
"enableAdvancedSignals": "Enable advanced clip signals (auto-clip triggers)",
|
||||
"ignorePlatformRestriction": "Allow Platform Restricted Clipping (may cause save errors)",
|
||||
"clipsLink": "Change FPS and duration options in Clips settings!"
|
||||
"enableScreenshotKeybind": "Ativar o recurso de teclas de atalho para captura de tela",
|
||||
"enableVoiceOnlyClips": "Ativar clipes apenas de voz (áudio sem vídeo)",
|
||||
"enableAdvancedSignals": "Ativar sinais de clipe avançados (gatilhos de auto-clipe)",
|
||||
"ignorePlatformRestriction": "Permitir Clipping Restrito por Plataforma (pode causar erros ao salvar)",
|
||||
"clipsLink": "Alterar as opções de FPS e duração nas configurações de Clipes!"
|
||||
}
|
||||
},
|
||||
"commandPalette": {
|
||||
"description": "Quickly run actions through a searchable command palette",
|
||||
"description": "Executar ações rapidamente através de uma paleta de comandos pesquisável",
|
||||
"settings": {
|
||||
"hotkey": "Hotkey used to open the command palette",
|
||||
"visualStyle": "Palette appearance",
|
||||
"hotkey": "Atalho usado para abrir a paleta de comandos",
|
||||
"visualStyle": "Aparência da paleta",
|
||||
"visualStyleOptions": {
|
||||
"classic": "Classic",
|
||||
"polished": "Polished"
|
||||
"classic": "Clássico",
|
||||
"polished": "Polido"
|
||||
},
|
||||
"showTags": "Display tag chips for commands",
|
||||
"enableTagFilter": "Show the tag filter bar",
|
||||
"customCommands": "Manage custom command palette entries"
|
||||
"showTags": "Exibir etiquetas de tags para comandos",
|
||||
"enableTagFilter": "Mostrar a barra de filtro de tags",
|
||||
"customCommands": "Gerenciar entradas personalizadas da paleta de comandos"
|
||||
},
|
||||
"ui": {
|
||||
"hotkeyTitle": "Command Palette Hotkey",
|
||||
"hotkeyDescription": "Hotkey used to open the command palette",
|
||||
"pressAnyKey": "Press any key...",
|
||||
"reset": "Reset"
|
||||
"hotkeyTitle": "Atalho da Paleta de Comandos",
|
||||
"hotkeyDescription": "Atalho usado para abrir a paleta de comandos",
|
||||
"pressAnyKey": "Pressione qualquer tecla...",
|
||||
"reset": "Redefinir"
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"description": "Utility plugin for developers to test and preview Discord components"
|
||||
"description": "Plugin utilitário para desenvolvedores testarem e visualizarem componentes do Discord"
|
||||
},
|
||||
"contentWarning": {
|
||||
"description": "Allows you to specify certain trigger words that will be blurred by default. Hovering/Clicking on the blurred content will reveal it.",
|
||||
"description": "Permite especificar certas palavras de gatilho que serão desfocadas por padrão. Passar o Mouse/Clicar no conteúdo desfocado irá revelá-lo.",
|
||||
"settings": {
|
||||
"onClick": "Only show trigger content on click instead of hover"
|
||||
"onClick": "Mostrar conteúdo do gatilho apenas ao clicar em vez de ao passar o rato"
|
||||
},
|
||||
"ui": {
|
||||
"flaggedWords": "Flagged Words",
|
||||
"flaggedWords": "Palavras sinalizadas",
|
||||
"placeholder": "Word"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -207,76 +207,76 @@
|
|||
},
|
||||
"reviewDB": {
|
||||
"settings": {
|
||||
"authorize": "Authorize with ReviewDB",
|
||||
"authorize": "Autorizar com ReviewDB",
|
||||
"notifyReviews": {
|
||||
"description": "Notify about new reviews on startup"
|
||||
"description": "Notificar sobre novas avaliações na inicialização"
|
||||
},
|
||||
"showWarning": {
|
||||
"description": "Display warning to be respectful at the top of the reviews list"
|
||||
"description": "Exibir aviso para ser respeitoso no topo da lista de avaliações"
|
||||
},
|
||||
"hideTimestamps": {
|
||||
"description": "Hide timestamps on reviews"
|
||||
"description": "Esconder data e hora em avaliações"
|
||||
},
|
||||
"hideBlockedUsers": {
|
||||
"description": "Hide reviews from blocked users"
|
||||
"description": "Esconder avaliações de usuários bloqueados"
|
||||
},
|
||||
"manageBlockedUsers": "Manage Blocked Users",
|
||||
"supportDevelopment": "Support ReviewDB development",
|
||||
"manageBlockedUsers": "Gerenciar Usuários Bloqueados",
|
||||
"supportDevelopment": "Suporte ao desenvolvimento do ReviewDB",
|
||||
"website": "ReviewDB website",
|
||||
"supportServer": "ReviewDB Support Server"
|
||||
"supportServer": "ReviewDB Servidor de Suporte"
|
||||
},
|
||||
"viewReviews": "View Reviews",
|
||||
"newReviews": "You have new reviews on your profile!",
|
||||
"viewReviews": "Ver Avaliações",
|
||||
"newReviews": "Você tem novas avaliações no seu perfil!",
|
||||
"appeal": "Appeal",
|
||||
"ok": "Ok",
|
||||
"areYouSure": "Are you sure?",
|
||||
"confirmDelete": "Do you really want to delete this review?",
|
||||
"delete": "Delete",
|
||||
"nevermind": "Nevermind",
|
||||
"mustBeLoggedInDelete": "You must be logged in to delete reviews.",
|
||||
"confirmReport": "Do you really want to report this review?",
|
||||
"report": "Report",
|
||||
"mustBeLoggedInReport": "You must be logged in to report reviews.",
|
||||
"confirmBlock": "Do you really want to block this user? They will be unable to leave further reviews on your profile. You can unblock users in the plugin settings.",
|
||||
"block": "Block",
|
||||
"mustBeLoggedInBlock": "You must be logged in to block users.",
|
||||
"system": "System",
|
||||
"blockedUser": "You have blocked this user",
|
||||
"readMore": "Read more",
|
||||
"unblockUser": "Unblock user",
|
||||
"areYouSure": "Você tem certeza?",
|
||||
"confirmDelete": "Você realmente deseja deletar esta avaliação?",
|
||||
"delete": "Deletar",
|
||||
"nevermind": "Deixa pra lá",
|
||||
"mustBeLoggedInDelete": "Você tem que estar logado para deletar avaliações.",
|
||||
"confirmReport": "Você realmente deseja reportar está avaliação?",
|
||||
"report": "Reportar",
|
||||
"mustBeLoggedInReport": "Você tem que estar logado para reportar avaliações.",
|
||||
"confirmBlock": "Você realmente quer bloquear esse usuário? Eles não poderão deixar mais avaliações no seu perfil. Você pode desbloquear usuários nas configurações do plugin.",
|
||||
"block": "Bloquear",
|
||||
"mustBeLoggedInBlock": "Você tem que estar logado para bloquear usuários.",
|
||||
"system": "Sistema",
|
||||
"blockedUser": "Você bloqueou este usuário",
|
||||
"readMore": "Ler mais",
|
||||
"unblockUser": "Desbloquear usuário",
|
||||
"failedToFetchBlocks": "Failed to fetch blocks: {error}",
|
||||
"noBlockedUsers": "No blocked users.",
|
||||
"blockedUsers": "Blocked Users",
|
||||
"notLoggedIn": "You are not logged into ReviewDB!"
|
||||
"noBlockedUsers": "Sem usuários bloqueados.",
|
||||
"blockedUsers": "Usuários Bloqueados",
|
||||
"notLoggedIn": "Você não esta logado no ReviewDB!"
|
||||
},
|
||||
"translate": {
|
||||
"autoTranslateEnabled": {
|
||||
"title": "Equicord Auto-Translate Enabled",
|
||||
"title": "Equicord Tradução Automática Ativada",
|
||||
"body": "You just enabled Auto Translate! Any message <0>will automatically be translated</0> before being sent."
|
||||
},
|
||||
"disableAutoTranslate": "Disable Auto-Translate",
|
||||
"gotIt": "Got it",
|
||||
"dontShowAgain": "Don't show again",
|
||||
"disableAutoTranslate": "Desativar Tradução Automática",
|
||||
"gotIt": "Entendi",
|
||||
"dontShowAgain": "Não mostrar novamente",
|
||||
"openTranslateModal": "Open Translate Modal",
|
||||
"autoTranslateEnabledLabel": "Auto Translate Enabled",
|
||||
"translate": "Translate",
|
||||
"selectLanguage": "Select a language",
|
||||
"autoTranslateEnabledLabel": "Tradução Automática Ativada",
|
||||
"translate": "Traduzir",
|
||||
"selectLanguage": "Selecionar um idioma",
|
||||
"autoTranslate": "Auto Translate",
|
||||
"modalTitle": "Translate"
|
||||
},
|
||||
"voiceMessages": {
|
||||
"send": "Send Voice Message",
|
||||
"missingPermissions": "(Missing Permissions)",
|
||||
"recordModal": "Record Voice Message",
|
||||
"uploadFile": "Upload File",
|
||||
"send": "Enviar Mensagem de Voz",
|
||||
"missingPermissions": "(Permissões Ausentes)",
|
||||
"recordModal": "Gravar Mensagem de Voz",
|
||||
"uploadFile": "Enviar Arquivo",
|
||||
"preview": "Preview",
|
||||
"failedToParse": "Failed to parse selected audio file: {error}",
|
||||
"iosWarning": "Voice Messages have to be OggOpus to be playable on iOS. This file is <0>{type}</0> so it will not be playable on iOS.",
|
||||
"iosFix": "To fix it, first convert it to OggOpus, for example using the <0>convertio web converter</0>",
|
||||
"sending": "Now sending voice message... Please be patient",
|
||||
"failedToUpload": "Failed to upload voice message",
|
||||
"noiseSuppression": "Noise Suppression",
|
||||
"echoCancellation": "Echo Cancellation"
|
||||
"sending": "Enviando mensagem de voz... Por favor seja paciente",
|
||||
"failedToUpload": "Falha ao enviar mensagem de voz",
|
||||
"noiseSuppression": "Supressão de ruído",
|
||||
"echoCancellation": "Cancelamento de Eco"
|
||||
},
|
||||
"showHiddenChannels": {
|
||||
"hiddenChannel": "This is a hidden {type} channel",
|
||||
|
|
@ -333,9 +333,9 @@
|
|||
"removeMessageTemporary": "Remove Message (Temporary)",
|
||||
"clearMessageLog": "Clear Message Log",
|
||||
"settings": {
|
||||
"deleteStyle": "The style of deleted messages",
|
||||
"deleteStyleRedText": "Red text",
|
||||
"deleteStyleRedOverlay": "Red overlay",
|
||||
"deleteStyle": "O estilo das mensagens excluídas",
|
||||
"deleteStyleRedText": "Texto vermelho",
|
||||
"deleteStyleRedOverlay": "Overlay vermelho",
|
||||
"logDeletes": "Whether to log deleted messages",
|
||||
"collapseDeleted": "Whether to collapse deleted messages, similar to blocked messages",
|
||||
"logEdits": "Whether to log edited messages",
|
||||
|
|
@ -416,13 +416,13 @@
|
|||
"enterValue": "Enter a value",
|
||||
"selectOption": "Select an option"
|
||||
},
|
||||
"activityType": "Activity Type",
|
||||
"activityType": "Tipo de atividade",
|
||||
"activityTypes": {
|
||||
"playing": "Playing",
|
||||
"playing": "Jogando",
|
||||
"streaming": "Streaming",
|
||||
"listening": "Listening",
|
||||
"watching": "Watching",
|
||||
"competing": "Competing"
|
||||
"listening": "Ouvindo",
|
||||
"watching": "Assistindo",
|
||||
"competing": "Competindo"
|
||||
},
|
||||
"appId": "Application ID",
|
||||
"appName": "Application Name",
|
||||
|
|
|
|||
|
|
@ -207,65 +207,65 @@
|
|||
},
|
||||
"reviewDB": {
|
||||
"settings": {
|
||||
"authorize": "Authorize with ReviewDB",
|
||||
"authorize": "Авторизуватися в ReviewDB",
|
||||
"notifyReviews": {
|
||||
"description": "Notify about new reviews on startup"
|
||||
"description": "Повідомляти про нові відгуки при запуску"
|
||||
},
|
||||
"showWarning": {
|
||||
"description": "Display warning to be respectful at the top of the reviews list"
|
||||
"description": "Показувати заклик до взаємоповаги вгорі списку відгуків"
|
||||
},
|
||||
"hideTimestamps": {
|
||||
"description": "Hide timestamps on reviews"
|
||||
"description": "Приховати відмітки часу на відгуках"
|
||||
},
|
||||
"hideBlockedUsers": {
|
||||
"description": "Hide reviews from blocked users"
|
||||
"description": "Приховати відгуки від заблокованих користувачів"
|
||||
},
|
||||
"manageBlockedUsers": "Manage Blocked Users",
|
||||
"supportDevelopment": "Support ReviewDB development",
|
||||
"website": "ReviewDB website",
|
||||
"supportServer": "ReviewDB Support Server"
|
||||
"manageBlockedUsers": "Керування заблокованими користувачами",
|
||||
"supportDevelopment": "Підтримати розробку ReviewDB",
|
||||
"website": "Сайт ReviewDB",
|
||||
"supportServer": "Сервер підтримки ReviewDB"
|
||||
},
|
||||
"viewReviews": "View Reviews",
|
||||
"newReviews": "You have new reviews on your profile!",
|
||||
"appeal": "Appeal",
|
||||
"ok": "Ok",
|
||||
"areYouSure": "Are you sure?",
|
||||
"confirmDelete": "Do you really want to delete this review?",
|
||||
"delete": "Delete",
|
||||
"nevermind": "Nevermind",
|
||||
"mustBeLoggedInDelete": "You must be logged in to delete reviews.",
|
||||
"confirmReport": "Do you really want to report this review?",
|
||||
"report": "Report",
|
||||
"mustBeLoggedInReport": "You must be logged in to report reviews.",
|
||||
"confirmBlock": "Do you really want to block this user? They will be unable to leave further reviews on your profile. You can unblock users in the plugin settings.",
|
||||
"block": "Block",
|
||||
"mustBeLoggedInBlock": "You must be logged in to block users.",
|
||||
"system": "System",
|
||||
"blockedUser": "You have blocked this user",
|
||||
"readMore": "Read more",
|
||||
"unblockUser": "Unblock user",
|
||||
"failedToFetchBlocks": "Failed to fetch blocks: {error}",
|
||||
"noBlockedUsers": "No blocked users.",
|
||||
"blockedUsers": "Blocked Users",
|
||||
"notLoggedIn": "You are not logged into ReviewDB!"
|
||||
"viewReviews": "Переглянути Відгуки",
|
||||
"newReviews": "На вашому профілі з'явилися нові відгуки!",
|
||||
"appeal": "Апеляція",
|
||||
"ok": "Ок",
|
||||
"areYouSure": "Ви впевнені?",
|
||||
"confirmDelete": "Ви дійсно хочете видалити цей відгук?",
|
||||
"delete": "Видалити",
|
||||
"nevermind": "Скасувати",
|
||||
"mustBeLoggedInDelete": "Для видалення відгуків вам потрібно авторизуватись.",
|
||||
"confirmReport": "Ви справді хочете поскаржитися на цей відгук?",
|
||||
"report": "Поскаржитися",
|
||||
"mustBeLoggedInReport": "Для подання скарги на відгуки необхідно авторизуватися.",
|
||||
"confirmBlock": "Ви дійсно хочете заблокувати цього користувача? Вони не зможуть залишати подальші відгуки на ваш профіль. Ви можете розблокувати користувачів в налаштуваннях плагіну.",
|
||||
"block": "Заблокувати",
|
||||
"mustBeLoggedInBlock": "Для блокування користувачів на відгуки необхідно авторизуватися.",
|
||||
"system": "Системне",
|
||||
"blockedUser": "Ви заблокували цього користувача",
|
||||
"readMore": "Читати далі",
|
||||
"unblockUser": "Розблокувати користувача",
|
||||
"failedToFetchBlocks": "Не вдалося завантажити заблокованих користувачів: {error}",
|
||||
"noBlockedUsers": "Немає заблокованих користувачів.",
|
||||
"blockedUsers": "Заблоковані користувачі",
|
||||
"notLoggedIn": "Ви не авторизовані в ReviewDB!"
|
||||
},
|
||||
"translate": {
|
||||
"autoTranslateEnabled": {
|
||||
"title": "Equicord Auto-Translate Enabled",
|
||||
"body": "You just enabled Auto Translate! Any message <0>will automatically be translated</0> before being sent."
|
||||
"title": "Автопереклад Equicord Увімкнено",
|
||||
"body": "Ви щойно увімкнули Автопереклад! Ваші повідомлення <0>автоматично перекладатимуться</0> перед відправленням."
|
||||
},
|
||||
"disableAutoTranslate": "Disable Auto-Translate",
|
||||
"gotIt": "Got it",
|
||||
"dontShowAgain": "Don't show again",
|
||||
"openTranslateModal": "Open Translate Modal",
|
||||
"autoTranslateEnabledLabel": "Auto Translate Enabled",
|
||||
"translate": "Translate",
|
||||
"selectLanguage": "Select a language",
|
||||
"autoTranslate": "Auto Translate",
|
||||
"modalTitle": "Translate"
|
||||
"disableAutoTranslate": "Вимкнути Автопереклад",
|
||||
"gotIt": "Зрозуміло",
|
||||
"dontShowAgain": "Не показувати знову",
|
||||
"openTranslateModal": "Відкрити Вікно Перекладу",
|
||||
"autoTranslateEnabledLabel": "Автопереклад увімкнено",
|
||||
"translate": "Перекласти",
|
||||
"selectLanguage": "Обрати мову",
|
||||
"autoTranslate": "Автопереклад",
|
||||
"modalTitle": "Переклад"
|
||||
},
|
||||
"voiceMessages": {
|
||||
"send": "Send Voice Message",
|
||||
"send": "Надіслати голосове повідомлення",
|
||||
"missingPermissions": "(Missing Permissions)",
|
||||
"recordModal": "Record Voice Message",
|
||||
"uploadFile": "Upload File",
|
||||
|
|
|
|||
|
|
@ -18,10 +18,11 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "NoticesAPI",
|
||||
description: "Fixes notices being automatically dismissed",
|
||||
description: t("noticesAPI.description"),
|
||||
authors: [Devs.Ven],
|
||||
required: true,
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -18,11 +18,12 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ServerListAPI",
|
||||
authors: [Devs.kemo],
|
||||
description: "Api required for plugins that modify the server list",
|
||||
description: t("serverListAPI.description"),
|
||||
patches: [
|
||||
{
|
||||
find: "#{intl::DISCODO_DISABLED}",
|
||||
|
|
|
|||
|
|
@ -19,13 +19,14 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType, StartAt } from "@utils/types";
|
||||
import { WebpackRequire } from "@vencord/discord-types/webpack";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
disableAnalytics: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Disable Discord's tracking (analytics/'science')",
|
||||
description: t("noTrack.settings.disableAnalytics"),
|
||||
default: true,
|
||||
restartNeeded: true
|
||||
}
|
||||
|
|
@ -33,7 +34,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "NoTrack",
|
||||
description: "Disable Discord's tracking (analytics/'science'), metrics and Sentry crash reporting",
|
||||
description: t("noTrack.description"),
|
||||
authors: [Devs.Cyn, Devs.Ven, Devs.Nuckyz, Devs.Arrow],
|
||||
required: true,
|
||||
|
||||
|
|
|
|||
|
|
@ -18,39 +18,40 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
icons: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Always animate server icons, avatars, decor and more",
|
||||
description: t("alwaysAnimate.settings.icons"),
|
||||
default: true,
|
||||
},
|
||||
statusEmojis: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Always animate status emojis",
|
||||
description: t("alwaysAnimate.settings.statusEmojis"),
|
||||
default: true,
|
||||
},
|
||||
serverBanners: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Always animate server banners",
|
||||
description: t("alwaysAnimate.settings.serverBanners"),
|
||||
default: true,
|
||||
},
|
||||
nameplates: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Always animate nameplates",
|
||||
description: t("alwaysAnimate.settings.nameplates"),
|
||||
default: true,
|
||||
},
|
||||
roleGradients: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Always animate role gradients",
|
||||
description: t("alwaysAnimate.settings.roleGradients"),
|
||||
default: true,
|
||||
}
|
||||
});
|
||||
|
||||
export default definePlugin({
|
||||
name: "AlwaysAnimate",
|
||||
description: "Animates anything that can be animated",
|
||||
description: t("alwaysAnimate.description"),
|
||||
authors: [Devs.FieryFlames],
|
||||
settings,
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -18,13 +18,14 @@
|
|||
|
||||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
hideArrow: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false,
|
||||
description: "Hide Arrow",
|
||||
description: t("alwaysExpandRoles.settings.hideArrow"),
|
||||
restartNeeded: true
|
||||
},
|
||||
});
|
||||
|
|
@ -32,7 +33,7 @@ const settings = definePluginSettings({
|
|||
migratePluginSettings("AlwaysExpandRoles", "ShowAllRoles");
|
||||
export default definePlugin({
|
||||
name: "AlwaysExpandRoles",
|
||||
description: "Always expands the role list in profile popouts",
|
||||
description: t("alwaysExpandRoles.description"),
|
||||
authors: [Devs.surgedevs],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
|
|||
|
|
@ -36,31 +36,31 @@ const settings = definePluginSettings({
|
|||
domain: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
description: "Remove the untrusted domain popup when opening links",
|
||||
description: t("alwaysTrust.settings.domain"),
|
||||
restartNeeded: true
|
||||
},
|
||||
file: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
description: "Remove the 'Potentially Dangerous Download' popup when opening links",
|
||||
description: t("alwaysTrust.settings.file"),
|
||||
restartNeeded: true
|
||||
},
|
||||
noDeleteSafety: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
description: "Removes the enter server name requirement when deleting a server",
|
||||
description: t("alwaysTrust.settings.noDeleteSafety"),
|
||||
restartNeeded: true
|
||||
},
|
||||
confirmModal: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Should a \"are you sure you want to delete\" modal be shown?",
|
||||
description: t("alwaysTrust.settings.confirmModal"),
|
||||
default: true
|
||||
},
|
||||
});
|
||||
|
||||
export default definePlugin({
|
||||
name: "AlwaysTrust",
|
||||
description: "Removes the annoying untrusted domain and suspicious file popup",
|
||||
description: t("alwaysTrust.description"),
|
||||
authors: [Devs.zt, Devs.Trwy],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
@ -93,10 +93,10 @@ export default definePlugin({
|
|||
async HandleGuildDeleteModal(server) {
|
||||
if (settings.store.confirmModal) {
|
||||
return Alerts.show({
|
||||
title: "Delete server?",
|
||||
body: <p>It's permanent, if that wasn't obvious.</p>,
|
||||
title: t("alwaysTrust.ui.deleteServerTitle"),
|
||||
body: <p>{t("alwaysTrust.ui.deleteServerBody")}</p>,
|
||||
confirmColor: Button.Colors.RED,
|
||||
confirmText: "Delete",
|
||||
confirmText: t("alwaysTrust.ui.deleteServerConfirm"),
|
||||
onConfirm: () => GetPropsAndDeleteGuild(server.id),
|
||||
cancelText: t("vencord.cancel")
|
||||
});
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ let ws: WebSocket;
|
|||
migratePluginSettings("WebRichPresence", "WebRichPresence (arRPC)");
|
||||
export default definePlugin({
|
||||
name: "WebRichPresence",
|
||||
description: "Client plugin for arRPC to enable RPC on Discord Web (experimental)",
|
||||
description: t("arRPC.description"),
|
||||
authors: [Devs.Ducko],
|
||||
reporterTestable: ReporterTestable.None,
|
||||
hidden: !IS_EQUIBOP && !IS_VESKTOP && !("legcord" in window),
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { getUserSettingLazy } from "@api/UserSettings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
let savedStatus: string | null;
|
||||
|
|
@ -16,30 +17,30 @@ const StatusSettings = getUserSettingLazy<string>("status", "status")!;
|
|||
const settings = definePluginSettings({
|
||||
statusToSet: {
|
||||
type: OptionType.SELECT,
|
||||
description: "Status to set while playing a game",
|
||||
description: t("autoDndWhilePlaying.settings.statusToSet"),
|
||||
options: [
|
||||
{
|
||||
label: "Online",
|
||||
label: t("autoDndWhilePlaying.statusOptions.online"),
|
||||
value: "online",
|
||||
},
|
||||
{
|
||||
label: "Idle",
|
||||
label: t("autoDndWhilePlaying.statusOptions.idle"),
|
||||
value: "idle",
|
||||
},
|
||||
{
|
||||
label: "Do Not Disturb",
|
||||
label: t("autoDndWhilePlaying.statusOptions.dnd"),
|
||||
value: "dnd",
|
||||
default: true
|
||||
},
|
||||
{
|
||||
label: "Invisible",
|
||||
label: t("autoDndWhilePlaying.statusOptions.invisible"),
|
||||
value: "invisible",
|
||||
}
|
||||
]
|
||||
},
|
||||
excludeInvisible: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Prevent automatic status changes while your status is set to invisible",
|
||||
description: t("autoDndWhilePlaying.settings.excludeInvisible"),
|
||||
default: false
|
||||
},
|
||||
});
|
||||
|
|
@ -47,7 +48,7 @@ const settings = definePluginSettings({
|
|||
migratePluginSettings("AutoDNDWhilePlaying", "StatusWhilePlaying");
|
||||
export default definePlugin({
|
||||
name: "AutoDNDWhilePlaying",
|
||||
description: "Automatically updates your online status (online, idle, dnd) when launching games",
|
||||
description: t("autoDndWhilePlaying.description"),
|
||||
authors: [Devs.thororen],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "BetterGifAltText",
|
||||
authors: [Devs.Ven],
|
||||
description:
|
||||
"Change GIF alt text from simply being 'GIF' to containing the gif tags / filename",
|
||||
description: t("betterGifAltText.description"),
|
||||
patches: [
|
||||
{
|
||||
find: ".modalContext})};",
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
let closeSuppressCount = 0;
|
||||
const settings = definePluginSettings({
|
||||
keepOpen: {
|
||||
description: "Keeps the gif picker open after selecting a gif",
|
||||
description: t("betterGifPicker.settings.keepOpen"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false
|
||||
},
|
||||
|
|
@ -19,7 +20,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "BetterGifPicker",
|
||||
description: "Makes the gif picker open the favourite category by default",
|
||||
description: t("betterGifPicker.description"),
|
||||
authors: [Devs.Samwich, EquicordDevs.justjxke],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
|
|||
|
|
@ -19,18 +19,19 @@
|
|||
import { definePluginSettings, Settings } 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({
|
||||
hide: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Hide notes",
|
||||
description: t("betterNotesBox.settings.hide"),
|
||||
default: false,
|
||||
restartNeeded: true
|
||||
},
|
||||
noSpellCheck: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Disable spellcheck in notes",
|
||||
description: t("betterNotesBox.settings.noSpellCheck"),
|
||||
disabled: () => Settings.plugins.BetterNotesBox.hide,
|
||||
default: false
|
||||
}
|
||||
|
|
@ -38,7 +39,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "BetterNotesBox",
|
||||
description: "Hide notes or disable spellcheck (Configure in settings!!)",
|
||||
description: t("betterNotesBox.description"),
|
||||
authors: [Devs.Ven],
|
||||
settings,
|
||||
|
||||
|
|
|
|||
|
|
@ -19,18 +19,19 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { copyWithToast } from "@utils/discord";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
bothStyles: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Show both role dot and coloured names",
|
||||
description: t("betterRoleDot.settings.bothStyles"),
|
||||
restartNeeded: true,
|
||||
default: false,
|
||||
},
|
||||
copyRoleColorInProfilePopout: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Allow click on role dot in profile popout to copy role color",
|
||||
description: t("betterRoleDot.settings.copyRoleColorInProfilePopout"),
|
||||
restartNeeded: true,
|
||||
default: false
|
||||
},
|
||||
|
|
@ -39,7 +40,7 @@ const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "BetterRoleDot",
|
||||
authors: [Devs.Ven, Devs.AutumnVN],
|
||||
description: "Copy role colour on RoleDot (accessibility setting) click. Also allows using both RoleDot and coloured names simultaneously",
|
||||
description: t("betterRoleDot.description"),
|
||||
settings,
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -17,12 +17,13 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "BetterUploadButton",
|
||||
authors: [Devs.fawn, Devs.Ven],
|
||||
description: "Upload with a single click, open menu with right click",
|
||||
description: t("betterUploadButton.description"),
|
||||
patches: [
|
||||
{
|
||||
find: ".CHAT_INPUT_BUTTON_NOTIFICATION,",
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { managedStyleRootNode } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { createAndAppendStyle } from "@utils/css";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
let style: HTMLStyleElement;
|
||||
|
|
@ -29,20 +30,20 @@ function setCss() {
|
|||
const settings = definePluginSettings({
|
||||
blurAmount: {
|
||||
type: OptionType.NUMBER,
|
||||
description: "Blur Amount (in pixels)",
|
||||
description: t("blurNsfw.settings.blurAmount"),
|
||||
default: 10,
|
||||
onChange: setCss
|
||||
},
|
||||
blurAllChannels: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Blur attachments in all channels (not just NSFW)",
|
||||
description: t("blurNsfw.settings.blurAllChannels"),
|
||||
default: false
|
||||
},
|
||||
});
|
||||
|
||||
export default definePlugin({
|
||||
name: "BlurNSFW",
|
||||
description: "Blur attachments in NSFW channels until hovered",
|
||||
description: t("blurNsfw.description"),
|
||||
authors: [Devs.Ven],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import {
|
|||
MessageObject
|
||||
} from "@api/MessageEvents";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
const CLEAR_URLS_JSON_URL = "https://raw.githubusercontent.com/ClearURLs/Rules/master/data.min.json";
|
||||
|
|
@ -49,7 +50,7 @@ interface RuleSet {
|
|||
|
||||
export default definePlugin({
|
||||
name: "ClearURLs",
|
||||
description: "Automatically removes tracking elements from URLs you send",
|
||||
description: t("clearURLs.description"),
|
||||
authors: [Devs.adryd, Devs.thororen],
|
||||
|
||||
rules: [] as RuleSet[],
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import "./clientTheme.css";
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType, StartAt } from "@utils/types";
|
||||
|
||||
import { ResetThemeColorComponent, ThemeSettingsComponent } from "./components/Settings";
|
||||
|
|
@ -28,7 +29,7 @@ export const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "ClientTheme",
|
||||
authors: [Devs.Nuckyz],
|
||||
description: "Recreation of the old client theme experiment. Add a color to your Discord client theme",
|
||||
description: t("clientTheme.themeColorDescription"),
|
||||
settings,
|
||||
|
||||
startAt: StartAt.DOMContentLoaded,
|
||||
|
|
|
|||
|
|
@ -17,11 +17,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ColorSighted",
|
||||
description: "Removes the colorblind-friendly icons from statuses, just like 2015-2017 Discord",
|
||||
description: t("colorSighted.description"),
|
||||
authors: [Devs.lewisakura],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import { sleep } from "@utils/misc";
|
|||
import { ModalAPI } from "@utils/modal";
|
||||
import { relaunch } from "@utils/native";
|
||||
import { canonicalizeMatch, canonicalizeReplace, canonicalizeReplacement } from "@utils/patches";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { PluginNative, StartAt } from "@utils/types";
|
||||
import * as Webpack from "@webpack";
|
||||
import { extract, filters, findAll, findModuleId, search } from "@webpack";
|
||||
|
|
@ -243,7 +244,7 @@ const webpackModulesProbablyLoaded = Webpack.onceReady.then(() => sleep(1000));
|
|||
|
||||
export default definePlugin({
|
||||
name: "ConsoleShortcuts",
|
||||
description: "Adds shorter Aliases for many things on the window. Run `shortcutList` for a list.",
|
||||
description: t("consoleShortcuts.description"),
|
||||
authors: [Devs.Ven],
|
||||
startAt: StartAt.Init,
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import { Devs } from "@utils/constants";
|
|||
import { openInviteModal } from "@utils/discord";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { closeAllModals } from "@utils/modal";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { maybePromptToUpdate } from "@utils/updater";
|
||||
import { filters, findBulk, proxyLazyWebpack } from "@webpack";
|
||||
|
|
@ -44,12 +45,12 @@ const { ModalStack, DraftManager } = proxyLazyWebpack(() => {
|
|||
const settings = definePluginSettings({
|
||||
attemptToPreventCrashes: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Whether to attempt to prevent Discord crashes.",
|
||||
description: t("crashHandler.settings.attemptToPreventCrashes"),
|
||||
default: true
|
||||
},
|
||||
attemptToNavigateToHome: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Whether to attempt to navigate to the home when preventing Discord crashes.",
|
||||
description: t("crashHandler.settings.attemptToNavigateToHome"),
|
||||
default: false
|
||||
}
|
||||
});
|
||||
|
|
@ -60,7 +61,7 @@ let shouldAttemptRecover = true;
|
|||
|
||||
export default definePlugin({
|
||||
name: "CrashHandler",
|
||||
description: "Utility plugin for handling and possibly recovering from crashes without a restart",
|
||||
description: t("crashHandler.description"),
|
||||
authors: [Devs.Nuckyz],
|
||||
enabledByDefault: true,
|
||||
|
||||
|
|
@ -98,11 +99,11 @@ export default definePlugin({
|
|||
try {
|
||||
showNotification({
|
||||
color: "#eed202",
|
||||
title: "Discord has crashed!",
|
||||
body: "Awn :( Discord has crashed two times rapidly, not attempting to recover. Click here to join our support server!",
|
||||
title: t("crashHandler.notifications.crashedTitle"),
|
||||
body: t("crashHandler.notifications.crashedBody"),
|
||||
noPersist: true,
|
||||
onClick: () => openInviteModal("wKgT9j2xfN").catch(() =>
|
||||
showToast("Invalid or expired invite"),
|
||||
showToast(t("crashHandler.notifications.invalidInvite")),
|
||||
)
|
||||
});
|
||||
} catch { }
|
||||
|
|
@ -118,7 +119,7 @@ export default definePlugin({
|
|||
try {
|
||||
if (!hasCrashedOnce) {
|
||||
hasCrashedOnce = true;
|
||||
maybePromptToUpdate("Uh oh, Discord has just crashed... but good news, there is a Equicord update available that might fix this issue! Would you like to update now?", true);
|
||||
maybePromptToUpdate(t("crashHandler.updatePrompt"), true);
|
||||
}
|
||||
} catch { }
|
||||
|
||||
|
|
@ -136,11 +137,11 @@ export default definePlugin({
|
|||
try {
|
||||
showNotification({
|
||||
color: "#eed202",
|
||||
title: "Discord has crashed!",
|
||||
body: "Attempting to recover... Click here to join our support server!",
|
||||
title: t("crashHandler.notifications.crashedTitle"),
|
||||
body: t("crashHandler.notifications.recoveringBody"),
|
||||
noPersist: true,
|
||||
onClick: () => openInviteModal("wKgT9j2xfN").catch(() =>
|
||||
showToast("Invalid or expired invite"),
|
||||
showToast(t("crashHandler.notifications.invalidInvite")),
|
||||
)
|
||||
});
|
||||
} catch { }
|
||||
|
|
|
|||
|
|
@ -6,34 +6,35 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs, IS_MAC } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "CtrlEnterSend",
|
||||
authors: [Devs.UlyssesZhan],
|
||||
description: "Use Ctrl+Enter to send messages (customizable)",
|
||||
description: t("ctrlEnterSend.description"),
|
||||
settings: definePluginSettings({
|
||||
submitRule: {
|
||||
description: "The way to send a message",
|
||||
description: t("ctrlEnterSend.settings.submitRule"),
|
||||
type: OptionType.SELECT,
|
||||
options: [
|
||||
{
|
||||
label: "Ctrl+Enter (Enter or Shift+Enter for new line) (cmd+enter on macOS)",
|
||||
label: t("ctrlEnterSend.submitRuleOptions.ctrlEnter"),
|
||||
value: "ctrl+enter"
|
||||
},
|
||||
{
|
||||
label: "Shift+Enter (Enter for new line)",
|
||||
label: t("ctrlEnterSend.submitRuleOptions.shiftEnter"),
|
||||
value: "shift+enter"
|
||||
},
|
||||
{
|
||||
label: "Enter (Shift+Enter for new line; Discord default)",
|
||||
label: t("ctrlEnterSend.submitRuleOptions.enter"),
|
||||
value: "enter"
|
||||
}
|
||||
],
|
||||
default: "ctrl+enter"
|
||||
},
|
||||
sendMessageInTheMiddleOfACodeBlock: {
|
||||
description: "Whether to send a message in the middle of a code block",
|
||||
description: t("ctrlEnterSend.settings.sendMessageInTheMiddleOfACodeBlock"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,12 +7,13 @@
|
|||
import { currentNotice, noticesQueue, popNotice, showNotice } from "@api/Notices";
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import { FluxDispatcher } from "@webpack/common";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
idleTimeout: {
|
||||
description: "Minutes before Discord goes idle (0 to disable auto-idle)",
|
||||
description: t("customIdle.settings.idleTimeout"),
|
||||
type: OptionType.SLIDER,
|
||||
markers: makeRange(0, 60, 5),
|
||||
default: 10,
|
||||
|
|
@ -20,7 +21,7 @@ const settings = definePluginSettings({
|
|||
restartNeeded: true // Because of the setInterval patch
|
||||
},
|
||||
remainInIdle: {
|
||||
description: "When you come back to Discord, remain idle until you confirm you want to go online",
|
||||
description: t("customIdle.settings.remainInIdle"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true
|
||||
}
|
||||
|
|
@ -28,7 +29,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "CustomIdle",
|
||||
description: "Allows you to set the time before Discord goes idle (or disable auto-idle)",
|
||||
description: t("customIdle.description"),
|
||||
authors: [Devs.newwares],
|
||||
settings,
|
||||
patches: [
|
||||
|
|
@ -60,13 +61,13 @@ export default definePlugin({
|
|||
return;
|
||||
}
|
||||
|
||||
const backOnlineMessage = "Welcome back! Click the button to go online. Click the X to stay idle until reload.";
|
||||
const backOnlineMessage = t("customIdle.ui.backOnlineMessage");
|
||||
if (
|
||||
currentNotice?.[1] === backOnlineMessage ||
|
||||
noticesQueue.some(([, noticeMessage]) => noticeMessage === backOnlineMessage)
|
||||
) return;
|
||||
|
||||
showNotice(backOnlineMessage, "Exit idle", () => {
|
||||
showNotice(backOnlineMessage, t("customIdle.ui.exitIdle"), () => {
|
||||
popNotice();
|
||||
FluxDispatcher.dispatch({
|
||||
type: "IDLE",
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import definePlugin, { OptionType, ReporterTestable } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import { initWs, socket, stopWs } from "./initWs";
|
||||
export const PORT = 8485;
|
||||
|
|
@ -29,17 +30,17 @@ export const logger = new Logger("DevCompanion");
|
|||
|
||||
export const settings = definePluginSettings({
|
||||
notifyOnAutoConnect: {
|
||||
description: "Whether to notify when Dev Companion has automatically connected.",
|
||||
description: t("devCompanion.settings.notifyOnAutoConnect"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true
|
||||
},
|
||||
usePatchedModule: {
|
||||
description: "On extract requests, reply with the current patched module (if it is patched) instead of the original.",
|
||||
description: t("devCompanion.settings.usePatchedModule"),
|
||||
default: true,
|
||||
type: OptionType.BOOLEAN,
|
||||
},
|
||||
reloadAfterToggle: {
|
||||
description: "Reload after a disable/enable plugin command is recived.",
|
||||
description: t("devCompanion.settings.reloadAfterToggle"),
|
||||
default: true,
|
||||
type: OptionType.BOOLEAN
|
||||
}
|
||||
|
|
@ -47,7 +48,7 @@ export const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "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!",
|
||||
description: t("devCompanion.description"),
|
||||
authors: [Devs.Ven, Devs.sadan],
|
||||
reporterTestable: ReporterTestable.None,
|
||||
isModified: true,
|
||||
|
|
|
|||
|
|
@ -17,11 +17,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "DisableCallIdle",
|
||||
description: "Disables automatically getting kicked from a DM voice call after 3 minutes and being moved to an AFK voice channel.",
|
||||
description: t("disableCallIdle.description"),
|
||||
authors: [Devs.Nuckyz],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { moment } from "@webpack/common";
|
||||
|
||||
export default definePlugin({
|
||||
name: "DontRoundMyTimestamps",
|
||||
authors: [Devs.Lexi],
|
||||
description: "Always rounds relative timestamps down, so 7.6y becomes 7y instead of 8y",
|
||||
description: t("dontRoundMyTimestamps.description"),
|
||||
|
||||
start() {
|
||||
moment.relativeTimeRounding(Math.floor);
|
||||
|
|
|
|||
|
|
@ -17,11 +17,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "F8Break",
|
||||
description: "Pause the client when you press F8 with DevTools (+ breakpoints) open.",
|
||||
description: t("f8break.description"),
|
||||
authors: [Devs.lewisakura],
|
||||
|
||||
start() {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import { Button } from "@components/Button";
|
|||
import { Heading } from "@components/Heading";
|
||||
import { Paragraph } from "@components/Paragraph";
|
||||
import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize } from "@utils/modal";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import { ClearAliasesConfirmModalProps } from "./types";
|
||||
|
||||
|
|
@ -15,11 +16,11 @@ export function ClearAliasesConfirmModal({ modalProps, onConfirm }: ClearAliases
|
|||
return (
|
||||
<ModalRoot {...modalProps} size={ModalSize.SMALL}>
|
||||
<ModalHeader>
|
||||
<Heading style={{ flexGrow: 1 }}>Delete all aliases</Heading>
|
||||
<Heading style={{ flexGrow: 1 }}>{t("favEmojiFirst.ui.confirmModal.title")}</Heading>
|
||||
<ModalCloseButton onClick={modalProps.onClose} />
|
||||
</ModalHeader>
|
||||
<ModalContent>
|
||||
<Paragraph>This will remove every emoji alias you saved.</Paragraph>
|
||||
<Paragraph>{t("favEmojiFirst.ui.confirmModal.description")}</Paragraph>
|
||||
</ModalContent>
|
||||
<ModalFooter>
|
||||
<Button
|
||||
|
|
@ -30,7 +31,7 @@ export function ClearAliasesConfirmModal({ modalProps, onConfirm }: ClearAliases
|
|||
modalProps.onClose();
|
||||
}}
|
||||
>
|
||||
Delete all aliases
|
||||
{t("favEmojiFirst.ui.confirmModal.confirmButton")}
|
||||
</Button>
|
||||
</ModalFooter>
|
||||
</ModalRoot>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import { Button } from "@components/Button";
|
|||
import { Heading } from "@components/Heading";
|
||||
import { Paragraph } from "@components/Paragraph";
|
||||
import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize } from "@utils/modal";
|
||||
import { t } from "@utils/translation";
|
||||
import { TextInput, useState } from "@webpack/common";
|
||||
|
||||
import { SetAliasModalProps } from "./types";
|
||||
|
|
@ -26,25 +27,25 @@ export function SetAliasModal({
|
|||
|
||||
const validationError = getValidationError(input);
|
||||
const duplicateAlias = isDuplicateAlias(input);
|
||||
const finalError = duplicateAlias ? "Duplicate alias" : error ?? validationError;
|
||||
const finalError = duplicateAlias ? t("favEmojiFirst.ui.duplicateAlias") : error ?? validationError;
|
||||
const canSave = !validationError && !duplicateAlias;
|
||||
|
||||
return (
|
||||
<ModalRoot {...modalProps} size={ModalSize.SMALL}>
|
||||
<ModalHeader>
|
||||
<Heading style={{ flexGrow: 1 }}>Set alias</Heading>
|
||||
<Heading style={{ flexGrow: 1 }}>{t("favEmojiFirst.ui.modal.setTitle")}</Heading>
|
||||
<ModalCloseButton onClick={modalProps.onClose} />
|
||||
</ModalHeader>
|
||||
|
||||
<ModalContent style={{ overflowY: "hidden" }}>
|
||||
<Paragraph style={{ margin: 0, marginBottom: 8 }}>Set an alias for {emojiDisplayName}</Paragraph>
|
||||
<Paragraph style={{ margin: 0, marginBottom: 8 }}>{t("favEmojiFirst.ui.modal.setDescription", { emoji: emojiDisplayName })}</Paragraph>
|
||||
<TextInput
|
||||
value={input}
|
||||
onChange={value => {
|
||||
setInput(value);
|
||||
setError(null);
|
||||
}}
|
||||
placeholder='Alias, e.g. "sob"'
|
||||
placeholder={t("favEmojiFirst.ui.modal.placeholder")}
|
||||
/>
|
||||
{finalError && (
|
||||
<BaseText style={{ color: "var(--text-feedback-critical)", marginTop: 8 }}>
|
||||
|
|
@ -66,7 +67,7 @@ export function SetAliasModal({
|
|||
modalProps.onClose();
|
||||
}}
|
||||
>
|
||||
Save
|
||||
{t("favEmojiFirst.ui.modal.save")}
|
||||
</Button>
|
||||
</ModalFooter>
|
||||
</ModalRoot>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import { Devs, EquicordDevs } from "@utils/constants";
|
|||
import { classNameFactory } from "@utils/css";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { openModal } from "@utils/modal";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Emoji, Message } from "@vencord/discord-types";
|
||||
import { findByPropsLazy, findExportedComponentLazy } from "@webpack";
|
||||
|
|
@ -111,12 +112,12 @@ const aliasResultCache = new Map<string, EmojiResult | null>();
|
|||
const settings = definePluginSettings({
|
||||
aliases: {
|
||||
type: OptionType.COMPONENT,
|
||||
description: "Manage your emoji aliases.",
|
||||
description: t("favEmojiFirst.settings.aliases"),
|
||||
component: AliasListSetting
|
||||
},
|
||||
clearAll: {
|
||||
type: OptionType.COMPONENT,
|
||||
description: "Delete all aliases.",
|
||||
description: t("favEmojiFirst.settings.clearAll"),
|
||||
component: ClearAllAliasesSetting
|
||||
}
|
||||
});
|
||||
|
|
@ -149,8 +150,8 @@ function normalizeEmojiNameForCompare(input: string | undefined): string {
|
|||
|
||||
function getAliasValidationError(input: string): string | null {
|
||||
const normalized = normalizeAlias(input);
|
||||
if (!normalized.length) return "Alias is required.";
|
||||
if (!/^[a-z0-9_]{2,32}$/.test(normalized)) return "Alias must be 2-32 characters and only use lowercase letters, numbers, or underscores.";
|
||||
if (!normalized.length) return t("favEmojiFirst.ui.aliasRequired");
|
||||
if (!/^[a-z0-9_]{2,32}$/.test(normalized)) return t("favEmojiFirst.ui.aliasValidation");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -661,7 +662,7 @@ async function saveAlias(aliasInput: string, ref: StoredEmojiRef): Promise<{ ok:
|
|||
const existing = aliasMap[alias];
|
||||
|
||||
if (existing && !isSameEmoji(existing, ref)) {
|
||||
return { ok: false, error: "Duplicate alias" };
|
||||
return { ok: false, error: t("favEmojiFirst.ui.duplicateAlias") };
|
||||
}
|
||||
|
||||
const normalizedRef = ref.kind === "unicode"
|
||||
|
|
@ -685,12 +686,12 @@ async function saveAlias(aliasInput: string, ref: StoredEmojiRef): Promise<{ ok:
|
|||
return { ok: true };
|
||||
} catch (error) {
|
||||
logger.error("Failed to save emoji alias.", error);
|
||||
return { ok: false, error: "Failed to save alias." };
|
||||
return { ok: false, error: t("favEmojiFirst.ui.failedToSave") };
|
||||
}
|
||||
}
|
||||
|
||||
function getAliasMenuLabel(ref: StoredEmojiRef): string {
|
||||
return getExistingAliasForEmoji(ref) ? "Edit alias" : "Set alias";
|
||||
return getExistingAliasForEmoji(ref) ? t("favEmojiFirst.ui.editAlias") : t("favEmojiFirst.ui.setAlias");
|
||||
}
|
||||
|
||||
async function removeAlias(alias: string) {
|
||||
|
|
@ -703,14 +704,14 @@ async function removeAlias(alias: string) {
|
|||
await persistAliases(nextMap);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Removed alias :${alias}:`,
|
||||
message: t("favEmojiFirst.ui.removedAlias", { alias }),
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error("Failed to remove emoji alias.", error);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Failed to remove alias.",
|
||||
message: t("favEmojiFirst.ui.failedToRemove"),
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
}
|
||||
|
|
@ -723,14 +724,14 @@ async function clearAliases() {
|
|||
await persistAliases({});
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Deleted all emoji aliases.",
|
||||
message: t("favEmojiFirst.ui.deletedAllAliases"),
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error("Failed to clear emoji aliases.", error);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Failed to delete aliases.",
|
||||
message: t("favEmojiFirst.ui.failedToDelete"),
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
}
|
||||
|
|
@ -753,7 +754,7 @@ function openSetAliasModal(ref: StoredEmojiRef) {
|
|||
if (!result.ok) return result;
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Alias set for ${getEmojiDisplayName(ref)}.`,
|
||||
message: t("favEmojiFirst.ui.aliasSetFor", { emoji: getEmojiDisplayName(ref) }),
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
return result;
|
||||
|
|
@ -1020,7 +1021,7 @@ function AliasRow({ alias, emojiRef }: { alias: string; emojiRef: StoredEmojiRef
|
|||
>
|
||||
<PencilIcon width={14} height={14} />
|
||||
</Button>
|
||||
<Button variant="dangerSecondary" size="small" onClick={() => removeAlias(alias)}>Remove</Button>
|
||||
<Button variant="dangerSecondary" size="small" onClick={() => removeAlias(alias)}>{t("favEmojiFirst.ui.remove")}</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
@ -1034,7 +1035,7 @@ function AliasListSetting() {
|
|||
const entries = getAliasMapEntries();
|
||||
|
||||
if (!entries.length) {
|
||||
return <Paragraph>No aliases set yet.</Paragraph>;
|
||||
return <Paragraph>{t("favEmojiFirst.ui.noAliasesYet")}</Paragraph>;
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
@ -1055,7 +1056,7 @@ function ClearAllAliasesSetting() {
|
|||
|
||||
return (
|
||||
<Button variant="dangerPrimary" size="small" disabled={disabled} onClick={openClearAliasesConfirmModal}>
|
||||
Delete all aliases
|
||||
{t("favEmojiFirst.ui.deleteAllAliases")}
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
|
|
@ -1102,7 +1103,7 @@ export default definePlugin({
|
|||
name: "FavoriteEmojiFirst",
|
||||
authors: [Devs.Aria, Devs.Ven, EquicordDevs.justjxke],
|
||||
tags: ["EmojiAlias"],
|
||||
description: "Puts your favorite emoji first in the emoji autocomplete and also has emoji alias.",
|
||||
description: t("favEmojiFirst.description"),
|
||||
settings,
|
||||
contextMenus: {
|
||||
"expression-picker": expressionPickerPatch,
|
||||
|
|
|
|||
|
|
@ -5,11 +5,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "FixCodeblockGap",
|
||||
description: "Removes the gap between codeblocks and text below it",
|
||||
description: t("fixCodeblockGap.description"),
|
||||
authors: [Devs.Grzesiek11],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,22 +6,22 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
volume: {
|
||||
type: OptionType.SLIDER,
|
||||
description: "The volume % to set for spotify embeds. Anything above 10% is veeeery loud",
|
||||
description: t("fixSpotifyEmbeds.settings.volume"),
|
||||
markers: makeRange(0, 100, 10),
|
||||
stickToMarkers: false,
|
||||
default: 10
|
||||
}
|
||||
});
|
||||
|
||||
// The entire code of this plugin can be found in ipcPlugins
|
||||
export default definePlugin({
|
||||
name: "FixSpotifyEmbeds",
|
||||
description: "Fixes spotify embeds being incredibly loud by letting you customise the volume",
|
||||
description: t("fixSpotifyEmbeds.description"),
|
||||
authors: [Devs.Ven],
|
||||
settings,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,10 +5,11 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "FixYoutubeEmbeds",
|
||||
description: "Bypasses youtube videos being blocked from display on Discord (for example by UMG)",
|
||||
description: t("fixYoutubeEmbeds.description"),
|
||||
authors: [Devs.coolelectronics]
|
||||
});
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Channel, User } from "@vencord/discord-types";
|
||||
import { GuildStore } from "@webpack/common";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ForceOwnerCrown",
|
||||
description: "Force the owner crown next to usernames even if the server is large.",
|
||||
description: t("forceOwnerCrown.description"),
|
||||
authors: [Devs.D3SOX, Devs.Nickyux],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { ApplicationCommandInputType, sendBotMessage } from "@api/Commands";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
|
||||
|
|
@ -25,12 +26,12 @@ const FriendInvites = findByPropsLazy("createFriendInvite");
|
|||
|
||||
export default definePlugin({
|
||||
name: "FriendInvites",
|
||||
description: "Create and manage friend invite links via slash commands (/create friend invite, /view friend invites, /revoke friend invites).",
|
||||
description: t("friendInvites.description"),
|
||||
authors: [Devs.afn, Devs.Dziurwa],
|
||||
commands: [
|
||||
{
|
||||
name: "create friend invite",
|
||||
description: "Generates a friend invite link.",
|
||||
description: t("friendInvites.commands.createFriendInvite.description"),
|
||||
inputType: ApplicationCommandInputType.BUILT_IN,
|
||||
|
||||
execute: async (args, ctx) => {
|
||||
|
|
@ -39,40 +40,40 @@ export default definePlugin({
|
|||
sendBotMessage(ctx.channel.id, {
|
||||
content: `
|
||||
discord.gg/${invite.code} ·
|
||||
Expires: <t:${new Date(invite.expires_at).getTime() / 1000}:R> ·
|
||||
Max uses: \`${invite.max_uses}\`
|
||||
${t("friendInvites.ui.expires")} <t:${new Date(invite.expires_at).getTime() / 1000}:R> ·
|
||||
${t("friendInvites.ui.maxUses")} \`${invite.max_uses}\`
|
||||
`.trim().replace(/\s+/g, " ")
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "view friend invites",
|
||||
description: "View a list of all generated friend invites.",
|
||||
description: t("friendInvites.commands.viewFriendInvites.description"),
|
||||
inputType: ApplicationCommandInputType.BUILT_IN,
|
||||
execute: async (_, ctx) => {
|
||||
const invites = await FriendInvites.getAllFriendInvites();
|
||||
const friendInviteList = invites.map(i =>
|
||||
`
|
||||
_discord.gg/${i.code}_ ·
|
||||
Expires: <t:${new Date(i.expires_at).getTime() / 1000}:R> ·
|
||||
Times used: \`${i.uses}/${i.max_uses}\`
|
||||
${t("friendInvites.ui.expires")} <t:${new Date(i.expires_at).getTime() / 1000}:R> ·
|
||||
${t("friendInvites.ui.timesUsed")} \`${i.uses}/${i.max_uses}\`
|
||||
`.trim().replace(/\s+/g, " ")
|
||||
);
|
||||
|
||||
sendBotMessage(ctx.channel.id, {
|
||||
content: friendInviteList.join("\n") || "You have no active friend invites!"
|
||||
content: friendInviteList.join("\n") || t("friendInvites.ui.noActiveInvites")
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "revoke friend invites",
|
||||
description: "Revokes all generated friend invites.",
|
||||
description: t("friendInvites.commands.revokeFriendInvites.description"),
|
||||
inputType: ApplicationCommandInputType.BUILT_IN,
|
||||
execute: async (_, ctx) => {
|
||||
await FriendInvites.revokeFriendInvites();
|
||||
|
||||
sendBotMessage(ctx.channel.id, {
|
||||
content: "All friend invites have been revoked."
|
||||
content: t("friendInvites.ui.allRevoked")
|
||||
});
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import { migratePluginSettings } from "@api/Settings";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { getIntlMessage } from "@utils/discord";
|
||||
import { NoopComponent } from "@utils/react";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { filters, findByCodeLazy, waitFor } from "@webpack";
|
||||
|
|
@ -80,7 +81,7 @@ const contextMenuPatch: NavContextMenuPatchCallback = (children, props: MessageA
|
|||
migratePluginSettings("FullSearchContext", "SearchReply");
|
||||
export default definePlugin({
|
||||
name: "FullSearchContext",
|
||||
description: "Makes the message context menu in message search results have all options you'd expect",
|
||||
description: t("fullSearchContext.description"),
|
||||
authors: [Devs.Ven, Devs.Aria],
|
||||
|
||||
patches: [{
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findComponentByCodeLazy } from "@webpack";
|
||||
import { UserStore, useStateFromStores } from "@webpack/common";
|
||||
|
|
@ -22,7 +23,7 @@ interface UserMentionComponentProps {
|
|||
|
||||
export default definePlugin({
|
||||
name: "FullUserInChatbox",
|
||||
description: "Makes the user mention in the chatbox have more functionalities, like left/right clicking",
|
||||
description: t("fullUserInChatbox.description"),
|
||||
authors: [Devs.sadan],
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -20,12 +20,13 @@ import { isPluginEnabled } from "@api/PluginManager";
|
|||
import betterGifPicker from "@plugins/betterGifPicker";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { insertTextIntoChatInputBox } from "@utils/discord";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
import { ExpressionPickerStore } from "@webpack/common";
|
||||
|
||||
export default definePlugin({
|
||||
name: "GifPaste",
|
||||
description: "Makes picking a gif in the gif picker insert a link into the chatbox instead of instantly sending it",
|
||||
description: t("gifPaste.description"),
|
||||
authors: [Devs.Ven],
|
||||
|
||||
patches: [{
|
||||
|
|
|
|||
|
|
@ -18,12 +18,13 @@
|
|||
|
||||
import { migratePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
migratePluginSettings("IloveSpam", "iLoveSpam");
|
||||
export default definePlugin({
|
||||
name: "ILoveSpam",
|
||||
description: "Do not hide messages from 'likely spammers'",
|
||||
description: t("iLoveSpam.description"),
|
||||
authors: [Devs.botato, Devs.Nyako],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,13 +7,14 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
const ImageExtensionRe = /\.(png|jpg|jpeg|gif|webp|avif)$/i;
|
||||
const GifHostRegex = /^(.+?\.)?(tenor|giphy|imgur)\.com$/i;
|
||||
|
||||
const settings = definePluginSettings({
|
||||
showFullUrl: {
|
||||
description: "Show the full URL of the image instead of just the file name. Always enabled for GIFs because they usually have no meaningful file name",
|
||||
description: t("imageFilename.settings.showFullUrl"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false,
|
||||
},
|
||||
|
|
@ -22,7 +23,7 @@ const settings = definePluginSettings({
|
|||
export default definePlugin({
|
||||
name: "ImageFilename",
|
||||
authors: [Devs.Ven],
|
||||
description: "Display the file name of images & GIFs as a tooltip when hovering over them",
|
||||
description: t("imageFilename.description"),
|
||||
settings,
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -6,10 +6,11 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ImageLink",
|
||||
description: "Never hide image links in messages, even if it's the only content",
|
||||
description: t("imageLink.description"),
|
||||
authors: [Devs.Kyuuhachi, Devs.Sqaaakoi],
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { findStoreLazy } from "@webpack";
|
||||
import { Constants, FluxDispatcher, GuildStore, RelationshipStore, SnowflakeUtils, UserStore } from "@webpack/common";
|
||||
import { Settings } from "Vencord";
|
||||
|
|
@ -28,7 +29,7 @@ const UserAffinitiesStore = findStoreLazy("UserAffinitiesV2Store");
|
|||
|
||||
export default definePlugin({
|
||||
name: "ImplicitRelationships",
|
||||
description: "Shows your implicit relationships in the Friends tab.",
|
||||
description: t("implicitRelationships.description"),
|
||||
authors: [Devs.Dolfies],
|
||||
patches: [
|
||||
// Counts header
|
||||
|
|
@ -36,7 +37,7 @@ export default definePlugin({
|
|||
find: "#{intl::FRIENDS_ALL_HEADER}",
|
||||
replacement: {
|
||||
match: /toString\(\)\}\);case (\i\.\i)\.PENDING/,
|
||||
replace: 'toString()});case $1.IMPLICIT:return "Implicit — "+arguments[1];case $1.BLOCKED'
|
||||
replace: `toString()});case $1.IMPLICIT:return "${t("implicitRelationships.ui.implicitHeader").replace("{count}", '"+arguments[1]+"')}";case $1.BLOCKED`
|
||||
},
|
||||
},
|
||||
// No friends page
|
||||
|
|
@ -52,7 +53,7 @@ export default definePlugin({
|
|||
find: "#{intl::FRIENDS_SECTION_ONLINE}),className:",
|
||||
replacement: {
|
||||
match: /,{id:(\i\.\i)\.PENDING,show:.+?className:(\i\.\i)(?=\},\{id:)/,
|
||||
replace: (rest, relationShipTypes, className) => `,{id:${relationShipTypes}.IMPLICIT,show:true,className:${className},content:"Implicit"}${rest}`
|
||||
replace: (rest, relationShipTypes, className) => `,{id:${relationShipTypes}.IMPLICIT,show:true,className:${className},content:"${t("implicitRelationships.ui.implicitSection")}"}${rest}`
|
||||
}
|
||||
},
|
||||
// Sections content
|
||||
|
|
@ -110,7 +111,7 @@ export default definePlugin({
|
|||
sortByAffinity: {
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
description: "Whether to sort implicit relationships by their affinity to you.",
|
||||
description: t("implicitRelationships.settings.sortByAffinity"),
|
||||
restartNeeded: true
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "DisableDeepLinks",
|
||||
description: "Disables Discord's stupid deep linking feature which tries to force you to use their Desktop App",
|
||||
description: t("noDeepLinks.description"),
|
||||
authors: [Devs.Ven],
|
||||
required: true,
|
||||
|
||||
|
|
|
|||
|
|
@ -17,11 +17,12 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "NoSystemBadge",
|
||||
description: "Disables the taskbar and system tray unread count badge.",
|
||||
description: t("noSystemBadge.description"),
|
||||
authors: [Devs.rushii],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
import { Devs } from "@utils/constants";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin from "@utils/types";
|
||||
|
||||
import { onChannelDelete, onGuildDelete, onRelationshipRemove, removeFriend, removeGroup, removeGuild } from "./functions";
|
||||
|
|
@ -25,7 +26,7 @@ import { syncAndRunChecks, syncFriends, syncGroups, syncGuilds } from "./utils";
|
|||
|
||||
export default definePlugin({
|
||||
name: "RelationshipNotifier",
|
||||
description: "Notifies you when a friend, group chat, or server removes you.",
|
||||
description: t("relationshipNotifier.description"),
|
||||
authors: [Devs.nick],
|
||||
settings,
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import * as DataStore from "@api/DataStore";
|
|||
import { popNotice, showNotice } from "@api/Notices";
|
||||
import { showNotification } from "@api/Notifications";
|
||||
import { getUniqueUsername, openUserProfile } from "@utils/discord";
|
||||
import { t } from "@utils/translation";
|
||||
import { FluxStore } from "@vencord/discord-types";
|
||||
import { ChannelType, RelationshipType } from "@vencord/discord-types/enums";
|
||||
import { findStoreLazy } from "@webpack";
|
||||
|
|
@ -66,14 +67,14 @@ export async function syncAndRunChecks() {
|
|||
if (settings.store.groups && oldGroups?.size) {
|
||||
for (const [id, group] of oldGroups) {
|
||||
if (!groups.has(id))
|
||||
notify(`You are no longer in the group ${group.name}.`, group.iconURL);
|
||||
notify(t("relationshipNotifier.offlineGroupRemoved", { name: group.name }), group.iconURL);
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.store.servers && oldGuilds?.size) {
|
||||
for (const [id, guild] of oldGuilds) {
|
||||
if (!guilds.has(id) && !GuildAvailabilityStore.isUnavailable(id))
|
||||
notify(`You are no longer in the server ${guild.name}.`, guild.iconURL);
|
||||
notify(t("relationshipNotifier.offlineServerRemoved", { name: guild.name }), guild.iconURL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ export async function syncAndRunChecks() {
|
|||
const user = await UserUtils.getUser(id).catch(() => void 0);
|
||||
if (user)
|
||||
notify(
|
||||
`You are no longer friends with ${getUniqueUsername(user)}.`,
|
||||
t("relationshipNotifier.offlineFriendRemoved", { username: getUniqueUsername(user) }),
|
||||
user.getAvatarURL(undefined, undefined, false),
|
||||
() => openUserProfile(user.id)
|
||||
);
|
||||
|
|
@ -101,7 +102,7 @@ export async function syncAndRunChecks() {
|
|||
const user = await UserUtils.getUser(id).catch(() => void 0);
|
||||
if (user)
|
||||
notify(
|
||||
`Friend request from ${getUniqueUsername(user)} has been revoked.`,
|
||||
t("relationshipNotifier.offlineFriendRequestRevoked", { username: getUniqueUsername(user) }),
|
||||
user.getAvatarURL(undefined, undefined, false),
|
||||
() => openUserProfile(user.id)
|
||||
);
|
||||
|
|
@ -115,7 +116,7 @@ export function notify(text: string, icon?: string, onClick?: () => void) {
|
|||
showNotice(text, "OK", () => popNotice());
|
||||
|
||||
showNotification({
|
||||
title: "Relationship Notifier",
|
||||
title: t("relationshipNotifier.notificationTitle"),
|
||||
body: text,
|
||||
icon,
|
||||
onClick
|
||||
|
|
|
|||
|
|
@ -7,11 +7,12 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
onlySnow: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Only play the Snow Halation Theme",
|
||||
description: t("secretRingTone.settings.onlySnow"),
|
||||
default: false,
|
||||
restartNeeded: true
|
||||
}
|
||||
|
|
@ -19,7 +20,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "SecretRingToneEnabler",
|
||||
description: "Always play the secret version of the discord ringtone (except during special ringtone events)",
|
||||
description: t("secretRingTone.description"),
|
||||
authors: [Devs.AndrewDLO, Devs.FieryFlames, Devs.RamziAH],
|
||||
settings,
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import "./shiki.css";
|
|||
import { enableStyle } from "@api/Styles";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { ReporterTestable } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import previewExampleText from "file://previewExample.tsx";
|
||||
|
||||
import { shiki } from "./api/shiki";
|
||||
|
|
@ -32,7 +33,7 @@ import { clearStyles } from "./utils/createStyle";
|
|||
|
||||
export default definePlugin({
|
||||
name: "ShikiCodeblocks",
|
||||
description: "Brings vscode-style codeblocks into Discord, powered by Shiki",
|
||||
description: t("shikiCodeblocks.description"),
|
||||
authors: [Devs.Vap],
|
||||
reporterTestable: ReporterTestable.Patches,
|
||||
settings,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import { disableStyle, enableStyle } from "@api/Styles";
|
|||
import { parseUrl } from "@utils/misc";
|
||||
import { wordsFromPascal, wordsToTitle } from "@utils/text";
|
||||
import { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import { shiki } from "./api/shiki";
|
||||
import { themes } from "./api/themes";
|
||||
|
|
@ -33,7 +34,7 @@ export type ShikiSettings = typeof settings.store;
|
|||
export const settings = definePluginSettings({
|
||||
theme: {
|
||||
type: OptionType.SELECT,
|
||||
description: "Default themes",
|
||||
description: t("shikiCodeblocks.settings.theme"),
|
||||
options: themeNames.map(themeName => ({
|
||||
label: wordsToTitle(wordsFromPascal(themeName)),
|
||||
value: themes[themeName],
|
||||
|
|
@ -43,7 +44,7 @@ export const settings = definePluginSettings({
|
|||
},
|
||||
customTheme: {
|
||||
type: OptionType.STRING,
|
||||
description: "A link to a custom vscode theme",
|
||||
description: t("shikiCodeblocks.settings.customTheme"),
|
||||
placeholder: themes.MaterialCandy,
|
||||
onChange: value => {
|
||||
shiki.setTheme(value || settings.store.theme);
|
||||
|
|
@ -51,42 +52,42 @@ export const settings = definePluginSettings({
|
|||
},
|
||||
tryHljs: {
|
||||
type: OptionType.SELECT,
|
||||
description: "Use the more lightweight default Discord highlighter and theme.",
|
||||
description: t("shikiCodeblocks.settings.tryHljs"),
|
||||
options: [
|
||||
{
|
||||
label: "Never",
|
||||
label: t("shikiCodeblocks.settings.tryHljsOptions.never"),
|
||||
value: HljsSetting.Never,
|
||||
},
|
||||
{
|
||||
label: "Prefer Shiki instead of Highlight.js",
|
||||
label: t("shikiCodeblocks.settings.tryHljsOptions.preferShiki"),
|
||||
value: HljsSetting.Secondary,
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
label: "Prefer Highlight.js instead of Shiki",
|
||||
label: t("shikiCodeblocks.settings.tryHljsOptions.preferHljs"),
|
||||
value: HljsSetting.Primary,
|
||||
},
|
||||
{
|
||||
label: "Always",
|
||||
label: t("shikiCodeblocks.settings.tryHljsOptions.always"),
|
||||
value: HljsSetting.Always,
|
||||
},
|
||||
],
|
||||
},
|
||||
useDevIcon: {
|
||||
type: OptionType.SELECT,
|
||||
description: "How to show language icons on codeblocks",
|
||||
description: t("shikiCodeblocks.settings.useDevIcon"),
|
||||
options: [
|
||||
{
|
||||
label: "Disabled",
|
||||
label: t("shikiCodeblocks.settings.useDevIconOptions.disabled"),
|
||||
value: DeviconSetting.Disabled,
|
||||
},
|
||||
{
|
||||
label: "Colorless",
|
||||
label: t("shikiCodeblocks.settings.useDevIconOptions.colorless"),
|
||||
value: DeviconSetting.Greyscale,
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
label: "Colored",
|
||||
label: t("shikiCodeblocks.settings.useDevIconOptions.colored"),
|
||||
value: DeviconSetting.Color,
|
||||
},
|
||||
],
|
||||
|
|
@ -97,7 +98,7 @@ export const settings = definePluginSettings({
|
|||
},
|
||||
bgOpacity: {
|
||||
type: OptionType.SLIDER,
|
||||
description: "Background opacity",
|
||||
description: t("shikiCodeblocks.settings.bgOpacity"),
|
||||
markers: [0, 20, 40, 60, 80, 100],
|
||||
default: 100,
|
||||
stickToMarkers: false,
|
||||
|
|
|
|||
|
|
@ -103,9 +103,9 @@ const getForumLayoutName = (layout: number) => {
|
|||
|
||||
const getVideoQualityModeName = (mode: number) => {
|
||||
switch (mode) {
|
||||
case VideoQualityModes.AUTO: return t("showHiddenChannels.videoQualityModes.automatic");
|
||||
case VideoQualityModes.FULL: return t("showHiddenChannels.videoQualityModes.720p");
|
||||
default: return t("showHiddenChannels.videoQualityModes.automatic");
|
||||
case VideoQualityModes.AUTO: return t("showHiddenChannels.videoQuality.automatic");
|
||||
case VideoQualityModes.FULL: return t("showHiddenChannels.videoQuality.720p");
|
||||
default: return t("showHiddenChannels.videoQuality.automatic");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ function HiddenChannelLockScreen({ channel }: { channel: Channel; }) {
|
|||
|
||||
{(!channel.isGuildVoice() && !channel.isGuildStageVoice()) && (
|
||||
<BaseText size="lg">
|
||||
{t("showHiddenChannels.cannotSeeMessages", { type: channel.isForumChannel() ? t("showHiddenChannels.types.posts") : t("showHiddenChannels.types.messages") })}
|
||||
{t("showHiddenChannels.cannotSeeMessages", { type: channel.isForumChannel() ? t("showHiddenChannels.channelTypes.posts") : t("showHiddenChannels.channelTypes.messages") })}
|
||||
{channel.isForumChannel() && topic && topic.length > 0 && ` ${t("showHiddenChannels.seeGuidelines")}`}
|
||||
</BaseText>
|
||||
)}
|
||||
|
|
@ -208,7 +208,7 @@ function HiddenChannelLockScreen({ channel }: { channel: Channel; }) {
|
|||
|
||||
{lastMessageId &&
|
||||
<BaseText size="md">
|
||||
{t("showHiddenChannels.lastMessageCreated", { type: channel.isForumChannel() ? t("showHiddenChannels.types.post") : t("showHiddenChannels.types.message") })}
|
||||
{t("showHiddenChannels.lastMessageCreated", { type: channel.isForumChannel() ? t("showHiddenChannels.channelTypes.post") : t("showHiddenChannels.channelTypes.message") })}
|
||||
<Timestamp timestamp={new Date(SnowflakeUtils.extractTimestamp(lastMessageId))} />
|
||||
</BaseText>
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ function HiddenChannelLockScreen({ channel }: { channel: Channel; }) {
|
|||
}
|
||||
{(defaultAutoArchiveDuration ?? 0) > 0 &&
|
||||
<BaseText size="md">
|
||||
{t("showHiddenChannels.archiveDuration", { type: channel.isForumChannel() ? t("showHiddenChannels.types.posts") : t("showHiddenChannels.types.threads"), duration: formatDuration(defaultAutoArchiveDuration!, "minutes") })}
|
||||
{t("showHiddenChannels.archiveDuration", { type: channel.isForumChannel() ? t("showHiddenChannels.channelTypes.posts") : t("showHiddenChannels.channelTypes.threads"), duration: formatDuration(defaultAutoArchiveDuration!, "minutes") })}
|
||||
</BaseText>
|
||||
}
|
||||
{defaultForumLayout != null &&
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import ErrorBoundary from "@components/ErrorBoundary";
|
|||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import { classes } from "@utils/misc";
|
||||
import { t } from "@utils/translation";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import type { Channel, Role } from "@vencord/discord-types";
|
||||
import { ChannelStore, PermissionsBits, PermissionStore, Tooltip } from "@webpack/common";
|
||||
|
|
@ -48,28 +49,28 @@ const CONNECT = 1n << 20n;
|
|||
|
||||
export const settings = definePluginSettings({
|
||||
channelStyle: {
|
||||
description: "The style used to display hidden channels.",
|
||||
description: t("showHiddenChannels.settings.channelStyle.description"),
|
||||
type: OptionType.SELECT,
|
||||
options: [
|
||||
{ label: "Classic", value: ChannelStyle.Classic, default: true },
|
||||
{ label: "Muted", value: ChannelStyle.Muted },
|
||||
{ label: "Show Unreads", value: ChannelStyle.Unread },
|
||||
{ label: "Muted and Show Unreads", value: ChannelStyle.MutedUnread }
|
||||
{ label: t("showHiddenChannels.settings.channelStyle.classic"), value: ChannelStyle.Classic, default: true },
|
||||
{ label: t("showHiddenChannels.settings.channelStyle.muted"), value: ChannelStyle.Muted },
|
||||
{ label: t("showHiddenChannels.settings.channelStyle.showUnreads"), value: ChannelStyle.Unread },
|
||||
{ label: t("showHiddenChannels.settings.channelStyle.mutedAndShowUnreads"), value: ChannelStyle.MutedUnread }
|
||||
],
|
||||
restartNeeded: true
|
||||
},
|
||||
showMode: {
|
||||
description: "The mode used to display hidden channels.",
|
||||
description: t("showHiddenChannels.settings.showMode.description"),
|
||||
type: OptionType.SELECT,
|
||||
options: [
|
||||
{ label: "Lock Icon replacing channel icon", value: ShowMode.LockIcon, default: true },
|
||||
{ label: "Eye icon on the right", value: ShowMode.EyeIconRight },
|
||||
{ label: "Lock icon on the right", value: ShowMode.LockIconRight }
|
||||
{ label: t("showHiddenChannels.settings.showMode.lockIcon"), value: ShowMode.LockIcon, default: true },
|
||||
{ label: t("showHiddenChannels.settings.showMode.eyeIconRight"), value: ShowMode.EyeIconRight },
|
||||
{ label: t("showHiddenChannels.settings.showMode.lockIconRight"), value: ShowMode.LockIconRight }
|
||||
],
|
||||
restartNeeded: true
|
||||
},
|
||||
defaultAllowedUsersAndRolesDropdownState: {
|
||||
description: "Whether the allowed users and roles dropdown on hidden channels should be open by default",
|
||||
description: t("showHiddenChannels.settings.defaultAllowedUsersAndRolesDropdownState.description"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true
|
||||
}
|
||||
|
|
@ -81,7 +82,7 @@ function isUncategorized(objChannel: { channel: Channel; comparator: number; })
|
|||
|
||||
export default definePlugin({
|
||||
name: "ShowHiddenChannels",
|
||||
description: "Show channels that you do not have access to view.",
|
||||
description: t("showHiddenChannels.description"),
|
||||
authors: [Devs.BigDuck, Devs.AverageReactEnjoyer, Devs.D3SOX, Devs.Ven, Devs.Nuckyz, Devs.Nickyux, Devs.dzshn, EquicordDevs.Oggetto],
|
||||
isModified: true,
|
||||
settings,
|
||||
|
|
@ -575,7 +576,7 @@ export default definePlugin({
|
|||
), { noop: true }),
|
||||
|
||||
EyeRightIcon: ErrorBoundary.wrap(() => (
|
||||
<Tooltip text="Hidden Channel">
|
||||
<Tooltip text={t("showHiddenChannels.hiddenChannelTooltip")}>
|
||||
{({ onMouseLeave, onMouseEnter }) => (
|
||||
<svg
|
||||
onMouseLeave={onMouseLeave}
|
||||
|
|
@ -594,7 +595,7 @@ export default definePlugin({
|
|||
), { noop: true }),
|
||||
|
||||
LockRightIcon: ErrorBoundary.wrap(() => (
|
||||
<Tooltip text="Hidden Channel">
|
||||
<Tooltip text={t("showHiddenChannels.hiddenChannelTooltip")}>
|
||||
{({ onMouseLeave, onMouseEnter }) => (
|
||||
<svg
|
||||
onMouseLeave={onMouseLeave}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import definePlugin, { OptionType, PluginSettingDef } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { GuildMember, Role } from "@vencord/discord-types";
|
||||
|
||||
const opt = (description: string) => ({
|
||||
|
|
@ -30,15 +31,15 @@ const opt = (description: string) => ({
|
|||
} satisfies PluginSettingDef);
|
||||
|
||||
const settings = definePluginSettings({
|
||||
showTimeouts: opt("Show member timeout icons in chat."),
|
||||
showInvitesPaused: opt("Show the invites paused tooltip in the server list."),
|
||||
showModView: opt("Show the member mod view context menu item in all servers.")
|
||||
showTimeouts: opt(t("showHiddenThings.settings.showTimeouts")),
|
||||
showInvitesPaused: opt(t("showHiddenThings.settings.showInvitesPaused")),
|
||||
showModView: opt(t("showHiddenThings.settings.showModView"))
|
||||
});
|
||||
|
||||
export default definePlugin({
|
||||
name: "ShowHiddenThings",
|
||||
tags: ["ShowTimeouts", "ShowInvitesPaused", "ShowModView", "DisableDiscoveryFilters"],
|
||||
description: "Displays various hidden & moderator-only things regardless of permissions.",
|
||||
description: t("showHiddenThings.description"),
|
||||
authors: [Devs.Dolfies],
|
||||
settings,
|
||||
|
||||
|
|
|
|||
|
|
@ -19,16 +19,17 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
noSpotifyAutoPause: {
|
||||
description: "Disable Spotify auto-pause",
|
||||
description: t("spotifyCrack.settings.noSpotifyAutoPause"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
restartNeeded: true
|
||||
},
|
||||
keepSpotifyActivityOnIdle: {
|
||||
description: "Keep Spotify activity playing when idling",
|
||||
description: t("spotifyCrack.settings.keepSpotifyActivityOnIdle"),
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false,
|
||||
restartNeeded: true
|
||||
|
|
@ -37,7 +38,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "SpotifyCrack",
|
||||
description: "Free listen along, no auto-pausing in voice chat, and allows activity to continue playing when idling",
|
||||
description: t("spotifyCrack.description"),
|
||||
authors: [Devs.Cyn, Devs.Nuckyz],
|
||||
settings,
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { ApplicationCommandInputType, findOption, OptionalMessageOption, sendBot
|
|||
import { Devs } from "@utils/constants";
|
||||
import { sendMessage } from "@utils/discord";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { Command } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { FluxDispatcher, MessageActions } from "@webpack/common";
|
||||
|
|
@ -60,21 +61,21 @@ const PendingReplyStore = findByPropsLazy("getPendingReply");
|
|||
function makeCommand(name: string, formatUrl: (track: Track) => string): Command {
|
||||
return {
|
||||
name,
|
||||
description: `Share your current Spotify ${name} in chat`,
|
||||
description: t("spotifyShareCommands.commands.shareDescription", { name }),
|
||||
inputType: ApplicationCommandInputType.BUILT_IN,
|
||||
options: [OptionalMessageOption],
|
||||
execute(options, { channel }) {
|
||||
const track: Track | null = Spotify.getTrack();
|
||||
if (!track) {
|
||||
return sendBotMessage(channel.id, {
|
||||
content: "You're not listening to any music."
|
||||
content: t("spotifyShareCommands.commands.notListening")
|
||||
});
|
||||
}
|
||||
|
||||
// local tracks have an id of null
|
||||
if (track.id == null) {
|
||||
return sendBotMessage(channel.id, {
|
||||
content: "Failed to find the track on spotify."
|
||||
content: t("spotifyShareCommands.commands.trackNotFound")
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +99,7 @@ function makeCommand(name: string, formatUrl: (track: Track) => string): Command
|
|||
|
||||
export default definePlugin({
|
||||
name: "SpotifyShareCommands",
|
||||
description: "Share your current Spotify track, album or artist via slash command (/track, /album, /artist)",
|
||||
description: t("spotifyShareCommands.description"),
|
||||
authors: [Devs.katlyn],
|
||||
commands: [
|
||||
makeCommand("track", track => `https://open.spotify.com/track/${track.id}`),
|
||||
|
|
|
|||
|
|
@ -21,17 +21,18 @@ import SettingsPlugin from "@plugins/_core/settings";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { removeFromArray } from "@utils/misc";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import StartupTimingPage from "./StartupTimingPage";
|
||||
|
||||
export default definePlugin({
|
||||
name: "StartupTimings",
|
||||
description: "Adds Startup Timings to the Settings menu",
|
||||
description: t("startupTimings.description"),
|
||||
authors: [Devs.Megu],
|
||||
start() {
|
||||
SettingsPlugin.customEntries.push({
|
||||
key: "vencord_startup_timings",
|
||||
title: "Startup Timings",
|
||||
title: t("startupTimings.ui.title"),
|
||||
Component: StartupTimingPage,
|
||||
Icon: ClockIcon
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,10 +6,11 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "StickerPaste",
|
||||
description: "Makes picking a sticker in the sticker picker insert it into the chatbox instead of instantly sending",
|
||||
description: t("stickerPaste.description"),
|
||||
authors: [Devs.ImBanana],
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { FluxDispatcher, UserStore } from "@webpack/common";
|
||||
|
||||
interface StreamEvent {
|
||||
|
|
@ -36,7 +37,7 @@ function toggleStreamerMode({ streamKey }: StreamEvent, value: boolean) {
|
|||
|
||||
export default definePlugin({
|
||||
name: "StreamerModeOn",
|
||||
description: "Automatically enables streamer mode when you start streaming in Discord",
|
||||
description: t("streamerModeOnStream.description"),
|
||||
authors: [Devs.Kodarru],
|
||||
flux: {
|
||||
STREAM_CREATE: d => toggleStreamerMode(d, true),
|
||||
|
|
|
|||
|
|
@ -7,22 +7,23 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { OverridePremiumTypeStore } from "@webpack/common";
|
||||
|
||||
export const settings = definePluginSettings({
|
||||
superReactByDefault: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Reaction picker will default to Super Reactions",
|
||||
description: t("superReactionTweaks.settings.superReactByDefault"),
|
||||
default: true,
|
||||
},
|
||||
unlimitedSuperReactionPlaying: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Remove the limit on Super Reactions playing at once",
|
||||
description: t("superReactionTweaks.settings.unlimitedSuperReactionPlaying"),
|
||||
default: false,
|
||||
},
|
||||
|
||||
superReactionPlayingLimit: {
|
||||
description: "Max Super Reactions to play at once. 0 to disable playing Super Reactions",
|
||||
description: t("superReactionTweaks.settings.superReactionPlayingLimit"),
|
||||
type: OptionType.SLIDER,
|
||||
default: 20,
|
||||
markers: [0, 5, 10, 20, 40, 60, 80, 100],
|
||||
|
|
@ -36,7 +37,7 @@ export const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "SuperReactionTweaks",
|
||||
description: "Customize the limit of Super Reactions playing at once, and super react by default",
|
||||
description: t("superReactionTweaks.description"),
|
||||
authors: [Devs.FieryFlames, Devs.ant0n],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,12 +7,13 @@
|
|||
import { Devs } from "@utils/constants";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { UserStore } from "@webpack/common";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ThemeAttributes",
|
||||
description: "Adds data attributes to various elements for theming purposes",
|
||||
description: t("themeAttributes.description"),
|
||||
authors: [Devs.Ven, Devs.Board],
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -19,10 +19,11 @@
|
|||
import { MessageObject } from "@api/MessageEvents";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "Unindent",
|
||||
description: "Trims leading indentation from codeblocks",
|
||||
description: t("unindent.description"),
|
||||
authors: [Devs.Ven],
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -7,11 +7,12 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
zoomMultiplier: {
|
||||
type: OptionType.SLIDER,
|
||||
description: "Zoom multiplier",
|
||||
description: t("unlockedAvatarZoom.settings.zoomMultiplier"),
|
||||
markers: makeRange(2, 16),
|
||||
default: 4,
|
||||
},
|
||||
|
|
@ -19,7 +20,7 @@ const settings = definePluginSettings({
|
|||
|
||||
export default definePlugin({
|
||||
name: "UnlockedAvatarZoom",
|
||||
description: "Allows you to zoom in further in the image crop tool when changing your avatar",
|
||||
description: t("unlockedAvatarZoom.description"),
|
||||
authors: [Devs.nakoyasha],
|
||||
settings,
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
import { migratePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import { CompactPronounsChatComponentWrapper, PronounsChatComponentWrapper } from "./PronounsChatComponent";
|
||||
import { settings } from "./settings";
|
||||
|
|
@ -27,7 +28,7 @@ migratePluginSettings("UserMessagesPronouns", "PronounDB");
|
|||
export default definePlugin({
|
||||
name: "UserMessagesPronouns",
|
||||
authors: [Devs.Tyman, Devs.TheKodeToad, Devs.Ven, Devs.Elvyra],
|
||||
description: "Adds pronouns to chat user messages",
|
||||
description: t("userMessagesPronouns.description"),
|
||||
settings,
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export const enum PronounsFormat {
|
||||
Lowercase = "LOWERCASE",
|
||||
|
|
@ -27,22 +28,22 @@ export const enum PronounsFormat {
|
|||
export const settings = definePluginSettings({
|
||||
pronounsFormat: {
|
||||
type: OptionType.SELECT,
|
||||
description: "The format for pronouns to appear in chat",
|
||||
description: t("userMessagesPronouns.settings.pronounsFormat"),
|
||||
options: [
|
||||
{
|
||||
label: "Lowercase",
|
||||
label: t("userMessagesPronouns.settings.pronounsFormatOptions.lowercase"),
|
||||
value: PronounsFormat.Lowercase,
|
||||
default: true
|
||||
},
|
||||
{
|
||||
label: "Capitalized",
|
||||
label: t("userMessagesPronouns.settings.pronounsFormatOptions.capitalized"),
|
||||
value: PronounsFormat.Capitalized
|
||||
}
|
||||
]
|
||||
},
|
||||
showSelf: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Enable or disable showing pronouns for yourself",
|
||||
description: t("userMessagesPronouns.settings.showSelf"),
|
||||
default: true
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { Channel, Message, User } from "@vencord/discord-types";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { FluxDispatcher, RestAPI } from "@webpack/common";
|
||||
|
|
@ -32,7 +33,7 @@ const createMessageRecord = findByCodeLazy(".createFromServer(", ".isBlockedForM
|
|||
|
||||
export default definePlugin({
|
||||
name: "ValidReply",
|
||||
description: 'Fixes "Message could not be loaded" upon hovering over the reply',
|
||||
description: t("validReply.description"),
|
||||
authors: [Devs.newwares],
|
||||
patches: [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ 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 { ProfileBadge } from "@vencord/discord-types";
|
||||
import { Constants, FluxDispatcher, RestAPI, UserProfileStore, UserStore, useState } from "@webpack/common";
|
||||
import { type ComponentType, type ReactNode } from "react";
|
||||
|
|
@ -176,7 +177,7 @@ function MentionWrapper({ data, UserMention, RoleMention, parse, props }: Mentio
|
|||
|
||||
export default definePlugin({
|
||||
name: "ValidUser",
|
||||
description: "Fix mentions for unknown users showing up as '@unknown-user' (hover over a mention to fix it)",
|
||||
description: t("validUser.description"),
|
||||
authors: [Devs.Ven, Devs.Dolfies],
|
||||
tags: ["MentionCacheFix"],
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { ChannelRouter, ChannelStore, SelectedChannelStore } from "@webpack/common";
|
||||
|
||||
const timers = {} as Record<string, {
|
||||
|
|
@ -27,7 +28,7 @@ const timers = {} as Record<string, {
|
|||
|
||||
export default definePlugin({
|
||||
name: "VoiceChatDoubleClick",
|
||||
description: "Join voice chats via double click instead of single click",
|
||||
description: t("vcDoubleClick.description"),
|
||||
authors: [Devs.Ven, Devs.D3SOX, Devs.sadan],
|
||||
patches: [
|
||||
...[
|
||||
|
|
|
|||
|
|
@ -19,10 +19,11 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
multiplier: {
|
||||
description: "Volume Multiplier",
|
||||
description: t("volumeBooster.settings.multiplier"),
|
||||
type: OptionType.SLIDER,
|
||||
markers: makeRange(1, 5, 0.5),
|
||||
default: 2,
|
||||
|
|
@ -50,7 +51,7 @@ interface StreamData {
|
|||
export default definePlugin({
|
||||
name: "VolumeBooster",
|
||||
authors: [Devs.Nuckyz, Devs.sadan],
|
||||
description: "Allows you to set the user and stream volume above the default maximum",
|
||||
description: t("volumeBooster.description"),
|
||||
settings,
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { copyToClipboard } from "@utils/clipboard";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { saveFile } from "@utils/web";
|
||||
import { filters, mapMangledModuleLazy } from "@webpack";
|
||||
import { ComponentDispatch } from "@webpack/common";
|
||||
|
|
@ -52,7 +53,7 @@ const settings = definePluginSettings({
|
|||
// menu handler instead of the web one, which breaks the other menus that aren't enabled
|
||||
addBack: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Add back the Discord context menus for images, links and the chat input bar",
|
||||
description: t("webContextMenus.settings.addBack"),
|
||||
default: hideSetting,
|
||||
restartNeeded: true,
|
||||
// Web slate menu has proper spellcheck suggestions and image context menu is also pretty good,
|
||||
|
|
@ -87,7 +88,7 @@ function fixImageUrl(urlString: string) {
|
|||
|
||||
export default definePlugin({
|
||||
name: "WebContextMenus",
|
||||
description: "Re-adds context menus missing in the web version of Discord: Links & Images (Copy/Open Link/Image), Text Area (Copy, Cut, Paste, SpellCheck)",
|
||||
description: t("webContextMenus.description"),
|
||||
authors: [Devs.Ven],
|
||||
enabledByDefault: true,
|
||||
required: requiredByPlatform,
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { Devs, IS_MAC } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { ComponentDispatch, FluxDispatcher, NavigationRouter, SelectedGuildStore, SettingsRouter } from "@webpack/common";
|
||||
|
||||
|
|
@ -25,7 +26,7 @@ const KeyBinds = findByPropsLazy("JUMP_TO_GUILD", "SERVER_NEXT");
|
|||
|
||||
export default definePlugin({
|
||||
name: "WebKeybinds",
|
||||
description: "Re-adds keybinds missing in the web version of Discord: ctrl+t, ctrl+shift+t, ctrl+tab, ctrl+shift+tab, ctrl+1-9, ctrl+,. Only works fully on Vesktop/Legcord, not inside your browser",
|
||||
description: t("webKeybinds.description"),
|
||||
authors: [Devs.Ven],
|
||||
enabledByDefault: true,
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,12 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
export default definePlugin({
|
||||
name: "WebScreenShareFixes",
|
||||
authors: [Devs.Kaitlyn],
|
||||
description: "Removes 2500kbps bitrate cap on chromium and vesktop clients.",
|
||||
description: t("webScreenShareFixes.description"),
|
||||
enabledByDefault: true,
|
||||
|
||||
patches: [
|
||||
|
|
|
|||
|
|
@ -6,10 +6,11 @@
|
|||
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
// The entire code of this plugin can be found in native.ts
|
||||
export default definePlugin({
|
||||
name: "YoutubeAdblock",
|
||||
description: "Block ads in YouTube embeds and the WatchTogether activity via AdGuard",
|
||||
description: t("youtubeAdblock.description"),
|
||||
authors: [Devs.ImLvna, Devs.Ven],
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue