mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-22 10:09:55 +01:00
moved language strings to json file
(don't forget to place languages.json in the file partition)
This commit is contained in:
56
ESP32_AP-Flasher/data/languages.json
Normal file
56
ESP32_AP-Flasher/data/languages.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"0": {
|
||||
"language": "en",
|
||||
"daysShort": ["SU", "MO", "TU", "WE", "TH", "FR", "SA"],
|
||||
"days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||
"months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
||||
},
|
||||
"1": {
|
||||
"language": "nl",
|
||||
"daysShort": ["ZO", "MA", "DI", "WO", "DO", "VR", "ZA"],
|
||||
"days": ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
|
||||
"months": ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"]
|
||||
},
|
||||
"2": {
|
||||
"language": "de",
|
||||
"daysShort": ["SO", "MO", "DI", "MI", "DO", "FR", "SA"],
|
||||
"days": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
|
||||
"months": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
|
||||
},
|
||||
"3": {
|
||||
"language": "no",
|
||||
"daysShort": ["SØ", "MA", "TI", "ON", "TO", "FR", "LØ"],
|
||||
"days": ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
|
||||
"months": ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"]
|
||||
},
|
||||
"5": {
|
||||
"language": "cz",
|
||||
"daysShort": ["NE", "PO", "ÚT", "ST", "ČT", "PÁ", "SO"],
|
||||
"days": ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"],
|
||||
"months": ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"]
|
||||
},
|
||||
"6": {
|
||||
"language": "sk",
|
||||
"daysShort": ["NE", "PO", "UT", "ST", "ŠT", "PI", "SO"],
|
||||
"days": ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"],
|
||||
"months": ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Oktober", "November", "December"]
|
||||
},
|
||||
"7": {
|
||||
"language": "pl",
|
||||
"daysShort": ["Ni", "Po", "Wt", "Śr", "Cz", "Pt", "So"],
|
||||
"days": ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"],
|
||||
"months": ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"]
|
||||
},
|
||||
"8": {
|
||||
"language": "es",
|
||||
"daysShort": ["D", "L", "MA", "MI", "J", "V", "S"],
|
||||
"days": ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
|
||||
"months": ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
|
||||
},
|
||||
"4": {
|
||||
"language": "fr",
|
||||
"daysShort": ["DI", "LU", "MA", "ME", "JE", "VE", "SA"],
|
||||
"days": ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
|
||||
"months": ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"]
|
||||
}
|
||||
}
|
||||
@@ -12,5 +12,5 @@
|
||||
"shortlut": 0,
|
||||
"options": ["button", "customlut"],
|
||||
"contentids": [ 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21 ],
|
||||
"usetemplate": 1,
|
||||
"usetemplate": 1
|
||||
}
|
||||
|
||||
@@ -14,5 +14,5 @@
|
||||
"shortlut": 0,
|
||||
"options": ["button", "led"],
|
||||
"contentids": [ 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 17, 18, 19, 20],
|
||||
"usetemplate": 31
|
||||
"usetemplate": 1
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -2,30 +2,8 @@
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
extern int defaultLanguage;
|
||||
|
||||
/*EN English language section*/
|
||||
extern String languageEnDaysShort[];
|
||||
extern String languageEnDays[];
|
||||
extern String languageEnMonth[];
|
||||
/*END English language section END*/
|
||||
|
||||
/*NL Dutch language section*/
|
||||
extern String languageNlDaysShort[];
|
||||
extern String languageNlDays[];
|
||||
extern String languageNlMonth[];
|
||||
/*END Dutch language section END*/
|
||||
|
||||
/*DE German language section*/
|
||||
extern String languageDeDaysShort[];
|
||||
extern String languageDeDays[];
|
||||
extern String languageDeMonth[];
|
||||
/*END German language section END*/
|
||||
|
||||
extern String* languageDaysShort[];
|
||||
extern String* languageDays[];
|
||||
extern String* languageMonth[];
|
||||
extern String languageDaysShort[7];
|
||||
extern String languageDays[7];
|
||||
extern String languageMonth[12];
|
||||
|
||||
extern void updateLanguageFromConfig();
|
||||
extern int getDefaultLanguage();
|
||||
extern int getCurrentLanguage();
|
||||
|
||||
@@ -624,7 +624,7 @@ void drawDate(String &filename, tagRecord *&taginfo, imgParam &imageParams) {
|
||||
const int year_number = timeinfo.tm_year + 1900;
|
||||
|
||||
if (taginfo->hwType == SOLUM_SEG_UK) {
|
||||
sprintf(imageParams.segments, "%2d%2d%-2.2s%04d", timeinfo.tm_mday, month_number + 1, languageDays[getCurrentLanguage()][timeinfo.tm_wday], year_number);
|
||||
sprintf(imageParams.segments, "%2d%2d%-2.2s%04d", timeinfo.tm_mday, month_number + 1, languageDays[timeinfo.tm_wday], year_number);
|
||||
imageParams.symbols = 0x04;
|
||||
return;
|
||||
}
|
||||
@@ -638,14 +638,14 @@ void drawDate(String &filename, tagRecord *&taginfo, imgParam &imageParams) {
|
||||
const auto &date = loc["date"];
|
||||
const auto &weekday = loc["weekday"];
|
||||
if (date) {
|
||||
drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], weekday[0], weekday[1], weekday[2], TC_DATUM, TFT_RED);
|
||||
drawString(spr, String(timeinfo.tm_mday) + " " + languageMonth[getCurrentLanguage()][timeinfo.tm_mon], date[0], date[1], date[2], TC_DATUM);
|
||||
drawString(spr, languageDays[timeinfo.tm_wday], weekday[0], weekday[1], weekday[2], TC_DATUM, TFT_RED, weekday[3]);
|
||||
drawString(spr, String(timeinfo.tm_mday) + " " + languageMonth[timeinfo.tm_mon], date[0], date[1], date[2], TC_DATUM, TFT_BLACK, date[3]);
|
||||
} else {
|
||||
const auto &month = loc["month"];
|
||||
const auto &day = loc["day"];
|
||||
drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], weekday[0], weekday[1], weekday[2], TC_DATUM, TFT_BLACK);
|
||||
drawString(spr, String(languageMonth[getCurrentLanguage()][timeinfo.tm_mon]), month[0], month[1], month[2], TC_DATUM);
|
||||
drawString(spr, String(timeinfo.tm_mday), day[0], day[1], day[2], TC_DATUM, TFT_RED);
|
||||
drawString(spr, languageDays[timeinfo.tm_wday], weekday[0], weekday[1], weekday[2], TC_DATUM, TFT_BLACK, weekday[3]);
|
||||
drawString(spr, String(languageMonth[timeinfo.tm_mon]), month[0], month[1], month[2], TC_DATUM, TFT_BLACK, month[3]);
|
||||
drawString(spr, String(timeinfo.tm_mday), day[0], day[1], day[2], TC_DATUM, TFT_RED, day[3]);
|
||||
}
|
||||
|
||||
spr2buffer(spr, filename, imageParams);
|
||||
@@ -838,7 +838,7 @@ void drawForecast(String &filename, JsonObject &cfgobj, const tagRecord *taginfo
|
||||
const time_t weatherday = (daily["time"][dag].as<time_t>() + utc_offset);
|
||||
const struct tm *datum = localtime(&weatherday);
|
||||
|
||||
drawString(spr, String(languageDaysShort[getCurrentLanguage()][datum->tm_wday]), dag * column1 + day[0].as<int>(), day[1], day[2], TC_DATUM, TFT_BLACK);
|
||||
drawString(spr, String(languageDaysShort[datum->tm_wday]), dag * column1 + day[0].as<int>(), day[1], day[2], TC_DATUM, TFT_BLACK);
|
||||
|
||||
uint8_t weathercode = daily["weathercode"][dag].as<int>();
|
||||
if (weathercode > 40) weathercode -= 40;
|
||||
|
||||
@@ -1,71 +1,18 @@
|
||||
#include "language.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <FS.h>
|
||||
|
||||
#include "settings.h"
|
||||
#include "storage.h"
|
||||
#include "tag_db.h"
|
||||
|
||||
int defaultLanguage = 0;
|
||||
String languageDaysShort[7];
|
||||
String languageDays[7];
|
||||
String languageMonth[12];
|
||||
|
||||
/*EN English language section*/
|
||||
String languageEnDaysShort[] = {"SU", "MO", "TU", "WE", "TH", "FR", "SA"};
|
||||
String languageEnDays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
||||
String languageEnMonth[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
|
||||
/*END English language section END*/
|
||||
|
||||
/*NL Dutch language section*/
|
||||
String languageNlDaysShort[] = {"ZO", "MA", "DI", "WO", "DO", "VR", "ZA"};
|
||||
String languageNlDays[] = {"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"};
|
||||
String languageNlMonth[] = {"januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"};
|
||||
/*END Dutch language section END*/
|
||||
|
||||
/*DE German language section*/
|
||||
String languageDeDaysShort[] = {"SO", "MO", "DI", "MI", "DO", "FR", "SA"};
|
||||
String languageDeDays[] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};
|
||||
String languageDeMonth[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
|
||||
/*END German language section END*/
|
||||
|
||||
/*NO Norwegian language section*/
|
||||
String languageNoDaysShort[] = {"SØ", "MA", "TI", "ON", "TO", "FR", "LØ"};
|
||||
String languageNoDays[] = {"Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"};
|
||||
String languageNoMonth[] = {"Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"};
|
||||
/*END Norwegian language section END*/
|
||||
|
||||
/*CZ Czech language section*/
|
||||
String languageCzDaysShort[] = {"NE", "PO", "ÚT", "ST", "ČT", "PÁ", "SO"};
|
||||
String languageCzDays[] = {"Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"};
|
||||
String languageCzMonth[] = {"Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"};
|
||||
/*END Czech language section END*/
|
||||
|
||||
/*SK Slovak language section*/
|
||||
String languageSkDaysShort[] = {"NE", "PO", "UT", "ST", "ŠT", "PI", "SO"};
|
||||
String languageSkDays[] = {"Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"};
|
||||
String languageSkMonth[] = {"Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Oktober", "November", "December"};
|
||||
/*END Slovak language section END*/
|
||||
|
||||
/*PL Polish language section*/
|
||||
String languagePlDaysShort[] = {"Ni", "Po", "Wt", "Śr", "Cz", "Pt", "So"};
|
||||
String languagePlDays[] = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"};
|
||||
String languagePlMonth[] = {"Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"};
|
||||
/*END Polish language section END*/
|
||||
|
||||
/*ES Spanish language section*/
|
||||
String languageEsDaysShort[] = {"D", "L", "MA", "MI", "J", "V", "S"};
|
||||
String languageEsDays[] = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"};
|
||||
String languageEsMonth[] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
|
||||
/*END Spanish language section END*/
|
||||
|
||||
/*FR French language section*/
|
||||
String languageFrDaysShort[] = {"DI", "LU", "MA", "ME", "JE", "VE", "SA"};
|
||||
String languageFrDays[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
|
||||
String languageFrMonth[] = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
|
||||
/*END French language section END*/
|
||||
|
||||
String* languageDaysShort[] = {languageEnDaysShort, languageNlDaysShort, languageDeDaysShort, languageNoDaysShort, languageFrDaysShort, languageCzDaysShort, languageSkDaysShort, languagePlDaysShort, languageEsDaysShort};
|
||||
String* languageDays[] = {languageEnDays, languageNlDays, languageDeDays, languageNoDays, languageFrDays, languageCzDays, languageSkDays, languagePlDays, languageEsDays};
|
||||
String* languageMonth[] = {languageEnMonth, languageNlMonth, languageDeMonth, languageNoMonth, languageFrMonth, languageCzMonth, languageSkMonth, languagePlMonth, languageEsMonth};
|
||||
|
||||
int currentLanguage = defaultLanguage;
|
||||
int currentLanguage = 0;
|
||||
|
||||
void updateLanguageFromConfig() {
|
||||
int tempLang = config.language;
|
||||
@@ -74,12 +21,30 @@ void updateLanguageFromConfig() {
|
||||
return;
|
||||
}
|
||||
currentLanguage = tempLang;
|
||||
|
||||
File file = contentFS->open("/languages.json", "r");
|
||||
if (!file) {
|
||||
Serial.println("Failed to open languages.json file");
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicJsonDocument doc(1024);
|
||||
StaticJsonDocument<80> filter;
|
||||
filter[String(currentLanguage)] = true;
|
||||
const DeserializationError error = deserializeJson(doc, file, DeserializationOption::Filter(filter));
|
||||
file.close();
|
||||
if (error) {
|
||||
Serial.print("Failed to parse JSON: ");
|
||||
Serial.println(error.c_str());
|
||||
return;
|
||||
}
|
||||
JsonObject languageObject = doc[String(currentLanguage)];
|
||||
for (int i = 0; i < 7; ++i) {
|
||||
languageDaysShort[i] = languageObject["daysShort"][i].as<String>();
|
||||
languageDays[i] = languageObject["days"][i].as<String>();
|
||||
}
|
||||
for (int i = 0; i < 12; ++i) {
|
||||
languageMonth[i] = languageObject["months"][i].as<String>();
|
||||
}
|
||||
}
|
||||
|
||||
int getDefaultLanguage() {
|
||||
return defaultLanguage;
|
||||
}
|
||||
|
||||
int getCurrentLanguage() {
|
||||
return currentLanguage;
|
||||
}
|
||||
|
||||
@@ -134,8 +134,12 @@ void saveDB(const String& filename) {
|
||||
fs::File existingFile = contentFS->open(filename, "r");
|
||||
if (existingFile) {
|
||||
existingFile.close();
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
String backupFilename = filename + ".bak";
|
||||
contentFS->rename(filename.c_str(), backupFilename.c_str());
|
||||
if (!contentFS->rename(filename.c_str(), backupFilename.c_str())) {
|
||||
logLine("error renaming tagDB to .bak");
|
||||
wsErr("error renaming tagDB to .bak");
|
||||
}
|
||||
}
|
||||
|
||||
fs::File file = contentFS->open(filename, "w");
|
||||
@@ -317,7 +321,7 @@ void initAPconfig() {
|
||||
if (APconfig["alias"]) strlcpy(config.alias, APconfig["alias"], sizeof(config.alias));
|
||||
config.led = APconfig["led"] | 255;
|
||||
config.tft = APconfig["tft"] | 255;
|
||||
config.language = APconfig["language"] | getDefaultLanguage();
|
||||
config.language = APconfig["language"] | 0;
|
||||
config.maxsleep = APconfig["maxsleep"] | 10;
|
||||
config.stopsleep = APconfig["stopsleep"] | 1;
|
||||
config.preview = APconfig["preview"] | 1;
|
||||
|
||||
Reference in New Issue
Block a user