Did you ever have problems with the lack of gettext support on your hosting provider? I surely did.
Did you ever have problems with using system-set locales on your hosting provider (eg. imagine using a "sr@Latn" locale on a system which doesn't even have sane "sr" locales)? I surely did.
So, what's the solution? You either don't have the root access to the system, or you don't want to bother installing all the software and locales just to make translations happen.
Well, there was a "fallback" library for reading MO files (products of GNU gettext msgfmt tool) for a long time in standard Python distribution, but there was none for PHP (at least I couldn't find it).
There WAS none, but there is one NOW! It's called PHP-gettext (am I not inventive?), and you can grab PHP-gettext 1.0.1 from my hacks collection. It's published under GPL, so it's free software. It also means that there's no warranty, and that it at least
It's based on the description of MO file format in gettext info documentation. Doesn't provide all the background architecture of gettext proper, but it provides what you need most: using gettext() or _() calls, and using ngettext() calls. Oh yeah, it might be real slow for you — I didn't use it with project larger than 100 strings so far.
Some may consider it a feature, others may consider it a bug, but you can set the full path to the MO file that you want to read. This means that you have to take care of the administrativia of "gettext domains", "locales", etc. but in a sense where PHP is used, I consider it only a plus.
Anyway, check the lengthy README file (included) for all the details.
 There was a short-lived 1.0.0 version which is almost the same