#pragma once #include // THIS FILE IS AUTO-GENERATED BY gen_i18n.py. DO NOT EDIT. // clang-format off // Forward declarations for flat string data blobs and offset tables namespace i18n_strings { extern const char STRINGS_EN_DATA[]; extern const uint16_t OFFSETS_EN[]; extern const char STRINGS_ES_DATA[]; extern const uint16_t OFFSETS_ES[]; extern const char STRINGS_FR_DATA[]; extern const uint16_t OFFSETS_FR[]; extern const char STRINGS_DE_DATA[]; extern const uint16_t OFFSETS_DE[]; extern const char STRINGS_CS_DATA[]; extern const uint16_t OFFSETS_CS[]; extern const char STRINGS_PO_DATA[]; extern const uint16_t OFFSETS_PO[]; extern const char STRINGS_RU_DATA[]; extern const uint16_t OFFSETS_RU[]; extern const char STRINGS_SV_DATA[]; extern const uint16_t OFFSETS_SV[]; extern const char STRINGS_RO_DATA[]; extern const uint16_t OFFSETS_RO[]; extern const char STRINGS_CA_DATA[]; extern const uint16_t OFFSETS_CA[]; extern const char STRINGS_UK_DATA[]; extern const uint16_t OFFSETS_UK[]; extern const char STRINGS_BE_DATA[]; extern const uint16_t OFFSETS_BE[]; extern const char STRINGS_IT_DATA[]; extern const uint16_t OFFSETS_IT[]; extern const char STRINGS_PL_DATA[]; extern const uint16_t OFFSETS_PL[]; extern const char STRINGS_FI_DATA[]; extern const uint16_t OFFSETS_FI[]; extern const char STRINGS_DA_DATA[]; extern const uint16_t OFFSETS_DA[]; extern const char STRINGS_NL_DATA[]; extern const uint16_t OFFSETS_NL[]; extern const char STRINGS_TR_DATA[]; extern const uint16_t OFFSETS_TR[]; extern const char STRINGS_KK_DATA[]; extern const uint16_t OFFSETS_KK[]; extern const char STRINGS_PT_DATA[]; extern const uint16_t OFFSETS_PT[]; } // namespace i18n_strings // Language enum enum class Language : uint8_t { EN = 0, ES = 1, FR = 2, DE = 3, CS = 4, PO = 5, RU = 6, SV = 7, RO = 8, CA = 9, UK = 10, BE = 11, IT = 12, PL = 13, FI = 14, DA = 15, NL = 16, TR = 17, KK = 18, PT = 19, _COUNT }; // Language display names (defined in I18nStrings.cpp) extern const char* const LANGUAGE_NAMES[]; // Character sets for each language (defined in I18nStrings.cpp) extern const char* const CHARACTER_SETS[]; // String IDs enum class StrId : uint16_t { STR_CROSSPOINT, STR_BOOTING, STR_SLEEPING, STR_ENTERING_SLEEP, STR_BROWSE_FILES, STR_FILE_TRANSFER, STR_SETTINGS_TITLE, STR_CONTINUE_READING, STR_NO_OPEN_BOOK, STR_START_READING, STR_NO_FILES_FOUND, STR_SELECT_CHAPTER, STR_NO_CHAPTERS, STR_END_OF_BOOK, STR_EMPTY_CHAPTER, STR_INDEXING, STR_MEMORY_ERROR, STR_PAGE_LOAD_ERROR, STR_EMPTY_FILE, STR_OUT_OF_BOUNDS, STR_LOADING, STR_LOADING_POPUP, STR_WIFI_NETWORKS, STR_NO_NETWORKS, STR_NETWORKS_FOUND, STR_SCANNING, STR_CONNECTING, STR_CONNECTED, STR_CONNECTION_FAILED, STR_FORGET_NETWORK, STR_SAVE_PASSWORD, STR_PRESS_OK_SCAN, STR_JOIN_NETWORK, STR_CREATE_HOTSPOT, STR_JOIN_DESC, STR_HOTSPOT_DESC, STR_STARTING_HOTSPOT, STR_HOTSPOT_MODE, STR_CONNECT_WIFI_HINT, STR_OPEN_URL_HINT, STR_OR_HTTP_PREFIX, STR_SCAN_QR_HINT, STR_CALIBRE_WIRELESS, STR_CALIBRE_WEB_URL, STR_NETWORK_LEGEND, STR_MAC_ADDRESS, STR_CHECKING_WIFI, STR_ENTER_WIFI_PASSWORD, STR_TO_PREFIX, STR_CALIBRE_RECEIVING, STR_CALIBRE_RECEIVED, STR_CALIBRE_INSTRUCTION_1, STR_CALIBRE_INSTRUCTION_2, STR_CALIBRE_INSTRUCTION_3, STR_CALIBRE_INSTRUCTION_4, STR_CAT_DISPLAY, STR_CAT_READER, STR_CAT_CONTROLS, STR_CAT_SYSTEM, STR_SLEEP_SCREEN, STR_SLEEP_COVER_MODE, STR_HIDE_BATTERY, STR_EXTRA_SPACING, STR_TEXT_AA, STR_IMAGES, STR_IMAGES_DISPLAY, STR_IMAGES_PLACEHOLDER, STR_IMAGES_SUPPRESS, STR_CREATE_FALLBACK_FOR_INVALID_TOC, STR_SHORT_PWR_BTN, STR_ORIENTATION, STR_SIDE_BTN_LAYOUT, STR_LONG_PRESS_SKIP, STR_FONT_FAMILY, STR_FONT_SIZE, STR_LINE_SPACING, STR_SCREEN_MARGIN, STR_PARA_ALIGNMENT, STR_HYPHENATION, STR_TIME_TO_SLEEP, STR_SHOW_HIDDEN_FILES, STR_USE_CLOCK, STR_CLOCK_SETTINGS, STR_CLOCK_SETTINGS_WARNING, STR_CLOCK, STR_CLOCK_FORMAT, STR_TIMEZONE, STR_24H, STR_12H, STR_TZ_UTC, STR_TZ_CET, STR_TZ_EET, STR_TZ_EST, STR_TZ_CST, STR_TZ_MST, STR_TZ_PST, STR_TZ_AEST, STR_TZ_NZST, STR_TZ_MSK, STR_TZ_UTC_MINUS3, STR_TZ_UTC_PLUS4, STR_TZ_IST, STR_TZ_UTC_PLUS7, STR_TZ_UTC_PLUS8, STR_TZ_UTC_PLUS9, STR_SYNC_TIME, STR_DETECT_TIMEZONE, STR_SYNCING_CLOCK, STR_DETECTING_TIMEZONE, STR_TIME_SYNCED, STR_TIME_SYNC_FAILED, STR_CLOCK_DRIFT, STR_LAST_NTP_SYNC, STR_TIMEZONE_DETECTED, STR_TIMEZONE_DETECT_FAILED, STR_DST_ACTIVE, STR_DST_INACTIVE, STR_DST_UNKNOWN, STR_REFRESH_FREQ, STR_KOREADER_SYNC, STR_CHECK_UPDATES, STR_LANGUAGE, STR_CLEAR_READING_CACHE, STR_USERNAME, STR_PASSWORD, STR_SYNC_SERVER_URL, STR_DOCUMENT_MATCHING, STR_AUTHENTICATE, STR_KOREADER_USERNAME, STR_KOREADER_PASSWORD, STR_FILENAME, STR_BINARY, STR_SET_CREDENTIALS_FIRST, STR_WIFI_CONN_FAILED, STR_AUTHENTICATING, STR_AUTH_SUCCESS, STR_KOREADER_AUTH, STR_SYNC_READY, STR_AUTH_FAILED, STR_REGISTER, STR_REGISTERING, STR_REGISTER_SUCCESS, STR_REGISTER_FAILED, STR_USERNAME_TAKEN, STR_DONE, STR_CLEAR_CACHE_WARNING_1, STR_CLEAR_CACHE_WARNING_2, STR_CLEAR_CACHE_WARNING_3, STR_CLEAR_CACHE_WARNING_4, STR_CLEARING_CACHE, STR_CACHE_CLEARED, STR_ITEMS_REMOVED, STR_FAILED_LOWER, STR_CLEAR_CACHE_FAILED, STR_CHECK_SERIAL_OUTPUT, STR_DARK, STR_LIGHT, STR_CUSTOM, STR_COVER, STR_NONE_OPT, STR_FIT, STR_CROP, STR_NEVER, STR_IN_READER, STR_ALWAYS, STR_IGNORE, STR_SLEEP, STR_PAGE_TURN, STR_PORTRAIT, STR_LANDSCAPE_CW, STR_INVERTED, STR_LANDSCAPE_CCW, STR_PREV_NEXT, STR_NEXT_PREV, STR_BOOKERLY, STR_NOTO_SANS, STR_OPEN_DYSLEXIC, STR_SMALL, STR_MEDIUM, STR_LARGE, STR_X_LARGE, STR_TIGHT, STR_NORMAL, STR_WIDE, STR_JUSTIFY, STR_ALIGN_LEFT, STR_CENTER, STR_ALIGN_RIGHT, STR_MIN_1, STR_MIN_5, STR_MIN_10, STR_MIN_15, STR_MIN_30, STR_PAGES_1, STR_PAGES_5, STR_PAGES_10, STR_PAGES_15, STR_PAGES_30, STR_UPDATE, STR_CHECKING_UPDATE, STR_NEW_UPDATE, STR_CURRENT_VERSION, STR_NEW_VERSION, STR_UPDATING, STR_NO_UPDATE, STR_UPDATE_FAILED, STR_UPDATE_COMPLETE, STR_POWER_ON_HINT, STR_NO_ENTRIES, STR_DOWNLOADING, STR_DOWNLOAD_FAILED, STR_ERROR_MSG, STR_UNNAMED, STR_NO_SERVER_URL, STR_FETCH_FEED_FAILED, STR_PARSE_FEED_FAILED, STR_NETWORK_PREFIX, STR_IP_ADDRESS_PREFIX, STR_ERROR_GENERAL_FAILURE, STR_ERROR_NETWORK_NOT_FOUND, STR_ERROR_CONNECTION_TIMEOUT, STR_SD_CARD, STR_BACK, STR_EXIT, STR_HOME, STR_SELECT, STR_SELECTED, STR_TOGGLE, STR_CONFIRM, STR_CANCEL, STR_CONNECT, STR_OPEN, STR_DOWNLOAD, STR_RETRY, STR_YES, STR_NO, STR_SHOW, STR_HIDE, STR_STATE_ON, STR_STATE_OFF, STR_NOT_SET, STR_DIR_LEFT, STR_DIR_RIGHT, STR_DIR_UP, STR_DIR_DOWN, STR_OK_BUTTON, STR_SLEEP_COVER_FILTER, STR_FILTER_CONTRAST, STR_CUSTOMISE_STATUS_BAR, STR_CHAPTER_PAGE_COUNT, STR_BOOK_PROGRESS_PERCENTAGE, STR_PROGRESS_BAR, STR_PROGRESS_BAR_THICKNESS, STR_PROGRESS_BAR_THIN, STR_PROGRESS_BAR_MEDIUM, STR_PROGRESS_BAR_THICK, STR_BOOK, STR_CHAPTER, STR_EXAMPLE_CHAPTER, STR_EXAMPLE_BOOK, STR_PREVIEW, STR_TITLE, STR_BATTERY, STR_UI_THEME, STR_THEME_CLASSIC, STR_THEME_LYRA, STR_THEME_LYRA_EXTENDED, STR_SUNLIGHT_FADING_FIX, STR_REMAP_FRONT_BUTTONS, STR_OPDS_BROWSER, STR_COVER_CUSTOM, STR_PAGE_OVERLAY, STR_MENU_RECENT_BOOKS, STR_NO_RECENT_BOOKS, STR_CALIBRE_DESC, STR_FORGET_AND_REMOVE, STR_FORGET_BUTTON, STR_CALIBRE_STARTING, STR_CALIBRE_SETUP, STR_CALIBRE_STATUS, STR_CLEAR_BUTTON, STR_DEFAULT_VALUE, STR_REMAP_PROMPT, STR_UNASSIGNED, STR_ALREADY_ASSIGNED, STR_REMAP_RESET_HINT, STR_REMAP_CANCEL_HINT, STR_HW_BACK_LABEL, STR_HW_CONFIRM_LABEL, STR_HW_LEFT_LABEL, STR_HW_RIGHT_LABEL, STR_GO_TO_PERCENT, STR_GO_HOME_BUTTON, STR_SYNC_PROGRESS, STR_DELETE_CACHE, STR_DELETE, STR_REMOVE, STR_DISPLAY_QR, STR_CHAPTER_PREFIX, STR_PAGES_SEPARATOR, STR_BOOK_PREFIX, STR_CALIBRE_URL_HINT, STR_PERCENT_STEP_HINT, STR_SYNCING_TIME, STR_CALC_HASH, STR_HASH_FAILED, STR_FETCH_PROGRESS, STR_MAPPING_REMOTE, STR_MAPPING_LOCAL, STR_UPLOAD_PROGRESS, STR_NO_CREDENTIALS_MSG, STR_KOREADER_SETUP_HINT, STR_PROGRESS_FOUND, STR_REMOTE_LABEL, STR_LOCAL_LABEL, STR_PAGE_OVERALL_FORMAT, STR_PAGE_TOTAL_OVERALL_FORMAT, STR_DEVICE_FROM_FORMAT, STR_APPLY_REMOTE, STR_UPLOAD_LOCAL, STR_NO_REMOTE_MSG, STR_UPLOAD_PROMPT, STR_UPLOAD_SUCCESS, STR_SYNC_FAILED_MSG, STR_SECTION_PREFIX, STR_UPLOAD, STR_BOOK_S_STYLE, STR_EMBEDDED_STYLE, STR_OPDS_SERVER_URL, STR_FOOTNOTES, STR_NO_FOOTNOTES, STR_LINK, STR_SCREENSHOT_BUTTON, STR_AUTO_TURN_ENABLED, STR_AUTO_TURN_PAGES_PER_MIN, STR_INFO, STR_FILE_SIZE, STR_SLEEP_COVER_OVERLAY, STR_OVERLAY_WHITE, STR_OVERLAY_GRAY, STR_OVERLAY_BLACK, STR_OVERLAY_OFF, STR_OVERLAY_READING_PROGRESS, STR_OVERLAY_READING_PROGRESS_NO_TOTAL, STR_OVERLAY_CHAPTER_PAGE_SUFFIX, STR_SYSTEM_INFO, STR_LOAD_XTC_FAILED, STR_LOAD_EPUB_FAILED, STR_FW_VERSION, STR_CHIP, STR_CPU, STR_MHZ, STR_FREE_RAM, STR_MIN_FREE, STR_MAX_BLOCK, STR_FLASH_USED, STR_UPTIME, STR_CHARGING, STR_GATHERING_DATA, STR_READING, // Sentinel - must be last _COUNT }; // Holds a flat string blob and its offset table for one language struct LangStrings { const char* data; const uint16_t* offsets; }; // Helper function to get string data for a language inline LangStrings getLanguageStrings(Language lang) { switch (lang) { case Language::EN: return {i18n_strings::STRINGS_EN_DATA, i18n_strings::OFFSETS_EN}; case Language::ES: return {i18n_strings::STRINGS_ES_DATA, i18n_strings::OFFSETS_ES}; case Language::FR: return {i18n_strings::STRINGS_FR_DATA, i18n_strings::OFFSETS_FR}; case Language::DE: return {i18n_strings::STRINGS_DE_DATA, i18n_strings::OFFSETS_DE}; case Language::CS: return {i18n_strings::STRINGS_CS_DATA, i18n_strings::OFFSETS_CS}; case Language::PO: return {i18n_strings::STRINGS_PO_DATA, i18n_strings::OFFSETS_PO}; case Language::RU: return {i18n_strings::STRINGS_RU_DATA, i18n_strings::OFFSETS_RU}; case Language::SV: return {i18n_strings::STRINGS_SV_DATA, i18n_strings::OFFSETS_SV}; case Language::RO: return {i18n_strings::STRINGS_RO_DATA, i18n_strings::OFFSETS_RO}; case Language::CA: return {i18n_strings::STRINGS_CA_DATA, i18n_strings::OFFSETS_CA}; case Language::UK: return {i18n_strings::STRINGS_UK_DATA, i18n_strings::OFFSETS_UK}; case Language::BE: return {i18n_strings::STRINGS_BE_DATA, i18n_strings::OFFSETS_BE}; case Language::IT: return {i18n_strings::STRINGS_IT_DATA, i18n_strings::OFFSETS_IT}; case Language::PL: return {i18n_strings::STRINGS_PL_DATA, i18n_strings::OFFSETS_PL}; case Language::FI: return {i18n_strings::STRINGS_FI_DATA, i18n_strings::OFFSETS_FI}; case Language::DA: return {i18n_strings::STRINGS_DA_DATA, i18n_strings::OFFSETS_DA}; case Language::NL: return {i18n_strings::STRINGS_NL_DATA, i18n_strings::OFFSETS_NL}; case Language::TR: return {i18n_strings::STRINGS_TR_DATA, i18n_strings::OFFSETS_TR}; case Language::KK: return {i18n_strings::STRINGS_KK_DATA, i18n_strings::OFFSETS_KK}; case Language::PT: return {i18n_strings::STRINGS_PT_DATA, i18n_strings::OFFSETS_PT}; default: return {i18n_strings::STRINGS_EN_DATA, i18n_strings::OFFSETS_EN}; } } // Helper function to get language count constexpr uint8_t getLanguageCount() { return static_cast(Language::_COUNT); } // Sorted language indices by code (auto-generated by gen_i18n.py) // 0: EN English // 1: BE Беларуская // 2: CA Català // 3: CS Čeština // 4: DA Dansk // 5: DE Deutsch // 6: ES Español // 7: FI Suomi // 8: FR Français // 9: IT Italiano // 10: KK Қазақша // 11: NL Nederlands // 12: PL Polski // 13: PO Português (Brasil) // 14: PT Português (Portugal) // 15: RO Română // 16: RU Русский // 17: SV Svenska // 18: TR Türkçe // 19: UK Українська constexpr uint8_t SORTED_LANGUAGE_INDICES[] = {0, 11, 9, 4, 15, 3, 1, 14, 2, 12, 18, 16, 13, 5, 19, 8, 6, 7, 17, 10}; static_assert(sizeof(SORTED_LANGUAGE_INDICES) / sizeof(SORTED_LANGUAGE_INDICES[0]) == getLanguageCount(), "SORTED_LANGUAGE_INDICES size mismatch");