In C/C++ using the preprocessor would be a much better way than environment variables, I would guess. That way you could have something like
#ifdef ENGLISH_LANG
#include <english.h>
#else
// (other languages, etc.)
#endif
// english.h
#define EMU_LOADROM "Load Rom" // or should it be a const char* maybe?
#define EMU_RESUMEGAME = "Resume Game"
and so on.
NOTE: I don't really know C/C++, only learned it in school (supposedly), so that could be completely wrong or a bad idea...
The trouble is you then have a (programming)language specific approach with a (spoken)language being hard complied in. If you're including english.h then the complied output will be in English
The suggestion for environment variables means you could change the variables in your language.sh (for example), or install a new one for your chosen language, and ALL apps would instantly show the new definitions without needing to be recompiled. So on runtime the application could import the envars with something like (and I don't remember c, even though I only did it a term ago so please excuse any syntax or continuity errors):
varLoadRom = system('echo $EMU_LOADROM');
varResumeGame = system('echo $EMU_RESUMEGAME');
varQuit = $SYS_EXIT('echo $SYS_EXIT');
/* Display a basic menu */
printf ("1) %s /n 2) %s /n 3) %s", varLoadRom, varResumeGame, varQuit);
exit 0
So you see, when the language file is updated, the game will dynamically update itself on runtime