#pragma once

#include "mesh/generated/meshtastic/device_ui.pb.h"

namespace meshtastic
{
namespace l10n
{

enum class StringKey : uint8_t {
    Back,
    OK,
    GotIt,
    WelcomeToMeshtastic,
    SwipeToNavigate,
    ClickToNavigate,
    UseSelectButton,
    DeviceRole,
    RadioPreset,
    FrequencySlot,
    LoRaRegion,
    Client,
    ClientMute,
    LostAndFound,
    Tracker,
    Hour12,
    Hour24,
    ClockAction,
    ClockFace,
    TimeFormat,
    Timezone,
    MessageAction,
    Reply,
    ViewChats,
    UnmuteChannel,
    MuteChannel,
    Delete,
    ReadAloud,
    Brightness,
    FrameVisibility,
    DisplayUnits,
    MessageBubbles,
    Theme,
    Reboot,
    Shutdown,
    SwitchToMUI,
    DisplayOptions,
    Language,
    Chinese,
    English,
    NoGPS,
    GPSoff,
    GPSnotPresent,
    GPSisDisabled,
    Node,
    Hop,
    USB,
    BT_off,
    WiFi,
    WiFiNotConnected,
    WiFiConnected,
    SSID,
    LoRaInfo,
    LoRa,
    Role,
    Freq,
    ChUtil,
    System,
    Heap,
    PSRAM,
    Flash,
    SD,
    Ver,
    Up,
    ClientApp,
    NoConnected,
    LOCKED,
    ConnectToUnlock,
    Battery,
    Resuming,
    LastHeard,
    HopsSig,
    HopsSignal,
    Nodes,
    Distance,
    Bearings,
    CreatingSSLCert,
    PleaseWait,
    CriticalFault,
    ForHelpVisit,
    Updating,
    PleaseBePatient,
    RebootInProgress,
    PowerMenu,
    SystemMenu,
    ScreenOptions,
    WifiToggle,
    BluetoothToggle,
    NodeDbReset,
    ManageNode,
    RemoveFavorite,
    AddFavorite,
    TestMenu,
    TraceRoute,
    ThrottleMessage,
    MessageViewMode,
    DeleteMessages,
    NodeNameLength,
    GPSMenu,
    GPSToggle,
    GPSFormat,
    GPSSmartPosition,
    GPSUpdateInterval,
    GPSPositionBroadcast,
    CompassNorth,
    BuzzerMode,
    HamModeConfirm,
    LicensedToNormal,
    KeyVerification,
    FinalPrompt,
    RegionUnset,
    SelectRegionMessage,
    Rebooting,
    COUNT
};

extern meshtastic_Language currentDisplayLanguage;

const char *getString(StringKey key, meshtastic_Language lang);

inline const char *getString(StringKey key)
{
    extern meshtastic_Language currentDisplayLanguage;
    return getString(key, currentDisplayLanguage);
}

} // namespace l10n
} // namespace meshtastic
