Это ключ. Почему то все начинающие (не в плане кода, а в плане мыслей) пытаются сделать модалку в модалке)). Это не удобно, конфликтно и не адаптивно. Придумайте другое решение. Теоретически можно открыть модалку, но при этом закроется предыдущая. Суть внутренней сущьности должен быть не модалка, а какой нибудь дропдаун или селект. Просто стилизованный под модалку
В целом вообще всё не правильно. Зачем скрывать один Header и запуливать его транслейтом за пределы видимости и показывать другой? Это не только костыль, но и не семантично.
Если нет противопоказаний для position: sticky используйте это, без всяких скриптов.
Если требуется со скриптом и переключение позиционирования, то одному и тому же Header при прокрутке добавляете/удаляете класс sticky например. И там уже, в css пишете для sticky position fixed.
Это базовый принцип. Но при переключении позиционирования будет скачек контента из-за того что Header вылетает из потока при position fixed.
Поэтому, position fixed и всё стиливое оформление надо назначать для внутреннего блока, который должен быть размещен в Header. У самого Header должна быть настроена только высота.
Или добавлять padding-top равный высоте Header когда он получает класс sticky, для блока следующего за ним.
Эти подходы предотвратят скачек контента при скролле
Такие вещи не селектом делаются а дропдауном. А уже дропдаун можно стилизовать как угодно. Переключатель языков это по сути меню с группой ссылок, а не поле выбора в форме.
Вот здесь найдешь полезные ответы https://qna.habr.com/q/812917. Текст в родителе меняется скриптом основываясь на какой то зависимости, например наличия в url /ua или /en если речь идет о простом html сайте.