Owner answers to the E11 S5 raises (2026-09-13): 1 → A, 2 → "Feed" in every language, 3 → translate the
proxy label and fix every config key missing in BOTH languages ("maintenance", "tmdb" — old bugs).
Focus across a view change (1-A). Opening a Plex title from Home's rail, a channel from the Channels
table or a title from a Plex grid switches the page or the sub-view, which unmounts the list; Back used
to hand focus to <body>, so the next `j` started over at the top. The YouTube player (an overlay)
already restored onto the card.
- `lib/listNav`: `navPosition()` (list's place in reading order, the page's list count, item index)
and `restoreNavPosition()`: focuses the item once the page has as many lists on screen as when it was
left, polls on a timer (a hidden tab runs no animation frames), gives up after 2 s or at once when
something already holds focus, focuses without scrolling (the scroll restore owns the position).
- `lib/history`: `rememberNavPosition()` stamps `sfNav` onto the entry being left and returns the state
without it (a new entry must not inherit it); one popstate listener restores and spends the stamp,
so a later landing on the same entry (an overlay closing over it) cannot pull focus to an old item.
- Called before every view push: `setPage`, `openChannel`, `enterYtSearch`, `useHistorySubview.open`,
the Channels tab push. `navPosition.wiring.contract.test` fails on any `history.pushState(` without
it (the overlay stack's own push is the one exemption).
"Feed" (2). The module is "Feed" in both languages: every "hírfolyam" in the Hungarian UI (≈45 strings,
suffixed: Feedből, Feeded, Feedben…) and the prose "feed" in English that means the module ("your
Feed", "Hide from Feed"); "RSS feed" keeps its meaning. The welcome email says it too.
Backend ids without a name (3). The Configuration page showed `maintenance`, `tmdb`,
`maintenance_revalidate_batch`, `download_upload_max_bytes`, `audit_retention_days`, `plex_overlay_map`,
`tmdb_api_key` and `tmdb_language` as raw identifiers — the lookup falls back to the id, and the i18n
parity test stayed green because both languages missed the same keys. Added labels + hints (EN/HU),
the two groups (and their tab order), the missing `scheduler.jobDesc.demo_reset`, removed the stale
`plex_sync_interval_min` field, and "YouTube API kimenő proxy". `i18n/backendIds.contract.test` reads
`sysconfig.SPECS`, `scheduler.JOB_INTERVALS` and the audit/quota action enums from the backend sources
and fails on an id without its name in either language, or a name left for an id the backend dropped.
43 lines
1.4 KiB
JSON
43 lines
1.4 KiB
JSON
{
|
|
"title": "Billentyűparancsok",
|
|
"contextMenu": "Helyi menü megnyitása",
|
|
"undo": "Visszavonás",
|
|
"redo": "Újra",
|
|
"playPause": "Lejátszás / szünet",
|
|
"fullscreen": "Teljes képernyő",
|
|
"seek": "Tekerés 10 másodperc",
|
|
"seek5": "Tekerés 5 másodperc",
|
|
"fineSeek": "Finom léptetés",
|
|
"episode": "Előző / következő rész",
|
|
"video": "Előző / következő videó",
|
|
"volume": "Hangerő fel / le",
|
|
"mute": "Némítás",
|
|
"audio": "Hangsáv váltása",
|
|
"subtitle": "Felirat váltása",
|
|
"help": "Súgó megjelenítése",
|
|
"home": "Ugrás a kezdőlapra (mit nézzek?)",
|
|
"info": "Média infó",
|
|
"stats": "Statisztika (nerdöknek)",
|
|
"back": "Leállítás és vissza",
|
|
"browseBack": "Vissza egy szintet",
|
|
"closePlayer": "Lejátszó bezárása",
|
|
"palette": "Ugrás-paletta megnyitása",
|
|
"goFeed": "Ugrás: Feed",
|
|
"goChannels": "Ugrás: Csatornák",
|
|
"goPlaylists": "Ugrás: Lejátszási listák",
|
|
"goPlex": "Ugrás: Plex",
|
|
"goNotifications": "Ugrás: Értesítések",
|
|
"goMessages": "Ugrás: Üzenetek",
|
|
"goDownloads": "Ugrás: Letöltések",
|
|
"goStats": "Ugrás: Statisztika",
|
|
"goSettings": "Ugrás: Beállítások",
|
|
"search": "Ugrás a keresőbe",
|
|
"listStep": "Következő / előző elem",
|
|
"gridMove": "Mozgás a listában",
|
|
"open": "A kijelölt elem megnyitása",
|
|
"cap": {
|
|
"space": "Szóköz",
|
|
"menu": "Menü"
|
|
}
|
|
}
|