Как лучше и проще реализовать поддержку нескольких языков для сайта?
Современные браузеры почти всегда отправляют заголовок Accept-Language содержащий все предпочитаемые пользователем языки, с их приоритетами, если не удалось определить - грузим дефолтовый язык (как правило английский)
Например мой браузер отправляет в этом заголовке значение ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 - что означает, что больше всего я предпочитаю русский (0.8), если его нет, то английский (диалект США, 0.6), в последнюю очередь (0.4) мне подойдет английский-международный
в большинстве нормальных фреймворков это делается почти из коробки
вы не указали стек технологий и потому я буду говорить о бекенде и сугубо для PHP (для других бекенд языков будет справедливо с некоторыми оговорками, о которых я могу не знать).
обычно текущая локаль хранится в сессии. если ее там нет, то берем дефолтную, да, все верно, все именно так. при каждом запросе нужно проверять значение текущей локали, которая хранится в сессии и по этому значению подгружать соответствующий вариант локализации