не
- твою идею я понял, но она мне не нравится.
А как относилось к твоему вопросу как это еще сделать...
В варианте с стринг таблицей я не делал бы чередование.
Ведь тогда при добавлении третьего и четвертого и т.д. языков придется переделывать всю таблицу.
Идея использовать индекс в таблице верная, как и разные файлы.
Файлы удобнее тем, что их можно менять не пересобирая программу внешне, что даст возможность спокойно распротранить программу с одним языком и добавлять переводы без апдейтов.
Вариант с пересобиранием тоже впоне приемлим если варианты перевода желательно оставлять авторскими без изменений ловкими и умными пользователями.
Я бы сделал так.
Скажем есть колличество нужных фраз для программы.
#define TEXT_COUNT 1100
Далее заводим таблицу с текстами такого вида
индекс 0 -начало английского интерфейса
индекс TEXT_COUNT-1 конец английского интерфейса
индекс TEXT_COUNTначало русского интерфейса
индекс TEXT_COUNT*2-1 конец русского интерфейса
и т.д.
Тогда можно завести маленькие дополнения.
#define LANG_COUNT 10 // колличество языков
int base_lang_index[LANG_COUNT ]; // базовый стартовый индекс для языка где LANG_COUNT будет номер языка
Вот тебе формула для расчета base_lang_index.
base_lang_index[count_num] = count_num*TEXT_COUNT;
В данном варианте в любой из новых языков добавляется легкой пририсовкой всех текстов вниз таблици и изменением LANG_COUNT +1.