{% import '_macros/language.twig' as lang %}

<div class="header__language">
    {% set allSites = craft.app.sites.getAllSites() %}
    {% set queryString = craft.app.request.queryString %}
    {% if craft.app.request.queryString %}
        {% set path = craft.app.request.pathInfo ~ '?' ~ craft.app.request.queryString %}
    {% else %}
        {% set path = craft.app.request.pathInfo %}
    {% endif %}
    {% for key, site in allSites %}
        {% if key > 0 %}
            <span class="header__language-separator">|</span>
        {% endif %}
        {% if entry is defined and entry.url %}
            {% set localizedEntry = entry.getLocalized().site(site.handle).one() %}
            {% set url = localizedEntry ? localizedEntry.url : site.baseUrl %}
        {% else %}
            {% set url = site.baseUrl ~ path %}
        {% endif %}
        <a href="{{ url }}" class="header__language-link {{ site.language == craft.app.language ? 'header__language-link--active' : '' }}">
            {{ site.language | upper }}
        </a>
    {% endfor %}
</div>