As far as using the database data I key in a lang field. Values could be numeric or something like EN, ES, BR.. etc.
That is usually for user input.
For html page info like titles, column headers etc. I use a flat file
For example on a page you could state
<H3>Database talk</H3>
blblblblbaalbla
<td>Forum List</td><td>New Topic</td><td>Go to top</td>
Change that to
<H3>$phpbuilder["databasetalk"]</H3>
blblblblbaalbla
<td>$phpbuilder["forumlist"]</td>
<td>$phpbuilder["newtopic"]</td>
<td>$phpbuilder["gototop"]</td>
The $phpbuilder array would then have the data for a language specific interface. If I hold the info in a file like
phpbuilder.en
and state
$phpbuilder["databasetalk"]="Database Talk";
$phpbuilder["forumlist"]="Forum List";
etc.. you get the idea
then in a file like
phpbuilder.es
i hold
$phpbuilder["databasetalk"]="Hablando de Bases de Datos";
$phpbuilder["forumlist"]="Lista del Foro";
I can include(%your language file here%) just before I output any HTML. The language is automatically changed. Plus I can open the file in a word procesor and translate or check spelling.
Saludos
Gerardo