Судя по этой заметке , вам, скорее всего, не хватает битов UTF-8.Это помогло мне с проблемой «Gettext не работает».
$directory = dirname(__FILE__).'/locale';
$domain = 'mydomain';
$locale ="fi_FI.utf8";
//putenv("LANG=".$locale); //not needed for my tests, but people say it's useful for windows
setlocale( LC_MESSAGES, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
Внутри локали должна быть файловая структура
./locale/pt/LC_MESSAGES/mydomain.mo
или аналогичная.
Важно:Если файл mo уже прочитан Apache, его необходимо перезапустить, чтобы он мог прочитать новый файл.Другими словами, есть какая-то система кеширования, о которой я до сих пор не знаю.