Самый простой способ без внешних библиотек:
// strings.h
enum
{
LANG_EN_EN,
LANG_EN_AU
};
enum
{
STRING_HELLO,
STRING_DO_SOMETHING,
STRING_GOODBYE
};
// strings.c
char* en_gb[] = {"Well, Hello","Please do something","Goodbye"};
char* en_au[] = {"Morning, Cobber","do somin'","See Ya"};
char** languages[MAX_LANGUAGES] = {en_gb,en_au};
Это даст вам то, что вы хотите,Очевидно, вы можете прочитать строки из файла.Т.е.
// en_au.lang
STRING_HELLO,"Morning, CObber"
STRING_DO_SOMETHING,"do somin'"
STRING_GOODBYE,"See Ya"
Но вам потребуется список имен строк, чтобы соответствовать заголовкам строк.то есть
// parse_strings.c
struct PARSE_STRINGS
{
char* string_name;
int string_id;
}
PARSE_STRINGS[] = {{"STRING_HELLO",STRING_HELLO},
{"STRING_DO_SOMETHING",STRING_DO_SOMETHING},
{"STRING_GOODBYE",STRING_GOODBYE}};
Вышеприведенное должно быть немного проще в C ++, так как вы можете использовать метод перечисления классов toString () (или что бы то ни было - не можетенадо искать его).
Все, что вам нужно сделать, это проанализировать языковые файлы.
Надеюсь, это поможет.
PS: и получить доступ к строкам:
languages[current_language][STRING_HELLO]
PPS: извинения за половину c половина C ++ ответ.