Aiuto con concatenazione char*

Si infatti poco fa ho modificato la funzione:

fuori dalla funzione ho questo:

char StringWithSpaces[14];

questa è la nuova funzione:

char *printMenuItem2(byte id_lingua2, byte id_stringa2)
{
String stringaMenu = multiliguaArray2[id_lingua2][id_stringa2];
String stringaSpazi;
  
  //char stringa[] = multiliguaArray2[id_lingua2][id_stringa2];
int lenght = stringaMenu.length();

if(lenght >= 14)
{
stringaMenu.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}

byte spaces = (((LCD_COLONNE - 2) - lenght) / 2);
char spazio = ' ';

for(int x=0; x<spaces; x++)
{  
stringaSpazi = stringaSpazi + spazio;
}
//StringWithSpaces2[spaces] = '\0';

stringaSpazi = stringaSpazi + stringaMenu;

stringaSpazi.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}

Dentro la funzione uso String, alla fine converto String e lo copia nel char StringWithSpaces.

Il programma in questo modo non si blocca, ma menu beckend, se faccio una cosa del genere:

MenuItem photo_tool = MenuItem(printMenuItem2(ITA,MENU_STRUMENTI));//Nomi del menu (PHOTOTOOL)
MenuItem settings = MenuItem(printMenuItem2(ITA,MENU_IMPOSTAZIONI)); //Nomi del menu (IMPOSTAZIONI)

Sfogliando il menu mi restituisce sempre l'ultimo elemento , in questo caso IMPOSTAZIONI, anche dove dovrebbe esserci strumenti...