Riva:
To have arrays like this you need to also have an array of pointers to the strings for it to work.
Actually I finally found out what's going on. It seems the Arduino example is depreciated (specifically, the "prog_char" and "prog_int", etc.. type of declaration).
I found that THIS works:
char buffer[64];
const char *template[] = PSTR("Hi my name is %s and I am %d years old!\r\n");
sprintf_P(buffer, template, "Roger", 55);
Serial.print(buffer);
lcd.print(buffer);
whatever.print(buffer);
The "template" string is stored in flash with this method.