fix: Use LOG_ macros in loc functions (#1794)

## Summary

Quick follow up to #1408. We overlooked the fact that the change wasn't
using the LOG_ macros. Also, removed redundant file.close() calls, as in
23aad21.

---

### 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? _**PARTIALLY**_
This commit is contained in:
Zach Nelson
2026-04-30 15:47:39 -05:00
committed by GitHub
parent d53c8b0e0e
commit ae865f6d08
+11 -28
View File
@@ -1,7 +1,7 @@
#include "I18n.h" #include "I18n.h"
#include <HalStorage.h> #include <HalStorage.h>
#include <HardwareSerial.h> #include <Logging.h>
#include <Serialization.h> #include <Serialization.h>
#include <string> #include <string>
@@ -59,22 +59,22 @@ void I18n::saveSettings() {
FsFile file; FsFile file;
if (!Storage.openFileForWrite("I18N", SETTINGS_FILE, file)) { if (!Storage.openFileForWrite("I18N", SETTINGS_FILE, file)) {
Serial.printf("[I18N] Failed to save settings\n"); LOG_ERR("I18N", "Failed to save settings");
return; return;
} }
serialization::writePod(file, SETTINGS_VERSION); serialization::writePod(file, SETTINGS_VERSION);
serialization::writeString(file, getLanguageCode(_language));
file.close(); const char* code = getLanguageCode(_language);
Serial.printf("[I18N] Settings saved: language=%d code=%s\n", static_cast<int>(_language), serialization::writeString(file, code);
getLanguageCode(_language));
LOG_DBG("I18N", "Settings saved: code=%s", code);
} }
void I18n::loadSettings() { void I18n::loadSettings() {
FsFile file; FsFile file;
if (!Storage.openFileForRead("I18N", SETTINGS_FILE, file)) { if (!Storage.openFileForRead("I18N", SETTINGS_FILE, file)) {
Serial.printf("[I18N] No settings file, using default (English)\n"); LOG_DBG("I18N", "No settings file, using default");
return; return;
} }
@@ -84,45 +84,28 @@ void I18n::loadSettings() {
if (version == SETTINGS_VERSION) { if (version == SETTINGS_VERSION) {
std::string code; std::string code;
serialization::readString(file, code); serialization::readString(file, code);
bool found = false;
for (uint8_t i = 0; i < getLanguageCount(); i++) { for (uint8_t i = 0; i < getLanguageCount(); i++) {
if (code == LANGUAGE_CODES[i]) { if (code == LANGUAGE_CODES[i]) {
_language = static_cast<Language>(i); _language = static_cast<Language>(i);
found = true; LOG_DBG("I18N", "Loaded language: %s", code.c_str());
break; return;
} }
} }
if (found) { LOG_ERR("I18N", "Unknown language code: %s", code.c_str());
Serial.printf("[I18N] Loaded language code: %s (%d)\n", code.c_str(), static_cast<int>(_language));
} else {
Serial.printf("[I18N] Unknown language code in settings: %s\n", code.c_str());
}
file.close();
return; return;
} }
// Legacy migration path: version 1 stored language enum index directly.
if (version == 1) { if (version == 1) {
uint8_t lang; uint8_t lang;
serialization::readPod(file, lang); serialization::readPod(file, lang);
if (lang < static_cast<size_t>(Language::_COUNT)) { if (lang < static_cast<size_t>(Language::_COUNT)) {
_language = static_cast<Language>(lang); _language = static_cast<Language>(lang);
Serial.printf("[I18N] Migrating v1 language index: %d -> %s\n", static_cast<int>(_language),
getLanguageCode(_language));
file.close();
saveSettings(); saveSettings();
return; LOG_INF("I18N", "Migrated v1 language setting");
} }
file.close();
Serial.printf("[I18N] Invalid v1 language index: %d\n", static_cast<int>(lang));
return;
} }
Serial.printf("[I18N] Settings version mismatch: %d\n", static_cast<int>(version));
file.close();
} }
// Generate character set for a specific language // Generate character set for a specific language