I have no experience on gettext so no comment, but I have built a few multi-lingual sites.
METHOD 1
I wouldn't say my format is the best, just that's it's effective. I've also used array. Depending on where the content is stored.
For example, I'll have an associative array of text with the indexes identifying which text:
$text['english']['welcome'] = "Welcome to my site. blah blah blah";
$text['english']['login'] = "Please enter your username and password to login";
And maybe set your language with a constant or config variable.
METHOD 2
I've built two sites with identical structures and back-ends but each one used a different database and were maintained separately. data_french, data_english
Hope that helps.