mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +00:00
f4e1086131
* feat(themes): fresher store refresh + external-services notice Manual refresh now fetches the registry from GitHub raw first (~5 min cache) and falls back to the jsDelivr CDN, so a freshly merged theme shows up without waiting on — or purging — the shared CDN @main edge (up to 12 h). Normal loads still use the CDN. Adds a notice on the Theme Store that the catalogue and previews load from external services (jsDelivr / GitHub), in line with the app's network transparency. i18n ×9. * docs(themes): note the store-refresh PR in the Theme Store entry Now that #1015 is merged, fold PR #1016 into the still-unreleased Theme Store changelog and credits entry.
655 lines
44 KiB
TypeScript
655 lines
44 KiB
TypeScript
export const settings = {
|
||
title: 'Setări',
|
||
language: 'Limbă',
|
||
languageEn: 'Engleză',
|
||
languageDe: 'Germană',
|
||
languageFr: 'Franceză',
|
||
languageNl: 'Olandeză',
|
||
languageZh: 'Chineză',
|
||
languageNb: 'Norvegiană',
|
||
languageRu: 'Rusă',
|
||
languageEs: 'Spaniolă',
|
||
languageRo: 'Română',
|
||
font: 'Font',
|
||
fontHintOpenDyslexic: 'Prietenos cu dislexia · Chineza nu este suportată',
|
||
theme: 'Temă',
|
||
appearance: 'Aparență',
|
||
servers: 'Servere',
|
||
serverName: 'Nume Server',
|
||
serverUrl: 'URL Server',
|
||
serverUrlPlaceholder: '192.168.1.100:4533 sau https://music.example.com',
|
||
serverAlternateUrl: 'A doua adresă (opțional)',
|
||
serverAlternateUrlPlaceholderPublic: 'https://music.example.com',
|
||
serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533',
|
||
serverAlternateUrlHintAddPublic: 'Poți adăuga o adresă publică pentru a te conecta din afara rețelei tale de acasă.',
|
||
serverAlternateUrlHintAddLocal: 'Poți adăuga o adresă locală pentru o conexiune mai rapidă acasă.',
|
||
serverBothLanError: 'Ambele adrese sunt locale — păstrează una sau adaugă o adresă publică.',
|
||
dualAddressVerifying: 'Verificăm dacă ambele adrese duc la același server…',
|
||
dualAddressMismatch: 'Cele două adrese duc la servere diferite. Verifică ortografia și încearcă din nou.',
|
||
dualAddressInsufficient: 'Nu am putut confirma că ambele adrese sunt același server. Elimină o adresă pentru a continua.',
|
||
dualAddressUnreachable: 'Nu am putut contacta {{host}}. Verifică adresa și rețeaua și încearcă din nou.',
|
||
urlRemigrationTitle: 'Muți datele bibliotecii?',
|
||
urlRemigrationMessage: 'Schimbarea adresei va muta toate datele bibliotecii, analizei și ale cache-ului de coperți de la {{oldKey}} la {{newKey}}. Această acțiune nu poate fi anulată.',
|
||
urlRemigrationConfirm: 'Mută datele',
|
||
urlRemigrationProgress: 'Mutăm datele bibliotecii…',
|
||
urlRemigrationFailureInspect: 'Nu am putut verifica ce ar fi mutat. Încearcă din nou sau deschide jurnalul de depanare.',
|
||
urlRemigrationFailureRun: 'Mutarea datelor bibliotecii a eșuat. Datele salvate sunt neschimbate — încearcă din nou.',
|
||
urlRemigrationFailureCoverRename: 'Datele bibliotecii au fost mutate, dar fișierele de copertă nu au putut fi redenumite. Coperțile vor fi reconstruite la următorul acces.',
|
||
shareUsesLocalUrl: 'Folosește adresa locală în linkurile de partajare',
|
||
shareUsesLocalUrlDesc: 'Afectează invitațiile Orbit și partajările bibliotecii. Implicit: adresa publică.',
|
||
serverUsername: 'Nume utilizator',
|
||
serverPassword: 'Parolă',
|
||
addServer: 'Adaugă Server',
|
||
addServerTitle: 'Adaugă Server nou',
|
||
editServer: 'Editează',
|
||
editServerTitle: 'Editează Server',
|
||
useServer: 'Folosește',
|
||
deleteServer: 'Șterge',
|
||
noServers: 'Niciun server salvat.',
|
||
serverActive: 'Activ',
|
||
confirmDeleteServer: 'Șterge server "{{name}}"?',
|
||
serverConnecting: 'Se conectează…',
|
||
serverConnected: 'Conectat!',
|
||
serverFailed: 'Conexiune eșuată.',
|
||
testBtn: 'Testează Conexiunea',
|
||
testingBtn: 'Se testează…',
|
||
serverCompatible: 'Făcut pentru Navidrome. Alte servere compatibile cu Subsonic (Gonic, Airsonic, …) pot rula cu funcționalitate redusă, deoarece Psysonic folosește multe endpointuri API specifice Navidrome.',
|
||
userMgmtTitle: 'Gestionarea Utilizatorilor',
|
||
userMgmtDesc: 'Gestionează utilizatorii de pe acest server. Necesită privilegii admin.',
|
||
userMgmtNoAdmin: 'Ai nevoie de privilegii de admin pentru a gestiona utilizatorii de pe acest server.',
|
||
userMgmtLoadError: 'Eroare la încărcarea utilizatorilor.',
|
||
userMgmtLoadFriendly: 'Serverul nu a răspuns — acesta este de obicei un caz singular.',
|
||
userMgmtRetry: 'Reîncearcă',
|
||
userMgmtEmpty: 'Niciun utilizator găsit.',
|
||
userMgmtYouBadge: 'Tu',
|
||
userMgmtAdminBadge: 'Admin',
|
||
userMgmtAddUser: 'Adaugă Utilizator',
|
||
userMgmtAddUserTitle: 'Adaugă Nou Utilizator',
|
||
userMgmtEditUserTitle: 'Editează Utilizatorul',
|
||
userMgmtUsername: 'Nume utilizator',
|
||
userMgmtName: 'Nume afișaj',
|
||
userMgmtEmail: 'Email',
|
||
userMgmtPassword: 'Parolă',
|
||
userMgmtPasswordEditHint: 'Introdu o parolă nouă pentru a o actualiza.',
|
||
userMgmtRoleAdmin: 'Admin',
|
||
userMgmtLibraries: 'Librării',
|
||
userMgmtLibrariesAdminHint: 'Utilizatorii Admin au acces automat la toate librăriile.',
|
||
userMgmtLibrariesEmpty: 'Nicio librărie disponibilă pe acest server.',
|
||
userMgmtLibrariesValidation: 'Alege cel puțin o librărie.',
|
||
userMgmtLibrariesUpdateError: 'Utilizator salvat, dar atribuirea librăriilor a eșuat',
|
||
userMgmtNoLibraries: 'Nicio librărie asignată',
|
||
userMgmtNeverSeen: 'Niciodată',
|
||
userMgmtSave: 'Salvează',
|
||
userMgmtCancel: 'Anulează',
|
||
userMgmtDelete: 'Șterge',
|
||
userMgmtEdit: 'Editează',
|
||
userMgmtConfirmDelete: 'Șterge utilizatorul "{{username}}"? Acestă acțiune nu poate fi anulată.',
|
||
userMgmtCreateError: 'Nu s-a putut crea utilizatorul.',
|
||
userMgmtUpdateError: 'Nu s-a putut actualiza utilizatorul.',
|
||
userMgmtDeleteError: 'Nu s-a putut șterge utilizatorul.',
|
||
userMgmtCreated: 'Utilizator creat.',
|
||
userMgmtUpdated: 'Utilizator actualizat.',
|
||
userMgmtDeleted: 'Utilizator șters.',
|
||
userMgmtValidationMissing: 'Numele de utilizator, numele de afișaj și parola sunt necesare.',
|
||
userMgmtValidationMissingIdentity: 'Numele de utilizator și numele de afișaj sunt necesare.',
|
||
userMgmtMagicStringGenerate: 'Generează string-ul magic',
|
||
userMgmtSaveAndMagicString: 'Salvează și obține string-ul magic',
|
||
userMgmtMagicStringPasswordNavHint:
|
||
'Navidrome va salva această parolă pentru utilizator. Dacă diferă de cea curentă, serverul va actualiza parola de login.',
|
||
userMgmtMagicStringPlaintextWarning:
|
||
'Distribuie string-ul magic cu grijă: conține o parolă necriptată (codificarea nu este criptare). Oricine cu string-ul complet se poate conecta ca acest utilizator.',
|
||
userMgmtMagicStringCopied: 'String-ul magic copiat în clipboard.',
|
||
userMgmtMagicStringCopyFailed: 'Nu s-a putut copia în clipboard.',
|
||
userMgmtMagicStringLoginFailed: 'Verificarea parolei a eșuat — credențialele nu au putut fi verificate.',
|
||
userMgmtMagicStringModalTitle: 'Generează string-ul magic',
|
||
userMgmtMagicStringModalDesc: 'Introdu parola Subsonic pentru "{{username}}". Este inclusă în string-ul magic copiat.',
|
||
userMgmtMagicStringModalConfirm: 'Copiază string-ul',
|
||
audiomuseTitle: 'AudioMuse-AI (Navidrome)',
|
||
audiomuseDesc:
|
||
'Pornește dacă acest server are <pluginLink>AudioMuse-AI Navidrome plugin</pluginLink> configurat. Activează Mixul Instant din piese si folosește artiști similari de pe partea de server în loc de Last.fm pe paginile de artiști.',
|
||
audiomuseIssueHint:
|
||
'Mixul Instant a eșuat recent — verifică plugin-ul Navidrome și API-ul AudioMuse. Artiștii similari sunt bazați pe Last.fm când serverul nu returnează nimic.',
|
||
connected: 'Conectat',
|
||
failed: 'Eșuat',
|
||
eqTitle: 'Egalizator',
|
||
eqEnabled: 'Activează Egalizatorul',
|
||
eqPreset: 'Preset',
|
||
eqPresetCustom: 'Personalizat',
|
||
eqPresetBuiltin: 'Preseturi încorporate',
|
||
eqPresetCustomGroup: 'Preseturile mele',
|
||
eqSavePreset: 'Salvează ca Preset',
|
||
eqPresetName: 'Nume preset…',
|
||
eqDeletePreset: 'Șterge preset',
|
||
eqResetBands: 'Resetează la Plat',
|
||
eqPreGain: 'Pre-gain',
|
||
eqResetPreGain: 'Resetează pre-gain',
|
||
eqAutoEqTitle: 'Căutare Căști AutoEQ',
|
||
eqAutoEqPlaceholder: 'Caută model căști / IEM…',
|
||
eqAutoEqSearching: 'Se caută…',
|
||
eqAutoEqNoResults: 'Niciun rezultat găsit',
|
||
eqAutoEqError: 'Căutarea a eșuat',
|
||
eqAutoEqRateLimit: 'Limita ratei GitHub a fost atinsă — încearcă din nou într-un minut',
|
||
eqAutoEqFetchError: 'Nu s-a putut lua profilul EQ',
|
||
lfmTitle: 'Last.fm',
|
||
lfmConnect: 'Conectează-te cu Last.fm',
|
||
lfmConnecting: 'Se așteaptă autorizarea…',
|
||
lfmConfirm: 'Am autorizat aplicația',
|
||
lfmConnected: 'Conectat ca',
|
||
lfmDisconnect: 'Deconectează-te',
|
||
lfmConnectDesc: 'Conectează contul tău Last.fm pentru a pornit scrobbling și update-uri Now Playing direct din Psysonic — nicio nevoie configurare Navidrome necesară.',
|
||
lfmOpenBrowser: 'O fereastră browser se va deschide. Autorizează Psysonic în Last.fm, apoi apasă pe butonul de mai jos.',
|
||
lfmScrobbles: '{{n}} scrobble-uri',
|
||
lfmMemberSince: 'Membru din {{year}}',
|
||
scrobbleEnabled: 'Scrobbling dezactivat',
|
||
scrobbleDesc: 'Trimite piese la Last.fm după 50% timp de redare',
|
||
behavior: 'Comportamentul Aplicației',
|
||
cacheTitle: 'Spațiu de stocare maxim',
|
||
cacheDesc: 'Cache în browser pentru coperte și imagini de artiști (IndexedDB). Când este plin, cele mai vechi intrări sunt șterse automat.',
|
||
cacheUsedImages: 'Imagini:',
|
||
cacheUsedOffline: 'Piese offline:',
|
||
cacheUsedHot: 'Mărimea pe disc:',
|
||
hotCacheTrackCount: 'Piese în memoria cache:',
|
||
cacheMaxLabel: 'Mărimea maximă',
|
||
cacheClearBtn: 'Golește memoria cache',
|
||
waveformCacheClearBtn: 'Golește cache-ul formelor de undă',
|
||
cacheClearWarning: 'Șterge toate copertele și imaginile artiștilor din cache. Vor fi descărcate din nou la nevoie.',
|
||
cacheClearConfirm: 'Golește cache-ul de imagini',
|
||
cacheClearCancel: 'Anulează',
|
||
waveformCacheCleared: 'Cache-ul formelor de undă golit ({{count}} rows).',
|
||
waveformCacheClearFailed: 'Golirea cache-ului formelor de undă a eșuat.',
|
||
mediaDirTitle: 'Folder media',
|
||
mediaDirDesc: 'Folder rădăcină pentru redare locală. Librărie offline: library/; buffer coadă: cache/.',
|
||
mediaDirDefault: 'Implicit (App Data)',
|
||
mediaDirChange: 'Schimbă folderul',
|
||
mediaDirClear: 'Resetează la implicit',
|
||
mediaDirHint: 'Descărcările noi folosesc această locație. Fișierele existente rămân la calea originală până le ștergi.',
|
||
offlineStorageTitle: 'Stocare offline',
|
||
offlineDirTitle: 'Librărie offline (În Aplicație)',
|
||
offlineDirDesc: 'Locația stocării pieselor pe care le faci disponibile offline în Psysonic.',
|
||
offlineDirDefault: 'Implicit (App Data)',
|
||
offlineDirChange: 'Schimbă directorul',
|
||
offlineDirClear: 'Resetează la implicit',
|
||
offlineDirHint: 'Noile descărcări vor folosi această locație. Descărcările existente rămân la adresa originală.',
|
||
hotCacheTitle: 'Cache-ul hot playback',
|
||
hotCacheDisclaimer: 'Preîncarcă piesele ce urmează din coadă și păstrează anterioarele. Când este pornit, folosește spațiu pe disc și rețea.',
|
||
hotCacheDirDefault: 'Implicit (App Data)',
|
||
hotCacheDirChange: 'Schimbă folderul',
|
||
hotCacheDirClear: 'Resetează la implicit',
|
||
hotCacheDirHint: 'Schimbarea folderului resetează indexul din aplicație; fișierele aflate deja pe disc stau unde sunt până când le ștergi.',
|
||
hotCacheEnabled: 'Activează cache-ul hot playback cache',
|
||
hotCacheMaxMb: 'Mărimea maximă cache',
|
||
hotCacheDebounce: 'Debounce la schimbarea cozii',
|
||
hotCacheDebounceImmediate: 'Imediat',
|
||
hotCacheDebounceSeconds: '{{n}} s',
|
||
hotCacheClearBtn: 'Golește hot cache',
|
||
audioOutputDevice: 'Dispozitiv de ieșire audio',
|
||
audioOutputDeviceDesc: 'Alege prin ce dispozitiv audio să redea Psysonic. Schimbările au efect imediat și re-încep piesa curentă.',
|
||
audioOutputDeviceDefault: 'Implicit sistem',
|
||
audioOutputDeviceRefresh: 'Reîmprospătează lista dispozitivelor',
|
||
audioOutputDeviceOsDefaultNow: 'ieșirea curentă a sistemului',
|
||
audioOutputDeviceListError: 'Nu s-a putut încărca lista dispozitivelor audio',
|
||
audioOutputDeviceNotInCurrentList: 'nu există în lista curentă',
|
||
audioOutputDeviceMacNotice: 'În macOS, redarea urmărește mereu dispozitivul audio de ieșire al sistemului din motive tehnice. Schimbă ținta în Setări → Sunet sau iconița difuzor din bara de meniu. Fundal: CoreAudio declanșează un prompt de permisiune de microfon când se deschide un stream non-implicit — îl evităm folosind opțiunea implicită a sistemului mereu.',
|
||
hiResTitle: 'Playback Hi-Res nativ',
|
||
hiResEnabled: 'Pornește playback-ul hi-res nativ',
|
||
hiResDesc: "Forțează ieșire implicită de 44.1 kHz pentru stabilitate maximă. Pornește doar dacă sistemul hardware și rețeaua suport fiabil rate mari de eșantionare (88.2 kHz+).",
|
||
showArtistImages: 'Afișează Imagini Artist',
|
||
showArtistImagesDesc: 'Încarcă și afișează imagini artist în Prezentarea generală a Artiștilor. Oprit implicit pentru a reduce I/O pe server și încărcarea rețelei pe librării mari.',
|
||
showOrbitTrigger: 'Afișează "Orbit" în antet',
|
||
showOrbitTriggerDesc: 'Declanșatorul din bara de sus pentru a începe sau intra într-o sesiune de ascultare distribuită. Ascunde-l dacă nu folosești Orbit - îl poți porni înapoi aici.',
|
||
showTrayIcon: 'Afișează Iconița Tavă',
|
||
showTrayIconDesc: 'Afișează iconița Psysonic în zona notificărilor de sistem / bara de meniu.',
|
||
minimizeToTray: 'Minimizează în Tavă',
|
||
minimizeToTrayDesc: 'La închiderea ferestrei, continuă rularea Psysonic în tava de sistem în loc de ieșire',
|
||
clockFormat: 'Format Oră',
|
||
clockFormatDesc: 'Format al ceasului folosit pentru ETA-ul cozii și previzualizarea cronometrului de somn.',
|
||
clockFormatAuto: 'Automat (limba sistemului)',
|
||
clockFormatTwentyFour: '24 de ore',
|
||
clockFormatTwelve: '12 ore (AM/PM)',
|
||
preloadMiniPlayer: 'Preîncarcă mini player',
|
||
preloadMiniPlayerDesc: 'Crează fereastra mini player în fundal la deschiderea aplicației pentru a arăta conținut instantaneu la prima deschidere. Folosește puțină extra memorie.',
|
||
discordRichPresence: 'Prezență Discord Rich',
|
||
discordRichPresenceDesc: 'Arată piesa redată curent pe profilul tău de Discord. Necesită Discord să ruleze.',
|
||
useCustomTitlebar: 'Bară de titlu personalizată',
|
||
useCustomTitlebarDesc: 'Înlocuiește bara de titlu a sistemului cu una care corespunde cu tema aplicației. Dezactivează pentru a folosi bara de titlu nativ GNOME/GTK.',
|
||
linuxWebkitSmoothScroll: 'Rotiță lină (Linux)',
|
||
linuxWebkitSmoothScrollDesc: 'Pornit: scroll inert. Oprit: linie cu linie, în stil GTK.',
|
||
linuxWebkitInputForceRepaint: 'Redesenare câmpuri la focus (Linux)',
|
||
linuxWebkitInputForceRepaintDesc: 'Soluție pentru WebKitGTK 2.50.x unde câmpurile text îngheață la clic. Pictogramele lupă pâlpâie scurt la focus.',
|
||
linuxWaylandTextRender: 'Randare text Wayland (Linux)',
|
||
linuxWaylandTextRenderDesc:
|
||
'Netezirea în interfață se aplică imediat. Accelerația hardware WebKit (ascuțit/GPU) este salvată și aplicată la următoarea pornire a aplicației — comutarea în timpul rulării poate îngheța WebKitGTK.',
|
||
linuxWaylandTextRenderBalanced: 'Echilibrat',
|
||
linuxWaylandTextRenderSharp: 'Ascuțit (prietenos cu CPU)',
|
||
linuxWaylandTextRenderGpu: 'Prioritate GPU',
|
||
linuxWaylandTextRenderMinimal: 'Minim (netezire CSS implicită)',
|
||
discordCoverSource: 'Sursa artei de copertă',
|
||
discordCoverSourceDesc: 'De unde să fie preluată arta de album afișată pe profilul tău de Discord.',
|
||
discordCoverNone: 'Niciuna (doar iconița aplicației)',
|
||
discordCoverServer: 'Server (prin informații album)',
|
||
discordCoverApple: 'Apple Music',
|
||
discordOptions: 'Opțiuni avansate Discord',
|
||
discordTemplates: 'Șablon text personalizat',
|
||
discordTemplatesDesc: 'Personalizează ce informații sunt afișate pe profilul tău de Discord. Variabile: {title}, {artist}, {album}',
|
||
discordTemplateDetails: 'Linia principală (detalii)',
|
||
discordTemplateState: 'Linia secundară (status)',
|
||
discordTemplateLargeText: 'Tooltip album (largeText)',
|
||
discordTemplateName: 'Linia din listă (name)',
|
||
nowPlayingEnabled: 'Se afișează în Now Playing',
|
||
nowPlayingEnabledDesc: 'Difuzează piesa redată curent către vizualizatorul de ascultare live a serverului. Dezactivează pentru a opri trimiterea datelor de redare.',
|
||
enableBandsintown: 'Date de turneu Bandsintown',
|
||
enableBandsintownDesc: 'Arată concertele următoare pentru artisul curent în tab-ul Informații. Datele sunt preluate din API-ul public Bandsintown.',
|
||
lyricsServerFirst: 'Preferă versurile de pe server',
|
||
lyricsServerFirstDesc: 'Verifică versurile furnizate de server (tag-uri încorporate, fișiere sidecar) înainte de interogarea LRCLIB. Dezactivează pentru a folosi LRCLIB primul.',
|
||
enableNeteaselyrics: 'Versuri Netease Cloud Music',
|
||
enableNeteaselyricsDesc: 'Folosește Netease Cloud Music ca ultimă soluție pentru versuri când serverul și LRCLIB nu returnează nimic. Cea mai bună acoperire pentru muzică Asiatică și internațională.',
|
||
lyricsSourcesTitle: 'Sursă versuri',
|
||
lyricsSourcesDesc: 'Alege ce surse se interoghează pentru versuri și în ce ordine. Trage pentru a reordona. Sursele dezactivate sunt ignorate complet.',
|
||
lyricsSourceServer: 'Server',
|
||
lyricsSourceLrclib: 'LRCLIB',
|
||
lyricsSourceNetease: 'Netease Cloud Music',
|
||
lyricsYouLyPlus: 'YouLyPlus (Karaoke)',
|
||
lyricsYouLyPlusDesc: 'Sincronizare cuvânt-cu-cuvânt dintr-un backend comunitar (Apple Music, Spotify, Musixmatch, QQ). Încercat primul; sursele activate de mai jos servesc drept rezervă.',
|
||
lyricsSourcesFallbackHint: 'Folosite ca rezervă când YouLyPlus nu găsește nimic. Trage pentru a reordona.',
|
||
lyricsSourcesPrimaryHint: 'Încercate în ordine. Trage pentru a reordona. Toate dezactivate = versuri dezactivate.',
|
||
lyricsStaticOnly: 'Afișează versurile doar ca text static',
|
||
lyricsStaticOnlyDesc: 'Redă versurile sincronizate fără scroll automat și fără evidențierea cuvintelor.',
|
||
downloadsTitle: 'Export ZIP & Arhivare',
|
||
downloadsFolderDesc: 'Folder destinație pentru albumele pe care le descarci ca fișiere ZIP în calculator.',
|
||
downloadsDefault: 'Folderul Download Implicit',
|
||
pickFolder: 'Selectează',
|
||
pickFolderTitle: 'Selectează Folderul de Download',
|
||
clearFolder: 'Golește folderul de download',
|
||
logout: 'Deconectare',
|
||
aboutTitle: 'Despre Psysonic',
|
||
aboutDesc: 'Un player muzical desktop modern făcut pentru Navidrome. Folosește API-ul Subsonic plus extensiile specifice Navidrome. Construit cu Tauri v2 cu un motor audio nativ Rust — ușor și rapid, dar împachetat cu funcționalități: bară de redare cu forme de undă, versuri sincronizate, integrare Last.fm, EQ 10 benzi, crossfade, redare fără spațiu între piese, Replay Gain, navigarea pe gen, și o librărie largă de teme.',
|
||
aboutLicense: 'Licență',
|
||
aboutLicenseText: 'GNU GPL v3 — liber de utilizat, modificat, și distribuit sub aceeași licență.',
|
||
aboutRepo: 'Cod Sursă pe GitHub',
|
||
aboutVersion: 'Versiune',
|
||
aboutBuiltWith: 'Construit cu Tauri · React · TypeScript · Rust/rodio',
|
||
aboutMaintainersLabel: 'Dezvoltatori',
|
||
aboutReleaseNotesLabel: 'Notițe lansare',
|
||
aboutReleaseNotesLink: "Deschide ce e nou pentru această versiune",
|
||
aboutContributorsLabel: 'Contribuabili',
|
||
showChangelogOnUpdate: "Arată 'Ce este nou' în update",
|
||
showChangelogOnUpdateDesc: "Arată un banner discret cu lista modificărilor deasupra Now Playing după un update. Apasă pentru a deschide lista modificărilor; X îl respinge.",
|
||
libraryGridMaxColumnsTitle: 'Grile cu carduri în bibliotecă',
|
||
libraryGridMaxColumnsPerfHint: 'Mai multe coloane înseamnă mai multe plăcuțe pe rând și mai multă muncă de layout și desen — se simte pe biblioteci foarte mari sau hardware lent.',
|
||
libraryGridMaxColumnsRangeLabel: 'Număr maxim de coloane ({{min}}–{{max}})',
|
||
libraryGridMaxColumnsDesc: 'Se aplică la albume, artiști, liste de redare, radio, offline și alte ecrane cu carduri. Mai puține coloane = plăcuțe mai mari și de obicei mai puțină încărcare pe CPU.',
|
||
libraryIndexTitle: 'Index local al bibliotecii (previzualizare)',
|
||
libraryIndexDesc: 'Păstrează o copie locală a bazei de piese a fiecărui server, astfel încât navigarea și căutarea rămân rapide și funcționează offline. Sincronizarea inițială rulează pentru toate serverele configurate; serverele offline sunt reîncercate automat.',
|
||
libraryIndexDeltaHint: 'Sincronizarea delta în fundal verifică serverele legate la fiecare 30 de secunde și rulează când este cazul — de obicei la 5–45 de minute, în funcție de dimensiunea bibliotecii și încărcare.',
|
||
libraryIndexEnable: 'Activează indexul local al bibliotecii',
|
||
libraryIndexEnableAllDesc: 'Indexează și sincronizează toate serverele configurate în fundal.',
|
||
libraryIndexNoServer: 'Adaugă mai întâi un server.',
|
||
libraryIndexServerListTitle: 'Servere indexate',
|
||
libraryIndexAllExcluded: 'Toate serverele sunt excluse din sincronizare. Reactivează indexul sau adaugă un server.',
|
||
libraryIndexServerOffline: 'Server offline — sincronizare amânată',
|
||
libraryIndexServerDeferred: 'Amânată',
|
||
libraryIndexServerSyncing: 'Se sincronizează…',
|
||
libraryIndexFullResync: 'Resincronizare completă',
|
||
libraryIndexDeltaSync: 'Sincronizare delta',
|
||
libraryIndexExcludeServer: 'Exclude din sincronizare',
|
||
libraryIndexExcludingServer: 'Se exclude…',
|
||
libraryIndexExcludedTitle: 'Excluse din sincronizare',
|
||
libraryIndexIncludeServer: 'Include din nou',
|
||
libraryIndexIncludingServer: 'Se include…',
|
||
libraryIndexStatus: 'Stare',
|
||
libraryIndexStatusIdle: 'Inactiv',
|
||
libraryIndexStatusProbing: 'Se verifică serverul…',
|
||
libraryIndexStatusInitial: 'Sincronizare inițială…',
|
||
libraryIndexStatusReady: 'Gata ({{count}} piese)',
|
||
libraryIndexStatusError: 'Eroare — vezi jurnalele',
|
||
libraryIndexProgressIngest: '{{count}} piese indexate…',
|
||
libraryIndexProgressVerify: '{{checked}} verificate ({{deleted}} eliminate)',
|
||
libraryIndexSyncNow: 'Sincronizează acum',
|
||
libraryIndexVerify: 'Verifică integritatea bibliotecii',
|
||
libraryIndexCancel: 'Anulează',
|
||
libraryIndexAutoReconcile: 'Reconciliere automată la scăderea numărului',
|
||
libraryIndexAutoReconcileDesc: 'Verifică automat piesele eliminate când serverul raportează mai puține decât se așteaptă.',
|
||
libraryIndexSyncError: 'Sincronizarea bibliotecii a eșuat: {{error}}',
|
||
libraryIndexBindError: 'Indexul nu a putut fi activat: {{error}}',
|
||
randomMixTitle: 'Lista neagră Mix Aleatoriu',
|
||
luckyMixMenuTitle: 'Arată Mixul Norocos în meniu',
|
||
luckyMixMenuDesc: 'Activează Mixul Norocos în Construiește un Mix și ca un element separat în meniu când navigarea împărțită este pornită. Vizibil doar când AudioMuse este activat pe serverul activ.',
|
||
randomMixBlacklistTitle: 'Cuvinte cheie personalizate pentru filtre',
|
||
randomMixBlacklistDesc: 'Piesele sunt excluse când orice cuvânt cheie corespunde cu genul, titlul, albumul sau artistul lor (activ când checkbox-ul de deasupra este pornit).',
|
||
randomMixBlacklistPlaceholder: 'Adaugă cuvânt cheie…',
|
||
randomMixBlacklistAdd: 'Adaugă',
|
||
randomMixBlacklistEmpty: 'Niciun cuvânt cheie adăugat încă.',
|
||
randomMixHardcodedTitle: 'Cuvinte cheie predefinite (activ când checkbox-ul este pornit)',
|
||
tabAudio: 'Audio',
|
||
tabStorage: 'Offline & Cache',
|
||
tabAppearance: 'Aparență',
|
||
tabThemes: 'Teme',
|
||
themesYourThemesTitle: 'Temele tale',
|
||
themesCvdTooltip: 'Sigur pentru daltonism – deuteranopie, protanopie, tritanopie',
|
||
themeStoreTitle: 'Magazin de teme',
|
||
themeStoreSubmitText: 'Ți-ai creat propria temă? Împărtășește-o cu comunitatea — mai multe informații în depozitul de teme.',
|
||
themeStoreSubmitLink: 'Deschide depozitul de teme',
|
||
themeStoreNetworkNotice: 'Theme Store încarcă catalogul și previzualizările de la servicii externe (CDN-ul jsDelivr și GitHub). Nu se trimit date personale.',
|
||
themeStoreSearchPlaceholder: 'Caută teme…',
|
||
themeStoreFilterMode: 'Filtrează după mod',
|
||
themeStoreModeAll: 'Toate',
|
||
themeStoreModeDark: 'Întunecat',
|
||
themeStoreModeLight: 'Luminos',
|
||
themeStoreRefresh: 'Reîmprospătează',
|
||
themeStoreLoading: 'Se încarcă temele…',
|
||
themeStoreError: 'Magazinul de teme nu a putut fi încărcat. Verifică conexiunea.',
|
||
themeStoreRetry: 'Reîncearcă',
|
||
themeStoreOfflineTitle: 'Theme Store este offline',
|
||
themeStoreEmpty: 'Nicio temă nu corespunde filtrelor tale.',
|
||
themeStoreActive: 'Activă',
|
||
themeStoreEnlarge: 'Mărește previzualizarea',
|
||
themeStoreByAuthor: 'de {{author}}',
|
||
themeMigrationNoticeTitle: 'Tema a fost mutată în magazin',
|
||
themeMigrationNoticeBody: '{{themes}} nu mai este inclusă în aplicație. O poți reinstala din Magazinul de Teme (Setări → Teme) sau poți alege altă temă.',
|
||
themeMigrationNoticeOpen: 'Deschide Magazinul de Teme',
|
||
themeStoreOffline: 'Se afișează ultimul catalog din cache — pari să fii offline.',
|
||
themeStoreInstall: 'Instalează',
|
||
themeStoreInstalling: 'Se instalează…',
|
||
themeStoreApply: 'Aplică',
|
||
themeStoreUpdate: 'Actualizează',
|
||
themeStoreUpdating: 'Se actualizează…',
|
||
themeStoreUninstall: 'Dezinstalează',
|
||
themeStoreInstallFailed: 'Instalarea a eșuat',
|
||
themeStorePagePrev: 'Pagina anterioară',
|
||
themeStorePageNext: 'Pagina următoare',
|
||
themeStorePageStatus: 'Pagina {{page}} din {{total}}',
|
||
themeImportTitle: 'Importă o temă',
|
||
themeImportButton: 'Importă tema…',
|
||
themeImporting: 'Se importă…',
|
||
themeImportHint: 'Încarcă o temă împachetată ca .zip (manifest.json + theme.css).',
|
||
themeImportSuccess: '„{{name}}” importată.',
|
||
themeImportErrorTitle: 'Această temă nu a putut fi importată',
|
||
themeImportErrorBody: 'Nu corespunde formatului de teme Psysonic. Poate a fost creată pentru altă versiune sau fișierul este incomplet — verifică dacă ai ales arhiva .zip corectă sau întreabă autorul temei.',
|
||
themeImportErrorDetails: 'Detalii tehnice',
|
||
themeImportConfirmTitle: 'Instalezi tema?',
|
||
themeImportConfirmBody: 'Instalezi „{{name}}” de {{author}}?',
|
||
themeImportConfirmRisk: 'Temele importate nu sunt verificate — instalează doar teme în care ai încredere.',
|
||
tabLibrary: 'Librărie',
|
||
tabServers: 'Servere',
|
||
tabLyrics: 'Versuri',
|
||
tabPersonalisation: 'Personalizare',
|
||
tabIntegrations: 'Integrări',
|
||
inputKeybindingsTitle: 'Scurtături tastatură',
|
||
aboutContributorsCount_one: '{{count}} contribuție',
|
||
aboutContributorsCount_other: '{{count}} contribuții',
|
||
searchPlaceholder: 'Caută setări…',
|
||
searchNoResults: 'Nicio setare nu corespunde cu ce ai căutat.',
|
||
integrationsPrivacyTitle: 'Notificare de confidențialitate',
|
||
integrationsPrivacyBody: 'Toate integrările din acest tab sunt <strong>opționale</strong> și trimit date către servicii externe sau server-ul tău Navidrome când sunt activate. Last.fm primește istoricul ascultărilor tale, Discord arată piesa redată curent în profilul tău, Bandsintown e interogat per artist pentru a aduce date de turnee, și distribuirea Now-Playing publică piesa curentă către alți useri din server-ul tău Navidrome. Dacă nu vrei vreo opțiune, doar lasă secțiunea corespunzătoare dezactivată',
|
||
homeCustomizerTitle: 'Scena Principală',
|
||
queueModeTitle: 'Mod de afișare a cozii',
|
||
queueModeQueueSub: 'Arată doar piesele următoare. Piesa curentă rămâne în antet și iese din listă după ce a fost redată.',
|
||
queueModePlaylistSub: 'Păstrează toată coada în listă, cu piesa curentă evidențiată sus; piesele redate rămân.',
|
||
queueModeTimelineSub: 'Centrează piesa curentă, cu istoricul redat deasupra și piesele următoare (în ordine aleatorie) dedesubt.',
|
||
queueToolbarTitle: 'Toolbar Coadă',
|
||
queueToolbarReset: 'Resetează la implicit',
|
||
queueToolbarSeparator: 'Separator',
|
||
sidebarTitle: 'Bara laterală',
|
||
sidebarReset: 'Resetează la implicit',
|
||
artistLayoutTitle: 'Secțiunile paginii artistului',
|
||
artistLayoutDesc: 'Trage pentru a reordona, comutați pentru a ascunde secțiuni individuale ale paginii de artist. Secțiunile fără date sunt ignorate automat.',
|
||
artistLayoutReset: 'Resetează la implicit',
|
||
artistLayoutBio: 'Biografie artist',
|
||
artistLayoutTopTracks: 'Top piese',
|
||
artistLayoutSimilar: 'Artiști similari',
|
||
artistLayoutAlbums: 'Albume',
|
||
artistLayoutFeatured: 'Prezentat și pe',
|
||
playlistLayoutTitle: 'Aspect pagină playlist',
|
||
playlistLayoutDesc: 'Afișează sau ascunde elemente individuale pe pagina playlistului.',
|
||
playlistLayoutReset: 'Resetare la implicit',
|
||
playerBarTitle: 'Bara de redare',
|
||
playerBarReset: 'Resetare la implicit',
|
||
playerBarStarRating: 'Evaluare cu stele',
|
||
playerBarFavorite: 'Favorit (inimă)',
|
||
playerBarLastfmLove: 'Last.fm love',
|
||
playerBarPlaybackRate: 'Viteză redare',
|
||
playerBarEqualizer: 'Egalizator',
|
||
playerBarMiniPlayer: 'Mini player',
|
||
playbackRateTitle: 'Viteză redare',
|
||
playbackRateEnabled: 'Activează viteza de redare',
|
||
playbackRateEnabledDesc: 'Viteză globală pentru toate piesele. Nu se aplică la radio și previzualizări.',
|
||
playbackRateStrategy: 'Strategie',
|
||
playbackRateStrategySpeed: 'Viteză',
|
||
playbackRateStrategyVarispeed: 'Cu ton',
|
||
playbackRateStrategyPreserve: 'Ton',
|
||
playbackRateSpeed: 'Viteză',
|
||
playbackRatePitch: 'Ton',
|
||
playbackRateDerivedPitch: 'Deplasare ton din viteză: {{value}}',
|
||
playbackRateAutoPitch: 'Tonul este corectat automat.',
|
||
playbackRateHint: '« Viteză » păstrează tonul natural. « Cu ton » schimbă tonul odată cu viteza. « Ton » adaugă o deplasare manuală. Consumă mai mult CPU decât « Cu ton ». Nu pentru radio, previzualizări sau Orbit.',
|
||
playbackRateNeutral: 'La 1,0× și fără deplasare de ton, redarea este normală.',
|
||
playbackRateOrbitPaused: 'Nu se aplică în sesiunile Orbit — redarea rămâne la 1,0× pentru sincronizare.',
|
||
playbackRateOrbitPausedShort: 'Orbit: 1,0× pentru sync.',
|
||
advancedMode: 'Avansat',
|
||
advancedModeTooltip: 'Afișează opțiuni avansate în toate filele de setări. Contribuții ale comunității care nu reflectă neapărat filozofia de design a mentenanților Psysonic.',
|
||
advancedBadge: 'Avansat',
|
||
sidebarDrag: 'Trage pentru a reordona',
|
||
sidebarFixed: 'Mereu vizibil',
|
||
nowPlayingTopTitle: '"Se Redă Acum" sus',
|
||
nowPlayingTopDesc: 'Fixează intrarea "Se Redă Acum" în partea de sus a barei laterale în loc de jos.',
|
||
randomNavSplitTitle: 'Navigare Mix împărțită',
|
||
randomNavSplitDesc: 'Arată "Mix Aleatoriu", "Albume Aleatorii", și "Mix Norocos" ca intrări separate în bara laterală în loc de hub-ul "Construiește un Mix".',
|
||
tabInput: 'Input',
|
||
tabUsers: 'Useri',
|
||
tabSystem: 'Sistem',
|
||
loggingTitle: 'Logging',
|
||
loggingModeDesc: 'Controlează verbozitatea log-urilor din backend în terminal.',
|
||
loggingModeOff: 'Oprit',
|
||
loggingModeNormal: 'Normal',
|
||
loggingModeDebug: 'Debug',
|
||
loggingExport: 'Exportă log-uri',
|
||
loggingExportSuccess: 'Log-uri exportate ({{count}} linii).',
|
||
loggingExportError: 'Nu s-au putut exporta log-urile.',
|
||
ratingsSectionTitle: 'Ratinguri',
|
||
ratingsSkipStarTitle: 'Sari peste 1 stea',
|
||
ratingsSkipStarDesc:
|
||
'După mai multe salturi la rând, setează ratingul piesei la 1★. Doar pentru piesele care nu au fost deja evaluate.',
|
||
ratingsSkipStarThresholdLabel: 'Salturi',
|
||
ratingsMixFilterTitle: 'Filtrează după rating',
|
||
ratingsMixFilterDesc:
|
||
'Filtrează elementele cu scor mic în {{mix}} și {{albums}}. Apasă pe steaua selectată din nou pentru a opri limita.',
|
||
ratingsMixMinSong: 'Piese',
|
||
ratingsMixMinAlbum: 'Albume',
|
||
ratingsMixMinArtist: 'Artiști',
|
||
ratingsMixMinThresholdAria: 'Stele minime: {{label}}',
|
||
backupTitle: 'Backup & Restaurare',
|
||
backupExport: 'Setări de export',
|
||
backupExportDesc: 'Salvează toate setările, profilele de server, configurări Last.fm, teme, EQ și combinații de taste către un fișier .psybkp. Parolele sunt stocate ca text — păstrează fișierul în siguranță.',
|
||
backupImport: 'Setări de Import',
|
||
backupImportDesc: 'Restaurează setări dintr-in fișier .psybkp. Aplicația se va reîncărca după import.',
|
||
backupImportConfirm: 'Aceasta va suprascrie toate setările curente. Continuați?',
|
||
backupSuccess: 'Backup salvat',
|
||
backupImportSuccess: 'Setări restaurate — se reîncarcă…',
|
||
backupImportError: 'Fișier de backup invalid sau corupt.',
|
||
shortcutsReset: 'Resetează la implicite',
|
||
shortcutListening: 'Apasă o tastă…',
|
||
shortcutUnbound: '—',
|
||
globalShortcutsTitle: 'Scurtături globale',
|
||
globalShortcutsNote: 'Funcționează la nivel de sistem și când Psysonic este în fundal. Necesită Ctrl, Alt, sau Super ca un modificator.',
|
||
shortcutClear: 'Golește',
|
||
shortcutPlayPause: 'Redă / Pauză',
|
||
shortcutNext: 'Următoarea piesă',
|
||
shortcutPrev: 'Piesa anterioară',
|
||
shortcutVolumeUp: 'Ridică volumul',
|
||
shortcutVolumeDown: 'Coboară volumul',
|
||
shortcutSeekForward: 'Dă înainte 10s',
|
||
shortcutSeekBackward: 'Dă înapoi 10s',
|
||
shortcutToggleQueue: 'Comutați coada',
|
||
shortcutOpenFolderBrowser: 'Deschide {{folderBrowser}}',
|
||
shortcutFullscreenPlayer: 'Player pe ecran complet',
|
||
shortcutNativeFullscreen: 'Ecran complet nativ',
|
||
shortcutOpenMiniPlayer: 'Deschide mini player',
|
||
shortcutStartSearch: 'Începe o căutare',
|
||
shortcutStartAdvancedSearch: 'Începe o căutare avansată',
|
||
shortcutToggleSidebar: 'Comutați bara laterală',
|
||
shortcutMuteSound: 'Opriți sunetul',
|
||
shortcutToggleEqualizer: 'Porniți / Comutați Egalizatorul',
|
||
shortcutToggleRepeat: 'Comutați repetarea',
|
||
shortcutOpenNowPlaying: 'Deschide "Now Playing"',
|
||
shortcutShowLyrics: 'Arată Versurile',
|
||
shortcutFavoriteCurrentTrack: 'Adaugă piesa curentă la favorite',
|
||
shortcutOpenHelp: 'Ajutor',
|
||
playbackTitle: 'Redare',
|
||
replayGain: 'Replay Gain',
|
||
replayGainDesc: 'Normalizează volumul pieselor folosind metadata ReplayGain',
|
||
replayGainMode: 'Mod',
|
||
replayGainAuto: 'Auto',
|
||
replayGainAutoDesc: 'Alege volumul albumului când piesele vecine din coadă sunt din același album, altfel volumul piesei.',
|
||
replayGainTrack: 'Piesă',
|
||
replayGainAlbum: 'Album',
|
||
replayGainPreGain: 'Pre-Gain (fișiere etichetate)',
|
||
replayGainPreGainDesc: 'Boost universal adăugat peste fiecare calculare ReplayGain. Folosește pentru a compensa dacă librăria ta se simte prea liniștită per total.',
|
||
replayGainFallback: 'Rezervă (neetichetat / radio)',
|
||
replayGainFallbackDesc: 'Aplicat la piesele (și stream-urile radio) care nu au tag-uri ReplayGain deloc, pentru ca conținutul neetichetat să nu se audă mai gălăgios decât restul.',
|
||
normalization: 'Normalizare',
|
||
normalizationDesc: 'Aliniază volumul perceput peste piese, albume și radio.',
|
||
normalizationOff: 'Oprit',
|
||
normalizationReplayGain: 'ReplayGain',
|
||
normalizationLufs: 'LUFS',
|
||
loudnessTargetLufs: 'Țintă LUFS',
|
||
loudnessTargetLufsDesc: 'Volumul de referință la care toate piesele sunt ajustate. Numere mai mici = volum mai mare. Serviciile de streaming sunt setate în mod obișnuit la -14 LUFS.',
|
||
loudnessPreAnalysisAttenuation: 'Atenuare pre-analiză',
|
||
loudnessPreAnalysisAttenuationDesc:
|
||
'Extra coborâre a volumului până când nivelul pentru această piesă este salvat. Streaming apoi folosește presupuneri aproximative, nu o măsurătoare completă. 0 dB = oprit; mai jos = mai încet. Numărul din dreapta este nivelul dB efectif pentru ținta curentă.',
|
||
loudnessPreAnalysisAttenuationRef: '{{eff}} dB efectiv cu ținta {{tgt}} LUFS.',
|
||
loudnessPreAnalysisAttenuationReset: 'Resetează la implicit',
|
||
loudnessFirstPlayNote:
|
||
'Prima redate a unei piese noi își poate schimba brusc volumul cât este măsurată. Următoarea redare folosește măsurătoarea stocată și este stabilă. Piesele următoare din coadă sunt de obicei pre-analizate în timpul piesei anterioare, deci acest fenomen se întâmplă rar în practică.',
|
||
crossfade: 'Crossfade',
|
||
crossfadeDesc: 'Estompează între piese',
|
||
crossfadeSecs: '{{n}} s',
|
||
notWithGapless: 'Nu este valabil cât Gapless este activ',
|
||
notWithCrossfade: 'Nu este valabil cât Crossfade este activ',
|
||
gapless: 'Playback Gapless',
|
||
gaplessDesc: 'Pre-încarcă următoarea piesă pentru a elimina spațiile dintre piese',
|
||
preservePlayNextOrder: 'Prezervă ordinea "Redă următoarea"',
|
||
preservePlayNextOrderDesc: 'Elementele Redă Următoarea noi adăugate sunt puse după cele adăugate mai devreme în loc să sară în față.',
|
||
trackPreviewsTitle: 'Previzualizări Piese',
|
||
trackPreviewsToggle: 'Pornește previzualizările pieselor',
|
||
trackPreviewsDesc: 'Arată butoanele de Redare și Pre-vizualizare în rând în listele de piese pentru o mostră rapidă din mijlocul piesei.',
|
||
trackPreviewStart: 'Poziția de începere',
|
||
trackPreviewStartDesc: 'Cât de departe în piesă să înceapă pre-vizualizarea (% din lungimea piesei).',
|
||
trackPreviewDuration: 'Durată',
|
||
trackPreviewDurationDesc: 'Cât de mult se redă fiecare pre-vizualizare până se oprește.',
|
||
trackPreviewDurationSecs: '{{n}} s',
|
||
trackPreviewLocationsTitle: 'Unde apar pre-vizualizările',
|
||
trackPreviewLocationsDesc: 'Alege ce liste arată butoanele de pre-vizualizare în linie.',
|
||
trackPreviewLocation_suggestions: 'Sugestii în playlist',
|
||
trackPreviewLocation_albums: 'Liste de piese în album',
|
||
trackPreviewLocation_playlists: 'În playlist-uri',
|
||
trackPreviewLocation_favorites: 'În favorite',
|
||
trackPreviewLocation_artist: 'În top piese ale artistului',
|
||
trackPreviewLocation_randomMix: 'În Mixul Aleatoriu',
|
||
nextTrackBufferingTitle: 'Preîncarcă',
|
||
infiniteQueue: 'Coadă Infinită',
|
||
infiniteQueueDesc: 'Adaugă automat piese aleatorii când coada se golește',
|
||
experimental: 'Experimental',
|
||
sidebarLyricsStyle: 'Stilul derulării versurilor',
|
||
sidebarLyricsStyleClassic: 'Clasic',
|
||
sidebarLyricsStyleClassicDesc: 'Derulează linia activă în centru.',
|
||
sidebarLyricsStyleApple: 'Ca Apple Music',
|
||
sidebarLyricsStyleAppleDesc: 'Linia activă este ancorată aproape de vârf cu animații netede.',
|
||
seekbarStyle: 'Stilul barei de redare',
|
||
seekbarStyleDesc: 'Alege aspectul barei de redare a playerului',
|
||
seekbarTruewave: 'Truewave',
|
||
seekbarPseudowave: 'Pseudowave',
|
||
seekbarLinedot: 'Linie & Punct',
|
||
seekbarBar: 'Bară',
|
||
seekbarThick: 'Bară groasă',
|
||
seekbarSegmented: 'Segmentat',
|
||
seekbarNeon: 'Strălucire Neon',
|
||
seekbarPulsewave: 'Undă de Puls',
|
||
seekbarParticletrail: 'Urmă de Particule',
|
||
seekbarLiquidfill: 'Lichid',
|
||
seekbarRetrotape: 'Bandă Retro',
|
||
themeSchedulerTitle: 'Schimbă Tema automat',
|
||
themeSchedulerEnable: 'Pornește temele programate',
|
||
themeSchedulerEnableSub: 'Schimbă automat între două teme pe baza orei din zi',
|
||
themeSchedulerDayTheme: 'Temă de zi',
|
||
themeSchedulerDayStart: 'Ziua începe la',
|
||
themeSchedulerNightTheme: 'Temă de noapte',
|
||
themeSchedulerNightStart: 'Noaptea începe la',
|
||
themeSchedulerActiveHint: 'Temele programate sunt active - aceste schimbări de teme sunt gestionate automat.',
|
||
visualOptionsTitle: 'Opțiuni vizuale',
|
||
coverArtBackground: 'Arta de fundal a copertei',
|
||
coverArtBackgroundSub: 'Arată arta de copertă blurată ca fundal în antetele albumelor/playlisturilor',
|
||
playlistCoverPhoto: 'Poza de copertă a playlistului',
|
||
playlistCoverPhotoSub: 'Arată poza grilă de copertă în afișajul de detalii al playlistului',
|
||
showBitrate: 'Arată Bitrate',
|
||
showBitrateSub: 'Arată bitrate-ul audio în listările de piese',
|
||
floatingPlayerBar: 'Bară Player plutitoare',
|
||
floatingPlayerBarSub: 'Păstrează bara playerului plutind deasupra conținutului',
|
||
uiScaleTitle: 'Scara interfaței',
|
||
uiScaleLabel: 'Zoom',
|
||
confirmDeleteServerLibrary: 'Ștergi și indexul local al bibliotecii pentru acest server? Apasă Anulează pentru a păstra copia din cache pentru utilizare offline.',
|
||
analyticsStrategyTitle: 'Strategii de analiză',
|
||
analyticsStrategyDesc: 'Alege stilul de analiză pentru bibliotecă.',
|
||
analyticsStrategyLabel: 'Strategie',
|
||
analyticsStrategyLazy: 'Leneșă',
|
||
analyticsStrategyLazyDesc: 'Analizează doar când piesele sunt redate sau intră în cache-ul hot/offline — consum minim de CPU și rețea.',
|
||
analyticsStrategyAdvanced: 'Agresivă',
|
||
analyticsStrategyAdvancedDesc: 'Scanare de fundal mai agresivă. După finalizare, primești BPM pentru toate piesele și încărcare instantă pentru loudness și waveform.',
|
||
analyticsStrategyPriorityTitle: 'Prioritate analiză (mereu activă)',
|
||
analyticsStrategyPriorityHigh: '1 — Redare curentă: descarcă și analizează mai întâi (bytes de playback, loudness backfill sau HTTP când e nevoie).',
|
||
analyticsStrategyPriorityMiddle: '2 — Urmează: următoarele ~5 piese din coadă și vecinii din hot-cache — analiză din cache/descărcări când se poate; backfill HTTP doar la miss.',
|
||
analyticsStrategyPriorityLow: '3 — Lot bibliotecă (doar Agresivă): coadă automată în fundal la final; reumplere pe watermark (~3× workers) fără a aștepta golirea cozii.',
|
||
analyticsStrategyServerLabel: 'Server',
|
||
analyticsStrategyProgressLabel: 'Progres analiză:',
|
||
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
|
||
analyticsStrategyActionsLabel: 'Acțiuni',
|
||
analyticsStrategyParallelismLabel: 'Workeri paraleli',
|
||
analyticsStrategyParallelismValue: '{{n}} thread-uri',
|
||
analyticsStrategyParallelismDesc: 'Câte piese se descarcă și se analizează simultan (HTTP + CPU). Valori mai mari accelerează procesarea bibliotecii, dar folosesc mai multă rețea și CPU.',
|
||
analyticsStrategyAdvancedWarning: 'Modul agresiv folosește mai mult CPU și lățime de bandă cât timp lotul bibliotecii rulează în fundal.',
|
||
analyticsStrategyServerRemoved: 'Server eliminat',
|
||
analyticsStrategyClearAction: 'Șterge analiza',
|
||
analyticsStrategyClearTitle: 'Ștergi analiza?',
|
||
analyticsStrategyClearDesc: 'Ștergerea analizei pentru {{server}} elimină waveforms și loudness din cache. Dacă readaugi serverul mai târziu, poate necesita reindexare îndelungată.',
|
||
analyticsStrategyClearCancel: 'Anulează',
|
||
analyticsStrategyClearConfirm: 'Șterge analiza',
|
||
analyticsStrategyClearSuccess: 'Analiza a fost ștearsă pentru serverul eliminat.',
|
||
analyticsStrategyClearError: 'Nu s-a putut șterge analiza pentru serverul eliminat.',
|
||
analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, blocat de piese eșuate)',
|
||
analyticsFailedTracksOpenTitle: 'Piese eșuate: {{count}}',
|
||
analyticsFailedTracksTitle: 'Piese cu analiză eșuată — {{server}}',
|
||
analyticsFailedTracksDesc: 'Aceste piese au eșuat repetat la decode/enrichment și sunt excluse din analiza automată în fundal.',
|
||
analyticsFailedTracksLoading: 'Se încarcă lista pieselor eșuate…',
|
||
analyticsFailedTracksEmpty: 'Nu există piese eșuate pentru acest server.',
|
||
analyticsFailedTracksClose: 'Închide',
|
||
analyticsFailedTracksExport: 'Exportă lista',
|
||
analyticsFailedTracksExportSuccess: 'Lista pieselor eșuate a fost exportată ({{count}}).',
|
||
analyticsFailedTracksExportError: 'Nu s-a putut exporta lista pieselor eșuate.',
|
||
analyticsFailedTracksRescan: 'Rescan pentru piese eșuate',
|
||
analyticsFailedTracksRescanSuccess: 'Rescan programat pentru {{count}} piese eșuate.',
|
||
analyticsFailedTracksRescanError: 'Nu s-a putut porni rescan-ul pentru piesele eșuate.',
|
||
analyticsFailedTracksLoadError: 'Nu s-au putut încărca piesele eșuate.',
|
||
backupImportAny: 'Importă backup',
|
||
backupImportAnyConfirm: 'Importă fișierul de backup selectat și aplică conținutul (setări, baze de date bibliotecă sau complet). Continui?',
|
||
backupModeFull: 'Complet',
|
||
backupModeLibrary: 'Baze de date bibliotecă',
|
||
backupModeConfig: 'Configurație',
|
||
backupFullDesc: 'Arhivează setările și bazele de date ale bibliotecii într-un singur fișier backup.',
|
||
backupFullExport: 'Exportă backup complet',
|
||
backupFullImport: 'Importă backup complet',
|
||
backupFullImportConfirm: 'Acest lucru va suprascrie setările, va înlocui bazele de date curente și le va muta în .bak. Continui?',
|
||
backupFullExportSuccess: 'Backup complet exportat.',
|
||
backupFullImportSuccess: 'Backup complet importat — reîncărcare…',
|
||
backupFullImportError: 'Nu s-a putut importa backup-ul complet.',
|
||
backupLibraryExport: 'Exportă bazele de date',
|
||
backupLibraryExportDesc: 'Creează o arhivă comprimată cu snapshot-uri SQLite curate ale bazelor de date de bibliotecă.',
|
||
backupLibraryImport: 'Importă bazele de date',
|
||
backupLibraryImportDesc: 'Restaurează bazele de date ale bibliotecii dintr-un fișier arhivă. Bazele curente sunt mutate în .bak înainte de comutare.',
|
||
backupLibraryImportConfirm: 'Acest lucru va înlocui bazele de date curente și le va muta în .bak. Continui?',
|
||
backupLibraryExportSuccess: 'Backup-ul bazelor de date a fost exportat.',
|
||
backupLibraryImportSuccess: 'Backup-ul bazelor de date a fost importat.',
|
||
backupLibraryImportError: 'Nu s-a putut importa backup-ul bazelor de date.',
|
||
backupOverlayExportTitle: 'Se creează backup-ul…',
|
||
backupOverlayImportTitle: 'Se restaurează backup-ul…',
|
||
backupOverlayHint: 'Poți lăsa fereastra deschisă cât timp procesăm fișierele. Introducerea este blocată temporar.',
|
||
};
|