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
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.