Files
siftlode/frontend/src/i18n/locales/en/plex.json
T
peter f983a491c0 feat(plex): add Playlist/Collection browse modes to the header pill
The header library-scope pill gains two entry points — Playlist and Collection —
next to All/Movies/Shows, a second way into each area (the rail filter is the
other). Picking Playlist shows a grid of the user's playlists (a tile opens that
playlist's view); Collection shows a searchable grid of collections (a tile
filters the title grid by that collection). Pure front-end — reuses the existing
plexPlaylists / plexCollections(union) list endpoints.

Two new top-level sub-views (`playlists` / `collections`, bookmarkable as
?v=playlists / ?v=collections) rendered by PlexBrowse via the new plexBrowseLists
surfaces (hue-tiled like the Discover genre tiles). The PlexViewBridge now carries
the view `kind`; PlexScopeToggle is a 5-way that derives its active segment from
it (browse-mode when in one, else scope) and drives the two views through the
bridge — picking a scope from a browse mode returns to the title grid. The
Discover/Browse toggle hides in these modes; Backspace + the search→grid flip
cover them.

Tests: PlexScopeToggle (5-way + browse-mode drive/active), plexSubUrl round-trip
for the two new views. Gate: tsc/lint/knip/prettier + 402 vitest.
2026-08-22 18:19:08 +02:00

