Hello, I'm making a project with multilanguage menu. Everything works great but when I tried making the multilanguage part, I got stuck when I need to print strings that have non-English(latin alphabet) letters in it. I made an example here that If you run it, it will print fine the English(latin alphabet) strigs, but when I print some greek words, everything gets problematic.
#include <avr/pgmspace.h>
const char speedView [5] [12] PROGMEM = { { "TAXYTHTA:" }, { "SPEED: " }, { "Vitesse: " }, { "Velocità:" }, { "Drehzahl:" } }; //gr, en, fr, it, ge
const char speedSel [5] [12] PROGMEM = { { "ΡΥΘΜ ΤΑΧ: " }, { "SET SPEED:" }, { "Vitesse: " }, { "Velocità: " }, { "Drehzahl: " } }; //gr, en, fr, it, ge
const char remaining [5] [12] PROGMEM = { { "ΥΠΟΛΟΙΠΟ:" }, { "REMAIN: " }, { "Vitesse: " }, { "Velocità:" }, { "Drehzahl:" } }; //gr, en, fr, it, ge
const char endingAt [5] [12] PROGMEM = { { "ΤΕΛΕΙΩΜΑ:" }, { "ENDING: " }, { "Vitesse: " }, { "Velocità:" }, { "Drehzahl:" } }; //gr, en, fr, it, ge
void setup() {
Serial.begin(115200);
for (byte k = 0; k < strlen_P(speedView[2]); k++) {
Serial.print((char)pgm_read_word(speedView[2] + k));
}
Serial.println();
for (byte k = 0; k < strlen_P(speedSel[0]); k++) {
Serial.print((char)pgm_read_word(speedSel[0] + k));
}
Serial.println();
for (byte k = 0; k < strlen_P(remaining[1]); k++) {
Serial.print((char)pgm_read_word(remaining[1] + k));
}
Serial.println();
for (byte k = 0; k < strlen_P(endingAt[0]); k++) {
Serial.print((char)pgm_read_word(endingAt[0] + k));
}
Serial.println();
}
void loop() {
// put your main code here, to run repeatedly:
}
That's the output:

You'll see that whenever a greek word is printed, somehow it gets printed with the next string of the array.
Any help would be much appreciated!