diff --git a/src/i18n/index.ts b/src/i18n/index.ts index c43f346f..fb2e20f3 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -12,8 +12,6 @@ export const loadI18n = async () => } }); -loadI18n(); - export const setLanguage = async (language: string) => await changeLanguage(language); export const t = i18t.bind(i18next); diff --git a/src/index.ts b/src/index.ts index 49181a5d..ba460737 100644 --- a/src/index.ts +++ b/src/index.ts @@ -193,10 +193,10 @@ const showNeedToRestartDialog = (id: string) => { ], title: t('main.dialog.need-to-restart.title'), message: t('main.dialog.need-to-restart.message', { - pluginName: plugin?.name ?? id, + pluginName: plugin?.name?.() ?? id, }), detail: t('main.dialog.need-to-restart.detail', { - pluginName: plugin?.name ?? id, + pluginName: plugin?.name?.() ?? id, }), defaultId: 0, cancelId: 1, diff --git a/src/menu.ts b/src/menu.ts index 42cf3d0f..e7193089 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -66,7 +66,7 @@ export const mainMenuTemplate = async ( const menuResult = Object.entries(getAllMenuTemplate()).map( ([id, template]) => { - const pluginLabel = allPlugins[id]?.name ?? id; + const pluginLabel = allPlugins[id]?.name?.() ?? id; if (!config.plugins.isEnabled(id)) { return [ @@ -92,8 +92,8 @@ export const mainMenuTemplate = async ( const availablePlugins = Object.keys(allPlugins); const pluginMenus = availablePlugins .sort((a, b) => { - const aPluginLabel = allPlugins[a]?.name ?? a; - const bPluginLabel = allPlugins[b]?.name ?? b; + const aPluginLabel = allPlugins[a]?.name?.() ?? a; + const bPluginLabel = allPlugins[b]?.name?.() ?? b; return aPluginLabel.localeCompare(bPluginLabel); }) @@ -101,7 +101,7 @@ export const mainMenuTemplate = async ( const predefinedTemplate = menuResult.find((it) => it[0] === id); if (predefinedTemplate) return predefinedTemplate[1]; - const pluginLabel = allPlugins[id]?.name ?? id; + const pluginLabel = allPlugins[id]?.name?.() ?? id; return pluginEnabledMenu(id, pluginLabel, true, innerRefreshMenu); }); diff --git a/src/plugins/adblocker/index.ts b/src/plugins/adblocker/index.ts index 19d15437..e7d6a48a 100644 --- a/src/plugins/adblocker/index.ts +++ b/src/plugins/adblocker/index.ts @@ -43,8 +43,8 @@ interface AdblockerConfig { } export default createPlugin({ - name: t('plugins.adblocker.name'), - description: t('plugins.adblocker.description'), + name: () => t('plugins.adblocker.name'), + description: () => t('plugins.adblocker.description'), restartNeeded: false, config: { enabled: true, diff --git a/src/plugins/album-color-theme/index.ts b/src/plugins/album-color-theme/index.ts index 7d7648ec..5af646a1 100644 --- a/src/plugins/album-color-theme/index.ts +++ b/src/plugins/album-color-theme/index.ts @@ -8,8 +8,8 @@ import { t } from '@/i18n'; import type { VideoDataChanged } from '@/types/video-data-changed'; export default createPlugin({ - name: t('plugins.album-color-theme.name'), - description: t('plugins.album-color-theme.description'), + name: () => t('plugins.album-color-theme.name'), + description: () => t('plugins.album-color-theme.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/ambient-mode/index.ts b/src/plugins/ambient-mode/index.ts index 06c8c813..a4b941ac 100644 --- a/src/plugins/ambient-mode/index.ts +++ b/src/plugins/ambient-mode/index.ts @@ -25,8 +25,8 @@ const defaultConfig: AmbientModePluginConfig = { }; export default createPlugin({ - name: t('plugins.ambient-mode.name'), - description: t('plugins.ambient-mode.description'), + name: () => t('plugins.ambient-mode.name'), + description: () => t('plugins.ambient-mode.description'), restartNeeded: false, config: defaultConfig, stylesheets: [style], diff --git a/src/plugins/audio-compressor.ts b/src/plugins/audio-compressor.ts index 4b7f4cbd..9a3e9b71 100644 --- a/src/plugins/audio-compressor.ts +++ b/src/plugins/audio-compressor.ts @@ -2,8 +2,8 @@ import { createPlugin } from '@/utils'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.audio-compressor.name'), - description: t('plugins.audio-compressor.description'), + name: () => t('plugins.audio-compressor.name'), + description: () => t('plugins.audio-compressor.description'), renderer() { document.addEventListener( diff --git a/src/plugins/blur-nav-bar/index.ts b/src/plugins/blur-nav-bar/index.ts index aee4f456..ea2c361d 100644 --- a/src/plugins/blur-nav-bar/index.ts +++ b/src/plugins/blur-nav-bar/index.ts @@ -3,8 +3,8 @@ import style from './style.css?inline'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.blur-nav-bar.name'), - description: t('plugins.blur-nav-bar.description'), + name: () => t('plugins.blur-nav-bar.name'), + description: () => t('plugins.blur-nav-bar.description'), restartNeeded: true, stylesheets: [style], renderer() {}, diff --git a/src/plugins/bypass-age-restrictions/index.ts b/src/plugins/bypass-age-restrictions/index.ts index 6ef90d21..58ecf12d 100644 --- a/src/plugins/bypass-age-restrictions/index.ts +++ b/src/plugins/bypass-age-restrictions/index.ts @@ -2,8 +2,8 @@ import { createPlugin } from '@/utils'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.bypass-age-restrictions.name'), - description: t('plugins.bypass-age-restrictions.description'), + name: () => t('plugins.bypass-age-restrictions.name'), + description: () => t('plugins.bypass-age-restrictions.description'), restartNeeded: true, // See https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass#userscript diff --git a/src/plugins/captions-selector/index.ts b/src/plugins/captions-selector/index.ts index 3055f140..b7ef9c58 100644 --- a/src/plugins/captions-selector/index.ts +++ b/src/plugins/captions-selector/index.ts @@ -19,8 +19,8 @@ export default createPlugin< }, CaptionsSelectorConfig >({ - name: t('plugins.captions-selector.name'), - description: t('plugins.captions-selector.description'), + name: () => t('plugins.captions-selector.name'), + description: () => t('plugins.captions-selector.description'), config: { enabled: false, disableCaptions: false, diff --git a/src/plugins/compact-sidebar/index.ts b/src/plugins/compact-sidebar/index.ts index db96c7bb..5d54b95f 100644 --- a/src/plugins/compact-sidebar/index.ts +++ b/src/plugins/compact-sidebar/index.ts @@ -9,8 +9,8 @@ export default createPlugin< isCompactSidebarDisabled: () => boolean; } >({ - name: t('plugins.compact-sidebar.name'), - description: t('plugins.compact-sidebar.description'), + name: () => t('plugins.compact-sidebar.name'), + description: () => t('plugins.compact-sidebar.description'), restartNeeded: false, config: { enabled: false, diff --git a/src/plugins/crossfade/index.ts b/src/plugins/crossfade/index.ts index 25cb4cc4..9c3aaa8a 100644 --- a/src/plugins/crossfade/index.ts +++ b/src/plugins/crossfade/index.ts @@ -30,8 +30,8 @@ export default createPlugin< }, CrossfadePluginConfig >({ - name: t('plugins.crossfade.name'), - description: t('plugins.crossfade.description'), + name: () => t('plugins.crossfade.name'), + description: () => t('plugins.crossfade.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/disable-autoplay/index.ts b/src/plugins/disable-autoplay/index.ts index 6a6b5aae..1b827949 100644 --- a/src/plugins/disable-autoplay/index.ts +++ b/src/plugins/disable-autoplay/index.ts @@ -21,8 +21,8 @@ export default createPlugin< }, DisableAutoPlayPluginConfig >({ - name: t('plugins.disable-autoplay.name'), - description: t('plugins.disable-autoplay.description'), + name: () => t('plugins.disable-autoplay.name'), + description: () => t('plugins.disable-autoplay.description'), restartNeeded: false, config: { enabled: false, diff --git a/src/plugins/discord/index.ts b/src/plugins/discord/index.ts index 7b066170..6fefbdc9 100644 --- a/src/plugins/discord/index.ts +++ b/src/plugins/discord/index.ts @@ -36,8 +36,8 @@ export type DiscordPluginConfig = { }; export default createPlugin({ - name: t('plugins.discord.name'), - description: t('plugins.discord.description'), + name: () => t('plugins.discord.name'), + description: () => t('plugins.discord.description'), restartNeeded: false, config: { enabled: false, diff --git a/src/plugins/downloader/index.ts b/src/plugins/downloader/index.ts index 50c0d37c..b2cf1108 100644 --- a/src/plugins/downloader/index.ts +++ b/src/plugins/downloader/index.ts @@ -26,8 +26,8 @@ export const defaultConfig: DownloaderPluginConfig = { }; export default createPlugin({ - name: t('plugins.downloader.name'), - description: t('plugins.downloader.description'), + name: () => t('plugins.downloader.name'), + description: () => t('plugins.downloader.description'), restartNeeded: true, config: defaultConfig, stylesheets: [style], diff --git a/src/plugins/exponential-volume/index.ts b/src/plugins/exponential-volume/index.ts index ec0cf85d..86782984 100644 --- a/src/plugins/exponential-volume/index.ts +++ b/src/plugins/exponential-volume/index.ts @@ -2,8 +2,8 @@ import { createPlugin } from '@/utils'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.exponential-volume.name'), - description: t('plugins.exponential-volume.description'), + name: () => t('plugins.exponential-volume.name'), + description: () => t('plugins.exponential-volume.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/in-app-menu/index.ts b/src/plugins/in-app-menu/index.ts index 47a16494..1277332a 100644 --- a/src/plugins/in-app-menu/index.ts +++ b/src/plugins/in-app-menu/index.ts @@ -10,8 +10,8 @@ export interface InAppMenuConfig { hideDOMWindowControls: boolean; } export default createPlugin({ - name: t('plugins.in-app-menu.name'), - description: t('plugins.in-app-menu.description'), + name: () => t('plugins.in-app-menu.name'), + description: () => t('plugins.in-app-menu.description'), restartNeeded: true, config: { enabled: diff --git a/src/plugins/last-fm/index.ts b/src/plugins/last-fm/index.ts index 4072b955..7d9ab83d 100644 --- a/src/plugins/last-fm/index.ts +++ b/src/plugins/last-fm/index.ts @@ -34,8 +34,8 @@ export interface LastFmPluginConfig { } export default createPlugin({ - name: t('plugins.last-fm.name'), - description: t('plugins.last-fm.description'), + name: () => t('plugins.last-fm.name'), + description: () => t('plugins.last-fm.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/lumiastream/index.ts b/src/plugins/lumiastream/index.ts index 12af93ce..2181646d 100644 --- a/src/plugins/lumiastream/index.ts +++ b/src/plugins/lumiastream/index.ts @@ -24,8 +24,8 @@ type LumiaData = { }; export default createPlugin({ - name: t('plugins.lumiastream.name'), - description: t('plugins.lumiastream.description'), + name: () => t('plugins.lumiastream.name'), + description: () => t('plugins.lumiastream.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/lyrics-genius/index.ts b/src/plugins/lyrics-genius/index.ts index ebf16e14..af9190c4 100644 --- a/src/plugins/lyrics-genius/index.ts +++ b/src/plugins/lyrics-genius/index.ts @@ -10,8 +10,8 @@ export type LyricsGeniusPluginConfig = { }; export default createPlugin({ - name: t('plugins.lyrics-genius.name'), - description: t('plugins.lyrics-genius.description'), + name: () => t('plugins.lyrics-genius.name'), + description: () => t('plugins.lyrics-genius.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/navigation/index.ts b/src/plugins/navigation/index.ts index de4227cb..ed339a8e 100644 --- a/src/plugins/navigation/index.ts +++ b/src/plugins/navigation/index.ts @@ -8,8 +8,8 @@ import forwardHTML from './templates/forward.html?raw'; import backHTML from './templates/back.html?raw'; export default createPlugin({ - name: t('plugins.navigation.name'), - description: t('plugins.navigation.description'), + name: () => t('plugins.navigation.name'), + description: () => t('plugins.navigation.description'), restartNeeded: true, config: { enabled: true, diff --git a/src/plugins/no-google-login/index.ts b/src/plugins/no-google-login/index.ts index 520388d4..ab7cca1f 100644 --- a/src/plugins/no-google-login/index.ts +++ b/src/plugins/no-google-login/index.ts @@ -3,8 +3,8 @@ import { createPlugin } from '@/utils'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.no-google-login.name'), - description: t('plugins.no-google-login.description'), + name: () => t('plugins.no-google-login.name'), + description: () => t('plugins.no-google-login.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/notifications/index.ts b/src/plugins/notifications/index.ts index 58519ef3..a862f631 100644 --- a/src/plugins/notifications/index.ts +++ b/src/plugins/notifications/index.ts @@ -36,8 +36,8 @@ export const defaultConfig: NotificationsPluginConfig = { }; export default createPlugin({ - name: t('plugins.notifications.name'), - description: t('plugins.notifications.description'), + name: () => t('plugins.notifications.name'), + description: () => t('plugins.notifications.description'), restartNeeded: true, config: defaultConfig, menu: onMenu, diff --git a/src/plugins/picture-in-picture/index.ts b/src/plugins/picture-in-picture/index.ts index 08a7a112..92e0add8 100644 --- a/src/plugins/picture-in-picture/index.ts +++ b/src/plugins/picture-in-picture/index.ts @@ -19,8 +19,8 @@ export type PictureInPicturePluginConfig = { }; export default createPlugin({ - name: t('plugins.picture-in-picture.name'), - description: t('plugins.picture-in-picture.description'), + name: () => t('plugins.picture-in-picture.name'), + description: () => t('plugins.picture-in-picture.description'), restartNeeded: true, config: { 'enabled': false, diff --git a/src/plugins/playback-speed/index.ts b/src/plugins/playback-speed/index.ts index b3c26f06..5aa61d77 100644 --- a/src/plugins/playback-speed/index.ts +++ b/src/plugins/playback-speed/index.ts @@ -3,8 +3,8 @@ import { onPlayerApiReady, onUnload } from './renderer'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.playback-speed.name'), - description: t('plugins.playback-speed.description'), + name: () => t('plugins.playback-speed.name'), + description: () => t('plugins.playback-speed.description'), restartNeeded: false, config: { enabled: false, diff --git a/src/plugins/precise-volume/index.ts b/src/plugins/precise-volume/index.ts index edf5fa71..e7d85882 100644 --- a/src/plugins/precise-volume/index.ts +++ b/src/plugins/precise-volume/index.ts @@ -30,8 +30,8 @@ export type PreciseVolumePluginConfig = { }; export default createPlugin({ - name: t('plugins.precise-volume.name'), - description: t('plugins.precise-volume.description'), + name: () => t('plugins.precise-volume.name'), + description: () => t('plugins.precise-volume.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/quality-changer/index.ts b/src/plugins/quality-changer/index.ts index 12e19cde..7d2556e9 100644 --- a/src/plugins/quality-changer/index.ts +++ b/src/plugins/quality-changer/index.ts @@ -9,8 +9,8 @@ import { t } from '@/i18n'; import type { YoutubePlayer } from '@/types/youtube-player'; export default createPlugin({ - name: t('plugins.quality-changer.name'), - description: t('plugins.quality-changer.description'), + name: () => t('plugins.quality-changer.name'), + description: () => t('plugins.quality-changer.description'), restartNeeded: false, config: { enabled: false, diff --git a/src/plugins/shortcuts/index.ts b/src/plugins/shortcuts/index.ts index ae9d837c..650027db 100644 --- a/src/plugins/shortcuts/index.ts +++ b/src/plugins/shortcuts/index.ts @@ -16,8 +16,8 @@ export type ShortcutsPluginConfig = { }; export default createPlugin({ - name: t('plugins.shortcuts.name'), - description: t('plugins.shortcuts.description'), + name: () => t('plugins.shortcuts.name'), + description: () => t('plugins.shortcuts.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/skip-silences/index.ts b/src/plugins/skip-silences/index.ts index df2d0e73..5e6c0f90 100644 --- a/src/plugins/skip-silences/index.ts +++ b/src/plugins/skip-silences/index.ts @@ -8,8 +8,8 @@ export type SkipSilencesPluginConfig = { }; export default createPlugin({ - name: t('plugins.skip-silences.name'), - description: t('plugins.skip-silences.description'), + name: () => t('plugins.skip-silences.name'), + description: () => t('plugins.skip-silences.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/sponsorblock/index.ts b/src/plugins/sponsorblock/index.ts index 50574613..0cc1dad8 100644 --- a/src/plugins/sponsorblock/index.ts +++ b/src/plugins/sponsorblock/index.ts @@ -25,8 +25,8 @@ export type SponsorBlockPluginConfig = { let currentSegments: Segment[] = []; export default createPlugin({ - name: t('plugins.sponsorblock.name'), - description: t('plugins.sponsorblock.description'), + name: () => t('plugins.sponsorblock.name'), + description: () => t('plugins.sponsorblock.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/taskbar-mediacontrol/index.ts b/src/plugins/taskbar-mediacontrol/index.ts index 2d39b90e..e83d935a 100644 --- a/src/plugins/taskbar-mediacontrol/index.ts +++ b/src/plugins/taskbar-mediacontrol/index.ts @@ -12,8 +12,8 @@ import { mediaIcons } from '@/types/media-icons'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.taskbar-mediacontrol.name'), - description: t('plugins.taskbar-mediacontrol.description'), + name: () => t('plugins.taskbar-mediacontrol.name'), + description: () => t('plugins.taskbar-mediacontrol.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/touchbar/index.ts b/src/plugins/touchbar/index.ts index 435bf6ab..ac3e1f48 100644 --- a/src/plugins/touchbar/index.ts +++ b/src/plugins/touchbar/index.ts @@ -6,8 +6,8 @@ import registerCallback from '@/providers/song-info'; import { t } from '@/i18n'; export default createPlugin({ - name: t('plugins.touchbar.name'), - description: t('plugins.touchbar.description'), + name: () => t('plugins.touchbar.name'), + description: () => t('plugins.touchbar.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/tuna-obs/index.ts b/src/plugins/tuna-obs/index.ts index 16aabc8a..5f5f2114 100644 --- a/src/plugins/tuna-obs/index.ts +++ b/src/plugins/tuna-obs/index.ts @@ -19,8 +19,8 @@ interface Data { } export default createPlugin({ - name: t('plugins.tuna-obs.name'), - description: t('plugins.tuna-obs.description'), + name: () => t('plugins.tuna-obs.name'), + description: () => t('plugins.tuna-obs.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/video-toggle/index.ts b/src/plugins/video-toggle/index.ts index bd7779af..203f8ef6 100644 --- a/src/plugins/video-toggle/index.ts +++ b/src/plugins/video-toggle/index.ts @@ -18,8 +18,8 @@ export type VideoTogglePluginConfig = { }; export default createPlugin({ - name: t('plugins.video-toggle.name'), - description: t('plugins.video-toggle.description'), + name: () => t('plugins.video-toggle.name'), + description: () => t('plugins.video-toggle.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/plugins/visualizer/index.ts b/src/plugins/visualizer/index.ts index 2d1eab7f..d54cdc98 100644 --- a/src/plugins/visualizer/index.ts +++ b/src/plugins/visualizer/index.ts @@ -58,8 +58,8 @@ export type VisualizerPluginConfig = { }; export default createPlugin({ - name: t('plugins.visualizer.name'), - description: t('plugins.visualizer.description'), + name: () => t('plugins.visualizer.name'), + description: () => t('plugins.visualizer.description'), restartNeeded: true, config: { enabled: false, diff --git a/src/types/plugins.ts b/src/types/plugins.ts index 56331728..11d019c5 100644 --- a/src/types/plugins.ts +++ b/src/types/plugins.ts @@ -44,9 +44,9 @@ export interface PluginDef< RendererProperties, Config extends PluginConfig = PluginConfig, > { - name: string; + name: () => string; authors?: Author[]; - description?: string; + description?: () => string; config?: Config; menu?: (