mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 23:05:46 +00:00
2409a1fec8
Each src/locales/<lang>.ts (~1800 LOC) becomes a folder src/locales/<lang>/ with one module per i18n namespace (44 each) plus an index.ts barrel that reassembles <lang>Translation in the original key order. Mechanical, script-driven split with a JSON round-trip check: every locale object is byte-identical to its pre-split form. i18n.ts is unchanged — './locales/<lang>' now resolves to the folder index. The per-namespace settings.ts files land ~440-460 LOC; a single i18n namespace is the natural, non-arbitrary split unit for a flat string table, so they are intentionally left whole.
102 lines
4.1 KiB
TypeScript
102 lines
4.1 KiB
TypeScript
export const playlists = {
|
|
title: 'Playlists',
|
|
newPlaylist: 'New Playlist',
|
|
unnamed: 'Unnamed Playlist',
|
|
createName: 'Playlist name…',
|
|
create: 'Create',
|
|
cancel: 'Cancel',
|
|
empty: 'No playlists yet.',
|
|
emptyPlaylist: 'This playlist is empty.',
|
|
addFirstSong: 'Add your first song',
|
|
notFound: 'Playlist not found.',
|
|
songs: '{{n}} songs',
|
|
playAll: 'Play All',
|
|
shuffle: 'Shuffle',
|
|
addToQueue: 'Add to Queue',
|
|
back: 'Back to Playlists',
|
|
deletePlaylist: 'Delete',
|
|
confirmDelete: 'Click again to confirm',
|
|
removeSong: 'Remove from playlist',
|
|
addSongs: 'Add Songs',
|
|
searchPlaceholder: 'Search your library…',
|
|
noResults: 'No results.',
|
|
suggestions: 'Suggested Songs',
|
|
noSuggestions: 'No suggestions available.',
|
|
titleBadge: 'Playlist',
|
|
refreshSuggestions: 'New suggestions',
|
|
addSong: 'Add to playlist',
|
|
preview: 'Preview (30s)',
|
|
previewStop: 'Stop preview',
|
|
playNextSuggestion: 'Play next',
|
|
suggestionsHint: 'Double-click a row to add it to the playlist',
|
|
addSelected: 'Add selected',
|
|
cacheOffline: 'Cache playlist offline',
|
|
offlineCached: 'Playlist cached',
|
|
removeOffline: 'Remove from offline cache',
|
|
offlineDownloading: 'Caching… ({{done}}/{{total}} albums)',
|
|
publicLabel: 'Public',
|
|
privateLabel: 'Private',
|
|
editMeta: 'Edit playlist',
|
|
editNamePlaceholder: 'Playlist name…',
|
|
editCommentPlaceholder: 'Add a description…',
|
|
editPublic: 'Public playlist',
|
|
editSave: 'Save',
|
|
editCancel: 'Cancel',
|
|
changeCover: 'Change cover image',
|
|
changeCoverLabel: 'Change photo',
|
|
removeCover: 'Remove photo',
|
|
coverUpdated: 'Cover updated',
|
|
metaSaved: 'Playlist updated',
|
|
downloadZip: 'Download (ZIP)',
|
|
// Toast notifications for multi-select
|
|
addSuccess: '{{count}} songs added to {{playlist}}',
|
|
addPartial: '{{added}} added, {{skipped}} skipped (duplicates)',
|
|
addAllSkipped: 'All skipped ({{count}} duplicates)',
|
|
addedAsDuplicates: '{{count}} songs added to {{playlist}} (as duplicates)',
|
|
duplicateConfirmTitle: 'Already in playlist',
|
|
duplicateConfirmMessage: 'All {{count}} songs are already in "{{playlist}}". Add them again as duplicates?',
|
|
duplicateConfirmAction: 'Add anyway',
|
|
addError: 'Error adding songs',
|
|
createAndAddSuccess: 'Playlist "{{playlist}}" created with {{count}} songs',
|
|
createError: 'Error creating playlist',
|
|
deleteSuccess: '{{count}} playlists deleted',
|
|
deleteFailed: 'Error deleting {{name}}',
|
|
deleteSelected: 'Delete selected',
|
|
deleteSelectedPartial: 'Only {{n}} of {{total}} selected playlists can be deleted (the others belong to someone else).',
|
|
mergeSuccess: '{{count}} songs merged into {{playlist}}',
|
|
mergeNoNewSongs: 'No new songs to add',
|
|
mergeError: 'Error merging playlists',
|
|
mergeInto: 'Merge into',
|
|
selectionCount: '{{count}} selected',
|
|
select: 'Select',
|
|
startSelect: 'Enable selection',
|
|
cancelSelect: 'Cancel',
|
|
loadingAlbums: 'Resolving {{count}} albums…',
|
|
loadingArtists: 'Resolving {{count}} artists…',
|
|
myPlaylists: 'My Playlists',
|
|
noOtherPlaylists: 'No other playlists available',
|
|
addToPlaylistSuccess: '{{count}} songs added to {{playlist}}',
|
|
addToPlaylistNoNew: 'No new songs to add to {{playlist}}',
|
|
addToPlaylistError: 'Error adding to playlist',
|
|
removeSuccess: 'Song removed from playlist',
|
|
removeError: 'Error removing song from playlist',
|
|
importCSV: 'Import CSV',
|
|
importCSVTooltip: 'Import from Spotify CSV',
|
|
csvImportReport: 'CSV Import Report',
|
|
csvImportTotal: 'Total',
|
|
csvImportAdded: 'Added',
|
|
csvImportDuplicates: 'Duplicates',
|
|
csvImportNotFound: 'Not Found',
|
|
csvImportNetworkErrors: 'Network Errors',
|
|
csvImportDuplicatesTitle: 'Duplicate Tracks (Already in Playlist):',
|
|
csvImportNotFoundTitle: 'Tracks Not Found:',
|
|
csvImportNetworkErrorsTitle: 'Network Errors (may retry import):',
|
|
csvImportDownloadReport: 'Download Report',
|
|
csvImportClose: 'Close',
|
|
csvImportNoValidTracks: 'No valid tracks found in CSV file',
|
|
csvImportFailed: 'Failed to import CSV file',
|
|
csvImportToast: '{{added}} added, {{notFound}} not found, {{duplicates}} duplicates',
|
|
csvImportDownloadSuccess: 'Report downloaded successfully',
|
|
csvImportDownloadError: 'Failed to download report',
|
|
};
|