OK, ich habe jetzt nochmal getestet, es liegt nicht an den .mo-Dateien. Meine Vermutung war also falsch.
Anscheinend funktioniert die implementierte Uebersetzung in statischen Tabellen - st_modes, st_modesFooter - nicht (immer). Haengt wohl von der Initialisierungsreihenfolge ab.
Mit
diff --git a/menu.c b/menu.c
index eaa7464..0cf99a4 100644
--- a/menu.c
+++ b/menu.c
@@ -916,7 +916,7 @@ void TeletextBrowser::UpdateFooter() {
#define CONVERT_ACTION_TO_TEXT(text, mode) \
if (mode < 100) { \
- snprintf(text, sizeof(text), "%s", st_modesFooter[mode]); \
+ snprintf(text, sizeof(text), "%s", tr(st_modesFooter[mode])); \
} else if (mode < 999) { \
snprintf(text, sizeof(text), "-> %03d", mode); \
} else { \
Display More
sehe ich zumindest die uebersetzten Beschriftungen der Knoepfe. Das ist natuerlich nur ein Hack zum Test.
Jedenfalls scheinen bei mir in den Tabellen die originalen unuebersetzten Strings zu liegen und erst der zweite Uebersetzungsversuch klappt. Alle Strings, die im Funktionskontext uebersetzt werden, sind korrekt, die in globalen Konstanten-Arrays nicht.
Weil ich das gerade gesehen habe, es ist generell eine schlechte Idee, statische globale Variablen in Headern (setup.h) zu erzeugen, weil dann jede Uebersetzungeeinheit (hier insbesondere menu.o und osdteletext.o) eine private Kopie dieses Arrays (st_modes) bekommt.
Gruss,
S:oren