From 10967373aa1f458169d6402284cdc8901ea00271 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:06:25 +1300 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Indonesian,=20Hindi-Latin=20(hg)?= =?UTF-8?q?=20(#28305)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 4 +- Marlin/src/core/language.h | 2 + Marlin/src/lcd/dogm/fontdata/langdata_hg.h | 11 ++ Marlin/src/lcd/dogm/fontdata/langdata_id.h | 11 ++ Marlin/src/lcd/language/language_hg.h | 107 +++++++++++++++++++ Marlin/src/lcd/language/language_id.h | 114 +++++++++++++++++++++ buildroot/share/fonts/genallfont.sh | 2 +- buildroot/share/scripts/languageUtil.py | 2 + buildroot/tests/mega2560 | 4 +- 9 files changed, 252 insertions(+), 5 deletions(-) create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_hg.h create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_id.h create mode 100644 Marlin/src/lcd/language/language_hg.h create mode 100644 Marlin/src/lcd/language/language_id.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index a443d4b302..b2e29a1c94 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2754,10 +2754,10 @@ * * Select the language to display on the LCD. These languages are available: * - * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it, + * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hg, hr, hu, id, it, * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW * - * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } + * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hg':'Hinglish (Hindi-Latin)', 'hr':'Croatian', 'hu':'Hungarian', 'id':'Indonesian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } */ #define LCD_LANGUAGE en diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 96aa58c807..00181b602f 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -57,8 +57,10 @@ // fr French // fr_na French without accents (DWIN T5UID1 touchscreen) // gl Galician +// hg Hinglish (Hindi in Latin script) // hr Croatian // hu Hungarian +// id Indonesian (Bahasa) // it Italian // jp_kana Japanese // ko_KR Korean (South Korea) diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hg.h b/Marlin/src/lcd/dogm/fontdata/langdata_hg.h new file mode 100644 index 0000000000..4af7a48295 --- /dev/null +++ b/Marlin/src/lcd/dogm/fontdata/langdata_hg.h @@ -0,0 +1,11 @@ +/** + * Generated automatically by buildroot/share/fonts/uxggenpages.sh + * Contents will be REPLACED by future processing! + * Use genallfont.sh to generate font data for updated languages. + */ +#pragma once + +#include "langdata.h" + +// Hinglish uses the base ISO10646-1 pages, so no extra glyphs are needed. +static const uxg_fontinfo_t g_fontinfo_hg[] PROGMEM = {}; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_id.h b/Marlin/src/lcd/dogm/fontdata/langdata_id.h new file mode 100644 index 0000000000..7b44fd3149 --- /dev/null +++ b/Marlin/src/lcd/dogm/fontdata/langdata_id.h @@ -0,0 +1,11 @@ +/** + * Generated automatically by buildroot/share/fonts/uxggenpages.sh + * Contents will be REPLACED by future processing! + * Use genallfont.sh to generate font data for updated languages. + */ +#pragma once + +#include "langdata.h" + +// Indonesian reuses the base ISO10646-1 font set; no extra glyphs needed. +static const uxg_fontinfo_t g_fontinfo_id[] PROGMEM = {}; diff --git a/Marlin/src/lcd/language/language_hg.h b/Marlin/src/lcd/language/language_hg.h new file mode 100644 index 0000000000..5552413811 --- /dev/null +++ b/Marlin/src/lcd/language/language_hg.h @@ -0,0 +1,107 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2026 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 . + * + */ +#pragma once + +/** + * Hinglish (Hindi-Latin) + * + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +/** + * Imported from out-csv/language_hg.csv on 2026-02-27 at 14:31:47 + */ + +#define DISPLAY_CHARSET_ISO10646_1 +#define NOT_EXTENDED_ISO10646_1_5X7 + +namespace LanguageNarrow_hg { + using namespace Language_en; // Inherit undefined strings from English + + constexpr uint8_t CHARSIZE = 2; + LSTR LANGUAGE = _UxGT("Hinglish"); + + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" taiyaar."); + LSTR MSG_MEDIA_INSERTED = _UxGT("Card lagi"); + LSTR MSG_MEDIA_REMOVED = _UxGT("Card nikal gayi"); + LSTR MSG_MAIN_MENU = _UxGT("Mukhya Menu"); + LSTR MSG_DISABLE_STEPPERS = _UxGT("Motor band"); + LSTR MSG_AUTO_HOME = _UxGT("Auto Ghar"); + LSTR MSG_AUTO_HOME_X = _UxGT("Ghar X"); + LSTR MSG_AUTO_HOME_Y = _UxGT("Ghar Y"); + LSTR MSG_AUTO_HOME_Z = _UxGT("Ghar Z"); + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Start ke liye click"); + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Agla point"); + LSTR MSG_LEVEL_BED_DONE = _UxGT("Leveling ho gaya!"); + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Home offset set karo"); + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets lage"); + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Sab"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed"); + LSTR MSG_COOLDOWN = _UxGT("Thanda karo"); + LSTR MSG_SWITCH_PS_ON = _UxGT("Power chalu"); + LSTR MSG_SWITCH_PS_OFF = _UxGT("Power band"); + LSTR MSG_EXTRUDE = _UxGT("Nikalna"); + LSTR MSG_RETRACT = _UxGT("Wapas lena"); + LSTR MSG_MOVE_AXIS = _UxGT("Axis hilaao"); + LSTR MSG_LEVEL_BED = _UxGT("Bed Satao"); + LSTR MSG_MOVE_X = _UxGT("X hilaao"); + LSTR MSG_MOVE_Y = _UxGT("Y hilaao"); + LSTR MSG_MOVE_Z = _UxGT("Z hilaao"); + LSTR MSG_MOVE_E = _UxGT("Extruder"); + LSTR MSG_FAN_SPEED = _UxGT("Pankha gati"); + LSTR MSG_CONTROL = _UxGT("Niyantran"); + LSTR MSG_TEMPERATURE = _UxGT("Tapmaan"); + LSTR MSG_STOP_PRINT = _UxGT("Print roko"); + LSTR MSG_YES = _UxGT("Haan"); + LSTR MSG_NO = _UxGT("Nahi"); + LSTR MSG_BACK = _UxGT("Peeche"); + LSTR MSG_CONFIGURATION = _UxGT("Settings"); + LSTR MSG_BUTTON_NEXT = _UxGT("Aage"); + LSTR MSG_BUTTON_INIT = _UxGT("Shuru"); + LSTR MSG_HOME_ALL = _UxGT("Sab Ghar"); +} + +namespace LanguageWide_hg { + using namespace LanguageNarrow_hg; + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_hg { + using namespace LanguageWide_hg; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_hg { + using namespace LanguageTall_hg; +} diff --git a/Marlin/src/lcd/language/language_id.h b/Marlin/src/lcd/language/language_id.h new file mode 100644 index 0000000000..8f5c6164c8 --- /dev/null +++ b/Marlin/src/lcd/language/language_id.h @@ -0,0 +1,114 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2026 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 . + * + */ +#pragma once + +/** + * Indonesian + * + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +/** + * Imported from out-csv/language_id.csv on 2026-02-27 at 14:31:51 + */ + +#define DISPLAY_CHARSET_ISO10646_1 +#define NOT_EXTENDED_ISO10646_1_5X7 + +namespace LanguageNarrow_id { + using namespace Language_en; // Inherit undefined strings from English + + constexpr uint8_t CHARSIZE = 2; + LSTR LANGUAGE = _UxGT("Bahasa Indonesia"); + + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" siap."); + LSTR MSG_MEDIA_INSERTED = _UxGT("Kartu terpasang"); + LSTR MSG_MEDIA_REMOVED = _UxGT("Kartu dilepas"); + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstop"); + LSTR MSG_MAIN_MENU = _UxGT("Menu Utama"); + LSTR MSG_DISABLE_STEPPERS = _UxGT("Matikan motor"); + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ"); + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik untuk mulai"); + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Titik berikutnya"); + LSTR MSG_LEVEL_BED_DONE = _UxGT("Perataan selesai!"); + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Setel offset home"); + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset diterapkan"); + LSTR MSG_PREHEAT_1 = _UxGT("Panaskan ") PREHEAT_1_LABEL; + LSTR MSG_PREHEAT_1_ALL = _UxGT("Panaskan ") PREHEAT_1_LABEL _UxGT(" semua"); + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Panaskan ") PREHEAT_1_LABEL _UxGT(" bed"); + LSTR MSG_COOLDOWN = _UxGT("Dinginkan"); + LSTR MSG_SWITCH_PS_ON = _UxGT("Hidupkan daya"); + LSTR MSG_SWITCH_PS_OFF = _UxGT("Matikan daya"); + LSTR MSG_EXTRUDE = _UxGT("Ekstrusi"); + LSTR MSG_RETRACT = _UxGT("Tarik balik"); + LSTR MSG_MOVE_AXIS = _UxGT("Gerak sumbu"); + LSTR MSG_LEVEL_BED = _UxGT("Ratakan bed"); + LSTR MSG_MOVE_X = _UxGT("Gerak X"); + LSTR MSG_MOVE_Y = _UxGT("Gerak Y"); + LSTR MSG_MOVE_Z = _UxGT("Gerak Z"); + LSTR MSG_MOVE_E = _UxGT("Ekstruder"); + LSTR MSG_FAN_SPEED = _UxGT("Kecep. kipas"); + LSTR MSG_FLOW = _UxGT("Aliran"); + LSTR MSG_CONTROL = _UxGT("Kontrol"); + LSTR MSG_TEMPERATURE = _UxGT("Suhu"); + LSTR MSG_STOP_PRINT = _UxGT("Hentikan cetak"); + LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Tes bar kemajuan"); + LSTR MSG_YES = _UxGT("Ya"); + LSTR MSG_NO = _UxGT("Tidak"); + LSTR MSG_BACK = _UxGT("Kembali"); + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Kesalahan baca media"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Endstop lunak"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Pengaturan lanjut"); + LSTR MSG_CONFIGURATION = _UxGT("Konfigurasi"); + LSTR MSG_BUTTON_NEXT = _UxGT("Lanjut"); + LSTR MSG_BUTTON_INIT = _UxGT("Mulai"); + LSTR MSG_HOME_ALL = _UxGT("Home semua"); + LSTR MSG_PREHEAT_2 = _UxGT("Panaskan ") PREHEAT_2_LABEL; + LSTR MSG_PREHEAT = _UxGT("Panaskan"); +} + +namespace LanguageWide_id { + using namespace LanguageNarrow_id; + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + #endif +} + +namespace LanguageTall_id { + using namespace LanguageWide_id; + #if LCD_HEIGHT >= 4 + // Filament Change screens show up to 3 lines on a 4-line display + #endif +} + +namespace Language_id { + using namespace LanguageTall_id; +} diff --git a/buildroot/share/fonts/genallfont.sh b/buildroot/share/fonts/genallfont.sh index 68d69c29d0..6215fa78de 100755 --- a/buildroot/share/fonts/genallfont.sh +++ b/buildroot/share/fonts/genallfont.sh @@ -62,7 +62,7 @@ fi # # By default loop through all languages # -LANGS_DEFAULT="an bg ca cz da de el el_CY en es eu fi fr fr_na gl hr hu it jp_kana ko_KR nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test" +LANGS_DEFAULT="an bg ca cz da de el el_CY en es eu fi fr fr_na gl hg hr hu id it jp_kana ko_KR nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test" DN_WORK=$(mktemp -d) open "$DN_WORK" diff --git a/buildroot/share/scripts/languageUtil.py b/buildroot/share/scripts/languageUtil.py index d73ab4bf7b..b77cf928a9 100755 --- a/buildroot/share/scripts/languageUtil.py +++ b/buildroot/share/scripts/languageUtil.py @@ -21,8 +21,10 @@ LANGNAME = { 'fr': { 'size':2, 'iso': "1", 'name':"French" }, 'fr_na': { 'size':1, 'iso': "1", 'name':"French (no accent)", 'noext':1 }, 'gl': { 'size':1, 'iso': "1", 'name':"Galician" }, + 'hg': { 'size':2, 'iso': "1", 'name':"Hinglish (Hindi-Latin)", 'noext':1 }, 'hr': { 'size':2, 'iso': "1", 'name':"Croatian (Hrvatski)" }, 'hu': { 'size':2, 'name':"Hungarian / Magyar" }, + 'id': { 'size':2, 'iso': "1", 'name':"Indonesian", 'noext':1 }, 'it': { 'size':1, 'iso': "1", 'name':"Italian" }, 'jp_kana': { 'size':3, 'iso': "KANA", 'name':"Japanese (Kana)" }, 'ko_KR': { 'size':1, 'name':"Korean" }, diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index 8eb95a9a71..468ade98d6 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -251,11 +251,11 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # #restore_configs #opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT -#for lang in an bg ca cz da de el el_CY en es eu fi fr gl hr hu it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done +#for lang in an bg ca cz da de el el_CY en es eu fi fr gl hg hr hu id it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done # #restore_configs #opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT -#for lang in an bg ca cz da de el el_CY en es eu fi fr gl hr hu it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done +#for lang in an bg ca cz da de el el_CY en es eu fi fr gl hg hr hu id it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done ######## Example Configurations ############## #