Как указано ниже; сначала используйте сеансы и файлы cookie, а затем возвращайтесь к угадыванию предпочтительного языка пользователя. Если у пользователя есть логин, сохраните информацию в базе данных, прикрепленной к пользователю. Идентификатор языка может быть.
Добавить код проверки языка, который проверяет настройки в следующем порядке:
профиль пользователя (БД)
сессия
печенье
приблизительная
При ручном изменении обновите все уровни, например, дб, сессия и куки.