Самый простой способ, который часто используется, это вынести тексты в отдельный файл вроде INI или в БД создать под это таблицу, в которой определить системные ключи для текста, и выводить на страницу уже значения от туда.
В случае ини подгружать файл в соответствии с выбранным пользователем локализации (или определенной по GPS, или другим способом).
В случае БД просто делать выгрузку таблицы по ключу локализации.
Еще как вариант использовать дополнительное звено в путях шаблонов, но это приведет к множественному дублированию шаблонов страниц, что в корне является неправильной архитектурой, так как в разы усложняет поддержку кода.
Логика кода никак не должна зависеть от локализации, по этому лучше организовать небольшую систему, которая будет перенастраиваться под язык, а получение текста будет осуществляться по системным именам вроде:
title = lang.get('main.head.title');