131 lines
3.6 KiB
PHP
131 lines
3.6 KiB
PHP
|
<?php
|
||
|
|
||
|
$langs = array("en","cz","it","es","pl");
|
||
|
|
||
|
function parselang($a) {
|
||
|
$out=array();
|
||
|
foreach ($a as $line){
|
||
|
if (!strpos($line,"MSG")) continue;
|
||
|
//echo $line;
|
||
|
preg_match('/\#define\s*(\S*)\s*(.*)/is',$line,$a);
|
||
|
//print_r($a);die();
|
||
|
if (!$a[1]) continue;
|
||
|
$v = trim($a[2]);
|
||
|
|
||
|
//$v = str_replace('MACHINE_NAME "','"Prusa i3',$v);
|
||
|
$v = str_replace('" FIRMWARE_URL "','https://github.com/prusa3d/Prusa-i3-Plus/',$v);
|
||
|
$v = str_replace('" PROTOCOL_VERSION "','1.0',$v);
|
||
|
$v = str_replace('" STRINGIFY(EXTRUDERS) "','1',$v);
|
||
|
$v = str_replace('" MACHINE_UUID "','00000000-0000-0000-0000-000000000000',$v);
|
||
|
|
||
|
$out[trim($a[1])]=$v;
|
||
|
}
|
||
|
return $out;
|
||
|
}
|
||
|
|
||
|
foreach ($langs as $lang) {
|
||
|
$f = file("language_".$lang.".h");
|
||
|
$$lang = parselang($f);
|
||
|
}
|
||
|
/*
|
||
|
$f = file("language_cz.h");
|
||
|
$cz = parselang($f);
|
||
|
|
||
|
$f = file("language_en.h");
|
||
|
$en = parselang($f);
|
||
|
*/
|
||
|
//print_r($cz);
|
||
|
|
||
|
$out="#ifndef LANGUAGE_ALL_H\n#define LANGUAGE_ALL_H\n\nextern unsigned char lang_selected;\nextern const char** MSG_ALL[];\n";
|
||
|
|
||
|
$counter=0;
|
||
|
$langname = 0;
|
||
|
$langsel = 0;
|
||
|
foreach ($cz as $k=>$v) {
|
||
|
|
||
|
$out .= "#define $k MSG_ALL[lang_selected][$counter]\n";
|
||
|
if ($k=="MSG_LANGUAGE_NAME") $langname = $counter;
|
||
|
if ($k=="MSG_LANGUAGE_SELECT") $langsel = $counter;
|
||
|
//$out2 .= "\t".''.$v.','."\n";
|
||
|
//$out3 .= "\t".''.$en[$k].','."\n";
|
||
|
|
||
|
$counter++;
|
||
|
}
|
||
|
$out.="#define LANGUAGE_NAME $langname \n";
|
||
|
$out.="#define LANGUAGE_SELECT $langsel \n";
|
||
|
$out.="#define LANG_NUM ".count($langs)." \n";
|
||
|
$out.="char* CAT2(const char *s1,const char *s2);\n";
|
||
|
$out.="char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4);\n";
|
||
|
$out.="\n\n\n#endif //LANGUAGE_ALL.H";
|
||
|
|
||
|
file_put_contents("language_all.h",$out);
|
||
|
echo ".h created\n";
|
||
|
|
||
|
|
||
|
$out="#include <avr/pgmspace.h>\n#include \"configuration_prusa.h\"\n#define LCD_WIDTH 20\nextern unsigned char lang_selected;\n";
|
||
|
foreach ($langs as $lang) {
|
||
|
$outa[$lang]="const char* MSG".strtoupper($lang)."[] = {";
|
||
|
}
|
||
|
//$out2="const char* MSGCZ[] = {";
|
||
|
//$out3="const char* MSGEN[] = {";
|
||
|
$counter=0;
|
||
|
foreach ($cz as $k=>$v) {
|
||
|
foreach ($langs as $lang) {
|
||
|
$out .= "const char MSG".strtoupper($lang)."${counter}[] PROGMEM = { ".${$lang}[$k]." }; //$k\n";
|
||
|
$outa[$lang].="MSG".strtoupper($lang)."$counter, //$k\n";
|
||
|
if (${$lang}[$k] == "") echo "ERR: In language: ".strtoupper($lang)." string \"".$k."\" NOT FOUND !\n";
|
||
|
}
|
||
|
//$out .= "const char MSGCZ${counter}[] PROGMEM = { $v }; //$k\n";
|
||
|
//$out .= "const char MSGEN${counter}[] PROGMEM = {".$en[$k]."}; //$k\n";
|
||
|
|
||
|
//$out2 .= "MSGCZ$counter, //$k\n";
|
||
|
//$out3 .= "MSGEN$counter, //$k\n";
|
||
|
$counter++;
|
||
|
}
|
||
|
|
||
|
$langlist=array();
|
||
|
foreach ($langs as $lang) {
|
||
|
$out.= $outa[$lang] . "};\n";
|
||
|
$langlist[]="MSG".strtoupper($lang);
|
||
|
}
|
||
|
/*
|
||
|
$out2.="};\n";
|
||
|
$out3.="};\n";
|
||
|
|
||
|
$out .= $out2;
|
||
|
$out .= $out3;
|
||
|
*/
|
||
|
|
||
|
|
||
|
$out .= "\n\nconst char** MSG_ALL[] = {".join(",",$langlist)."};";
|
||
|
|
||
|
$tools = <<<EOF
|
||
|
|
||
|
char langbuffer[LCD_WIDTH+1];
|
||
|
char* CAT2(const char *s1,const char *s2) {
|
||
|
unsigned char len=0;
|
||
|
strncpy_P(langbuffer+len,s1,LCD_WIDTH-len);
|
||
|
len+=strlen_P(s1);
|
||
|
strncpy_P(langbuffer+len,s2,LCD_WIDTH-len);
|
||
|
return langbuffer;
|
||
|
}
|
||
|
char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4) {
|
||
|
unsigned char len=0;
|
||
|
strncpy_P(langbuffer+len,s1,LCD_WIDTH-len);
|
||
|
len+=strlen_P(s1);
|
||
|
strncpy_P(langbuffer+len,s2,LCD_WIDTH-len);
|
||
|
len+=strlen_P(s2);
|
||
|
strncpy_P(langbuffer+len,s3,LCD_WIDTH-len);
|
||
|
len+=strlen_P(s3);
|
||
|
strncpy_P(langbuffer+len,s4,LCD_WIDTH-len);
|
||
|
return langbuffer;
|
||
|
}
|
||
|
EOF;
|
||
|
|
||
|
$out.=$tools;
|
||
|
|
||
|
file_put_contents("language_all.cpp",$out);
|
||
|
echo ".cpp created.\nDone!\n";
|
||
|
//const char MSG1[] PROGMEM = MSG_SD_INSERTED;
|
||
|
//const char* MSGCZ[] PROGMEM = {MSG_SD_INSERTED,MSG_SD_REMOVED};
|