Files
siftlode/frontend/src/i18n/locales/en/playlists.json
T
peter efbbb23525 feat(playlists): act on the selected rows from the toolbar, and undo either
While rows are selected the toolbar's second row is the band: the count,
the last target as one click, Move to, Remove, Clear selection. Both write
in one request and undo back to the places; a video the target held before
stays there. Delete takes the selection when there is one. A failure puts
the rows back ticked.

A row's own move goes through the same write, so it undoes too, and the
single-row move route and service function are gone. A playlist row drops
its grip below a 24rem table: the row menu keeps the moves.
2026-11-01 22:07:09 +01:00

153 lines
8.0 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.
{
"title": "Playlists",
"manageGroup": "Manage",
"listGroup": "Your playlists",
"watchLater": "Watch later",
"syncYoutube": "Sync from YouTube",
"syncedToast_one": "Synced {{count}} playlist from YouTube",
"syncedToast_other": "Synced {{count}} playlists from YouTube",
"syncFailed": "Couldn't sync from YouTube",
"noneYet": "No playlists yet",
"newPlaylist": "New playlist…",
"searchPlaceholder": "Search playlists…",
"noMatches": "No playlists match.",
"itemCount_one": "{{count}} video",
"itemCount_other": "{{count}} videos",
"pickOne": "Pick a playlist on the left.",
"loading": "Loading…",
"empty": "This playlist is empty — add videos from the Feed.",
"playAll": "Play all",
"delete": "Delete",
"rename": "Rename",
"confirmDelete": "Delete the playlist “{{name}}”? This can't be undone.",
"addToPlaylist": "Add to playlist…",
"addToPlaylistTitle": "Add to playlist",
"exportToYoutube": "Export to YouTube",
"pushToYoutube": "Sync to YouTube",
"unsynced": "Unsynced",
"unsyncedHint": "You have local changes not yet synced to YouTube.",
"openOnYoutube": "Open on YouTube",
"revert": "Reset to YouTube",
"revertTitle": "Discard local changes?",
"revertMsg": "This reloads the playlist from YouTube and discards your unsynced local changes (order, additions, removals, rename). Continue?",
"revertConfirm": "Discard & reload",
"revertDone": "“{{name}}” synced from YouTube",
"revertFailed": "Couldn't sync from YouTube",
"pushTitle": "Sync to YouTube",
"pushConfirm": "Sync",
"pushPlanCreate_one": "Create a new YouTube playlist with {{count}} video? (~{{units}} quota units; {{left}} left today.)",
"pushPlanCreate_other": "Create a new YouTube playlist with {{count}} videos? (~{{units}} quota units; {{left}} left today.)",
"mergeAddLocal_one": "{{count}} video added to Siftlode from YouTube.",
"mergeAddLocal_other": "{{count}} videos added to Siftlode from YouTube.",
"mergeRemoveLocal_one": "{{count}} video removed from Siftlode.",
"mergeRemoveLocal_other": "{{count}} videos removed from Siftlode.",
"mergeAddYt_one": "{{count}} video added to YouTube.",
"mergeAddYt_other": "{{count}} videos added to YouTube.",
"mergeRemoveYt_one": "{{count}} video removed from YouTube.",
"mergeRemoveYt_other": "{{count}} videos removed from YouTube.",
"mergeReorder_one": "{{count}} video reordered on YouTube.",
"mergeReorder_other": "{{count}} videos reordered on YouTube.",
"mergeRename": "The playlist will be renamed on YouTube.",
"mergeYtUnchanged": "Your YouTube playlist stays unchanged.",
"mergeLocalUnchanged": "Your Siftlode playlist stays unchanged.",
"mergeQuota": " (~{{units}} quota units; {{left}} left today.)",
"mergeQuotaFree": " (~0 quota units.)",
"pushNoQuota": "Not enough YouTube quota left today ({{left}}) for this sync (~{{units}} needed). Try again tomorrow.",
"pushUpToDate": "“{{name}}” is already in sync with YouTube",
"pushDone": "“{{name}}” synced to YouTube",
"pushPartial_one": "Synced, but {{count}} video was skipped",
"pushPartial_other": "Synced, but {{count}} videos were skipped",
"pushFailed": "Couldn't sync to YouTube",
"deleteHereOnly": "Delete here only",
"deleteYtFailed": "Couldn't delete on YouTube; deleted here only",
"sortLabel": "Sort",
"dirAsc": "Ascending",
"dirDesc": "Descending",
"groupByChannel": "Group by channel",
"railSortCustom": "Custom order",
"railSortName": "Name",
"railSortCount": "Video count",
"railSortDuration": "Total length",
"railSortRecent": "Recently changed",
"dirtyFirst": "Unsynced first",
"colTitle": "Title",
"colChannel": "Channel",
"colDuration": "Length",
"rowMenu": "Video actions",
"moveTo": "Move to another list",
"moveToRecent": "Move to “{{name}}”",
"moveNoTargets": "There is no other playlist to move it to yet",
"movedToast": "“{{title}}” moved to “{{name}}”",
"moveFailed": "Couldn't move the video",
"removedToast": "“{{title}}” removed from the playlist",
"undoRemoveFailed": "Couldn't put the video back",
"removeFailed": "Couldn't remove the video",
"errors": {
"name_required": "Give the playlist a name",
"youtube_read_scope": "Connect YouTube (read access) to sync your playlists",
"not_on_youtube": "This playlist isn't on YouTube",
"watch_later_not_pushable": "The Watch later list can't be sent to YouTube",
"watch_later_undeletable": "The Watch later list can't be deleted",
"youtube_editing_off": "Enable YouTube editing in Settings first",
"quota_exceeded": "Not enough YouTube quota left today for this sync",
"sync_busy": "This playlist is already syncing with YouTube — try again when it finishes",
"sync_all_busy": "Your playlists are already syncing with YouTube — try again when it finishes"
},
"moveErrors": {
"same_playlist": "That video is already in this playlist"
},
"railMenu": "Playlist actions",
"builtinLocked": "The built-in “{{name}}” list can’t be renamed or deleted.",
"removeItem": "Remove",
"removeItemOf": "Remove “{{title}}” from the playlist",
"dragHandleOf": "Reorder “{{title}}”",
"selectRow": "Select “{{title}}”",
"selectAllShown": "Select all the rows shown",
"selectedCount_one": "{{count}} selected",
"selectedCount_other": "{{count}} selected",
"selectedHidden_one": "{{count}} more hidden by the filter",
"selectedHidden_other": "{{count}} more hidden by the filter",
"clearSelection": "Clear selection",
"moveSelected": "Move to",
"removeSelected": "Remove",
"movedManyToast_one": "{{count}} video moved to “{{name}}”",
"movedManyToast_other": "{{count}} videos moved to “{{name}}”",
"removedManyToast_one": "{{count}} video removed from the playlist",
"removedManyToast_other": "{{count}} videos removed from the playlist",
"moveNoneLeft": "Nothing moved: they aren’t in this playlist any more",
"removeNoneLeft": "Nothing removed: they aren’t in this playlist any more",
"moveManyFailed": "Couldn't move the videos",
"removeManyFailed": "Couldn't remove the videos",
"undoMoveFailed": "Couldn't move the video back",
"undoMoveManyFailed": "Couldn't move the videos back",
"undoRemoveManyFailed": "Couldn't put the videos back",
"dragBlockedSort": "Reordering by hand is off while a column sort or grouping is applied.",
"dragBlockedFilter": "Reordering by hand is off while a filter is applied.",
"clearView": "Reset view",
"saveOrder": "Save this order",
"filteredCount_one": "{{count}} shown",
"filteredCount_other": "{{count}} shown",
"noneMatchFilter": "No videos match the filter.",
"loadFailed": "Couldn't load this playlist",
"reorderFailed": "Couldn't save the new order",
"renameFailed": "Couldn't rename the playlist",
"deleteFailed": "Couldn't delete the playlist",
"confirmDeleteLinked": "Delete the playlist “{{name}}”? It is synced with YouTube — choose whether to delete it there as well. This can't be undone.",
"dragBlockedBuiltin": "This list's order is fixed — it can't be reordered by hand.",
"deleteBoth": "Delete here and on YouTube",
"viewGrouped": "grouped by channel",
"viewGroupedAnd": "grouped by channel, {{sort}}",
"viewDiffers": "Temporary view ({{view}}) — the playlist's saved order is unchanged. Save it to keep this order.",
"viewMatches": "This view ({{view}}) already matches the playlist's saved order, so there is nothing to save.",
"viewFiltered": "Filtered view — {{shown}} of {{total}} shown. The order can't be saved while a filter is on.",
"addFailed": "Couldn't add it to the playlist",
"limits": {
"hint": "Missing a list?",
"why": "Why?",
"title": "What YouTube lets Siftlode read",
"closed": "YouTube's own Watch later and History have been closed to its API since 2016, so no app can read them. The Watch later list here is Siftlode's own.",
"ownOnly": "Only playlists you own sync. Lists you saved from other channels are not returned.",
"noChannel": "A Google account with no YouTube channel has no playlists at all, as far as the API is concerned."
}
}