303 lines
9.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"navLabel": "Plex",
"backToFeed": "YouTube feed",
"backToLibrary": "Back to library",
"searchPlaceholder": "Search Plex…",
"searchField": {
"aria": "Search scope",
"all": "Everywhere",
"title": "Titles",
"people": "Cast & crew",
"summary": "Descriptions",
"episode": "Episodes"
},
"suggest": {
"aria": "Search suggestions"
},
"sort": {
"added": "Recently added",
"title": "Title",
"year": "Year",
"rating": "IMDb rating",
"duration": "Length",
"release": "Release date"
},
"filter": {
"scope": "Library",
"scopeOpt": {
"both": "All",
"movie": "Movies",
"show": "Shows",
"playlists": "Playlists",
"collections": "Collections"
},
"show": "Show",
"showOpt": {
"all": "All",
"unwatched": "Unwatched",
"in_progress": "In progress",
"watched": "Watched"
},
"sort": "Sort",
"clearAll": "Clear filters",
"active": "Active",
"any": "Any",
"rating": "IMDb rating",
"genre": "Genre",
"year": "Year",
"duration": "Length",
"durationUnit": "min",
"durationOpt": {
"short": "Under 90m",
"mid": "90–120m",
"long": "Over 2h"
},
"added": "Added to Plex",
"addedOpt": {
"24h": "24h",
"1w": "1 week",
"1m": "1 month",
"6m": "6 months",
"1y": "1 year"
},
"contentRating": "Age rating",
"match": {
"any": "Any",
"all": "All"
},
"dir": {
"desc": "↓ Descending",
"asc": "↑ Ascending"
},
"collection": "Collection",
"collectionSearch": "Search collections…",
"collectionEmpty": "No collections",
"matchLabel": "Match",
"studio": "Studio",
"moreRefine": "{{count}} more — refine with search"
},
"count": "{{count}} titles",
"searchCount": "{{count}} matches",
"noMatches": "No matches.",
"noMatchesFiltered_one": "No matches — a filter is also narrowing the results.",
"noMatchesFiltered_other": "No matches — {{count}} filters are also narrowing the results.",
"loading": "Loading…",
"empty": "Nothing here yet. Run a Plex sync from the admin Config page.",
"watched": "Watched",
"inProgress": "In progress",
"play": "Play",
"resume": "Resume",
"openShow": "Open show",
"markWatched": "Mark watched",
"markUnwatched": "Mark unwatched",
"watchedFailed": "Couldn't update the watched state — please try again.",
"seasons": "{{count}} seasons",
"unified": {
"titles": "Titles",
"episodes": "Episodes"
},
"series": {
"seasons": "Seasons",
"backToShow": "Back to show",
"episodeCount": "{{count}} episodes",
"playFromStart": "Play from start",
"related": "Related shows",
"markShowWatched": "Mark show watched",
"markShowUnwatched": "Mark show unwatched",
"markSeasonWatched": "Mark season watched",
"markSeasonUnwatched": "Mark season unwatched",
"addShowCollection": "Add to collection"
},
"collEditor": {
"manage": "Collections",
"title": "Collections — {{title}}",
"newPlaceholder": "New collection name…",
"create": "Create",
"search": "Filter collections…",
"none": "No editable collections yet. Create one above.",
"count": "{{count}} items",
"delete": "Delete",
"deleteConfirm": "Delete the collection \"{{title}}\" from Plex? This affects all users.",
"note": "Changes are written to Plex and shared across all clients and users.",
"others": "Manage {{count}} existing collections…",
"makeEditable": "Manage"
},
"player": {
"loading": "Loading…",
"back": "Back",
"skipIntro": "Skip intro",
"skipCredits": "Skip credits",
"playPause": "Play / pause (space)",
"restart": "Restart from beginning",
"prev": "Previous episode",
"next": "Next episode",
"mute": "Mute (m)",
"fullscreen": "Fullscreen (f)",
"download": "Download original file",
"tracks": "Audio & subtitles",
"audio": "Audio",
"subtitles": "Subtitles",
"subOff": "Off",
"errNotFound": "This file can't be played — the media isn't reachable on the server (the Plex media mount is missing or the path map is wrong). Ask the admin to check the Plex configuration.",
"errTranscode": "This file's format needs transcoding, which isn't supported yet.",
"errGeneric": "Playback couldn't start. Please try again.",
"stop": "Stop",
"help": "Keyboard shortcuts",
"infoBtn": "Media info",
"keys": {
"playPause": "Play / pause",
"seek": "Seek 10 seconds",
"episode": "Previous / next episode",
"volume": "Volume up / down",
"mute": "Mute",
"fullscreen": "Fullscreen",
"info": "Media info",
"back": "Stop & back to feed",
"help": "Show this help",
"audio": "Cycle audio track",
"subtitle": "Cycle subtitle",
"fineSeek": "Fine seek"
},
"settings": "Settings",
"sync": "Offsets",
"subOffset": "Subtitle delay",
"audioOffset": "Audio delay",
"playback": "Playback",
"seekStep": "Seek step",
"fineSeek": "Fine seek (Ctrl)",
"autoHide": "Auto-hide controls",
"subStyle": "Subtitles",
"subSize": "Text size",
"subPos": "Position",
"subColor": "Text color",
"subBg": "Background",
"subBgNone": "None",
"clock": "Clock",
"clockShow": "Show clock",
"clock24h": "24-hour",
"clockSize": "Size",
"clockColor": "Color",
"clockDate": "Show date",
"subShadow": "Shadow",
"subShadowColor": "Shadow color",
"autoSkipIntro": "Auto-skip intro",
"autoSkipCredits": "Auto-skip credits",
"autoSkipDelay": "Auto-skip delay"
},
"info": {
"title": "Media info",
"customize": "Customize view",
"prefArtBg": "Faint backdrop",
"prefCast": "Cast & crew",
"prefRelated": "Related shows",
"prefFacts": "Details",
"prefKeywords": "Keywords",
"prefCrew": "Crew",
"stripSource": {
"collection": "Collections",
"imdb": "IMDb",
"tmdb": "TMDb",
"tvdb": "TVDb",
"trakt": "Trakt",
"smart": "Smart lists"
},
"openImdb": "Open on IMDb",
"director": "Director",
"cast": "Cast & crew",
"markWatched": "Mark watched",
"markUnwatched": "Mark unwatched",
"clearResume": "Clear resume position",
"filterYear": "Show titles from {{year}}",
"filterRating": "Show titles rated {{n}}+",
"filterActor": "Show titles with {{name}}",
"viewPerson": "View {{name}}'s filmography",
"browseCollection": "Browse collection →",
"audience": "Audience",
"keywords": "Keywords",
"crew": "Crew",
"filterKeyword": "Filter by \"{{name}}\"",
"facts": {
"title": "Details",
"release": "Released",
"runtime": "Runtime",
"cert": "Rating",
"budget": "Budget",
"revenue": "Revenue",
"studios": "Studios",
"countries": "Countries"
},
"prefCrossfade": "Crossfade backdrop"
},
"playable": {
"direct": "Plays directly in the browser",
"remux": "Needs a light remux (no video re-encode)",
"transcode": "Needs transcoding (heavier)"
},
"playlistAdd": {
"manage": "Add to playlist",
"title": "Add to playlist — {{title}}",
"newPlaceholder": "New playlist name…",
"create": "Create",
"none": "No playlists yet. Create one above.",
"count": "{{count}} items",
"groupProgress": "{{in}} / {{size}}"
},
"playlist": {
"section": "Playlists",
"newPlaceholder": "New playlist…",
"pickerPlaceholder": "Find or create a playlist…",
"createNamed": "Create \"{{name}}\"",
"create": "Create playlist",
"none": "No playlists yet.",
"deleteConfirm": "Delete the playlist \"{{title}}\"?",
"rename": "Rename",
"playAll": "Play all",
"delete": "Delete playlist",
"empty": "This playlist is empty. Add titles from their info page.",
"layoutLabel": "Layout",
"layoutAccordion": "Accordion view",
"layoutTree": "Tree view",
"removeShow": "Remove whole show",
"removeSeason": "Remove whole season",
"episodes": "{{count}} episodes",
"season": "Season {{n}}",
"seasonUnknown": "Episodes",
"addShow": "Add whole show to a playlist",
"addSeason": "Add season to a playlist",
"addEpisode": "Add episode to a playlist"
},
"people": {
"count_one": "{{count}} title",
"count_other": "{{count}} titles",
"remove": "Remove from filter"
},
"person": {
"credits": "{{movies}} movies · {{shows}} shows",
"filterBy": "Filter library by {{name}}",
"movies": "Movies ({{count}})",
"shows": "Shows ({{count}})",
"empty": "No titles found for this person.",
"born": "Born",
"died": "Died",
"aka": "Also known as",
"knownFor": "Known for"
},
"view": {
"label": "View",
"browse": "Browse"
},
"browse": {
"items": "{{count}} items"
},
"discover": {
"tab": "Discover",
"continueWatching": "Continue watching",
"recentlyAdded": "Recently added",
"surprise": "Surprise me",
"reshuffle": "Reshuffle",
"byGenre": "Browse by genre",
"becauseWatched": "Because you watched {{title}}",
"empty": "Nothing to discover yet — run a Plex sync from the admin Config page."
}
}