2026-06-15 00:30:34 +02:00
{
"feed" : "Hírfolyam" ,
"searchPlaceholder" : "Keresés a feliratkozásaid között…" ,
2026-07-01 04:22:39 +02:00
"clearSearch" : "Keresés törlése" ,
2026-06-29 02:01:44 +02:00
"searchYoutube" : "Keresés a YouTube-on" ,
"searchYoutubeTip" : "Élő keresés a YouTube-on erre a kifejezésre (a közös API-kvótát fogyasztja). Entert is nyomhatsz." ,
2026-06-15 00:30:34 +02:00
"channelManager" : "Csatornakezelő" ,
"usageStats" : "Használat és statisztika" ,
2026-06-16 14:38:51 +02:00
"scheduler" : "Ütemező" ,
2026-06-19 12:23:00 +02:00
"configuration" : "Konfiguráció" ,
2026-06-19 14:16:48 +02:00
"users" : "Felhasználók" ,
2026-06-15 04:06:22 +02:00
"scope" : {
"label" : "Hírfolyam forrása" ,
"my" : "Sajátom" ,
"myTip" : "Csak a saját feliratkozásaid videói" ,
"all" : "Könyvtár" ,
"allTip" : "A közös könyvtár összes videója"
} ,
2026-06-15 00:30:34 +02:00
"account" : {
"admin" : "Adminisztrátor" ,
"feed" : "Hírfolyam" ,
"channels" : "Csatornák" ,
2026-06-15 14:45:18 +02:00
"playlists" : "Lejátszási listák" ,
2026-06-15 00:30:34 +02:00
"stats" : "Statisztika" ,
2026-06-16 14:38:51 +02:00
"scheduler" : "Ütemező" ,
2026-06-19 12:23:00 +02:00
"config" : "Konfiguráció" ,
2026-06-19 14:16:48 +02:00
"users" : "Felhasználók" ,
2026-06-15 00:30:34 +02:00
"settings" : "Beállítások" ,
"about" : "Névjegy" ,
2026-06-16 02:05:38 +02:00
"signOut" : "Kijelentkezés" ,
"addAccount" : "Másik fiók hozzáadása" ,
feat(audit): admin audit log (Notification P3)
Append-only who/what/when trail for admin actions + scheduler run summaries,
generalizing QuotaEvent. Logged at ACTION / run-summary granularity — never
per-row (a scheduler run touching thousands of videos is ONE row).
Backend:
- migration 0054_audit_log + AuditLog model (actor_id FK SET NULL, action,
target_type/id, summary, before/after JSON, created_at).
- app/audit.py: AuditAction constants (single source of truth, i18n'd on the
client) + record() (adds to the caller's txn) + gc(retention_days).
- producers wired: role change / suspend / delete / invite approve-deny-add /
demo add-remove-reset / discovery purge (admin.py); config set/reset — secret
VALUES never logged, key only (config.py); scheduler interval + maintenance
tune (scheduler routes); sync pause/resume (sync.py); and the scheduler _job()
choke point writes ONE run-summary row per run — manual runs + errors always,
automatic runs only when they changed something (no no-op-poll spam).
- retention: audit_gc scheduler job prunes rows older than audit_retention_days
(sysconfig, default 180; 0 = keep forever).
- admin API routes/audit.py (/api/admin/audit): recent-window list (actor emails
resolved, System for background) + clear (leaves one tamper-evidence row).
Frontend:
- new admin-only "Audit log" nav page (ScrollText) using the shared DataTable
(first admin page to reuse it) — sort/filter/paginate/persist, action select
filter, actor text filter, before→after detail, Clear-all with confirm.
- AuditLog.tsx + auditColumns.tsx + api.adminAudit/clearAudit + AuditRow type.
- trilingual audit + auditActions namespaces (HU/EN/DE) + nav + config-group +
scheduler job labels; Audit config group (retention days).
2026-07-12 07:32:41 +02:00
"switchTo" : "Váltás erre: {{name}}" ,
"audit" : "Naplózás"
2026-06-15 00:30:34 +02:00
} ,
"sync" : {
"yours" : "tiéd" ,
"total" : "összes" ,
"countTooltip" : "A feliratkozásaidból származó videók száma a megosztott katalógus teljes számához képest, amelyet az összes felhasználó feliratkozásai gyűjtöttek össze." ,
"paused" : "szüneteltetve" ,
"syncing" : "{{count}} szinkronizálás alatt" ,
2026-06-15 04:30:27 +02:00
"backfillingHistory" : "előzmény letöltése" ,
2026-06-19 02:57:45 +02:00
"working" : "szinkronizálás…" ,
"recentQueued" : "{{count}} sorban" ,
2026-06-15 00:30:34 +02:00
"allSynced" : "minden szinkronban" ,
"withoutFullHistory" : "{{count}} teljes előzmény nélkül" ,
"fullHistoryTooltip" : "Néhány csatornádnak csak a legutóbbi feltöltései vannak meg. Kattints a csatornakezelő megnyitásához (ezekre szűrve), és kérd le a teljes archívumukat." ,
"pause" : "Háttér-szinkronizálás szüneteltetése" ,
"resume" : "Háttér-szinkronizálás folytatása"
} ,
"banner" : {
"updated" : "Frissítve a(z) v{{version}} verzióra — nézd meg, mi változott." ,
"releaseNotes" : "Verziójegyzék" ,
"dismiss" : "Elvetés"
}
}