I was having very strange issues with gettext only setting the locale once per Apache process (non-threaded), until I found this bug report:
http://bugs.php.net/bug.php?id=21965
It almost seemed like gettext was caching the data once per process, but in fact calling textdomain() fixed the issue for me.