Ja najczęściej robię tak:
1. Dla statycznych stron:
robię pliki językowe:
<?php
// lang_pl.php
$header_text = 'Tekst nagłówka';
$footer_text = 'Tekst stopki';
?>
<?php
// lang_en.php
$header_text = 'Header text';
$footer_text = 'Footer text';
?>
i tak więcej plików w zależności ile chcesz języków. I teraz w pliku, gdzie wyświetlasz dane:
<?php
$lang = get_language(); // zakładając, że funkcja zwraca język w dwóch literach, np. "pl"
include_once('lang_'.$lang.'.php');
// i tutaj sobie wyświetlasz
<!-- ...tresc strony... -->
<div id="headerDiv">'.$header_text.'</div>
<div id="footerDiv">'.$footer_text.'</div>
<!-- ...tresc strony... -->
';
?>
2. dla stron, gdzie np. się dodaje artykuły w różnych językach osobiście korzystam z hintu na bazach danych.