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.
153 lines
8.0 KiB
JSON
153 lines
8.0 KiB
JSON
{
|
||
"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."
|
||
}
|
||
}
|