From 93166c774a22765db4ae06499071be3499b5fee9 Mon Sep 17 00:00:00 2001 From: Psychotoxical <171614930+Psychotoxical@users.noreply.github.com> Date: Mon, 22 Jun 2026 00:56:37 +0200 Subject: [PATCH] feat(i18n): add Hungarian (hu) translation (#1149) * feat(i18n): add Hungarian (hu) translation files * feat(i18n): register Hungarian locale and language option * docs(changelog): Hungarian translation entry and credit (#1149) * fix(i18n): list Romanian in the Login language picker --- CHANGELOG.md | 6 + README.md | 2 +- src/components/settings/SystemTab.tsx | 1 + src/config/settingsCredits.ts | 1 + src/i18n.ts | 2 + src/locales/de/settings.ts | 1 + src/locales/en/settings.ts | 1 + src/locales/es/settings.ts | 1 + src/locales/fr/settings.ts | 1 + src/locales/hu/albumDetail.ts | 55 ++ src/locales/hu/albums.ts | 41 ++ src/locales/hu/artistDetail.ts | 52 ++ src/locales/hu/artists.ts | 19 + src/locales/hu/changelog.ts | 5 + src/locales/hu/common.ts | 70 +++ src/locales/hu/composerDetail.ts | 11 + src/locales/hu/composers.ts | 10 + src/locales/hu/connection.ts | 46 ++ src/locales/hu/contextMenu.ts | 33 ++ src/locales/hu/deviceSync.ts | 80 +++ src/locales/hu/entityRating.ts | 9 + src/locales/hu/favorites.ts | 26 + src/locales/hu/folderBrowser.ts | 4 + src/locales/hu/genres.ts | 15 + src/locales/hu/help.ts | 115 +++++ src/locales/hu/hero.ts | 9 + src/locales/hu/home.ts | 21 + src/locales/hu/index.ts | 95 ++++ src/locales/hu/licenses.ts | 13 + src/locales/hu/login.ts | 22 + src/locales/hu/losslessAlbums.ts | 7 + src/locales/hu/luckyMix.ts | 6 + src/locales/hu/migration.ts | 15 + src/locales/hu/miniPlayer.ts | 9 + src/locales/hu/mostPlayed.ts | 13 + src/locales/hu/musicNetwork.ts | 55 ++ src/locales/hu/nowPlaying.ts | 48 ++ src/locales/hu/nowPlayingInfo.ts | 24 + src/locales/hu/orbit.ts | 200 +++++++ src/locales/hu/player.ts | 69 +++ src/locales/hu/playlists.ts | 122 +++++ src/locales/hu/queue.ts | 64 +++ src/locales/hu/radio.ts | 37 ++ src/locales/hu/randomAlbums.ts | 4 + src/locales/hu/randomLanding.ts | 9 + src/locales/hu/randomMix.ts | 40 ++ src/locales/hu/search.ts | 87 ++++ src/locales/hu/settings.ts | 718 ++++++++++++++++++++++++++ src/locales/hu/sharePaste.ts | 20 + src/locales/hu/sidebar.ts | 45 ++ src/locales/hu/smartPlaylists.ts | 41 ++ src/locales/hu/songInfo.ts | 27 + src/locales/hu/statistics.ts | 93 ++++ src/locales/hu/tracks.ts | 16 + src/locales/hu/tray.ts | 8 + src/locales/hu/whatsNew.ts | 12 + src/locales/ja/settings.ts | 1 + src/locales/nb/settings.ts | 1 + src/locales/nl/settings.ts | 1 + src/locales/ro/settings.ts | 1 + src/locales/ru/settings.ts | 1 + src/locales/zh/settings.ts | 1 + src/pages/Login.tsx | 2 + 63 files changed, 2563 insertions(+), 1 deletion(-) create mode 100644 src/locales/hu/albumDetail.ts create mode 100644 src/locales/hu/albums.ts create mode 100644 src/locales/hu/artistDetail.ts create mode 100644 src/locales/hu/artists.ts create mode 100644 src/locales/hu/changelog.ts create mode 100644 src/locales/hu/common.ts create mode 100644 src/locales/hu/composerDetail.ts create mode 100644 src/locales/hu/composers.ts create mode 100644 src/locales/hu/connection.ts create mode 100644 src/locales/hu/contextMenu.ts create mode 100644 src/locales/hu/deviceSync.ts create mode 100644 src/locales/hu/entityRating.ts create mode 100644 src/locales/hu/favorites.ts create mode 100644 src/locales/hu/folderBrowser.ts create mode 100644 src/locales/hu/genres.ts create mode 100644 src/locales/hu/help.ts create mode 100644 src/locales/hu/hero.ts create mode 100644 src/locales/hu/home.ts create mode 100644 src/locales/hu/index.ts create mode 100644 src/locales/hu/licenses.ts create mode 100644 src/locales/hu/login.ts create mode 100644 src/locales/hu/losslessAlbums.ts create mode 100644 src/locales/hu/luckyMix.ts create mode 100644 src/locales/hu/migration.ts create mode 100644 src/locales/hu/miniPlayer.ts create mode 100644 src/locales/hu/mostPlayed.ts create mode 100644 src/locales/hu/musicNetwork.ts create mode 100644 src/locales/hu/nowPlaying.ts create mode 100644 src/locales/hu/nowPlayingInfo.ts create mode 100644 src/locales/hu/orbit.ts create mode 100644 src/locales/hu/player.ts create mode 100644 src/locales/hu/playlists.ts create mode 100644 src/locales/hu/queue.ts create mode 100644 src/locales/hu/radio.ts create mode 100644 src/locales/hu/randomAlbums.ts create mode 100644 src/locales/hu/randomLanding.ts create mode 100644 src/locales/hu/randomMix.ts create mode 100644 src/locales/hu/search.ts create mode 100644 src/locales/hu/settings.ts create mode 100644 src/locales/hu/sharePaste.ts create mode 100644 src/locales/hu/sidebar.ts create mode 100644 src/locales/hu/smartPlaylists.ts create mode 100644 src/locales/hu/songInfo.ts create mode 100644 src/locales/hu/statistics.ts create mode 100644 src/locales/hu/tracks.ts create mode 100644 src/locales/hu/tray.ts create mode 100644 src/locales/hu/whatsNew.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a070f40b..d8b581f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * New opt-in **Remember EQ per device** toggle (Settings → Audio → Audio Output Device, off by default): the equalizer profile — bands, pre-gain, enabled state and active preset — is saved per audio output device and restored automatically when you switch devices. +### Hungarian translation + +**By [@Psychotoxical](https://github.com/Psychotoxical), PR [#1149](https://github.com/Psychotoxical/psysonic/pull/1149)**, a gift to [@falu](https://github.com/falu) for the first independent review of Psysonic + +* Psysonic is now available in **Hungarian (Magyar)** — pick it from the language menu on the Settings and Login screens. + ## Changed diff --git a/README.md b/README.md index 5808808b..b854ad36 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Psysonic is built primarily for **Navidrome** and also works with **Gonic**, **A

-**Available languages:** English, German, Spanish, French, Norwegian Bokmål, Dutch, Romanian, Russian, Chinese and Japanese. +**Available languages:** English, German, Spanish, French, Norwegian Bokmål, Dutch, Romanian, Russian, Chinese, Japanese and Hungarian. More translations are added over time. diff --git a/src/components/settings/SystemTab.tsx b/src/components/settings/SystemTab.tsx index bee9ca5f..083624a6 100644 --- a/src/components/settings/SystemTab.tsx +++ b/src/components/settings/SystemTab.tsx @@ -73,6 +73,7 @@ export function SystemTab() { { value: 'zh', label: t('settings.languageZh') }, { value: 'ro', label: t('settings.languageRo') }, { value: 'ja', label: t('settings.languageJa') }, + { value: 'hu', label: t('settings.languageHu') }, ]} /> diff --git a/src/config/settingsCredits.ts b/src/config/settingsCredits.ts index ee0e66a4..95e5de01 100644 --- a/src/config/settingsCredits.ts +++ b/src/config/settingsCredits.ts @@ -380,6 +380,7 @@ const CONTRIBUTOR_ENTRIES = [ 'Settings refactor — reusable boxed panels (SettingsGroup/SettingsToggle) rolled across every tab, Normalization and Track transitions promoted to their own Audio categories, a unified Queue Settings group on Personalisation, and the Audio Output Device category gated out on macOS (PR #1126, #1130)', 'Artist artwork from fanart.tv — opt-in fullscreen background + artist-header banner, off by default (PR #1137)', 'Per-device equalizer profiles — opt-in, remembers and restores the EQ for each audio output device (PR #1146)', + 'Hungarian (Magyar) translation (PR #1149)', ], }, { diff --git a/src/i18n.ts b/src/i18n.ts index 9f6981cc..e082e637 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -10,6 +10,7 @@ import { nlTranslation } from './locales/nl'; import { esTranslation } from './locales/es'; import { roTranslation } from './locales/ro'; import { jaTranslation } from './locales/ja'; +import { huTranslation } from './locales/hu'; const savedLanguage = localStorage.getItem('psysonic_language') || 'en'; @@ -27,6 +28,7 @@ i18n ru: { translation: ruTranslation }, ro: { translation: roTranslation }, ja: { translation: jaTranslation }, + hu: { translation: huTranslation }, }, lng: savedLanguage, fallbackLng: 'en', diff --git a/src/locales/de/settings.ts b/src/locales/de/settings.ts index 37d66228..bca686d3 100644 --- a/src/locales/de/settings.ts +++ b/src/locales/de/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Schriftart', fontHintOpenDyslexic: 'Legasthenie-freundlich · keine Chinesisch-Unterstützung', theme: 'Design', diff --git a/src/locales/en/settings.ts b/src/locales/en/settings.ts index 58509fdf..37ba6712 100644 --- a/src/locales/en/settings.ts +++ b/src/locales/en/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Font', fontHintOpenDyslexic: 'Dyslexia-friendly · no Chinese support', theme: 'Theme', diff --git a/src/locales/es/settings.ts b/src/locales/es/settings.ts index f6cbfb19..d9974f8a 100644 --- a/src/locales/es/settings.ts +++ b/src/locales/es/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Fuente', fontHintOpenDyslexic: 'Compatible con dislexia · sin soporte para chino', theme: 'Tema', diff --git a/src/locales/fr/settings.ts b/src/locales/fr/settings.ts index fad21fc0..61e2bc5a 100644 --- a/src/locales/fr/settings.ts +++ b/src/locales/fr/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Police', fontHintOpenDyslexic: 'Adapté à la dyslexie · sans prise en charge du chinois', theme: 'Thème', diff --git a/src/locales/hu/albumDetail.ts b/src/locales/hu/albumDetail.ts new file mode 100644 index 00000000..cee8dc3b --- /dev/null +++ b/src/locales/hu/albumDetail.ts @@ -0,0 +1,55 @@ +export const albumDetail = { + back: 'Vissza', + orbitDoubleClickHint: 'Kattints duplán a szám Orbit-sorhoz adásához', + playAll: 'Összes lejátszása', + shareAlbum: 'Album megosztása', + enqueue: 'Sorba', + enqueueTooltip: 'A teljes album hozzáadása a sorhoz', + artistBio: 'Előadó életrajza', + download: 'Letöltés (ZIP)', + playTooltip: 'Az album lejátszása', + artistBioTooltip: 'Az előadó életrajzának elolvasása', + downloadTooltip: 'Az album letöltése ZIP-ként', + downloading: 'Betöltés…', + cacheOffline: 'Elérhetővé tétel offline', + offlineCached: 'Offline elérhető', + offlineQueued: 'A sorban', + offlineDownloading: 'Gyorsítótárazás… ({{n}}/{{total}})', + removeOffline: 'Offline gyorsítótár eltávolítása', + removeFromOfflineQueue: 'Eltávolítás az offline sorból', + offlineStorageFull: 'Az offline tároló megtelt (korlát: {{mb}} MB). Szabadíts fel helyet egy album törlésével az offline könyvtáradból, vagy növeld a korlátot a Beállításokban.', + offlineStorageGoToLibrary: 'Offline könyvtár', + offlineStorageGoToSettings: 'Beállítások', + favoriteAdd: 'Hozzáadás a kedvencekhez', + favoriteRemove: 'Eltávolítás a kedvencekből', + favorite: 'Kedvenc', + noBio: 'Nincs elérhető életrajz.', + moreByArtist: 'Több ettől: {{artist}}', + tracksCount: '{{n}} szám', + goToArtist: 'Ugrás ide: {{artist}}', + moreLabelAlbums: 'Több album a(z) {{label}} kiadótól', + trackTitle: 'Cím', + trackAlbum: 'Album', + trackArtist: 'Előadó', + trackGenre: 'Műfaj', + trackPlayCount: 'Lejátszások', + trackLastPlayed: 'Utoljára játszva', + trackBpm: 'BPM', + trackFormat: 'Formátum', + trackFavorite: 'Kedvenc', + trackRating: 'Értékelés', + trackDuration: 'Hossz', + trackTotal: 'Összesen', + columns: 'Oszlopok', + resetColumns: 'Visszaállítás alapértelmezettre', + notFound: 'Az album nem található.', + bioModal: 'Előadó életrajza', + bioClose: 'Bezárás', + ratingLabel: 'Értékelés', + enlargeCover: 'Nagyítás', + filterSongs: 'Dalok szűrése…', + sortNatural: 'Természetes', + sortByTitle: 'A–Z (cím)', + sortByArtist: 'A–Z (előadó)', + sortByAlbum: 'A–Z (album)', +}; diff --git a/src/locales/hu/albums.ts b/src/locales/hu/albums.ts new file mode 100644 index 00000000..a9e6d878 --- /dev/null +++ b/src/locales/hu/albums.ts @@ -0,0 +1,41 @@ +export const albums = { + title: 'Összes album', + sortByName: 'A–Z (album)', + sortByArtist: 'A–Z (előadó)', + sortByArtistYear: 'Előadó → év', + sortNewest: 'Legújabb elöl', + sortRandom: 'Véletlen', + yearFrom: 'Ettől', + yearTo: 'Eddig', + yearFilterClear: 'Évszűrő törlése', + yearFilterLabel: 'Év', + sortTooltip: 'Rendezés módosítása', + yearFilterTooltip: 'Szűrés kiadási év szerint', + compilationLabel: 'Válogatások', + compilationOnly: 'Csak válogatások', + compilationHide: 'Válogatások elrejtése', + compilationTooltipAll: 'Összes album · kattintás: csak válogatások', + compilationTooltipOnly: 'Csak válogatások · kattintás: válogatások elrejtése', + compilationTooltipHide: 'Válogatások elrejtve · kattintás: összes mutatása', + losslessLabel: 'Veszteségmentes', + losslessTooltipOn: 'Csak veszteségmentes albumok · kattints az összes mutatásához', + losslessTooltipOff: 'Csak veszteségmentes albumok mutatása', + select: 'Többszörös kijelölés', + startSelect: 'Többszörös kijelölés bekapcsolása', + cancelSelect: 'Mégse', + selectionCount: '{{count}} kijelölve', + downloadZips: 'ZIP-ek letöltése', + addOffline: 'Hozzáadás offline-hoz', + enqueueSelected_one: 'Sorba ({{count}})', + enqueueSelected_other: 'Sorba ({{count}})', + enqueueQueued_one: '{{count}} album hozzáadva a sorhoz', + enqueueQueued_other: '{{count}} album hozzáadva a sorhoz', + downloadingZip: 'Letöltés {{current}}/{{total}}: {{name}}', + downloadZipDone: '{{count}} ZIP letöltve', + downloadZipFailed: 'A(z) {{name}} letöltése nem sikerült', + offlineQueuing: '{{count}} album sorba állítása offline-hoz…', + offlineFailed: 'A(z) {{name}} offline hozzáadása nem sikerült', + noFavorites: 'Egyetlen kedvenc album sem felel meg a jelenlegi szűrőknek.', + noCompilations: 'Egyetlen válogatás sem felel meg a jelenlegi szűrőknek.', + noMatchingFilters: 'Egyetlen album sem felel meg a jelenlegi szűrőknek.', +}; diff --git a/src/locales/hu/artistDetail.ts b/src/locales/hu/artistDetail.ts new file mode 100644 index 00000000..c9f2b234 --- /dev/null +++ b/src/locales/hu/artistDetail.ts @@ -0,0 +1,52 @@ +export const artistDetail = { + back: 'Vissza', + albums: 'Albumok', + album: 'Album', + playAll: 'Összes lejátszása', + shareArtist: 'Előadó megosztása', + shuffle: 'Keverés', + radio: 'Rádió', + lastfmTooltip: 'Az előadó megnyitása a Last.fm-en', + wikipediaTooltip: 'Az előadó megnyitása a Wikipédián', + playAllTooltip: 'A teljes diszkográfia lejátszása', + shuffleTooltip: 'A teljes diszkográfia keverése', + radioTooltip: 'Rádió indítása az előadó alapján', + loading: 'Betöltés…', + noRadio: 'Nem található hasonló szám ehhez az előadóhoz.', + notFound: 'Az előadó nem található.', + albumsBy: '{{name}} albumai', + albumsByLossless: '{{name}} veszteségmentes albumai', + sortYearToggleAria: 'Album-évrendezés váltása kiadástípusonként', + sortYearDesc: 'Év, legújabb elöl', + sortYearAsc: 'Év, legrégebbi elöl', + topTracks: 'Legjobb számok', + topTracksLossless: 'Veszteségmentes számok', + noAlbums: 'Nem található album.', + trackTitle: 'Cím', + trackAlbum: 'Album', + trackDuration: 'Hossz', + favoriteAdd: 'Hozzáadás a kedvencekhez', + favoriteRemove: 'Eltávolítás a kedvencekből', + favorite: 'Kedvenc', + albumCount_one: '{{count}} album', + albumCount_other: '{{count}} album', + openedInBrowser: 'Megnyitva a böngészőben', + featuredOn: 'Közreműködésként szerepel', + similarArtists: 'Hasonló előadók', + cacheOffline: 'Diszkográfia mentése offline-ra', + offlineCached: 'Diszkográfia gyorsítótárazva', + offlineQueued: 'A sorban', + offlineDownloading: 'Gyorsítótárazás… ({{done}}/{{total}} album)', + uploadImage: 'Előadói kép feltöltése', + uploadImageError: 'A kép feltöltése nem sikerült', + releaseTypes: { + album: 'Album', + ep: 'EP', + single: 'Kislemez', + compilation: 'Válogatás', + live: 'Koncert', + soundtrack: 'Filmzene', + remix: 'Remix', + other: 'Egyéb', + }, +}; diff --git a/src/locales/hu/artists.ts b/src/locales/hu/artists.ts new file mode 100644 index 00000000..be538593 --- /dev/null +++ b/src/locales/hu/artists.ts @@ -0,0 +1,19 @@ +export const artists = { + title: 'Előadók', + search: 'Keresés…', + all: 'Mind', + other: 'Egyéb', + gridView: 'Rácsnézet', + listView: 'Listanézet', + imagesOn: 'Előadói képek bekapcsolva — növelheti a hálózati és rendszerterhelést', + imagesOff: 'Előadói képek kikapcsolva — csak a kezdőbetűk látszanak', + loadMore: 'Több betöltése', + notFound: 'Nem található előadó.', + albumCount_one: '{{count}} album', + albumCount_other: '{{count}} album', + selectionCount: '{{count}} kijelölve', + select: 'Többszörös kijelölés', + startSelect: 'Többszörös kijelölés bekapcsolása', + cancelSelect: 'Mégse', + addToPlaylist: 'Hozzáadás lejátszási listához', +}; diff --git a/src/locales/hu/changelog.ts b/src/locales/hu/changelog.ts new file mode 100644 index 00000000..bb1ccfea --- /dev/null +++ b/src/locales/hu/changelog.ts @@ -0,0 +1,5 @@ +export const changelog = { + modalTitle: 'Újdonságok', + dontShowAgain: 'Ne jelenjen meg többé', + close: 'Értem', +}; diff --git a/src/locales/hu/common.ts b/src/locales/hu/common.ts new file mode 100644 index 00000000..e5cbd794 --- /dev/null +++ b/src/locales/hu/common.ts @@ -0,0 +1,70 @@ +export const common = { + albums: 'Albumok', + album: 'Album', + loading: 'Betöltés…', + loadingMore: 'Betöltés…', + loadingPlaylists: 'Lejátszási listák betöltése…', + noAlbums: 'Nem található album.', + downloading: 'Letöltés…', + downloadZip: 'Letöltés (ZIP)', + back: 'Vissza', + backToTop: 'Vissza a tetejére', + cancel: 'Mégse', + close: 'Bezárás', + save: 'Mentés', + delete: 'Törlés', + use: 'Használat', + add: 'Hozzáadás', + new: 'Új', + active: 'Aktív', + download: 'Letöltés', + chooseDownloadFolder: 'Letöltési mappa kiválasztása', + noFolderSelected: 'Nincs kiválasztott mappa', + rememberDownloadFolder: 'Mappa megjegyzése', + filterGenre: 'Műfajszűrő', + filterGenreTooltip: 'Szűrés műfaj szerint', + filterSearchGenres: 'Műfajok keresése…', + filterNoGenres: 'Nincs egyező műfaj', + filterClear: 'Törlés', + favorites: 'Kedvencek', + favoritesTooltipOff: 'Csak kedvencek mutatása', + favoritesTooltipOn: 'Összes mutatása', + play: 'Lejátszás', + addToQueue: 'Hozzáadás a sorhoz', + bulkSelected: '{{count}} kijelölve', + clearSelection: 'Kijelölés törlése', + bulkAddToPlaylist: 'Hozzáadás lejátszási listához', + bulkRemoveFromPlaylist: 'Eltávolítás a lejátszási listából', + bulkClear: 'Kijelölés törlése', + updaterAvailable: 'Elérhető frissítés', + updaterVersion: 'A v{{version}} elérhető', + updaterWebsite: 'Weboldal', + updaterModalTitle: 'Új verzió érhető el', + updaterChangelog: 'Újdonságok', + updaterDownloadBtn: 'Letöltés most', + updaterSkipBtn: 'Verzió kihagyása', + updaterRemindBtn: 'Emlékeztess később', + updaterDone: 'A letöltés kész', + updaterShowFolder: 'Megjelenítés a mappában', + updaterInstallHint: 'Zárd be a Psysonicot, és futtasd a telepítőt kézzel.', + updaterAurHint: 'Telepítsd a frissítést az AUR-on keresztül:', + updaterErrorMsg: 'A letöltés nem sikerült', + updaterRetryBtn: 'Újra', + updaterInstallNow: 'Telepítés most', + updaterMacReadyTitle: 'Telepítésre kész', + updaterMacReady: 'A frissítés letöltődik, ellenőrződik és helyben települ — nincs szükség DMG-re. Az alkalmazás a végén automatikusan újraindul.', + updaterTrustNotarized: 'Apple által hitelesítve', + updaterTrustSignature: 'Aláírás ellenőrizve', + updaterMacDoneTitle: 'A frissítés telepítve', + updaterRestartingIn: 'Újraindítás {{n}} mp múlva…', + updaterRestarting: 'Újraindítás…', + updaterRestartNow: 'Újraindítás most', + durationHoursMinutes: '{{hours}} ó {{minutes}} p', + durationMinutesOnly: '{{minutes}} p', + updaterOpenGitHub: 'Megnyitás a GitHubon', + filters: 'Szűrők', + more: 'több', + yearRange: 'Évtartomány', + clearAll: 'Összes törlése', + libraryEmpty: 'A könyvtárad üres.', +}; diff --git a/src/locales/hu/composerDetail.ts b/src/locales/hu/composerDetail.ts new file mode 100644 index 00000000..fa8d816c --- /dev/null +++ b/src/locales/hu/composerDetail.ts @@ -0,0 +1,11 @@ +export const composerDetail = { + back: 'Vissza', + notFound: 'A zeneszerző nem található.', + about: 'A zeneszerzőről', + works: 'Művek', + noWorks: 'Nem található mű.', + workCount_one: '{{count}} mű', + workCount_other: '{{count}} mű', + shareComposer: 'Zeneszerző megosztása', + unknownComposer: 'Zeneszerző', +}; diff --git a/src/locales/hu/composers.ts b/src/locales/hu/composers.ts new file mode 100644 index 00000000..8ddfc634 --- /dev/null +++ b/src/locales/hu/composers.ts @@ -0,0 +1,10 @@ +export const composers = { + title: 'Zeneszerzők', + search: 'Keresés…', + notFound: 'Nem található zeneszerző.', + unsupported: 'A zeneszerző szerinti böngészéshez Navidrome 0.55 vagy újabb szükséges.', + loadFailed: 'A zeneszerzők betöltése nem sikerült.', + retry: 'Újra', + involvedIn_one: '{{count}} albumban közreműködött', + involvedIn_other: '{{count}} albumban közreműködött', +}; diff --git a/src/locales/hu/connection.ts b/src/locales/hu/connection.ts new file mode 100644 index 00000000..d8255260 --- /dev/null +++ b/src/locales/hu/connection.ts @@ -0,0 +1,46 @@ +export const connection = { + connected: 'Csatlakozva', + connectedTo: 'Csatlakozva ehhez: {{server}}', + disconnected: 'Szétkapcsolva', + disconnectedFrom: 'A(z) {{server}} nem érhető el — kattints a beállítások ellenőrzéséhez', + checking: 'Csatlakozás…', + extern: 'Külső', + offlineTitle: 'Nincs szerverkapcsolat', + offlineSubtitle: 'A(z) {{server}} nem érhető el. Ellenőrizd a hálózatot vagy a szervert.', + offlineModeBanner: 'Offline mód — lejátszás a helyi gyorsítótárból', + offlineNoCacheBanner: 'Nincs szerverkapcsolat — a(z) {{server}} nem érhető el', + offlineLibraryTitle: 'Offline könyvtár', + offlineLibraryDiskLabel: 'Lemezen', + offlineLibraryDiskUsage: 'Lemezen: {{size}}', + offlineLibraryDiskUsageLoading: 'Lemezen: …', + offlineLibraryDiskTierLibrary: 'Offline könyvtár (media/library): {{size}}', + offlineLibraryDiskTierFavorites: 'Kedvencek (media/favorites): {{size}}', + offlineLibraryEmpty: 'Még nincs gyorsítótárazott album. Lépj online-ra, nyiss meg egy albumot, és kattints az „Elérhetővé tétel offline" gombra.', + offlinePlaybackUnavailable: 'Az album helyi fájljai hiányoznak vagy nincsenek indexelve.', + offlineCachedOnServer: 'Itt: {{server}}', + offlineAlbumCount: '{{n}} album', + offlineAlbumCount_plural: '{{n}} album', + offlineFilterAll: 'Mind', + offlineFilterAlbums: 'Albumok', + offlineFilterPlaylists: 'Lejátszási listák', + offlineFilterArtists: 'Diszkográfiák', + offlineCacheQueueTitle: 'Sor gyorsítótár', + offlineCacheQueueSubtitle: '{{n}} szám a media/cache mappában — keverés és lejátszás', + offlineCacheQueuePlayAria: 'Összes gyorsítótárazott szám keverése és lejátszása', + offlineFavoritesQueueTitle: 'Kedvencek', + offlineFavoritesQueuePlayAria: 'Összes offline mentett kedvenc keverése és lejátszása', + retry: 'Újra', + serverSettings: 'Szerverbeállítások', + switchServerTitle: 'Szerverváltás', + switchServerHint: 'Kattints másik mentett szerver kiválasztásához.', + manageServers: 'Szerverek kezelése…', + switchFailed: 'A váltás nem sikerült — a szerver nem érhető el.', + queueSynced: 'A sor szinkronban van a szerverrel', + queuePullHint: 'Kattints a lejátszási sor lekéréséhez innen: {{server}}', + queueLocalEditHint: 'A lejátszási sor helyben módosult — az automatikus szinkron szünetel. Kattints a szerverről való lekéréshez.', + queuePulling: 'Lejátszási sor lekérése…', + queuePullSuccess: 'A lejátszási sor frissítve a szerverről', + queuePullEmpty: 'A szerver lejátszási sora üres', + queuePullFailed: 'A lejátszási sor lekérése a szerverről nem sikerült', + queuePullAria: 'Lejátszási sor szinkronizálása a szerverről', +}; diff --git a/src/locales/hu/contextMenu.ts b/src/locales/hu/contextMenu.ts new file mode 100644 index 00000000..8676fdd9 --- /dev/null +++ b/src/locales/hu/contextMenu.ts @@ -0,0 +1,33 @@ +export const contextMenu = { + playNow: 'Lejátszás most', + playNext: 'Lejátszás következőként', + addToQueue: 'Hozzáadás a sorhoz', + enqueueAlbum: 'Album a sorba', + enqueueAlbums_one: '{{count}} album a sorba', + enqueueAlbums_other: '{{count}} album a sorba', + startRadio: 'Rádió indítása', + instantMix: 'Azonnali mix', + instantMixFailed: 'Az azonnali mix összeállítása nem sikerült — szerver- vagy bővítményhiba.', + cliMixNeedsTrack: 'Semmi sem szól — indítsd el a lejátszást, majd futtasd újra a mix parancsot.', + networkLove: 'Kedvelés itt: {{provider}}', + networkUnlove: 'Kedvelés visszavonása itt: {{provider}}', + favorite: 'Kedvenc', + favoriteArtist: 'Előadó kedvencnek', + favoriteAlbum: 'Album kedvencnek', + unfavorite: 'Eltávolítás a kedvencekből', + unfavoriteArtist: 'Előadó eltávolítása a kedvencekből', + unfavoriteAlbum: 'Album eltávolítása a kedvencekből', + removeFromQueue: 'Eltávolítás a sorból', + removeFromPlaylist: 'Eltávolítás a lejátszási listából', + openAlbum: 'Album megnyitása', + goToArtist: 'Ugrás az előadóhoz', + download: 'Letöltés (ZIP)', + addToPlaylist: 'Hozzáadás lejátszási listához', + selectedPlaylists: '{{count}} lejátszási lista kijelölve', + selectedAlbums: '{{count}} album kijelölve', + selectedArtists: '{{count}} előadó kijelölve', + songInfo: 'Száminfó', + shareLink: 'Megosztási link másolása', + shareCopied: 'A megosztási link a vágólapra másolva.', + shareCopyFailed: 'A vágólapra másolás nem sikerült.', +}; diff --git a/src/locales/hu/deviceSync.ts b/src/locales/hu/deviceSync.ts new file mode 100644 index 00000000..5004af24 --- /dev/null +++ b/src/locales/hu/deviceSync.ts @@ -0,0 +1,80 @@ +export const deviceSync = { + title: 'Eszköz-szinkronizálás', + targetFolder: 'Célmappa', + noFolderChosen: 'Nincs kiválasztott mappa', + selectDrive: 'Válassz meghajtót…', + refreshDrives: 'Meghajtók frissítése', + noDrivesDetected: 'Nem észlelhető cserélhető meghajtó', + browseManual: 'Kézi tallózás…', + free: 'szabad', + notMountedVolume: 'A cél nincs csatolt köteten. Lehet, hogy a meghajtót leválasztották.', + chooseFolder: 'Kiválasztás…', + targetDevice: 'Céleszköz', + schemaLabel: 'Elnevezési séma', + schemaHint: 'Rögzített séma a megbízható, operációs rendszerek közötti szinkronhoz. A lejátszási listák .m3u8 fájlként íródnak, amelyek az album számaira hivatkoznak — nincsenek duplikátumok az eszközön.', + migrateButton: 'Meglévő fájlok átrendezése…', + migrateTooltip: 'A meglévő fájlok átnevezése az eszközön az új sémába (a régi fájlnévsablonból).', + migrateTitle: 'Meglévő fájlok átrendezése', + migrateLoading: 'Meglévő fájlok elemzése…', + migrateNothingToDo: 'Minden meglévő fájl már megfelel az új sémának — nincs teendő.', + migrateNoTemplate: 'Nem található régi fájlnévsablon az eszközön. Az átköltöztetés csak akkor érvényes, ha a pendrive olyan Psysonic-verzióval volt szinkronizálva, amely támogatta az egyéni sablonokat.', + migrateFilesToRename: 'fájl lesz átnevezve', + migrateUnchanged: '{{n}} fájl már a helyes útvonalon van', + migrateCollisions: '{{n}} fájl nem nevezhető át automatikusan (több szám ugyanarra a célra mutat). Ezeket érintetlenül hagyjuk — a következő szinkron újratölti őket a helyes helyre.', + migratePreviewNote: 'Régi sablon: {{tpl}}', + migrateExecuting: 'Fájlok átnevezése…', + migrateSuccess: '{{n}} fájl sikeresen átnevezve', + migrateFailed: '{{n}} átnevezés nem sikerült', + migrateShowErrors: 'Hibák megjelenítése', + migrateStart: 'Átnevezés indítása', + onDevice: 'Eszközkezelő', + addSources: 'Hozzáadás…', + colName: 'Név', + colType: 'Típus', + colStatus: 'Állapot', + syncResult: '{{done}} átvíve, {{skipped}} már naprakész ({{total}} összesen)', + deleteFromDevice: 'Megjelölés törlésre ({{count}})', + confirmDelete: 'Törölsz {{count}} elemet az eszközről: {{names}}?', + deleteComplete: '{{count}} elem eltávolítva az eszközről.', + manifestImported: '{{count}} forrás importálva az eszköz manifesztjéből.', + selectedSources: 'Kiválasztott források', + noSourcesSelected: 'Nincs kiválasztott forrás. Kattints a böngészőben elemekre a hozzáadásukhoz.', + clearAll: 'Összes törlése', + tabPlaylists: 'Lejátszási listák', + tabAlbums: 'Albumok', + tabArtists: 'Előadók', + searchPlaceholder: 'Keresés…', + syncButton: 'Szinkronizálás az eszközre', + actionTransfer: 'Átvitel az eszközre', + actionDelete: 'Törlés az eszközről', + actionApplyAll: 'Összes módosítás alkalmazása', + cancel: 'Mégse', + noTargetDir: 'Először válassz célmappát.', + noSources: 'Válassz legalább egy forrást.', + noTracks: 'Nem található szám a kiválasztott forrásokban.', + fetchError: 'A számok lekérése a szerverről nem sikerült.', + syncComplete: 'A szinkronizálás kész.', + dismiss: 'Elvetés', + cancelSync: 'Mégse', + syncCancelled: 'Szinkronizálás megszakítva ({{done}} / {{total}} átvíve).', + statusSynced: 'Szinkronizálva', + statusPending: 'Függőben', + statusDeletion: 'Törlés', + markForDeletion: 'Megjelölés törlésre', + undoDeletion: 'Törlés visszavonása', + removeSource: 'Eltávolítás', + syncInBackground: 'A szinkronizálás a háttérben elindult — elnavigálhatsz.', + syncInProgress: '{{done}} / {{total}} szám…', + scanningDevice: 'Eszköz vizsgálata…', + syncSummary: 'Szinkronizálás összegzése', + calculating: 'A szükséges adatmennyiség kiszámítása…', + filesToAdd: 'Hozzáadandó fájlok:', + filesToDelete: 'Törlendő fájlok:', + netChange: 'Nettó változás:', + availableSpace: 'Elérhető lemezterület:', + spaceWarning: 'Figyelem: a céleszközön a jelentett szerint nincs elég hely.', + proceed: 'Szinkronizálás folytatása', + notEnoughSpace: 'Nincs elég fizikai lemezterület!', + liveSearch: 'Élő', + randomAlbumsLabel: 'Véletlen albumok', +}; diff --git a/src/locales/hu/entityRating.ts b/src/locales/hu/entityRating.ts new file mode 100644 index 00000000..c4f87b3c --- /dev/null +++ b/src/locales/hu/entityRating.ts @@ -0,0 +1,9 @@ +export const entityRating = { + albumShort: 'Album értékelése', + artistShort: 'Előadó értékelése', + albumAriaLabel: 'Album értékelése', + artistAriaLabel: 'Előadó értékelése', + selectedArtistsRatingAriaLabel: '{{count}} kijelölt előadó csillagos értékelése', + selectedAlbumsRatingAriaLabel: '{{count}} kijelölt album csillagos értékelése', + saveFailed: 'Az értékelés mentése nem sikerült.', +}; diff --git a/src/locales/hu/favorites.ts b/src/locales/hu/favorites.ts new file mode 100644 index 00000000..b4bbfd9d --- /dev/null +++ b/src/locales/hu/favorites.ts @@ -0,0 +1,26 @@ +export const favorites = { + title: 'Kedvencek', + empty: 'Még nem mentettél kedvenceket.', + artists: 'Előadók', + albums: 'Albumok', + songs: 'Dalok', + enqueueAll: 'Összes hozzáadása a sorhoz', + enqueueSelected: 'Kijelöltek hozzáadása a sorhoz', + playAll: 'Összes lejátszása', + playSelected: 'Kijelöltek lejátszása', + removeSong: 'Eltávolítás a kedvencekből', + stations: 'Rádióállomások', + showingFiltered: '{{filtered}}/{{total}} megjelenítve ({{artist}})', + showingCount: '{{filtered}}/{{total}} megjelenítve', + clearArtistFilter: 'Előadószűrő törlése', + noFilterResults: 'Nincs találat a kiválasztott szűrőkkel.', + allArtists: 'Összes előadó', + topArtists: 'Top előadók kedvencek szerint', + topArtistsSongCount_one: '{{count}} dal', + topArtistsSongCount_other: '{{count}} dal', + offlineTooltip: 'Kedvencek mentése offline hallgatáshoz', + offlineJobName: 'Kedvencek', + offlineSemaphoreSyncing: 'Kedvencek szinkronizálása… {{saved}}/{{total}}', + offlineSemaphoreSynced: 'Minden kedvenc mentve offline hallgatáshoz', + offlineSemaphoreError: 'Szinkronizálási hiba — néhány szám nem menthető', +}; diff --git a/src/locales/hu/folderBrowser.ts b/src/locales/hu/folderBrowser.ts new file mode 100644 index 00000000..cd239923 --- /dev/null +++ b/src/locales/hu/folderBrowser.ts @@ -0,0 +1,4 @@ +export const folderBrowser = { + empty: 'Üres mappa', + error: 'A betöltés nem sikerült', +}; diff --git a/src/locales/hu/genres.ts b/src/locales/hu/genres.ts new file mode 100644 index 00000000..08ace1c2 --- /dev/null +++ b/src/locales/hu/genres.ts @@ -0,0 +1,15 @@ +export const genres = { + title: 'Műfajok', + genreCount: 'Műfaj', + albumCount_one: '{{count}} album', + albumCount_other: '{{count}} album', + loading: 'Műfajok betöltése…', + empty: 'Nem található műfaj.', + albumsLoading: 'Albumok betöltése…', + albumsEmpty: 'Nem található album ehhez a műfajhoz.', + loadMore: 'Több betöltése', + back: 'Vissza', + playTooltip: 'Lejátszás (tartsd nyomva a keveréshez)', + shuffle: 'Keverés', + addToQueue: 'Hozzáadás a sorhoz', +}; diff --git a/src/locales/hu/help.ts b/src/locales/hu/help.ts new file mode 100644 index 00000000..d9ac600f --- /dev/null +++ b/src/locales/hu/help.ts @@ -0,0 +1,115 @@ +export const help = { + title: 'Súgó', + searchPlaceholder: 'Súgó keresése…', + noResults: 'Nincs egyező téma. Próbálj másik keresési kifejezést.', + // ── Section 1: Getting Started ───────────────────────────────────────── + s1: 'Első lépések', + q1: 'Mely szerverek kompatibilisek?', + a1: 'A Psysonic elsősorban a Navidrome-hoz készült, és teljesen Subsonic-kompatibilis — a Gonic, az Airsonic, az LMS és más Subsonic-API szerverek is működnek. Néhány speciális funkció (értékelések, okos lejátszási listák, varázsszöveg-megosztás, felhasználókezelés) Navidrome-ot igényel.', + q2: 'Hogyan adok hozzá szervert?', + a2: 'Beállítások → Szerverek → Szerver hozzáadása. Add meg az URL-t (pl. http://192.168.1.100:4533), a felhasználónevet és a jelszót. A Psysonic mentés előtt teszteli a kapcsolatot — ha sikertelen, semmi sem kerül mentésre. Annyi szervert adhatsz hozzá, amennyit szeretnél, és bármikor válthatsz közöttük a fejlécben; egyszerre csak egy aktív.', + q3: 'Gyors körkép a felületről?', + a3: 'Oldalsáv (bal) a navigációhoz, Főszínpad / oldalak középen, Lejátszósáv alul, és a Lejátszási sor panel jobbra (a jobb felső fejlécben kapcsolható, a Most szól jelző mellett). A felső keresősáv a teljes könyvtáradban keres; a „Most szól" megmutatja, mit hallgatnak éppen más felhasználók ugyanazon a Navidrome szerveren.', + // ── Section 2: Playback & Queue ──────────────────────────────────────── + s2: 'Lejátszás és sor', + q4: 'Hogyan használom a sort?', + a4: 'Nyisd meg a Lejátszási sor panelt a jobb felső fejlécből. Húzd a sorokat az átrendezéshez, ejtsd kívülre az eltávolításhoz, vagy használd a sor eszköztárát a kereséshez, a sor lejátszási listaként mentéséhez vagy egy számra ugráshoz. Húzd ki a sorokat a panelből, hogy máshová ejtsd őket átvitelként.', + q5: 'Szünetmentes vs áttűnés — mi a különbség?', + a5: 'A szünetmentes előpufferezi a következő számot, így nincs csend a dalok között (legjobb koncertalbumokhoz és DJ-mixekhez). Az áttűnés a jelenlegi számot kihalkítja, miközben a következő 1–10 mp alatt felerősödik (legjobb kevert mixekhez). Kölcsönösen kizárják egymást — az egyik bekapcsolása kikapcsolja a másikat. Mindkettő a Beállítások → Hang menüben állítható.', + q6: 'Mi a végtelen sor?', + a6: 'Amikor a sor kifogy és az Ismétlés ki van kapcsolva, a Psysonic csendben hasonló / véletlen számokat fűz a könyvtáradból, így a lejátszás soha nem áll le. Az automatikusan hozzáadott számok egy „— Automatikusan hozzáadva —" elválasztó alatt jelennek meg. A sor fejlécében a végtelen ikonnal kapcsolható; az automatikus hozzáadásokat műfajra korlátozhatod a Beállítások → Sor menüben.', + q7: 'Többszörös kijelölés és Shift-kattintásos tartomány?', + a7: 'Aktiváld a „Kijelölés" funkciót az Albumok / Új megjelenések / Véletlen albumok / Lejátszási listák oldalon. Kattints egy elemre a ki/bekapcsolásához, majd tartsd lenyomva a Shiftet, és kattints egy másik elemre, hogy a látható sorrendben mindent kijelölj közöttük. A Shift-kattintások a legutóbb kattintott horgonytól terjednek. A rács feletti eszköztár tömeges műveleteket kínál (sor, letöltés, törlés stb.).', + q8: 'Billentyűparancsok és globális gyorsbillentyűk?', + a8: 'Alapértelmezett alkalmazásbeli billentyűk: Space = Lejátszás / Szünet, Esc = teljes képernyő / ablakok bezárása, F1 = billentyűparancs-puska. A Beállítások → Bevitel menüben minden alkalmazásbeli művelet újraköthető (akár olyan kombinációként is, mint Ctrl+Shift+P), és beállíthatók rendszerszintű globális gyorsbillentyűk, amelyek akkor is működnek, ha a Psysonic a háttérben van vagy le van kicsinyítve. A médiabillentyűk (Lejátszás/Szünet, Következő, Előző) minden platformon működnek.', + // ── Section 3: Audio Tools ───────────────────────────────────────────── + s3: 'Hangeszközök', + q9: 'Replay Gain módok?', + a9: 'Beállítások → Hang → Replay Gain. A szám mód minden dalt egy célszintre normalizál. Az album mód megőrzi az album hangerőgörbéjét. Az automatikus mód a Szám vagy Album közül választ aszerint, hogy a sor egyetlen albumból áll-e. A Replay Gain címke nélküli számok egy beállítható előerősítésre esnek vissza.', + q10: 'Mi az okos hangerő-normalizálás (LUFS)?', + a10: 'A Replay Gain modern alternatívája a Beállítások → Hang menüben. A Psysonic minden számot LUFS / EBU R128 szerint elemez és eltárolja az eredményt, így a hangerő egységes a teljes könyvtáradban — beleértve a Replay Gain címke nélküli számokat is. A hidegindításos elemzés a háttérben fut, és kb. 1 percig 35–40% CPU-t használ, majd 0-ra esik. Állítsd be a cél-hangerőt (alapértelmezett −10 LUFS) egyszer.', + q11: 'EQ és AutoEQ?', + a11: 'Egy 10 sávos parametrikus hangszínszabályzó található a Beállítások → Hang → Hangszínszabályzó menüben, kézi sávokkal és preszettekkel. A mellette lévő AutoEQ a fejhallgató-modelledhez mért korrekciós profilt tölti le az AutoEQ adatbázisból, és automatikusan a sávokra alkalmazza — válaszd ki a fejhallgatódat, és az EQ a helyes görbére ugrik.', + q12: 'Hogyan váltok audió kimeneti eszközt?', + a12: 'Beállítások → Hang → Kimeneti eszköz. A Psysonic felsorol minden elérhető kimenetet, és azonnal vált, amikor kiválasztasz egyet. A frissítés gomb újraolvassa az indítás után csatlakoztatott eszközöket. A Linux ALSA-nevek, mint a „sysdefault", automatikusan olvashatóra tisztulnak.', + q13: 'Mi a Hot Cache?', + a13: 'A Hot Cache a jelenlegi számot és a következő néhányat előre betölti a RAM-ba és a lemezre, így a lejátszás pufferelés nélkül indul — különösen hasznos lassú / távoli szervereknél. A kiürítés akkor lép életbe, amikor a méretkorlát elérődik. A méret és a késleltetés (hogy a gyors átugrások ne töltsenek túl) a Beállítások → Hang menüben állítható.', + // ── Section 4: Library & Discovery ───────────────────────────────────── + s4: 'Könyvtár és felfedezés', + q14: 'Hogyan működnek az értékelések és a Skip-to-1★?', + a14: 'A Psysonic 1–5 csillagos értékeléseket támogat OpenSubsonic-on keresztül (Navidrome ≥ 0.53). Értékelj dalokat a számlistákban, a jobbklikk-menüben vagy a lejátszósávban az előadó neve alatt; albumokat az albumoldalon; előadókat az előadóoldalon. A Skip-to-1★ (Beállítások → Könyvtár → Értékelések) automatikusan 1 csillagot ad beállítható számú egymást követő átugrás után. Ugyanitt beállíthatsz minimális értékelés-szűrőt a Véletlen mixhez és más generált mixekhez.', + q15: 'Hogyan böngészek — mappák, műfajok, számok?', + a15: 'A Mappaböngésző (oldalsáv) a szervered zenei könyvtárát járja be Miller-oszlopos elrendezésben — kattints egy mappára a belépéshez, kattints egy számra vagy egy mappa lejátszás ikonjára a lejátszáshoz / sorba tételhez. A Műfajok egy számszám szerint méretezett címkefelhő-nézetet használ; kattints egy műfajra a megnyitásához. A Számok egy lapos könyvtár-központ oszloprendezhető virtuális listával és élő kereséssel.', + q16: 'Keresés és speciális keresés?', + a16: 'A fejléc keresősávja gyors élő keresést futtat az előadók, albumok és számok között gépelés közben. Nyisd meg a Speciális keresést (oldalsáv) egy gazdagabb nézethez: szűrj év, műfaj, értékelés, formátum, csatornák, mintavételezés, BPM, hangulat szerint, és kombináld a feltételeket. Jobbklikkelj bármely találatra ugyanazért a környezeti menüért, amelyet máshol is használsz az alkalmazásban.', + q17: 'Mik a mixek (Véletlen / Műfaj / Szuper műfaj / Lucky)?', + a17: 'A Véletlen mix véletlen számokból állít össze lejátszási listát a könyvtáradból; a Kulcsszószűrő kizárja a hangoskönyveket, a humort stb. műfaj / cím / album részletek alapján. A Szuper műfaj-mix a könyvtáradat tág stílusokba csoportosítja (Rock, Metal, Electronic, Jazz, Classical…), és egyből fókuszált mixet épít. A Lucky Mix a hallgatási előzményeidet, az értékeléseidet és az AudioMuse-AI hasonló számait használja egy azonnali lejátszási lista egyetlen kattintással való összeállításához.', + q18: 'Statisztika oldal?', + a18: 'A Statisztika (oldalsáv) megmutatja a top előadókat, top albumokat, top számokat, a műfajbontást, a hallgatási időt az idő függvényében, és könyvtáronkénti hatókört, ha egynél több zenei mappa van beállítva. Több nézet exportálható megosztható kártyaképként.', + q19: 'Hogyan töltök le egy albumot ZIP-ként?', + a19: 'Albumoldal → „Letöltés (ZIP)". A szerver először tömöríti az albumot — nagy vagy veszteségmentes albumoknál (FLAC / WAV) a folyamatjelző csak a tömörítés befejezése és az átvitel megkezdése után jelenik meg. Ez normális.', + // ── Section 5: Lyrics ────────────────────────────────────────────────── + s5: 'Dalszöveg', + q20: 'Honnan jönnek a dalszövegek?', + a20: 'Három forrásból, a Beállítások → Dalszöveg menüben állítható: a Navidrome szervered (beágyazott / OpenSubsonic dalszövegek), az LRCLIB (közösség által hozzájárult szinkronizált dalszövegek) és a NetEase Cloud Music (nagy ázsiai + nemzetközi katalógus). Minden forrás be-/kikapcsolható és húzással átrendezhető.', + q21: 'Hogyan nézem a dalszöveget lejátszás közben?', + a21: 'Kattints a mikrofon ikonra a lejátszósávban a Dalszöveg fül megnyitásához a sor panelen belül. A szinkronizált dalszöveg automatikusan görget és támogatja a kattintásos ugrást; az egyszerű szöveges dalszöveg statikus blokként görög. A lejátszósáv borítójáról kapcsold be a Teljes képernyős lejátszót egy magával ragadó dalszövegnézethez mesh-blob háttérrel.', + // ── Section 6: Sharing & Social ──────────────────────────────────────── + s6: 'Megosztás és közösség', + q22: 'Mik a varázsszövegek?', + a22: 'A varázsszövegek rövid másolható tokenek, amelyek harmadik fél szervere nélkül osztanak meg dolgokat a Psysonic-felhasználók között. A szerver-meghívó szövegekkel egy barátod egyetlen beillesztéssel csatlakozhat a Navidrome-odhoz; az album- / előadó- / sor-varázsszövegek ugyanazt az albumot / előadót / sort nyitják meg a címzett telepített Psysonicjában. Hozd létre őket a megosztás menüből, és illeszd be a keresősávba a felhasználásukhoz.', + q23: 'Mi az Orbit?', + a23: 'Az Orbit szinkronizált együtt-hallgatás: a házigazda lejátszik egy számot, minden vendég szinkronban hallja, és a vendégek dalokat javasolhatnak, amelyeket a házigazda elfogadhat a sorba. Indíts munkamenetet a fejléc Orbit gombjával, oszd meg a meghívó linket, és mások bármely Psysonic-telepítésről csatlakozhatnak. A házigazdáé a lejátszás (átugrás, tekerés, sor) — a vendégek valós idejű nézetet és egy javaslatdobozt kapnak. A munkamenetek ideiglenesek, és véget érnek, amikor a házigazda bezárja őket.', + q24: 'Mi a Most szól legördülő menü?', + a24: 'A jobb felső fejléc adás ikonja megmutatja, mit hallgatnak éppen más felhasználók a Navidrome szervereden, 10 másodpercenként frissítve. A saját bejegyzésed abban a pillanatban eltűnik, amint szüneteltetsz. Szerverenkénti, így egy másik aktív szerver felhasználói nem jelennek meg.', + // ── Section 7: Personalization ───────────────────────────────────────── + s7: 'Személyre szabás', + q25: 'Témák és a témaütemező?', + a25: 'Beállítások → Megjelenés → Téma több mint 60 témából választ 8 csoportban (Psysonic, Médialejátszók, Operációs rendszerek, Játékok, Filmek, Sorozatok, Közösségi média, Nyílt forráskódú klasszikusok — Catppuccin / Nord / Gruvbox / Nightfox / Dracula). Az Automatikus témaváltás lehetővé teszi egy nappali + éjszakai téma beállítását kezdési időpontokkal, így a Psysonic automatikusan vált.', + q26: 'Testreszabhatom az oldalsávot, a kezdőlapot és az előadóoldalakat?', + a26: 'Igen — Beállítások → Személyre szabás. Az oldalsáv-testreszabóval a navigációs elemeket a kívánt sorrendbe húzhatod, és elrejtheted a nem használtakat. A kezdőlap-testreszabó minden Főszínpad-sávot ki/bekapcsol (Kiemelt, Legutóbbi, Felfedezés, Nemrég játszott, Csillagozott…). Az előadóoldal-testreszabó átrendezi a szakaszokat (Top számok, Albumok, Kislemezek, Válogatások, Hasonló előadók stb.), és lehetővé teszi a soha nem nézett szakaszok elrejtését.', + q27: 'Mi a mini lejátszó?', + a27: 'Egy kis lebegő ablak borítóval, lejátszásvezérlőkkel és egy kompakt sorral. Nyisd meg a lejátszósáv mini-lejátszó ikonjáról vagy a billentyűparancsával. Az ablak megjegyzi a pozícióját és méretét a munkamenetek között. Windowson a mini-webnézet indításkor előre létrejön, így a megnyitás azonnali; Linuxon / macOS-en a Beállítások → Megjelenés → Mini lejátszó előtöltése menüben kapcsolható be.', + q28: 'Mi a lebegő lejátszósáv?', + a28: 'Egy opcionális lejátszósáv-stílus (Beállítások → Megjelenés), amely elválik az alsó szegélytől témázott háttérrel, kiemelt szegéllyel, lekerekített borítóval és középre igazított hangerőszekcióval. Magas monitorokon vagy kompakt témáknál hasznos.', + q29: 'Szám-előnézet rámutatáskor?', + a29: 'Vidd az egeret egy számsor fölé, kattints a borítón lévő kis előnézet gombra, vagy indítsd az előnézetet a jobbklikk-menüből — a Psysonic az első ~15 mp-et ugyanazon a Rust hangmotoron streameli, így a hangerő-normalizálás érvényesül. Hasznos egy még nem hallott album átfutásához.', + q30: 'Elalvásidőzítő?', + a30: 'Kattints a hold ikonra a lejátszósávban az elalvásidőzítő megnyitásához. Válassz időtartamot (vagy „a jelenlegi szám vége"), és a Psysonic a végén kihalkít és szünetel. A gomb körkörös gyűrűt és gombon belüli visszaszámlálót mutat, amíg az időzítő fut.', + q31: 'Felület-méretezés, betűtípus, keresősáv-stílus?', + a31: 'Beállítások → Megjelenés — Felület-méretezés (80–125% a rendszer betűméretének befolyásolása nélkül), Betűtípus (10 felületi betűtípus, köztük IBM Plex Mono, Fira Code, Geist, Golos Text…), Keresősáv-stílus (Hullámforma elemzett / pszeudóhullám determinisztikus / Vonal és pont / Sáv / Vastag sáv / Szegmentált / Neonfény / Pulzushullám / Részecskecsóva / Folyékony kitöltés / Retró szalag).', + // ── Section 8: Power User ────────────────────────────────────────────── + s8: 'Haladó felhasználó', + q32: 'CLI lejátszóvezérlők?', + a32: 'A Psysonic bináris távirányítóként is működik. Példák: psysonic --player play / pause / next / prev, --player volume 75, --player seek 15, --player shuffle, --player repeat off|all|one, --player rating 1-5. Válts szervert, audióeszközt, könyvtárat; indíts Azonnali mixet; keress előadókat / albumokat / számokat. Futtasd a psysonic --player --help parancsot a teljes listáért. Shell-kiegészítések bashhez és zsh-hoz a psysonic completions paranccsal.', + q33: 'Okos lejátszási listák (Navidrome)?', + a33: 'Az okos lejátszási listák Navidrome-oldali dinamikus lejátszási listák, amelyeket szabályok határoznak meg (műfaj = Rock ÉS év > 2020 stb.). A Psysonic Lejátszási listák oldala lehetővé teszi a létrehozásukat, szerkesztésüket és törlésüket egy vizuális szabályszerkesztővel — a Psysonic ehhez a Navidrome natív API-ját használja. Az alkalmazás többi részében normál lejátszási listaként viselkednek, és automatikusan frissülnek, ahogy a könyvtárad változik.', + q34: 'Beállítások mentése és visszaállítása?', + a34: 'Beállítások → Tárhely → Mentés és visszaállítás exportálja a szerverprofilokat, témákat, billentyűkiosztásokat és egyéb beállításokat egyetlen JSON-fájlba. Importáld a fájlt egy másik gépen vagy újratelepítés után, hogy mindent egyszerre visszaállíts. A szerverjelszavak benne vannak — tartsd a fájlt privátban.', + q35: 'Hol látom az összes nyílt forráskódú licencet?', + a35: 'Beállítások → Rendszer → Nyílt forráskódú licencek. A teljes függőséglista (cargo crate-ek és npm csomagok) a buildben szállítva, csomagolt licencszövegekkel. Kattints egy bejegyzésre a teljes szövegért; a tetején lévő válogatott kiemelt blokk a felhasználó által ismert könyvtárakat emeli ki (Tauri, React, rodio, symphonia stb.).', + // ── Section 9: Offline & Sync ────────────────────────────────────────── + s9: 'Offline és szinkronizálás', + q36: 'Offline mód — albumok és lejátszási listák gyorsítótárazása?', + a36: 'Nyiss meg bármilyen albumot vagy lejátszási listát, és kattints a fejlécben lévő letöltés ikonra — a Psysonic minden számot helyben gyorsítótáraz, így hálózati hívás nélkül játszódik le a lemezről. Az Offline könyvtár oldal (oldalsáv) felsorolja a gyorsítótárazott tartalmat, mutatja a folyamatban lévő letöltéseket, és lehetővé teszi a bejegyzések eltávolítását a kuka ikonnal (amely a letöltés befejeztével jelenik meg).', + q37: 'Offline tárhelykorlát?', + a37: 'A Beállítások → Könyvtár → Offline menüben beállíthatsz egy maximális gyorsítótár-méretet. A korlát elérésekor az albumoldal letöltés gombja figyelmeztető sávot mutat. Szabadíts fel helyet albumok vagy lejátszási listák eltávolításával az Offline könyvtár oldalról.', + q38: 'Eszköz-szinkronizálás — zene másolása USB-re / SD-re?', + a38: 'Az Eszköz-szinkronizálás (oldalsáv) albumokat, lejátszási listákat vagy egész előadókat másol egy külső meghajtóra más eszközökön való offline hallgatáshoz. Válassz célmappát, válassz forrásokat a böngészőfülekről, kattints az „Átvitel az eszközre" gombra. A Psysonic egy manifesztet (psysonic-sync.json) ír, így tudja, mely fájlok vannak már ott, még akkor is, ha másik operációs rendszeren, másik fájlnévsablonnal nyitod meg újra az Eszköz-szinkronizálást. A sablonok támogatják a {artist} / {album} / {title} / {track_number} / {disc_number} / {year} tokeneket, a / mappaelválasztóként.', + // ── Section 10: Integrations & Troubleshooting ───────────────────────── + s10: 'Integrációk és hibaelhárítás', + q39: 'Scrobble-olás — Last.fm, ListenBrainz, Maloja…?', + a39: 'Beállítások → Integrációk → Zenei hálózat. Csatlakoztass egy vagy több scrobble-szolgáltatást (Last.fm, Libre.fm, Rocksky, ListenBrainz, Maloja vagy bármilyen GNU FM-kompatibilis szerver) — nincs szükség Navidrome-konfigurációra. Minden csatlakoztatott, engedélyezett scrobble-olású szolgáltatás megkapja a lejátszást; a fő „Scrobble-olás bekapcsolása" kapcsoló az egész szétküldést be- vagy kikapcsolja. A scrobble akkor kerül elküldésre, miután egy szám 50%-át meghallgattad; a most-szól pingek az elején mennek ki, az ezt támogató szolgáltatásokon. Egy szolgáltatás az elsődleges — a kedvelt számaidat, a hasonló előadóidat és a hallgatási statisztikáidat innen olvassuk be. Tipp: ha a Navidrome szervered már scrobble-ol egy szolgáltatáshoz (pl. Maloja), ne csatlakoztasd ugyanazt itt is, különben dupla scrobble-okat kapsz.', + q40: 'Discord Rich Presence?', + a40: 'Beállítások → Integrációk → Discord megmutatja a jelenlegi számodat a Discord profilodon. Válassz az alkalmazás ikonja, a szervered borítója (getAlbumInfo2-n keresztül — nyilvánosan elérhető szervert igényel) vagy az Apple Music borítók között. Szabd testre a megjelenített szövegeket (részletek, állapot, elemleírás) token-sablonokkal.', + q41: 'Bandsintown turnédátumok?', + a41: 'Kapcsold be a Beállítások → Integrációk → Most szól infó menüben. A Most szól oldal Most szól füle ekkor a lejátszott előadó közelgő turnédátumait mutatja a Bandsintown widget API-n keresztül. Alapból kikapcsolva — nincs kérés, amíg be nem kapcsolod.', + q42: 'Internetes rádió — élő streamek lejátszása?', + a42: 'Az Internetes rádió (oldalsáv) bármilyen, a Navidrome szervereden tárolt élő streamet lejátszik (adj hozzá állomásokat a Navidrome admin felületén). A lejátszás a böngésző HTML5 hangmotorján fut — a legtöbb EQ / Replay Gain / hangerő beállítás nem vonatkozik a rádióra, de az ICY metaadat (a jelenlegi dal neve) megjelenik. Támogatja az MP3, AAC, OGG Vorbis és a legtöbb HLS streamet; a kodektámogatás platformfüggő.', + q43: 'A kapcsolatteszt sikertelen — most mi van?', + a43: 'Ellenőrizd kétszer az URL-t a porttal együtt (pl. http://192.168.1.100:4533). Helyi hálózaton a http:// gyakran működik ott, ahol a https:// nem (nincs tanúsítvány). Győződj meg róla, hogy nincs tűzfal, amely blokkolja a portot, és hogy a felhasználónév és a jelszó helyes. Ha a szervered fordított proxy mögött van, először próbáld a közvetlen URL-t a probléma elkülönítéséhez.', + q44: 'A borítók és előadói képek lassan töltődnek.', + a44: 'A képek a szerveredről töltődnek le az első megtekintéskor, majd 30 napig helyben gyorsítótárazódnak. Ha a szervered tárhelye lassú, egy oldal első látogatása eltarthat egy ideig; a további látogatások azonnaliak. A Hot Cache is segít a számoknál, de a képgyorsítótár ettől független.', + q45: 'Linux-problémák — fekete képernyő vagy nincs hang?', + a45: 'A fekete képernyő Linuxon általában grafikai vagy WebView megjelenítési probléma. Próbálj X11 munkamenetet, vagy állítsd be a GDK_BACKEND=x11 és EGL_PLATFORM=x11 értékeket indítás előtt, ha Waylandet használsz. A hanghoz győződj meg róla, hogy a PipeWire vagy a PulseAudio fut. Ha a hang alvás vagy ébredés után leáll, lépj ki teljesen a Psysonicból, és nyisd meg újra.', +}; diff --git a/src/locales/hu/hero.ts b/src/locales/hu/hero.ts new file mode 100644 index 00000000..224dc450 --- /dev/null +++ b/src/locales/hu/hero.ts @@ -0,0 +1,9 @@ +export const hero = { + eyebrow: 'Kiemelt album', + playAlbum: 'Album lejátszása', + playAlbumTooltip: 'Album lejátszása (tartsd nyomva a keveréshez)', + enqueue: 'Sorba', + enqueueTooltip: 'A teljes album hozzáadása a sorhoz', + previousAlbum: 'Előző album', + nextAlbum: 'Következő album', +}; diff --git a/src/locales/hu/home.ts b/src/locales/hu/home.ts new file mode 100644 index 00000000..a4c961a5 --- /dev/null +++ b/src/locales/hu/home.ts @@ -0,0 +1,21 @@ +export const home = { + hero: 'Kiemelt', + starred: 'Személyes kedvencek', + mostPlayed: 'Legtöbbet játszott', + recentlyPlayed: 'Nemrég játszott', + losslessAlbums: 'Veszteségmentes albumok', + discover: 'Felfedezés', + discoverSongs: 'Számok felfedezése', + loadMore: 'Több betöltése', + discoverMore: 'Több felfedezése', + discoverArtists: 'Előadók felfedezése', + discoverArtistsMore: 'Összes előadó', + becauseYouLike: 'Mert ezt hallgattad…', + becauseYouLikeFor: 'Mert {{artist}} előadót hallgattad', + similarTo: 'Hasonló ehhez: {{artist}}', + becauseYouLikeTracks_one: '{{count}} szám', + becauseYouLikeTracks_other: '{{count}} szám', + mainstageEmptyTitle: 'A Főszínpadod üres', + mainstageEmptyBody: 'Minden szakasz ki van kapcsolva. Kapcsold vissza a szakaszokat, vagy rejtsd el a Főszínpadot az oldalsávból.', + mainstageEmptyCta: 'Személyre szabás beállításainak megnyitása' +}; diff --git a/src/locales/hu/index.ts b/src/locales/hu/index.ts new file mode 100644 index 00000000..c13b2dca --- /dev/null +++ b/src/locales/hu/index.ts @@ -0,0 +1,95 @@ +import { sidebar } from './sidebar'; +import { home } from './home'; +import { hero } from './hero'; +import { search } from './search'; +import { nowPlaying } from './nowPlaying'; +import { contextMenu } from './contextMenu'; +import { sharePaste } from './sharePaste'; +import { albumDetail } from './albumDetail'; +import { entityRating } from './entityRating'; +import { artistDetail } from './artistDetail'; +import { favorites } from './favorites'; +import { randomLanding } from './randomLanding'; +import { randomAlbums } from './randomAlbums'; +import { genres } from './genres'; +import { randomMix } from './randomMix'; +import { luckyMix } from './luckyMix'; +import { albums } from './albums'; +import { tracks } from './tracks'; +import { artists } from './artists'; +import { composers } from './composers'; +import { composerDetail } from './composerDetail'; +import { login } from './login'; +import { connection } from './connection'; +import { common } from './common'; +import { settings } from './settings'; +import { changelog } from './changelog'; +import { whatsNew } from './whatsNew'; +import { musicNetwork } from './musicNetwork'; +import { help } from './help'; +import { queue } from './queue'; +import { miniPlayer } from './miniPlayer'; +import { statistics } from './statistics'; +import { player } from './player'; +import { nowPlayingInfo } from './nowPlayingInfo'; +import { songInfo } from './songInfo'; +import { playlists } from './playlists'; +import { smartPlaylists } from './smartPlaylists'; +import { mostPlayed } from './mostPlayed'; +import { losslessAlbums } from './losslessAlbums'; +import { radio } from './radio'; +import { folderBrowser } from './folderBrowser'; +import { deviceSync } from './deviceSync'; +import { orbit } from './orbit'; +import { tray } from './tray'; +import { licenses } from './licenses'; +import { migration } from './migration'; + +export const huTranslation = { + sidebar, + home, + hero, + search, + nowPlaying, + contextMenu, + sharePaste, + albumDetail, + entityRating, + artistDetail, + favorites, + randomLanding, + randomAlbums, + genres, + randomMix, + luckyMix, + albums, + tracks, + artists, + composers, + composerDetail, + login, + connection, + common, + settings, + changelog, + whatsNew, + musicNetwork, + help, + queue, + miniPlayer, + statistics, + player, + nowPlayingInfo, + songInfo, + playlists, + smartPlaylists, + mostPlayed, + losslessAlbums, + radio, + folderBrowser, + deviceSync, + orbit, + tray, + licenses, + migration, +}; diff --git a/src/locales/hu/licenses.ts b/src/locales/hu/licenses.ts new file mode 100644 index 00000000..b7044005 --- /dev/null +++ b/src/locales/hu/licenses.ts @@ -0,0 +1,13 @@ +export const licenses = { + title: 'Nyílt forráskódú licencek', + intro: 'A Psysonic nyílt forráskódú szoftverekre épül. Az alábbi lista az alkalmazásban szállított összes függőséget mutatja a verziójával, licencével és a teljes licencszöveggel.', + highlights: 'Fő függőségek', + searchPlaceholder: 'Keresés név, verzió vagy licenc szerint…', + noResults: 'Nincs találat.', + loading: 'Licencek betöltése…', + loadError: 'A licencadatok betöltése nem sikerült.', + noLicenseText: 'Ehhez a függőséghez nincs csomagolt licencszöveg.', + viewSource: 'Forrás megtekintése', + totalLine: '{{total}} függőség — {{cargo}} cargo, {{npm}} npm', + generatedAt: 'Utoljára generálva: {{date}}', +}; diff --git a/src/locales/hu/login.ts b/src/locales/hu/login.ts new file mode 100644 index 00000000..55bcbb1b --- /dev/null +++ b/src/locales/hu/login.ts @@ -0,0 +1,22 @@ +export const login = { + subtitle: 'A Navidrome asztali lejátszód', + serverName: 'Szerver neve (opcionális)', + serverNamePlaceholder: 'Az én Navidrome-om', + serverUrl: 'Szerver URL', + serverUrlPlaceholder: '192.168.1.100:4533 vagy https://music.example.com', + username: 'Felhasználónév', + usernamePlaceholder: 'admin', + password: 'Jelszó', + showPassword: 'Jelszó megjelenítése', + hidePassword: 'Jelszó elrejtése', + connect: 'Csatlakozás', + connecting: 'Csatlakozás…', + connected: 'Csatlakozva!', + error: 'A csatlakozás nem sikerült – ellenőrizd az adataidat.', + urlRequired: 'Adj meg egy szerver URL-t.', + savedServers: 'Mentett szerverek', + addNew: 'Vagy adj hozzá új szervert', + orMagicString: 'Vagy varázsszöveg', + magicStringPlaceholder: 'Illessz be egy megosztási szöveget (psysonic1-…)', + magicStringInvalid: 'Érvénytelen vagy olvashatatlan varázsszöveg.', +}; diff --git a/src/locales/hu/losslessAlbums.ts b/src/locales/hu/losslessAlbums.ts new file mode 100644 index 00000000..0c268f0a --- /dev/null +++ b/src/locales/hu/losslessAlbums.ts @@ -0,0 +1,7 @@ +export const losslessAlbums = { + empty: 'Ebben a könyvtárban még nincsenek veszteségmentes albumok.', + unsupported: 'Ez a szerver nem teszi elérhetővé a veszteségmentes albumok megtalálásához szükséges metaadatokat.', + slowFetchHint: 'Lassabban tölt be, mint a többi albumoldal — a Psysonic minőség szerint végigjárja a teljes számkatalógust.', + modeBanner: 'Veszteségmentes mód — csak FLAC, WAV és más veszteségmentes formátumok láthatók.', + modeBannerExit: 'Összes formátum mutatása', +}; diff --git a/src/locales/hu/luckyMix.ts b/src/locales/hu/luckyMix.ts new file mode 100644 index 00000000..b3233cb4 --- /dev/null +++ b/src/locales/hu/luckyMix.ts @@ -0,0 +1,6 @@ +export const luckyMix = { + done: 'Lucky Mix kész: {{count}} szám', + failed: 'A Lucky Mix összeállítása nem sikerült. Próbáld újra.', + unavailable: 'A Lucky Mix nem érhető el ehhez a szerverhez.', + cancelTooltip: 'Lucky Mix összeállításának megszakítása', +}; diff --git a/src/locales/hu/migration.ts b/src/locales/hu/migration.ts new file mode 100644 index 00000000..4b5452fa --- /dev/null +++ b/src/locales/hu/migration.ts @@ -0,0 +1,15 @@ +export const migration = { + preparing: 'Adatfrissítés előkészítése…', + preparingBody: 'A könyvtár és az elemzési gyorsítótár vizsgálata…', + migrating: 'Adatok átköltöztetése', + working: 'folyamatban…', + skippedRows: 'Az eltávolított szerverekhez tartozó sorok kihagyva; a régi biztonsági másolat adatbázisa a sikeres váltás után törlődik.', + failed: 'Az átköltöztetés nem sikerült', + retry: 'Újra', + copyDetails: 'Részletek másolása', + complete: 'A frissítés kész', + completeRows: '{{count}} sor átköltöztetve', + genreTagsTitle: 'Műfajindex frissítése…', + genreTagsBody: 'Műfajok indexelése a böngészéshez és a szűrőkhöz. Ez frissítés után egyszer fut le.', + genreTagsFailed: 'A műfajindex frissítése nem sikerült', +}; diff --git a/src/locales/hu/miniPlayer.ts b/src/locales/hu/miniPlayer.ts new file mode 100644 index 00000000..41376da7 --- /dev/null +++ b/src/locales/hu/miniPlayer.ts @@ -0,0 +1,9 @@ +export const miniPlayer = { + showQueue: 'Sor megjelenítése', + hideQueue: 'Sor elrejtése', + pinOnTop: 'Rögzítés felülre', + pinOff: 'Rögzítés feloldása', + openMainWindow: 'Főablak megnyitása', + close: 'Bezárás', + emptyQueue: 'A sor üres', +}; diff --git a/src/locales/hu/mostPlayed.ts b/src/locales/hu/mostPlayed.ts new file mode 100644 index 00000000..0165f5cb --- /dev/null +++ b/src/locales/hu/mostPlayed.ts @@ -0,0 +1,13 @@ +export const mostPlayed = { + title: 'Legtöbbet játszott', + topArtists: 'Top előadók', + topAlbums: 'Top albumok', + plays: '{{n}} lejátszás', + sortMost: 'Legtöbb lejátszás elöl', + sortLeast: 'Legkevesebb lejátszás elöl', + loadMore: 'Több album betöltése', + noData: 'Még nincs lejátszási adat. Kezdj el zenét hallgatni!', + noArtists: 'Minden előadó ki van szűrve.', + filterCompilations: 'Válogatás-előadók elrejtése (Various Artists, filmzenék stb.)', + filterCompilationsShort: 'Válogatások elrejtése', +}; diff --git a/src/locales/hu/musicNetwork.ts b/src/locales/hu/musicNetwork.ts new file mode 100644 index 00000000..294ff4d4 --- /dev/null +++ b/src/locales/hu/musicNetwork.ts @@ -0,0 +1,55 @@ +export const musicNetwork = { + title: 'Zenei hálózat', + desc: 'Scrobble-old a lejátszásaidat egy vagy több szolgáltatáshoz. A kedvelés, a hasonló előadók és a hallgatási statisztikák a kiválasztott elsődleges szolgáltatásból származnak.', + masterToggle: 'Scrobble-olás bekapcsolása', + masterToggleDesc: 'Főkapcsoló a lejátszások küldéséhez minden csatlakoztatott szolgáltatáshoz.', + addService: 'Szolgáltatás hozzáadása', + connect: 'Csatlakozás', + connecting: 'Csatlakozás…', + disconnect: 'Leválasztás', + scrobbleHere: 'Scrobble ide', + primaryLabel: 'Elsődleges szolgáltatás', + primaryDesc: 'A kedvelt számok (❤), a hasonló előadók és a hallgatási statisztikáid innen származnak — a scrobble-olás ettől függetlenül minden engedélyezett szolgáltatáshoz megy.', + primaryNone: 'Nincs', + statusConnected: 'Csatlakozva', + statusError: 'Újracsatlakozás szükséges', + scrobbles: '{{n}} scrobble', + memberSince: 'Tag {{year}} óta', + connectFailed: 'A csatlakozás nem sikerült — próbáld újra.', + connectProbeFailed: 'A(z) {{provider}} csatlakoztatva, de nem sikerült érvényesíteni: {{message}}', + fieldRequired: 'A(z) {{field}} kötelező.', + malojaProxyWarning: 'A Maloja szervered továbbíthatja a scrobble-okat a Last.fm-nek. A duplikációk elkerüléséhez kapcsold ki a scrobble-olást az egyik oldalon.', + presets: { + lastfm: { desc: 'Az eredeti scrobble-szolgáltatás kedveléssel, hasonló előadókkal és statisztikákkal.' }, + librefm: { desc: 'Nyílt forráskódú scrobble-olás a Last.fm-kompatibilis Libre.fm-en.' }, + rocksky: { desc: 'Csak scrobble-célpont az AT Protocol-on.' }, + listenbrainz: { desc: 'Nyílt hallgatási előzmények a MetaBrainz-től. Scrobble-célpont.' }, + malojaNative: { desc: 'Saját üzemeltetésű scrobble-szerver (natív API).' }, + malojaCompat: { desc: 'Saját üzemeltetésű Maloja az Audioscrobbler (GNU FM) API-ján keresztül.' }, + malojaListenbrainz: { desc: 'Saját üzemeltetésű Maloja a ListenBrainz-kompatibilis API-ján keresztül.' }, + koito: { desc: 'Saját üzemeltetésű hallgatáskövető a ListenBrainz-kompatibilis API-ján keresztül.' }, + customGnufm: { desc: 'Bármilyen saját üzemeltetésű GNU FM / Last.fm-kompatibilis példány.' }, + }, + fields: { + lbToken: 'Felhasználói token', + malojaUrl: 'Szerver URL', + malojaKey: 'API-kulcs', + koitoUrl: 'Szerver URL', + koitoToken: 'API-kulcs', + koitoTokenHelp: 'Hozz létre egy API-kulcsot a Koito Beállítások → API Keys menüjében, majd illeszd be ide.', + rockskySessionKey: 'Munkamenet-kulcs', + rockskySessionKeyHelp: 'A Rocksky ezt a kulcsot csak a CLI-jén keresztül adja ki:\n1. npx -y @rocksky/cli@latest login your-handle\n2. cat ~/.rocksky/token.json\n3. Illeszd be ide a "token" értéket.', + gnufmUrl: 'Szerver URL', + apiKey: 'API-kulcs', + apiSecret: 'Megosztott titok', + }, + errors: { + AUTH_SESSION_INVALID: 'A munkamenet lejárt — csatlakozz újra a Beállításokban.', + AUTH_TIMEOUT: 'Az engedélyezés időtúllépést szenvedett — próbáld újra.', + PROBE_FAILED: 'Ez a funkció nem érhető el ennél a szolgáltatásnál.', + CAPABILITY_UNSUPPORTED: 'Ez a szolgáltatás nem támogatja ezt a funkciót.', + NETWORK: 'Hálózati hiba — ellenőrizd a kapcsolatot vagy az URL-t.', + MALOJA_BAD_KEY: 'Érvénytelen Maloja API-kulcs.', + CUSTOM_URL_INVALID: 'A szerver URL nem érhető el.', + }, +}; diff --git a/src/locales/hu/nowPlaying.ts b/src/locales/hu/nowPlaying.ts new file mode 100644 index 00000000..58e993fe --- /dev/null +++ b/src/locales/hu/nowPlaying.ts @@ -0,0 +1,48 @@ +export const nowPlaying = { + tooltip: 'Ki hallgat éppen?', + title: 'Ki hallgat éppen?', + loading: 'Betöltés…', + nobody: 'Jelenleg senki sem hallgat.', + presence: { + playing: 'Lejátszás', + paused: 'Szüneteltetve', + idle: 'Tétlen', + }, + nothingPlaying: 'Még semmi sem szól. Indíts el egy számot!', + aboutArtist: 'Az előadóról', + fromAlbum: 'Erről az albumról', + viewAlbum: 'Album megtekintése', + goToArtist: 'Ugrás az előadóhoz', + readMore: 'Tovább', + showLess: 'Kevesebb', + genreInfo: 'Műfaj', + trackInfo: 'Száminfó', + topSongs: 'Az előadótól legtöbbet játszott', + topSongsCredit: '{{name}} legjobb számai', + trackPosition: '{{pos}}. szám', + playsCount_one: '{{count}} lejátszás', + playsCount_other: '{{count}} lejátszás', + releasedYearsAgo_one: '{{count}} éve', + releasedYearsAgo_other: '{{count}} éve', + discography: 'Diszkográfia', + thisTrack: 'Ez a szám', + thisArtist: 'Ez az előadó', + listeners: 'hallgató', + scrobbles: 'scrobble', + yourScrobbles: 'tőled', + listenersN: '{{n}} hallgató', + scrobblesN: '{{n}} scrobble', + playsByYouN: 'tőled {{n}}× lejátszva', + rgTrackTooltip: 'ReplayGain (szám)', + rgAlbumTooltip: 'ReplayGain (album)', + rgAutoTooltip: 'ReplayGain (automatikus)', + showMoreTracks: 'Még {{count}} megjelenítése', + showLessTracks: 'Kevesebb megjelenítése', + hideCard: 'Kártya elrejtése', + layoutMenu: 'Elrendezés', + visibleCards: 'Látható kártyák', + hiddenCards: 'Rejtett kártyák', + noHiddenCards: 'Nincsenek rejtett kártyák', + resetLayout: 'Elrendezés visszaállítása', + emptyColumn: 'Húzd ide a kártyákat', +}; diff --git a/src/locales/hu/nowPlayingInfo.ts b/src/locales/hu/nowPlayingInfo.ts new file mode 100644 index 00000000..5ef1c141 --- /dev/null +++ b/src/locales/hu/nowPlayingInfo.ts @@ -0,0 +1,24 @@ +export const nowPlayingInfo = { + tab: 'Infó', + empty: 'Játssz le valamit az infókért', + artist: 'Előadó', + songInfo: 'Száminfó', + onTour: 'Turnén', + noTourEvents: 'Nincs közelgő koncert', + tourLoading: 'Betöltés…', + poweredByBandsintown: 'Turnéadatok a Bandsintown-tól', + bioReadMore: 'Tovább', + bioReadLess: 'Kevesebb', + showMoreTours_one: 'Még {{count}} megjelenítése', + showMoreTours_other: 'Még {{count}} megjelenítése', + showLessTours: 'Kevesebb megjelenítése', + enableBandsintownPrompt: 'Megnézed a közelgő turnédátumokat?', + enableBandsintownPromptDesc: 'Opcionális. Az aktuális előadó koncertjeit tölti be a nyilvános Bandsintown API-n keresztül.', + enableBandsintownPrivacy: 'Bekapcsolva az éppen szóló előadó neve elküldésre kerül a Bandsintown API-nak a turnédátumok lekéréséhez. Fiók vagy személyes adat nem hagyja el az eszközödet.', + enableBandsintownAction: 'Bekapcsolás', + role: { + artist: 'Előadó', + albumArtist: 'Album előadója', + composer: 'Zeneszerző', + }, +}; diff --git a/src/locales/hu/orbit.ts b/src/locales/hu/orbit.ts new file mode 100644 index 00000000..c6e751cf --- /dev/null +++ b/src/locales/hu/orbit.ts @@ -0,0 +1,200 @@ +export const orbit = { + triggerLabel: 'Orbit', + triggerTooltip: 'Közös hallgatási munkamenet indítása vagy csatlakozás', + launchCreate: 'Munkamenet létrehozása', + launchJoin: 'Csatlakozás munkamenethez', + launchHelp: 'Hogyan működik ez?', + launchHelpSoon: 'Hamarosan', + joinModalTitle: 'Csatlakozás Orbit-munkamenethez', + joinModalSub: 'Illeszd be a meghívó linket, amelyet a házigazda küldött.', + joinModalLinkLabel: 'Meghívó link', + joinModalLinkPlaceholder: 'psysonic2-…', + joinModalLinkHelper: 'Bármely érvényes Orbit-linkkel működik. Arra a szerverre kell mutatnia, amelyre éppen be vagy jelentkezve.', + joinModalPasteTooltip: 'Beillesztés a vágólapról', + joinModalSubmit: 'Csatlakozás', + joinModalBusy: 'Csatlakozás…', + joinErrEmpty: 'Illessz be egy meghívó linket.', + joinErrInvalid: 'Ez nem tűnik Orbit-meghívó linknek.', + closeAria: 'Bezárás', + heroTitlePrefix: 'Hallgassatok együtt —', + heroTitleBrand: 'Orbit', + heroSub: 'Indíts egy munkamenetet — a(z) {{server}} többi felhasználója együtt hallgat, és számokat javasolhat.', + fallbackServer: 'ez a szerver', + tipLan: 'Jelenleg otthoni hálózati címen keresztül csatlakozol. A hálózatodon kívüli vendégek nem tudnak csatlakozni — válts nyilvános szervercímre a beállításokban, mielőtt elindítod.', + tipRemote: 'Ahhoz, hogy az otthoni hálózatodon kívüli vendégek csatlakozhassanak, a szervercímednek nyilvánosan elérhetőnek kell lennie. Ha a szervered csak belső, válts, mielőtt elindítod.', + labelName: 'Munkamenet neve', + namePlaceholder: 'Velvet Orbit', + reshuffleTooltip: 'Új javaslat', + reshuffleAria: 'Új név javaslása', + helperName: 'Így jelenik meg a munkamenet a vendégeidnek — hagyd így, vagy írj sajátot.', + labelMax: 'Vendégek maximális száma', + helperMax: 'Te nem számítasz bele — ez csak a beérkező vendégek számát korlátozza.', + labelLink: 'Meghívó link', + tooltipCopied: 'Másolva', + tooltipCopy: 'Másolás', + ariaCopyLink: 'Meghívó link másolása', + helperLink: 'Küldd el ezt a linket a vendégeidnek. Bárhol beilleszthetik a Psysonicban a Ctrl+V-vel.', + labelClearQueue: 'Előbb töröljem a soromat', + helperClearQueue: 'Indítsd a munkamenetet tiszta, üres sorral. Kikapcsolva: a már sorban lévő számok megmaradnak és megosztásra kerülnek a vendégekkel.', + btnCancel: 'Mégse', + btnStarting: 'Indítás…', + btnStart: 'Orbit indítása', + btnCopyAndStart: 'Link másolása és indítás', + errNameRequired: 'Adj nevet a munkamenetnek.', + errStartFailed: 'Nem sikerült elindítani.', + hostLabel: 'Házigazda: {{name}}', + participantsTooltip: 'Résztvevők', + settingsTooltip: 'Munkamenet beállításai', + shareTooltip: 'Meghívó link megosztása', + shuffleLabel: 'A sor újrakeverése ennyi múlva', + catchUpLabel: 'felzárkózás', + catchUpTooltip: 'Ugrás a házigazda jelenlegi pozíciójára', + hostAway: 'Házigazda offline', + hostOnline: 'Házigazda online', + endTooltip: 'Munkamenet befejezése', + leaveTooltip: 'Kilépés a munkamenetből', + helpTooltip: 'Hogyan működik az Orbit', + diag: { + openTooltip: 'Diagnosztika — másolható eseménynapló', + title: 'Orbit diagnosztika', + role: 'Szerep', + hostTrack: 'Házigazda szám-azonosító', + hostPos: 'Házigazda pozíció', + guestTrack: 'Saját szám-azonosító', + guestPos: 'Saját pozíció', + drift: 'Eltérés', + stateAge: 'Állapot kora', + eventLog: 'Eseménynapló ({{count}})', + copyLabel: 'Másolás', + copyTooltip: 'Napló másolása a vágólapra', + clearLabel: 'Törlés', + clearTooltip: 'Puffer kiürítése', + empty: 'Még nincsenek események — az események akkor jelennek meg, ahogy az Orbit szinkronizál.', + hint: 'Nyisd meg ezt egy probléma reprodukálása előtt, majd kattints a Másolásra, és illeszd be a hibajelentésbe.', + copied: '{{count}} eseménysor másolva', + copyFailed: 'Nem sikerült a vágólapra másolni', + cleared: 'Puffer kiürítve', + }, + helpTitle: 'Hogyan működik az Orbit', + helpIntro: 'Az Orbit közös hallgatószobává alakítja a Psysonicot. A házigazda választja a zenét; a vendégek szinkronban hallgatnak, és számokat javasolhatnak.', + helpHostOnly: '(házigazda)', + helpSec1Title: 'Mi az Orbit?', + helpSec1Body: 'Egy „együtt-hallgatás" mód — a házigazda vezérli a lejátszást, a vendégek bekapcsolódnak. Minden a saját Navidrome szervereden lévő lejátszási listákon keresztül fut; nincs külső infrastruktúra.', + helpSec2Title: 'Házigazda és vendégek', + helpSec2Body: 'A házigazda vezérli a lejátszást (lejátszás / szünet / átugrás / tekerés), és eldönti, mikor ér véget a munkamenet. A vendégek követik a házigazda lejátszását, számokat javasolhatnak, és bármikor kiléphetnek vagy újracsatlakozhatnak. Csak a házigazda rúghat ki vagy tilthat le véglegesen egy résztvevőt.', + helpSec2WarnHead: 'Fontos: külön fiókok.', + helpSec2WarnBody: 'Minden résztvevőnek saját Navidrome-fiókra van szüksége. Ha a házigazda és a vendég ugyanazzal a felhasználóval jelentkezik be, a beküldéseik ütköznek, és a házigazda soha nem látja a vendég javaslatait.', + helpSec3Title: 'Indítás és meghívás', + helpSec3Body: 'Kattints az „Orbit" gombra → Munkamenet létrehozása → az indító ablak egy másolásra kész meghívó linket mutat, és opcionálisan törölheted a jelenlegi sorodat. Oszd meg azt a linket, ahogy szeretnéd. Amíg fut egy munkamenet, a felül lévő munkamenetsávban a megosztás gomb bármikor újra kimásolja a linket.', + helpSec4Title: 'Csatlakozás', + helpSec4Body: 'Illeszd be a meghívó linket bárhol a Psysonicban a Ctrl+V / Cmd+V használatával — a csatlakozási ablak automatikusan felugrik. Alternatívaként: „Orbit" → Csatlakozás munkamenethez → illeszd a mezőbe. Ha a link olyan szerverre mutat, amelyen van fiókod, a Psysonic átvált helyetted. Ha egynél több fiókod van azon a szerveren, egy kis választó megkérdezi, melyiket használd.', + helpSec5Title: 'Számok javaslása', + helpSec5Body: 'Bármely dallistában: kattints duplán egy sorra, vagy jobbklikk → „Hozzáadás Orbit-munkamenethez". Egyetlen kattintás egy tippet mutat ahelyett, hogy az egész albumot a megosztott sorba dobná — ez szándékos. Az explicit tömeges műveletek, mint az „Összes lejátszása" vagy az „Album lejátszása", először megerősítést kérnek, majd hozzáfűznek (soha nem cserélnek).', + helpSec6Title: 'A megosztott sor', + helpSec6Body: 'A sor a házigazda közelgő számait mutatja — mindenki látja. A beérkező tömeges hozzáadások mindig hozzáfűződnek, így a vendégek javaslatai nem vesznek el. Az automatikus keverés időnként újrarendezi a sort (beállítható: 1 / 5 / 10 / 15 / 30 perc). Ha a lejátszásod eltér a házigazdától, a munkamenetsáv „Felzárkózás" gombja visszaugrat a házigazda élő pozíciójára.', + helpSec7Title: 'Jóváhagyások', + helpSec7Body: 'Alapértelmezés szerint a vendégek javaslatai kézi jóváhagyást igényelnek — egy „Jóváhagyások" sávban jelennek meg a sor panel tetején elfogadás / elutasítás gombokkal. Az automatikus jóváhagyás bekapcsolható a munkamenet beállításaiban, hogy minden azonnal beérkezzen.', + helpSec8Title: 'Résztvevők és beállítások', + helpSec8Body: 'Nyisd meg a beállítások ikont a munkamenetsávban a keverési gyakoriságért, az automatikus jóváhagyásért és a „Keverés most" parancsért. Kattints a résztvevők számára, hogy lásd, ki csatlakozott — kirúgás (a linken keresztül újracsatlakozhat) vagy letiltás (a munkamenet idejére kizárva). A vendégek is látják a résztvevők listáját, de csak olvasható módon.', + helpSec9Title: 'A munkamenet befejezése', + helpSec9Body: 'Házigazda X → megerősítő párbeszéd → a munkamenet mindenki számára bezárul, és a szerver lejátszási listái automatikusan tisztulnak. Vendég X → a vendég kilép, a munkamenet tovább fut. Ha a házigazda 5 percig néma marad, a vendég értesítéssel automatikusan kilép; az ezen az időablakon belüli rövid újracsatlakozások láthatatlanok.', + participantsInviteLabel: 'Meghívó link', + participantsCountLabel: '{{count}} a munkamenetben', + participantsHost: 'házigazda', + participantsEmpty: 'Még nincsenek vendégek', + participantsKickTooltip: 'Eltávolítás a munkamenetből', + participantsKickAria: '{{user}} eltávolítása', + participantsRemoveTooltip: 'Eltávolítás a munkamenetből', + participantsRemoveAria: '{{user}} eltávolítása ebből a munkamenetből', + participantsBanTooltip: 'Végleges letiltás', + participantsBanAria: '{{user}} végleges letiltása', + participantsMuteTooltip: 'Javaslatok némítása', + participantsUnmuteTooltip: 'Javaslatok engedélyezése', + participantsMuteAria: '{{user}} javaslatainak némítása', + participantsUnmuteAria: '{{user}} javaslatainak engedélyezése', + confirmRemoveTitle: 'Eltávolítás a munkamenetből?', + confirmRemoveBody: '{{user}} kikerül a munkamenetből, de a meghívó linkeden keresztül újracsatlakozhat.', + confirmRemoveConfirm: 'Eltávolítás', + confirmBanTitle: 'Végleges letiltás?', + confirmBanBody: '{{user}} eltávolításra kerül, és nem csatlakozhat újra ehhez a munkamenethez. Ez a munkamenet ideje alatt nem vonható vissza.', + confirmBanConfirm: 'Letiltás', + confirmCancel: 'Mégse', + confirmJoinTitle: 'Csatlakozol az Orbit-munkamenethez?', + confirmJoinBody: '{{host}} meghívott ide: „{{name}}". Csatlakozol a munkamenethez?', + confirmJoinConfirm: 'Csatlakozás', + confirmLeaveTitle: 'Kilépsz a munkamenetből?', + confirmLeaveBody: 'Kilépsz innen: „{{name}}"? Bármikor újracsatlakozhatsz {{host}} meghívó linkjén keresztül.', + confirmLeaveConfirm: 'Kilépés', + confirmEndTitle: 'Befejezed a munkamenetet mindenkinek?', + confirmEndBody: 'A(z) „{{name}}" minden résztvevő számára bezárul. A munkamenet lejátszási listái automatikusan tisztulnak.', + confirmEndConfirm: 'Munkamenet befejezése', + invalidLinkTitle: 'A meghívó link már nem érvényes', + invalidLinkBody: 'Ez az Orbit-munkamenet már nem létezik, vagy már véget ért. Kérj a házigazdától egy új meghívó linket.', + settingsTitle: 'Munkamenet beállításai', + settingAutoApprove: 'Javaslatok automatikus jóváhagyása', + settingAutoApproveHint: 'A vendégek javaslatai azonnal a sorodba kerülnek. Kikapcsolva: a munkamenet-listában maradnak, hogy később átnézd őket.', + settingAutoShuffle: 'Automatikus újrakeverés', + settingAutoShuffleHint: 'A közelgő sor időszakos Fisher–Yates keverése. Kikapcsolva: a sorrend csak akkor változik, ha te rendezed át.', + settingShuffleInterval: 'Újrakeverés ennyi időnként', + settingShuffleIntervalHint: 'Milyen gyakran keveredik újra a közelgő sor a munkamenet közben.', + suggestBlockedMuted: 'A házigazda lenémított erre a munkamenetre — a javaslatok ki vannak kapcsolva.', + settingShuffleIntervalValue_one: '{{count}} perc', + settingShuffleIntervalValue_other: '{{count}} perc', + settingShuffleNow: 'Keverés most', + toastSuggested: '{{user}} javasolta: „{{title}}"', + toastSuggestedMany: '{{count}} új javaslat a sorban', + toastShuffled: 'A sor megkeverve', + toastJoined: 'Csatlakoztál a munkamenethez', + toastLoginFirst: 'Jelentkezz be, mielőtt csatlakozol egy munkamenethez', + toastSwitchServer: 'Előbb válts erre: {{url}}, majd illeszd be újra', + toastNoAccountForServer: 'Nincs hozzáférésed ehhez: {{url}}. Kérj meghívót a házigazdától.', + toastSwitchFailed: 'Nem sikerült átváltani erre: {{url}}', + accountPickerTitle: 'Melyik fiók?', + accountPickerSub: 'Egynél több fiókod van ehhez: {{url}}. Válaszd ki, melyikkel csatlakozz a munkamenethez.', + toastJoinFail: 'Nem sikerült csatlakozni a munkamenethez', + joinErrNotFound: 'A munkamenet nem található', + joinErrEnded: 'A munkamenet véget ért', + joinErrFull: 'A munkamenet megtelt', + joinErrKicked: 'Nem csatlakozhatsz újra ehhez a munkamenethez', + joinErrNoUser: 'Nincs aktív szerver', + joinErrServerError: 'Nem sikerült csatlakozni', + ctxAddToSession: 'Hozzáadás Orbit-munkamenethez', + ctxSuggestedToast: 'Javasolva a munkamenetnek', + ctxSuggestFailed: 'Nem sikerült javasolni — nem csatlakoztál', + ctxAddToSessionHost: 'Hozzáadás Orbit-munkamenethez', + ctxAddedHostToast: 'Hozzáadva a munkamenethez', + ctxAddHostFailed: 'Nem sikerült hozzáadni a munkamenethez', + bulkConfirmTitle: 'Hozzáadod mindezt az Orbit-sorhoz?', + bulkConfirmBody: 'Ez {{count}} számot dobna a megosztott sorba egyszerre. Ez sok ahhoz, hogy a vendégeid észrevegyék. Folytatod?', + bulkConfirmYes: 'Mind hozzáadása', + bulkConfirmNo: 'Mégse', + guestLive: 'Élő', + guestPlaying: 'Most szól', + guestPaused: 'Szüneteltetve', + guestLoading: 'Betöltés…', + guestSuggestions: 'Javaslatok', + guestUpNext: 'Következik', + guestUpNextEmpty: 'Nincs semmi a sorban. Nyisd meg egy szám környezeti menüjét, és válaszd a „Hozzáadás Orbit-munkamenethez" lehetőséget egy javaslathoz.', + guestPendingTitle: 'Várakozás a házigazdára', + guestPendingHint: 'Javasolva — megjelenik a sorban, amikor a házigazda felveszi.', + approvalTitle: 'Függőben lévő jóváhagyások', + approvalFrom: 'Javasolta: {{user}}', + approvalAccept: 'Elfogadás', + approvalDecline: 'Elutasítás', + guestUpNextMore: '+ még {{count}} a házigazda sorában', + guestSubmitter: 'tőle: {{user}}', + queueAddedByHost: 'A házigazda adta hozzá', + queueAddedByYou: 'Te adtad hozzá', + queueAddedByUser: 'Hozzáadta: {{user}}', + guestEmpty: 'Még nincsenek javaslatok. Nyisd meg egy szám környezeti menüjét, és válaszd a „Hozzáadás Orbit-munkamenethez" lehetőséget.', + guestFooter: 'A házigazda vezérli a lejátszást — nem módosíthatod a listát.', + exitKickedTitle: 'Letiltottak a munkamenetből', + exitRemovedTitle: 'Eltávolítottak a munkamenetből', + exitEndedTitle: 'A házigazda befejezte a munkamenetet', + exitHostTimeoutTitle: 'A házigazda elnémult', + exitHostTimeoutBody: '{{host}} egy ideje nem küldött frissítést, ezért a(z) „{{name}}" bezárult a te oldaladon. Bármikor újracsatlakozhatsz a meghívó linkkel.', + exitKickedBody: '{{host}} letiltott innen: „{{name}}". Nem csatlakozhatsz újra.', + exitRemovedBody: '{{host}} eltávolított innen: „{{name}}". Bármikor újracsatlakozhatsz a meghívó linkkel.', + exitEndedBody: 'A(z) „{{name}}" véget ért. Reméljük, jól szórakoztál.', + exitOk: 'OK', +}; diff --git a/src/locales/hu/player.ts b/src/locales/hu/player.ts new file mode 100644 index 00000000..45e6b3e0 --- /dev/null +++ b/src/locales/hu/player.ts @@ -0,0 +1,69 @@ +export const player = { + regionLabel: 'Zenelejátszó', + openFullscreen: 'Teljes képernyős lejátszó megnyitása', + fullscreen: 'Teljes képernyős lejátszó', + closeFullscreen: 'Teljes képernyő bezárása', + closeTooltip: 'Bezárás (Esc)', + noTitle: 'Nincs cím', + stop: 'Leállítás', + prev: 'Előző szám', + play: 'Lejátszás', + pause: 'Szünet', + autoDjMixing: 'AutoDJ — keverés', + autoDjPreparing: 'AutoDJ — következő szám előkészítése', + bufferingStream: 'Szám betöltése a szerverről', + previewActive: 'Előnézet lejátszása', + previewLabel: 'Előnézet', + delayModalTitle: 'Időzítő', + delayPauseSection: 'Szünet ennyi után', + delayStartSection: 'Indítás ennyi után', + delayPreviewPause: 'Szünet ekkor', + delayPreviewStart: 'Indul ekkor', + delaySchedulePause: 'Szünet ütemezése', + delayScheduleStart: 'Indítás ütemezése', + delayCancelPause: 'Szünetidőzítő megszakítása', + delayCancelStart: 'Indításidőzítő megszakítása', + delayInactivePause: 'Csak akkor érhető el, amikor szól valami.', + delayInactiveStart: 'Akkor érhető el, ha szüneteltetve van egy betöltött számmal vagy rádióval.', + delayCustomMinutes: 'Egyéni késleltetés (perc)', + delayCustomPlaceholder: 'pl. 2.5', + closeDelayModal: 'Bezárás', + delayIn: 'ennyi múlva:', + delayFmtSec: '{{n}} mp', + delayFmtMin: '{{n}} perc', + delayFmtHr: '{{n}} ó', + delayCancel: 'Mégse', + delayApply: 'Alkalmaz', + next: 'Következő szám', + repeat: 'Ismétlés', + repeatOff: 'Ki', + repeatAll: 'Mind', + repeatOne: 'Egy', + progress: 'A dal előrehaladása', + volume: 'Hangerő', + mute: 'Némítás', + unmute: 'Némítás feloldása', + toggleQueue: 'Sor be/ki', + collapseQueueResize: 'Sor összecsukása, átméretezés', + moreOptions: 'További beállítások', + equalizer: 'Hangszínszabályzó', + playbackRate: 'Lejátszási sebesség', + miniPlayer: 'Mini lejátszó', + lyrics: 'Dalszöveg', + fsNowPlaying: 'Most szól…', + fsTrackPosition: '{{current}} / {{total}}. szám', + fsNext: 'Következő', + fsUpNext: 'Következik', + fsQueueEmpty: 'Nincs semmi a sorban.', + shuffle: 'Keverés', + fsLyricsToggle: 'Dalszöveg teljes képernyőn', + lyricsLoading: 'Dalszöveg betöltése…', + lyricsNotFound: 'Nem található dalszöveg ehhez a számhoz', + lyricsNoSources: 'Nincs kiválasztott dalszövegforrás — kapcsolj be néhányat itt: Beállítások → Dalszöveg', + lyricsSourceServer: 'Forrás: szerver', + lyricsSourceLrclib: 'Forrás: LRCLIB', + lyricsSourceNetease: 'Forrás: Netease', + lyricsSourceLyricsplus: 'Forrás: YouLyPlus', + showDuration: 'Hossz megjelenítése', + showRemainingTime: 'Hátralévő idő megjelenítése', +}; diff --git a/src/locales/hu/playlists.ts b/src/locales/hu/playlists.ts new file mode 100644 index 00000000..ef22e636 --- /dev/null +++ b/src/locales/hu/playlists.ts @@ -0,0 +1,122 @@ +export const playlists = { + title: 'Lejátszási listák', + newPlaylist: 'Új lejátszási lista', + unnamed: 'Névtelen lejátszási lista', + createName: 'Lejátszási lista neve…', + create: 'Létrehozás', + cancel: 'Mégse', + empty: 'Még nincsenek lejátszási listák.', + emptyPlaylist: 'Ez a lejátszási lista üres.', + addFirstSong: 'Add hozzá az első dalt', + notFound: 'A lejátszási lista nem található.', + songs_one: '{{count}} dal', + songs_other: '{{count}} dal', + playAll: 'Összes lejátszása', + playTooltip: 'Lejátszási lista lejátszása', + shuffle: 'Keverés', + addToQueue: 'Hozzáadás a sorhoz', + back: 'Vissza a lejátszási listákhoz', + deletePlaylist: 'Törlés', + confirmDelete: 'Kattints újra a megerősítéshez', + removeSong: 'Eltávolítás a lejátszási listából', + addSongs: 'Dalok hozzáadása', + addSongsTooltip: 'Keress a könyvtáradban számok hozzáadásához', + searchPlaceholder: 'Keress a könyvtáradban…', + noResults: 'Nincs találat.', + suggestions: 'Javasolt dalok', + noSuggestions: 'Nincsenek elérhető javaslatok.', + titleBadge: 'Lejátszási lista', + refreshSuggestions: 'Új javaslatok', + addSong: 'Hozzáadás a lejátszási listához', + preview: 'Előnézet (30 mp)', + previewStop: 'Előnézet leállítása', + playNextSuggestion: 'Lejátszás következőként', + suggestionsHint: 'Kattints duplán egy sorra a lejátszási listához adásához', + addSelected: 'Kijelöltek hozzáadása', + cacheOffline: 'Lejátszási lista gyorsítótárazása offline-ra', + offlineCached: 'Lejátszási lista gyorsítótárazva', + removeOffline: 'Eltávolítás az offline gyorsítótárból', + offlineDownloading: 'Gyorsítótárazás… ({{done}}/{{total}} album)', + publicLabel: 'Nyilvános', + privateLabel: 'Privát', + editMeta: 'Lejátszási lista szerkesztése', + editNamePlaceholder: 'Lejátszási lista neve…', + editCommentPlaceholder: 'Adj hozzá leírást…', + editPublic: 'Nyilvános lejátszási lista', + editSave: 'Mentés', + editCancel: 'Mégse', + changeCover: 'Borítókép módosítása', + changeCoverLabel: 'Fénykép módosítása', + removeCover: 'Fénykép eltávolítása', + coverUpdated: 'Borító frissítve', + metaSaved: 'Lejátszási lista frissítve', + downloadZip: 'Letöltés (ZIP)', + // Toast notifications for multi-select + addSuccess: '{{count}} dal hozzáadva ehhez: {{playlist}}', + addPartial: '{{added}} hozzáadva, {{skipped}} kihagyva (duplikátum)', + addAllSkipped: 'Mind kihagyva ({{count}} duplikátum)', + addedAsDuplicates: '{{count}} dal hozzáadva ehhez: {{playlist}} (duplikátumként)', + duplicateConfirmTitle: 'Már a lejátszási listában', + duplicateConfirmMessage: 'Mind a(z) {{count}} dal már a(z) „{{playlist}}" listában van. Hozzáadod őket újra duplikátumként?', + duplicateConfirmAction: 'Hozzáadás mégis', + addError: 'Hiba a dalok hozzáadásakor', + createAndAddSuccess: 'A(z) „{{playlist}}" lejátszási lista létrehozva {{count}} dallal', + createError: 'Hiba a lejátszási lista létrehozásakor', + deleteSuccess: '{{count}} lejátszási lista törölve', + deleteFailed: 'Hiba a(z) {{name}} törlésekor', + deleteSelected: 'Kijelöltek törlése', + deleteSelectedPartial: 'A(z) {{total}} kijelölt lejátszási listából csak {{n}} törölhető (a többi máshoz tartozik).', + mergeSuccess: '{{count}} dal egyesítve ebbe: {{playlist}}', + mergeNoNewSongs: 'Nincs új hozzáadandó dal', + mergeError: 'Hiba a lejátszási listák egyesítésekor', + mergeInto: 'Egyesítés ebbe', + selectionCount: '{{count}} kijelölve', + select: 'Kijelölés', + startSelect: 'Kijelölés bekapcsolása', + cancelSelect: 'Mégse', + loadingAlbums: '{{count}} album feloldása…', + loadingArtists: '{{count}} előadó feloldása…', + myPlaylists: 'Saját lejátszási listáim', + noOtherPlaylists: 'Nincs más elérhető lejátszási lista', + addToPlaylistSuccess: '{{count}} dal hozzáadva ehhez: {{playlist}}', + addToPlaylistNoNew: 'Nincs új hozzáadandó dal ehhez: {{playlist}}', + addToPlaylistError: 'Hiba a lejátszási listához adáskor', + removeSuccess: 'Dal eltávolítva a lejátszási listából', + removeError: 'Hiba a dal eltávolításakor a lejátszási listából', + importCSV: 'CSV importálása', + importCSVTooltip: 'Importálás Spotify CSV-ből', + csvImportReport: 'CSV-importálási jelentés', + csvImportTotal: 'Összesen', + csvImportAdded: 'Hozzáadva', + csvImportDuplicates: 'Duplikátumok', + csvImportNotFound: 'Nem található', + csvImportNetworkErrors: 'Hálózati hibák', + csvImportDuplicatesTitle: 'Duplikált számok (már a lejátszási listában):', + csvImportNotFoundTitle: 'Nem található számok:', + csvImportNetworkErrorsTitle: 'Hálózati hibák (az importálás újrapróbálható):', + csvImportDownloadReport: 'Jelentés letöltése', + csvImportClose: 'Bezárás', + csvImportNoValidTracks: 'Nem található érvényes szám a CSV-fájlban', + csvImportFailed: 'A CSV-fájl importálása nem sikerült', + csvImportToast: '{{added}} hozzáadva, {{notFound}} nem található, {{duplicates}} duplikátum', + csvImportDownloadSuccess: 'A jelentés sikeresen letöltve', + csvImportDownloadError: 'A jelentés letöltése nem sikerült', + // Playlist folders (local, per-server organisation layer) + folders: { + newFolder: 'Új mappa', + namePlaceholder: 'Mappa neve…', + create: 'Létrehozás', + rename: 'Átnevezés', + delete: 'Mappa törlése', + ungrouped: 'Csoportosítatlan', + moveToFolder: 'Áthelyezés mappába', + removeFromFolder: 'Eltávolítás a mappából', + expandFolder: 'Mappa kibontása', + collapseFolder: 'Mappa összecsukása', + groupByFolders: 'Csoportosítás mappák szerint', + count_one: '{{count}} lejátszási lista', + count_other: '{{count}} lejátszási lista', + localOnlyNotice: + 'A mappák csak ezen az eszközön, a Psysonicban vannak elmentve. A Navidrome és a Subsonic API nem támogatja natívan a lejátszásilista-mappákat, így a struktúra nem tárolódik a szervereden, és nem szinkronizálódik a többi eszközödre és alkalmazásodba.', + }, +}; diff --git a/src/locales/hu/queue.ts b/src/locales/hu/queue.ts new file mode 100644 index 00000000..6a73632d --- /dev/null +++ b/src/locales/hu/queue.ts @@ -0,0 +1,64 @@ +export const queue = { + title: 'Lejátszási sor', + modePlaylist: 'Lejátszási lista', + modeTimeline: 'Idővonal', + upNext: 'Következik', + history: 'Előzmények', + noUpcoming: 'Nincs közelgő szám.', + savePlaylist: 'Lejátszási lista mentése', + updatePlaylist: 'Lejátszási lista frissítése', + filterPlaylists: 'Lejátszási listák szűrése…', + playlistName: 'Lejátszási lista neve', + cancel: 'Mégse', + save: 'Mentés', + loadPlaylist: 'Lejátszási lista betöltése', + loading: 'Betöltés…', + noPlaylists: 'Nem található lejátszási lista.', + load: 'Sor cseréje és lejátszás', + appendToQueue: 'Hozzáfűzés a sorhoz', + delete: 'Törlés', + deleteConfirm: 'Törlöd a(z) „{{name}}" lejátszási listát?', + clear: 'Sor törlése', + shuffle: 'Sor keverése', + gapless: 'Szünetmentes', + crossfade: 'Áttűnés', + autoDj: 'AutoDJ', + infiniteQueue: 'Végtelen sor', + playlist: 'Lejátszási lista', + autoAdded: '— Automatikusan hozzáadva —', + radioAdded: '— Rádió —', + hide: 'Elrejtés', + hideNowPlaying: 'Most szól infó elrejtése', + showNowPlaying: 'Most szól infó megjelenítése', + close: 'Bezárás', + nextTracks: 'Következő számok', + shareQueue: 'Sor megosztási linkjének másolása', + shareQueueEmpty: 'A sor üres — nincs mit megosztani.', + emptyQueue: 'A sor üres.', + crossServerEnqueueBlocked: 'Másik szerverről származó számok nem adhatók a jelenlegi sorhoz. Előbb fejezd be vagy töröld a sort.', + trackSingular: 'szám', + trackPlural: 'szám', + showRemaining: 'Hátralévő idő megjelenítése', + showTotal: 'Teljes idő megjelenítése', + showEta: 'Becsült befejezési idő megjelenítése', + replayGain: 'ReplayGain', + rgTrack: 'Sz {{db}} dB', + rgAlbum: 'A {{db}} dB', + rgPeak: 'Csúcs {{pk}}', + sourceOffline: 'Lejátszás az offline könyvtárból', + sourceHot: 'Lejátszás a gyorsítótárból', + sourceStream: 'Lejátszás hálózati streamből', + clearCachedLoudnessWaveform: 'Gyorsítótárazott hangerő és hullámforma törlése, majd a szám újraelemzése', + recalculatingLoudnessWaveform: 'A szám hangerejének és hullámformájának újraszámítása…', + bpm: '{{bpm}} BPM', + moods: { + happy: 'Vidám', + excited: 'Izgatott', + calm: 'Nyugodt', + peaceful: 'Békés', + angry: 'Dühös', + tense: 'Feszült', + sad: 'Szomorú', + melancholic: 'Melankolikus', + }, +}; diff --git a/src/locales/hu/radio.ts b/src/locales/hu/radio.ts new file mode 100644 index 00000000..5d7c02bc --- /dev/null +++ b/src/locales/hu/radio.ts @@ -0,0 +1,37 @@ +export const radio = { + title: 'Internetes rádió', + empty: 'Nincs beállított rádióállomás.', + addStation: 'Állomás hozzáadása', + editStation: 'Szerkesztés', + playStation: 'Állomás lejátszása', + stopStation: 'Állomás leállítása', + deleteStation: 'Állomás törlése', + confirmDelete: 'Kattints újra a megerősítéshez', + stationName: 'Állomás neve…', + streamUrl: 'Stream URL…', + homepageUrl: 'Honlap URL (opcionális)', + save: 'Mentés', + cancel: 'Mégse', + live: 'ÉLŐ', + liveStream: 'Internetes rádió', + openHomepage: 'Honlap megnyitása', + changeCoverLabel: 'Borító módosítása', + removeCover: 'Borító eltávolítása', + browseDirectory: 'Címtár keresése', + directoryPlaceholder: 'Állomások keresése…', + noResults: 'Nem található állomás.', + stationAdded: 'Állomás hozzáadva', + filterAll: 'Mind', + filterFavorites: 'Kedvencek', + sortManual: 'Kézi', + sortAZ: 'A → Z', + sortZA: 'Z → A', + sortNewest: 'Legújabb', + favorite: 'Hozzáadás a kedvencekhez', + unfavorite: 'Eltávolítás a kedvencekből', + noFavorites: 'Nincsenek kedvenc állomások.', + listenerCount_one: '{{count}} hallgató', + listenerCount_other: '{{count}} hallgató', + recentlyPlayed: 'Nemrég játszott', + upNext: 'Következik', +}; diff --git a/src/locales/hu/randomAlbums.ts b/src/locales/hu/randomAlbums.ts new file mode 100644 index 00000000..734e6827 --- /dev/null +++ b/src/locales/hu/randomAlbums.ts @@ -0,0 +1,4 @@ +export const randomAlbums = { + title: 'Véletlen albumok', + refresh: 'Frissítés', +}; diff --git a/src/locales/hu/randomLanding.ts b/src/locales/hu/randomLanding.ts new file mode 100644 index 00000000..7b3b8588 --- /dev/null +++ b/src/locales/hu/randomLanding.ts @@ -0,0 +1,9 @@ +export const randomLanding = { + title: 'Mix összeállítása', + mixByTracks: 'Mix számokból', + mixByTracksDesc: 'Véletlenszerű számválogatás a teljes könyvtáradból', + mixByAlbums: 'Mix albumokból', + mixByAlbumsDesc: 'Véletlen albumválogatás a következő felfedezéshez', + mixByLucky: 'Lucky Mix', + mixByLuckyDesc: 'Okos azonnali mix a kedvenc előadóidból, albumaidból és értékeléseidből', +}; diff --git a/src/locales/hu/randomMix.ts b/src/locales/hu/randomMix.ts new file mode 100644 index 00000000..06c3893c --- /dev/null +++ b/src/locales/hu/randomMix.ts @@ -0,0 +1,40 @@ +export const randomMix = { + title: 'Véletlen mix', + remix: 'Újrakeverés', + remixTooltip: 'Új véletlen dalok betöltése', + remixGenre: '{{genre}} újrakeverése', + remixTooltipGenre: 'Új {{genre}} dalok betöltése', + playAll: 'Összes lejátszása', + trackTitle: 'Cím', + trackArtist: 'Előadó', + trackAlbum: 'Album', + trackFavorite: 'Kedvenc', + trackDuration: 'Hossz', + favoriteAdd: 'Hozzáadás a kedvencekhez', + favoriteRemove: 'Eltávolítás a kedvencekből', + play: 'Lejátszás', + trackGenre: 'Műfaj', + mixSettingsHeader: 'Mix beállításai', + exclusionsHeader: 'Kizárások', + filterPanelInexactSizeNote: 'A mix mérete csak célérték — nagy kérések kevesebb egyedi számot adhatnak vissza, ha a szerver véletlen-készlete kifogy.', + mixSize: 'Lejátszási lista mérete', + excludeAudiobooks: 'Hangoskönyvek és rádiójátékok kizárása', + excludeAudiobooksDesc: 'Kulcsszavakat keres a műfajban, címben, albumban és előadóban — pl. Hörbuch, Audiobook, Spoken Word, …', + genreBlocked: 'Kulcsszó letiltva', + genreAddedToBlacklist: 'Hozzáadva a szűrőlistához', + genreAlreadyBlocked: 'Már letiltva', + artistBlocked: 'Előadó letiltva', + artistAddedToBlacklist: 'Előadó hozzáadva a szűrőlistához', + artistClickHint: 'Kattints az előadó letiltásához', + blacklistToggle: 'Kulcsszószűrő', + genreMixTitle: 'Műfaj-mix', + genreMixDesc: 'A 20 legnagyobb műfaj dalszám szerint — kattints egy véletlen mix betöltéséhez', + genreMixAll: 'Összes dal', + genreMixLoadMore: 'Még 10 betöltése', + genreMixNoGenres: 'Nem található műfaj a szerveren.', + noSongsMatchFilters: 'Egyetlen dal sem felel meg a jelenlegi szűrőknek. Próbálj kulcsszótiltásokat eltávolítani vagy a mix beállításait módosítani.', + shuffleGenres: 'Más műfajok mutatása', + filterPanelTitle: 'Szűrők', + filterPanelDesc: 'Kattints egy műfajcímkére vagy előadónévre az alábbi számlistában, hogy kizárd a jövőbeli mixekből.', + genreClickHint: 'Kattints egy műfajcímkére, hogy\nszűrő-kulcsszóként hozzáadd.\nMűfajt, címet, albumot és előadót keres.', +}; diff --git a/src/locales/hu/search.ts b/src/locales/hu/search.ts new file mode 100644 index 00000000..e32c84d5 --- /dev/null +++ b/src/locales/hu/search.ts @@ -0,0 +1,87 @@ +export const search = { + placeholder: 'Keress előadót, albumot vagy dalt…', + noResults: 'Nincs találat erre: „{{query}}"', + artists: 'Előadók', + albums: 'Albumok', + songs: 'Dalok', + clearLabel: 'Keresés törlése', + addedToQueueToast: '„{{title}}" hozzáadva a sorhoz', + title: 'Keresés', + resultsFor: 'Találatok erre: „{{query}}"', + album: 'Album', + advanced: 'Speciális keresés', + localIndexBadge: 'Helyi index', + localIndexBadgeTooltip: 'Találatok az eszköz helyi könyvtárindexéből', + networkSearchBadge: 'Szerverkeresés', + networkSearchBadgeTooltip: 'Találatok a csatlakoztatott szerver élő kereséséből', + liveSearchFailed: 'A keresés nem sikerült — próbáld újra', + advancedSearchTerm: 'Keresési kifejezés', + advancedSearchPlaceholder: 'Cím, album, előadó…', + advancedGenre: 'Műfaj', + advancedAllGenres: 'Összes műfaj', + advancedYear: 'Év', + advancedYearFrom: 'ettől', + advancedYearTo: 'eddig', + advancedBpm: 'BPM', + advancedBpmClear: 'BPM-szűrő törlése', + advancedLossless: 'Formátum', + advancedLosslessOnly: 'Csak veszteségmentes', + bpmSourceTag: 'BPM a fájl címkéjéből', + bpmSourceAnalysis: 'BPM a hangelemzésből', + advancedMoodGroup: 'Hangulat', + advancedAllMoods: 'Összes hangulat', + advancedMoodLocalNote: 'Helyi könyvtárindexet és számelemzést igényel', + scopeRowLabel: 'Keresés itt:', + scopeAllTooltip: 'Keresés mindenben', + scopeArtistsChipTooltip: 'Találatok szűkítése előadókra', + scopeAlbumsChipTooltip: 'Találatok szűkítése albumokra', + scopeSongsChipTooltip: 'Találatok szűkítése dalokra', + advancedAll: 'Mind', + advancedSearch: 'Keresés', + advancedEmpty: 'Adj meg egy keresési kifejezést, vagy válassz szűrőt a kezdéshez.', + advancedNoResults: 'Nincs találat.', + advancedGenreNote: 'A dalok véletlenszerűen kerülnek kiválasztásra ebből a műfajból.', + recentSearches: 'Legutóbbi keresések', + browse: 'Böngészés', + emptyHint: 'Mit szeretnél hallgatni?', + scopeArtistsPlaceholder: 'Előadó keresése…', + scopeArtistsBadgeTooltip: 'Kattints az eltávolításhoz', + scopeArtistsGhostTooltip: 'Kattints, hogy csak ezen az oldalon keress', + scopeAlbumsPlaceholder: 'Album keresése…', + scopeAlbumsBadgeTooltip: 'Kattints az eltávolításhoz', + scopeAlbumsGhostTooltip: 'Kattints, hogy csak ezen az oldalon keress', + scopeNewReleasesPlaceholder: 'Új megjelenések keresése…', + scopeNewReleasesBadgeTooltip: 'Kattints az eltávolításhoz', + scopeNewReleasesGhostTooltip: 'Kattints, hogy csak ezen az oldalon keress', + scopeTracksPlaceholder: 'Szám keresése cím, előadó vagy album szerint…', + scopeTracksBadgeTooltip: 'Kattints az eltávolításhoz', + scopeTracksGhostTooltip: 'Kattints, hogy csak ezen az oldalon keress', + scopeComposersPlaceholder: 'Zeneszerző keresése…', + scopeComposersBadgeTooltip: 'Kattints az eltávolításhoz', + scopeComposersGhostTooltip: 'Kattints, hogy csak ezen az oldalon keress', + genres: 'Műfajok', + shareLink: 'Megosztási link', + shareTrackTitle: 'Megosztott szám', + shareQueueTitle_one: 'Megosztott sor ({{count}} szám)', + shareQueueTitle_other: 'Megosztott sor ({{count}} szám)', + shareQueueAction: 'Hozzáadás a sorhoz', + shareQueueing: 'Hozzáadás a sorhoz…', + shareQueued_one: '{{count}} megosztott szám hozzáadva a sorhoz', + shareQueued_other: '{{count}} megosztott szám hozzáadva a sorhoz', + shareQueuedPartial: '{{queued}}/{{total}} megosztott szám hozzáadva a sorhoz ({{skipped}} nem található).', + shareUnsupportedTitle: 'Ez a megosztási link itt nem használható', + shareUnsupportedSub: 'Használj szám-, album-, előadó-, zeneszerző- vagy sor-megosztási linket.', + shareFromServer: 'Innen: {{server}}', + shareQueuePreview: 'Számok előnézete', + shareQueuePreviewLoading: 'Számok betöltése…', + shareQueuePreviewEmpty: 'A link egyetlen száma sem található a szerveren.', + shareQueuePreviewSkipped: '{{total}} számból {{skipped}} nem található ezen a szerveren.', + moodGroups: { + joy: 'Öröm', + sadness: 'Szomorúság', + dance: 'Tánc', + work: 'Munka', + romance: 'Romantika', + anger: 'Harag', + }, +}; diff --git a/src/locales/hu/settings.ts b/src/locales/hu/settings.ts new file mode 100644 index 00000000..53638943 --- /dev/null +++ b/src/locales/hu/settings.ts @@ -0,0 +1,718 @@ +export const settings = { + title: 'Beállítások', + language: 'Nyelv', + languageEn: 'English', + languageDe: 'Deutsch', + languageEs: 'Español', + languageFr: 'Français', + languageNl: 'Nederlands', + languageNb: 'Norsk', + languageRu: 'Русский', + languageZh: '中文', + languageRo: 'Română', + languageJa: '日本語', + languageHu: 'Magyar', + font: 'Betűtípus', + fontHintOpenDyslexic: 'Diszlexiabarát · nincs kínai támogatás', + theme: 'Téma', + appearance: 'Megjelenés', + servers: 'Szerverek', + serverName: 'Szerver neve', + serverUrl: 'Szerver URL', + serverUrlPlaceholder: '192.168.1.100:4533 vagy https://music.example.com', + serverAlternateUrl: 'Második cím (opcionális)', + serverAlternateUrlPlaceholderPublic: 'https://music.example.com', + serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533', + serverAlternateUrlHintAddPublic: 'Hozzáadhatsz egy nyilvános címet az otthoni hálózaton kívüli eléréshez.', + serverAlternateUrlHintAddLocal: 'Hozzáadhatsz egy helyi címet a gyorsabb otthoni kapcsolathoz.', + serverBothLanError: 'Mindkét cím helyi — tarts meg egyet, vagy adj hozzá egy nyilvános címet.', + dualAddressVerifying: 'Ellenőrzés, hogy mindkét cím ugyanarra a szerverre mutat-e…', + dualAddressMismatch: 'A két cím különböző szerverekre mutat. Ellenőrizd a helyesírást, és próbáld újra.', + dualAddressInsufficient: 'Nem sikerült megerősíteni, hogy mindkét cím ugyanaz a szerver. A folytatáshoz távolíts el egy címet.', + dualAddressUnreachable: '{{host}} nem érhető el. Ellenőrizd a címet és a hálózatodat, majd próbáld újra.', + urlRemigrationTitle: 'Áthelyezed a könyvtáradatokat?', + urlRemigrationMessage: 'A cím módosítása az összes könyvtár-, elemzési és borító-gyorsítótár adatot áthelyezi innen: {{oldKey}} ide: {{newKey}}. Ez nem vonható vissza.', + urlRemigrationConfirm: 'Adatok áthelyezése', + urlRemigrationProgress: 'Könyvtáradatok áthelyezése…', + urlRemigrationFailureInspect: 'Nem sikerült ellenőrizni, mi kerülne áthelyezésre. Próbáld újra, vagy nyisd meg a hibakeresési naplót.', + urlRemigrationFailureRun: 'A könyvtáradatok áthelyezése nem sikerült. A mentett adataid változatlanok — próbáld újra.', + urlRemigrationFailureCoverRename: 'A könyvtáradatok áthelyeződtek, de a borítófájlokat nem sikerült átnevezni. A borítók a következő hozzáféréskor újraépülnek.', + shareUsesLocalUrl: 'Helyi cím használata a megosztási hivatkozásokban', + shareUsesLocalUrlDesc: 'Érinti az Orbit-meghívókat és a könyvtármegosztásokat. Alapértelmezett: nyilvános cím.', + serverUsername: 'Felhasználónév', + serverPassword: 'Jelszó', + addServer: 'Szerver hozzáadása', + addServerTitle: 'Új szerver hozzáadása', + editServer: 'Szerkesztés', + editServerTitle: 'Szerver szerkesztése', + useServer: 'Használat', + deleteServer: 'Törlés', + noServers: 'Nincs mentett szerver.', + serverActive: 'Aktív', + serverVersionUnknown: 'Ismeretlen szerververzió', + confirmDeleteServer: 'Törlöd a(z) „{{name}}" szervert?', + confirmDeleteServerLibrary: 'Törlöd a szerver helyi könyvtárindexét is? Kattints a Mégse gombra a gyorsítótárazott másolat offline használatra való megtartásához.', + serverConnecting: 'Csatlakozás…', + serverConnected: 'Csatlakozva!', + serverFailed: 'A kapcsolat sikertelen.', + testBtn: 'Kapcsolat tesztelése', + testingBtn: 'Tesztelés…', + serverCompatible: 'Navidrome-hoz készült. Más Subsonic-kompatibilis szerverek (Gonic, Airsonic, …) korlátozott funkcionalitással működhetnek, mivel a Psysonic számos Navidrome-specifikus API-végpontot használ.', + userMgmtTitle: 'Felhasználókezelés', + userMgmtDesc: 'Felhasználók kezelése ezen a szerveren. Adminisztrátori jogosultságot igényel.', + userMgmtNoAdmin: 'Adminisztrátori jogosultság szükséges a felhasználók kezeléséhez ezen a szerveren.', + userMgmtLoadError: 'Nem sikerült betölteni a felhasználókat.', + userMgmtLoadFriendly: 'A szerver nem válaszolt — ez általában egyszeri eset.', + userMgmtRetry: 'Újra', + userMgmtEmpty: 'Nem található felhasználó.', + userMgmtYouBadge: 'Te', + userMgmtAdminBadge: 'Admin', + userMgmtAddUser: 'Felhasználó hozzáadása', + userMgmtAddUserTitle: 'Új felhasználó hozzáadása', + userMgmtEditUserTitle: 'Felhasználó szerkesztése', + userMgmtUsername: 'Felhasználónév', + userMgmtName: 'Megjelenítendő név', + userMgmtEmail: 'E-mail', + userMgmtPassword: 'Jelszó', + userMgmtPasswordEditHint: 'A frissítéshez adj meg egy új jelszót.', + userMgmtRoleAdmin: 'Admin', + userMgmtLibraries: 'Könyvtárak', + userMgmtLibrariesAdminHint: 'Az adminisztrátori felhasználók automatikusan hozzáférnek minden könyvtárhoz.', + userMgmtLibrariesEmpty: 'Nincs elérhető könyvtár ezen a szerveren.', + userMgmtLibrariesValidation: 'Válassz ki legalább egy könyvtárat.', + userMgmtLibrariesUpdateError: 'A felhasználó elmentve, de a könyvtár-hozzárendelés sikertelen', + userMgmtNoLibraries: 'Nincs hozzárendelt könyvtár', + userMgmtNeverSeen: 'Soha', + userMgmtSave: 'Mentés', + userMgmtCancel: 'Mégse', + userMgmtDelete: 'Törlés', + userMgmtEdit: 'Szerkesztés', + userMgmtConfirmDelete: 'Törlöd a(z) „{{username}}" felhasználót? Ez nem vonható vissza.', + userMgmtCreateError: 'Nem sikerült létrehozni a felhasználót.', + userMgmtUpdateError: 'Nem sikerült frissíteni a felhasználót.', + userMgmtDeleteError: 'Nem sikerült törölni a felhasználót.', + userMgmtCreated: 'Felhasználó létrehozva.', + userMgmtUpdated: 'Felhasználó frissítve.', + userMgmtDeleted: 'Felhasználó törölve.', + userMgmtValidationMissing: 'A felhasználónév, a megjelenítendő név és a jelszó kötelező.', + userMgmtValidationMissingIdentity: 'A felhasználónév és a megjelenítendő név kötelező.', + userMgmtMagicStringGenerate: 'Varázsszöveg generálása', + userMgmtSaveAndMagicString: 'Mentés és varázsszöveg lekérése', + userMgmtMagicStringPasswordNavHint: + 'A Navidrome elmenti ezt a jelszót a felhasználóhoz. Ha eltér a jelenlegitől, a szerver frissíti a bejelentkezési jelszót.', + userMgmtMagicStringPlaintextWarning: + 'Óvatosan oszd meg a varázsszöveget: titkosítatlan jelszót tartalmaz (a kódolás nem titkosítás). Bárki, aki birtokolja a teljes szöveget, be tud jelentkezni ezzel a felhasználóval.', + userMgmtMagicStringCopied: 'Varázsszöveg a vágólapra másolva.', + userMgmtMagicStringCopyFailed: 'Nem sikerült a vágólapra másolni.', + userMgmtMagicStringLoginFailed: 'A jelszó ellenőrzése sikertelen — a hitelesítő adatokat nem sikerült igazolni.', + userMgmtMagicStringModalTitle: 'Varázsszöveg generálása', + userMgmtMagicStringModalDesc: 'Add meg a(z) „{{username}}" Subsonic jelszavát. Ez szerepel a másolt varázsszövegben.', + userMgmtMagicStringModalConfirm: 'Szöveg másolása', + audiomuseTitle: 'AudioMuse-AI (Navidrome)', + audiomuseBadge: 'AudioMuse-AI', + audiomuseDesc: + 'Kapcsold be, ha ezen a szerveren be van állítva az AudioMuse-AI Navidrome bővítmény. Engedélyezi a számokból induló azonnali mixet, és a Last.fm helyett szerveroldali hasonló előadókat használ az előadói oldalakon.', + audiomuseStatusActive: 'Aktív', + audiomuseStatusChecking: 'Ellenőrzés…', + audiomuseStatusNotDetected: 'Nem észlelhető', + audiomuseStatusProbeFailed: 'A vizsgálat sikertelen', + audiomuseIssueHint: + 'Az azonnali mix nemrég sikertelen volt — ellenőrizd a Navidrome bővítményt és az AudioMuse API-t. A hasonló előadók a Last.fm-re esnek vissza, ha a szerver nem ad eredményt.', + connected: 'Csatlakozva', + failed: 'Sikertelen', + eqTitle: 'Hangszínszabályzó', + eqEnabled: 'Hangszínszabályzó engedélyezése', + eqPreset: 'Előbeállítás', + eqPresetCustom: 'Egyéni', + eqPresetBuiltin: 'Beépített előbeállítások', + eqPresetCustomGroup: 'Saját előbeállítások', + eqPresetAutoEqGroup: 'AutoEQ', + eqSavePreset: 'Mentés előbeállításként', + eqPresetName: 'Előbeállítás neve…', + eqDeletePreset: 'Előbeállítás törlése', + eqResetBands: 'Visszaállítás lapra', + eqPreGain: 'Előerősítés', + eqResetPreGain: 'Előerősítés visszaállítása', + eqAutoEqTitle: 'AutoEQ fejhallgató-kereső', + eqAutoEqPlaceholder: 'Fejhallgató / IEM modell keresése…', + eqAutoEqSearching: 'Keresés…', + eqAutoEqNoResults: 'Nincs találat', + eqAutoEqError: 'A keresés sikertelen', + eqAutoEqRateLimit: 'A GitHub kéréskorlátja elérve — próbáld újra egy perc múlva', + eqAutoEqFetchError: 'Nem sikerült letölteni az EQ-profilt', + behavior: 'Alkalmazás viselkedése', + groupTray: 'Tálca', + groupLinuxRendering: 'Linux megjelenítés', + groupClock: 'Óra', + groupDisplay: 'Kijelző', + groupWindow: 'Ablak', + cacheTitle: 'Max. tárolóméret', + cacheDesc: 'Böngészőn belüli gyorsítótár a borítóknak és előadói képeknek (IndexedDB). A legrégebbi bejegyzések automatikusan törlődnek, ha kevés a hely.', + cacheUsedImages: 'Képek:', + cacheUsedOffline: 'Offline számok:', + cacheUsedHot: 'Méret a lemezen:', + hotCacheTrackCount: 'Számok a gyorsítótárban:', + cacheMaxLabel: 'Max. méret', + imageCacheScopeLabel: 'Hatókör', + imageCacheSubTitle: 'Böngészőn belüli előnézetek', + coverDiskCacheSubTitle: 'Lemezes borító-gyorsítótár', + coverCacheStrategyTitle: 'Borító-gyorsítótár', + coverCacheStrategyDesc: 'Minden szerverhez választhatsz stratégiát: Lusta — a borítók szükség szerint töltődnek be; Agresszív — szükség szerint, plusz extra háttér-előtöltés.', + coverCacheStrategyLabel: 'Stratégia', + coverCacheStrategyServerLabel: 'Szerver', + coverCacheStrategyProgressLabel: 'Gyorsítótár', + coverCacheStrategyActionsLabel: 'Műveletek', + coverCacheStrategyLazy: 'Lusta', + coverCacheStrategyLazyDesc: 'A borítókat csak akkor tölti be, amikor szükség van rájuk.', + coverCacheStrategyAggressive: 'Agresszív', + coverCacheStrategyAggressiveDesc: 'Lusta viselkedés, plusz extra háttér-előtöltés.', + coverCacheStrategyDiskUsage: 'Lemezen: {{size}}', + coverCacheStrategyProgressValue: '{{percent}}% ({{done}}/{{total}}) · {{size}}', + coverCacheStrategyClearAction: 'Borító-gyorsítótár ürítése', + coverCacheStrategyClearTitle: 'Ürítöd a borító-gyorsítótárat?', + coverCacheStrategyClearDesc: 'Az összes gyorsítótárazott borító eltávolítása ehhez: {{server}}. Szükség esetén újra letöltődnek.', + coverCacheStrategyClearConfirm: 'Ürítés', + coverCacheStrategyClearCancel: 'Mégse', + coverCacheStrategyClearSuccess: 'A borító-gyorsítótár ürítve ehhez a szerverhez.', + coverCacheStrategyClearError: 'Nem sikerült üríteni a borító-gyorsítótárat.', + coverCacheStrategyServerRemoved: 'eltávolított szerver', + cacheClearBtn: 'Gyorsítótár ürítése', + cacheClearWarning: 'Törli az összes gyorsítótárazott borítót és előadói képet a böngészőn belüli tárolóból. Szükség esetén újra letöltődnek.', + cacheClearConfirm: 'Képgyorsítótár ürítése', + cacheClearCancel: 'Mégse', + waveformCacheCleared: 'Hullámforma-gyorsítótár ürítve ({{count}} sor).', + waveformCacheClearFailed: 'Nem sikerült üríteni a hullámforma-gyorsítótárat.', + storageTabTitle: 'Offline és gyorsítótár', + mediaDirTitle: 'Médiamappa', + mediaDirDesc: 'A helyi lejátszás gyökérmappája. Az offline könyvtár a library/ mappát, a sor-előtöltés a cache/ mappát használja.', + mediaDirDefault: 'Alapértelmezett (App Data)', + mediaDirChange: 'Mappa módosítása', + mediaDirClear: 'Visszaállítás alapértelmezettre', + mediaDirHint: 'Az új letöltések ezt a helyet használják. A meglévő fájlok az eredeti útvonalukon maradnak, amíg el nem távolítod őket.', + offlineStorageTitle: 'Offline könyvtár tárolása', + offlineDirTitle: 'Offline könyvtár (alkalmazáson belül)', + offlineDirDesc: 'A Psysonicon belül offline elérhetővé tett számok tárolási helye.', + offlineDirDefault: 'Alapértelmezett (App Data)', + offlineDirChange: 'Könyvtár módosítása', + offlineDirClear: 'Visszaállítás alapértelmezettre', + offlineDirHint: 'Az új letöltések ezt a helyet használják. A meglévő letöltések az eredeti útvonalukon maradnak.', + hotCacheTitle: 'Aktív lejátszási gyorsítótár', + hotCacheDisclaimer: 'Előtölti a sor következő számait, és megtartja a korábbiakat. Bekapcsolva lemezterületet és hálózatot használ.', + hotCacheDirDefault: 'Alapértelmezett (App Data)', + hotCacheDirChange: 'Mappa módosítása', + hotCacheDirClear: 'Visszaállítás alapértelmezettre', + hotCacheDirHint: 'A mappa módosítása visszaállítja az alkalmazáson belüli indexet; a lemezen már meglévő fájlok a helyükön maradnak, amíg el nem távolítod őket.', + hotCacheEnabled: 'Aktív lejátszási gyorsítótár engedélyezése', + hotCacheMaxMb: 'Maximális gyorsítótár-méret', + hotCacheDebounce: 'Sorváltás-késleltetés', + hotCacheDebounceImmediate: 'Azonnali', + hotCacheDebounceSeconds: '{{n}} mp', + hotCacheClearBtn: 'Aktív gyorsítótár ürítése', + audioOutputDevice: 'Hangkimeneti eszköz', + audioOutputDeviceDesc: 'Válaszd ki, melyik hangeszközön szóljon a Psysonic. A változtatások azonnal érvénybe lépnek, és újraindítják az aktuális számot.', + audioOutputDeviceDefault: 'Rendszer alapértelmezése', + audioOutputDeviceRefresh: 'Eszközlista frissítése', + audioOutputDeviceOsDefaultNow: 'aktuális rendszerkimenet', + audioOutputDeviceListError: 'Nem sikerült betölteni a hangeszközök listáját.', + audioOutputDeviceNotInCurrentList: 'nincs a jelenlegi listában', + audioOutputDeviceRememberEq: 'EQ megjegyzése eszközönként', + audioOutputDeviceRememberEqDesc: 'Elmenti a hangszínszabályzó beállításait minden hangkimeneti eszközhöz, és automatikusan visszaállítja őket eszközváltáskor. A profilok csak akkor váltanak, ha itt választasz eszközt, és a rendszer alapértelmezése egyetlen közös profilt használ.', + hiResTitle: 'Natív Hi-Res lejátszás', + hiResEnabled: 'Natív Hi-Res lejátszás engedélyezése', + hiResDesc: 'Minden számot az eredeti mintavételezési frekvenciáján játszik le, ahelyett, hogy mindent 44,1 kHz-re mintavételezne újra, és a hangeszközt a fájlhoz igazítja (88,2 kHz-től felfelé). Csak akkor engedélyezd, ha a hardvered és a hálózatod megbízhatóan kezeli a magas mintavételezési frekvenciákat.', + showArtistImages: 'Előadói képek megjelenítése', + showArtistImagesDesc: 'Az előadói képek betöltése és megjelenítése az Előadók áttekintőben. Alapértelmezetten letiltva a szerver lemez-I/O és hálózati terhelésének csökkentése érdekében nagy könyvtáraknál.', + showOrbitTrigger: 'Az „Orbit" megjelenítése a fejlécben', + showOrbitTriggerDesc: 'A felső sávon lévő gomb megosztott zenehallgatási munkamenet indításához vagy csatlakozáshoz. Rejtsd el, ha nem használod az Orbitot — itt bármikor visszakapcsolhatod.', + showTrayIcon: 'Tálcaikon megjelenítése', + showTrayIconDesc: 'A Psysonic ikon megjelenítése a rendszer értesítési területén / menüsorban.', + minimizeToTray: 'Kis méretre a tálcára', + minimizeToTrayDesc: 'Az ablak bezárásakor a Psysonic kilépés helyett a rendszer tálcáján fut tovább.', + clockFormat: 'Óraformátum', + clockFormatDesc: 'A sor várható befejezési idejéhez és az alvásidőzítő előnézetéhez használt óramegjelenítés.', + clockFormatAuto: 'Automatikus (rendszer beállítása)', + clockFormatTwentyFour: '24 órás', + clockFormatTwelve: '12 órás (de./du.)', + preloadMiniPlayer: 'Mini lejátszó előtöltése', + preloadMiniPlayerDesc: 'A mini lejátszó ablakának felépítése a háttérben az alkalmazás indításakor, hogy első megnyitáskor azonnal tartalmat mutasson. Kicsivel több memóriát használ.', + discordRichPresence: 'Discord Rich Presence', + discordRichPresenceDesc: 'Az éppen lejátszott szám megjelenítése a Discord-profilodon. A Discordnak futnia kell.', + discordRichPresenceNotice: 'Figyelem: ez a Psysonic beépített Discord Rich Presence funkciója. Ha inkább a hivatalos Navidrome Discord Rich Presence bővítményt használnád, hagyd ezt kikapcsolva, és ehelyett a lejjebb található „Megjelenítés a Most szólban" lehetőséget engedélyezd.', + useCustomTitlebar: 'Egyéni címsor', + useCustomTitlebarDesc: 'A rendszer címsorának lecserélése egy beépítettre, amely illeszkedik az alkalmazás témájához. Kapcsold ki a natív GNOME/GTK címsor használatához.', + windowButtonStyle: 'Ablakgombok', + windowButtonStyleDesc: 'Válaszd ki a kis méretre, teljes méretre és bezárás gombok kinézetét.', + windowButtonsDots: 'Pontok', + windowButtonsDotsGlyph: 'Pontok + ikonok', + windowButtonsFlat: 'Lapos', + windowButtonsPill: 'Pirula', + windowButtonsOutline: 'Körvonal', + windowButtonsGlyph: 'Minimál', + showMinimizeButton: 'Kis méretre gomb megjelenítése', + showMinimizeButtonDesc: 'Kapcsold ki, hogy csak a teljes méretre és a bezárás gomb jelenjen meg.', + linuxWebkitSmoothScroll: 'Sima görgetés (Linux)', + linuxWebkitSmoothScrollDesc: 'Be: tehetetlenségi görgetés. Ki: soronkénti, GTK-stílusú.', + linuxWebkitInputForceRepaint: 'Beviteli mezők újrarajzolása fókuszkor (Linux)', + linuxWebkitInputForceRepaintDesc: 'Megkerülő megoldás a WebKitGTK 2.50.x-hez, ahol a szövegmezők lefagynak kattintáskor. A keresőikonok röviden villognak fókuszkor.', + linuxWaylandTextRender: 'Wayland szövegmegjelenítés (Linux)', + linuxWaylandTextRenderDesc: + 'A felület betűsimítása azonnal frissül. A WebKit hardveres gyorsítása (éles / GPU előbeállítások) elmentődik, és a következő alkalmazásindításkor lép érvénybe — élő módosítása egyes konfigurációkon lefagyaszthatja a WebKitGTK-t.', + linuxWaylandTextRenderBalanced: 'Kiegyensúlyozott', + linuxWaylandTextRenderSharp: 'Éles (CPU-barát)', + linuxWaylandTextRenderGpu: 'GPU-elsődleges', + linuxWaylandTextRenderMinimal: 'Minimál (alapértelmezett CSS-simítás)', + discordCoverTitle: 'Borító forrása', + discordCoverDesc: 'Honnan származik az albumborító a Discord-profilodon.', + discordCoverNone: 'Nincs (csak alkalmazásikon)', + discordCoverServer: 'Szerver (albuminfó alapján)', + discordCoverApple: 'Apple Music', + discordOptions: 'Speciális Discord-beállítások', + discordTemplates: 'Egyéni szövegsablonok', + discordTemplatesDesc: 'Testreszabhatod, milyen információ jelenik meg a Discord-profilodon. Változók: {title}, {artist}, {album}', + discordTemplateDetails: 'Elsődleges sor (details)', + discordTemplateState: 'Másodlagos sor (state)', + discordTemplateLargeText: 'Album tooltip (largeText)', + discordTemplateName: 'Felhasználólista-sor (name)', + nowPlayingEnabled: 'Megjelenítés a Most szólban', + nowPlayingEnabledDesc: 'Az éppen lejátszott szám közvetítése a szerver élő hallgatói nézetébe. Kapcsold ki a lejátszási adatok küldésének leállításához.', + nowPlayingPluginNote: 'Szükséges a hivatalos Navidrome Discord Rich Presence bővítmény használatakor.', + externalArtwork: 'Külső borítólehúzó', + externalArtworkDesc: 'Nagy felbontású előadói hátterek és bannerek lekérése a fanart.tv-ről a teljes képernyős lejátszóhoz és az előadói oldalakhoz. Alapértelmezetten kikapcsolva.', + externalArtworkNote: 'Bekapcsolva elküldi az előadó (és az aktuális album) nevét a musicbrainz.org-ra az előadó azonosításához, majd borítókat kér le a fanart.tv-ről — igény szerint és csak olvasásra; a könyvtárad címkéi soha nem módosulnak. A borítókat a fanart.tv és közreműködői biztosítják.', + externalArtworkByokTitle: 'Személyes API-kulcs (BYOK)', + externalArtworkByokDesc: 'Opcionális. Add meg itt a saját fanart.tv személyes API-kulcsodat — az alkalmazás kulcsa mellett kerül elküldésre.', + externalArtworkByokSaved: 'Elmentve — az alkalmazás kulcsával együtt kerül elküldésre, amíg a lehúzó be van kapcsolva.', + enableBandsintown: 'Bandsintown turnédátumok', + enableBandsintownDesc: 'A jelenlegi előadó közelgő koncertjeinek megjelenítése az Infó lapon. Az adatok a nyilvános Bandsintown API-ból származnak.', + lyricsServerFirst: 'Szerver dalszövegeinek előnyben részesítése', + lyricsServerFirstDesc: 'A szerver által biztosított dalszövegek (beágyazott címkék, kísérőfájlok) ellenőrzése az LRCLIB lekérdezése előtt. Kapcsold ki az LRCLIB elsődleges használatához.', + enableNeteaselyrics: 'Netease Cloud Music dalszövegek', + enableNeteaselyricsDesc: 'A Netease Cloud Music használata végső dalszövegforrásként, ha a szerver és az LRCLIB sem ad vissza semmit. A legjobb lefedettség ázsiai és nemzetközi zenéhez.', + lyricsSourcesTitle: 'Dalszövegforrások', + lyricsSourcesDesc: 'Válaszd ki, mely forrásokat kérdezze le dalszövegekért és milyen sorrendben. Húzd az átrendezéshez. A letiltott források teljesen kimaradnak.', + lyricsSourceServer: 'Szerver', + lyricsSourceLrclib: 'LRCLIB', + lyricsSourceNetease: 'Netease Cloud Music', + lyricsYouLyPlus: 'YouLyPlus (Karaoke)', + lyricsYouLyPlusDesc: 'Szóról szóra szinkronizálás egy közösségi háttérrendszerből (Apple Music, Spotify, Musixmatch, QQ). Először ezt próbálja; az alábbi engedélyezett források tartalék gyanánt szolgálnak.', + lyricsSourcesFallbackHint: 'Tartalékként használva, ha a YouLyPlus nem talál semmit. Húzd az átrendezéshez.', + lyricsSourcesPrimaryHint: 'Sorrendben próbálva. Húzd az átrendezéshez. Mind kikapcsolva = dalszöveg letiltva.', + lyricsStaticOnly: 'Dalszöveg megjelenítése csak statikus szövegként', + lyricsStaticOnlyDesc: 'A szinkronizált dalszöveg megjelenítése automatikus görgetés és szókiemelés nélkül.', + downloadsTitle: 'ZIP-exportálás és archiválás', + downloadsFolderDesc: 'A számítógépedre ZIP-fájlként letöltött albumok célmappája.', + downloadsDefault: 'Alapértelmezett Letöltések mappa', + pickFolder: 'Kiválasztás', + pickFolderTitle: 'Letöltési mappa kiválasztása', + clearFolder: 'Letöltési mappa törlése', + logout: 'Kijelentkezés', + aboutTitle: 'A Psysonicról', + aboutDesc: 'Modern asztali zenelejátszó, amely a Navidrome-hoz készült. A Subsonic API-t és Navidrome-specifikus kiterjesztéseket használ. Tauri v2-re épül, natív Rust hangmotorral — könnyű és gyors, mégis tele van funkciókkal: hullámforma-keresősáv, szinkronizált dalszöveg, Last.fm-integráció, 10 sávos EQ, áttűnés, szünetmentes lejátszás, ReplayGain, műfaj szerinti böngészés és nagy témakönyvtár.', + aboutLicense: 'Licenc', + aboutLicenseText: 'GNU GPL v3 — szabadon használható, módosítható és terjeszthető ugyanezen licenc alatt.', + aboutRepo: 'Forráskód a GitHubon', + aboutVersion: 'Verzió', + aboutBuiltWith: 'Készült: Tauri · React · TypeScript · Rust/rodio', + aboutMaintainersLabel: 'Karbantartók', + aboutReleaseNotesLabel: 'Kiadási jegyzék', + aboutReleaseNotesLink: 'Ezen verzió újdonságainak megnyitása', + aboutContributorsLabel: 'Közreműködők', + showChangelogOnUpdate: 'Az „Újdonságok" megjelenítése frissítéskor', + showChangelogOnUpdateDesc: 'Diszkrét változásnapló-szalag megjelenítése a Most szól felett frissítés után. A kattintás megnyitja a kiadási jegyzéket; az X eltünteti.', + libraryGridMaxColumnsTitle: 'Könyvtár kártyarácsai', + libraryGridMaxColumnsPerfHint: 'A magasabb értékek több csempét pakolnak soronként, és növelhetik az elrendezési és rajzolási munkát — ez észrevehető nagyon nagy könyvtáraknál vagy lassabb eszközöknél.', + libraryGridMaxColumnsRangeLabel: 'Maximális oszlopok ({{min}}–{{max}})', + libraryGridMaxColumnsDesc: 'Az album-, előadó-, lejátszási lista-, rádió-, offline és más kártyaalapú könyvtárnézetekre vonatkozik. Az alacsonyabb értékek nagyobb csempéket használnak, és általában kíméletesebbek a CPU-hoz.', + libraryIndexTitle: 'Helyi könyvtárindex (előzetes)', + libraryIndexDesc: 'Minden szerver szám-adatbázisának helyi másolatát tartja, hogy a böngészés és a keresés gyors maradjon, és offline is működjön. A kezdeti szinkronizálás minden beállított szerverhez lefut; az offline szerverek automatikusan újrapróbálkoznak.', + libraryIndexDeltaHint: 'A háttér delta-szinkronizálás 30 másodpercenként ellenőrzi a kötött szervereket, és esedékességkor lefut — jellemzően 5–45 percenként, a könyvtár méretétől és a terheléstől függően.', + libraryIndexEnable: 'Helyi könyvtárindex engedélyezése', + libraryIndexEnableAllDesc: 'Az összes beállított szerver indexelése és szinkronizálása a háttérben.', + libraryIndexNoServer: 'Először adj hozzá egy szervert.', + libraryIndexServerListTitle: 'Indexelt szerverek', + libraryIndexAllExcluded: 'Minden szerver ki van zárva a szinkronizálásból. Engedélyezd újra az indexet, vagy adj hozzá egy szervert.', + libraryIndexServerOffline: 'A szerver offline — szinkronizálás elhalasztva', + libraryIndexServerSyncing: 'Szinkronizálás…', + libraryIndexFullResync: 'Teljes újraszinkronizálás', + libraryIndexDeltaSync: 'Delta-szinkronizálás', + libraryIndexExcludeServer: 'Kizárás a szinkronizálásból', + libraryIndexExcludingServer: 'Kizárás…', + libraryIndexExcludedTitle: 'Kizárva a szinkronizálásból', + libraryIndexIncludeServer: 'Felvétel újra', + libraryIndexIncludingServer: 'Felvétel…', + libraryIndexStatus: 'Állapot', + libraryIndexStatusIdle: 'Tétlen', + libraryIndexStatusProbing: 'Szerver ellenőrzése…', + libraryIndexStatusInitial: 'Kezdeti szinkronizálás…', + libraryIndexStatusReady: 'Kész ({{count}} szám)', + libraryIndexStatusError: 'Hiba — lásd a naplókat', + libraryIndexProgressIngest: 'Indexelve {{count}} szám…', + libraryIndexProgressVerify: 'Ellenőrizve {{checked}} ({{deleted}} eltávolítva)', + libraryIndexSyncNow: 'Szinkronizálás most', + libraryIndexVerify: 'Könyvtár integritásának ellenőrzése', + libraryIndexCancel: 'Mégse', + libraryIndexAutoReconcile: 'Automatikus egyeztetés a darabszám csökkenésekor', + libraryIndexAutoReconcileDesc: 'Automatikus ellenőrzés az eltávolított számokra, ha a szerver a vártnál kevesebbet jelent.', + libraryIndexSyncError: 'A könyvtár-szinkronizálás sikertelen: {{error}}', + libraryIndexBindError: 'Nem sikerült engedélyezni az indexet: {{error}}', + analyticsStrategyTitle: 'Elemzési stratégiák', + analyticsStrategyDesc: 'Válaszd ki a könyvtár elemzési stílusát.', + analyticsStrategyLabel: 'Stratégia', + analyticsStrategyLazy: 'Lusta', + analyticsStrategyLazyDesc: 'Csak akkor elemez, amikor számok szólnak, vagy bekerülnek az aktív/offline gyorsítótárba — minimális CPU- és hálózathasználat.', + analyticsStrategyAdvanced: 'Agresszív', + analyticsStrategyAdvancedDesc: 'Agresszívebb háttérvizsgálat. Amint elkészül, minden számhoz kapsz BPM-et, valamint azonnali hangosság- és hullámforma-betöltést.', + analyticsStrategyPriorityTitle: 'Elemzési prioritás (mindig érvényesül)', + analyticsStrategyPriorityHigh: '1 — Éppen lejátszott: letöltés + elemzés először (lejátszási bájtok, hangosság-pótlás, vagy HTTP, ha szükséges).', + analyticsStrategyPriorityMiddle: '2 — Következik: a sor következő ~5 száma és az aktív gyorsítótár szomszédai — elemzés gyorsítótárazott/letöltött bájtokból, ha lehetséges; HTTP-pótlás csak hiány esetén.', + analyticsStrategyPriorityLow: '3 — Könyvtári köteg (csak Agresszív): automatikus háttérsor a végén; vízjel szerint újratöltve (~3× munkás) anélkül, hogy üres sorra várna.', + analyticsStrategyServerLabel: 'Szerver', + analyticsStrategyProgressLabel: 'Elemzés folyamata:', + analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})', + analyticsStrategyActionsLabel: 'Műveletek', + analyticsStrategyParallelismLabel: 'Párhuzamos munkások', + analyticsStrategyParallelismValue: '{{n}} szál', + analyticsStrategyParallelismDesc: 'Hány számot tölts le és elemezz egyszerre (HTTP + CPU). A magasabb értékek felgyorsítják a könyvtár behozását, de több hálózatot és CPU-t használnak.', + analyticsStrategyAdvancedWarning: 'Az Agresszív több CPU-t és hálózati sávszélességet használ, amíg a könyvtári köteg a háttérben fut.', + analyticsStrategyServerRemoved: 'Eltávolított szerver', + analyticsStrategyClearAction: 'Elemzés törlése', + analyticsStrategyClearTitle: 'Törlöd az elemzést?', + analyticsStrategyClearDesc: 'A(z) {{server}} elemzésének törlése eltávolítja a gyorsítótárazott hullámformákat és hangosságot. A szerver későbbi újbóli hozzáadása hosszú újraindexelést igényelhet.', + analyticsStrategyClearCancel: 'Mégse', + analyticsStrategyClearConfirm: 'Elemzés törlése', + analyticsStrategyClearSuccess: 'Az elemzés törölve az eltávolított szerverhez.', + analyticsStrategyClearError: 'Nem sikerült törölni az elemzést az eltávolított szerverhez.', + analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, sikertelen számok miatt blokkolva)', + analyticsFailedTracksOpenTitle: 'Sikertelen számok: {{count}}', + analyticsFailedTracksTitle: 'Sikertelen elemzésű számok — {{server}}', + analyticsFailedTracksDesc: 'Ezek a számok ismételten meghiúsultak a dekódolás/gazdagítás során, és ki vannak zárva az automatikus háttérelemzésből.', + analyticsFailedTracksLoading: 'Sikertelen számok listájának betöltése…', + analyticsFailedTracksEmpty: 'Nincs sikertelen szám ehhez a szerverhez.', + analyticsFailedTracksClose: 'Bezárás', + analyticsFailedTracksExport: 'Lista exportálása', + analyticsFailedTracksExportSuccess: 'Sikertelen számok listája exportálva ({{count}}).', + analyticsFailedTracksExportError: 'Nem sikerült exportálni a sikertelen számok listáját.', + analyticsFailedTracksRescan: 'Sikertelen számok újraellenőrzése', + analyticsFailedTracksRescanSuccess: 'Újraellenőrzés ütemezve {{count}} sikertelen számhoz.', + analyticsFailedTracksRescanError: 'Nem sikerült újraellenőrizni a sikertelen számokat.', + analyticsFailedTracksLoadError: 'Nem sikerült betölteni a sikertelen számokat.', + randomMixTitle: 'Véletlen mix tiltólistája', + luckyMixMenuTitle: 'Szerencsemix megjelenítése a menüben', + luckyMixMenuDesc: 'Engedélyezi a Szerencsemixet a Mix összeállításában és külön menüpontként, ha a megosztott navigáció be van kapcsolva. Csak akkor látható, ha az AudioMuse engedélyezve van az aktív szerveren.', + randomMixBlacklistTitle: 'Egyéni szűrőkulcsszavak', + randomMixBlacklistDesc: 'A dalok kizárásra kerülnek, ha bármelyik kulcsszó egyezik a műfajukkal, címükkel, albumukkal vagy előadójukkal (aktív, ha a fenti jelölőnégyzet be van kapcsolva).', + randomMixBlacklistPlaceholder: 'Kulcsszó hozzáadása…', + randomMixBlacklistAdd: 'Hozzáadás', + randomMixBlacklistEmpty: 'Még nincs egyéni kulcsszó hozzáadva.', + randomMixHardcodedTitle: 'Beépített kulcsszavak (aktív, ha a jelölőnégyzet be van kapcsolva)', + tabAudio: 'Hang', + tabStorage: 'Offline és gyorsítótár', + tabAppearance: 'Megjelenés', + tabThemes: 'Témák', + themesYourThemesTitle: 'Saját témáid', + themesCvdTooltip: 'Színtévesztőknek biztonságos — deuteranópia, protanópia, tritanópia', + themeAnimationWarning: 'Ez a téma olyan animációkat használ, amelyek megnövelhetik a CPU-használatot a beállításodon (Nvidia/Linux vagy kikapcsolt kompozitálás).', + themeStoreTitle: 'Témabolt', + themeStoreSubmitText: 'Készítettél saját témát? Oszd meg a közösséggel — több infó a témák tárolójában.', + themeStoreSubmitLink: 'Témák tárolójának megnyitása', + themeStoreNetworkNotice: 'A Témabolt a katalógusát és előnézeteit a GitHubról tölti be. Személyes adat nem kerül elküldésre.', + themeStoreStatsNotice: 'A legutóbbi módosítás dátumai naponta egyszer frissülnek (kb. 04:17 UTC-kor).', + themeStoreSearchPlaceholder: 'Témák keresése…', + themeStoreFilterMode: 'Szűrés mód szerint', + themeStoreModeAll: 'Összes', + themeStoreModeDark: 'Sötét', + themeStoreModeLight: 'Világos', + themeStoreRefresh: 'Frissítés', + themeStoreLoading: 'Témák betöltése…', + themeStoreError: 'Nem sikerült betölteni a témaboltot. Ellenőrizd a kapcsolatodat.', + themeStoreRetry: 'Újra', + themeStoreOfflineTitle: 'A Témabolt offline', + themeStoreEmpty: 'Nincs a szűrőidnek megfelelő téma.', + themeStoreActive: 'Aktív', + themeStoreEnlarge: 'Előnézet nagyítása', + themeStoreSortNewest: 'Legújabb', + themeStoreSortName: 'Betűrendben', + themeStoreAnimAll: 'Összes', + themeStoreAnimAnimated: 'Animált', + themeStoreAnimStatic: 'Statikus', + themeStoreByAuthor: 'készítette: {{author}}', + themeStoreLastChanged: 'Utoljára módosítva', + themeMigrationNoticeTitle: 'A téma átkerült a Boltba', + themeMigrationNoticeBody: 'A(z) {{themes}} már nincs az alkalmazáshoz csomagolva. Újratelepítheted a Témaboltból (Beállítások → Témák), vagy válassz másik témát.', + themeMigrationNoticeOpen: 'Témabolt megnyitása', + themeStoreOffline: 'Az utolsó gyorsítótárazott katalógus látható — úgy tűnik, offline vagy.', + themeStoreInstall: 'Telepítés', + themeStoreInstalling: 'Telepítés…', + themeStoreApply: 'Alkalmazás', + themeStoreUpdate: 'Frissítés', + themeStoreUpdating: 'Frissítés…', + themeStoreUninstall: 'Eltávolítás', + themeStoreInstallFailed: 'A telepítés sikertelen', + themeStorePagePrev: 'Előző oldal', + themeStorePageNext: 'Következő oldal', + themeStorePageStatus: '{{page}}. oldal a(z) {{total}}-ból', + themeImportTitle: 'Téma importálása', + themeImportButton: 'Téma importálása…', + themeImporting: 'Importálás…', + themeImportHint: 'Tölts be egy .zip-ként csomagolt témát (manifest.json + theme.css).', + themeImportSuccess: '„{{name}}" importálva.', + themeImportErrorTitle: 'Ezt a témát nem sikerült importálni', + themeImportErrorBody: 'Nem felel meg a Psysonic témaformátumának. Lehet, hogy másik verzióhoz készült, vagy a fájl hiányos — ellenőrizd, hogy a megfelelő .zip-et választottad-e, vagy kérdezd meg a téma szerzőjét.', + themeImportErrorDetails: 'Technikai részletek', + themeImportConfirmTitle: 'Telepíted a témát?', + themeImportConfirmBody: 'Telepíted a(z) „{{name}}" témát ({{author}} készítette)?', + themeImportConfirmRisk: 'Az importált témák nincsenek átnézve — csak megbízható témákat telepíts.', + tabLibrary: 'Könyvtár', + tabServers: 'Szerverek', + tabLyrics: 'Dalszöveg', + tabPersonalisation: 'Személyre szabás', + tabIntegrations: 'Integrációk', + inputKeybindingsTitle: 'Billentyűparancsok', + aboutContributorsCount_one: '{{count}} hozzájárulás', + aboutContributorsCount_other: '{{count}} hozzájárulás', + searchPlaceholder: 'Beállítások keresése…', + searchNoResults: 'Nincs a keresésnek megfelelő beállítás.', + integrationsPrivacyTitle: 'Adatvédelmi tájékoztató', + integrationsPrivacyBody: 'Az ezen a lapon lévő összes integráció opcionális, és bekapcsolva adatokat küld külső szolgáltatásoknak vagy a Navidrome szerverednek. A Last.fm megkapja a hallgatási előzményeidet, a Discord megjeleníti az éppen lejátszott számot a profilodon, a Bandsintown előadónként lekérdezésre kerül a turnédátumokért, a Most szól megosztás pedig közzéteszi az aktuális számodat a Navidrome szervered többi felhasználójának. Ha ezekből egyiket sem szeretnéd, egyszerűen hagyd letiltva a megfelelő szakaszt.', + homeCustomizerTitle: 'Főszínpad', + queueSettingsTitle: 'Lejátszási sor beállításai', + queueModeTitle: 'Lejátszási sor megjelenítési módja', + queueModeQueueSub: 'Csak a következő számokat mutatja. Az aktuális szám a fejlécben marad, és lejátszás után kikerül a listából.', + queueModePlaylistSub: 'A teljes sort a listában tartja, az aktuális számmal felül kiemelve; a lejátszott számok megmaradnak.', + queueModeTimelineSub: 'Az aktuális számot középre helyezi, fölötte a lejátszott előzményekkel, alatta a következő számokkal (keverési sorrendben).', + queueToolbarTitle: 'Lejátszási sor eszköztára', + queueToolbarReset: 'Visszaállítás alapértelmezettre', + queueToolbarSeparator: 'Elválasztó', + sidebarTitle: 'Oldalsáv', + sidebarReset: 'Visszaállítás alapértelmezettre', + artistLayoutTitle: 'Előadói oldal szakaszai', + artistLayoutDesc: 'Húzd az átrendezéshez, kapcsold az előadói oldal egyes szakaszainak elrejtéséhez. Az adat nélküli szakaszok automatikusan kimaradnak.', + artistLayoutReset: 'Visszaállítás alapértelmezettre', + artistLayoutBio: 'Előadó életrajza', + artistLayoutTopTracks: 'Legjobb számok', + artistLayoutSimilar: 'Hasonló előadók', + artistLayoutAlbums: 'Albumok', + artistLayoutFeatured: 'Közreműködőként is szerepel', + playlistLayoutTitle: 'Lejátszási lista oldalának elrendezése', + playlistLayoutDesc: 'A lejátszási lista oldalán lévő egyes elemek megjelenítése vagy elrejtése.', + playlistLayoutReset: 'Visszaállítás alapértelmezettre', + playerBarTitle: 'Lejátszósáv', + playerBarReset: 'Visszaállítás alapértelmezettre', + playerBarStarRating: 'Csillagos értékelés', + playerBarFavorite: 'Kedvenc (szív)', + playerBarLastfmLove: 'Tetszik gomb', + playerBarPlaybackRate: 'Lejátszási sebesség', + playerBarEqualizer: 'Hangszínszabályzó', + playerBarMiniPlayer: 'Mini lejátszó', + playbackRateTitle: 'Lejátszási sebesség', + playbackRateEnabled: 'Lejátszási sebesség engedélyezése', + playbackRateEnabledDesc: 'A sebesség globális módosítása minden számhoz. Nem érvényes a rádióra vagy az előnézetekre.', + playbackRateStrategy: 'Stratégia', + playbackRateStrategySpeed: 'Sebesség', + playbackRateStrategyVarispeed: 'Varispeed', + playbackRateStrategyVarispeedSemitones: 'Félhangok', + playbackRateStrategyPreserve: 'Hangmagasság-eltolás', + playbackRateStrategySpeedTip: 'Módosítja a tempót; a hangmagasság automatikusan korrigálódik.', + playbackRateStrategyVarispeedTip: 'A sebesség és a hangmagasság együtt mozog, mint a szalagnál. A hangmagasság a sebességet követi: 12 × log2(sebesség).', + playbackRateStrategyVarispeedSemitonesTip: 'A varispeed közvetlenül félhangokban beállítva. Sebesség = 2^(st/12).', + playbackRateStrategyPreserveTip: 'Állítható tempó, plusz manuális hangmagasság-eltolás (±12 st).', + playbackRateSpeed: 'Sebesség', + playbackRatePitch: 'Hangmagasság', + playbackRateDerivedPitch: 'Hangmagasság-eltolás a sebességből: {{value}}', + playbackRateDerivedSpeed: 'Sebesség a félhangokból: {{value}}', + playbackRateFineStep: 'Finomhangolás', + playbackRateFineStepDesc: 'Kisebb csúszka-lépések: 0,01× a sebességhez és 0,01 st a hangmagassághoz.', + playbackRateAutoPitch: 'A hangmagasság automatikusan korrigálódik.', + playbackRateHint: 'A Sebesség természetesen tartja a hangmagasságot. A Varispeed a sebességgel együtt változtatja a hangmagasságot. A Varispeed (félhangok) ezt a hangmagasság-változást közvetlenül félhangokban állítja be. A Hangmagasság-eltolás manuális eltolást ad hozzá. Több CPU-t használ, mint a varispeed. Nem rádióhoz, előnézetekhez vagy Orbithoz.', + playbackRateNeutral: '1,0× sebességnél, hangmagasság-eltolás nélkül a lejátszás normál.', + playbackRateOrbitPaused: 'Orbit-munkamenetek alatt nem alkalmazódik — a lejátszás 1,0×-en marad a szinkron érdekében.', + playbackRateOrbitPausedShort: 'Orbit: 1,0× a szinkronhoz.', + advancedMode: 'Speciális', + advancedModeTooltip: 'Speciális beállítások megjelenítése az összes Beállítások lapon. Közösségi hozzájárulások, amelyek nem feltétlenül tükrözik a Psysonic karbantartóinak tervezési filozófiáját.', + advancedBadge: 'Speciális', + sidebarDrag: 'Húzd az átrendezéshez', + sidebarFixed: 'Mindig látható', + nowPlayingTopTitle: 'Most szól felül', + nowPlayingTopDesc: 'A „Most szól" bejegyzés rögzítése az oldalsáv tetejére az alja helyett.', + randomNavSplitTitle: 'Megosztott mix-navigáció', + randomNavSplitDesc: 'A „Véletlen mix", „Véletlen albumok" és „Szerencsemix" megjelenítése külön oldalsáv-bejegyzésként a „Mix összeállítása" központ helyett.', + tabInput: 'Bevitel', + tabUsers: 'Felhasználók', + tabSystem: 'Rendszer', + loggingTitle: 'Naplózás', + loggingModeDesc: 'A háttér naplójának részletességét vezérli a terminálban.', + loggingModeOff: 'Ki', + loggingModeNormal: 'Normál', + loggingModeDebug: 'Hibakeresés', + loggingExport: 'Naplók exportálása', + loggingExportSuccess: 'Naplók exportálva ({{count}} sor).', + loggingExportError: 'Nem sikerült exportálni a naplókat.', + ratingsSectionTitle: 'Értékelések', + ratingsSkipStarTitle: 'Átugrás 1 csillagért', + ratingsSkipStarDesc: + 'Több egymás utáni átugrás után a szám 1★-ra állítódik. Csak a még nem értékelt számokra.', + ratingsSkipStarThresholdLabel: 'Átugrások', + ratingsMixFilterTitle: 'Szűrés értékelés szerint', + ratingsMixFilterDesc: + 'Az alacsonyan értékelt elemek szűrése itt: {{mix}} és {{albums}}. Kattints újra a kiválasztott csillagra a küszöb kikapcsolásához.', + ratingsMixMinSong: 'Dalok', + ratingsMixMinAlbum: 'Albumok', + ratingsMixMinArtist: 'Előadók', + ratingsMixMinThresholdAria: 'Minimális csillagok: {{label}}', + backupTitle: 'Mentés és visszaállítás', + backupExport: 'Beállítások exportálása', + backupExportDesc: 'Elmenti az összes beállítást, szerverprofilt, Last.fm-konfigurációt, témát, EQ-t és billentyűparancsot egy .psybkp fájlba. A jelszavak titkosítatlanul tárolódnak — tartsd biztonságban a fájlt.', + backupImport: 'Beállítások importálása', + backupImportDesc: 'Visszaállítja a beállításokat egy .psybkp fájlból. Az alkalmazás importálás után újratöltődik.', + backupImportConfirm: 'Ez felülír minden jelenlegi beállítást. Folytatod?', + backupImportAny: 'Mentés importálása', + backupImportAnyConfirm: 'Importáld a kiválasztott mentési fájlt, és alkalmazd a tartalmát (beállítások, könyvtár-adatbázisok vagy teljes). Folytatod?', + backupSuccess: 'Mentés elmentve', + backupImportSuccess: 'Beállítások visszaállítva — újratöltés…', + backupImportError: 'Érvénytelen vagy sérült mentési fájl.', + backupModeFull: 'Teljes', + backupModeLibrary: 'Könyvtár-adatbázisok', + backupModeConfig: 'Konfiguráció', + backupFullDesc: 'A beállításokat és a könyvtár-adatbázisokat egyetlen mentési fájlba archiválja.', + backupFullExport: 'Teljes mentés exportálása', + backupFullImport: 'Teljes mentés importálása', + backupFullImportConfirm: 'Ez felülírja a beállításokat, lecseréli a jelenlegi könyvtár-adatbázisokat, és .bak-ba helyezi őket. Folytatod?', + backupFullExportSuccess: 'Teljes mentés exportálva.', + backupFullImportSuccess: 'Teljes mentés importálva — újratöltés…', + backupFullImportError: 'Nem sikerült importálni a teljes mentést.', + backupLibraryExport: 'Adatbázisok exportálása', + backupLibraryExportDesc: 'Tömörített archívumot hoz létre a könyvtár-adatbázisok tiszta SQLite-pillanatfelvételeivel.', + backupLibraryImport: 'Adatbázisok importálása', + backupLibraryImportDesc: 'Visszaállítja a könyvtár-adatbázisokat egy archívumfájlból. A jelenlegi adatbázisok a váltás előtt .bak-ba kerülnek.', + backupLibraryImportConfirm: 'Ez lecseréli a jelenlegi könyvtár-adatbázisokat, és .bak-ba helyezi őket. Folytatod?', + backupLibraryExportSuccess: 'Adatbázis-mentés exportálva.', + backupLibraryImportSuccess: 'Adatbázis-mentés importálva.', + backupLibraryImportError: 'Nem sikerült importálni az adatbázis-mentést.', + backupOverlayExportTitle: 'Mentés készítése…', + backupOverlayImportTitle: 'Mentés visszaállítása…', + backupOverlayHint: 'Az ablakot nyitva tarthatod, amíg a fájlokat feldolgozzuk. A bevitel ideiglenesen zárolva van.', + shortcutsReset: 'Visszaállítás alapértelmezettre', + shortcutListening: 'Nyomj le egy billentyűt…', + shortcutUnbound: '—', + globalShortcutsTitle: 'Globális gyorsbillentyűk', + globalShortcutsNote: 'Rendszerszinten működnek, még akkor is, ha a Psysonic a háttérben van. Ctrl, Alt vagy Super módosítót igényel.', + shortcutClear: 'Törlés', + shortcutPlayPause: 'Lejátszás / Szünet', + shortcutNext: 'Következő szám', + shortcutPrev: 'Előző szám', + shortcutVolumeUp: 'Hangerő fel', + shortcutVolumeDown: 'Hangerő le', + shortcutSeekForward: 'Tekerés előre 10 mp', + shortcutSeekBackward: 'Tekerés vissza 10 mp', + shortcutToggleQueue: 'Lejátszási sor be/ki', + shortcutOpenFolderBrowser: '{{folderBrowser}} megnyitása', + shortcutFullscreenPlayer: 'Teljes képernyős lejátszó', + shortcutNativeFullscreen: 'Natív teljes képernyő', + shortcutOpenMiniPlayer: 'Mini lejátszó megnyitása', + shortcutStartSearch: 'Keresés indítása', + shortcutStartAdvancedSearch: 'Speciális keresés indítása', + shortcutToggleSidebar: 'Oldalsáv be/ki', + shortcutMuteSound: 'Hang némítása', + shortcutToggleEqualizer: 'Hangszínszabályzó megnyitása / be/ki', + shortcutToggleRepeat: 'Ismétlés be/ki', + shortcutOpenNowPlaying: 'A „Most szól" megnyitása', + shortcutShowLyrics: 'Dalszöveg megjelenítése', + shortcutFavoriteCurrentTrack: 'Aktuális szám hozzáadása a kedvencekhez', + shortcutOpenHelp: 'Súgó', + playbackTitle: 'Lejátszás', + replayGain: 'Replay Gain', + replayGainDesc: 'Szám hangerejének normalizálása a ReplayGain metaadatok alapján', + replayGainMode: 'Mód', + replayGainAuto: 'Automatikus', + replayGainAutoDesc: 'Albumerősítést választ, ha a szomszédos számok ugyanarról az albumról valók, egyébként számerősítést.', + replayGainTrack: 'Szám', + replayGainAlbum: 'Album', + replayGainPreGain: 'Előerősítés (címkézett fájlok)', + replayGainPreGainDesc: 'Univerzális ráerősítés minden ReplayGain-számítás tetejére. Használd a kompenzáláshoz, ha a könyvtárad összességében túl halknak tűnik.', + replayGainFallback: 'Tartalék (címkézetlen / rádió)', + replayGainFallbackDesc: 'Azokra a számokra (és rádióadásokra) alkalmazódik, amelyeknek egyáltalán nincs ReplayGain-címkéjük, hogy a címkézetlen tartalom ne szóljon hangosabban a többinél.', + normalization: 'Normalizálás', + normalizationDesc: 'Az érzékelt hangosság kiegyenlítése a számok, albumok és rádió között.', + normalizationOff: 'Ki', + normalizationReplayGain: 'ReplayGain', + normalizationLufs: 'LUFS', + loudnessTargetLufs: 'Cél LUFS', + loudnessTargetLufsDesc: 'Referenciahangosság, amelyhez minden szám igazodik. Alacsonyabb számok = hangosabb kimenet. A streamingszolgáltatások jellemzően -14 LUFS körül vannak.', + loudnessPreAnalysisAttenuation: 'Elemzés előtti csillapítás', + loudnessPreAnalysisAttenuationDesc: + 'Extra halkítás, amíg a szám hangossága elmentődik. A streaming ekkor durva becsléseket használ, nem teljes mérést. 0 dB = ki; alacsonyabb = halkabb. A jobb oldali szám a tényleges dB az aktuális célodhoz.', + loudnessPreAnalysisAttenuationRef: 'Tényleges {{eff}} dB {{tgt}} LUFS céllal.', + loudnessPreAnalysisAttenuationReset: 'Visszaállítás alapértelmezettre', + loudnessFirstPlayNote: + 'Egy vadonatúj szám első lejátszása rövid ideig ingadozhat a hangerőben, amíg a mérés zajlik. A következő lejátszás a gyorsítótárazott mérést használja, és tökéletesen stabil. A sor következő számai általában előre elemződnek az előző dal alatt, így ez a gyakorlatban ritkán fordul elő.', + crossfade: 'Áttűnés', + crossfadeSecs: '{{n}} mp', + autoDj: 'AutoDJ', + autoDjDesc: 'Nincs fix időtartam — az AutoDJ a tényleges hangot követi, valós fade-outokat és intrókat keverve egy beállított másodpercszám helyett. A megbízható eredményekért engedélyezd az aktív lejátszási gyorsítótárat.', + autodjSmoothSkip: 'Sima átugrás', + autodjSmoothSkipDesc: 'Amikor lejátszás közben a következő vagy előző számra ugrasz, ugyanazokkal az AutoDJ-szabályokkal (átfedéshossz, intró-vágás) tűnik át bele a jelenlegi pozíciódból, éles vágás helyett. Akkor működik a legjobban, ha a következő szám már pufferelt.', + gapless: 'Szünetmentes lejátszás', + transitionsTitle: 'Számátmenetek', + transitionsDesc: 'Hogyan tűnik át egymásba az egymást követő számok. Egyszerre csak egy mód lehet aktív.', + transitionOff: 'Ki', + queueBehaviourTitle: 'Lejátszási sor viselkedése', + preservePlayNextOrder: 'A „Játszás következőként" sorrend megőrzése', + preservePlayNextOrderDesc: 'Az újonnan hozzáadott „Játszás következőként" elemek a korábbiak mögé sorakoznak fel, ahelyett, hogy eléjük ugranának.', + trackPreviewsTitle: 'Számelőnézetek', + trackPreviewsToggle: 'Számelőnézetek engedélyezése', + trackPreviewsDesc: 'Soron belüli Lejátszás és Előnézet gombok megjelenítése a számlistákban egy gyors dal közbeni mintához.', + trackPreviewStart: 'Kezdőpozíció', + trackPreviewStartDesc: 'Milyen mélyen a számban kezdődik az előnézet (a szám hosszának %-ában).', + trackPreviewDuration: 'Időtartam', + trackPreviewDurationDesc: 'Meddig szól egy-egy előnézet, mielőtt leáll.', + trackPreviewDurationSecs: '{{n}} mp', + trackPreviewLocationsTitle: 'Hol jelennek meg az előnézetek', + trackPreviewLocationsDesc: 'Válaszd ki, mely listákon jelenjenek meg a soron belüli előnézet gombok.', + trackPreviewLocation_suggestions: 'Lejátszási lista javaslataiban', + trackPreviewLocation_albums: 'Album-számlistákban', + trackPreviewLocation_playlists: 'Lejátszási listákban', + trackPreviewLocation_favorites: 'Kedvencekben', + trackPreviewLocation_artist: 'Előadó legjobb számaiban', + trackPreviewLocation_randomMix: 'Véletlen mixben', + nextTrackBufferingTitle: 'Pufferelés', + infiniteQueue: 'Végtelen lejátszási sor', + infiniteQueueDesc: 'Véletlen számok automatikus hozzáfűzése, amikor a sor kifogy', + experimental: 'Kísérleti', + sidebarLyricsStyle: 'Dalszöveg-görgetési stílus', + sidebarLyricsStyleClassic: 'Klasszikus', + sidebarLyricsStyleClassicDesc: 'Az aktív sor görgetése középre.', + sidebarLyricsStyleApple: 'Apple Music-szerű', + sidebarLyricsStyleAppleDesc: 'Az aktív sor a tetejéhez közel rögzül, sima rugós átmenetekkel.', + seekbarStyle: 'Keresősáv stílusa', + seekbarStyleDesc: 'Válaszd ki a lejátszó keresősávjának kinézetét', + seekbarTruewave: 'Truewave', + seekbarPseudowave: 'Pseudowave', + seekbarLinedot: 'Vonal és pont', + seekbarBar: 'Sáv', + seekbarThick: 'Vastag sáv', + seekbarSegmented: 'Szakaszolt', + seekbarNeon: 'Neonfény', + seekbarPulsewave: 'Pulzushullám', + seekbarParticletrail: 'Részecskecsóva', + seekbarLiquidfill: 'Folyadékkitöltés', + seekbarRetrotape: 'Retro szalag', + themeSchedulerTitle: 'Automatikus témaváltás', + themeSchedulerEnable: 'Témaütemező engedélyezése', + themeSchedulerEnableSub: 'Automatikus váltás két téma között a napszak alapján', + themeSchedulerDayTheme: 'Nappali téma', + themeSchedulerDayStart: 'A nappal kezdődik', + themeSchedulerNightTheme: 'Éjszakai téma', + themeSchedulerNightStart: 'Az éjszaka kezdődik', + themeSchedulerActiveHint: 'A témaütemező aktív – a témaváltások automatikusan kezeltek.', + visualOptionsTitle: 'Vizuális beállítások', + coverArtBackground: 'Borító háttér', + coverArtBackgroundSub: 'Elmosott borító megjelenítése háttérként az album/lejátszási lista fejlécekben', + playlistCoverPhoto: 'Lejátszási lista borítóképe', + playlistCoverPhotoSub: 'Borítókép-rács megjelenítése a lejátszási lista részletes nézetében', + showBitrate: 'Bitráta megjelenítése', + showBitrateSub: 'A hang bitrátájának megjelenítése a számlistákban', + floatingPlayerBar: 'Lebegő lejátszósáv', + floatingPlayerBarSub: 'A lejátszósáv lebegve tartása a tartalom felett', + uiScaleTitle: 'Felület méretezése', + uiScaleLabel: 'Nagyítás', +}; diff --git a/src/locales/hu/sharePaste.ts b/src/locales/hu/sharePaste.ts new file mode 100644 index 00000000..c3a429d6 --- /dev/null +++ b/src/locales/hu/sharePaste.ts @@ -0,0 +1,20 @@ +export const sharePaste = { + notLoggedIn: 'Jelentkezz be és add hozzá a szervert, mielőtt megosztási linket illesztesz be.', + noMatchingServer: 'Egyik mentett szerver sem egyezik ezzel a linkkel. Adj hozzá egy szervert ezzel a címmel: {{url}}', + trackUnavailable: 'Ez a szám nem található a szerveren.', + albumUnavailable: 'Ez az album nem található a szerveren.', + artistUnavailable: 'Ez az előadó nem található a szerveren.', + composerUnavailable: 'Ez a zeneszerző nem található a szerveren.', + openedTrack: 'Megosztott szám lejátszása.', + openedAlbum: 'Megosztott album megnyitása.', + openedArtist: 'Megosztott előadó megnyitása.', + openedComposer: 'Megosztott zeneszerző megnyitása.', + openedQueue_one: '{{count}} szám lejátszása a megosztási linkről.', + openedQueue_other: '{{count}} szám lejátszása a megosztási linkről.', + openedQueuePartial: + '{{played}}/{{total}} szám lejátszása a linkről ({{skipped}} nem található ezen a szerveren).', + queueAllUnavailable: 'A link egyetlen száma sem található a szerveren.', + playQueue: 'Sor lejátszása', + playQueueing: 'Lejátszás indítása…', + genericError: 'A megosztási link megnyitása nem sikerült.', +}; diff --git a/src/locales/hu/sidebar.ts b/src/locales/hu/sidebar.ts new file mode 100644 index 00000000..a29638ab --- /dev/null +++ b/src/locales/hu/sidebar.ts @@ -0,0 +1,45 @@ +export const sidebar = { + library: 'Könyvtár', + mainstage: 'Főszínpad', + newReleases: 'Új megjelenések', + allAlbums: 'Összes album', + randomAlbums: 'Véletlen albumok', + randomPicker: 'Mix összeállítása', + artists: 'Előadók', + composers: 'Zeneszerzők', + randomMix: 'Véletlen mix', + favorites: 'Kedvencek', + nowPlaying: 'Most szól', + system: 'Rendszer', + statistics: 'Statisztika', + settings: 'Beállítások', + help: 'Súgó', + expand: 'Oldalsáv kibontása', + collapse: 'Oldalsáv összecsukása', + + downloadingTracks: '{{n}} szám gyorsítótárazása…', + offlinePinActive: '«{{name}}» gyorsítótárazása…', + offlinePinActiveQueued: '«{{name}}» gyorsítótárazása · +{{queued}} a sorban', + syncingTracks: 'Szinkronizálás {{done}}/{{total}}…', + cancelDownload: 'Letöltés megszakítása', + offlineLibrary: 'Offline könyvtár', + genres: 'Műfajok', + tracks: 'Számok', + playlists: 'Lejátszási listák', + smartPlaylists: 'Okos lejátszási listák', + mostPlayed: 'Legtöbbet játszott', + losslessAlbums: 'Veszteségmentes', + radio: 'Internetes rádió', + folderBrowser: 'Mappaböngésző', + deviceSync: 'Eszköz-szinkronizálás', + libraryScope: 'Könyvtár hatóköre', + allLibraries: 'Összes könyvtár', + expandPlaylists: 'Lejátszási listák kibontása', + collapsePlaylists: 'Lejátszási listák összecsukása', + more: 'Több', + feelingLucky: 'Lucky Mix', + + themeUpdatesTitle: 'Témafrissítések', + themeUpdatesTooltip: 'Elérhető témafrissítések', + themeUpdatesDismiss: 'Elvetés', +}; diff --git a/src/locales/hu/smartPlaylists.ts b/src/locales/hu/smartPlaylists.ts new file mode 100644 index 00000000..9a998ac1 --- /dev/null +++ b/src/locales/hu/smartPlaylists.ts @@ -0,0 +1,41 @@ +export const smartPlaylists = { + sectionBasic: '1. Alap', + sectionGenres: '2. Műfajok', + sectionYearsAndFilters: '3. Évek és szűrők', + genreMode: 'Műfaj mód', + genreModeInclude: 'Műfajok befoglalása', + genreModeExclude: 'Műfajok kizárása', + genreSearchPlaceholder: 'Műfajok szűrése...', + availableGenres: 'Elérhető', + selectedGenres: 'Kiválasztott', + yearMode: 'Év mód', + yearModeInclude: 'Tartomány befoglalása', + yearModeExclude: 'Tartomány kizárása', + name: 'Név (előtag nélkül)', + limit: 'Korlát', + limitHint: 'Hány szám kerüljön a lejátszási listába (1-{{max}}, általában 50).', + artistContains: 'Előadó tartalmazza…', + albumContains: 'Album tartalmazza…', + titleContains: 'Cím tartalmazza…', + minRating: 'Minimális értékelés', + minRatingAria: 'Minimális értékelés az okos lejátszási listához', + minRatingHint: 'A 0 kikapcsolja a minimumküszöböt; az 1-5 a kiválasztott értéknél magasabbra értékelt számokat tartja meg.', + fromYear: 'Ettől az évtől', + toYear: 'Eddig az évig', + excludeUnrated: 'Értékeletlen számok kizárása', + compilationOnly: 'Csak válogatások', + create: 'Új okos lejátszási lista', + save: 'Okos lejátszási lista mentése', + created: '{{name}} létrehozva', + updated: '{{name}} frissítve', + createFailed: 'Az okos lejátszási lista létrehozása nem sikerült.', + updateFailed: 'Az okos lejátszási lista frissítése nem sikerült.', + navidromeOnly: 'Okos lejátszási listák csak Navidrome szervereken hozhatók létre.', + loadFailed: 'Az okos lejátszási listák betöltése a Navidrome-ból nem sikerült.', + sortRandom: 'Rendezés: véletlen', + sortTitleAsc: 'Rendezés: cím A-Z', + sortTitleDesc: 'Rendezés: cím Z-A', + sortYearDesc: 'Rendezés: év csökkenő', + sortYearAsc: 'Rendezés: év növekvő', + sortPlayCountDesc: 'Rendezés: lejátszások csökkenő', +}; diff --git a/src/locales/hu/songInfo.ts b/src/locales/hu/songInfo.ts new file mode 100644 index 00000000..cc15b0e6 --- /dev/null +++ b/src/locales/hu/songInfo.ts @@ -0,0 +1,27 @@ +export const songInfo = { + title: 'Száminfó', + songTitle: 'Cím', + artist: 'Előadó', + album: 'Album', + albumArtist: 'Album előadója', + year: 'Év', + genre: 'Műfaj', + duration: 'Hossz', + track: 'Szám', + bpm: 'BPM', + mood: 'Hangulat', + playCount: 'Lejátszások száma', + lastPlayed: 'Utoljára játszva', + format: 'Formátum', + bitrate: 'Bitráta', + sampleRate: 'Mintavételezés', + bitDepth: 'Bitmélység', + channels: 'Csatornák', + fileSize: 'Fájlméret', + path: 'Útvonal', + replayGainTrack: 'RG szám-erősítés', + replayGainAlbum: 'RG album-erősítés', + replayGainPeak: 'RG szám-csúcs', + mono: 'Mono', + stereo: 'Sztereó', +}; diff --git a/src/locales/hu/statistics.ts b/src/locales/hu/statistics.ts new file mode 100644 index 00000000..cdab1027 --- /dev/null +++ b/src/locales/hu/statistics.ts @@ -0,0 +1,93 @@ +export const statistics = { + title: 'Statisztika', + recentlyPlayed: 'Nemrég játszott', + mostPlayed: 'Legtöbbet játszott albumok', + highestRated: 'Legmagasabbra értékelt albumok', + genreDistribution: 'Műfajeloszlás (top 20)', + loadMore: 'Több betöltése', + statArtists: 'Előadók', + statArtistsTooltip: 'Csak album-előadók — a csak szám szintű előadóként (közreműködő, vendég stb.) saját album nélkül szereplő előadók nem szerepelnek.', + statAlbums: 'Albumok', + statSongs: 'Dalok', + statGenres: 'Műfajok', + statPlaytime: 'Teljes lejátszási idő', + genreInsights: 'Műfaj-betekintés', + formatDistribution: 'Formátumeloszlás', + formatSample: '{{n}} szám mintája', + computing: 'Számítás…', + genreSongs: '{{count}} dal', + genreAlbums: '{{count}} album', + recentlyAdded: 'Nemrég hozzáadott', + decadeDistribution: 'Albumok évtizedek szerint', + decadeAlbums_one: '{{count}} album', + decadeAlbums_other: '{{count}} album', + decadeUnknown: 'Ismeretlen', + lfmTitle: '{{provider}} statisztikák', + lfmTopArtists: 'Top előadók', + lfmTopAlbums: 'Top albumok', + lfmTopTracks: 'Top számok', + lfmPlays: '{{count}} lejátszás', + lfmPeriodOverall: 'Mindenkori', + lfmPeriod7day: '7 nap', + lfmPeriod1month: '1 hónap', + lfmPeriod3month: '3 hónap', + lfmPeriod6month: '6 hónap', + lfmPeriod12month: '12 hónap', + lfmRecentTracks: 'Legutóbbi scrobble-ok', + lfmNowPlaying: 'Most szól', + lfmJustNow: 'épp most', + lfmMinutesAgo: '{{n}} perce', + lfmHoursAgo: '{{n}} órája', + lfmDaysAgo: '{{n}} napja', + topRatedSongs: 'Legjobbra értékelt dalok', + topRatedArtists: 'Legjobbra értékelt előadók', + noRatedSongs: 'Még nincsenek értékelt dalok. Értékelj dalokat az album- vagy lejátszásilista-nézetben.', + noRatedArtists: 'Még nincsenek értékelt előadók.', + exportShare: 'Megosztás', + exportTitle: 'Top albumok megosztása', + exportSubtitle: 'Megosztható kép létrehozása a legtöbbet játszott albumaidról.', + exportFormat: 'Formátum', + exportFormatStory: 'Sztori', + exportFormatSquare: 'Négyzet', + exportFormatTwitter: 'Twitter-kártya', + exportGrid: 'Rács', + exportGridLabel: '{{n}}×{{n}}', + exportPreview: 'Előnézet', + exportGenerate: 'Létrehozás', + exportSave: 'Kép mentése…', + exportCancel: 'Mégse', + exportFooterLabel: 'Top albumok', + exportNotEnough: 'Legalább {{count}} album szükséges a könyvtáradban egy {{n}}×{{n}} rácshoz.', + exportSaving: 'Mentés…', + exportSaved: 'Mentve.', + exportSaveFailed: 'A kép mentése nem sikerült.', + tabServer: 'Szerverstatisztika', + tabPlayer: 'Lejátszó-statisztika', + playerEmpty: 'Kezdj el zenét hallgatni — a helyi lejátszási előzményeid itt jelennek meg.', + playerSummaryTime: 'Hallgatási idő', + playerListeningDayShort: '{{count}} n', + playerListeningHourShort: '{{count}} ó', + playerListeningMinuteShort: '{{count}} p', + playerSummarySessions: 'Munkamenetek', + playerSummaryTracks: 'Számlejátszások', + playerSummaryUniqueTracks: 'Egyedi számok', + playerSummaryDays: 'Napok', + playerIndexRequired: 'A lejátszó-statisztikához legalább egy beállított szerver szükséges.', + playerPartialIndexSettings: 'Szerverbeállítások', + playerSummaryCompletion: 'Teljes / részleges', + playerYearPrev: 'Előző év', + playerYearNext: 'Következő év', + playerHeatmapLegend: 'Sötétebb cellák = több aznap lejátszott szám.', + playerHeatmapLess: 'Kevesebb', + playerHeatmapMore: 'Több', + playerDaySessions: '{{count}} munkamenet', + playerDayTrackPlays: '{{count}} szám', + playerDayFullPartial: '{{full}} teljes · {{partial}} részleges', + playerRecentDaysTitle: 'Legutóbbi napok', + playerDayToday: 'Ma', + playerDayYesterday: 'Tegnap', + playerListenedSecShort: '{{seconds}} mp', + playerListenedMinDecimal: '{{minutes}} perc', + completionFull: 'Teljes meghallgatás', + completionPartial: 'Részleges', +}; diff --git a/src/locales/hu/tracks.ts b/src/locales/hu/tracks.ts new file mode 100644 index 00000000..801a7ef6 --- /dev/null +++ b/src/locales/hu/tracks.ts @@ -0,0 +1,16 @@ +export const tracks = { + title: 'Számok', + subtitle: 'Böngéssz. Keress. Fedezz fel.', + heroEyebrow: 'A pillanat száma', + heroReroll: 'Válassz másikat', + playSong: 'Lejátszás', + enqueueSong: 'Hozzáadás a sorhoz', + toAlbum: 'Az albumhoz', + railRandom: 'Véletlen választás', + railHighlyRated: 'Magasra értékelt', + browseTitle: 'Összes szám böngészése', + browseUnsupported: 'Ez a szerver nem listázza a teljes könyvtárat egyszerre. Használd a fenti keresőt konkrét számok megtalálásához.', + searchPlaceholder: 'Szám keresése cím, előadó vagy album szerint…', + count_one: '{{count}} szám', + count_other: '{{count}} szám', +}; diff --git a/src/locales/hu/tray.ts b/src/locales/hu/tray.ts new file mode 100644 index 00000000..a5f4a8ed --- /dev/null +++ b/src/locales/hu/tray.ts @@ -0,0 +1,8 @@ +export const tray = { + playPause: 'Lejátszás / Szünet', + nextTrack: 'Következő szám', + previousTrack: 'Előző szám', + showHide: 'Megjelenítés / Elrejtés', + exitPsysonic: 'Kilépés a Psysonicból', + nothingPlaying: 'Semmi sem szól', +}; diff --git a/src/locales/hu/whatsNew.ts b/src/locales/hu/whatsNew.ts new file mode 100644 index 00000000..1f921ebe --- /dev/null +++ b/src/locales/hu/whatsNew.ts @@ -0,0 +1,12 @@ +export const whatsNew = { + title: 'Újdonságok', + changelogTitle: 'Változásnapló', + viewTabsLabel: 'Kiadási megjegyzések nézet', + viewHighlights: 'Kiemelések', + viewChangelog: 'Változásnapló', + empty: 'Még nincs változásnapló-bejegyzés ehhez a verzióhoz.', + bannerTitle: 'Változásnapló', + bannerCollapsed: 'Újdonságok a(z) v{{version}} verzióban', + dismiss: 'Elvetés', + close: 'Bezárás', +}; diff --git a/src/locales/ja/settings.ts b/src/locales/ja/settings.ts index 7c5c6359..850ed7d9 100644 --- a/src/locales/ja/settings.ts +++ b/src/locales/ja/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'フォント', fontHintOpenDyslexic: 'ディスレクシアに配慮 · 中国語非対応', theme: 'テーマ', diff --git a/src/locales/nb/settings.ts b/src/locales/nb/settings.ts index d841e415..81c99669 100644 --- a/src/locales/nb/settings.ts +++ b/src/locales/nb/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Skrifttype', fontHintOpenDyslexic: 'Dyslexivennlig · ingen kinesisk støtte', theme: 'Tema', diff --git a/src/locales/nl/settings.ts b/src/locales/nl/settings.ts index 44034e69..4150892e 100644 --- a/src/locales/nl/settings.ts +++ b/src/locales/nl/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Lettertype', fontHintOpenDyslexic: 'Dyslexie-vriendelijk · geen Chinese ondersteuning', theme: 'Thema', diff --git a/src/locales/ro/settings.ts b/src/locales/ro/settings.ts index 8c7ab0b1..6071f2a0 100644 --- a/src/locales/ro/settings.ts +++ b/src/locales/ro/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageEs: 'Spaniolă', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Font', fontHintOpenDyslexic: 'Prietenos cu dislexia · Chineza nu este suportată', theme: 'Temă', diff --git a/src/locales/ru/settings.ts b/src/locales/ru/settings.ts index 50a5981e..1b56350a 100644 --- a/src/locales/ru/settings.ts +++ b/src/locales/ru/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: 'Шрифт', fontHintOpenDyslexic: 'Подходит для дислексии · без поддержки китайского', theme: 'Тема', diff --git a/src/locales/zh/settings.ts b/src/locales/zh/settings.ts index 6e1c45a2..efaa974b 100644 --- a/src/locales/zh/settings.ts +++ b/src/locales/zh/settings.ts @@ -11,6 +11,7 @@ export const settings = { languageZh: '中文', languageRo: 'Română', languageJa: '日本語', + languageHu: 'Magyar', font: '字体', fontHintOpenDyslexic: '阅读障碍友好 · 不支持中文', theme: '主题', diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index fa687d92..5d95175f 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -245,7 +245,9 @@ export default function Login() { { value: 'nb', label: t('settings.languageNb') }, { value: 'ru', label: t('settings.languageRu') }, { value: 'zh', label: t('settings.languageZh') }, + { value: 'ro', label: t('settings.languageRo') }, { value: 'ja', label: t('settings.languageJa') }, + { value: 'hu', label: t('settings.languageHu') }, ]} />