#pragma once
#include <cstdint>

// THIS FILE IS AUTO-GENERATED BY gen_i18n.py. DO NOT EDIT.

// Forward declaration for string arrays
namespace i18n_strings {
extern const char* const STRINGS_EN[];
extern const char* const STRINGS_ES[];
extern const char* const STRINGS_FR[];
extern const char* const STRINGS_DE[];
extern const char* const STRINGS_CZ[];
extern const char* const STRINGS_PO[];
extern const char* const STRINGS_RU[];
extern const char* const STRINGS_SV[];
extern const char* const STRINGS_RO[];
extern const char* const STRINGS_CA[];
extern const char* const STRINGS_UK[];
}  // namespace i18n_strings

// Language enum
enum class Language : uint8_t {
  ENGLISH = 0,
  SPANISH = 1,
  FRENCH = 2,
  GERMAN = 3,
  CZECH = 4,
  PORTUGUESE = 5,
  RUSSIAN = 6,
  SWEDISH = 7,
  ROMANIAN = 8,
  CATALAN = 9,
  UKRAINIAN = 10,
  _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_CALIBRE_LIBRARY,
  STR_CONTINUE_READING,
  STR_NO_OPEN_BOOK,
  STR_START_READING,
  STR_BOOKS,
  STR_NO_BOOKS_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_LOAD_XTC_FAILED,
  STR_LOAD_TXT_FAILED,
  STR_LOAD_EPUB_FAILED,
  STR_SD_CARD_ERROR,
  STR_WIFI_NETWORKS,
  STR_NO_NETWORKS,
  STR_NETWORKS_FOUND,
  STR_SCANNING,
  STR_CONNECTING,
  STR_CONNECTED,
  STR_CONNECTION_FAILED,
  STR_CONNECTION_TIMEOUT,
  STR_FORGET_NETWORK,
  STR_SAVE_PASSWORD,
  STR_REMOVE_PASSWORD,
  STR_PRESS_OK_SCAN,
  STR_PRESS_ANY_CONTINUE,
  STR_SELECT_HINT,
  STR_HOW_CONNECT,
  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_CONNECT_WIRELESS,
  STR_NETWORK_LEGEND,
  STR_MAC_ADDRESS,
  STR_CHECKING_WIFI,
  STR_ENTER_WIFI_PASSWORD,
  STR_ENTER_TEXT,
  STR_TO_PREFIX,
  STR_CALIBRE_DISCOVERING,
  STR_CALIBRE_CONNECTING_TO,
  STR_CALIBRE_CONNECTED_TO,
  STR_CALIBRE_WAITING_COMMANDS,
  STR_CONNECTION_FAILED_RETRYING,
  STR_CALIBRE_DISCONNECTED,
  STR_CALIBRE_WAITING_TRANSFER,
  STR_CALIBRE_TRANSFER_HINT,
  STR_CALIBRE_RECEIVING,
  STR_CALIBRE_RECEIVED,
  STR_CALIBRE_WAITING_MORE,
  STR_CALIBRE_FAILED_CREATE_FILE,
  STR_CALIBRE_PASSWORD_REQUIRED,
  STR_CALIBRE_TRANSFER_INTERRUPTED,
  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_STATUS_BAR,
  STR_HIDE_BATTERY,
  STR_EXTRA_SPACING,
  STR_TEXT_AA,
  STR_SHORT_PWR_BTN,
  STR_ORIENTATION,
  STR_FRONT_BTN_LAYOUT,
  STR_SIDE_BTN_LAYOUT,
  STR_LONG_PRESS_SKIP,
  STR_FONT_FAMILY,
  STR_EXT_READER_FONT,
  STR_EXT_CHINESE_FONT,
  STR_EXT_UI_FONT,
  STR_FONT_SIZE,
  STR_LINE_SPACING,
  STR_ASCII_LETTER_SPACING,
  STR_ASCII_DIGIT_SPACING,
  STR_CJK_SPACING,
  STR_COLOR_MODE,
  STR_SCREEN_MARGIN,
  STR_PARA_ALIGNMENT,
  STR_HYPHENATION,
  STR_TIME_TO_SLEEP,
  STR_REFRESH_FREQ,
  STR_CALIBRE_SETTINGS,
  STR_KOREADER_SYNC,
  STR_CHECK_UPDATES,
  STR_LANGUAGE,
  STR_SELECT_WALLPAPER,
  STR_CLEAR_READING_CACHE,
  STR_CALIBRE,
  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_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_NO_PROGRESS,
  STR_FULL_OPT,
  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_FRONT_LAYOUT_BCLR,
  STR_FRONT_LAYOUT_LRBC,
  STR_FRONT_LAYOUT_LBCR,
  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_EXTERNAL_FONT,
  STR_BUILTIN_DISABLED,
  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_SCAN_QR_WIFI_HINT,
  STR_ERROR_GENERAL_FAILURE,
  STR_ERROR_NETWORK_NOT_FOUND,
  STR_ERROR_CONNECTION_TIMEOUT,
  STR_SD_CARD,
  STR_BACK,
  STR_EXIT,
  STR_HOME,
  STR_SAVE,
  STR_SELECT,
  STR_TOGGLE,
  STR_CONFIRM,
  STR_CANCEL,
  STR_CONNECT,
  STR_OPEN,
  STR_DOWNLOAD,
  STR_RETRY,
  STR_YES,
  STR_NO,
  STR_STATE_ON,
  STR_STATE_OFF,
  STR_SET,
  STR_NOT_SET,
  STR_DIR_LEFT,
  STR_DIR_RIGHT,
  STR_DIR_UP,
  STR_DIR_DOWN,
  STR_CAPS_ON,
  STR_CAPS_OFF,
  STR_OK_BUTTON,
  STR_ON_MARKER,
  STR_SLEEP_COVER_FILTER,
  STR_FILTER_CONTRAST,
  STR_STATUS_BAR_FULL_PERCENT,
  STR_STATUS_BAR_FULL_BOOK,
  STR_STATUS_BAR_BOOK_ONLY,
  STR_STATUS_BAR_FULL_CHAPTER,
  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_RECENTS,
  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_CHAPTER_PREFIX,
  STR_PAGES_SEPARATOR,
  STR_BOOK_PREFIX,
  STR_KBD_SHIFT,
  STR_KBD_SHIFT_CAPS,
  STR_KBD_LOCK,
  STR_CALIBRE_URL_HINT,
  STR_PERCENT_STEP_HINT,
  STR_SYNCING_TIME,
  STR_CALC_HASH,
  STR_HASH_FAILED,
  STR_FETCH_PROGRESS,
  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_SCREENSHOT_BUTTON,
  // Sentinel - must be last
  _COUNT
};

// Helper function to get string array for a language
inline const char* const* getStringArray(Language lang) {
  switch (lang) {
    case Language::ENGLISH:
      return i18n_strings::STRINGS_EN;
    case Language::SPANISH:
      return i18n_strings::STRINGS_ES;
    case Language::FRENCH:
      return i18n_strings::STRINGS_FR;
    case Language::GERMAN:
      return i18n_strings::STRINGS_DE;
    case Language::CZECH:
      return i18n_strings::STRINGS_CZ;
    case Language::PORTUGUESE:
      return i18n_strings::STRINGS_PO;
    case Language::RUSSIAN:
      return i18n_strings::STRINGS_RU;
    case Language::SWEDISH:
      return i18n_strings::STRINGS_SV;
    case Language::ROMANIAN:
      return i18n_strings::STRINGS_RO;
    case Language::CATALAN:
      return i18n_strings::STRINGS_CA;
    case Language::UKRAINIAN:
      return i18n_strings::STRINGS_UK;
    default:
      return i18n_strings::STRINGS_EN;
  }
}

// Helper function to get language count
constexpr uint8_t getLanguageCount() { return static_cast<uint8_t>(Language::_COUNT); }
