Я думаю, это будет зависеть от вашей среды. Вы генерируете одни и те же страницы на нескольких языках, используя веб-фреймворк с базой данных, или у вас есть статические страницы?
Во многих распространенных веб-инфраструктурах (rails или symfony) вы можете настроить правила маршрутизации для # 1, которые будут автоматически заполнять параметр языком, который контроллер будет использовать для генерации соответствующего контента. Конечно, три тоже подойдут, но, на мой взгляд, это немного отвлекает.
2 особенно уместно, если вы вызывали перенаправление на уровне веб-сервера, и имеет преимущество, заключающееся в том, что URL-адреса могут быть разрешены или не потеряны в настройках языка вашего пользователя. Другими словами, ссылка на / home приведет вас к правильной языковой версии «домашней» страницы.
Последний вариант - сохранить язык в качестве предпочтения пользователя в файле cookie, а не заполнять его в URL-адресе.