From 2cfcfc90beab24e52d441cc5f2eaa9f07e053e2d Mon Sep 17 00:00:00 2001 From: damecon Date: Tue, 13 Jan 2026 21:57:54 -0500 Subject: [PATCH 01/17] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 4b34a6456..beb8f5ace 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -862,7 +862,7 @@ "LabelPreferredSubtitleLanguage": "선호하는 자막 언어", "LabelPostProcessorArgumentsHelp": "{path}에 녹화 파일을 저장합니다.", "LabelOriginalTitle": "원본 제목", - "LabelPersonRole": "규칙", + "LabelPersonRole": "역할", "LabelMovieCategories": "영화 카테고리", "LabelOptionalNetworkPath": "공유 네트워크 폴더", "LabelNewsCategories": "뉴스 카테고리", From db87ce61963861d24cf71aa6379556f4cda24858 Mon Sep 17 00:00:00 2001 From: Berto Date: Wed, 14 Jan 2026 06:47:18 -0500 Subject: [PATCH 02/17] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 4fbed8516..b440446af 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -2041,5 +2041,7 @@ "ManageRepositories": "Pārvaldīt repozitorijus", "ViewAllPlugins": "Skatīt visus spraudņus", "ButtonAddTunerDevice": "Pievienot uztvērēja ierīci", - "ButtonAddProvider": "Pievienot pakalpojuma sniedzēju" + "ButtonAddProvider": "Pievienot pakalpojuma sniedzēju", + "LabelSlideshowInterval": "Fotoattēlu slaidrādes intervāls", + "LabelSlideshowIntervalHelp": "Katra fotoattēla laiks sekundēs tiek parādīts slaidšovā." } From be8c0de3ab9c1677e3d4318b7fa5a9def8530624 Mon Sep 17 00:00:00 2001 From: tromoSM Date: Wed, 14 Jan 2026 20:04:42 -0500 Subject: [PATCH 03/17] Translated using Weblate (English (United States)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_US/ --- src/strings/en_US.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/en_US.json b/src/strings/en_US.json index da6b1c1ab..63c4c9a4f 100644 --- a/src/strings/en_US.json +++ b/src/strings/en_US.json @@ -165,5 +165,8 @@ "Channels": "Channels", "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", "SelectAudioNormalizationHelp": "Track gain: Adjusts the volume of each track so they play back at the same loudness.\nAlbum gain: Adjusts the volume of all tracks in an album as a group, preserving the album’s original dynamic range. Switching between “Off” and other options requires restarting the current playback.", - "ClearQueue": "Clear queue" + "ClearQueue": "Clear queue", + "ClientSettings": "Client side settings", + "Collections": "Collections", + "Colorist": "Colorist" } From 2edc26da022ceefa5f558feab3a8218936c86a15 Mon Sep 17 00:00:00 2001 From: tromoSM Date: Wed, 14 Jan 2026 20:08:42 -0500 Subject: [PATCH 04/17] Translated using Weblate (English (United States)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_US/ --- src/strings/en_US.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/en_US.json b/src/strings/en_US.json index 63c4c9a4f..75b434b56 100644 --- a/src/strings/en_US.json +++ b/src/strings/en_US.json @@ -168,5 +168,15 @@ "ClearQueue": "Clear queue", "ClientSettings": "Client side settings", "Collections": "Collections", - "Colorist": "Colorist" + "Colorist": "Colorist", + "ColorPrimaries": "Primary colors", + "ColorSpace": "Color space", + "ColorTransfer": "Transfer colors", + "CommunityRating": "Community rating", + "Composer": "Composer", + "Conductor": "Conductor", + "ConfigureDateAdded": "Setting up how metadata for 'Date added' is determined in the Dashboard >Libraries>Display", + "ConfirmDeleteImage": "Do you want to delete this image?", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and the media library. Are you sure you wish to continue?", + "ConfirmDeleteSeries": "Deleting this series will delete All{0} episodes from both the file system and your media library. Are you sure you wish to continue?" } From b50086138f08475f108d96ecc0d0d4729f09c622 Mon Sep 17 00:00:00 2001 From: theguymadmax <171496228+theguymadmax@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:40:26 -0500 Subject: [PATCH 05/17] Backport pull request #7470 from jellyfin-web/release-10.11.z Enable AlphaPicker for non-random sorts in experimental layout Original-merge: 014af0ebe904a824ca1d34689a25f6a5b89808c4 Merged-by: thornbill Backported-by: thornbill --- src/apps/experimental/components/library/ItemsView.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/apps/experimental/components/library/ItemsView.tsx b/src/apps/experimental/components/library/ItemsView.tsx index 672f6c750..a38537625 100644 --- a/src/apps/experimental/components/library/ItemsView.tsx +++ b/src/apps/experimental/components/library/ItemsView.tsx @@ -222,9 +222,7 @@ const ItemsView: FC = ({ const hasFilters = Object.values(libraryViewSettings.Filters ?? {}).some( (filter) => !!filter ); - const hasSortName = libraryViewSettings.SortBy.includes( - ItemSortBy.SortName - ); + const hasSortName = libraryViewSettings.SortBy !== ItemSortBy.Random; const itemsContainerClass = classNames( 'padded-left padded-right padded-right-withalphapicker', From 48a9d6494fee275b46da5333cd4749a927a283c6 Mon Sep 17 00:00:00 2001 From: thornbill Date: Thu, 15 Jan 2026 13:40:27 -0500 Subject: [PATCH 06/17] Backport pull request #7493 from jellyfin-web/release-10.11.z Improve error handling on plugin page Original-merge: fb6250d108d88de0ee11f1bbb13f52acb6a63f30 Merged-by: thornbill Backported-by: thornbill --- src/apps/dashboard/routes/plugins/index.tsx | 304 ++++++++++---------- 1 file changed, 153 insertions(+), 151 deletions(-) diff --git a/src/apps/dashboard/routes/plugins/index.tsx b/src/apps/dashboard/routes/plugins/index.tsx index b593f2c84..c6fea6a78 100644 --- a/src/apps/dashboard/routes/plugins/index.tsx +++ b/src/apps/dashboard/routes/plugins/index.tsx @@ -98,164 +98,166 @@ export const Component = () => { className='type-interior mainAnimatedPage' > - {isError ? ( - + - {globalize.translate('PluginsLoadError')} - - ) : ( - - + {globalize.translate('TabPlugins')} + + + + + - - {globalize.translate('TabPlugins')} - - - - - - - - - - - - setStatus(PluginStatusOption.All)} - label={globalize.translate('All')} - /> - - setStatus(PluginStatusOption.Available)} - label={globalize.translate('LabelAvailable')} - /> - - setStatus(PluginStatusOption.Installed)} - label={globalize.translate('LabelInstalled')} - /> - - - - setCategory('')} - label={globalize.translate('All')} - /> - - {Object.values(PluginCategory).map(c => ( - setCategory(c.toLowerCase())} - label={globalize.translate(CATEGORY_LABELS[c as PluginCategory])} - /> - ))} - - - - - - {filteredPlugins.length > 0 ? ( - // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs - // eslint-disable-next-line @typescript-eslint/no-deprecated - - {filteredPlugins.map(plugin => ( - // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs - // eslint-disable-next-line @typescript-eslint/no-deprecated - - - - ))} - - ) : ( - - )} + - )} + + {isError ? ( + + {globalize.translate('PluginsLoadError')} + + ) : ( + <> + + + setStatus(PluginStatusOption.All)} + label={globalize.translate('All')} + /> + + setStatus(PluginStatusOption.Available)} + label={globalize.translate('LabelAvailable')} + /> + + setStatus(PluginStatusOption.Installed)} + label={globalize.translate('LabelInstalled')} + /> + + + + setCategory('')} + label={globalize.translate('All')} + /> + + {Object.values(PluginCategory).map(c => ( + setCategory(c.toLowerCase())} + label={globalize.translate(CATEGORY_LABELS[c as PluginCategory])} + /> + ))} + + + + + + {filteredPlugins.length > 0 ? ( + // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs + // eslint-disable-next-line @typescript-eslint/no-deprecated + + {filteredPlugins.map(plugin => ( + // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs + // eslint-disable-next-line @typescript-eslint/no-deprecated + + + + ))} + + ) : ( + + )} + + + )} + ); From 5ec2eff99a708454d57b17219d14dcd3cac5d17c Mon Sep 17 00:00:00 2001 From: thornbill Date: Thu, 15 Jan 2026 13:40:29 -0500 Subject: [PATCH 07/17] Backport pull request #7495 from jellyfin-web/release-10.11.z Add Vega OS detection Original-merge: 9b80917cd1dc14c792ada2289ee63d0911734a92 Merged-by: thornbill Backported-by: thornbill --- src/assets/img/devices/firetv.svg | 1 + src/components/apphost.js | 1 + src/scripts/browser.d.ts | 1 + src/scripts/browser.js | 17 ++++++++++++----- src/scripts/browser.test.ts | 14 ++++++++++++-- src/utils/image.ts | 2 ++ 6 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 src/assets/img/devices/firetv.svg diff --git a/src/assets/img/devices/firetv.svg b/src/assets/img/devices/firetv.svg new file mode 100644 index 000000000..b7348a3bd --- /dev/null +++ b/src/assets/img/devices/firetv.svg @@ -0,0 +1 @@ +Amazon Fire TV diff --git a/src/components/apphost.js b/src/components/apphost.js index 8b9436021..a61de37aa 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -14,6 +14,7 @@ const BrowserName = { tizen: 'Samsung Smart TV', web0s: 'LG Smart TV', titanos: 'Titan OS', + vega: 'Vega OS', operaTv: 'Opera TV', xboxOne: 'Xbox One', ps4: 'Sony PS4', diff --git a/src/scripts/browser.d.ts b/src/scripts/browser.d.ts index 3d211441c..fc24fae03 100644 --- a/src/scripts/browser.d.ts +++ b/src/scripts/browser.d.ts @@ -21,6 +21,7 @@ declare namespace browser { export let animate: boolean; export let hisense: boolean; export let tizen: boolean; + export let vega: boolean; export let vidaa: boolean; export let web0s: boolean; export let titanos: boolean; diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 0539cd437..b930f2970 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -235,10 +235,10 @@ const uaMatch = function (ua) { } return { - browser: browser, - version: version, + browser, + version, platform: platformMatch[0] || '', - versionMajor: versionMajor + versionMajor }; }; @@ -283,10 +283,11 @@ export const detectBrowser = (userAgent = navigator.userAgent) => { browser.animate = typeof document !== 'undefined' && document.documentElement.animate != null; browser.hisense = normalizedUA.includes('hisense'); browser.tizen = normalizedUA.includes('tizen') || window.tizen != null; + browser.vega = normalizedUA.includes('kepler'); browser.vidaa = normalizedUA.includes('vidaa'); browser.web0s = isWeb0s(normalizedUA); - browser.tv = browser.ps4 || browser.xboxOne || isTv(normalizedUA); + browser.tv = browser.ps4 || browser.vega || browser.xboxOne || isTv(normalizedUA); browser.operaTv = browser.tv && normalizedUA.includes('opr/'); browser.edgeUwp = (browser.edge || browser.edgeChromium) && (normalizedUA.includes('msapphost') || normalizedUA.includes('webview')); @@ -305,9 +306,15 @@ export const detectBrowser = (userAgent = navigator.userAgent) => { delete browser.chrome; delete browser.safari; } else if (browser.titanos) { - // UserAgent string contains 'Opr' and 'Safari', but we only want 'titanos' to be true + // UserAgent string contains 'Opr' and 'Safari', but we only want 'titanos' to be true delete browser.operaTv; delete browser.safari; + } else if (browser.vega) { + // UserAgent string contains 'Chrome' and 'Safari', but we only want 'vega' to be true + delete browser.chrome; + delete browser.safari; + // UserAgent string contains 'Mobile Chrome', but it is a TV + delete browser.mobile; } else { browser.orsay = normalizedUA.includes('smarthub'); } diff --git a/src/scripts/browser.test.ts b/src/scripts/browser.test.ts index 96b9fe8d5..a86f47361 100644 --- a/src/scripts/browser.test.ts +++ b/src/scripts/browser.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from 'vitest'; import { detectBrowser } from './browser'; describe('Browser', () => { - it('should identify TitanOS devices', async () => { + it('should identify TitanOS devices', () => { // Ref: https://docs.titanos.tv/user-agents-specifications // Philips example let browser = detectBrowser('Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.4147.62 Safari/537.36 OPR/46.0.2207.0 OMI/4.24, TV_NT72690_2025_4K / (Philips, , wired) CE-HTML/1.0 NETTV/4.6.0.8 SignOn/2.0 SmartTvA/5.0.0 TitanOS/3.0 en Ginga'); @@ -20,7 +20,17 @@ describe('Browser', () => { expect(browser.tv).toBe(true); }); - it('should identify Xbox devices', async () => { + it('should identify Vega devices', () => { + // Ref: https://developer.amazon.com/docs/vega/0.21/webview-development-best-practices-tv.html#avoid-relying-on-the-useragent + const browser = detectBrowser('Mozilla/5.0 (Linux; Kepler 1.1; AFTCA002 user/1234; wv) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Chrome/130.0.6723.192 Safari/537.36'); + expect(browser.vega).toBe(true); + expect(browser.chrome).toBeFalsy(); + expect(browser.safari).toBeFalsy(); + expect(browser.mobile).toBeFalsy(); + expect(browser.tv).toBe(true); + }); + + it('should identify Xbox devices', () => { const browser = detectBrowser('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0 WebView2 Xbox'); expect(browser.xboxOne).toBe(true); expect(browser.tv).toBe(true); diff --git a/src/utils/image.ts b/src/utils/image.ts index 60d10798e..cf5edc60f 100644 --- a/src/utils/image.ts +++ b/src/utils/image.ts @@ -33,6 +33,8 @@ function getWebDeviceIcon(browser: string | null | undefined) { return BASE_DEVICE_IMAGE_URL + 'msie.svg'; case 'Titan OS': return BASE_DEVICE_IMAGE_URL + 'titanos.svg'; + case 'Vega OS': + return BASE_DEVICE_IMAGE_URL + 'firetv.svg'; default: return BASE_DEVICE_IMAGE_URL + 'html5.svg'; } From 3fbf7654372a1830c414e54ba3bfdfad1cb26ae1 Mon Sep 17 00:00:00 2001 From: thornbill Date: Thu, 15 Jan 2026 13:40:30 -0500 Subject: [PATCH 08/17] Backport pull request #7496 from jellyfin-web/release-10.11.z Fix missing server id Original-merge: a82ae33aa3619ef86eeac4ef108be67b3ca5529f Merged-by: thornbill Backported-by: thornbill --- src/components/cardbuilder/cardBuilder.js | 3 ++- src/components/router/appRouter.js | 30 +++++++++++------------ 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 6e92acfb2..9b7392d7f 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -578,9 +578,10 @@ function getCardFooterText(item, apiClient, options, footerClass, progressHtml, if (flags.isOuterFooter && item.AlbumArtists?.length) { const artistText = item.AlbumArtists .map(artist => { + artist.ServerId = serverId; artist.Type = BaseItemKind.MusicArtist; artist.IsFolder = true; - return getTextActionButton(artist, null, serverId); + return getTextActionButton(artist); }) .join(' / '); lines.push(artistText); diff --git a/src/components/router/appRouter.js b/src/components/router/appRouter.js index 8d90531fd..46c975aad 100644 --- a/src/components/router/appRouter.js +++ b/src/components/router/appRouter.js @@ -262,15 +262,15 @@ class AppRouter { } if (item === 'recordedtv') { - return '#/livetv?tab=3&serverId=' + options.serverId; + return '#/livetv?tab=3&serverId=' + serverId; } if (item === 'nextup') { - return '#/list?type=nextup&serverId=' + options.serverId; + return '#/list?type=nextup&serverId=' + serverId; } if (item === 'list') { - let urlForList = '#/list?serverId=' + options.serverId + '&type=' + options.itemTypes; + let urlForList = '#/list?serverId=' + serverId + '&type=' + options.itemTypes; if (options.isFavorite) { urlForList += '&IsFavorite=true'; @@ -305,49 +305,49 @@ class AppRouter { if (item === 'livetv') { if (options.section === 'programs') { - return '#/livetv?tab=0&serverId=' + options.serverId; + return '#/livetv?tab=0&serverId=' + serverId; } if (options.section === 'guide') { - return '#/livetv?tab=1&serverId=' + options.serverId; + return '#/livetv?tab=1&serverId=' + serverId; } if (options.section === 'movies') { - return '#/list?type=Programs&IsMovie=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsMovie=true&serverId=' + serverId; } if (options.section === 'shows') { - return '#/list?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; + return '#/list?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + serverId; } if (options.section === 'sports') { - return '#/list?type=Programs&IsSports=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsSports=true&serverId=' + serverId; } if (options.section === 'kids') { - return '#/list?type=Programs&IsKids=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsKids=true&serverId=' + serverId; } if (options.section === 'news') { - return '#/list?type=Programs&IsNews=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsNews=true&serverId=' + serverId; } if (options.section === 'onnow') { - return '#/list?type=Programs&IsAiring=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsAiring=true&serverId=' + serverId; } if (options.section === 'channels') { - return '#/livetv?tab=2&serverId=' + options.serverId; + return '#/livetv?tab=2&serverId=' + serverId; } if (options.section === 'dvrschedule') { - return '#/livetv?tab=4&serverId=' + options.serverId; + return '#/livetv?tab=4&serverId=' + serverId; } if (options.section === 'seriesrecording') { - return '#/livetv?tab=5&serverId=' + options.serverId; + return '#/livetv?tab=5&serverId=' + serverId; } - return '#/livetv?serverId=' + options.serverId; + return '#/livetv?serverId=' + serverId; } if (itemType == 'SeriesTimer') { From 866d510d2b95c7f7822ef0f740fe61bb1d349f37 Mon Sep 17 00:00:00 2001 From: theguymadmax <171496228+theguymadmax@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:25:33 -0500 Subject: [PATCH 09/17] Backport pull request #7498 from jellyfin-web/release-10.11.z Add sort options to movie collections in the experimental layout Original-merge: bf70fb80aaafae5b22589d06118eeec75d39874d Merged-by: thornbill Backported-by: thornbill --- src/apps/experimental/components/library/SortButton.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/apps/experimental/components/library/SortButton.tsx b/src/apps/experimental/components/library/SortButton.tsx index 6e8acf8b9..984265027 100644 --- a/src/apps/experimental/components/library/SortButton.tsx +++ b/src/apps/experimental/components/library/SortButton.tsx @@ -22,6 +22,14 @@ type SortOption = { type SortOptionsMapping = Record; +const collectionMovieOptions: SortOption[] = [ + { label: 'Name', value: ItemSortBy.SortName }, + { label: 'OptionCommunityRating', value: ItemSortBy.CommunityRating }, + { label: 'OptionDateAdded', value: ItemSortBy.DateCreated }, + { label: 'OptionParentalRating', value: ItemSortBy.OfficialRating }, + { label: 'OptionReleaseDate', value: ItemSortBy.PremiereDate } +]; + const movieOrFavoriteOptions = [ { label: 'Name', value: ItemSortBy.SortName }, { label: 'OptionRandom', value: ItemSortBy.Random }, @@ -43,6 +51,7 @@ const photosOrPhotoAlbumsOptions = [ const sortOptionsMapping: SortOptionsMapping = { [LibraryTab.Movies]: movieOrFavoriteOptions, + [LibraryTab.Collections]: collectionMovieOptions, [LibraryTab.Favorites]: movieOrFavoriteOptions, [LibraryTab.Series]: [ { label: 'Name', value: ItemSortBy.SortName }, From 6683c73929f3456065cf16c90f0494bf9890c831 Mon Sep 17 00:00:00 2001 From: thornbill Date: Fri, 16 Jan 2026 13:25:34 -0500 Subject: [PATCH 10/17] Backport pull request #7499 from jellyfin-web/release-10.11.z Add default font family for fallback Original-merge: a2855c785e368f3d405b07b1fce65ee0ecf4dad9 Merged-by: thornbill Backported-by: thornbill --- src/styles/site.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/styles/site.scss b/src/styles/site.scss index 3cb2d1fe7..53501e2b2 100644 --- a/src/styles/site.scss +++ b/src/styles/site.scss @@ -37,6 +37,9 @@ html { @include fullpage; + + /* Set the default font for cases we don't load the brand font */ + font-family: Arial, Helvetica, sans-serif; line-height: 1.35; } From d0270d5f654c863a30279bbbd2085ca218849e6b Mon Sep 17 00:00:00 2001 From: thornbill Date: Fri, 16 Jan 2026 13:25:35 -0500 Subject: [PATCH 11/17] Backport pull request #7500 from jellyfin-web/release-10.11.z Restore back button in experimental layout for apps Original-merge: 6d8c8c0566a7e3cbf96aeb98800b11c6f5c7a332 Merged-by: thornbill Backported-by: thornbill --- .../experimental/components/AppToolbar/index.tsx | 14 ++++++-------- src/components/router/appRouter.js | 6 ++---- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/apps/experimental/components/AppToolbar/index.tsx b/src/apps/experimental/components/AppToolbar/index.tsx index 308b96826..b73b9b5be 100644 --- a/src/apps/experimental/components/AppToolbar/index.tsx +++ b/src/apps/experimental/components/AppToolbar/index.tsx @@ -2,6 +2,7 @@ import Stack from '@mui/material/Stack'; import React, { type FC } from 'react'; import { useLocation } from 'react-router-dom'; +import { appRouter, PUBLIC_PATHS } from 'components/router/appRouter'; import AppToolbar from 'components/toolbar/AppToolbar'; import ServerButton from 'components/toolbar/ServerButton'; @@ -16,14 +17,6 @@ interface AppToolbarProps { onDrawerButtonClick: (event: React.MouseEvent) => void } -const PUBLIC_PATHS = [ - '/addserver', - '/selectserver', - '/login', - '/forgotpassword', - '/forgotpasswordpin' -]; - const ExperimentalAppToolbar: FC = ({ isDrawerAvailable, isDrawerOpen, @@ -34,6 +27,10 @@ const ExperimentalAppToolbar: FC = ({ // The video osd does not show the standard toolbar if (location.pathname === '/video') return null; + // Only show the back button in apps when appropriate + const isBackButtonAvailable = window.NativeShell && appRouter.canGoBack(location.pathname); + + // Check if the current path is a public path to hide user content const isPublicPath = PUBLIC_PATHS.includes(location.pathname); return ( @@ -48,6 +45,7 @@ const ExperimentalAppToolbar: FC = ({ isDrawerAvailable={isDrawerAvailable} isDrawerOpen={isDrawerOpen} onDrawerButtonClick={onDrawerButtonClick} + isBackButtonAvailable={isBackButtonAvailable} isUserMenuAvailable={!isPublicPath} > {!isDrawerAvailable && ( diff --git a/src/components/router/appRouter.js b/src/components/router/appRouter.js index 46c975aad..e9332c994 100644 --- a/src/components/router/appRouter.js +++ b/src/components/router/appRouter.js @@ -17,7 +17,7 @@ import { history } from 'RootAppRouter'; const START_PAGE_PATHS = ['/home', '/login', '/selectserver']; /** Pages that do not require a user to be logged in to view. */ -const PUBLIC_PATHS = [ +export const PUBLIC_PATHS = [ '/addserver', '/selectserver', '/login', @@ -122,9 +122,7 @@ class AppRouter { return this.baseRoute; } - canGoBack() { - const path = history.location.pathname; - + canGoBack(path = history.location.pathname) { if ( !document.querySelector('.dialogContainer') && START_PAGE_PATHS.includes(path) From 563dcfb4374aca971ad5c3167f649fa2710da758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stef=C3=A1n=20=C3=96rvar=20Sigmundsson?= Date: Sat, 17 Jan 2026 13:08:52 -0500 Subject: [PATCH 12/17] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 62ff7a316..704cc9ebf 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -29,10 +29,10 @@ "ButtonArrowLeft": "Vinstri", "ButtonArrowRight": "Hægri", "AllowOnTheFlySubtitleExtractionHelp": "Hægt er að sækja texta sem eru innbyggðir í myndaskrá og senda þá beint til notanda á textaformi til þess að sleppa við að umbreyta (transcode) myndaskránni. Í sumum tölvum getur þetta tekið langan tíma og valdið hikstum á meðan verið er að sækja textan. Afvirkjaðu þetta til þess að láta alla texta vera brennda inn í myndaskránna ef tæki notenda styður ekki að spila skránna beint.", - "AccessRestrictedTryAgainLater": "Aðgangur bannaður í augnablikinu. Vinsamlegast reynið síðar.", + "AccessRestrictedTryAgainLater": "Aðgangur er takmarkaður eins og er. Vinsamlegast reyndu aftur síðar.", "Actor": "Leikari", "Add": "Bæta við", - "AddToCollection": "Bæta í safn", + "AddToCollection": "Bæta við í safn", "MessageBrowsePluginCatalog": "Skoða viðbætur sem eru í boði í viðbóta safninu okkar.", "BurnSubtitlesHelp": "Ákveður hvort þjónninn eigi að brenna textann inn í myndaskránna þegar verið er að umbreyta skrársniðinu. Með því að forðast að brenna inn textann er hægt að minnka álag á þjóninn (tölvuna). Veljið sjálfkrafa til þess að brenna texta byggðan á myndum (VOBSUB, PGS, SUB/IDX, ofl) og ákveðna ASS/SSA texta.", "OptionSaveMetadataAsHidden": "Geyma gagnagögn (metadata) og myndir sem leynilegar skrár", @@ -49,11 +49,11 @@ "OptionTvdbRating": "TheTVDB einkunn", "OptionWakeFromSleep": "Vekja frá svefni", "PackageInstallCancelled": "{0} (útgáfa {1}) hætt við uppsetningu.", - "AddToPlayQueue": "Bæta í spilunarlista", + "AddToPlayQueue": "Bæta við í spilunarbiðlista", "AddedOnValue": "Bætti við {0}", "AirDate": "Frumsýningardagur", "Aired": "Frumsýnt", - "AddToPlaylist": "Bæta á spilunarlista", + "AddToPlaylist": "Bæta við spilunarlista", "AdditionalNotificationServices": "Skoða viðbætur til þess að bæta við fleiri tilkynningarþjónustum.", "Alerts": "Viðvaranir", "Albums": "Plötur", @@ -448,7 +448,7 @@ "MusicArtist": "Tónlistarmaður", "MusicAlbum": "Tónlistaralbúm", "ButtonCast": "Senda út í tæki", - "AddToFavorites": "Bæta við eftirlæti", + "AddToFavorites": "Bæta við í eftirlæti", "ButtonPlayer": "Spilari", "AgeValue": "({0} ára)", "ApiKeysCaption": "Listi yfir núverandi virkum API lyklum", From d8ef1e5137f23d6d26cfe02b2c6dffe2b9d75145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stef=C3=A1n=20=C3=96rvar=20Sigmundsson?= Date: Sat, 17 Jan 2026 13:17:12 -0500 Subject: [PATCH 13/17] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 704cc9ebf..3bea46187 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -53,11 +53,11 @@ "AddedOnValue": "Bætti við {0}", "AirDate": "Frumsýningardagur", "Aired": "Frumsýnt", - "AddToPlaylist": "Bæta við spilunarlista", + "AddToPlaylist": "Bæta við í spilunarlista", "AdditionalNotificationServices": "Skoða viðbætur til þess að bæta við fleiri tilkynningarþjónustum.", "Alerts": "Viðvaranir", "Albums": "Plötur", - "AllChannels": "Allar stöðvar", + "AllChannels": "Allar rásir", "AllEpisodes": "Allir þættir", "AllLanguages": "Öll tungumál", "AllowMediaConversion": "Leyfa umbreytingu á efni", @@ -203,7 +203,7 @@ "AskAdminToCreateLibrary": "Biðjið stjórnanda að gera nýtt gagnasafn.", "MoreFromValue": "Meira frá {0}", "AlwaysPlaySubtitlesHelp": "Allir textar sem samsvara við túngumáli valið verða alltaf hlaðnir óháð hljóðmáls túngumáli.", - "AllowedRemoteAddressesHelp": "Kommu aðskilinn listi yfir ip tölur eða ip-númeramát fyrir net sem mega fjartengjas. Ef þetta er autt eru allar fjartengingar leyfðar.", + "AllowedRemoteAddressesHelp": "Kommuaðskilinn listi yfir IP-staðföng eða IP-/netmátsfærslur fyrir net sem mega tengjast fjarrænt. Ef þetta er autt verða öll fjarræn staðföng leyfð.", "AllowHWTranscodingHelp": "Leyfa viðtæki að umbreyta straumi í rauntíma. Þetta getur fækkað umbreytingum sem þjónninn þarf að framkvæma.", "ValueSpecialEpisodeName": "Sérstaktur - {0}", "Shows": "Þættir", @@ -479,14 +479,14 @@ "ButtonUseQuickConnect": "Nota hraðtengingu", "Digital": "Stafrænt", "DownloadAll": "Sækja allt", - "AllowCollectionManagement": "Leyfa þessum notanda að sýsla með söfn", - "AllowContentWithTagsHelp": "Sýnir einungis efni sem hefur að minnsta kosti eitt af tilgreindum merkjum.", + "AllowCollectionManagement": "Leyfa þessum notanda að stjórna söfnum", + "AllowContentWithTagsHelp": "Sýnir einungis efni sem hefur að minnsta kosti eitt af hinum tilgreindu merkjum.", "AllowFfmpegThrottlingHelp": "Þegar umkóðun eða endurpökkun kemur nógu langt á undan núverandi spilunarstöðu, stoppar ferlið til að nota færri kerfisauðlindir. Þetta er gagnlegast þegar horft er á myndband án þess að spóla oft. Slökktu á þessu ef þú upplifir vandamál við spilun.", "Alternate": "Skipta um", "AlternateDVD": "Skipta um DVD", "AllowSegmentDeletion": "Eyða bútum", "AirPlay": "AirPlay", - "AllowSubtitleManagement": "Leyfa þessum notanda að breyta textum", + "AllowSubtitleManagement": "Leyfa þessum notanda að breyta skjátextum", "AllowSegmentDeletionHelp": "AfspilunEyða gömlum bútum eftir að biðlarinn halar þeim niður. Þetta kemur í veg fyrir að vefþjónninn geymir heila umbreytta skrá á disknum. Slökktu á þessu ef þú upplifar vandamál við spilun.", "LabelThrottleDelaySeconds": "Takmarka eftir", "LabelThrottleDelaySecondsHelp": "Tími í sekúndum þangað til að umkóðarinn verður takmarkaður. Þarf að vera nógu stórt til að viðhalda nægu biðminni í biðlaranum.", From 12e64471f333c93a9b148a837e8b3695bc65e4a4 Mon Sep 17 00:00:00 2001 From: Translation expert Date: Sun, 18 Jan 2026 08:44:03 -0500 Subject: [PATCH 14/17] Translated using Weblate (English (United States)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_US/ --- src/strings/en_US.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en_US.json b/src/strings/en_US.json index 75b434b56..116709c28 100644 --- a/src/strings/en_US.json +++ b/src/strings/en_US.json @@ -164,7 +164,7 @@ "ChannelNumber": "Channel number", "Channels": "Channels", "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", - "SelectAudioNormalizationHelp": "Track gain: Adjusts the volume of each track so they play back at the same loudness.\nAlbum gain: Adjusts the volume of all tracks in an album as a group, preserving the album’s original dynamic range. Switching between “Off” and other options requires restarting the current playback.", + "SelectAudioNormalizationHelp": "Track gain - Adjusts the volume of each track so they playback at the same loudness.\nAlbum gain: Adjusts the volume of all tracks in an album as a group, preserving the album’s original dynamic range. Switching between “Off” and other options requires restarting the current playback.", "ClearQueue": "Clear queue", "ClientSettings": "Client side settings", "Collections": "Collections", From 985bb20fcce69c69af8729357853ffc9372d7f0e Mon Sep 17 00:00:00 2001 From: Dzmitry Zubialevich Date: Mon, 19 Jan 2026 01:53:58 -0500 Subject: [PATCH 15/17] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 90d55366e..04c701654 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -195,7 +195,7 @@ "HeaderAddUser": "Дадаць карыстальніка", "HeaderPinCodeReset": "Скінуць Easy PIN-код", "HeaderPortRanges": "Налады брандмаўэра і проксі", - "HeaderPreferredMetadataLanguage": "Пераважная мова метададзеных", + "HeaderPreferredMetadataLanguage": "Прыярытэтная мова метаданых", "HeaderProfileInformation": "Інфармацыя аб профілі", "HeaderRecordingOptions": "Параметры запісу", "HeaderSelectPath": "Выберыце шлях", @@ -227,7 +227,7 @@ "LabelTrackNumber": "Нумар дарожкі", "LabelTranscodes": "Перакадзіруе", "LabelTriggerType": "Тып трыгера", - "LabelMetadataPath": "Шлях метададзеных", + "LabelMetadataPath": "Шлях да метаданых", "LabelVersionInstalled": "{0} усталяваны", "LabelWeb": "Вэб", "Localization": "Лакалізацыя", @@ -334,8 +334,8 @@ "LabelMaxResumePercentageHelp": "Лічыцца, што загалоўкі прайграныя цалкам, калі яны былі спынены пасля гэтага часу.", "LabelMessageTitle": "Назва паведамлення", "LabelMetadata": "Метаданыя", - "LabelMetadataPathHelp": "Укажыце карыстацкае месцазнаходжанне для спампаваных ілюстрацый і метададзеных.", - "LabelMetadataReaders": "Счытвальнікі метададзеных", + "LabelMetadataPathHelp": "Укажыце ўласнае размяшчэнне для спампаваных ілюстрацый і метаданых.", + "LabelMetadataReaders": "Чытальнікі метаданых", "LabelMetadataSavers": "Захавальнікі метаданых", "LabelOptionalNetworkPath": "Агульная сеткавая тэчка", "LabelParentNumber": "Бацькоўскі нумар", @@ -606,7 +606,7 @@ "HeaderDVR": "DVR", "HeaderEditImages": "Рэдагаваць выявы", "HeaderFrequentlyPlayed": "Прайграныя часта", - "HeaderGuideProviders": "Пастаўшчыкі дадзеных тэлегіда", + "HeaderGuideProviders": "Пастаўшчыкі даных тэлегіда", "HeaderHttpsSettings": "Налады HTTPS", "HeaderIdentification": "Ідэнтыфікацыя", "HeaderIdentificationCriteriaHelp": "Увядзіце хаця б адзін крытэрый ідэнтыфікацыі.", @@ -639,7 +639,7 @@ "HeaderScenes": "Сцэны", "HeaderSeasons": "Сезоны", "HeaderSelectCertificatePath": "Выберыце шлях да сертыфіката", - "HeaderSelectMetadataPath": "Выберыце шлях да метададзеных", + "HeaderSelectMetadataPath": "Выберыце шлях да метаданых", "HeaderSelectMetadataPathHelp": "Выберыце або ўвядзіце шлях, які хочаце выкарыстоўваць для метаданых. Папка павінна быць даступнай для запісу.", "HeaderSelectServerCachePath": "Выберыце шлях да кэша сервера", "HeaderSelectServerCachePathHelp": "Выберыце або ўвядзіце шлях для файлаў кэшу сервера. Папка павінна быць даступнай для запісу.", @@ -715,7 +715,7 @@ "LabelDateTimeLocale": "Рэгіянальная налада даты і часу", "LabelDefaultScreen": "Экран па змаўчанні", "LabelDeinterlaceMethod": "Метад дэінтэрлейсінгу", - "LabelDisplayLanguageHelp": "Праект па перакладзе Jellyfin працягваецца.", + "LabelDisplayLanguageHelp": "Пераклад Jellyfin вядзецца на пастаяннай аснове.", "LabelDisplayMode": "Рэжым адлюстравання", "LabelDisplayName": "Адлюстраванае імя", "LabelDisplaySpecialsWithinSeasons": "Паказаць спецыяльныя прапановы сезонаў, у якіх яны трансліраваліся", @@ -848,7 +848,7 @@ "LabelTitle": "Назва", "LabelTonemappingAlgorithm": "Выберыце алгарытм танальнага адлюстравання для выкарыстання", "LabelTonemappingDesat": "Тонавае адлюстраванне desat", - "ChannelAccessHelp": "Выберыце каналы для агульнага доступу з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе каналы з дапамогай мэнэджара метададзеных.", + "ChannelAccessHelp": "Выберыце каналы для агульнага доступу з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе каналы з дапамогай менеджара метаданых.", "ChannelNumber": "Нумар канала", "ClientSettings": "Налады кліента", "ColorPrimaries": "Асноўныя колеры", @@ -1073,7 +1073,7 @@ "MillisecondsUnit": "мілісекунды", "LabelCustomDeviceDisplayNameHelp": "Увядзіце карыстальніцкае імя для адлюстравання або пакіньце пустым, каб выкарыстоўваць імя, паведамленае прыладай.", "LabelCustomRating": "Індывідуальны рэйтынг", - "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метададзеных, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", + "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метаданых, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", "MixedMoviesShows": "Змешаныя фільмы і серыялы", "LabelDidlMode": "Рэжым DIDL", "Mixer": "Міксер", @@ -1397,7 +1397,7 @@ "MediaInfoDvBlSignalCompatibilityId": "Ідэнтыфікатар сумяшчальнасці сігналу DV bl", "YoutubeBadRequest": "Дрэнны запыт.", "EnableDisplayMirroring": "Дубліраванне адлюстравання", - "FetchingData": "Атрыманне дадатковых дадзеных", + "FetchingData": "Атрыманне дадатковых даных", "LabelSortOrder": "Парадак сартавання", "MarkPlayed": "Адзначыць як прайгранае", "HeaderAlert": "Абвестка", @@ -1480,7 +1480,7 @@ "HeaderDefaultRecordingSettings": "Налады запісу па змаўчанні", "HeaderDeleteDevice": "Выдаліць прыладу", "HeaderDeleteDevices": "Выдаліць усе прылады", - "HeaderEnabledFieldsHelp": "Зніміце галачку з поля, каб заблакіраваць яго і прадухіліць змяненне дадзеных.", + "HeaderEnabledFieldsHelp": "Зніміце птушку з поля, каб зафіксаваць поле і абараніць яго даныя ад змянення.", "HeaderExternalIds": "Знешнія ідэнтыфікатары", "HeaderFeatureAccess": "Доступ да функцый", "HeaderFetcherSettings": "Налады выбаршчыка", @@ -1579,7 +1579,7 @@ "LabelLocalCustomCss": "Карыстальніцкі код CSS для стылю, які прымяняецца толькі да гэтага кліента. Вы можаце адключыць карыстальніцкі CSS-код сервера.", "LabelLocalHttpServerPortNumber": "Нумар лакальнага порта HTTP", "LabelLocalHttpServerPortNumberHelp": "Нумар порта TCP для сервера HTTP.", - "LabelLockItemToPreventChanges": "Заблакаваць гэты элемент, каб прадухіліць будучыя змяненні метададзеных", + "LabelLockItemToPreventChanges": "Заблакіраваць гэты элемент, каб прадухіліць будучыя змяненні метаданых", "LabelLoginDisclaimer": "Адмова ад адказнасці пры ўваходзе", "LabelLoginDisclaimerHelp": "Паведамленне, якое будзе адлюстроўвацца ўнізе старонкі ўваходу.", "LabelLogs": "Журналы", @@ -1590,8 +1590,8 @@ "LabelMaxAudiobookResumeHelp": "Лічыцца, што загалоўкі прайграны цалкам, калі іх спыніць, калі астатняя працягласць меншая за гэта значэнне.", "LabelMaxBackdropsPerItem": "Максімальная колькасць фонаў на элемент", "LabelMaxChromecastBitrate": "Якасць трансляцыі Google Cast", - "LabelMetadataReadersHelp": "Ранжыруйце любімыя лакальныя крыніцы метададзеных у парадку прыярытэту. Будзе прачытаны першы знойдзены файл.", - "LabelMetadataSaversHelp": "Выберыце фарматы файлаў для захавання метададзеных.", + "LabelMetadataReadersHelp": "Ранжыруйце любімыя лакальныя крыніцы метаданых у парадку прыярытэту. Будзе прачытаны першы знойдзены файл.", + "LabelMetadataSaversHelp": "Выберыце фарматы файлаў для захавання метаданых.", "LabelMethod": "Метад", "LabelMinAudiobookResume": "Мінімальнае ўзнаўленне аўдыякнігі ў хвілінах", "LabelMinAudiobookResumeHelp": "Лічыцца, што загалоўкі не прайграваюцца, калі яны былі спынены да гэтага часу.", @@ -2010,7 +2010,7 @@ "LabelRestore": "Аднавіць", "LastActive": "Апошняя актыўнасць", "ButtonLearnMore": "Даведацца больш", - "LabelDatabase": "База дадзеных", + "LabelDatabase": "База даных", "LimitSegmentLengthHelp": "Уключэнне гэтай опцыі можа дапамагчы прадухіліць затрымкі ў HLS-плэеры падчас пракруткі на некаторых прыладах, напрыклад, на тэлевізарах webOS.", "LibraryNameInvalid": "Назва бібліятэкі не можа быць пустой.", "HeaderUpdateRequired": "Патрабуецца абнаўленне", From bbced2590b334056ce97c8ef913f7efd8a9a6a55 Mon Sep 17 00:00:00 2001 From: Bas <44002186+854562@users.noreply.github.com> Date: Mon, 19 Jan 2026 09:51:43 -0500 Subject: [PATCH 16/17] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 72cfd4031..ca786ff72 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -499,7 +499,7 @@ "LabelFriendlyName": "Gebruiksvriendelijke naam", "LabelServerNameHelp": "Deze naam wordt gebruikt om de server te identificeren; standaard is deze de hostnaam van de server.", "LabelGroupMoviesIntoCollections": "Films groeperen in collecties", - "LabelGroupMoviesIntoCollectionsHelp": "Films in een collectie worden weergegeven als één gegroepeerd item bij het weergeven van filmlijsten.", + "LabelGroupMoviesIntoCollectionsHelp": "Films in een collectie worden in overzichten als één item gegroepeerd weergegeven.", "LabelEncoderPreset": "Voorinstelling codering", "LabelHardwareAccelerationType": "Hardwareversnelling", "LabelHardwareAccelerationTypeHelp": "Hardwareversnelling vereist aanvullende configuratie.", @@ -833,7 +833,7 @@ "OptionDisableUserHelp": "De server zal geen verbindingen van deze gebruiker toestaan. Bestaande verbindingen zullen abrupt worden beëindigd.", "OptionDislikes": "Niet leuk", "OptionDisplayFolderView": "Weergave met mappenstructuur tonen", - "OptionDisplayFolderViewHelp": "Geef mappen weer naast je andere mediabibliotheken. Dit kan nuttig zijn als je een mappenstructuur wilt hebben.", + "OptionDisplayFolderViewHelp": "Toon mappen naast je andere mediabibliotheken. Dit kan nuttig zijn als je een eenvoudige mapweergave wilt.", "OptionDownloadImagesInAdvance": "Download afbeeldingen van tevoren", "OptionDownloadImagesInAdvanceHelp": "Standaard worden de meeste afbeeldingen alleen gedownload wanneer ze opgevraagd worden door een client. Activeer deze optie om alle afbeeldingen van tevoren te downloaden bij het importeren van nieuwe media. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", "OptionEmbedSubtitles": "Insluiten in container", @@ -2014,8 +2014,8 @@ "SettingsPageLoadError": "Laden van instellingenpagina mislukt", "RetryWithGlobalSearch": "Alles doorzoeken", "StreamCountExceedsLimit": "Het aantal streams overschrijdt de limiet", - "LabelGroupShowsIntoCollectionsHelp": "Series in een collectie zullen worden getoond als één gegroepeerd item tijdens het weergeven van serielijsten.", - "LabelGroupShowsIntoCollections": "Series in collecties groeperen", + "LabelGroupShowsIntoCollectionsHelp": "Series in een collectie worden in overzichten als één item gegroepeerd weergegeven.", + "LabelGroupShowsIntoCollections": "Series groeperen in collecties", "ImageUploadFailed": "Afbeelding uploaden mislukt", "ImageDeleteFailed": "Afbeelding verwijderen mislukt", "ImageUploadCancelled": "Uploaden afbeelding geannuleerd", From 127b7dba884c854950fd39de052c4d0412067d46 Mon Sep 17 00:00:00 2001 From: Onestacktoomany Date: Tue, 20 Jan 2026 18:32:35 -0500 Subject: [PATCH 17/17] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 20a0c94f0..2e5ea574d 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1676,7 +1676,7 @@ "RememberSubtitleSelections": "Définir la piste de sous-titre en fonction de l'élément précédent", "RememberAudioSelectionsHelp": "Choisir la piste audio la plus proche de la dernière vidéo.", "RememberAudioSelections": "Définir la piste audio en fonction de l'élément précédent", - "IgnoreDtsHelp": "Désactiver cette option peut résoudre certains problèmes, par exemple une piste audio manquante sur les chaînes avec flux audio et vidéo séparés.", + "IgnoreDtsHelp": "Désactiver cette option peut résoudre certains problèmes, comme par exemple une piste audio manquante sur les chaînes avec flux audio et vidéo séparés.", "OptionDateShowAdded": "Date d'ajout de la série", "OptionDateEpisodeAdded": "Date d'ajout de l'épisode", "IgnoreDts": "Ignorer le DTS (horodatage de décodage)",