Поскольку вы работаете на PHP 5.3.2, я определенно рекомендую проверить расширение intl , если вы можете. Он полон удобных функций и классов, чтобы помочь в i18n. Например, вы можете использовать следующий фрагмент кода, чтобы сгенерировать «наиболее подходящий» язык для вашего посетителя из доступных вам:
$langs = array('en', 'fr', 'de');
$preferences = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$locale = Locale::lookup($langs, $preferences);
Также есть над чем подумать, кроме прямой замены слова в слово. Разные языки имеют разные соглашения о форматировании. В этой Zend статье содержится много информации, которая может оказаться полезной.
Мой код использует XSL для создания шаблонов лично, когда дело доходит до переводов, я использую языковые файлы XML и запросы XPath, так что языковой файл может быть понят непосредственно шаблонами, но также доступен PHP для форматирования строк с MessageFormatter .
Я бы не стал использовать базу данных как хранилище, если честно, просто для производительности.