From 1989f547ec833ea1963ecb7b83d1ee49b7425933 Mon Sep 17 00:00:00 2001 From: Nima Salami <54304457+hajisan@users.noreply.github.com> Date: Thu, 26 Feb 2026 09:21:03 +0100 Subject: [PATCH 01/12] feat: add full Danish translation (#1146) ## Summary * **What is the goal of this PR?** (e.g., Implements the new feature for file uploading.) A Danish translation for the GUI * **What changes are included?** Everything from [`i18n.md`](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/i18n.md) --- ## Additional Context * Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on). No --- ### 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? _**< YES | PARTIALLY | NO >**_ Started translating myself, transitioned to having Claude Code do the bulk of the translation. Read every translation myself and doubled checked with a dictionary if I agreed with the translation made. --------- Co-authored-by: Arthur Tazhitdinov --- docs/i18n.md | 1 + docs/translators.md | 3 + lib/I18n/translations/danish.yaml | 320 ++++++++++++++++++++++++++++++ 3 files changed, 324 insertions(+) create mode 100644 lib/I18n/translations/danish.yaml diff --git a/docs/i18n.md b/docs/i18n.md index fdcb510c..9ff98bd6 100644 --- a/docs/i18n.md +++ b/docs/i18n.md @@ -13,6 +13,7 @@ This guide explains the multi-language support system in CrossPoint Reader. - Czech - Russian - Ukrainian +- Danish --- diff --git a/docs/translators.md b/docs/translators.md index 87b7c794..9d74048d 100644 --- a/docs/translators.md +++ b/docs/translators.md @@ -50,3 +50,6 @@ If you'd like to add your name to this list, please open a PR adding yourself an ## Belarusian - [Dexif](https://github.com/dexif) + +## Danish +- [hajisan](https://github.com/hajisan) diff --git a/lib/I18n/translations/danish.yaml b/lib/I18n/translations/danish.yaml new file mode 100644 index 00000000..a415e347 --- /dev/null +++ b/lib/I18n/translations/danish.yaml @@ -0,0 +1,320 @@ +_language_name: "Dansk" +_language_code: "DA" +_order: "15" + +STR_CROSSPOINT: "CrossPoint" +STR_BOOTING: "STARTER" +STR_SLEEPING: "HVILE" +STR_ENTERING_SLEEP: "Går i hvile" +STR_BROWSE_FILES: "Gennemsøg filer" +STR_FILE_TRANSFER: "Filoverførelse" +STR_SETTINGS_TITLE: "Indstillinger" +STR_CALIBRE_LIBRARY: "Calibre bibliotek" +STR_CONTINUE_READING: "Fortsæt med at læse" +STR_NO_OPEN_BOOK: "Ingen åben bog" +STR_START_READING: "Start læsning nedenfor" +STR_BOOKS: "Bøger" +STR_NO_BOOKS_FOUND: "Ingen bøger fundet" +STR_SELECT_CHAPTER: "Vælg kapitel" +STR_NO_CHAPTERS: "Ingen kapitler" +STR_END_OF_BOOK: "Bogen er færdig" +STR_EMPTY_CHAPTER: "Tomt kapitel" +STR_INDEXING: "Indekserer" +STR_MEMORY_ERROR: "Hukommelsesfejl" +STR_PAGE_LOAD_ERROR: "Fejl ved sideindlæsning" +STR_EMPTY_FILE: "Tom fil" +STR_OUT_OF_BOUNDS: "Uden for grænsen" +STR_LOADING: "Indlæser..." +STR_LOADING_POPUP: "Indlæser" +STR_LOAD_XTC_FAILED: "Mislykkedes at indlæse XTC" +STR_LOAD_TXT_FAILED: "Mislykkedes at indlæse TXT" +STR_LOAD_EPUB_FAILED: "Mislykkedes at indlæse EPUB" +STR_SD_CARD_ERROR: "SD kort fejl" +STR_WIFI_NETWORKS: "Trådløse netværk" +STR_NO_NETWORKS: "Intet netværk fundet" +STR_NETWORKS_FOUND: "%zu netværk fundet" +STR_SCANNING: "Skanner..." +STR_CONNECTING: "Forbinder..." +STR_CONNECTED: "Forbundet!" +STR_CONNECTION_FAILED: "Forbindelsen mislykkedes" +STR_CONNECTION_TIMEOUT: "Forbindelses timeout" +STR_FORGET_NETWORK: "Glem netværk?" +STR_SAVE_PASSWORD: "Gem adgangskode til næste gang?" +STR_REMOVE_PASSWORD: "Fjern gemt adgangskode?" +STR_PRESS_OK_SCAN: "Tryk OK for at scanne igen" +STR_PRESS_ANY_CONTINUE: "Tryk på en knap for at fortsætte" +STR_SELECT_HINT: "VENSTRE/HØJRE: Vælg | OK: Bekræft" +STR_HOW_CONNECT: "Hvordan vil du oprette forbindelse?" +STR_JOIN_NETWORK: "Tilslut netværk" +STR_CREATE_HOTSPOT: "Opret Hotspot" +STR_JOIN_DESC: "Opret forbindelse til et eksisterende WiFi-netværk" +STR_HOTSPOT_DESC: "Opret et WiFi-netværk andre kan tilslutte sig" +STR_STARTING_HOTSPOT: "Starter Hotspot..." +STR_HOTSPOT_MODE: "Hotspot-tilstand" +STR_CONNECT_WIFI_HINT: "Opret forbindelse fra din enhed til dette WiFi-netværk" +STR_OPEN_URL_HINT: "Åbn denne URL i din browser" +STR_OR_HTTP_PREFIX: "eller http://" +STR_SCAN_QR_HINT: "eller scan QR-kode med din telefon:" +STR_CALIBRE_WIRELESS: "Calibre Wireless" +STR_CALIBRE_WEB_URL: "Calibre Web URL" +STR_CONNECT_WIRELESS: "Opret forbindelse som trådløs enhed" +STR_NETWORK_LEGEND: "* = Krypteret | + = Gemt" +STR_MAC_ADDRESS: "MAC-adresse:" +STR_CHECKING_WIFI: "Tjekker WiFi..." +STR_ENTER_WIFI_PASSWORD: "Indtast WiFi-adgangskode" +STR_ENTER_TEXT: "Indtast tekst" +STR_TO_PREFIX: "til " +STR_CALIBRE_DISCOVERING: "Opdager Calibre..." +STR_CALIBRE_CONNECTING_TO: "Forbinder til " +STR_CALIBRE_CONNECTED_TO: "Forbundet til " +STR_CALIBRE_WAITING_COMMANDS: "Venter på kommandoer..." +STR_CONNECTION_FAILED_RETRYING: "(Forbindelsen mislykkedes, prøver igen)" +STR_CALIBRE_DISCONNECTED: "Calibre afbrudt" +STR_CALIBRE_WAITING_TRANSFER: "Venter på overførelse..." +STR_CALIBRE_TRANSFER_HINT: "Hvis overførslen mislykkes, aktiver\\n'Ignorer ledig plads' i Calibres\\nSmartDevice-plugin-indstillinger." +STR_CALIBRE_RECEIVING: "Modtager: " +STR_CALIBRE_RECEIVED: "Modtaget: " +STR_CALIBRE_WAITING_MORE: "Venter på mere..." +STR_CALIBRE_FAILED_CREATE_FILE: "Kunne ikke oprette fil" +STR_CALIBRE_PASSWORD_REQUIRED: "Adgangskode påkrævet" +STR_CALIBRE_TRANSFER_INTERRUPTED: "Overførelse afbrudt" +STR_CALIBRE_INSTRUCTION_1: "1) Installer CrossPoint Reader-plugin" +STR_CALIBRE_INSTRUCTION_2: "2) Vær på det samme WiFi-netværk" +STR_CALIBRE_INSTRUCTION_3: "3) I Calibre: \"Send til enhed\"" +STR_CALIBRE_INSTRUCTION_4: "\"Hold denne skærm åben under afsendelse\"" +STR_CAT_DISPLAY: "Skærm" +STR_CAT_READER: "Læser" +STR_CAT_CONTROLS: "Brugerflade" +STR_CAT_SYSTEM: "System" +STR_SLEEP_SCREEN: "Hvile-skærm" +STR_SLEEP_COVER_MODE: "Hvile-skærm omslag-tilstand" +STR_STATUS_BAR: "Statuslinje" +STR_HIDE_BATTERY: "Skjul batteri %" +STR_EXTRA_SPACING: "Ekstra afsnitsafstand" +STR_TEXT_AA: "Tekst Anti-Aliasing" +STR_SHORT_PWR_BTN: "Kort tryk på tænd/sluk-knap" +STR_ORIENTATION: "Læseretning" +STR_FRONT_BTN_LAYOUT: "Knaplayout foran" +STR_SIDE_BTN_LAYOUT: "Knaplayout på siden (læser)" +STR_LONG_PRESS_SKIP: "Langt tryk spring kapitel over" +STR_FONT_FAMILY: "Læser skrifttype" +STR_EXT_READER_FONT: "Ekstern læserskrifttype" +STR_EXT_CHINESE_FONT: "Læserskrifttype" +STR_EXT_UI_FONT: "Brugergrænseflade skrifttype" +STR_FONT_SIZE: "Brugergrænseflade skriftstørrelse" +STR_LINE_SPACING: "Linjeafstand" +STR_ASCII_LETTER_SPACING: "ASCII bogstavafstand" +STR_ASCII_DIGIT_SPACING: "ASCII cifreafstand" +STR_CJK_SPACING: "CJK afstand" +STR_COLOR_MODE: "Farvetilstand" +STR_SCREEN_MARGIN: "Skærmmargen" +STR_PARA_ALIGNMENT: "Afsnitsjustering" +STR_HYPHENATION: "Orddeling" +STR_TIME_TO_SLEEP: "Tid til hvile" +STR_REFRESH_FREQ: "Opdateringsfrekvens" +STR_CALIBRE_SETTINGS: "Calibre-indstillinger" +STR_KOREADER_SYNC: "KOReader Sync" +STR_CHECK_UPDATES: "Søg efter opdateringer" +STR_LANGUAGE: "Sprog" +STR_SELECT_WALLPAPER: "Vælg baggrundsbillede" +STR_CLEAR_READING_CACHE: "Ryd læsecache" +STR_CALIBRE: "Calibre" +STR_USERNAME: "Brugernavn" +STR_PASSWORD: "Adgangskode" +STR_SYNC_SERVER_URL: "Synkroniseringsserver-URL" +STR_DOCUMENT_MATCHING: "Dokumentsammenkobling" +STR_AUTHENTICATE: "Godkend" +STR_KOREADER_USERNAME: "KOReader brugernavn" +STR_KOREADER_PASSWORD: "KOReader adgangskode" +STR_FILENAME: "Filnavn" +STR_BINARY: "Binær" +STR_SET_CREDENTIALS_FIRST: "Angiv legitimationsoplysninger først" +STR_WIFI_CONN_FAILED: "WiFi-forbindelsen mislykkedes" +STR_AUTHENTICATING: "Godkender..." +STR_AUTH_SUCCESS: "Godkendt!" +STR_KOREADER_AUTH: "KOReader-godkendelse" +STR_SYNC_READY: "KOReader-synkronisering er klar til brug" +STR_AUTH_FAILED: "Godkendelse mislykkedes" +STR_DONE: "Færdig" +STR_CLEAR_CACHE_WARNING_1: "Dette vil rydde alle cachelagrede bogdata." +STR_CLEAR_CACHE_WARNING_2: "Al læsefremskridt vil gå tabt!" +STR_CLEAR_CACHE_WARNING_3: "Bøger skal indekseres igen" +STR_CLEAR_CACHE_WARNING_4: "når de åbnes igen." +STR_CLEARING_CACHE: "Rydder cache..." +STR_CACHE_CLEARED: "Cache ryddet" +STR_ITEMS_REMOVED: "elementer fjernet" +STR_FAILED_LOWER: "mislykkedes" +STR_CLEAR_CACHE_FAILED: "Kunne ikke rydde cache" +STR_CHECK_SERIAL_OUTPUT: "Tjek serielt output for detaljer" +STR_DARK: "Mørk" +STR_LIGHT: "Lys" +STR_CUSTOM: "Brugerdefineret" +STR_COVER: "Omslag" +STR_NONE_OPT: "Ingen" +STR_FIT: "Tilpas" +STR_CROP: "Beskær" +STR_NO_PROGRESS: "Ingen fremskridt" +STR_FULL_OPT: "Fuld" +STR_NEVER: "Aldrig" +STR_IN_READER: "I læseren" +STR_ALWAYS: "Altid" +STR_IGNORE: "Ignorer" +STR_SLEEP: "Hvile" +STR_PAGE_TURN: "Sideskift" +STR_PORTRAIT: "Portræt" +STR_LANDSCAPE_CW: "Liggende med uret" +STR_INVERTED: "Inverteret" +STR_LANDSCAPE_CCW: "Liggende mod uret" +STR_FRONT_LAYOUT_BCLR: "Bck, Cnfrm, Lft, Rght" +STR_FRONT_LAYOUT_LRBC: "Lft, Rght, Bck, Cnfrm" +STR_FRONT_LAYOUT_LBCR: "Lft, Bck, Cnfrm, Rght" +STR_PREV_NEXT: "Forrige/Næste" +STR_NEXT_PREV: "Næste/Forrige" +STR_BOOKERLY: "Bookerly" +STR_NOTO_SANS: "Noto Sans" +STR_OPEN_DYSLEXIC: "Open Dyslexic" +STR_SMALL: "Lille" +STR_MEDIUM: "Mellem" +STR_LARGE: "Stor" +STR_X_LARGE: "Ekstra stor" +STR_TIGHT: "Tæt" +STR_NORMAL: "Normal" +STR_WIDE: "Bred" +STR_JUSTIFY: "Justeret" +STR_ALIGN_LEFT: "Venstre" +STR_CENTER: "Centreret" +STR_ALIGN_RIGHT: "Højre" +STR_MIN_1: "1 min" +STR_MIN_5: "5 min" +STR_MIN_10: "10 min" +STR_MIN_15: "15 min" +STR_MIN_30: "30 min" +STR_PAGES_1: "1 side" +STR_PAGES_5: "5 sider" +STR_PAGES_10: "10 sider" +STR_PAGES_15: "15 sider" +STR_PAGES_30: "30 sider" +STR_UPDATE: "Opdater" +STR_CHECKING_UPDATE: "Søger efter opdatering..." +STR_NEW_UPDATE: "Ny opdatering tilgængelig!" +STR_CURRENT_VERSION: "Nuværende version: " +STR_NEW_VERSION: "Ny version: " +STR_UPDATING: "Opdaterer..." +STR_NO_UPDATE: "Ingen opdatering tilgængelig" +STR_UPDATE_FAILED: "Opdatering mislykkedes" +STR_UPDATE_COMPLETE: "Opdatering færdig" +STR_POWER_ON_HINT: "Hold tænd/sluk-knappen nede for at tænde igen" +STR_EXTERNAL_FONT: "Ekstern skrifttype" +STR_BUILTIN_DISABLED: "Indbygget (deaktiveret)" +STR_NO_ENTRIES: "Ingen poster fundet" +STR_DOWNLOADING: "Downloader..." +STR_DOWNLOAD_FAILED: "Download mislykkedes" +STR_ERROR_MSG: "Fejl:" +STR_UNNAMED: "Unavngivet" +STR_NO_SERVER_URL: "Ingen server-URL konfigureret" +STR_FETCH_FEED_FAILED: "Kunne ikke hente feed" +STR_PARSE_FEED_FAILED: "Kunne ikke fortolke feed" +STR_NETWORK_PREFIX: "Netværk: " +STR_IP_ADDRESS_PREFIX: "IP-adresse: " +STR_SCAN_QR_WIFI_HINT: "eller scan QR-kode med din telefon for at oprette forbindelse til WiFi." +STR_ERROR_GENERAL_FAILURE: "Fejl: Generel fejl" +STR_ERROR_NETWORK_NOT_FOUND: "Fejl: Netværk ikke fundet" +STR_ERROR_CONNECTION_TIMEOUT: "Fejl: Forbindelses timeout" +STR_SD_CARD: "SD-kort" +STR_BACK: "« Tilbage" +STR_EXIT: "« Afslut" +STR_HOME: "« Hjem" +STR_SAVE: "« Gem" +STR_SELECT: "Vælg" +STR_TOGGLE: "Skift" +STR_CONFIRM: "Bekræft" +STR_CANCEL: "Annuller" +STR_CONNECT: "Forbind" +STR_OPEN: "Åbn" +STR_DOWNLOAD: "Download" +STR_RETRY: "Prøv igen" +STR_YES: "Ja" +STR_NO: "Nej" +STR_STATE_ON: "TÆNDT" +STR_STATE_OFF: "SLUKKET" +STR_SET: "Indstil" +STR_NOT_SET: "Ikke indstillet" +STR_DIR_LEFT: "Venstre" +STR_DIR_RIGHT: "Højre" +STR_DIR_UP: "Op" +STR_DIR_DOWN: "Ned" +STR_CAPS_ON: "CAPS" +STR_CAPS_OFF: "caps" +STR_OK_BUTTON: "OK" +STR_ON_MARKER: "[ON]" +STR_SLEEP_COVER_FILTER: "Hvile-skærm omslag-filter" +STR_FILTER_CONTRAST: "Kontrast" +STR_STATUS_BAR_FULL_PERCENT: "Fuld m/ procent" +STR_STATUS_BAR_FULL_BOOK: "Fuld m/ boglinje" +STR_STATUS_BAR_BOOK_ONLY: "Kun boglinje" +STR_STATUS_BAR_FULL_CHAPTER: "Fuld m/ kapitellinje" +STR_UI_THEME: "Brugergrænseflade tema" +STR_THEME_CLASSIC: "Klassisk" +STR_THEME_LYRA: "Lyra" +STR_THEME_LYRA_EXTENDED: "Lyra Extended" +STR_SUNLIGHT_FADING_FIX: "Sollysfading-rettelse" +STR_REMAP_FRONT_BUTTONS: "Omtildel frontknapper" +STR_OPDS_BROWSER: "OPDS Browser" +STR_COVER_CUSTOM: "Omslag + Brugerdefineret" +STR_RECENTS: "Seneste" +STR_MENU_RECENT_BOOKS: "Seneste bøger" +STR_NO_RECENT_BOOKS: "Ingen seneste bøger" +STR_CALIBRE_DESC: "Brug Calibre trådløs enhedsoverførelse" +STR_FORGET_AND_REMOVE: "Glem netværk og fjern gemt adgangskode?" +STR_FORGET_BUTTON: "Glem" +STR_CALIBRE_STARTING: "Starter Calibre..." +STR_CALIBRE_SETUP: "Opsætning" +STR_CALIBRE_STATUS: "Status" +STR_CLEAR_BUTTON: "Ryd" +STR_DEFAULT_VALUE: "Standard" +STR_REMAP_PROMPT: "Tryk på en frontknap for hver rolle" +STR_UNASSIGNED: "Ikke tildelt" +STR_ALREADY_ASSIGNED: "Allerede tildelt" +STR_REMAP_RESET_HINT: "Sideknap op: Nulstil til standardlayout" +STR_REMAP_CANCEL_HINT: "Sideknap ned: Annuller omtildeling" +STR_HW_BACK_LABEL: "Tilbage (1. knap)" +STR_HW_CONFIRM_LABEL: "Bekræft (2. knap)" +STR_HW_LEFT_LABEL: "Venstre (3. knap)" +STR_HW_RIGHT_LABEL: "Højre (4. knap)" +STR_GO_TO_PERCENT: "Gå til %" +STR_GO_HOME_BUTTON: "Gå til start" +STR_SYNC_PROGRESS: "Synkroniser fremskridt" +STR_DELETE_CACHE: "Slet bogcache" +STR_CHAPTER_PREFIX: "Kapitel: " +STR_PAGES_SEPARATOR: " sider | " +STR_BOOK_PREFIX: "Bog: " +STR_KBD_SHIFT: "shift" +STR_KBD_SHIFT_CAPS: "SHIFT" +STR_KBD_LOCK: "LOCK" +STR_CALIBRE_URL_HINT: "Tilføj /opds til din URL for Calibre" +STR_PERCENT_STEP_HINT: "Venstre/Højre: 1% Op/Ned: 10%" +STR_SYNCING_TIME: "Synkroniserer tid..." +STR_CALC_HASH: "Beregner dokument-hash..." +STR_HASH_FAILED: "Kunne ikke beregne dokument-hash" +STR_FETCH_PROGRESS: "Henter fjernfremskridt..." +STR_UPLOAD_PROGRESS: "Uploader fremskridt..." +STR_NO_CREDENTIALS_MSG: "Ingen legitimationsoplysninger konfigureret" +STR_KOREADER_SETUP_HINT: "Opsæt KOReader-konto i Indstillinger" +STR_PROGRESS_FOUND: "Fremskridt fundet!" +STR_REMOTE_LABEL: "Ekstern:" +STR_LOCAL_LABEL: "Lokal:" +STR_PAGE_OVERALL_FORMAT: "Side %d, %.2f%% samlet" +STR_PAGE_TOTAL_OVERALL_FORMAT: "Side %d/%d, %.2f%% samlet" +STR_DEVICE_FROM_FORMAT: " Fra: %s" +STR_APPLY_REMOTE: "Anvend fjernfremskridt" +STR_UPLOAD_LOCAL: "Upload lokalt fremskridt" +STR_NO_REMOTE_MSG: "Ingen fjernfremskridt fundet" +STR_UPLOAD_PROMPT: "Upload nuværende position?" +STR_UPLOAD_SUCCESS: "Fremskridt uploadet!" +STR_SYNC_FAILED_MSG: "Synkronisering mislykkedes" +STR_SECTION_PREFIX: "Afsnit " +STR_UPLOAD: "Upload" +STR_BOOK_S_STYLE: "Bogens stil" +STR_EMBEDDED_STYLE: "Indlejret stil" +STR_OPDS_SERVER_URL: "OPDS Server URL" +STR_SCREENSHOT_BUTTON: "Tag skærmbillede" \ No newline at end of file From 9b59ac11255a572bf4eb913ffa568e980f097f1a Mon Sep 17 00:00:00 2001 From: ariel-lindemann <41641978+ariel-lindemann@users.noreply.github.com> Date: Thu, 26 Feb 2026 09:22:30 +0100 Subject: [PATCH 02/12] fix: add missing romanian strings (#1187) ## Summary * **What is the goal of this PR?** (e.g., Implements the new feature for file uploading.) Romanian translations for newly added strings. * **What changes are included?** Only the translations --- ### 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? _**< NO >**_ --- lib/I18n/translations/romanian.yaml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/I18n/translations/romanian.yaml b/lib/I18n/translations/romanian.yaml index 6266ed26..a6aa8e48 100644 --- a/lib/I18n/translations/romanian.yaml +++ b/lib/I18n/translations/romanian.yaml @@ -235,6 +235,8 @@ STR_DOWNLOAD: "Descarcă" STR_RETRY: "Reîncercare" STR_YES: "Da" STR_NO: "Nu" +STR_SHOW: "Afișează" +STR_HIDE: "Ascunde" STR_STATE_ON: "Pornit" STR_STATE_OFF: "Oprit" STR_SET: "Setare" @@ -249,6 +251,21 @@ STR_OK_BUTTON: "OK" STR_ON_MARKER: "[ON]" STR_SLEEP_COVER_FILTER: "Filtru ecran de repaus" STR_FILTER_CONTRAST: "Contrast" +STR_CUSTOMISE_STATUS_BAR: "Customizaţi bara de stare" +STR_CHAPTER_PAGE_COUNT: "Număr de pagini în capitol" +STR_BOOK_PROGRESS_PERCENTAGE: "Progres carte procentual" +STR_PROGRESS_BAR: "Bară de progres" +STR_PROGRESS_BAR_THICKNESS: "Grosime bară de progres" +STR_PROGRESS_BAR_THIN: "Subţire" +STR_PROGRESS_BAR_MEDIUM: "Medie" +STR_PROGRESS_BAR_THICK: "Groasă" +STR_BOOK: "Carte" +STR_CHAPTER: "Capitol" +STR_EXAMPLE_CHAPTER: "Capitolul 21" +STR_EXAMPLE_BOOK: "Titlul cărţii" +STR_PREVIEW: "Previzualizare" +STR_TITLE: "Titlu" +STR_BATTERY: "Baterie" STR_UI_THEME: "Tema UI" STR_THEME_CLASSIC: "Clasic" STR_THEME_LYRA: "Lyra" @@ -281,7 +298,7 @@ STR_GO_TO_PERCENT: "Săriţi la %" STR_GO_HOME_BUTTON: "Acasă" STR_SYNC_PROGRESS: "Progres sincronizare" STR_DELETE_CACHE: "Ştergere cache cărţi" -STR_CHAPTER_PREFIX: "Capitol: " +STR_DISPLAY_QR: "Afișați pagina ca cod QR" STR_PAGES_SEPARATOR: " pagini | " STR_BOOK_PREFIX: "Carte: " STR_KBD_SHIFT: "shift" From 35f324ccceb09993766afa6f1691628354410226 Mon Sep 17 00:00:00 2001 From: ariel-lindemann <41641978+ariel-lindemann@users.noreply.github.com> Date: Thu, 26 Feb 2026 09:25:34 +0100 Subject: [PATCH 03/12] fix: broken translations in status bar settings (#1188) ## Summary * **What is the goal of this PR?** (e.g., Implements the new feature for file uploading.) The strings for `Show` and `Hide` were always showing in English, regardless of which language was selected. * **What changes are included?** Replace the variables in the lambda by direct calls to the `tr` macro ## Additional Context * Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on). --- ### 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? _****_ --- src/activities/settings/StatusBarSettingsActivity.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/activities/settings/StatusBarSettingsActivity.cpp b/src/activities/settings/StatusBarSettingsActivity.cpp index 675f73dc..f216b941 100644 --- a/src/activities/settings/StatusBarSettingsActivity.cpp +++ b/src/activities/settings/StatusBarSettingsActivity.cpp @@ -28,9 +28,6 @@ const StrId progressBarThicknessNames[PROGRESS_BAR_THICKNESS_ITEMS] = { constexpr int TITLE_ITEMS = 3; const StrId titleNames[TITLE_ITEMS] = {StrId::STR_BOOK, StrId::STR_CHAPTER, StrId::STR_HIDE}; -const char* translatedShow = tr(STR_SHOW); -const char* translatedHide = tr(STR_HIDE); - const int widthMargin = 10; const int verticalPreviewPadding = 50; const int verticalPreviewTextPadding = 40; @@ -135,9 +132,9 @@ void StatusBarSettingsActivity::render(Activity::RenderLock&&) { [this](int index) { // Draw status for each setting if (index == 0) { - return SETTINGS.statusBarChapterPageCount ? translatedShow : translatedHide; + return SETTINGS.statusBarChapterPageCount ? tr(STR_SHOW) : tr(STR_HIDE); } else if (index == 1) { - return SETTINGS.statusBarBookProgressPercentage ? translatedShow : translatedHide; + return SETTINGS.statusBarBookProgressPercentage ? tr(STR_SHOW) : tr(STR_HIDE); } else if (index == 2) { return I18N.get(progressBarNames[SETTINGS.statusBarProgressBar]); } else if (index == 3) { @@ -145,9 +142,9 @@ void StatusBarSettingsActivity::render(Activity::RenderLock&&) { } else if (index == 4) { return I18N.get(titleNames[SETTINGS.statusBarTitle]); } else if (index == 5) { - return SETTINGS.statusBarBattery ? translatedShow : translatedHide; + return SETTINGS.statusBarBattery ? tr(STR_SHOW) : tr(STR_HIDE); } else { - return translatedHide; + return tr(STR_HIDE); } }, true); From e107493bed4ca281c2503bc18d2a4f29b0111dfd Mon Sep 17 00:00:00 2001 From: Uri Tauber <142022451+Uri-Tauber@users.noreply.github.com> Date: Thu, 26 Feb 2026 16:47:34 +0200 Subject: [PATCH 04/12] feat: slim footnotes support (#1031) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary **What is the goal of this PR?** Implement support for footnotes in epub files. It is based on #553, but simplified — removed the parts which complicated the code and burden the CPU/RAM. This version supports basic footnotes and lets the user jump from location to location inside the epub. **What changes are included?** - `FootnoteEntry` struct — A small POD struct (number[24], href[64]) shared between parser, page storage, and UI. - Parser: `` detection (`ChapterHtmlSlimParser`) — During a single parsing pass, internal epub links are detected and collected as footnotes. The link text is underlined to hint navigability. Bracket/whitespace normalization is applied to the display label (e.g. [1] → 1). - Footnote-to-page assignment (`ChapterHtmlSlimParser`, `Page`) — Footnotes are attached to the exact page where their anchor word appears, tracked via a cumulative word counter during layout, surviving paragraph splits and the 750-word mid-paragraph safety flush. - Page serialization (`Page`, `Section`) — Footnotes are serialized/deserialized per page (max 16 per page). Section cache version bumped to 14 to force a clean rebuild. - Href → spine resolution (`Epub`) — `resolveHrefToSpineIndex()` maps an href (e.g. `chapter2.xhtml#note1`) to its spine index by filename matching. - Footnotes menu + activity (`EpubReaderMenuActivity`, `EpubReaderFootnotesActivity`) — A new "Footnotes" entry in the reader menu lists all footnote links found on the current page. The user scrolls and selects to navigate. - Navigate & restore (`EpubReaderActivity`) — `navigateToHref()` saves the current spine index and page number, then jumps to the target. The Back button restores the saved position when the user is done reading the footnote. **Additional Context** **What was removed vs #553:** virtual spine items (`addVirtualSpineItem`, `isVirtualSpineItem`), two-pass parsing, `