Выбор по языку можно делать не только на фронте, но и настройками ngnix. Примерно, как описано вот здесь.
https://github.com/giom/nginx_accept_language_module
У меня трехязычный сайт, и там действует такая логика (на уровне NGNIX):
1. Установлена ли кука user_lang?
2. Если да, то она равна "en"? Если да - открываем
https://example.com
3. Если кука есть, но не равна "en", открываем
https://example.com/$user_lang
4. Если куки нет, и браузер имеет язык "ru" или "es", открыть
https://example.com/ru или
https://example.com/es
5. Если куки нет, и браузер имеет язык не "ru", и не "es", открыть
https://example.com
Соответственно, в самом приложении, при выборе языка из списка, ставится кука user_lang, чтобы пользователь мог зафиксировать свой выбор.