## New features - Implement translations for apps - Created `tt::settings::setLanguage` and `::getLanguage()` - External app errors are now reported to the user via an AlertDialog - Store system settings in `/data/settings.properties` - Created a "Region & Language" app and moved the timezone setting there. ## Other changes - Change `/data` and `/system` filesystem sector size from 4096 to 512 bytes to allow for more small files (60+ files of 4kB were over the limit of 256kB for the filesystem) - Increased size of `/data` and `/system` - Moved `tt::time::*` to `tt::settings` - Removed the timezone setting from the "Time & Date" setting app - Reverse encoder direction of Lilygo T-Lora Pager - Improved partability of `Time.cpp` (removed separate set of functions for PC/sim)
66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
#include <Tactility/Log.h>
|
|
#include <Tactility/settings/Language.h>
|
|
#include <utility>
|
|
#include <Tactility/settings/SettingsProperties.h>
|
|
|
|
namespace tt::settings {
|
|
|
|
constexpr auto* TAG = "Language";
|
|
|
|
void setLanguage(Language newLanguage) {
|
|
SettingsProperties properties;
|
|
if (!loadSettingsProperties(properties)) {
|
|
return;
|
|
}
|
|
|
|
properties.language = newLanguage;
|
|
saveSettingsProperties(properties);
|
|
}
|
|
|
|
Language getLanguage() {
|
|
SettingsProperties properties;
|
|
if (!loadSettingsProperties(properties)) {
|
|
return Language::en_US;
|
|
} else {
|
|
return properties.language;
|
|
}
|
|
}
|
|
|
|
std::string toString(Language language) {
|
|
switch (language) {
|
|
case Language::en_GB:
|
|
return "en-GB";
|
|
case Language::en_US:
|
|
return "en-US";
|
|
case Language::fr_FR:
|
|
return "fr-FR";
|
|
case Language::nl_BE:
|
|
return "nl-BE";
|
|
case Language::nl_NL:
|
|
return "nl-NL";
|
|
default:
|
|
TT_LOG_E(TAG, "Missing serialization for language %d", static_cast<int>(language));
|
|
std::unreachable();
|
|
}
|
|
}
|
|
|
|
bool fromString(const std::string& text, Language& language) {
|
|
if (text == "en-GB") {
|
|
language = Language::en_GB;
|
|
} else if (text == "en-US") {
|
|
language = Language::en_US;
|
|
} else if (text == "fr-FR") {
|
|
language = Language::fr_FR;
|
|
} else if (text == "nl-BE") {
|
|
language = Language::nl_BE;
|
|
} else if (text == "nl-NL") {
|
|
language = Language::nl_NL;
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|