From 323f1f29969a5c4ceb08a8a51248b782c55cecf5 Mon Sep 17 00:00:00 2001 From: anschrammh Date: Fri, 24 Mar 2023 14:45:55 +0100 Subject: [PATCH] Added a translation module to implement multilanguage support --- .../app/translation/Makefile | 15 +++++++ .../app/translation/translation.c | 39 +++++++++++++++++++ .../app/translation/translation.h | 24 ++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 src/W800_SDK_v1.00.10/app/translation/Makefile create mode 100644 src/W800_SDK_v1.00.10/app/translation/translation.c create mode 100644 src/W800_SDK_v1.00.10/app/translation/translation.h diff --git a/src/W800_SDK_v1.00.10/app/translation/Makefile b/src/W800_SDK_v1.00.10/app/translation/Makefile new file mode 100644 index 0000000..3ad0253 --- /dev/null +++ b/src/W800_SDK_v1.00.10/app/translation/Makefile @@ -0,0 +1,15 @@ +TOP_DIR = ../.. +sinclude $(TOP_DIR)/tools/w800/conf.mk + +ifndef PDIR +GEN_LIBS = libtranslation$(LIB_EXT) +endif + +#DEFINES += + +sinclude $(TOP_DIR)/tools/w800/rules.mk + +INCLUDES := $(INCLUDES) -I $(PDIR)include + +PDIR := ../$(PDIR) +sinclude $(PDIR)Makefile \ No newline at end of file diff --git a/src/W800_SDK_v1.00.10/app/translation/translation.c b/src/W800_SDK_v1.00.10/app/translation/translation.c new file mode 100644 index 0000000..635f028 --- /dev/null +++ b/src/W800_SDK_v1.00.10/app/translation/translation.c @@ -0,0 +1,39 @@ +#include "wm_type_def.h" +#include "translation.h" +#include "watch_settings.h" + +static const char * const translation_dictionary[][TRANSLATED_LANGUAGES_COUNT] = +{ + [TRANSLATION_WATCH] = { + [TRANSLATION_FRENCH] = "Montre", + [TRANSLATION_GERMAN] = "Uhr", + [TRANSLATION_ENGLISH]= "Watch" + }, + [TRANSLATION_ALARM] = { + [TRANSLATION_FRENCH] = "Reveil", + [TRANSLATION_GERMAN] = "Wecker", + [TRANSLATION_ENGLISH]= "Alarm" + }, + [TRANSLATION_COMPASS] = { + [TRANSLATION_FRENCH] = "Boussole", + [TRANSLATION_GERMAN] = "Kompass", + [TRANSLATION_ENGLISH]= "Compass" + }, + [TRANSLATION_ALTIMETER] = { + [TRANSLATION_FRENCH] = "Altimetre", + [TRANSLATION_GERMAN] = "Hohenmesser", + [TRANSLATION_ENGLISH]= "Altimeter" + }, + [TRANSLATION_SETTINGS] = { + [TRANSLATION_FRENCH] = "Parametres", + [TRANSLATION_GERMAN] = "Einstellungen", + [TRANSLATION_ENGLISH]= "Settings" + }, +}; + +const char *translation_get_word(TranslationWord_e word) +{ + uint8_t word_count = sizeof translation_dictionary / sizeof(*translation_dictionary); + uint8_t language = persistency_get_settings()->languageAndUI.language; + return translation_dictionary[word % word_count][language % TRANSLATED_LANGUAGES_COUNT]; +} \ No newline at end of file diff --git a/src/W800_SDK_v1.00.10/app/translation/translation.h b/src/W800_SDK_v1.00.10/app/translation/translation.h new file mode 100644 index 0000000..201ed0f --- /dev/null +++ b/src/W800_SDK_v1.00.10/app/translation/translation.h @@ -0,0 +1,24 @@ +#ifndef TRANSLATION_H +#define TRANSLATION_H + +#define TRANSLATED_LANGUAGES_COUNT (3) + +typedef enum TranslationLanguage +{ + TRANSLATION_FRENCH = 0, + TRANSLATION_GERMAN, + TRANSLATION_ENGLISH +} TranslationLanguage_e; + +typedef enum TranslationWord +{ + TRANSLATION_WATCH = 0, + TRANSLATION_ALARM, + TRANSLATION_COMPASS, + TRANSLATION_ALTIMETER, + TRANSLATION_SETTINGS +} TranslationWord_e; + +const char * translation_get_word(TranslationWord_e word); + +#endif //TRANSLATION_H \ No newline at end of file