I have a php/smarty/pear app that has it's own localization implementation that involves using ids for strings and the strings are stored in a db. currently the app is only in English but I will start adding other languages. The current implementation is very poor and basically I'm not a big fan of re-inventing the wheel.
Can anybody recommend what to use for localization? I had used gettext years ago, is that still used or is there something newer and better ?
thanks in advance.
My best advice is to look at how other apps (Drupal, Joomla, Wordpress) handle localization, and implement something similar.
A few of the apps I have delved into have a single ini file for each language that contains STRING-ID="String Value" definitions, where the STRING-ID is similar to a PHP CONSTANT name. These files are then loaded by a localization class, which has functions that handle setting the language to be used (based on a config value or user setting), loading the file, and handle the translation of the STRING-ID into the String Value. You would end up using it like this:
This should produce something like Hallo Welt.
I would use gettext, since it's a mature system and provides features like singular/plural versions of translations. To be not dependant on the availability of the php extension, you should fall back to http://launchpad.net/php-gettext which provides a pure php implementation of gettext.
gettext has also the big advantage that dozens of tools exist that make it easy to translate those files.