Files
Crosspoint/lib/I18n/translations/hungarian.yaml
T
Uri TauberandJulia Nguyen 1db1442319 fix: several bookmarks UX improvments (#2372)
## Summary

This PR enhances the EPUB reader's bookmark system with two
complementary improvements: a per-page bookmark indicator icon and
toggle behavior on the existing long-press action.

---

### What Changed

**Bookmark Toggle (was: add-only)**

The long-press Confirm action now toggles bookmarks rather than always
adding. `addBookmark()` checks whether a bookmark with the same xpath
already exists in the in-memory cache:
- If found → removes it and shows "Bookmark removed."
- If not found → adds it and shows "Bookmark added."

A new `STR_BOOKMARK_REMOVED` translation string was added to support the
removal message.

**Bookmark Icon Indicator**

A `BookmarkIcon` is now drawn at the top-right corner of the page
whenever the current page has a bookmark. `updateBookmarkFlag()` is
called at render time to determine whether the current page is
bookmarked.

**In-Memory Bookmark Cache**

Bookmarks are now loaded into `cachedBookmarks` on `onEnter()` rather
than being re-read from disk on every toggle. All subsequent add/remove
operations work against this cache and flush to disk, avoiding redundant
file reads on each bookmark action.

**Faster bookmarks list**

Previously, calculating "page X/Y" for each entry required decompressing
the entire spine item. We now persist `si`/`pc`/`pp` (spine index, page
count, and page progress) in the bookmark JSON when saving, and restore
them when loading. This avoids the expensive `toCrossPoint()` loop in
`onEnter()`, significantly reducing the cost of initializing the
bookmarks list.

---

### Files Changed

- `EpubReaderActivity.cpp` — `addBookmark()` toggle logic,
`updateBookmarkFlag()` (new), icon rendering in `renderContents()`,
cache initialization in `onEnter()`
- `EpubReaderActivity.h` — new fields: `currentPageBookmarked`,
`bookmarkRemoved`, `cachedBookmarks`; new method declaration
`updateBookmarkFlag()`

---

### AI Usage

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? _**< PARTIALLY >**_

---------

Co-authored-by: Julia Nguyen <julia@uxj.io>
2026-06-23 14:55:01 -04:00

302 lines
12 KiB
YAML

_language_name: "Magyar"
_language_code: "HU"
_order: "19"
STR_CROSSPOINT: "CrossPoint"
STR_BOOTING: "INDÍTÁS"
STR_SLEEPING: "ALVÁS"
STR_ENTERING_SLEEP: "Alvás..."
STR_BROWSE_FILES: "Fájlok böngészése"
STR_FILE_TRANSFER: "Fájlátvitel"
STR_SETTINGS_TITLE: "Beállítások"
STR_CONTINUE_READING: "Olvasás folytatása"
STR_NO_OPEN_BOOK: "Nincs nyitott könyv"
STR_START_READING: "Kezdj el olvasni lentebb"
STR_NO_FILES_FOUND: "Nem találhatók fájlok"
STR_SELECT_CHAPTER: "Fejezet kiválasztása"
STR_NO_CHAPTERS: "Nincsenek fejezetek"
STR_END_OF_BOOK: "A könyv vége"
STR_EMPTY_CHAPTER: "Üres fejezet"
STR_INDEXING: "Indexelés"
STR_MEMORY_ERROR: "Memóriahiba"
STR_PAGE_LOAD_ERROR: "Lapbetöltési hiba"
STR_EMPTY_FILE: "Üres fájl"
STR_OUT_OF_BOUNDS: "Határon kívül"
STR_LOADING: "Betöltés..."
STR_LOADING_POPUP: "Betöltés"
STR_WIFI_NETWORKS: "Wi-Fi hálózatok"
STR_NO_NETWORKS: "Nem található hálózat"
STR_NETWORKS_FOUND: "%zu hálózat található"
STR_SCANNING: "Keresés..."
STR_CONNECTING: "Kapcsolódás..."
STR_CONNECTED: "Kapcsolódva!"
STR_CONNECTION_FAILED: "A kapcsolat sikertelen"
STR_FORGET_NETWORK: "Hálózat elfelejtése?"
STR_SAVE_PASSWORD: "Jelszó mentése legközelebb?"
STR_PRESS_OK_SCAN: "Nyomj OK-t az újraellenőrzéshez"
STR_JOIN_NETWORK: "Csatlakozás hálózathoz"
STR_CREATE_HOTSPOT: "Hotspot létrehozása"
STR_JOIN_DESC: "Csatlakozás meglévő Wi-Fi hálózathoz"
STR_HOTSPOT_DESC: "Wi-Fi hálózat létrehozása másoknak"
STR_STARTING_HOTSPOT: "Hotspot indítása..."
STR_HOTSPOT_MODE: "Hotspot mód"
STR_CONNECT_WIFI_HINT: "Csatlakoztasd az eszközöd ehhez a Wi-Fi hálózathoz"
STR_OPEN_URL_HINT: "Nyisd meg ezt az URL-t a böngésződben"
STR_OR_HTTP_PREFIX: "vagy http://"
STR_SCAN_QR_HINT: "vagy olvasd be a QR-kódot a telefonoddal:"
STR_CALIBRE_WIRELESS: "Calibre Wireless"
STR_NETWORK_LEGEND: "* = Titkosított | + = Mentett"
STR_MAC_ADDRESS: "MAC-cím:"
STR_CHECKING_WIFI: "Wi-Fi ellenőrzése..."
STR_ENTER_WIFI_PASSWORD: "Add meg a Wi-Fi jelszót"
STR_TO_PREFIX: "- "
STR_CALIBRE_RECEIVING: "Fogadás: "
STR_CALIBRE_RECEIVED: "Fogadva: "
STR_CALIBRE_INSTRUCTION_1: "1) Telepítsd a CrossPoint Reader plugint"
STR_CALIBRE_INSTRUCTION_2: "2) Ugyanazon a Wi-Fi hálózaton légy"
STR_CALIBRE_INSTRUCTION_3: "3) Calibre-ben: \"Küldés az eszközre\""
STR_CALIBRE_INSTRUCTION_4: "\"Tartsd nyitva a képernyőt küldés közben\""
STR_CAT_DISPLAY: "Megjelenítés"
STR_CAT_READER: "Olvasó"
STR_CAT_CONTROLS: "Vezérlők"
STR_CAT_SYSTEM: "Rendszer"
STR_SLEEP_SCREEN: "Alvásképernyő"
STR_SLEEP_COVER_MODE: "Alvásképernyő borítómód"
STR_HIDE_BATTERY: "Akkumulátor % elrejtése"
STR_EXTRA_SPACING: "Extra bekezdésköz"
STR_TEXT_AA: "Szöveg élsimítás"
STR_IMAGES: "Képek"
STR_IMAGES_DISPLAY: "Megjelenítés"
STR_IMAGES_PLACEHOLDER: "Helyőrző"
STR_IMAGES_SUPPRESS: "Elnyomás"
STR_SHORT_PWR_BTN: "Rövid bekapcsológomb nyomás"
STR_ORIENTATION: "Olvasási irány"
STR_SIDE_BTN_LAYOUT: "Oldalsó gomb elrendezés (olvasó)"
STR_FRONT_BTN_FOLLOW_ORIENTATION: "Elülső gombok tájolása"
STR_LONG_PRESS_SKIP: "Hosszú nyomás - fejezet ugrás"
STR_FONT_PREVIEW_TEXT: "Egy hűtlen vejét fülöncsípő, dühös mexikói úr Wesselényinél mázol Quitóban"
STR_FONT_FAMILY: "Olvasó betűkészlet"
STR_FONT_SIZE: "Olvasó betűméret"
STR_LINE_SPACING: "Olvasó sorköz"
STR_SCREEN_MARGIN: "Olvasó margó"
STR_PARA_ALIGNMENT: "Olvasó szövegigazítás"
STR_HYPHENATION: "Elválasztás"
STR_TIME_TO_SLEEP: "Alvó mód aktiválása"
STR_SHOW_HIDDEN_FILES: "Rejtett fájlok megjelenítése"
STR_REMOVE_READ_FROM_RECENTS: "Olvasott könyvek törlése a legutóbbiak listájáról"
STR_MOVE_FINISHED_TO_READ: "Befejezett könyvek áthelyezése a Read mappába"
STR_REFRESH_FREQ: "Frissítési frekvencia"
STR_KOREADER_SYNC: "KOReader szinkronizálás"
STR_CHECK_UPDATES: "Frissítések keresése"
STR_LANGUAGE: "Nyelv"
STR_CLEAR_READING_CACHE: "Olvasási gyorsítótár törlése"
STR_USERNAME: "Felhasználónév"
STR_PASSWORD: "Jelszó"
STR_SYNC_SERVER_URL: "Szinkronizálás szerver URL"
STR_DOCUMENT_MATCHING: "Dokumentum egyeztetés"
STR_AUTHENTICATE: "Hitelesítés"
STR_KOREADER_USERNAME: "KOReader felhasználónév"
STR_KOREADER_PASSWORD: "KOReader jelszó"
STR_FILENAME: "Fájlnév"
STR_BINARY: "Bináris"
STR_SET_CREDENTIALS_FIRST: "Először add meg az adatokat"
STR_WIFI_CONN_FAILED: "Wi-Fi kapcsolat sikertelen"
STR_AUTHENTICATING: "Hitelesítés..."
STR_AUTH_SUCCESS: "Sikeres hitelesítés!"
STR_KOREADER_AUTH: "KOReader hitelesítés"
STR_SYNC_READY: "KOReader szinkronizálás kész"
STR_AUTH_FAILED: "Hitelesítés sikertelen"
STR_DONE: "Kész"
STR_CLEAR_CACHE_WARNING_1: "Ez törli az összes gyorsítótárazott könyv adatot."
STR_CLEAR_CACHE_WARNING_2: "Minden olvasási előrehaladás elvész!"
STR_CLEAR_CACHE_WARNING_3: "A könyveket újra kell indexelni"
STR_CLEAR_CACHE_WARNING_4: "megnyitáskor."
STR_CLEARING_CACHE: "Gyorsítótár törlése..."
STR_CACHE_CLEARED: "Gyorsítótár törölve"
STR_ITEMS_REMOVED: "elem eltávolítva"
STR_FAILED_LOWER: "sikertelen"
STR_CLEAR_CACHE_FAILED: "Gyorsítótár törlése sikertelen"
STR_CHECK_SERIAL_OUTPUT: "Ellenőrizd a soros kimenetet"
STR_DARK: "Sötét"
STR_LIGHT: "Világos"
STR_CUSTOM: "Egyéni"
STR_COVER: "Borító"
STR_NONE_OPT: "Egyik sem"
STR_FIT: "Illesztés"
STR_CROP: "Körbevágás"
STR_NEVER: "Soha"
STR_IN_READER: "Olvasóban"
STR_ALWAYS: "Mindig"
STR_IGNORE: "Mellőzés"
STR_SLEEP: "Alvás"
STR_PAGE_TURN: "Lapozás"
STR_PORTRAIT: "Álló"
STR_LANDSCAPE_CW: "Fekvő jobbra"
STR_INVERTED: "Fordított"
STR_LANDSCAPE_CCW: "Fekvő balra"
STR_PREV_NEXT: "Előző/Következő"
STR_NEXT_PREV: "Következő/Előző"
STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans"
STR_SMALL: "Kicsi"
STR_MEDIUM: "Közepes"
STR_LARGE: "Nagy"
STR_X_LARGE: "Nagyon nagy"
STR_TIGHT: "Szoros"
STR_NORMAL: "Normál"
STR_WIDE: "Széles"
STR_JUSTIFY: "Sorkizárás"
STR_ALIGN_LEFT: "Bal"
STR_CENTER: "Közép"
STR_ALIGN_RIGHT: "Jobb"
STR_PAGES_1: "1 oldal"
STR_PAGES_5: "5 oldal"
STR_PAGES_10: "10 oldal"
STR_PAGES_15: "15 oldal"
STR_PAGES_30: "30 oldal"
STR_UPDATE: "Frissítés"
STR_CHECKING_UPDATE: "Frissítés keresése..."
STR_NEW_UPDATE: "Új frissítés elérhető!"
STR_CURRENT_VERSION: "Jelenlegi verzió: "
STR_NEW_VERSION: "Új verzió: "
STR_UPDATING: "Frissítés..."
STR_NO_UPDATE: "Nincs elérhető frissítés"
STR_UPDATE_FAILED: "Frissítés sikertelen"
STR_UPDATE_COMPLETE: "Frissítés kész"
STR_POWER_ON_HINT: "Tartsd nyomva a bekapcsológombot a bekapcsoláshoz"
STR_NO_ENTRIES: "Nem található bejegyzés"
STR_DOWNLOADING: "Letöltés..."
STR_DOWNLOAD_FAILED: "Letöltés sikertelen"
STR_ERROR_MSG: "Hiba:"
STR_UNNAMED: "Névtelen"
STR_NO_SERVER_URL: "Nincs konfigurált szerver URL"
STR_FETCH_FEED_FAILED: "Hírcsatorna betöltése sikertelen"
STR_PARSE_FEED_FAILED: "Hírcsatorna feldolgozása sikertelen"
STR_NETWORK_PREFIX: "Hálózat: "
STR_IP_ADDRESS_PREFIX: "IP-cím: "
STR_ERROR_GENERAL_FAILURE: "Hiba: Általános hiba"
STR_ERROR_NETWORK_NOT_FOUND: "Hiba: Hálózat nem található"
STR_ERROR_CONNECTION_TIMEOUT: "Hiba: Kapcsolat időtúllépés"
STR_SD_CARD: "SD kártya"
STR_BACK: "« Vissza"
STR_EXIT: "« Kilépés"
STR_HOME: "« Főoldal"
STR_SELECT: "Kiválasztás"
STR_SELECTED: "Kiválasztva"
STR_TOGGLE: "Váltás"
STR_TOGGLE_BOOKMARK: "Könyvjelző váltása"
STR_BOOKMARK_REMOVED: "Könyvjelző eltávolítva."
STR_HOLD_OPEN_TO_DELETE: "Tartsa lenyomva a Megnyitás gombot a törléshez"
STR_CONFIRM: "Megerősítés"
STR_CANCEL: "Mégse"
STR_CONNECT: "Csatlakozás"
STR_OPEN: "Megnyitás"
STR_DOWNLOAD: "Letöltés"
STR_RETRY: "Újra"
STR_YES: "Igen"
STR_NO: "Nem"
STR_SHOW: "Megjelenítés"
STR_HIDE: "Elrejtés"
STR_STATE_ON: "BE"
STR_STATE_OFF: "KI"
STR_NOT_SET: "Nincs beállítva"
STR_DIR_LEFT: "Bal"
STR_DIR_RIGHT: "Jobb"
STR_DIR_UP: "Fel"
STR_DIR_DOWN: "Le"
STR_OK_BUTTON: "OK"
STR_SLEEP_COVER_FILTER: "Alvásképernyő borítószűrő"
STR_FILTER_CONTRAST: "Kontraszt"
STR_CUSTOMISE_STATUS_BAR: "Állapotsáv testreszabása"
STR_CHAPTER_PAGE_COUNT: "Fejezet oldalszám"
STR_BOOK_PROGRESS_PERCENTAGE: "Könyv haladás százaléka"
STR_PROGRESS_BAR: "Haladássáv"
STR_PROGRESS_BAR_THICKNESS: "Haladássáv vastagsága"
STR_PROGRESS_BAR_THIN: "Vékony"
STR_PROGRESS_BAR_MEDIUM: "Közepes"
STR_PROGRESS_BAR_THICK: "Vastag"
STR_BOOK: "Könyv"
STR_CHAPTER: "Fejezet"
STR_EXAMPLE_CHAPTER: "21. fejezet"
STR_EXAMPLE_BOOK: "Könyv címe"
STR_PREVIEW: "Előnézet"
STR_TITLE: "Cím"
STR_BATTERY: "Akkumulátor"
STR_UI_THEME: "Felhasználói felület téma"
STR_THEME_CLASSIC: "Klasszikus"
STR_THEME_LYRA: "Lyra"
STR_THEME_LYRA_EXTENDED: "Lyra Extended"
STR_SUNLIGHT_FADING_FIX: "Napfény halványulás javítás"
STR_QUICK_RESUME_TIMEOUT: "Gyors folytatás időtúllépéskor"
STR_REMAP_FRONT_BUTTONS: "Elülső gombok átállítása"
STR_OPDS_BROWSER: "OPDS böngésző"
STR_COVER_CUSTOM: "Borító + Egyéni"
STR_QUICK_RESUME: "Gyors folytatás"
STR_MENU_RECENT_BOOKS: "Legutóbbi könyvek"
STR_REMOVE_FROM_RECENTS: "Eltávolítás a legutóbbi könyvek közül?"
STR_NO_RECENT_BOOKS: "Nincsenek legutóbbi könyvek"
STR_CALIBRE_DESC: "Calibre wireless eszköz átvitel használata"
STR_FORGET_AND_REMOVE: "Hálózat elfelejtése és mentett jelszó törlése?"
STR_FORGET_BUTTON: "Elfelejtés"
STR_CALIBRE_STARTING: "Calibre indítása..."
STR_CALIBRE_SETUP: "Beállítás"
STR_CALIBRE_STATUS: "Állapot"
STR_CLEAR_BUTTON: "Törlés"
STR_DEFAULT_VALUE: "Alapértelmezett"
STR_REMAP_PROMPT: "Nyomj meg egy elülső gombot minden szerephez"
STR_UNASSIGNED: "Hozzá nem rendelt"
STR_ALREADY_ASSIGNED: "Már hozzá van rendelve"
STR_REMAP_RESET_HINT: "Oldalsó gomb fel: Visszaállítás alapértelmezettre"
STR_REMAP_CANCEL_HINT: "Oldalsó gomb le: Átállítás megszakítása"
STR_HW_BACK_LABEL: "Vissza (1. gomb)"
STR_HW_CONFIRM_LABEL: "Megerősítés (2. gomb)"
STR_HW_LEFT_LABEL: "Bal (3. gomb)"
STR_HW_RIGHT_LABEL: "Jobb (4. gomb)"
STR_GO_TO_PERCENT: "Ugrás %-ra"
STR_GO_HOME_BUTTON: "Főoldalra"
STR_SYNC_PROGRESS: "Haladás szinkronizálása"
STR_DELETE_CACHE: "Könyv gyorsítótár törlése"
STR_DELETE: "Törlés"
STR_DISPLAY_QR: "Oldal megjelenítése QR-ként"
STR_CHAPTER_PREFIX: "Fejezet: "
STR_PAGES_SEPARATOR: " oldal | "
STR_BOOK_PREFIX: "Könyv: "
STR_CALIBRE_URL_HINT: "Calibre esetén adj /opds-t az URL-hez"
STR_PERCENT_STEP_HINT: "Bal/Jobb: 1% Fel/Le: 10%"
STR_SYNCING_TIME: "Idő szinkronizálása..."
STR_CALC_HASH: "Dokumentum hash kiszámítása..."
STR_HASH_FAILED: "Dokumentum hash kiszámítása sikertelen"
STR_FETCH_PROGRESS: "Távoli haladás lekérése..."
STR_UPLOAD_PROGRESS: "Haladás feltöltése..."
STR_NO_CREDENTIALS_MSG: "Nincsenek beállítva hitelesítő adatok"
STR_KOREADER_SETUP_HINT: "Állítsd be a KOReader fiókot a Beállításokban"
STR_PROGRESS_FOUND: "Haladás megtalálva!"
STR_REMOTE_LABEL: "Távoli:"
STR_LOCAL_LABEL: "Helyi:"
STR_PAGE_OVERALL_FORMAT: "%d. oldal, %.2f%% összesen"
STR_PAGE_TOTAL_OVERALL_FORMAT: "%d/%d. oldal, %.2f%% összesen"
STR_DEVICE_FROM_FORMAT: " Forrás: %s"
STR_APPLY_REMOTE: "Távoli haladás alkalmazása"
STR_UPLOAD_LOCAL: "Helyi haladás feltöltése"
STR_NO_REMOTE_MSG: "Nem található távoli haladás"
STR_UPLOAD_PROMPT: "Jelenlegi pozíció feltöltése?"
STR_UPLOAD_SUCCESS: "Haladás feltöltve!"
STR_SYNC_FAILED_MSG: "Szinkronizálás sikertelen"
STR_SAVE_PROGRESS_FAILED: "A haladás mentése sikertelen"
STR_SECTION_PREFIX: "Szakasz "
STR_UPLOAD: "Feltöltés"
STR_BOOK_S_STYLE: "Könyv stílusa"
STR_EMBEDDED_STYLE: "Beágyazott stílus"
STR_FOCUS_READING: "Fókuszált olvasás"
STR_OPDS_SERVER_URL: "OPDS szerver URL"
STR_FOOTNOTES: "Lábjegyzetek"
STR_NO_FOOTNOTES: "Nincsenek lábjegyzetek ezen az oldalon"
STR_LINK: "[link]"
STR_SLEEP_TIMER_VALUE_FORMAT: "%u perc"
STR_SLEEP_NEVER: "Soha"
STR_SLEEP_TIMER_STEP_HINT: "Bal/Jobb: 1 perc Fel/Le: 5 perc"
STR_SCREENSHOT_BUTTON: "Képernyőkép készítése"
STR_AUTO_TURN_ENABLED: "Automatikus lapozás bekapcsolva: "
STR_AUTO_TURN_PAGES_PER_MIN: "Automatikus lapozás (oldal/perc)"
STR_TILT_PAGE_TURN: "Döntéses lapozás"