Deep-review round 3 of bug hunt 2026-09.
- get_or_404 / owned_or_404 answer a structured {code: "not_found", reason: <what>}
(errors.notFound.* in HU+EN, generic fallback). The structured-404 fix of round 2 had gone into the
ad-hoc `_own_playlist` (CLAUDE.md's "Not" pattern) while the shared helpers stayed string-only, so
views, tags, pins, Plex playlists, invites and users still 404'd in English. `_own_playlist` now
goes through owned_or_404; admin's hand-rolled user lookups use get_or_404.
- A move into a list that is gone names the TARGET (reason "move_target") — "this playlist doesn't
exist any more" was read as the list on screen, which still exists.
- Every refusal in the playlists router is a {code: "playlist", reason} (playlists.errors.* HU+EN)
instead of a bare English string shown verbatim in the Hungarian UI.
- `req` / `uploadReq` mark the errors they already put on screen (the error dialog, the connection
notice, the 401 sign-out), and notifyActionError skips those. The watched toggles, the saved views
and a playlist delete toasted a fault the dialog was already showing; Playlists' two hand-written
status filters now go through the same check.
129 lines
7.5 KiB
JSON
129 lines
7.5 KiB
JSON
{
|
|
"title": "Lejátszási listák",
|
|
"manageGroup": "Kezelés",
|
|
"listGroup": "Listáid",
|
|
"watchLater": "Megnézem később",
|
|
"syncYoutube": "Szinkron YouTube-ról",
|
|
"syncedToast": "{{count}} lista szinkronizálva a YouTube-ról",
|
|
"syncFailed": "Nem sikerült a YouTube-szinkron",
|
|
"ytReadonly": "YouTube-ról szinkronizálva — a módosítások visszaszinkronizálhatók",
|
|
"noneYet": "Még nincs lejátszási lista",
|
|
"newPlaylist": "Új lista…",
|
|
"searchPlaceholder": "Listák keresése…",
|
|
"noMatches": "Nincs találó lista.",
|
|
"itemCount_one": "{{count}} videó",
|
|
"itemCount_other": "{{count}} videó",
|
|
"pickOne": "Válassz egy listát a bal oldalon.",
|
|
"loading": "Betöltés…",
|
|
"empty": "Ez a lista üres — adj hozzá videókat a hírfolyamból.",
|
|
"playAll": "Összes lejátszása",
|
|
"delete": "Törlés",
|
|
"rename": "Átnevezés",
|
|
"confirmDelete": "Törlöd a(z) „{{name}}” listát? Nem vonható vissza.",
|
|
"addToPlaylist": "Hozzáadás listához",
|
|
"exportToYoutube": "Exportálás YouTube-ra",
|
|
"pushToYoutube": "Szinkron YouTube-ra",
|
|
"unsynced": "Nincs szinkronizálva",
|
|
"unsyncedHint": "Vannak helyi módosításaid, amelyek még nincsenek a YouTube-ra szinkronizálva.",
|
|
"openOnYoutube": "Megnyitás YouTube-on",
|
|
"revert": "Visszaállítás YouTube-ról",
|
|
"revertTitle": "Eldobod a helyi módosításokat?",
|
|
"revertMsg": "Ez újratölti a listát a YouTube-ról, és eldobja a nem szinkronizált helyi módosításaidat (sorrend, hozzáadás, eltávolítás, átnevezés). Folytatod?",
|
|
"revertConfirm": "Eldobás és újratöltés",
|
|
"revertDone": "„{{name}}” újratöltve a YouTube-ról ✓",
|
|
"revertFailed": "Nem sikerült újratölteni a YouTube-ról.",
|
|
"pushTitle": "Szinkron YouTube-ra",
|
|
"pushConfirm": "Szinkron",
|
|
"pushPlanCreate": "Létrehozol egy új YouTube-listát {{count}} videóval? (~{{units}} kvótaegység; ma még {{left}} maradt.)",
|
|
"mergeAddLocal_one": "{{count}} videó bekerül a Siftlode-listádba a YouTube-ról.",
|
|
"mergeAddLocal_other": "{{count}} videó bekerül a Siftlode-listádba a YouTube-ról.",
|
|
"mergeRemoveLocal_one": "{{count}} videó törlődik a Siftlode-listádból.",
|
|
"mergeRemoveLocal_other": "{{count}} videó törlődik a Siftlode-listádból.",
|
|
"mergeAddYt_one": "{{count}} videó felkerül a YouTube-ra.",
|
|
"mergeAddYt_other": "{{count}} videó felkerül a YouTube-ra.",
|
|
"mergeRemoveYt_one": "{{count}} videó törlődik a YouTube-ról.",
|
|
"mergeRemoveYt_other": "{{count}} videó törlődik a YouTube-ról.",
|
|
"mergeReorder_one": "{{count}} videó átrendeződik a YouTube-on.",
|
|
"mergeReorder_other": "{{count}} videó átrendeződik a YouTube-on.",
|
|
"mergeRename": "A lista átnevezésre kerül a YouTube-on.",
|
|
"mergeYtUnchanged": "A YouTube-listád nem változik.",
|
|
"mergeLocalUnchanged": "A Siftlode-listád nem változik.",
|
|
"mergeQuota": " (~{{units}} kvótaegység; ma még {{left}} maradt.)",
|
|
"mergeQuotaFree": " (~0 kvótaegység.)",
|
|
"pushNoQuota": "Nincs elég YouTube-kvóta mára ({{left}}) ehhez a szinkronhoz (~{{units}} kell). Próbáld újra holnap.",
|
|
"pushUpToDate": "A(z) „{{name}}” már szinkronban van a YouTube-bal.",
|
|
"pushDone": "„{{name}}” szinkronizálva a YouTube-ra ✓",
|
|
"pushPartial": "Szinkronizálva, de {{count}} elem kimaradt.",
|
|
"pushFailed": "Nem sikerült a YouTube-ra szinkronizálás.",
|
|
"deleteHereOnly": "Törlés csak itt",
|
|
"deleteYtFailed": "Nem sikerült törölni a YouTube-on; csak itt lett eltávolítva.",
|
|
"sortLabel": "Rendezés",
|
|
"dirAsc": "Növekvő",
|
|
"dirDesc": "Csökkenő",
|
|
"groupByChannel": "Csoportosítás csatorna szerint",
|
|
"railSortCustom": "Egyéni sorrend",
|
|
"railSortName": "Név",
|
|
"railSortCount": "Elemszám",
|
|
"railSortDuration": "Összhossz",
|
|
"railSortRecent": "Utoljára módosított",
|
|
"dirtyFirst": "Nem szinkronizáltak elöl",
|
|
"colTitle": "Cím",
|
|
"colChannel": "Csatorna",
|
|
"colDuration": "Hossz",
|
|
"rowMenu": "Videó műveletek",
|
|
"moveTo": "Áthelyezés másik listába",
|
|
"moveToRecent": "Áthelyezés ide: „{{name}}”",
|
|
"moveNoTargets": "Még nincs másik lejátszási lista, ahová áthelyezhetnéd.",
|
|
"movedToast": "„{{title}}” áthelyezve ide: „{{name}}” ✓",
|
|
"moveFailed": "Nem sikerült áthelyezni a videót.",
|
|
"removeFailed": "Nem sikerült eltávolítani a videót.",
|
|
"errors": {
|
|
"name_required": "Adj nevet a lejátszási listának.",
|
|
"youtube_read_scope": "A listák szinkronizálásához kapcsold össze a YouTube-ot (olvasási hozzáférés).",
|
|
"not_on_youtube": "Ez a lejátszási lista nincs fent a YouTube-on.",
|
|
"youtube_failed": "A YouTube most nem fogadta el. Próbáld újra.",
|
|
"watch_later_not_pushable": "A „Megnézem később” listát nem lehet a YouTube-ra küldeni.",
|
|
"watch_later_undeletable": "A „Megnézem később” lista nem törölhető.",
|
|
"youtube_editing_off": "Előbb engedélyezd a YouTube-szerkesztést a Beállításokban.",
|
|
"quota_exceeded": "Mára nem maradt elég YouTube-keret ehhez a szinkronhoz."
|
|
},
|
|
"moveErrors": {
|
|
"not_in_playlist": "Ez a videó már nincs ebben a listában — időközben máshol megváltozott.",
|
|
"same_playlist": "Ez a videó már ebben a listában van."
|
|
},
|
|
"orderTop": "Legfelülre",
|
|
"orderUp": "Eggyel feljebb",
|
|
"orderDown": "Eggyel lejjebb",
|
|
"orderBottom": "Legalulra",
|
|
"railMenu": "Lejátszási lista műveletei",
|
|
"builtinLocked": "A beépített „{{name}}” lista nem nevezhető át és nem törölhető.",
|
|
"removeItem": "Eltávolítás",
|
|
"removeItemOf": "„{{title}}” eltávolítása a listáról",
|
|
"confirmRemove": "Eltávolítod a(z) „{{title}}” videót erről a listáról?",
|
|
"dragHandle": "Húzd az átrendezéshez",
|
|
"dragHandleOf": "„{{title}}” átrendezése",
|
|
"dragBlockedSort": "A kézi átrendezés ki van kapcsolva, amíg oszloprendezés vagy csoportosítás van érvényben.",
|
|
"dragBlockedFilter": "A kézi átrendezés ki van kapcsolva, amíg szűrő van érvényben.",
|
|
"clearView": "Nézet visszaállítása",
|
|
"saveOrder": "Sorrend mentése",
|
|
"filteredCount": "{{count}} látszik",
|
|
"noneMatchFilter": "Egy videó sem felel meg a szűrőnek.",
|
|
"loadFailed": "Nem sikerült betölteni ezt a listát.",
|
|
"reorderFailed": "Nem sikerült elmenteni az új sorrendet.",
|
|
"renameFailed": "Nem sikerült átnevezni a listát.",
|
|
"deleteFailed": "Nem sikerült törölni a listát.",
|
|
"confirmDeleteLinked": "Törlöd a(z) „{{name}}” listát? A YouTube-bal szinkronban van — válaszd ki, hogy ott is törlődjön-e. Nem vonható vissza.",
|
|
"dragBlockedBuiltin": "Ennek a listának kötött a sorrendje — kézzel nem rendezhető át.",
|
|
"deleteBoth": "Törlés itt és a YouTube-on",
|
|
"dndInstructions": "Szóközzel felveszed a videót, a nyilakkal mozgatod, újabb szóközzel leteszed, Escape-pel megszakítod.",
|
|
"dndPickedUp": "„{{title}}” felvéve, {{pos}}. a(z) {{total}} közül.",
|
|
"dndMovedOver": "„{{title}}” a(z) {{pos}}. helyre került a(z) {{total}} közül.",
|
|
"dndDropped": "„{{title}}” letéve a(z) {{pos}}. helyre a(z) {{total}} közül.",
|
|
"dndCancelled": "Mozgatás megszakítva; „{{title}}” visszakerült a(z) {{pos}}. helyre.",
|
|
"viewGrouped": "csatorna szerint csoportosítva",
|
|
"viewGroupedAnd": "csatorna szerint csoportosítva, {{sort}}",
|
|
"viewDiffers": "Ideiglenes nézet ({{view}}) — a lista mentett sorrendje változatlan. Mentsd, ha ez maradjon.",
|
|
"viewMatches": "Ez a nézet ({{view}}) megegyezik a lista mentett sorrendjével, így nincs mit menteni.",
|
|
"viewFiltered": "Szűrt nézet — {{total}} elemből {{shown}} látszik. Szűrés közben a sorrend nem menthető."
|
|
}
|