If you want users of your application (or third-party translators) to easily update translations without changing the code, go to one of the solutions that stores translations in the database.
If you need better control (version control, multiple sets of eyes, etc.), use gettext. Using gettext, you can also control which lines you want to translate.
Just my 2c.
knutin
source share