```
🔥 refactor(translations): Supprime le fichier de traduction français obsolète. 🌐 feat(templates/revervation): Ajoute la prise en charge de l'internationalisation (i18n). ```
This commit is contained in:
@@ -1,40 +1,41 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="fr" class="scroll-smooth">
|
<html lang="{{ app.request.locale }}" class="scroll-smooth">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
{# Correction : Suppression de maximum-scale=1.0 et user-scalable=no pour l'accessibilité #}
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
{# --- SEO Fondamental --- #}
|
{# --- SEO Fondamental --- #}
|
||||||
<title>
|
<title>
|
||||||
{% block title %}Location Structure Gonflable & Châteaux pour vos Événements | Ludikevent{% endblock %}
|
{% block title %}{{ 'Location Structure Gonflable & Châteaux pour vos Événements | Ludikevent'|trans }}{% endblock %}
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
{% if block('description') is defined %}
|
{% if block('description') is defined %}
|
||||||
<meta name="description" content="{{ block('description')|replace({"\n": '', "\r": '', ' ': ''})|trim }}">
|
<meta name="description" content="{{ block('description')|replace({"\n": '', "\r": '', ' ': ''})|trim }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# URL Canonique dynamique #}
|
|
||||||
{% block canonical %}
|
{% block canonical %}
|
||||||
{# Génère l'URL propre automatiquement pour 99% des pages #}
|
|
||||||
<link rel="canonical" href="{{ app.request.schemeAndHttpHost }}{{ app.request.pathinfo }}">
|
<link rel="canonical" href="{{ app.request.schemeAndHttpHost }}{{ app.request.pathinfo }}">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<meta name="keywords" content="location structure gonflable, location chateau gonflable, location barnum, jeux exterieurs, animation anniversaire, location materiel evenementiel, parcours gonflable, location machine barbe a papa, ludikevent">
|
|
||||||
{# --- Open Graph (Facebook / WhatsApp) --- #}
|
<meta name="keywords" content="{{ 'location structure gonflable, location chateau gonflable, location barnum, jeux exterieurs, animation anniversaire, location materiel evenementiel, parcours gonflable, location machine barbe a papa, ludikevent'|trans }}">
|
||||||
|
|
||||||
|
{# --- Open Graph --- #}
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:url" content="{{ app.request.uri }}">
|
<meta property="og:url" content="{{ app.request.uri }}">
|
||||||
<meta property="og:title" content="{{ block('title') }}">
|
<meta property="og:title" content="{{ block('title') }}">
|
||||||
{% if block('description') is defined %}
|
{% if block('description') is defined %}
|
||||||
<meta property="og:description" content="{{ block('description') }}">
|
<meta property="og:description" content="{{ block('description') }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<meta property="og:image" content="{{ absolute_url(asset('provider/images/favicon.png')) }}">
|
<meta property="og:image" content="{{ absolute_url(asset('provider/images/favicon.png')) }}">
|
||||||
<meta property="article:publisher" content="https://www.facebook.com/profile.php?id=61574652399326">
|
<meta property="article:publisher" content="https://www.facebook.com/profile.php?id=61574652399326">
|
||||||
|
|
||||||
{# --- Twitter Card --- #}
|
{# --- Twitter Card --- #}
|
||||||
<meta name="twitter:card" content="summary">
|
<meta name="twitter:card" content="summary">
|
||||||
<meta name="twitter:title"ontent="{{ block('title') }}">
|
<meta name="twitter:title" content="{{ block('title') }}">
|
||||||
<meta name="twitter:image" content="{{ absolute_url(asset('provider/images/favicon.png')) }}">
|
<meta name="twitter:image" content="{{ absolute_url(asset('provider/images/favicon.png')) }}">
|
||||||
{% block extra_header %}
|
|
||||||
{% endblock %}
|
{% block extra_header %}{% endblock %}
|
||||||
|
|
||||||
{# --- Données Structurées (JSON-LD) --- #}
|
{# --- Données Structurées (JSON-LD) --- #}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
[
|
[
|
||||||
@@ -52,7 +53,7 @@
|
|||||||
"addressLocality": "Danizy",
|
"addressLocality": "Danizy",
|
||||||
"postalCode": "02800",
|
"postalCode": "02800",
|
||||||
"addressCountry": "FR"
|
"addressCountry": "FR"
|
||||||
}, c
|
},
|
||||||
"geo": {
|
"geo": {
|
||||||
"@type": "GeoCoordinates",
|
"@type": "GeoCoordinates",
|
||||||
"latitude": 49.6644,
|
"latitude": 49.6644,
|
||||||
@@ -87,7 +88,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# --- NAVIGATION --- #}
|
{# --- NAVIGATION --- #}
|
||||||
<nav class="sticky top-0 z-50 bg-white/95 backdrop-blur-md border-b border-gray-100" role="navigation" aria-label="Menu principal">
|
<nav class="sticky top-0 z-50 bg-white/95 backdrop-blur-md border-b border-gray-100" role="navigation" aria-label="{{ 'Menu principal'|trans }}">
|
||||||
<div class="max-w-8xl mx-auto px-4 sm:px-6 lg:px-8">
|
<div class="max-w-8xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
<div class="flex justify-between h-20">
|
<div class="flex justify-between h-20">
|
||||||
|
|
||||||
@@ -95,28 +96,23 @@
|
|||||||
<div class="flex-shrink-0 flex items-center">
|
<div class="flex-shrink-0 flex items-center">
|
||||||
<a href="{{ path('reservation') }}" class="flex items-center gap-2 group">
|
<a href="{{ path('reservation') }}" class="flex items-center gap-2 group">
|
||||||
<img src="{{ asset('provider/images/favicon.png') | imagine_filter('logo') }}"
|
<img src="{{ asset('provider/images/favicon.png') | imagine_filter('logo') }}"
|
||||||
width="48"
|
width="48" height="48" class="w-12 h-12 relative z-10 animate-pulse"
|
||||||
height="48"
|
|
||||||
class="w-12 h-12 relative z-10 animate-pulse"
|
|
||||||
alt="Ludikevent">
|
alt="Ludikevent">
|
||||||
<span class="text-2xl font-black tracking-tighter uppercase text-[#f39e36]">
|
<span class="text-2xl font-black tracking-tighter uppercase text-[#f39e36]">Ludik Event</span>
|
||||||
{# Correction contraste : amber-500 -> amber-700 pour lisibilité sur blanc #}
|
|
||||||
Ludik Event</span>
|
|
||||||
</span>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# Menu Desktop #}
|
{# Menu Desktop #}
|
||||||
<div class="hidden md:flex items-center space-x-8">
|
<div class="hidden md:flex items-center space-x-8">
|
||||||
<a href="{{ path('reservation') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Accueil</a>
|
<a href="{{ path('reservation') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Accueil'|trans }}</a>
|
||||||
<a href="{{ path('reservation_catalogue') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Nos structures </a>
|
<a href="{{ path('reservation_catalogue') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Nos structures'|trans }}</a>
|
||||||
<a href="{{ path('reservation_formules') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Nos Formules </a>
|
<a href="{{ path('reservation_formules') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Nos Formules'|trans }}</a>
|
||||||
<a target="_blank" href="/images/Catalogue.pdf" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Catalogue</a>
|
<a target="_blank" href="/images/Catalogue.pdf" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Catalogue'|trans }}</a>
|
||||||
<a href="{{ path('reservation_workflow') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Comment Reserver</a>
|
<a href="{{ path('reservation_workflow') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Comment Reserver'|trans }}</a>
|
||||||
<a href="{{ path('reservation_contact') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Contact</a>
|
<a href="{{ path('reservation_contact') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Contact'|trans }}</a>
|
||||||
|
|
||||||
<a href="{{ path('reservation_search') }}" class="p-2 text-gray-600 hover:text-blue-600 transition-colors" aria-label="Rechercher une structure">
|
<a href="{{ path('reservation_search') }}" class="p-2 text-gray-600 hover:text-blue-600 transition-colors" aria-label="{{ 'Rechercher une structure'|trans }}">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
@@ -125,23 +121,23 @@
|
|||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
{% if is_granted('ROLE_ADMIN') %}
|
{% if is_granted('ROLE_ADMIN') %}
|
||||||
<a target="_blank" href="https://intranet.ludikevent.fr/crm" class="text-xs font-black uppercase tracking-widest text-amber-800 bg-amber-50 px-3 py-1 rounded-full border border-amber-200 hover:bg-amber-100 transition-colors">
|
<a target="_blank" href="https://intranet.ludikevent.fr/crm" class="text-xs font-black uppercase tracking-widest text-amber-800 bg-amber-50 px-3 py-1 rounded-full border border-amber-200 hover:bg-amber-100 transition-colors">
|
||||||
Admin
|
{{ 'Admin'|trans }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a href="{{ path('gestion_contrat') }}" class="text-[#f39e36] flex items-center gap-2 font-bold hover:opacity-70 transition-opacity">
|
<a href="{{ path('gestion_contrat') }}" class="text-[#f39e36] flex items-center gap-2 font-bold hover:opacity-70 transition-opacity">
|
||||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/></svg>
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/></svg>
|
||||||
Mon Espace
|
{{ 'Mon Espace'|trans }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="{{ path('reservation_logout') }}" class="text-gray-500 hover:text-red-600 transition-colors" title="Déconnexion" aria-label="Se déconnecter">
|
<a href="{{ path('reservation_logout') }}" class="text-gray-500 hover:text-red-600 transition-colors" title="{{ 'Déconnexion'|trans }}">
|
||||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/></svg>
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/></svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{ path('reservation_login') }}" class="text-[#f39e36] font-bold transition-colors flex items-center gap-2">
|
<a href="{{ path('reservation_login') }}" class="text-[#f39e36] font-bold transition-colors flex items-center gap-2">
|
||||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/></svg>
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/></svg>
|
||||||
Connexion
|
{{ 'Connexion'|trans }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
@@ -152,9 +148,8 @@
|
|||||||
|
|
||||||
{# Bouton Menu Mobile #}
|
{# Bouton Menu Mobile #}
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
{# Correction : Ajout de aria-label pour le nom accessible #}
|
<button id="menu-button" type="button" class="text-gray-700 p-2 focus:outline-none" aria-expanded="false" aria-controls="mobile-menu" aria-label="{{ 'Ouvrir le menu'|trans }}">
|
||||||
<button id="menu-button" type="button" class="text-gray-700 p-2 focus:outline-none" aria-expanded="false" aria-controls="mobile-menu" aria-label="Ouvrir le menu">
|
<svg class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
<svg class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
@@ -165,16 +160,15 @@
|
|||||||
{# Menu Mobile #}
|
{# Menu Mobile #}
|
||||||
<div id="mobile-menu" class="hidden md:hidden bg-white border-t border-gray-100 shadow-xl">
|
<div id="mobile-menu" class="hidden md:hidden bg-white border-t border-gray-100 shadow-xl">
|
||||||
<div class="px-4 pt-2 pb-6 space-y-2">
|
<div class="px-4 pt-2 pb-6 space-y-2">
|
||||||
<a href="{{ path('reservation') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">Accueil</a>
|
<a href="{{ path('reservation') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">{{ 'Accueil'|trans }}</a>
|
||||||
<a href="{{ path('reservation_catalogue') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">Nos structures</a>
|
<a href="{{ path('reservation_catalogue') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">{{ 'Nos structures'|trans }}</a>
|
||||||
<a href="{{ path('reservation_formules') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">Nos Formules </a>
|
<a href="{{ path('reservation_formules') }}" class="text-gray-700 hover:text-blue-600 font-medium transition-colors">{{ 'Nos Formules'|trans }}</a>
|
||||||
|
<a target="_blank" href="/provider/Catalogue.pdf" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">{{ 'Catalogue'|trans }}</a>
|
||||||
<a target="_blank" href="/provider/Catalogue.pdf" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">Catalogue</a>
|
<a href="{{ path('reservation_workflow') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">{{ 'Comment reserver'|trans }}</a>
|
||||||
<a href="{{ path('reservation_workflow') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">Comment reserver</a>
|
<a href="{{ path('reservation_search') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">{{ 'Rechercher'|trans }}</a>
|
||||||
<a href="{{ path('reservation_search') }}" class="block px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 rounded-xl">Rechercher</a>
|
|
||||||
<div class="pt-4 border-t border-gray-50">
|
<div class="pt-4 border-t border-gray-50">
|
||||||
<a href="tel:0614172447" class="block px-3 py-3 text-center bg-blue-600 text-white rounded-xl font-bold">
|
<a href="tel:0614172447" class="block px-3 py-3 text-center bg-blue-600 text-white rounded-xl font-bold">
|
||||||
Appeler le 06 14 17 24 47
|
{{ 'Appeler le'|trans }} 06 14 17 24 47
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -191,22 +185,19 @@
|
|||||||
{% else %} bg-blue-50 border-blue-200 text-blue-900 {% endif %}">
|
{% else %} bg-blue-50 border-blue-200 text-blue-900 {% endif %}">
|
||||||
|
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<span class="text-xl" aria-hidden="true">
|
<span class="text-xl">
|
||||||
{% if label == 'success' %}✅{% elseif label == 'error' or label == 'danger' %}❌{% else %}ℹ️{% endif %}
|
{% if label == 'success' %}✅{% elseif label == 'error' or label == 'danger' %}❌{% else %}ℹ️{% endif %}
|
||||||
</span>
|
</span>
|
||||||
<p class="text-sm font-bold uppercase italic">{{ message }}</p>
|
<p class="text-sm font-bold uppercase italic">{{ message|trans }}</p>
|
||||||
</div>
|
</div>
|
||||||
<button onclick="this.parentElement.remove()" class="p-2 hover:opacity-50" aria-label="Fermer la notification">
|
<button onclick="this.parentElement.remove()" class="p-2 hover:opacity-50" aria-label="{{ 'Fermer la notification'|trans }}">
|
||||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{# --- CONTENU --- #}
|
|
||||||
<main class="flex-grow" id="main-content" role="main">
|
<main class="flex-grow" id="main-content" role="main">
|
||||||
{% block body %}{% endblock %}
|
{% block body %}{% endblock %}
|
||||||
</main>
|
</main>
|
||||||
@@ -219,23 +210,21 @@
|
|||||||
<div class="text-center md:text-left">
|
<div class="text-center md:text-left">
|
||||||
<p class="text-sm text-gray-700">
|
<p class="text-sm text-gray-700">
|
||||||
© {{ "now"|date("Y") }} <span class="font-bold text-[#f39e36]">Ludikevent</span>.
|
© {{ "now"|date("Y") }} <span class="font-bold text-[#f39e36]">Ludikevent</span>.
|
||||||
Tous droits réservés.
|
{{ 'Tous droits réservés.'|trans }}
|
||||||
</p>
|
</p>
|
||||||
{# Correction contraste : gray-400 -> gray-600 #}
|
<p class="text-xs text-gray-600 mt-1">{{ 'Location de structures gonflables de haute qualité.'|trans }}</p>
|
||||||
<p class="text-xs text-gray-600 mt-1">Location de structures gonflables de haute qualité.</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# Correction contraste liens : text-gray-500 -> text-gray-700 #}
|
|
||||||
<div class="flex flex-wrap justify-center gap-x-6 gap-y-2 text-xs text-gray-700 font-semibold">
|
<div class="flex flex-wrap justify-center gap-x-6 gap-y-2 text-xs text-gray-700 font-semibold">
|
||||||
<a href="{{ path('reservation_mentions-legal') }}" class="hover:text-blue-700 transition-colors">Mentions légales</a>
|
<a href="{{ path('reservation_mentions-legal') }}" class="hover:text-blue-700 transition-colors">{{ 'Mentions légales'|trans }}</a>
|
||||||
<a href="{{ path('reservation_cgv') }}" class="hover:text-blue-700 transition-colors">CGV</a>
|
<a href="{{ path('reservation_cgv') }}" class="hover:text-blue-700 transition-colors">{{ 'CGV'|trans }}</a>
|
||||||
<a href="{{ path('reservation_rgpd') }}" class="hover:text-blue-700 transition-colors">RGPD</a>
|
<a href="{{ path('reservation_rgpd') }}" class="hover:text-blue-700 transition-colors">{{ 'RGPD'|trans }}</a>
|
||||||
<a href="{{ path('reservation_cookies') }}" class="hover:text-blue-700 transition-colors">Cookies</a>
|
<a href="{{ path('reservation_cookies') }}" class="hover:text-blue-700 transition-colors">{{ 'Cookies'|trans }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<a href="https://www.facebook.com/profile.php?id=61574652399326" target="_blank" rel="noopener" class="text-gray-500 hover:text-blue-700 transition-colors" aria-label="Suivre Ludikevent sur Facebook">
|
<a href="https://www.facebook.com/profile.php?id=61574652399326" target="_blank" rel="noopener" class="text-gray-500 hover:text-blue-700 transition-colors" aria-label="{{ 'Suivre Ludikevent sur Facebook'|trans }}">
|
||||||
<svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"/></svg>
|
<svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24"><path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"/></svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -245,6 +234,5 @@
|
|||||||
<cookie-banner></cookie-banner>
|
<cookie-banner></cookie-banner>
|
||||||
{% block javascripts %}{% endblock %}
|
{% block javascripts %}{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
3
translations/KnpPaginatorBundle.fr.yaml
Normal file
3
translations/KnpPaginatorBundle.fr.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
label_previous: Précédent
|
||||||
|
label_next: Suivant
|
||||||
|
filter_searchword: Recherche...
|
||||||
6
translations/SchebTwoFactorBundle.fr.yaml
Normal file
6
translations/SchebTwoFactorBundle.fr.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
auth_code: "Code d'authentification"
|
||||||
|
choose_provider: "Changer de méthode d'authentification"
|
||||||
|
login: Connexion
|
||||||
|
code_invalid: "Le code de vérification n'est pas valide."
|
||||||
|
trusted: 'Je suis sur un appareil de confiance'
|
||||||
|
cancel: Annuler
|
||||||
@@ -1,32 +1,21 @@
|
|||||||
login_link: Connexion
|
'Location Structure Gonflable & Châteaux pour vos Événements | Ludikevent': 'Location Structure Gonflable & Châteaux pour vos Événements | Ludikevent'
|
||||||
register_link: Inscription
|
'location structure gonflable, location chateau gonflable, location barnum, jeux exterieurs, animation anniversaire, location materiel evenementiel, parcours gonflable, location machine barbe a papa, ludikevent': 'location structure gonflable, location chateau gonflable, location barnum, jeux exterieurs, animation anniversaire, location materiel evenementiel, parcours gonflable, location machine barbe a papa, ludikevent'
|
||||||
breadcrumb.login: Connexion
|
'Menu principal': 'Menu principal'
|
||||||
label.email: Adresse e-mail
|
'Accueil': 'Accueil'
|
||||||
label.password: Mot de passe
|
'Nos structures': 'Nos structures'
|
||||||
label.remember_me: Se souvenir de moi
|
'Nos Formules': 'Nos Formules'
|
||||||
button.sign_in: Se connecter
|
'Catalogue': 'Catalogue'
|
||||||
link.forgot_password: Mot de passe oublié ?
|
'Comment Reserver': 'Comment Réserver'
|
||||||
error.login_failed: Échec de la connexion.
|
'Contact': 'Contact'
|
||||||
security.login: Connexion à votre compte
|
'Mon Espace': 'Mon Espace'
|
||||||
events.forgot_password: Mot de passe oublié
|
'Connexion': 'Connexion'
|
||||||
breadcrumb.forgot_password: Mot de passe oublié
|
'Déconnexion': 'Déconnexion'
|
||||||
text.enter_email_for_reset: Veuillez entrer votre adresse e-mail pour recevoir un lien de réinitialisation.
|
'Tous droits réservés.': 'Tous droits réservés.'
|
||||||
button.send_reset_link: Envoyer le lien de réinitialisation
|
'Location de structures gonflables de haute qualité.': 'Location de structures gonflables de haute qualité.'
|
||||||
link.back_to_login: Retour à la connexion
|
'Mentions légales': 'Mentions légales'
|
||||||
events.reset_email_sent: E-mail de réinitialisation envoyé
|
'CGV': 'CGV'
|
||||||
text.check_inbox_title: Vérifiez votre boîte de réception 📥
|
'RGPD': 'RGPD'
|
||||||
text.check_inbox_description: Un e-mail a été envoyé avec un lien pour réinitialiser votre mot de passe. Il se peut qu'il arrive dans quelques minutes.
|
'Cookies': 'Cookies'
|
||||||
text.spam_folder_tip: Si vous ne le voyez pas, vérifiez votre dossier de courriers indésirables (spam).
|
'Appeler le': 'Appeler le'
|
||||||
events.reset_password: Réinitialiser le mot de passe
|
'Rechercher': 'Rechercher'
|
||||||
breadcrumb.reset_password: Réinitialisation du mot de passe
|
'Ouvrir le menu': 'Ouvrir le menu'
|
||||||
label.new_password: Nouveau mot de passe
|
|
||||||
label.confirm_password: Confirmer le nouveau mot de passe
|
|
||||||
text.enter_new_password: Veuillez saisir et confirmer votre nouveau mot de passe.
|
|
||||||
button.reset_password: Réinitialiser le mot de passe
|
|
||||||
open_user_menu_sr: Ouvrir le menu utilisateur
|
|
||||||
logged_in_as: Connecté en tant que
|
|
||||||
logout_link: Déconnexion
|
|
||||||
page.login: Connexion
|
|
||||||
logged_admin: Administration
|
|
||||||
button.sso: Connexion SSO
|
|
||||||
email.removed: Email supprimée
|
|
||||||
|
|||||||
19
translations/security.fr.yaml
Normal file
19
translations/security.fr.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
'An authentication exception occurred.': "Une exception d'authentification s'est produite."
|
||||||
|
'Authentication credentials could not be found.': "Les identifiants d'authentification n'ont pas pu être trouvés."
|
||||||
|
'Authentication request could not be processed due to a system problem.': "La requête d'authentification n'a pas pu être executée à cause d'un problème système."
|
||||||
|
'Invalid credentials.': 'Identifiants invalides.'
|
||||||
|
'Cookie has already been used by someone else.': "Le cookie a déjà été utilisé par quelqu'un d'autre."
|
||||||
|
'Not privileged to request the resource.': 'Privilèges insuffisants pour accéder à la ressource.'
|
||||||
|
'Invalid CSRF token.': 'Jeton CSRF invalide.'
|
||||||
|
'No authentication provider found to support the authentication token.': "Aucun fournisseur d'authentification n'a été trouvé pour supporter le jeton d'authentification."
|
||||||
|
'No session available, it either timed out or cookies are not enabled.': 'Aucune session disponible, celle-ci a expiré ou les cookies ne sont pas activés.'
|
||||||
|
'No token could be found.': "Aucun jeton n'a pu être trouvé."
|
||||||
|
'Username could not be found.': "Le nom d'utilisateur n'a pas pu être trouvé."
|
||||||
|
'Account has expired.': 'Le compte a expiré.'
|
||||||
|
'Credentials have expired.': 'Les identifiants ont expiré.'
|
||||||
|
'Account is disabled.': 'Le compte est désactivé.'
|
||||||
|
'Account is locked.': 'Le compte est bloqué.'
|
||||||
|
'Too many failed login attempts, please try again later.': 'Plusieurs tentatives de connexion ont échoué, veuillez réessayer plus tard.'
|
||||||
|
'Invalid or expired login link.': 'Lien de connexion invalide ou expiré.'
|
||||||
|
'Too many failed login attempts, please try again in %minutes% minute.': 'Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minute.'
|
||||||
|
'Too many failed login attempts, please try again in %minutes% minutes.': 'Trop de tentatives de connexion échouées, veuillez réessayer dans %minutes% minutes.'
|
||||||
175
translations/validators.fr.yaml
Normal file
175
translations/validators.fr.yaml
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
'This value should be false.': 'Cette valeur doit être fausse.'
|
||||||
|
'This value should be true.': 'Cette valeur doit être vraie.'
|
||||||
|
'This value should be of type {{ type }}.': 'Cette valeur doit être de type {{ type }}.'
|
||||||
|
'This value should be blank.': 'Cette valeur doit être vide.'
|
||||||
|
'The value you selected is not a valid choice.': "Cette valeur doit être l'un des choix proposés."
|
||||||
|
'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.': 'Vous devez sélectionner au moins {{ limit }} choix.|Vous devez sélectionner au moins {{ limit }} choix.'
|
||||||
|
'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.': 'Vous devez sélectionner au maximum {{ limit }} choix.|Vous devez sélectionner au maximum {{ limit }} choix.'
|
||||||
|
'One or more of the given values is invalid.': 'Une ou plusieurs des valeurs soumises sont invalides.'
|
||||||
|
'This field was not expected.': "Ce champ n'a pas été prévu."
|
||||||
|
'This field is missing.': 'Ce champ est manquant.'
|
||||||
|
'This value is not a valid date.': "Cette valeur n'est pas une date valide."
|
||||||
|
'This value is not a valid datetime.': "Cette valeur n'est pas une date valide."
|
||||||
|
'This value is not a valid email address.': "Cette valeur n'est pas une adresse email valide."
|
||||||
|
'The file could not be found.': "Le fichier n'a pas été trouvé."
|
||||||
|
'The file is not readable.': "Le fichier n'est pas lisible."
|
||||||
|
'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.': 'Le fichier est trop volumineux ({{ size }} {{ suffix }}). Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.'
|
||||||
|
'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.': 'Le type du fichier est invalide ({{ type }}). Les types autorisés sont {{ types }}.'
|
||||||
|
'This value should be {{ limit }} or less.': 'Cette valeur doit être inférieure ou égale à {{ limit }}.'
|
||||||
|
'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.': 'Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractère.|Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractères.'
|
||||||
|
'This value should be {{ limit }} or more.': 'Cette valeur doit être supérieure ou égale à {{ limit }}.'
|
||||||
|
'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.': 'Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractère.|Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractères.'
|
||||||
|
'This value should not be blank.': 'Cette valeur ne doit pas être vide.'
|
||||||
|
'This value should not be null.': 'Cette valeur ne doit pas être nulle.'
|
||||||
|
'This value should be null.': 'Cette valeur doit être nulle.'
|
||||||
|
'This value is not valid.': "Cette valeur n'est pas valide."
|
||||||
|
'This value is not a valid time.': "Cette valeur n'est pas une heure valide."
|
||||||
|
'This value is not a valid URL.': "Cette valeur n'est pas une URL valide."
|
||||||
|
'The two values should be equal.': 'Les deux valeurs doivent être identiques.'
|
||||||
|
'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.': 'Le fichier est trop volumineux. Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.'
|
||||||
|
'The file is too large.': 'Le fichier est trop volumineux.'
|
||||||
|
'The file could not be uploaded.': 'Le téléchargement de ce fichier est impossible.'
|
||||||
|
'This value should be a valid number.': 'Cette valeur doit être un nombre.'
|
||||||
|
'This file is not a valid image.': "Ce fichier n'est pas une image valide."
|
||||||
|
'This is not a valid IP address.': "Cette valeur n'est pas une adresse IP valide."
|
||||||
|
'This value is not a valid language.': "Cette langue n'est pas valide."
|
||||||
|
'This value is not a valid locale.': "Ce paramètre régional n'est pas valide."
|
||||||
|
'This value is not a valid country.': "Ce pays n'est pas valide."
|
||||||
|
'This value is already used.': 'Cette valeur est déjà utilisée.'
|
||||||
|
'The size of the image could not be detected.': "La taille de l'image n'a pas pu être détectée."
|
||||||
|
'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.': "La largeur de l'image est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px."
|
||||||
|
'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.': "La largeur de l'image est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px."
|
||||||
|
'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.': "La hauteur de l'image est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px."
|
||||||
|
'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.': "La hauteur de l'image est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px."
|
||||||
|
"This value should be the user's current password.": "Cette valeur doit être le mot de passe actuel de l'utilisateur."
|
||||||
|
'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.': 'Cette chaîne doit avoir exactement {{ limit }} caractère.|Cette chaîne doit avoir exactement {{ limit }} caractères.'
|
||||||
|
'The file was only partially uploaded.': 'Le fichier a été partiellement transféré.'
|
||||||
|
'No file was uploaded.': "Aucun fichier n'a été transféré."
|
||||||
|
'No temporary folder was configured in php.ini.': "Aucun répertoire temporaire n'a été configuré dans le php.ini, ou le répertoire configuré n'existe pas."
|
||||||
|
'Cannot write temporary file to disk.': "Impossible d'écrire le fichier temporaire sur le disque."
|
||||||
|
'A PHP extension caused the upload to fail.': 'Une extension PHP a empêché le transfert du fichier.'
|
||||||
|
'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.': 'Cette collection doit contenir {{ limit }} élément ou plus.|Cette collection doit contenir {{ limit }} éléments ou plus.'
|
||||||
|
'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.': 'Cette collection doit contenir {{ limit }} élément ou moins.|Cette collection doit contenir {{ limit }} éléments ou moins.'
|
||||||
|
'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.': 'Cette collection doit contenir exactement {{ limit }} élément.|Cette collection doit contenir exactement {{ limit }} éléments.'
|
||||||
|
'Invalid card number.': 'Numéro de carte invalide.'
|
||||||
|
'Unsupported card type or invalid card number.': 'Type de carte non supporté ou numéro invalide.'
|
||||||
|
'This is not a valid International Bank Account Number (IBAN).': "Cette valeur n'est pas un Numéro de Compte Bancaire International (IBAN) valide."
|
||||||
|
'This value is not a valid ISBN-10.': "Cette valeur n'est pas un code ISBN-10 valide."
|
||||||
|
'This value is not a valid ISBN-13.': "Cette valeur n'est pas un code ISBN-13 valide."
|
||||||
|
'This value is neither a valid ISBN-10 nor a valid ISBN-13.': "Cette valeur n'est ni un code ISBN-10, ni un code ISBN-13 valide."
|
||||||
|
'This value is not a valid ISSN.': "Cette valeur n'est pas un code ISSN valide."
|
||||||
|
'This value is not a valid currency.': "Cette valeur n'est pas une devise valide."
|
||||||
|
'This value should be equal to {{ compared_value }}.': 'Cette valeur doit être égale à {{ compared_value }}.'
|
||||||
|
'This value should be greater than {{ compared_value }}.': 'Cette valeur doit être supérieure à {{ compared_value }}.'
|
||||||
|
'This value should be greater than or equal to {{ compared_value }}.': 'Cette valeur doit être supérieure ou égale à {{ compared_value }}.'
|
||||||
|
'This value should be identical to {{ compared_value_type }} {{ compared_value }}.': 'Cette valeur doit être identique à {{ compared_value_type }} {{ compared_value }}.'
|
||||||
|
'This value should be less than {{ compared_value }}.': 'Cette valeur doit être inférieure à {{ compared_value }}.'
|
||||||
|
'This value should be less than or equal to {{ compared_value }}.': 'Cette valeur doit être inférieure ou égale à {{ compared_value }}.'
|
||||||
|
'This value should not be equal to {{ compared_value }}.': 'Cette valeur ne doit pas être égale à {{ compared_value }}.'
|
||||||
|
'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.': 'Cette valeur ne doit pas être identique à {{ compared_value_type }} {{ compared_value }}.'
|
||||||
|
'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.': "Le rapport largeur/hauteur de l'image est trop grand ({{ ratio }}). Le rapport maximal autorisé est {{ max_ratio }}."
|
||||||
|
'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.': "Le rapport largeur/hauteur de l'image est trop petit ({{ ratio }}). Le rapport minimal attendu est {{ min_ratio }}."
|
||||||
|
'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.': "L'image est carrée ({{ width }}x{{ height }}px). Les images carrées ne sont pas autorisées."
|
||||||
|
'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.': "L'image est au format paysage ({{ width }}x{{ height }}px). Les images au format paysage ne sont pas autorisées."
|
||||||
|
'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.': "L'image est au format portrait ({{ width }}x{{ height }}px). Les images au format portrait ne sont pas autorisées."
|
||||||
|
'An empty file is not allowed.': "Un fichier vide n'est pas autorisé."
|
||||||
|
'The host could not be resolved.': "Le nom de domaine n'a pas pu être résolu."
|
||||||
|
'This value does not match the expected {{ charset }} charset.': 'Cette valeur ne correspond pas au jeu de caractères {{ charset }} attendu.'
|
||||||
|
'This is not a valid Business Identifier Code (BIC).': "Cette valeur n'est pas un Code Identifiant de Business (BIC) valide."
|
||||||
|
Error: Erreur
|
||||||
|
'This is not a valid UUID.': "Cette valeur n'est pas un UUID valide."
|
||||||
|
'This value should be a multiple of {{ compared_value }}.': 'Cette valeur doit être un multiple de {{ compared_value }}.'
|
||||||
|
'This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.': "Ce code d'identification d'entreprise (BIC) n'est pas associé à l'IBAN {{ iban }}."
|
||||||
|
'This value should be valid JSON.': 'Cette valeur doit être un JSON valide.'
|
||||||
|
'This collection should contain only unique elements.': 'Cette collection ne doit pas comporter de doublons.'
|
||||||
|
'This value should be positive.': 'Cette valeur doit être strictement positive.'
|
||||||
|
'This value should be either positive or zero.': 'Cette valeur doit être supérieure ou égale à zéro.'
|
||||||
|
'This value should be negative.': 'Cette valeur doit être strictement négative.'
|
||||||
|
'This value should be either negative or zero.': 'Cette valeur doit être inférieure ou égale à zéro.'
|
||||||
|
'This value is not a valid timezone.': "Cette valeur n'est pas un fuseau horaire valide."
|
||||||
|
'This password has been leaked in a data breach, it must not be used. Please use another password.': "Ce mot de passe a été divulgué lors d'une fuite de données, il ne doit plus être utilisé. Veuillez utiliser un autre mot de passe."
|
||||||
|
'This value should be between {{ min }} and {{ max }}.': 'Cette valeur doit être comprise entre {{ min }} et {{ max }}.'
|
||||||
|
'This value is not a valid hostname.': "Cette valeur n'est pas un nom d'hôte valide."
|
||||||
|
'The number of elements in this collection should be a multiple of {{ compared_value }}.': "Le nombre d'éléments de cette collection doit être un multiple de {{ compared_value }}."
|
||||||
|
'This value should satisfy at least one of the following constraints:': 'Cette valeur doit satisfaire à au moins une des contraintes suivantes :'
|
||||||
|
'Each element of this collection should satisfy its own set of constraints.': 'Chaque élément de cette collection doit satisfaire à son propre jeu de contraintes.'
|
||||||
|
'This value is not a valid International Securities Identification Number (ISIN).': "Cette valeur n'est pas un code international de sécurité valide (ISIN)."
|
||||||
|
'This value should be a valid expression.': 'Cette valeur doit être une expression valide.'
|
||||||
|
'This value is not a valid CSS color.': "Cette valeur n'est pas une couleur CSS valide."
|
||||||
|
'This value is not a valid CIDR notation.': "Cette valeur n'est pas une notation CIDR valide."
|
||||||
|
'The value of the netmask should be between {{ min }} and {{ max }}.': 'La valeur du masque de réseau doit être comprise entre {{ min }} et {{ max }}.'
|
||||||
|
'The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.': 'Le nom du fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractère.|Le nom de fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractères.'
|
||||||
|
'The password strength is too low. Please use a stronger password.': 'La force du mot de passe est trop faible. Veuillez utiliser un mot de passe plus fort.'
|
||||||
|
'This value contains characters that are not allowed by the current restriction-level.': 'Cette valeur contient des caractères qui ne sont pas autorisés par le niveau de restriction actuel.'
|
||||||
|
'Using invisible characters is not allowed.': "Utiliser des caractères invisibles n'est pas autorisé."
|
||||||
|
'Mixing numbers from different scripts is not allowed.': "Mélanger des chiffres provenant de différents scripts n'est pas autorisé."
|
||||||
|
'Using hidden overlay characters is not allowed.': "Utiliser des caractères de superposition cachés n'est pas autorisé."
|
||||||
|
'The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}.': "L'extension du fichier est invalide ({{ extension }}). Les extensions autorisées sont {{ extensions }}."
|
||||||
|
'The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}.': "L'encodage de caractères détecté est invalide ({{ detected }}). Les encodages autorisés sont {{ encodings }}."
|
||||||
|
'This value is not a valid MAC address.': "Cette valeur n'est pas une adresse MAC valide."
|
||||||
|
'This URL is missing a top-level domain.': 'Cette URL doit contenir un domaine de premier niveau.'
|
||||||
|
'This value is too short. It should contain at least one word.|This value is too short. It should contain at least {{ min }} words.': 'Cette valeur est trop courte. Elle doit contenir au moins un mot.|Cette valeur est trop courte. Elle doit contenir au moins {{ min }} mots.'
|
||||||
|
'This value is too long. It should contain one word.|This value is too long. It should contain {{ max }} words or less.': 'Cette valeur est trop longue. Elle doit contenir au maximum un mot.|Cette valeur est trop longue. Elle doit contenir au maximum {{ max }} mots.'
|
||||||
|
'This value does not represent a valid week in the ISO 8601 format.': 'Cette valeur ne représente pas une semaine valide au format ISO 8601.'
|
||||||
|
'This value is not a valid week.': "Cette valeur n'est pas une semaine valide."
|
||||||
|
'This value should not be before week "{{ min }}".': 'Cette valeur ne doit pas être antérieure à la semaine "{{ min }}".'
|
||||||
|
'This value should not be after week "{{ max }}".': 'Cette valeur ne doit pas être postérieure à la semaine "{{ max }}".'
|
||||||
|
'This value is not a valid Twig template.': "Cette valeur n'est pas un modèle Twig valide."
|
||||||
|
'This file is not a valid video.': 'Ce fichier n’est pas une vidéo valide.'
|
||||||
|
'The size of the video could not be detected.': 'La taille de la vidéo n’a pas pu être détectée.'
|
||||||
|
'The video width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.': 'La largeur de la vidéo est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px.'
|
||||||
|
'The video width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.': 'La largeur de la vidéo est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px.'
|
||||||
|
'The video height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.': 'La hauteur de la vidéo est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px.'
|
||||||
|
'The video height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.': 'La hauteur de la vidéo est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px.'
|
||||||
|
'The video has too few pixels ({{ pixels }} pixels). Minimum amount expected is {{ min_pixels }} pixels.': 'La vidéo a trop peu de pixels ({{ pixels }}). La quantité minimale attendue est de {{ min_pixels }} pixels.'
|
||||||
|
'The video has too many pixels ({{ pixels }} pixels). Maximum amount expected is {{ max_pixels }} pixels.': 'La vidéo contient trop de pixels ({{ pixels }}). La quantité maximale attendue est de {{ max_pixels }} pixels.'
|
||||||
|
'The video ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.': 'Le ratio de la vidéo est trop élevé ({{ ratio }}). Le ratio maximal autorisé est de {{ max_ratio }}.'
|
||||||
|
'The video ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.': 'Le ratio de la vidéo est trop petit ({{ ratio }}). Le ratio minimum attendu est de {{ min_ratio }}.'
|
||||||
|
'The video is square ({{ width }}x{{ height }}px). Square videos are not allowed.': 'La vidéo est carrée ({{ width }}x{{ height }}px). Les vidéos carrées ne sont pas autorisées.'
|
||||||
|
'The video is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented videos are not allowed.': 'La vidéo est au format paysage ({{ width }}x{{ height }} px). Les vidéos au format paysage ne sont pas autorisées.'
|
||||||
|
'The video is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented videos are not allowed.': 'La vidéo est orientée en portrait ({{ width }}x{{ height }} px). Les vidéos en orientation portrait ne sont pas autorisées.'
|
||||||
|
'The video file is corrupted.': 'Le fichier vidéo est corrompu.'
|
||||||
|
'The video contains multiple streams. Only one stream is allowed.': 'La vidéo contient plusieurs flux. Un seul flux est autorisé.'
|
||||||
|
'Unsupported video codec "{{ codec }}".': 'Le codec vidéo «{{ codec }}» est non pris en charge.'
|
||||||
|
'Unsupported video container "{{ container }}".': 'Le conteneur vidéo «{{ container }}» est non pris en charge.'
|
||||||
|
'The image file is corrupted.': 'Le fichier image est corrompu.'
|
||||||
|
'The image has too few pixels ({{ pixels }} pixels). Minimum amount expected is {{ min_pixels }} pixels.': 'L’image comporte trop peu de pixels ({{ pixels }}). La quantité minimale attendue est de {{ min_pixels }} pixels.'
|
||||||
|
'The image has too many pixels ({{ pixels }} pixels). Maximum amount expected is {{ max_pixels }} pixels.': 'L’image contient trop de pixels ({{ pixels }}). La quantité maximale attendue est de {{ max_pixels }} pixels.'
|
||||||
|
'This filename does not match the expected charset.': 'Le nom de fichier ne correspond pas au jeu de caractères attendu.'
|
||||||
|
'This form should not contain extra fields.': 'Ce formulaire ne doit pas contenir de champs supplémentaires.'
|
||||||
|
'The uploaded file was too large. Please try to upload a smaller file.': "Le fichier téléchargé est trop volumineux. Merci d'essayer d'envoyer un fichier plus petit."
|
||||||
|
'The CSRF token is invalid. Please try to resubmit the form.': 'Le jeton CSRF est invalide. Veuillez renvoyer le formulaire.'
|
||||||
|
'This value is not a valid HTML5 color.': "Cette valeur n'est pas une couleur HTML5 valide."
|
||||||
|
'Please enter a valid birthdate.': 'Veuillez entrer une date de naissance valide.'
|
||||||
|
'The selected choice is invalid.': 'Le choix sélectionné est invalide.'
|
||||||
|
'The collection is invalid.': 'La collection est invalide.'
|
||||||
|
'Please select a valid color.': 'Veuillez sélectionner une couleur valide.'
|
||||||
|
'Please select a valid country.': 'Veuillez sélectionner un pays valide.'
|
||||||
|
'Please select a valid currency.': 'Veuillez sélectionner une devise valide.'
|
||||||
|
'Please choose a valid date interval.': 'Veuillez choisir un intervalle de dates valide.'
|
||||||
|
'Please enter a valid date and time.': 'Veuillez saisir une date et une heure valides.'
|
||||||
|
'Please enter a valid date.': 'Veuillez entrer une date valide.'
|
||||||
|
'Please select a valid file.': 'Veuillez sélectionner un fichier valide.'
|
||||||
|
'The hidden field is invalid.': "Le champ masqué n'est pas valide."
|
||||||
|
'Please enter an integer.': 'Veuillez saisir un entier.'
|
||||||
|
'Please select a valid language.': 'Veuillez sélectionner une langue valide.'
|
||||||
|
'Please select a valid locale.': 'Veuillez sélectionner une langue valide.'
|
||||||
|
'Please enter a valid money amount.': 'Veuillez saisir un montant valide.'
|
||||||
|
'Please enter a number.': 'Veuillez saisir un nombre.'
|
||||||
|
'The password is invalid.': 'Le mot de passe est invalide.'
|
||||||
|
'Please enter a percentage value.': 'Veuillez saisir un pourcentage valide.'
|
||||||
|
'The values do not match.': 'Les valeurs ne correspondent pas.'
|
||||||
|
'Please enter a valid time.': 'Veuillez saisir une heure valide.'
|
||||||
|
'Please select a valid timezone.': 'Veuillez sélectionner un fuseau horaire valide.'
|
||||||
|
'Please enter a valid URL.': 'Veuillez saisir une URL valide.'
|
||||||
|
'Please enter a valid search term.': 'Veuillez saisir un terme de recherche valide.'
|
||||||
|
'Please provide a valid phone number.': 'Veuillez fournir un numéro de téléphone valide.'
|
||||||
|
'The checkbox has an invalid value.': 'La case à cocher a une valeur non valide.'
|
||||||
|
'Please enter a valid email address.': 'Veuillez saisir une adresse email valide.'
|
||||||
|
'Please select a valid option.': 'Veuillez sélectionner une option valide.'
|
||||||
|
'Please select a valid range.': 'Veuillez sélectionner une plage valide.'
|
||||||
|
'Please enter a valid week.': 'Veuillez entrer une semaine valide.'
|
||||||
|
'Veuillez entrer un mot de passe': '__Veuillez entrer un mot de passe'
|
||||||
|
'Votre mot de passe doit contenir au moins {{ limit }} caractères': '__Votre mot de passe doit contenir au moins {{ limit }} caractères'
|
||||||
|
'Cette adresse e-mail est déjà utilisée.': '__Cette adresse e-mail est déjà utilisée.'
|
||||||
|
'Cet identifiant unique (UUID) est déjà utilisé.': '__Cet identifiant unique (UUID) est déjà utilisé.'
|
||||||
Reference in New Issue
Block a user