Listing 2 Files for handling multilingual messages

/* file STRDEFB.H */

    defstr ( InitStr , "init String Lang 1", "Init String Lang
2" )
    defstr ( OtherStr , "Other String Lang 1", "Other String
Lang 2" )

/* file STRDEMOB.C */

    #include "strhndlb.h"
    #include <stdio.h>

    int main ()
        {
        set_language(LANG_1);
        puts(get_str(InitStr));
        puts(get_str(OtherStr));
        set_language(LANG_2);
        puts(get_str(InitStr));
        puts(get_str(OtherStr));
        return 0;
        }

/* file STRHNDLB.H */

    enum language { LANG_1, LANG_2 };

    extern int Language;

    #define defstr(x,y,z) extern char *x[];
    #include "strdefb.h"

    #define set_language(x) Language = x
    #define get_str(x)      x[Language]

/* file STRHNDLB.C */

    #include "strdefb.h"

    int Language;
/* End of File */