diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index a7e77c21ce..41f3f129e0 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -827,10 +827,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/dogm_font_data_ISO10646_Greek.h b/Marlin/dogm_font_data_ISO10646_Greek.h
new file mode 100644
index 0000000000..0abb08d9dc
--- /dev/null
+++ b/Marlin/dogm_font_data_ISO10646_Greek.h
@@ -0,0 +1,206 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/*
+ Fontname: ISO10646_4_Greek
+ Copyright: A. Hardtung, public domain
+ Capital A Height: 7, '1' Height: 7
+ Calculated Max Values w= 5 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len=10
+ Font Bounding box w= 6 h= 9 x= 0 y=-2
+ Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
+ Pure Font ascent = 7 descent=-1
+ X Font ascent = 7 descent=-1
+ Max Font ascent = 8 descent=-2
+*/
+#include
+const u8g_fntpgm_uint8_t ISO10646_Greek_5x7[2728] U8G_SECTION(".progmem.ISO10646_Greek_5x7") = {
+ 0,6,9,0,254,7,1,145,3,32,32,255,255,8,254,7,
+ 255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
+ 128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
+ 0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
+ 120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
+ 64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
+ 2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
+ 64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
+ 32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
+ 5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
+ 64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
+ 192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
+ 0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
+ 192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
+ 128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
+ 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
+ 6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
+ 48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
+ 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
+ 112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
+ 5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
+ 192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
+ 32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
+ 0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
+ 8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
+ 112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
+ 7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
+ 0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
+ 136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
+ 128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
+ 7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
+ 0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
+ 128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
+ 16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
+ 5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
+ 6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
+ 136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
+ 136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
+ 128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
+ 7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
+ 0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
+ 32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
+ 136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
+ 7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
+ 0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
+ 136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
+ 64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
+ 5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
+ 0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
+ 136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
+ 5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
+ 0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
+ 128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
+ 5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
+ 0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
+ 136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
+ 136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
+ 8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
+ 0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
+ 64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
+ 168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
+ 0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
+ 240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
+ 5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
+ 112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
+ 72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
+ 6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
+ 168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
+ 6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
+ 248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
+ 64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
+ 7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
+ 0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
+ 0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
+ 0,0,2,2,2,6,1,6,64,128,3,3,3,6,1,5,
+ 32,64,160,5,8,8,6,0,0,64,160,80,80,136,248,136,
+ 136,2,2,2,6,1,2,192,192,5,8,8,6,0,0,64,
+ 128,248,128,240,128,128,248,5,8,8,6,0,0,64,128,136,
+ 136,248,136,136,136,4,8,8,6,0,0,64,128,112,32,32,
+ 32,32,112,0,0,0,6,0,0,5,8,8,6,0,0,64,
+ 128,112,136,136,136,136,112,0,0,0,6,0,0,5,8,8,
+ 6,0,0,64,128,8,136,112,32,32,32,5,8,8,6,0,
+ 0,64,128,112,136,136,136,80,216,3,8,8,6,1,0,32,
+ 64,160,0,64,64,64,32,5,7,7,6,0,0,32,80,136,
+ 136,248,136,136,5,7,7,6,0,0,240,72,72,112,72,72,
+ 240,5,7,7,6,0,0,248,128,128,128,128,128,128,5,6,
+ 6,6,0,0,32,80,80,136,136,248,5,7,7,6,0,0,
+ 248,128,128,240,128,128,248,5,7,7,6,0,0,248,8,16,
+ 32,64,128,248,5,7,7,6,0,0,136,136,136,248,136,136,
+ 136,5,7,7,6,0,0,112,136,136,168,136,136,112,3,7,
+ 7,6,1,0,224,64,64,64,64,64,224,5,7,7,6,0,
+ 0,136,144,160,192,160,144,136,5,7,7,6,0,0,32,80,
+ 136,136,136,136,136,5,7,7,6,0,0,136,216,168,168,136,
+ 136,136,5,7,7,6,0,0,136,200,200,168,152,152,136,5,
+ 7,7,6,0,0,248,0,0,112,0,0,248,5,7,7,6,
+ 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,248,
+ 80,80,80,80,80,80,5,7,7,6,0,0,240,136,136,240,
+ 128,128,128,0,0,0,6,0,0,5,7,7,6,0,0,248,
+ 128,64,32,64,128,248,5,7,7,6,0,0,248,32,32,32,
+ 32,32,32,5,7,7,6,0,0,136,136,80,32,32,32,32,
+ 5,7,7,6,0,0,112,32,112,168,112,32,112,5,7,7,
+ 6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
+ 168,168,168,168,112,32,32,5,6,6,6,0,0,112,136,136,
+ 80,80,216,3,8,8,6,1,0,160,0,224,64,64,64,64,
+ 224,5,8,8,6,0,0,80,0,136,136,136,80,32,32,5,
+ 8,8,6,0,0,32,64,8,104,152,144,144,104,5,8,8,
+ 6,0,0,32,64,0,112,136,224,136,112,5,10,10,6,0,
+ 254,32,64,0,112,136,136,136,136,8,8,2,8,8,6,1,
+ 0,64,128,0,128,128,128,128,64,5,8,8,6,0,0,16,
+ 32,80,0,136,136,136,112,5,6,6,6,0,0,8,104,152,
+ 144,144,104,4,7,7,6,0,254,96,144,240,144,224,128,128,
+ 5,6,6,6,0,255,136,72,80,32,32,64,5,6,6,6,
+ 0,0,48,64,112,136,136,112,5,5,5,6,0,0,112,136,
+ 224,136,112,5,9,9,6,0,254,128,112,64,128,128,128,112,
+ 8,112,5,7,7,6,0,254,184,200,136,136,136,8,8,5,
+ 5,5,6,0,0,112,136,248,136,112,3,5,5,6,1,0,
+ 128,128,128,128,96,4,5,5,6,0,0,144,160,192,160,144,
+ 5,6,6,6,0,0,64,32,32,80,80,136,5,7,7,6,
+ 0,254,136,136,136,216,168,128,128,5,5,5,6,0,0,136,
+ 136,80,96,32,5,10,10,6,0,254,128,224,128,112,32,64,
+ 128,112,8,112,5,5,5,6,0,0,112,136,136,136,112,5,
+ 5,5,6,0,0,248,80,80,80,80,5,7,7,6,0,254,
+ 112,136,136,200,176,128,128,5,7,7,6,0,254,48,64,128,
+ 64,48,8,112,5,5,5,6,0,0,104,144,144,144,96,4,
+ 5,5,6,0,0,240,64,64,64,48,5,5,5,6,0,0,
+ 136,136,144,144,224,5,8,8,6,0,254,48,168,168,168,168,
+ 112,32,32,5,6,6,6,0,255,136,80,32,32,80,136,5,
+ 7,7,6,0,254,168,168,168,168,112,32,32,5,5,5,6,
+ 0,0,80,136,136,168,112,4,7,7,6,0,0,160,0,64,
+ 64,64,64,48,5,7,7,6,0,0,80,0,136,136,144,144,
+ 224,4,8,8,6,0,0,32,64,0,96,144,144,144,96,5,
+ 8,8,6,0,0,32,64,0,136,136,144,144,96,5,8,8,
+ 6,0,0,32,64,0,80,136,136,168,112,5,7,7,6,0,
+ 255,144,160,192,160,144,136,16,5,8,8,6,0,0,96,144,
+ 160,128,240,136,136,112,5,7,7,6,0,0,112,80,56,144,
+ 144,144,96,5,6,6,6,0,0,152,80,32,32,32,32,5,
+ 8,8,6,0,0,64,128,152,80,32,32,32,32,5,8,8,
+ 6,0,0,80,0,152,80,32,32,32,32,5,7,7,6,0,
+ 255,48,168,168,168,168,112,32,5,5,5,6,0,0,248,80,
+ 80,80,88,5,6,6,6,0,255,136,80,112,80,136,16,5,
+ 7,7,6,0,255,112,136,136,136,112,32,112,5,6,6,6,
+ 0,255,112,136,136,112,32,112,5,6,6,6,0,0,112,136,
+ 128,112,32,112,5,7,7,6,0,254,8,112,128,128,112,16,
+ 96,5,6,6,6,0,0,248,128,128,240,128,128,4,5,5,
+ 6,0,0,240,128,224,128,128,5,6,6,6,0,0,248,0,
+ 0,112,0,248,4,5,5,6,0,0,64,128,240,16,32,5,
+ 7,7,6,0,0,224,80,40,40,8,8,16,5,7,7,6,
+ 0,0,192,32,80,40,8,8,8,5,8,8,6,0,254,168,
+ 168,168,168,168,88,8,112,5,7,7,6,0,254,168,168,168,
+ 168,88,8,112,5,6,6,6,0,0,104,136,136,120,8,8,
+ 5,6,6,6,0,255,104,136,136,120,8,8,4,8,8,6,
+ 0,254,128,224,144,144,144,144,32,192,5,5,5,6,0,0,
+ 104,144,112,16,224,5,6,6,6,0,0,96,144,16,96,136,
+ 112,4,6,6,6,0,0,96,144,16,96,128,112,5,6,6,
+ 6,0,0,136,80,32,80,136,248,5,5,5,6,0,0,136,
+ 80,32,80,112,5,6,6,6,0,0,120,128,240,136,136,112,
+ 4,5,5,6,0,0,240,128,224,144,96,3,6,6,6,1,
+ 0,64,224,64,64,64,64,3,6,6,6,1,255,64,224,64,
+ 64,64,128,5,5,5,6,0,0,136,80,112,80,136,5,7,
+ 7,6,0,254,112,136,136,136,240,128,112,4,5,5,6,0,
+ 0,112,128,128,128,112,2,8,8,6,1,255,64,0,192,64,
+ 64,64,64,128,5,7,7,6,0,0,112,136,136,248,136,136,
+ 112,4,5,5,6,0,0,112,128,224,128,112,4,5,5,6,
+ 0,0,224,16,112,16,224,5,7,7,6,0,0,128,240,136,
+ 136,136,240,128,4,7,7,6,0,255,128,224,144,144,144,224,
+ 128,5,6,6,6,0,0,112,136,128,128,136,112,5,6,6,
+ 6,0,0,136,216,168,136,136,136,5,7,7,6,0,254,136,
+ 216,168,136,136,128,128,5,8,8,6,0,254,112,136,136,136,
+ 112,64,224,64,5,6,6,6,0,0,112,136,8,8,136,112,
+ 5,6,6,6,0,0,112,136,160,128,136,112,5,6,6,6,
+ 0,0,112,136,40,8,136,112};
diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h
index 16c48e7be4..e5c565e815 100644
--- a/Marlin/dogm_lcd_implementation.h
+++ b/Marlin/dogm_lcd_implementation.h
@@ -85,6 +85,9 @@
#elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA)
#include "dogm_font_data_ISO10646_Kana.h"
#define FONT_MENU_NAME ISO10646_Kana_5x7
+ #elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK)
+ #include "dogm_font_data_ISO10646_Greek.h"
+ #define FONT_MENU_NAME ISO10646_Greek_5x7
#elif ENABLED(DISPLAY_CHARSET_ISO10646_CN)
#include "dogm_font_data_ISO10646_CN.h"
#define FONT_MENU_NAME ISO10646_CN
diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h
index 78c2f263fb..3545e5994c 100644
--- a/Marlin/example_configurations/Cartesio/Configuration.h
+++ b/Marlin/example_configurations/Cartesio/Configuration.h
@@ -826,10 +826,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h
index 166266b76e..737aad19b6 100644
--- a/Marlin/example_configurations/Felix/Configuration.h
+++ b/Marlin/example_configurations/Felix/Configuration.h
@@ -810,10 +810,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h
index 888341fcff..f2b35df5cd 100644
--- a/Marlin/example_configurations/Felix/DUAL/Configuration.h
+++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h
@@ -808,10 +808,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h
index 9d7bff2e0d..a8dc026f54 100644
--- a/Marlin/example_configurations/Hephestos/Configuration.h
+++ b/Marlin/example_configurations/Hephestos/Configuration.h
@@ -819,10 +819,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h
index 1a5887aaee..05e6de775f 100644
--- a/Marlin/example_configurations/Hephestos_2/Configuration.h
+++ b/Marlin/example_configurations/Hephestos_2/Configuration.h
@@ -821,10 +821,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h
index d53607e979..0e2a4d2c8a 100644
--- a/Marlin/example_configurations/K8200/Configuration.h
+++ b/Marlin/example_configurations/K8200/Configuration.h
@@ -844,10 +844,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
index 103814f866..6b073db8f3 100644
--- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
+++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
@@ -827,10 +827,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h
index 7bbed23b8c..d097b0a20d 100644
--- a/Marlin/example_configurations/RigidBot/Configuration.h
+++ b/Marlin/example_configurations/RigidBot/Configuration.h
@@ -825,10 +825,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h
index 488f43b4fc..297b311394 100644
--- a/Marlin/example_configurations/SCARA/Configuration.h
+++ b/Marlin/example_configurations/SCARA/Configuration.h
@@ -835,10 +835,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h
index 8465b65332..6db6caf30c 100644
--- a/Marlin/example_configurations/TAZ4/Configuration.h
+++ b/Marlin/example_configurations/TAZ4/Configuration.h
@@ -848,10 +848,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h
index 88c11f7b22..c71f965b1d 100644
--- a/Marlin/example_configurations/WITBOX/Configuration.h
+++ b/Marlin/example_configurations/WITBOX/Configuration.h
@@ -819,10 +819,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h
index 782e907ac5..ff9bbf244c 100644
--- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h
+++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h
@@ -827,10 +827,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h
index 3b9d7f9cf1..01d21032c7 100644
--- a/Marlin/example_configurations/delta/biv2.5/Configuration.h
+++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h
@@ -922,10 +922,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h
index 3305deaf19..ad48fedc95 100644
--- a/Marlin/example_configurations/delta/generic/Configuration.h
+++ b/Marlin/example_configurations/delta/generic/Configuration.h
@@ -916,10 +916,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h
index 4863383560..d7fa60cbb8 100644
--- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h
@@ -919,10 +919,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h
index edb6237539..f3753c7543 100644
--- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h
@@ -919,10 +919,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h
index 71bd862317..7c46535525 100644
--- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h
@@ -921,10 +921,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h
index 74d8fc5649..ac4d1d888f 100644
--- a/Marlin/example_configurations/makibox/Configuration.h
+++ b/Marlin/example_configurations/makibox/Configuration.h
@@ -830,10 +830,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h
index 32023a3725..1d137d3b7a 100644
--- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h
+++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h
@@ -821,10 +821,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
//
// Here you may choose the language used by Marlin on the LCD menus, the following
// list of languages are available:
-// en, an, bg, ca, cn, cz, de, es, eu, fi, fr, gl, hr, it, kana,
-// kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
+// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
//
-// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
+// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'}
//
//#define LCD_LANGUAGE en
diff --git a/Marlin/fonts/ISO10646-4_Greek.fon b/Marlin/fonts/ISO10646-4_Greek.fon
new file mode 100644
index 0000000000..021078e00b
Binary files /dev/null and b/Marlin/fonts/ISO10646-4_Greek.fon differ
diff --git a/Marlin/fonts/make_fonts.bat b/Marlin/fonts/make_fonts.bat
index 5ab975bf47..c4df633e44 100644
--- a/Marlin/fonts/make_fonts.bat
+++ b/Marlin/fonts/make_fonts.bat
@@ -6,3 +6,4 @@
.\bdf2u8g.exe -b 32 -e 255 ISO10646_5_Cyrillic.bdf ISO10646_5_Cyrillic_5x7 dogm_font_data_ISO10646_5_Cyrillic.h
.\bdf2u8g.exe -b 32 -e 255 ISO10646_Kana.bdf ISO10646_Kana_5x7 dogm_font_data_ISO10646_Kana.h
.\bdf2u8g.exe -b 32 -e 255 ISO10646_CN.bdf ISO10646_CN dogm_font_data_ISO10646_CN.h
+.\bdf2u8g.exe -b 32 -e 255 ISO10646_4_Greek.bdf ISO10646_Greek_5x7 dogm_font_data_ISO10646_Greek.h
diff --git a/Marlin/language.h b/Marlin/language.h
index 03c063d4fb..2e74e42d27 100644
--- a/Marlin/language.h
+++ b/Marlin/language.h
@@ -48,6 +48,8 @@
// cn Chinese
// cz Czech
// de German
+// el Greek
+// el-gr Greek (Greece)
// en English
// es Spanish
// eu Basque-Euskera
diff --git a/Marlin/language_el-gr.h b/Marlin/language_el-gr.h
new file mode 100644
index 0000000000..9bdb8a678f
--- /dev/null
+++ b/Marlin/language_el-gr.h
@@ -0,0 +1,200 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Greek (Greece)
+ *
+ * LCD Menu Messages
+ * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
+ *
+ */
+#ifndef LANGUAGE_EL_GR_H
+#define LANGUAGE_EL_GR_H
+
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
+//#define SIMULATE_ROMFONT
+
+//#define MAPPER_CECF
+//#define DISPLAY_CHARSET_ISO10646_GREEK
+
+#define WELCOME_MSG MACHINE_NAME " έτοιμο."
+#define MSG_SD_INSERTED "Εισαγωγή κάρτας"
+#define MSG_SD_REMOVED "Αφαίρεση κάρτας"
+#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters
+#define MSG_MAIN "Βασική Οθόνη"
+#define MSG_AUTOSTART "Αυτόματη εκκίνηση"
+#define MSG_DISABLE_STEPPERS "Απενεργοποίηση βηματιστή"
+#define MSG_AUTO_HOME "Αυτομ. επαναφορά στο αρχικό σημείο"
+#define MSG_AUTO_HOME_X "Αρχικό σημείο X"
+#define MSG_AUTO_HOME_Y "Αρχικό σημείο Y"
+#define MSG_AUTO_HOME_Z "Αρχικό σημείο Z"
+#define MSG_LEVEL_BED_HOMING "Επαναφορά στο αρχικό σημείο ΧΥΖ"
+#define MSG_LEVEL_BED_WAITING "Κάντε κλικ για να ξεκινήσετε"
+#define MSG_LEVEL_BED_NEXT_POINT "Επόμενο σημείο"
+#define MSG_LEVEL_BED_DONE "Ολοκλήρωση επιπεδοποίησης!"
+#define MSG_LEVEL_BED_CANCEL "Ακύρωση"
+#define MSG_SET_HOME_OFFSETS "Ορισμός βασικών μετατοπίσεων"
+#define MSG_HOME_OFFSETS_APPLIED "Εφαρμόστηκαν οι μετατοπίσεις"
+#define MSG_SET_ORIGIN "Ορισμός προέλευσης"
+#define MSG_PREHEAT_PLA "Προθέρμανση PLA"
+#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
+#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " όλα"
+#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " κλίνη"
+#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " επιβεβαίωση"
+#define MSG_PREHEAT_ABS "Προθέρμανση ABS"
+#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
+#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " όλα"
+#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " Bed"
+#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " επιβεβαίωση"
+#define MSG_H1 "1"
+#define MSG_H2 "2"
+#define MSG_H3 "3"
+#define MSG_H4 "4"
+#define MSG_COOLDOWN "Μειωση θερμοκρασιας"
+#define MSG_SWITCH_PS_ON "Ενεργοποίηση"
+#define MSG_SWITCH_PS_OFF "Απενεργοποίηση"
+#define MSG_EXTRUDE "Εξώθηση"
+#define MSG_RETRACT "Ανάσυρση"
+#define MSG_MOVE_AXIS "Μετακίνηση άξονα"
+#define MSG_LEVEL_BED "Επιπεδοποίηση κλίνης"
+#define MSG_MOVE_X "Μετακίνηση X"
+#define MSG_MOVE_Y "Μετακίνηση Y"
+#define MSG_MOVE_Z "Μετακίνηση Z"
+#define MSG_MOVE_E "Εξωθητήρας"
+#define MSG_MOVE_E1 "1"
+#define MSG_MOVE_E2 "2"
+#define MSG_MOVE_E3 "3"
+#define MSG_MOVE_E4 "4"
+#define MSG_MOVE_01MM "Μετακίνηση 0,1 μμ"
+#define MSG_MOVE_1MM "Μετακίνηση 1 μμ"
+#define MSG_MOVE_10MM "Μετακίνηση 10 μμ"
+#define MSG_SPEED "Ταχύτητα"
+#define MSG_BED_Z "Κλίνη Z"
+#define MSG_NOZZLE "Ακροφύσιο"
+#define MSG_N1 " 1"
+#define MSG_N2 " 2"
+#define MSG_N3 " 3"
+#define MSG_N4 " 4"
+#define MSG_BED "Κλίνη"
+#define MSG_FAN_SPEED "Ταχύτητα ανεμιστήρα"
+#define MSG_FLOW "Ροή"
+#define MSG_CONTROL "Έλεγχος"
+#define MSG_MIN " " LCD_STR_THERMOMETER " Min"
+#define MSG_MAX " " LCD_STR_THERMOMETER " Max"
+#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact"
+#define MSG_AUTOTEMP "Αυτομ. ρύθμιση θερμοκρασίας"
+#define MSG_ON "Ενεργοποιημένο"
+#define MSG_OFF "Απενεργοποιημένο"
+#define MSG_PID_P "PID-P"
+#define MSG_PID_I "PID-I"
+#define MSG_PID_D "PID-D"
+#define MSG_PID_C "PID-C"
+#define MSG_E1 " E1"
+#define MSG_E2 " E2"
+#define MSG_E3 " E3"
+#define MSG_E4 " E4"
+#define MSG_ACC "Επιτάχυνση"
+#define MSG_VXY_JERK "Vαντίδραση xy"
+#define MSG_VZ_JERK "Vαντίδραση z"
+#define MSG_VE_JERK "Vαντίδραση e"
+#define MSG_VMAX "Vμεγ "
+#define MSG_X "X"
+#define MSG_Y "Y"
+#define MSG_Z "Z"
+#define MSG_E "E"
+#define MSG_VMIN "Vελαχ"
+#define MSG_VTRAV_MIN "Vελάχ. μετατόπιση"
+#define MSG_AMAX "Aμεγ "
+#define MSG_A_RETRACT "Α-ανάσυρση"
+#define MSG_A_TRAVEL "Α-μετατόπιση"
+#define MSG_XSTEPS "Bήματα X ανά μμ"
+#define MSG_YSTEPS "Bήματα Υ ανά μμ"
+#define MSG_ZSTEPS "Bήματα Ζ ανά μμ"
+#define MSG_ESTEPS "Bήματα Ε ανά μμ"
+#define MSG_TEMPERATURE "Θερμοκρασία"
+#define MSG_MOTION "Κίνηση"
+#define MSG_VOLUMETRIC "Νήμα"
+#define MSG_VOLUMETRIC_ENABLED "Ε σε μμ3"
+#define MSG_FILAMENT_DIAM "Διάμετρος νήματος"
+#define MSG_DIAM_E1 " 1"
+#define MSG_DIAM_E2 " 2"
+#define MSG_DIAM_E3 " 3"
+#define MSG_DIAM_E4 " 4"
+#define MSG_CONTRAST "Κοντράστ LCD"
+#define MSG_STORE_EPROM "Αποθήκευση"
+#define MSG_LOAD_EPROM "Φόρτωση"
+#define MSG_RESTORE_FAILSAFE "Επαναφορά ασφαλούς αντιγράφου"
+#define MSG_REFRESH "Ανανέωση"
+#define MSG_WATCH "Οθόνη πληροφόρησης"
+#define MSG_PREPARE "Προετοιμασία"
+#define MSG_TUNE "Συντονισμός"
+#define MSG_PAUSE_PRINT "Παύση εκτύπωσης"
+#define MSG_RESUME_PRINT "Συνέχιση εκτύπωσης"
+#define MSG_STOP_PRINT "Διακοπή εκτύπωσης"
+#define MSG_CARD_MENU "Εκτύπωση από SD"
+#define MSG_NO_CARD "Δεν βρέθηκε SD"
+#define MSG_DWELL "Αναστολή λειτουργίας..."
+#define MSG_USERWAIT "Αναμονή για χρήστη…"
+#define MSG_RESUMING "Συνεχίζεται η εκτύπωση"
+#define MSG_PRINT_ABORTED "Διακόπτεται η εκτύπωση"
+#define MSG_NO_MOVE "Καμία κίνηση."
+#define MSG_KILLED "ΤΕΡΜΑΤΙΣΜΟΣ. "
+#define MSG_STOPPED "ΔΙΑΚΟΠΗ. "
+#define MSG_CONTROL_RETRACT "Ανάσυρση μμ"
+#define MSG_CONTROL_RETRACT_SWAP "Εναλλαγή ανάσυρσης μμ"
+#define MSG_CONTROL_RETRACTF "Ανάσυρση V"
+#define MSG_CONTROL_RETRACT_ZLIFT "Μεταπήδηση μμ"
+#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm"
+#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
+#define MSG_AUTORETRACT "Αυτόματη ανάσυρση"
+#define MSG_FILAMENTCHANGE "Αλλαγή νήματος"
+#define MSG_INIT_SDCARD "Προετοιμασία κάρτας SD"
+#define MSG_CNG_SDCARD "Αλλαγή κάρτας SD"
+#define MSG_ZPROBE_OUT "Διερεύνηση Z εκτός κλίνης"
+#define MSG_YX_UNHOMED "Επαναφορά Χ/Υ πριν από Ζ"
+#define MSG_XYZ_UNHOMED "Επαναφορά ΧΥΖ πρώτα"
+#define MSG_ZPROBE_ZOFFSET "Μετατόπιση Ζ"
+#define MSG_BABYSTEP_X "Μικρό βήμα Χ"
+#define MSG_BABYSTEP_Y "Μικρό βήμα Υ"
+#define MSG_BABYSTEP_Z "Μικρό βήμα Ζ"
+#define MSG_ENDSTOP_ABORT "Ματαίωση endstop "
+#define MSG_HEATING_FAILED_LCD "Ανεπιτυχής θέρμανση"
+#define MSG_ERR_REDUNDANT_TEMP "Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"
+#define MSG_THERMAL_RUNAWAY "ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ"
+#define MSG_ERR_MAXTEMP "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"
+#define MSG_ERR_MINTEMP "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"
+#define MSG_ERR_MAXTEMP_BED "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ"
+#define MSG_ERR_MINTEMP_BED "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ"
+#define MSG_END_HOUR "ώρες"
+#define MSG_END_MINUTE "λεπτά"
+#define MSG_HEATING "Θερμαίνεται…"
+#define MSG_HEATING_COMPLETE "Η θέρμανση ολοκληρώθηκε."
+#define MSG_BED_HEATING "Θέρμανση κλίνης."
+#define MSG_BED_DONE "Η κλίνη ολοκληρώθηκε."
+#define MSG_DELTA_CALIBRATE "Βαθμονόμηση Delta"
+#define MSG_DELTA_CALIBRATE_X "Βαθμονόμηση X"
+#define MSG_DELTA_CALIBRATE_Y "Βαθμονόμηση Y"
+#define MSG_DELTA_CALIBRATE_Z "Βαθμονόμηση Z"
+#define MSG_DELTA_CALIBRATE_CENTER "Βαθμονόμηση κέντρου"
+
+#endif // LANGUAGE_EL_GR_H
diff --git a/Marlin/language_el.h b/Marlin/language_el.h
new file mode 100644
index 0000000000..d1fec26b7f
--- /dev/null
+++ b/Marlin/language_el.h
@@ -0,0 +1,247 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Greek
+ *
+ * LCD Menu Messages
+ * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
+ *
+ */
+#ifndef LANGUAGE_EL_H
+#define LANGUAGE_EL_H
+
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
+//#define SIMULATE_ROMFONT
+
+#define MAPPER_CECF
+#define DISPLAY_CHARSET_ISO10646_GREEK
+
+#define WELCOME_MSG MACHINE_NAME " έτοιμο."
+#define MSG_SD_INSERTED "Εισαγωγή κάρτας"
+#define MSG_SD_REMOVED "Αφαίρεση κάρτας"
+#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters
+#define MSG_MAIN "Βασική Οθόνη"
+#define MSG_AUTOSTART "Αυτόματη εκκίνηση"
+#define MSG_DISABLE_STEPPERS "Απενεργοποίηση Μοτέρ"
+#define MSG_AUTO_HOME "Αυτομ. επαναφορά στο αρχικό σημείο" //SHORTEN
+#define MSG_AUTO_HOME_X "Αρχικό σημείο X"
+#define MSG_AUTO_HOME_Y "Αρχικό σημείο Y"
+#define MSG_AUTO_HOME_Z "Αρχικό σημείο Z"
+#define MSG_LEVEL_BED_HOMING "Επαναφορά Επ. Εκτύπωσης" //SHORTEN
+#define MSG_LEVEL_BED_WAITING "Επιπεδοποίηση επ. Εκτύπωσης περιμενει" //SHORTEN
+#define MSG_LEVEL_BED_NEXT_POINT "Επόμενο σημείο"
+#define MSG_LEVEL_BED_DONE "Ολοκλήρωση επιπεδοποίησης!" //SHORTEN
+#define MSG_LEVEL_BED_CANCEL "Ακύρωση"
+#define MSG_SET_HOME_OFFSETS "Ορισμός βασικών μετατοπίσεων" //SHORTEN
+#define MSG_HOME_OFFSETS_APPLIED "Εφαρμόστηκαν οι μετατοπίσεις" //SHORTEN
+#define MSG_SET_ORIGIN "Ορισμός προέλευσης"
+#define MSG_PREHEAT_PLA "Προθέρμανση PLA"
+#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
+#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " όλα"
+#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " bed" //SHORTEN
+#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " επιβεβαίωση" //SHORTEN
+#define MSG_PREHEAT_ABS "Προθέρμανση ABS"
+#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
+#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " όλα"
+#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " bed" //SHORTEN
+#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " επιβεβαίωση" //SHORTEN
+#define MSG_H1 "1"
+#define MSG_H2 "2"
+#define MSG_H3 "3"
+#define MSG_H4 "4"
+#define MSG_COOLDOWN "Μειωση θερμοκρασιας"
+#define MSG_SWITCH_PS_ON "Ενεργοποίηση"
+#define MSG_SWITCH_PS_OFF "Απενεργοποίηση"
+#define MSG_EXTRUDE "Εξώθηση"
+#define MSG_RETRACT "Ανάσυρση"
+#define MSG_MOVE_AXIS "Μετακίνηση άξονα"
+#define MSG_LEVEL_BED "Επιπεδοποίηση Επ. Εκτύπωσης" //SHORTEN
+#define MSG_MOVE_X "Μετακίνηση X"
+#define MSG_MOVE_Y "Μετακίνηση Y"
+#define MSG_MOVE_Z "Μετακίνηση Z"
+#define MSG_MOVE_E "Εξωθητήρας"
+#define MSG_MOVE_E1 "1"
+#define MSG_MOVE_E2 "2"
+#define MSG_MOVE_E3 "3"
+#define MSG_MOVE_E4 "4"
+#define MSG_MOVE_01MM "Μετακίνηση 0,1μμ"
+#define MSG_MOVE_1MM "Μετακίνηση 1μμ"
+#define MSG_MOVE_10MM "Μετακίνηση 10μμ"
+#define MSG_SPEED "Ταχύτητα"
+#define MSG_BED_Z "Επ. Εκτύπωσης Z"
+#define MSG_NOZZLE "Ακροφύσιο"
+#define MSG_N1 " 1"
+#define MSG_N2 " 2"
+#define MSG_N3 " 3"
+#define MSG_N4 " 4"
+#define MSG_BED "Κλίνη"
+#define MSG_FAN_SPEED "Ταχύτητα ανεμιστήρα"
+#define MSG_FLOW "Ροή"
+#define MSG_CONTROL "Έλεγχος"
+#define MSG_MIN " " LCD_STR_THERMOMETER " Min"
+#define MSG_MAX " " LCD_STR_THERMOMETER " Max"
+#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact"
+#define MSG_AUTOTEMP "Αυτομ ρύθμιση θερ/σίας" //SHORTEN
+#define MSG_ON "Ενεργοποιημένο"
+#define MSG_OFF "Απενεργοποιημένο"
+#define MSG_PID_P "PID-P"
+#define MSG_PID_I "PID-I"
+#define MSG_PID_D "PID-D"
+#define MSG_PID_C "PID-C"
+#define MSG_E1 " E1"
+#define MSG_E2 " E2"
+#define MSG_E3 " E3"
+#define MSG_E4 " E4"
+#define MSG_ACC "Επιτάχυνση"
+#define MSG_VXY_JERK "Vαντίδραση xy"
+#define MSG_VZ_JERK "Vαντίδραση z"
+#define MSG_VE_JERK "Vαντίδραση e"
+#define MSG_VMAX "V Μέγιστο"
+#define MSG_X "X"
+#define MSG_Y "Y"
+#define MSG_Z "Z"
+#define MSG_E "E"
+#define MSG_VMIN "V Ελάχιστο"
+#define MSG_VTRAV_MIN "Vελάχ. μετατόπιση"
+#define MSG_AMAX "Aμεγ "
+#define MSG_A_RETRACT "Α-ανάσυρση"
+#define MSG_A_TRAVEL "Α-μετατόπιση"
+#define MSG_XSTEPS "Bήματα X ανά μμ"
+#define MSG_YSTEPS "Bήματα Υ ανά μμ"
+#define MSG_ZSTEPS "Bήματα Ζ ανά μμ"
+#define MSG_ESTEPS "Bήματα Ε ανά μμ"
+#define MSG_TEMPERATURE "Θερμοκρασία"
+#define MSG_MOTION "Κίνηση"
+#define MSG_VOLUMETRIC "Νήμα"
+#define MSG_VOLUMETRIC_ENABLED "Ε σε μμ3"
+#define MSG_FILAMENT_DIAM "Διάμετρος νήματος"
+#define MSG_DIAM_E1 " 1"
+#define MSG_DIAM_E2 " 2"
+#define MSG_DIAM_E3 " 3"
+#define MSG_DIAM_E4 " 4"
+#define MSG_CONTRAST "Κοντράστ LCD"
+#define MSG_STORE_EPROM "Αποθήκευση"
+#define MSG_LOAD_EPROM "Φόρτωση"
+#define MSG_RESTORE_FAILSAFE "Επαναφορά ασφαλούς αντιγράφου" //SHORTEN
+#define MSG_REFRESH "Ανανέωση"
+#define MSG_WATCH "Οθόνη πληροφόρησης"
+#define MSG_PREPARE "Προετοιμασία"
+#define MSG_TUNE "Συντονισμός"
+#define MSG_PAUSE_PRINT "Παύση εκτύπωσης"
+#define MSG_RESUME_PRINT "Συνέχιση εκτύπωσης"
+#define MSG_STOP_PRINT "Διακοπή εκτύπωσης"
+#define MSG_CARD_MENU "Εκτύπωση από SD"
+#define MSG_NO_CARD "Δεν βρέθηκε SD"
+#define MSG_DWELL "Αναστολή λειτουργίας"
+#define MSG_USERWAIT "Αναμονή για χρήστη"
+#define MSG_RESUMING "Συνεχίζεται η εκτύπωση" //SHORTEN
+#define MSG_PRINT_ABORTED "Διακόπτεται η εκτύπωση" //SHORTEN
+#define MSG_NO_MOVE "Καμία κίνηση."
+#define MSG_KILLED "ΤΕΡΜΑΤΙΣΜΟΣ. "
+#define MSG_STOPPED "ΔΙΑΚΟΠΗ. "
+#define MSG_CONTROL_RETRACT "Ανάσυρση μμ"
+#define MSG_CONTROL_RETRACT_SWAP "Εναλλαγή ανάσυρσης μμ" //SHORTEN
+#define MSG_CONTROL_RETRACTF "Ανάσυρση V"
+#define MSG_CONTROL_RETRACT_ZLIFT "Μεταπήδηση μμ"
+#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm"
+#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
+#define MSG_AUTORETRACT "Αυτόματη ανάσυρση"
+#define MSG_FILAMENTCHANGE "Αλλαγή νήματος"
+#define MSG_INIT_SDCARD "Προετοιμασία κάρτας SD" //SHORTEN
+#define MSG_CNG_SDCARD "Αλλαγή κάρτας SD"
+#define MSG_ZPROBE_OUT "Διερεύνηση Z εκτός Επ.Εκτύπωσης" //SHORTEN
+#define MSG_YX_UNHOMED "Επαναφορά Χ/Υ πριν από Ζ" //SHORTEN
+#define MSG_XYZ_UNHOMED "Επαναφορά ΧΥΖ πρώτα"
+#define MSG_ZPROBE_ZOFFSET "Μετατόπιση Ζ"
+#define MSG_BABYSTEP_X "Μικρό βήμα Χ"
+#define MSG_BABYSTEP_Y "Μικρό βήμα Υ"
+#define MSG_BABYSTEP_Z "Μικρό βήμα Ζ"
+#define MSG_ENDSTOP_ABORT "Ακύρωση endstop "
+#define MSG_HEATING_FAILED_LCD "Ανεπιτυχής θέρμανση"
+#define MSG_ERR_REDUNDANT_TEMP "ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"
+#define MSG_THERMAL_RUNAWAY "ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ"
+#define MSG_ERR_MAXTEMP "ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ"
+#define MSG_ERR_MINTEMP "ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ" //SHORTEN
+#define MSG_ERR_MAXTEMP_BED "ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN
+#define MSG_ERR_MINTEMP_BED "ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN
+#define MSG_HALTED "H εκτύπωση διακόπηκε"
+#define MSG_PLEASE_RESET "PLEASE RESET" //TRANSLATE
+#define MSG_END_HOUR "ώρες"
+#define MSG_END_MINUTE "λεπτά"
+#define MSG_HEATING "Θερμαίνεται…"
+#define MSG_HEATING_COMPLETE "Η θέρμανση ολοκληρώθηκε." //SHORTEN
+#define MSG_BED_HEATING "Θέρμανση ΕΠ. Εκτύπωσης" //SHORTEN
+#define MSG_BED_DONE "Η Επ. Εκτύπωσης ολοκληρώθηκε" //SHORTEN
+#define MSG_DELTA_CALIBRATE "Βαθμονόμηση Delta"
+#define MSG_DELTA_CALIBRATE_X "Βαθμονόμηση X"
+#define MSG_DELTA_CALIBRATE_Y "Βαθμονόμηση Y"
+#define MSG_DELTA_CALIBRATE_Z "Βαθμονόμηση Z"
+#define MSG_DELTA_CALIBRATE_CENTER "Βαθμονόμηση κέντρου"
+#define MSG_INFO_MENU "About Printer"
+#define MSG_INFO_PRINTER_MENU "Printer Info"
+#define MSG_INFO_STATS_MENU "Printer Stats"
+#define MSG_INFO_BOARD_MENU "Board Info"
+#define MSG_INFO_THERMISTOR_MENU "Thermistors"
+#define MSG_INFO_EXTRUDERS "Extruders"
+#define MSG_INFO_BAUDRATE "Baud"
+#define MSG_INFO_PROTOCOL "Protocol"
+#define MSG_INFO_TOTAL_PRINTS "Total Prints"
+#define MSG_INFO_FINISHED_PRINTS "Finished Prints"
+#define MSG_INFO_PRINT_TIME "Total Print Time"
+#define MSG_INFO_MIN_TEMP "Min Temp"
+#define MSG_INFO_MAX_TEMP "Max Temp"
+#define MSG_INFO_PSU "Power Supply"
+#define MSG_FILAMENT_CHANGE_HEADER "CHANGE FILAMENT"
+#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Extrude more"
+#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Resume print"
+
+#if LCD_HEIGHT >= 4
+ #define MSG_FILAMENT_CHANGE_INIT_1 "Wait for start"
+ #define MSG_FILAMENT_CHANGE_INIT_2 "of the filament"
+ #define MSG_FILAMENT_CHANGE_INIT_3 "change"
+ #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Wait for"
+ #define MSG_FILAMENT_CHANGE_UNLOAD_2 "filament unload"
+ #define MSG_FILAMENT_CHANGE_UNLOAD_3 ""
+ #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert filament"
+ #define MSG_FILAMENT_CHANGE_INSERT_2 "and press button"
+ #define MSG_FILAMENT_CHANGE_INSERT_3 "to continue..."
+ #define MSG_FILAMENT_CHANGE_LOAD_1 "Wait for"
+ #define MSG_FILAMENT_CHANGE_LOAD_2 "filament load"
+ #define MSG_FILAMENT_CHANGE_LOAD_3 ""
+ #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Wait for"
+ #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "filament extrude"
+ #define MSG_FILAMENT_CHANGE_EXTRUDE_3 ""
+ #define MSG_FILAMENT_CHANGE_RESUME_1 "Wait for print"
+ #define MSG_FILAMENT_CHANGE_RESUME_2 "to resume"
+ #define MSG_FILAMENT_CHANGE_RESUME_3 ""
+#else // LCD_HEIGHT < 4
+ #define MSG_FILAMENT_CHANGE_INIT_1 "Please wait..."
+ #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Ejecting..."
+ #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert and Click"
+ #define MSG_FILAMENT_CHANGE_LOAD_1 "Loading..."
+ #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Extruding..."
+ #define MSG_FILAMENT_CHANGE_RESUME_1 "Resuming..."
+#endif
+
+#endif // LANGUAGE_EL_H
diff --git a/Marlin/language_en.h b/Marlin/language_en.h
index a82da89bdd..57bc4a5fa8 100644
--- a/Marlin/language_en.h
+++ b/Marlin/language_en.h
@@ -30,15 +30,14 @@
#ifndef LANGUAGE_EN_H
#define LANGUAGE_EN_H
-#if DISABLED(MAPPER_NON) && DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_D0D1) && DISABLED(MAPPER_D0D1_MOD) && DISABLED(MAPPER_E382E383)
- #define MAPPER_NON // For direct ascii codes
-#endif
-
//#define SIMULATE_ROMFONT //Comment in to see what is seen on the character based displays
-#if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_CN)
+#if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) && DISABLED(DISPLAY_CHARSET_ISO10646_CN)
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
#endif
+#if DISABLED(MAPPER_NON) && DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_D0D1) && DISABLED(MAPPER_D0D1_MOD) && DISABLED(MAPPER_E382E383) && DISABLED(MAPPER_CECF)
+ #define MAPPER_NON // For direct ascii codes
+#endif
#ifndef WELCOME_MSG
#define WELCOME_MSG MACHINE_NAME " ready."
diff --git a/Marlin/language_test.h b/Marlin/language_test.h
index 17ad7bca0c..d2f99f6876 100644
--- a/Marlin/language_test.h
+++ b/Marlin/language_test.h
@@ -58,6 +58,7 @@
// Select the better font for full graphic displays.
//#define DISPLAY_CHARSET_ISO10646_1
//#define DISPLAY_CHARSET_ISO10646_5
+//#define DISPLAY_CHARSET_ISO10646_GREEK
//#define DISPLAY_CHARSET_ISO10646_KANA
diff --git a/Marlin/utf_mapper.h b/Marlin/utf_mapper.h
index ae599af6bd..829741756f 100644
--- a/Marlin/utf_mapper.h
+++ b/Marlin/utf_mapper.h
@@ -38,6 +38,8 @@
#define MAPPER_ONE_TO_ONE
#elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA)
#define MAPPER_ONE_TO_ONE
+ #elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK)
+ #define MAPPER_ONE_TO_ONE
#endif
#else // SIMULATE_ROMFONT
#if DISPLAY_CHARSET_HD44780 == JAPANESE
@@ -157,13 +159,44 @@
static uint8_t utf_hi_char; // UTF-8 high part
static bool seen_c2 = false;
uint8_t d = c;
- if ( d >= 0x80 ) { // UTF-8 handling
- if ( (d >= 0xc0) && (!seen_c2) ) {
- utf_hi_char = d - 0xc2;
+ if ( d >= 0x80u ) { // UTF-8 handling
+ if ( (d >= 0xc0u) && (!seen_c2) ) {
+ utf_hi_char = d - 0xc2u;
seen_c2 = true;
return 0;
}
else if (seen_c2) {
+ d &= 0x3fu;
+ #ifndef MAPPER_ONE_TO_ONE
+ HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20));
+ #else
+ HARDWARE_CHAR_OUT((char)(0x80u + (utf_hi_char << 6) + d)) ;
+ #endif
+ }
+ else {
+ HARDWARE_CHAR_OUT('?');
+ }
+ }
+ else {
+ HARDWARE_CHAR_OUT((char) c );
+ }
+ seen_c2 = false;
+ return 1;
+ }
+
+#elif ENABLED(MAPPER_CECF)
+
+ char charset_mapper(char c) {
+ static uint8_t utf_hi_char; // UTF-8 high part
+ static bool seen_ce = false;
+ uint8_t d = c;
+ if ( d >= 0x80 ) { // UTF-8 handling
+ if ( (d >= 0xc0) && (!seen_ce) ) {
+ utf_hi_char = d - 0xce;
+ seen_ce = true;
+ return 0;
+ }
+ else if (seen_ce) {
d &= 0x3f;
#ifndef MAPPER_ONE_TO_ONE
HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20));
@@ -178,7 +211,38 @@
else {
HARDWARE_CHAR_OUT((char) c );
}
- seen_c2 = false;
+ seen_ce = false;
+ return 1;
+ }
+
+#elif ENABLED(MAPPER_CECF)
+
+ char charset_mapper(char c) {
+ static uint8_t utf_hi_char; // UTF-8 high part
+ static bool seen_ce = false;
+ uint8_t d = c;
+ if ( d >= 0x80 ) { // UTF-8 handling
+ if ( (d >= 0xc0) && (!seen_ce) ) {
+ utf_hi_char = d - 0xce;
+ seen_ce = true;
+ return 0;
+ }
+ else if (seen_ce) {
+ d &= 0x3f;
+ #ifndef MAPPER_ONE_TO_ONE
+ HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20));
+ #else
+ HARDWARE_CHAR_OUT((char)(0x80 + (utf_hi_char << 6) + d)) ;
+ #endif
+ }
+ else {
+ HARDWARE_CHAR_OUT('?');
+ }
+ }
+ else {
+ HARDWARE_CHAR_OUT((char) c );
+ }
+ seen_ce = false;
return 1;
}