113 const char*
tr(
const char* key)
const;
127 const char*
overlayTr(
const char* key)
const;
177 void registerCoreEnglishTable();
178 bool sortIfNeeded()
const;
179 const char* enLookup(
const char* key)
const;
180 const char* overlayLookup(
const char* key)
const;
181 void loadLanguageFromNvs();
182 void saveLanguageToNvs();
185 void scanAvailableLanguages();
187 bool loadActiveOverlayFile();
189 mutable std::vector<I18nEntry> en_;
190 mutable bool enSorted_ =
false;
196 struct OverlayRef {
const char* key;
const char* value; };
199 std::size_t overlayCount_ = 0;
200 std::vector<OverlayLanguage> overlayLangs_;
202 std::string currentLang_ =
"en";
208inline const char*
tr(
const char* key)
Shared RAII wrappers for firmware resources.
const std::string & getLanguageCode() const
Current language code (lower-case ISO-639-1, e.g. "en", "de").
static I18n & instance()
Singleton accessor.
void setOnLanguageChanged(LanguageChangedCallback cb)
const char * overlayTr(const char *key) const
Overlay-only lookup with no English fallback.
std::function< void()> LanguageChangedCallback
Callback invoked whenever the active translation table changes.
bool setLanguageCode(const char *code)
Set the active language by code.
bool loadOverlay()
Rescan available languages and (re)load the active overlay.
const std::vector< OverlayLanguage > & availableOverlayLanguages() const
Languages discovered on the plugins FAT (does not include "en").
void registerEnglishTable(const I18nEntry *entries, std::size_t count)
Append English entries to the lookup table.
const char * languageName(const char *code) const
Display name (endonym) for a language code, for the picker.
static constexpr const char * OVERLAY_DIR
Directory on the plugins FAT holding the per-language files.
bool init()
Initialize and load persisted language code from NVS.
const char * tr(const char *key) const
Look up a translation by key.
std::unique_ptr< T[], CapsFreeDeleter > PsramUniquePtr
Centralized key-code constants for cdc_views.
const char * tr(const char *key)
Look up a translation by string key.
Single English translation entry.
const char * en
English translation - rodata literal.
const char * key
Stable string key, e.g. "core.save" or "mod_2fa.codes".
Internationalization singleton.
std::string code
Language code, e.g. "de" (lower-case).
std::string name
Endonym for the picker (CP437-encoded), e.g. "Deutsch".