templates/components/locale_switcher.html.twig line 1

Open in your IDE?
  1. {# Composant de sélection de langue #}
  2. <div class="locale-switcher">
  3.     <div class="dropdown">
  4.         <button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" id="localeDropdown" data-bs-toggle="dropdown" aria-expanded="false">
  5.             <span class="locale-icon">🌐</span>
  6.             {% if app.request.locale == 'fr' %}
  7.                 🇫🇷 Français
  8.             {% else %}
  9.                 🇬🇧 English
  10.             {% endif %}
  11.         </button>
  12.         <ul class="dropdown-menu" aria-labelledby="localeDropdown">
  13.             <li>
  14.                 <a class="dropdown-item {% if app.request.locale == 'fr' %}active{% endif %}" href="{{ path('app_locale_switch', {'locale': 'fr'}) }}">
  15.                     🇫🇷 Français
  16.                 </a>
  17.             </li>
  18.             <li>
  19.                 <a class="dropdown-item {% if app.request.locale == 'en' %}active{% endif %}" href="{{ path('app_locale_switch', {'locale': 'en'}) }}">
  20.                     🇬🇧 English
  21.                 </a>
  22.             </li>
  23.             <li><hr class="dropdown-divider"></li>
  24.             <li>
  25.                 <a class="dropdown-item" href="{{ path('app_locale_reset') }}">
  26.                     🌐 {{ 'locale.auto_detect'|trans }}
  27.                 </a>
  28.             </li>
  29.         </ul>
  30.     </div>
  31. </div>
  32. <style>
  33. .locale-switcher .dropdown-toggle {
  34.     min-width: 140px;
  35.     text-align: left;
  36. }
  37. .locale-switcher .locale-icon {
  38.     margin-right: 8px;
  39.     font-size: 16px;
  40. }
  41. .locale-switcher .dropdown-item.active {
  42.     background-color: var(--bs-primary);
  43.     color: white;
  44. }
  45. .locale-switcher .dropdown-item:hover {
  46.     background-color: var(--bs-primary-bg-subtle);
  47. }
  48. /* Styles pour le sélecteur de langue mobile */
  49. .mobile-locale-switcher {
  50.     display: flex;
  51.     gap: 8px;
  52.     justify-content: center;
  53.     flex-wrap: wrap;
  54. }
  55. .mobile-locale-switcher .btn {
  56.     min-width: 100px;
  57.     font-size: 14px;
  58.     padding: 6px 12px;
  59. }
  60. .mobile-locale-switcher .btn.active {
  61.     background-color: var(--bs-primary);
  62.     color: white;
  63.     border-color: var(--bs-primary);
  64. }
  65. .mobile-locale-switcher .btn:hover {
  66.     background-color: var(--bs-primary-bg-subtle);
  67.     border-color: var(--bs-primary);
  68. }
  69. /* Responsive : sur très petits écrans */
  70. @media (max-width: 480px) {
  71.     .mobile-locale-switcher {
  72.         flex-direction: column;
  73.         gap: 4px;
  74.     }
  75.     
  76.     .mobile-locale-switcher .btn {
  77.         width: 100%;
  78.         min-width: auto;
  79.     }
  80. }
  81. </style>