No longer actively maintained. I work now with NodeJS and I recommand you to take a look at globalize
Localize is an internationalization toolbox with Gettext wrapper, Extractors, Unicode CLDR.
and some internationalization ISO codes.
Translator and GettextEmulator are RedCat's OOP adapation of php-gettext library.
This library provides PHP functions to read MO files even when gettext is not compiled in or when appropriate locale is not present on the system.
The structure of locales is $projectHome/langs/$lang/LC_MESSAGES/messages.mo, eg: www/langs/fr/LC_MESSAGES/messages.mo. It support cache regeneration without restart apache by dint of use a copy of MO file named with timestamp suffix. To enable look for last message.$time.mo set dev to true. You'll have to create this file manualy or with other i18n tool.
Translator::getInstance()->dev = true;
You can include "__.php" to use procedural function based on RedCat\Localize\Translator static current instance.
echo \_\_($msgid);
echo n\_\_($singular,$plural,$number);
Punic - PHP translation and localization made easy. It contain internationalization data for language, calendar, territory, number, unit, phone, currency, plural and misc. Punic is a third party CLDR. library. See the official Punic documentation.