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