Я из-за неопытности недопонимаю, зачем городить такую мега-структуру, если я из файла считаю json который предлагал и в любой момент могу получить нужный язык. Потом править очень просто...
$file_lang = json_decode ( file_get_contents ( "file.lang" ) , true );
и после этого выводить <?=$file_lang[key][ru]?> или <?=$file_lang[key][ua]?>
seredaes: ну сложно назвать gettext мега структурой. одна функция для обрамления русского текста и несколько файлов для перевода с помощью приложения poedit.
использование ассоциативных массивов для хранения переводов допустимо если у вас маленький проект, мало переводов.