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') },
]}
/>