{# Composant de sélection de langue #}
<div class="locale-switcher">
<div class="dropdown">
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" id="localeDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<span class="locale-icon">🌐</span>
{% if app.request.locale == 'fr' %}
🇫🇷 Français
{% else %}
🇬🇧 English
{% endif %}
</button>
<ul class="dropdown-menu" aria-labelledby="localeDropdown">
<li>
<a class="dropdown-item {% if app.request.locale == 'fr' %}active{% endif %}" href="{{ path('app_locale_switch', {'locale': 'fr'}) }}">
🇫🇷 Français
</a>
</li>
<li>
<a class="dropdown-item {% if app.request.locale == 'en' %}active{% endif %}" href="{{ path('app_locale_switch', {'locale': 'en'}) }}">
🇬🇧 English
</a>
</li>
<li><hr class="dropdown-divider"></li>
<li>
<a class="dropdown-item" href="{{ path('app_locale_reset') }}">
🌐 {{ 'locale.auto_detect'|trans }}
</a>
</li>
</ul>
</div>
</div>
<style>
.locale-switcher .dropdown-toggle {
min-width: 140px;
text-align: left;
}
.locale-switcher .locale-icon {
margin-right: 8px;
font-size: 16px;
}
.locale-switcher .dropdown-item.active {
background-color: var(--bs-primary);
color: white;
}
.locale-switcher .dropdown-item:hover {
background-color: var(--bs-primary-bg-subtle);
}
/* Styles pour le sélecteur de langue mobile */
.mobile-locale-switcher {
display: flex;
gap: 8px;
justify-content: center;
flex-wrap: wrap;
}
.mobile-locale-switcher .btn {
min-width: 100px;
font-size: 14px;
padding: 6px 12px;
}
.mobile-locale-switcher .btn.active {
background-color: var(--bs-primary);
color: white;
border-color: var(--bs-primary);
}
.mobile-locale-switcher .btn:hover {
background-color: var(--bs-primary-bg-subtle);
border-color: var(--bs-primary);
}
/* Responsive : sur très petits écrans */
@media (max-width: 480px) {
.mobile-locale-switcher {
flex-direction: column;
gap: 4px;
}
.mobile-locale-switcher .btn {
width: 100%;
min-width: auto;
}
}
</style>