Расскажу как работает на одном из наших проектов. Есть несколько языковых файлов из пункта 2, в шаблонах все прописано как в пункте 3, изначально по заголовкам определяется язык, если в списке поддерживаемых языков пользовательского нет, показываем языковую версию по умолчанию. Если нужно изменить тексты - просто правим языковые файлы из пункта 2 в нужных местах.