An alternative is to define an array of pointers to strings for each language in ROM, and set a RAM pointer at runtime to the appropriate language, then use message indexes off that pointer in your code.
Code:
/* ROM data */
char * messages_English[NUM_MESSAGES] =
{
"message 1 in English",
"message 2 in English",
"message 3 in English",
"message 4 in English"
};
char * messages_German[NUM_MESSAGES] =
{
"message 1 in German",
"message 2 in German",
"message 3 in German",
"message 4 in German"
};
char ** message_sets[NUM_OF_LANG] =
{
messages_English,
messages_German
}
Code:
/* RAM resident pointer */
char **message_File = message_sets[lang_index];
You then always reference your strings through message_File, as in
Code:
displayMessage(message_File[MSG_INDEX]);
where displayMessage() is a hypothetical function that displays a message, and MSG_INDEX is the index of the message you wish to display.