Deep-review round 3, targeted at the surfaces round 2's fix commit changed. Five of the eight findings are the same shape: the guards written to stop half-done sweeps were themselves half-done. test_upload.py's display-field guard walked only `ast.Assign`, so the one writer with an unbounded REQUEST HEADER behind it — `spool_upload`'s `display_name=display_text(...)` keyword — was invisible to the guard meant to protect it. It also stopped at `app/routes/`, missing the four writers in `downloads/` that actually construct the row, and asserted `not offenders`, which enforces nothing once a refactor moves the writers out of its view. It now walks assignments AND keywords across `app/`, and holds exact set equality against a registry of all twelve write sites with each one's value. test_body_limit.py's release guard used `any(... ast.walk(fn))`, which accepts a `release_read_connection` that runs AFTER the await it exists to precede — satisfying the letter of the rule while pinning a connection for exactly the transfer it was supposed to free. Position is checked now, and a late release is its own, louder failure. The registry keyed sites by file basename while scanning recursively, and `admin.py`, `discover.py` and `playlists.py` each exist both at the top level and under `plex/` — the same entry-collapse the registry was widened to close. Keyed by relative path now. And all three guards recognised a body read only by the `capped_` naming convention, so a route spelling `await request.body()` inline declared no ceiling, released no connection, and was invisible to every one of them. `release_read_connection`'s precondition claimed the caller "must have NOTHING PENDING, and that is checked rather than described" while checking only UNFLUSHED ORM work. Measured: after `add`+`flush` all three collections are empty and the rollback loses the row, and Core DML never enters them at all — both of them this codebase's canonical write shapes. It now also asks the transaction directly via `pg_current_xact_id_if_assigned()`. `errors.tooLarge` was reworded to "try a smaller file", but that key answers every route's body cap: the issue composer's over-size JSON draft got advice about a file it does not have. Back to payload-neutral; the file-specific sentence keeps its own key. The upload dialog's new danger border outranked `dragOver`, so a user replacing an over-cap file got no sign the drop zone was live — and with a file picked the label shows its name rather than "drop it here", so the border was the only feedback left. Four further findings were refuted 3/3 and are not fixed: `aria-invalid` on the drop zone (measured in Chromium — the AX node does carry it on a native button), a bidi-override spoof through `display_text` (the served filename already strips those categories, and the proposed filter would have broken every ZWJ emoji), and `capped_body` not draining (the screenshot route's edge ceiling equals its own cap, so that refusal is unreachable, and the log sink is sent by beacon with nobody reading the answer).
235 lines
15 KiB
JSON
235 lines
15 KiB
JSON
{
|
|
"title": "Nem sikerült",
|
|
"generic": "A szerver nem tudta végrehajtani a műveletet. Próbáld újra.",
|
|
"demo": "Ez a bemutató fiókban nem érhető el.",
|
|
"validation": "Néhány megadott érték érvénytelen volt. Ellenőrizd, majd próbáld újra.",
|
|
"tooLarge": "Ez túl nagy, a szerver nem fogadta el.",
|
|
"server": "Szerverhiba",
|
|
"syncCooldown": "Az imént többször is szinkronizáltál — várj pár percet. A YouTube-keret közös az instance összes felhasználójával, a háttérszinkron pedig így is fut tovább.",
|
|
"notFound": {
|
|
"generic": "Ez az elem már nem létezik.",
|
|
"view": "Ez a nézet már nem létezik.",
|
|
"tag": "Ez a címke már nem létezik.",
|
|
"pin": "Ez már nincs a komfort polcodon.",
|
|
"playlist": "Ez a lejátszási lista már nem létezik.",
|
|
"move_target": "A lejátszási lista, ahová áthelyeznéd, már nem létezik.",
|
|
"video": "Ez a videó már nincs a könyvtárban.",
|
|
"invite": "Ez a meghívó már nem létezik.",
|
|
"user": "Ez a felhasználó már nem létezik.",
|
|
"channel": "Ez a csatorna már nincs a könyvtárban.",
|
|
"subscription": "Már nem vagy feliratkozva erre a csatornára.",
|
|
"recipient": "Nincs felhasználó ezzel az e-mail címmel.",
|
|
"job": "Ez a feladat már nem létezik.",
|
|
"download": "Ez a letöltés már nem létezik.",
|
|
"debug_session": "Ez a hibakereső munkamenet már nem létezik.",
|
|
"screenshot": "Ez a képernyőkép már nem létezik.",
|
|
"link": "Ez a megosztási link már nem létezik.",
|
|
"notification": "Ez az értesítés már nem létezik.",
|
|
"account": "Ez a fiók már nem létezik.",
|
|
"collection": "Ez a gyűjtemény már nem létezik.",
|
|
"config_key": "Nincs ilyen beállítás.",
|
|
"file": "A fájl már nem érhető el.",
|
|
"filmstrip": "Ehhez nincs képsor.",
|
|
"host": "Ez a kiszolgáló már nincs a listán.",
|
|
"image": "Ehhez nincs kép.",
|
|
"item": "Ez az elem már nem létezik.",
|
|
"library": "Ez a könyvtár már nem létezik.",
|
|
"plex_item": "Ez a Plex-elem már nincs a könyvtárban.",
|
|
"poster": "Ehhez nincs poszter.",
|
|
"profile": "Ez a letöltési profil már nem létezik.",
|
|
"season": "Ez az évad már nincs a könyvtárban.",
|
|
"show": "Ez a sorozat már nincs a könyvtárban."
|
|
},
|
|
"admin": {
|
|
"not_allowed": "A címe már nincs jóváhagyva. Előbb vedd fel a fehérlistára.",
|
|
"not_applicable": "Ezen a fiókon már nincs mit megerősíteni.",
|
|
"not_approved": "Csak jóváhagyott címre küldhető meghívó.",
|
|
"email_off": "Nem ment ki levél: ezen a példányon nincs működő SMTP. Nézd meg a Konfiguráció → E-mail / SMTP fület.",
|
|
"send_failed": "Nem sikerült elküldeni a levelet: a levelezőszerver nem volt elérhető, vagy elutasította a belépést vagy a levelet. Nézd meg a Konfiguráció → E-mail / SMTP fület, majd próbáld újra.",
|
|
"demo": "A bemutató fiók közös, ezért nem kaphat jelszóbeállító linket."
|
|
},
|
|
"reason": {
|
|
"unreachable": "A szerver nem volt elérhető. Próbáld újra.",
|
|
"forbidden": "Ehhez nincs jogosultságod.",
|
|
"rateLimited": "Túl sok kérés egyszerre — várj egy kicsit, és próbáld újra.",
|
|
"unexpected": "Váratlan hiba történt az alkalmazásban. Próbáld újra."
|
|
},
|
|
"writeFailed": {
|
|
"hideChannel": "Nem sikerült módosítani a csatorna elrejtését",
|
|
"blockChannel": "Nem sikerült módosítani a csatorna tiltását",
|
|
"unblockChannel": "Nem sikerült feloldani a csatorna tiltását",
|
|
"channelSettings": "Nem sikerült menteni a csatorna beállításait",
|
|
"channelPriority": "Nem sikerült menteni a csatorna prioritását",
|
|
"exploreChannel": "Nem sikerült betölteni a csatorna videóit",
|
|
"downloadQuota": "Nem sikerült menteni a letöltési kvótát",
|
|
"downloadQuotaReset": "Nem sikerült visszaállítani a letöltési kvótát",
|
|
"job": {
|
|
"pause": "Nem sikerült szüneteltetni a letöltést",
|
|
"resume": "Nem sikerült folytatni a letöltést",
|
|
"cancel": "Nem sikerült megszakítani a letöltést",
|
|
"delete": "Nem sikerült törölni a letöltést",
|
|
"redownload": "Nem sikerült újraindítani a letöltést"
|
|
},
|
|
"removeShared": "Nem sikerült eltávolítani a megosztott elemet",
|
|
"downloadDetails": "Nem sikerült menteni a letöltés adatait",
|
|
"enqueueDownload": "Nem sikerült sorba állítani a letöltést",
|
|
"downloadProfileSave": "Nem sikerült menteni a letöltési profilt",
|
|
"downloadProfileDelete": "Nem sikerült törölni a letöltési profilt",
|
|
"downloadCookiesRemove": "Nem sikerült eltávolítani ezeket a sütiket",
|
|
"notifRead": "Nem sikerült olvasottnak jelölni az értesítést",
|
|
"notifReadAll": "Nem sikerült olvasottnak jelölni az értesítéseket",
|
|
"notifDismiss": "Nem sikerült elvetni az értesítést",
|
|
"notifClear": "Nem sikerült törölni az értesítéseket",
|
|
"createPlaylist": "Nem sikerült létrehozni a lejátszási listát",
|
|
"schedulerRun": "Nem sikerült elindítani a feladatot",
|
|
"schedulerRunAll": "Nem sikerült elindítani a feladatokat",
|
|
"maintenanceBatch": "Nem sikerült menteni a karbantartási köteg méretét",
|
|
"purgeDiscovery": "Nem sikerült törölni a felfedezési adatokat",
|
|
"plexWatchLink": "Nem sikerült módosítani a Plex megtekintésiállapot-szinkront",
|
|
"plexWatchImport": "Nem sikerült importálni a megtekintési állapotot a Plexből",
|
|
"shareLinkDownload": "Nem sikerült módosítani, hogy a link engedi-e a letöltést",
|
|
"shareLinkRevoke": "Nem sikerült visszavonni a linket",
|
|
"shareLinkPassword": "Nem sikerült módosítani a link jelszavát",
|
|
"syncPause": "Nem sikerült szüneteltetni a szinkronizálást",
|
|
"syncResume": "Nem sikerült folytatni a szinkronizálást",
|
|
"prefs": "Nem sikerült menteni a beállításaidat",
|
|
"deleteAccount": "Nem sikerült törölni a fiókodat",
|
|
"videoState": "Nem sikerült módosítani a videó állapotát",
|
|
"videoReset": "Nem sikerült alaphelyzetbe állítani a videót",
|
|
"watchLaterAdd": "Nem sikerült hozzáadni a Megnézem később listához",
|
|
"watchLaterRemove": "Nem sikerült eltávolítani a Megnézem később listából",
|
|
"clearSearch": "Nem sikerült törölni a keresési találatokat"
|
|
},
|
|
"ok": "OK",
|
|
"offline": {
|
|
"title": "Megszakadt a kapcsolat",
|
|
"body": "Nem sikerült elérni a szervert — lehet, hogy épp újraindul. Ez az üzenet eltűnik, amint helyreáll a kapcsolat."
|
|
},
|
|
"boundary": {
|
|
"title": "Hiba történt.",
|
|
"subtitle": "Az alkalmazás váratlan hibába ütközött.",
|
|
"reload": "Újratöltés",
|
|
"notifTitle": "Valami elromlott",
|
|
"notifMessage": "Váratlan hiba"
|
|
},
|
|
"youtube": {
|
|
"quota": "Ennek a példánynak elfogyott a mai YouTube-kerete. Csendes-óceáni idő szerint éjfélkor újraindul — akkor próbáld újra.",
|
|
"reconnect": "A Google már nem fogadja el ennek a fióknak a YouTube-kapcsolatát. Jelentkezz ki, majd lépj be újra Google-lel az összekötéshez.",
|
|
"unavailable": "A YouTube most nem fogadta el. Próbáld újra."
|
|
},
|
|
"refused": {
|
|
"account_no_access": "Ennek a fióknak már nincs hozzáférése.",
|
|
"account_signed_out": "Ezt a fiókot máshol kijelentkeztették — lépj be újra.",
|
|
"account_suspended": "Ez a fiók fel van függesztve.",
|
|
"address_has_account": "Ehhez a címhez már tartozik fiók — azt töröld helyette.",
|
|
"admin_first": "Előbb hozd létre az admin fiókot.",
|
|
"admin_only": "Ezt csak admin teheti meg.",
|
|
"already_set_up": "Ez a példány már be van állítva.",
|
|
"already_subscribed": "Erre a csatornára már feliratkoztál.",
|
|
"channel_blocked": "Ezt a csatornát letiltottad.",
|
|
"collection_fields_required": "A címet és egy elemet is meg kell adni.",
|
|
"collection_pending_sync": "A gyűjtemény a Plexben megváltozott, de a helyi másolat frissítése nem sikerült — a következő szinkron pótolja.",
|
|
"collection_read_only": "Ez a gyűjtemény csak olvasható.",
|
|
"collection_smart": "Az okos és az automatikus listás gyűjtemények nem tehetők szerkeszthetővé.",
|
|
"demo_activate": "A bemutató fiók nem aktiválható.",
|
|
"demo_delete": "A bemutató fiók nem törölhető.",
|
|
"demo_role": "A bemutató fiók szerepköre nem módosítható.",
|
|
"demo_suspend": "A bemutató fiók nem függeszthető fel.",
|
|
"download_not_ready": "Ez a letöltés még nincs kész.",
|
|
"edit_unfinished": "Csak befejezett letöltés szerkeszthető.",
|
|
"filters_not_object": "A nézet szűrői hibás formátumúak.",
|
|
"google_no_userinfo": "A Google nem küldte vissza a fiók adatait. Próbálj újra belépni.",
|
|
"image_fetch_failed": "A képet nem sikerült betölteni.",
|
|
"image_host": "Erről a címről nem töltünk be képet.",
|
|
"invalid_cursor": "A lista pozíciója elavult — töltsd újra az oldalt.",
|
|
"invalid_email": "Adj meg egy érvényes e-mail címet.",
|
|
"invalid_interval": "Az intervallumnak {{min}} és {{max}} perc között kell lennie.",
|
|
"invalid_link": "Ez nem tűnik érvényes videólinknek.",
|
|
"invalid_role": "Ismeretlen szerepkör.",
|
|
"invalid_status": "Ismeretlen állapot.",
|
|
"invite_decided": "Erről a kérésről már döntöttek.",
|
|
"job_running": "Ez a feladat már fut.",
|
|
"last_active_admin": "Ez az egyetlen aktív admin — előbb tegyél meg valaki mást adminnak.",
|
|
"last_admin": "Ez az egyetlen admin — előbb tegyél meg valaki mást adminnak.",
|
|
"link_gone": "Ez a link már nem érhető el.",
|
|
"link_required": "Adj meg egy videólinket vagy -azonosítót.",
|
|
"media_missing": "A médiafájl nincs a lemezen.",
|
|
"message_empty": "Az üzenet üres.",
|
|
"message_rate": "Túl sok üzenet — várj egy kicsit.",
|
|
"message_self": "Magadnak nem küldhetsz üzenetet.",
|
|
"message_too_long": "Az üzenet túl hosszú.",
|
|
"messaging_set_up": "A biztonságos üzenetküldés már be van állítva.",
|
|
"name_required": "Adj meg egy nevet.",
|
|
"no_encryption_key": "Titkos értékek tárolásához állítsd be a TOKEN_ENCRYPTION_KEY-t.",
|
|
"no_messaging": "Ez a tag még nem állította be az üzenetküldést.",
|
|
"no_profile": "Nincs használható letöltési profil.",
|
|
"no_subscription_id": "Még nincs rögzített YouTube-feliratkozás — előbb szinkronizáld a feliratkozásaidat.",
|
|
"not_authenticated": "Nem vagy bejelentkezve.",
|
|
"not_ready": "Még nem érhető el.",
|
|
"not_redownloadable": "Ez az elem nem tölthető le újra.",
|
|
"not_your_account": "Ebbe a fiókba itt nem léptél be.",
|
|
"only_admin_delete": "Te vagy az egyetlen admin — a fiókod törlése előtt tegyél meg valaki mást adminnak.",
|
|
"own_delete": "A saját fiókodat a Beállítások → Fiók alatt törölheted.",
|
|
"own_role": "A saját szerepkörödet nem módosíthatod.",
|
|
"own_suspend": "A saját fiókodat nem függesztheted fel.",
|
|
"plex_disabled": "A Plex modul ki van kapcsolva.",
|
|
"plex_not_configured": "A Plex nincs beállítva — add meg a szerver címét és a tokent a Konfiguráció → Plex alatt.",
|
|
"plex_unreachable": "A Plex-szerver nem válaszolt. Ellenőrizd a címet és a tokent, majd próbáld újra.",
|
|
"plex_write_failed": "A Plex nem fogadta el a módosítást. Próbáld újra.",
|
|
"profile_name_required": "Adj meg egy profilnevet.",
|
|
"quota_reserve": "A mai közös YouTube-keret a tartalékánál tart — próbáld később.",
|
|
"quota_spent": "A mai közös YouTube-keret elfogyott. Próbáld holnap.",
|
|
"recipient_required": "Adj meg egy címzett e-mail címet.",
|
|
"registration_closed": "A regisztráció jelenleg zárva van.",
|
|
"search_daily_limit": "Elérted a mai YouTube-keresési korlátot ({{limit}}). Próbáld holnap.",
|
|
"search_term_required": "Írj be egy keresőkifejezést.",
|
|
"session_gone": "A lejátszási munkamenet véget ért.",
|
|
"setting_not_a_choice": "Válassz ezek közül: {{choices}}.",
|
|
"setting_not_a_number": "Adj meg egy egész számot.",
|
|
"setting_too_high": "Az érték nem lehet nagyobb, mint {{max}}.",
|
|
"setting_too_low": "Az érték nem lehet kisebb, mint {{min}}.",
|
|
"setup_token": "A beállítási token hiányzik vagy hibás.",
|
|
"share_own": "Ez már a te letöltésed.",
|
|
"share_password_required": "Ehhez a linkhez jelszó kell.",
|
|
"share_unfinished": "Csak befejezett letöltés osztható meg.",
|
|
"smtp_failed": "Nem sikerült elküldeni a levelet — ellenőrizd az SMTP-beállításokat.",
|
|
"smtp_off": "Az SMTP nincs beállítva.",
|
|
"spec_not_object": "A profil beállításai hibás formátumúak.",
|
|
"still_downloading": "Ez a letöltés még folyamatban van.",
|
|
"tag_name_taken": "Már van „{{name}}” nevű címkéd.",
|
|
"title_required": "Adj meg egy címet.",
|
|
"too_many_attempts": "Túl sok próbálkozás. Próbáld kicsit később.",
|
|
"unknown_setting": "Ismeretlen beállítás: {{key}}",
|
|
"value_missing": "Adj meg egy értéket.",
|
|
"video_gone": "Ez a videó már nem érhető el.",
|
|
"view_name_taken": "Már van „{{name}}” nevű nézeted.",
|
|
"watch_sync_off": "Előbb kapcsold be a Plex megtekintés-szinkront.",
|
|
"weak_password": "A jelszónak legalább {{min}} karakterből kell állnia.",
|
|
"wrong_password": "A jelenlegi jelszó helytelen.",
|
|
"wrong_share_password": "Hibás jelszó.",
|
|
"youtube_editing_off": "Előbb kapcsold be a YouTube-szerkesztést a Beállításokban.",
|
|
"youtube_read_scope": "Előbb kapcsold össze a YouTube-fiókodat (olvasási hozzáférés).",
|
|
"debug_session_conflict": "Egy másik lapon épp most indult rögzítés. Frissítsd az oldalt.",
|
|
"issue_already_sent": "Ezt a hibajegyet már elküldted, a vázlata nem változtatható.",
|
|
"issue_title_required": "Adj címet a hibajegynek, mielőtt elküldöd.",
|
|
"screenshot_already_sent": "A hibajegy már elment, ehhez a munkamenethez nem adhatsz több képet.",
|
|
"screenshot_too_many": "Egy munkamenethez legfeljebb {{limit}} képernyőkép tartozhat.",
|
|
"screenshot_empty": "A kép üres.",
|
|
"screenshot_not_an_image": "Ez nem PNG, JPEG vagy WebP kép.",
|
|
"issues_not_configured": "Nincs beállítva hibajegy-kezelő. Töltsd le a hibajegyet zipként.",
|
|
"issues_unreachable": "A hibajegy-kezelő nem válaszol. Próbáld újra később.",
|
|
"issues_bad_token": "A hibajegy-kezelő nem fogadta el a tokent, vagy hiányzik a jogosultsága.",
|
|
"issues_repo_not_found": "A beállított hibajegy-tárhely nem található.",
|
|
"issues_public_repo": "A hibajegy-tárhely nyilvános. A napló miatt csak privát tárhelyre küldünk.",
|
|
"issues_disabled": "A hibajegy-tárhelyen ki van kapcsolva a hibajegy-kezelés.",
|
|
"issues_rejected": "A hibajegy-kezelő visszautasította a kérést.",
|
|
"issues_rate_limited": "Óránként legfeljebb {{limit}} hibajegyet küldhetsz. Próbáld újra később.",
|
|
"debug_session_rate_limited": "Óránként legfeljebb {{limit}} új rögzítést indíthatsz. Próbáld újra később.",
|
|
"export_rate_limited": "Túl sok letöltés egymás után. Várj egy percet.",
|
|
"screenshot_storage_full": "Elérted a képernyőképek {{limit}} MB-os keretét. Törölj régebbi munkamenetekből képeket, vagy várd meg, amíg lejárnak.",
|
|
"issue_sending": "A hibajegy küldése épp folyamatban van. Várd meg, amíg befejeződik.",
|
|
"issue_rate_limited": "Óránként legfeljebb {{limit}} küldési kísérlet. Próbáld újra később.",
|
|
"preview_rate_limited": "Túl sok előnézet egymás után. Várj egy percet."
|
|
}
|
|
}
|