The best WordPress localization plugin is to use the default WordPress functions.
It's actually pretty straightfoward. Any text you want localized you put into one of two functions. The first one below echos out the text directly and the second one returns the text into an object. I always prefer the latter as you can always stick an 'echo' in front of the function if you want to echo it out.
_e($message, 'your_namespace')
__($message, 'your_namespace')
What happens is that if the $message has a traslation, that translation is returned. If not, then it's echoed out as is. This is nice because it allows you to put in all your localization placeholders before you get your translations together.
Next up, you create the translation files. You can create your own namespace by using one of many free tools to create a "portable object" (.po) file that you turn into a "machine object" (.mo) that is optimized for looking these things up. I use a free tool called Poedit to edit these files. The software is cross platform.
One you've got the placeholders in place and have uploaded your translation file (.mo) you simply drop a single line of code into your template's functions.php, or your plugin file. What you're saying here is "use these translations when you try to localize something in the 'your_namespace' namespace."
load_textdomain('your_namespace', (WP_CONTENT_DIR . '/path/to/file.mo'));