Added a translation module to implement multilanguage support

This commit is contained in:
anschrammh 2023-03-24 14:45:55 +01:00
parent 0874a24cb9
commit 323f1f2996
3 changed files with 78 additions and 0 deletions

View File

@ -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

View File

@ -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];
}

View File

@ -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