On Lingohub.com there's a recent tutorial posted about using gettext for the internationalization of your application. The gettext functionality lets you define POT files (portable object templates) that contain the strings for the given language.
GNU gettext is a package that offers to programmers, translators and even users a well integrated set of tools that provide a framework within which other free packages may produce multi-lingual messages. [...] In this tutorial we want to document how PHP internationalization with gettext works. It covers setup, use and best practice.
They go through the installation of both the gettext software and how to get support for it built into PHP. There's a detailed guide to creating the POT files and the formatting you can use to define things like simple messages, plurals and multiple response messages. An example file is included to illustrate. They also talk about the directory structure to use and how to get it working in PHP (sample code).