From acbb62649234666d7c94e9cee4af73ac52cb30d3 Mon Sep 17 00:00:00 2001 From: thornbill Date: Sun, 3 Nov 2024 10:54:33 -0500 Subject: [PATCH] Backport pull request #6276 from jellyfin-web/release-10.10.z Update plugin category labels Original-merge: 9ff9f05a262ac0426a6baae18ed8b56e97513a26 Merged-by: thornbill Backported-by: Joshua M. Boniface --- .../plugins/constants/categoryLabels.ts | 15 ++++++++ .../dashboard/plugins/available/index.js | 35 +++++++++---------- src/strings/en-us.json | 2 ++ 3 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 src/apps/dashboard/features/plugins/constants/categoryLabels.ts diff --git a/src/apps/dashboard/features/plugins/constants/categoryLabels.ts b/src/apps/dashboard/features/plugins/constants/categoryLabels.ts new file mode 100644 index 00000000000..52be2cef751 --- /dev/null +++ b/src/apps/dashboard/features/plugins/constants/categoryLabels.ts @@ -0,0 +1,15 @@ +/** A mapping of category names used by the plugin repository to translation keys. */ +export const CATEGORY_LABELS = { + Administration: 'HeaderAdmin', + Anime: 'Anime', + Authentication: 'LabelAuthProvider', // Legacy + Books: 'Books', + Channel: 'Channels', // Unused? + General: 'General', + LiveTV: 'LiveTV', + Metadata: 'LabelMetadata', // Legacy + MoviesAndShows: 'MoviesAndShows', + Music: 'TabMusic', + Subtitles: 'Subtitles', + Other: 'Other' +}; diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 34d93ff6e32..f8b05197b55 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -1,12 +1,14 @@ import escapeHTML from 'escape-html'; -import loading from '../../../../components/loading/loading'; -import globalize from '../../../../lib/globalize'; -import '../../../../components/cardbuilder/card.scss'; -import '../../../../elements/emby-button/emby-button'; -import '../../../../elements/emby-checkbox/emby-checkbox'; -import '../../../../elements/emby-select/emby-select'; -import { getDefaultBackgroundClass } from '../../../../components/cardbuilder/cardBuilderUtils'; +import { CATEGORY_LABELS } from 'apps/dashboard/features/plugins/constants/categoryLabels'; +import { getDefaultBackgroundClass } from 'components/cardbuilder/cardBuilderUtils'; +import loading from 'components/loading/loading'; +import globalize from 'lib/globalize'; + +import 'components/cardbuilder/card.scss'; +import 'elements/emby-button/emby-button'; +import 'elements/emby-checkbox/emby-checkbox'; +import 'elements/emby-select/emby-select'; function reloadList(page) { loading.show(); @@ -23,19 +25,14 @@ function reloadList(page) { } function getHeaderText(category) { - category = category.replace(' ', ''); - // TODO: Replace with switch - if (category === 'Channel') { - category = 'Channels'; - } else if (category === 'Theme') { - category = 'Themes'; - } else if (category === 'LiveTV') { - category = 'LiveTV'; - } else if (category === 'ScreenSaver') { - category = 'HeaderScreenSavers'; + const categoryKey = category.replaceAll(' ', ''); + + if (CATEGORY_LABELS[categoryKey]) { + return globalize.translate(CATEGORY_LABELS[categoryKey]); } - return globalize.translate(category); + console.warn('[AvailablePlugins] unmapped category label', category); + return category; } function populateList(options) { @@ -43,7 +40,7 @@ function populateList(options) { const installedPlugins = options.installedPlugins; availablePlugins.forEach(function (plugin, index, array) { - plugin.category = plugin.category || 'General'; + plugin.category = plugin.category || 'Other'; plugin.categoryDisplayName = getHeaderText(plugin.category); array[index] = plugin; }); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 096b71c8fc1..e6a73a0d606 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -54,6 +54,7 @@ "AlwaysRemuxFlacAudioFilesHelp": "If you have files that your browser rejects to play or where it inaccurately calculates timestamps, enable this as a workaround.", "AlwaysRemuxMp3AudioFilesHelp": "If you have files that your browser inaccurately calculates timestamps, enable this as a workaround.", "AndOtherArtists": "{0} and {1} other artists.", + "Anime": "Anime", "AnyLanguage": "Any Language", "Anytime": "Anytime", "ApiKeysCaption": "List of the currently enabled API keys", @@ -1181,6 +1182,7 @@ "Movie": "Movie", "MovieLibraryHelp": "Review the {0}movie naming guide{1}.", "Movies": "Movies", + "MoviesAndShows": "Movies and Shows", "MusicAlbum": "Music Album", "MusicArtist": "Music Artist", "MusicLibraryHelp": "Review the {0}music naming guide{1}.",