Реализация многоязычности в PHP?
Лично я предпочитаю i18n. Для каждого модуля создаем свой языковой файл, содержащий все слова\фраз\надписи используемые в данном модуле. 
ru.ini:
[first]
0 = «Привет Мир!»
en.ini:
[first]
0 = «Hello World!»
непосредственно в самом шаблоне (к примеру смарти) пишем:
…
{_ first}
…
Не забываем через .htaccess обрабатывать префикс в урле:
site.ru/ru/
site.ru/en/
или иным способом отслеживать выбранную локаль.
В результате видим фразу на нужном нам языке.
Есть множество реализаций решения данной проблемы, лучшего среди них нету. Мне допустим, если говорить о PHP, больше остальных понравилась реализация i18n в Yii. Там ест ьстатический метод t(), на вход которого подается контекст перевода (считай название файла содержащего переводы строк), и второй параметр — непосредственно строка. Дальше идет поиск по массиву строк, где хэшем является строка на оригинальном языке… ну суть собственно ясна. Хранить в таком случае файлы переводов можно где угодно.

Косательно локализации контента — тут тоже можно применить несколько вариантов. Самый банальный — таблица с языками, один из который — язык по умолчанию. Дальше таблица с контентом, содержащая записи для различных языков. В таком случае можно использовать составной первичный ключ и выбирать по ID и по языку. но это просто первый вариант, взятый из головы.

Советую пройтись по готовым решениям данной проблемы и выбрать для себя лучшее для вашего проекта.