This is not needless complexity. It is absolutely vital, because it enables gettext to run on top of catgets , which enables Linux International to recommend users use it today . Rewriting gettext so that it could use either catgets or some simpler mechanism would not break anything, but would not reduce complexity either. It might be worth doing, but it isn't urgent. In general, simplicity is not enough of a reason to rewrite a program that works.
Simplicity is just one desirable thing.
It is not overridingly important.