Browse Source

add i18n for mono displays 128x64 and 84x48

pull/1778/head
you69man 1 year ago
parent
commit
7711ed7dce
  1. 1
      src/plugins/Display/Display.h
  2. 4
      src/plugins/Display/Display_Mono_128X64.h
  3. 4
      src/plugins/Display/Display_Mono_84X48.h
  4. 18
      src/plugins/plugin_lang.h
  5. 32
      src/utils/helper.cpp
  6. 1
      src/utils/helper.h

1
src/plugins/Display/Display.h

@ -9,6 +9,7 @@
#include "../../hm/hmSystem.h"
#include "../../hm/hmRadio.h"
#include "../../utils/helper.h"
#include "../plugin_lang.h"
#include "Display_Mono.h"
#include "Display_Mono_128X32.h"
#include "Display_Mono_128X64.h"

4
src/plugins/Display/Display_Mono_128X64.h

@ -93,7 +93,7 @@ class DisplayMono128X64 : public DisplayMono {
// print Date and time
if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort(mDisplayData->utcTs).c_str(), l_Time, 0xff);
printText(ah::getDateTimeStrShort_i18n(mDisplayData->utcTs).c_str(), l_Time, 0xff);
if (showLine(l_Status)) {
// alternatively:
@ -145,7 +145,7 @@ class DisplayMono128X64 : public DisplayMono {
printText(mFmtText, l_TotalPower, 0xff);
} else {
printText("offline", l_TotalPower, 0xff);
printText(STR_OFFLINE, l_TotalPower, 0xff);
}
}

4
src/plugins/Display/Display_Mono_84X48.h

@ -78,7 +78,7 @@ class DisplayMono84X48 : public DisplayMono {
// print Date and time
if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort(mDisplayData->utcTs).c_str(), l_Time, 0xff);
printText(ah::getDateTimeStrShort_i18n(mDisplayData->utcTs).c_str(), l_Time, 0xff);
if (showLine(l_Status)) {
// alternatively:
@ -111,7 +111,7 @@ class DisplayMono84X48 : public DisplayMono {
printText(mFmtText, l_TotalPower, 0xff);
} else {
printText("offline", l_TotalPower, 0xff);
printText(STR_OFFLINE, l_TotalPower, 0xff);
}
}

18
src/plugins/plugin_lang.h

@ -0,0 +1,18 @@
//-----------------------------------------------------------------------------
// 2024 Ahoy, https://ahoydtu.de
// Creative Commons - http://creativecommons.org/licenses/by-nc-sa/4.0/deed
//-----------------------------------------------------------------------------
#ifndef __PLUGIN_LANG_H__
#define __PLUGIN_LANG_H__
#ifdef LANG_DE
#define STR_MONTHNAME_3_CHAR_LIST "ErrJanFebMrzAprMaiJunJulAugSepOktNovDez"
#define STR_DAYNAME_3_CHAR_LIST "ErrSonMonDieMitDonFreSam"
#define STR_OFFLINE "-- AUS --"
#else
#define STR_MONTHNAME_3_CHAR_LIST "ErrJanFebMarAprMayJunJulAugSepOctNovDec"
#define STR_DAYNAME_3_CHAR_LIST "ErrSunMonTueWedThuFriSat"
#define STR_OFFLINE "offline"
#endif
#endif /*__PLUGIN_LANG_H__*/

32
src/utils/helper.cpp

@ -5,6 +5,7 @@
#include "helper.h"
#include "dbg.h"
#include "../plugins/plugin_lang.h"
namespace ah {
void ip2Arr(uint8_t ip[], const char *ipStr) {
@ -82,6 +83,37 @@ namespace ah {
return String(str);
}
#define dt_SHORT_STR_LEN_i18n 3 // the length of short strings
static char buffer[dt_SHORT_STR_LEN_i18n + 1]; // must be big enough for longest string and the terminating null
const char monthShortNames_P[] PROGMEM = STR_MONTHNAME_3_CHAR_LIST;
const char dayShortNames_P[] PROGMEM = STR_DAYNAME_3_CHAR_LIST;
char* monthShortStr_i18n(uint8_t month)
{
for (int i=0; i < dt_SHORT_STR_LEN_i18n; i++)
buffer[i] = pgm_read_byte(&(monthShortNames_P[i + month * dt_SHORT_STR_LEN_i18n]));
buffer[dt_SHORT_STR_LEN_i18n] = 0;
return buffer;
}
char* dayShortStr_i18n(uint8_t day)
{
for (int i=0; i < dt_SHORT_STR_LEN_i18n; i++)
buffer[i] = pgm_read_byte(&(dayShortNames_P[i + day * dt_SHORT_STR_LEN_i18n]));
buffer[dt_SHORT_STR_LEN_i18n] = 0;
return buffer;
}
String getDateTimeStrShort_i18n(time_t t) {
char str[20];
if(0 == t)
sprintf(str, "n/a");
else {
sprintf(str, "%3s ", dayShortStr_i18n(dayOfWeek(t)));
sprintf(str+4, "%2d.%3s %02d:%02d", day(t), monthShortStr_i18n(month(t)), hour(t), minute(t));
}
return String(str);
}
uint64_t Serial2u64(const char *val) {
char tmp[3];
uint64_t ret = 0ULL;

1
src/utils/helper.h

@ -42,6 +42,7 @@ namespace ah {
double round3(double value);
String getDateTimeStr(time_t t);
String getDateTimeStrShort(time_t t);
String getDateTimeStrShort_i18n(time_t t);
String getDateTimeStrFile(time_t t);
String getTimeStr(time_t t);
String getTimeStrMs(uint64_t t);

Loading…
Cancel
Save