feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run

- Base: wintercms/winter branch 1.2 (full framework)
- Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS
- Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication
- Partials: hero (offline-first), features, modes (offline/nube toggle),
  screenshots, pricing (3 planes), comparison, FAQ, CTA
- Plugin VivesPOS.Site with ContactForm
- Dockerfile: PHP 8.2 Apache, port 80, healthcheck
- Added winter/wn-pages, blog, sitemap, seo plugins
- Active theme set to vivespos
This commit is contained in:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

View File

@@ -0,0 +1,105 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Client-side Language Lines
|--------------------------------------------------------------------------
|
| These are messages made available to the client browser via JavaScript.
| To compile this file run: php artisan winter:util compile lang
|
*/
'markdowneditor' => [
'formatting' => 'Formatage',
'quote' => 'Citation',
'code' => 'Code',
'header1' => 'Entête 1',
'header2' => 'Entête 2',
'header3' => 'Entête 3',
'header4' => 'Entête 4',
'header5' => 'Entête 5',
'header6' => 'Entête 6',
'bold' => 'Gras',
'italic' => 'Italique',
'unorderedlist' => 'Liste non ordonnée',
'orderedlist' => 'Liste ordonnée',
'video' => 'Vidéo',
'image' => 'Image',
'link' => 'Lien',
'horizontalrule' => 'Insérer la règle horizontalement',
'fullscreen' => 'Plein écran',
'preview' => 'Aperçu',
],
'mediamanager' => [
'insert_link' => "Insérer un lien vers un fichier du gestionnaire de média",
'insert_image' => "Insérer une image du gestionnaire de média",
'insert_video' => "Insérer une vidéo du gestionnaire de média",
'insert_audio' => "Insérer un document audio du gestionnaire de média",
'invalid_file_empty_insert' => "Veuillez sélectionner un fichier à lier.",
'invalid_file_single_insert' => "Veuillez sélectionner un seul fichier.",
'invalid_image_empty_insert' => "Veuillez sélectionner au moins une image à insérer.",
'invalid_video_empty_insert' => "Veuillez sélectionner une vidéo à insérer.",
'invalid_audio_empty_insert' => "Veuillez sélectionner un document audio à insérer.",
],
'alert' => [
'confirm_button_text' => 'OK',
'cancel_button_text' => 'Annuler',
'widget_remove_confirm' => 'Retirer ce widget ?'
],
'datepicker' => [
'previousMonth' => 'Mois précédent',
'nextMonth' => 'Mois suivant',
'months' => ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
'weekdays' => ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
'weekdaysShort' => ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']
],
'colorpicker' => [
'last_color' => 'Utiliser la couleur sélectionnée précédemment',
'aria_palette' => 'Zone de sélection des couleurs',
'aria_hue' => 'Curseur de sélection de la teinte',
'aria_opacity' => "Curseur de sélection de l'opacité",
],
'filter' => [
'group' => [
'all' => 'tous'
],
'scopes' => [
'apply_button_text' => 'Appliquer',
'clear_button_text' => 'Annuler'
],
'dates' => [
'all' => 'toute la période',
'filter_button_text' => 'Filtrer',
'reset_button_text' => 'Effacer',
'date_placeholder' => 'Date',
'after_placeholder' => 'Après le',
'before_placeholder' => 'Avant le',
],
'numbers' => [
'all' => 'tous',
'filter_button_text' => 'Filtres',
'reset_button_text' => 'Réinitialiser',
'min_placeholder' => 'Min',
'max_placeholder' => 'Max'
]
],
'eventlog' => [
'show_stacktrace' => 'Afficher la pile d\'exécution',
'hide_stacktrace' => 'Masquer la pile d\'exécution',
'tabs' => [
'formatted' => 'Message formaté',
'raw' => 'Message brut',
],
'editor' => [
'title' => 'Sélectionnez l\'éditeur de code source à utiliser',
'description' => 'L\'environnement de votre système d\'exploitation doit être configuré pour ouvrir l\'un des schémas d\'URL ci-dessous.',
'openWith' => 'Ouvrir avec',
'remember_choice' => 'Se souvenir de la sélection pour la durée de la session dans ce navigateur',
'open' => 'Ouvrir',
'cancel' => 'Annuler'
]
]
];

View File

@@ -0,0 +1,421 @@
<?php
return [
'app' => [
'name' => 'Winter CMS',
'tagline' => 'Retourner à l\'essentiel',
],
'directory' => [
'create_fail' => "Impossible de créer le répertoire : :name",
],
'file' => [
'create_fail' => "Impossible de créer le fichier : :name",
],
'combiner' => [
'not_found' => "Le fichier combiné ':name' est introuvable.",
],
'system' => [
'name' => 'Système',
'menu_label' => 'Système',
'categories' => [
'cms' => 'CMS',
'misc' => 'Divers',
'logs' => 'Journaux',
'mail' => 'E-mail',
'shop' => 'Boutique',
'team' => 'Équipe',
'users' => 'Utilisateurs',
'system' => 'Système',
'social' => 'Social',
'events' => 'Évènements',
'customers' => 'Clients',
'my_settings' => 'Mes réglages',
]
],
'theme' => [
'label' => 'Thème',
'unnamed' => 'Thème sans nom',
'name' => [
'label' => 'Nom du thème',
'help' => 'Nommer le thème avec un nom de code unique. Par exemple, Winter.Vanilla'
],
],
'themes' => [
'install' => 'Installer des thèmes',
'search' => 'Recherche des thème à installer…',
'installed' => 'Thèmes installés',
'no_themes' => 'Il n\'y a aucun thème installé depuis le Marketplace.',
'recommended' => 'Recommandé',
'remove_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce thème ?'
],
'plugin' => [
'label' => 'Plugin',
'unnamed' => 'Plugin sans nom',
'name' => [
'label' => 'Nom du plugin',
'help' => 'Nommer le plugin avec un nom de code unique. Par exemple, Winter.Blog',
],
'by_author' => 'Par :name',
],
'plugins' => [
'manage' => 'Gérer les plugins',
'install' => 'Installer des plugins',
'install_products' => 'Installer des produits',
'search' => 'Recherche des plugins à installer…',
'installed' => 'Plugins installés',
'no_plugins' => 'Il n\'y a aucun plugin installé depuis le site d\'Winter CMS.',
'recommended' => 'Recommandé',
'plugin_label' => 'Plugin',
'unknown_plugin' => 'Le plugin a été supprimé du système de fichiers.',
'select_label' => 'Sélectionner une action...',
'bulk_actions_label' => 'Actions en bloc',
'check_yes' => 'Oui',
'check_no' => 'Non',
'unfrozen' => 'Mises à jour activées',
'enabled' => 'Plugin activé',
'freeze' => 'désactiver les mises à jour pour',
'unfreeze' => 'activer les mises à jour pour',
'enable' => 'activer',
'disable' => 'désactiver',
'refresh' => 'remise à l\'état initial',
'remove' => 'Supprimer',
'freeze_label' => 'Désactiver les mises à jour',
'unfreeze_label' => 'Activer les mises à jour',
'enable_label' => 'Activer les plugins',
'disable_label' => 'Désactiver les plugins',
'refresh_label' => 'Réinitialiser les données du plugin',
'action_confirm' => 'Êtes-vous sûr de vouloir :action ces plugins ?',
'freeze_success' => 'Mises à jour désactivées avec succès pour les plugins sélectionnés.',
'unfreeze_success' => 'Mises à jour activées avec succès pour les plugins sélectionnés.',
'enable_success' => "Les plugins ont été activés avec succès.",
'disable_success' => "Les plugins ont été désactivés avec succès.",
'refresh_confirm' => 'Êtes-vous sûr(e) ?',
'refresh_success' => "Les plugins ont été actualisés avec succès.",
'remove_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce plugin ?',
'remove_success' => "Les plugins ont été supprimés avec succès.",
'replace' => [
'multi_install_error' => 'Le remplacement de plusieurs plugins n\'est pas pris en charge actuellement.',
],
],
'project' => [
'name' => 'Projet',
'owner_label' => 'Auteur',
'attach' => 'Attacher un projet',
'detach' => 'Détacher le Projet',
'none' => 'Aucun',
'id' => [
'label' => 'ID du projet',
'help' => 'Comment trouver l\'ID de votre projet',
'missing' => 'Spécifier un ID de projet.',
],
'detach_confirm' => 'Confirmer le détachement de ce projet ?',
'unbind_success' => 'Le projet a été détaché avec succès.',
],
'settings' => [
'menu_label' => 'Réglages',
'not_found' => 'Les paramètres spécifiés sont introuvables.',
'missing_model' => 'La page de réglages nécessite la définition d\'un Model.',
'update_success' => 'Les réglages pour :name ont étés mis à jour avec succès.',
'test_subject' => 'Test du driver de courrier',
'test_content' => "Il s'agit d'un e-mail de test pour confirmer que les paramètres de messagerie fournis fonctionnent.",
'test_confirm' => "Cela permettra de sauvegarder votre configuration actuelle et d'envoyer un e-mail de test à :email.",
'return' => 'Retourner à la page des réglages du système',
'search' => 'Rechercher'
],
'mail' => [
'log_file' => 'Fichier journal',
'menu_label' => 'Configuration des adresses e-mails',
'menu_description' => 'Gérer la configuration des adresses e-mails.',
'general' => 'Général',
'method' => 'Méthode d\'envoi',
'sender_name' => 'Nom de l\'expéditeur',
'sender_email' => 'Adresse e-mail de l\'expéditeur',
'php_mail' => 'Fonction mail de PHP',
'smtp' => 'SMTP',
'smtp_address' => 'Adresse SMTP',
'smtp_authorization' => 'Authentification SMTP requise',
'smtp_authorization_comment' => 'Cocher cette case si le serveur SMTP nécessite une authentification.',
'smtp_username' => 'Identifiant',
'smtp_password' => 'Mot de passe',
'smtp_port' => 'Port SMTP',
'sendmail' => 'Sendmail',
'sendmail_path' => 'Chemin vers Sendmail',
'sendmail_path_comment' => 'Saisir le chemin du programme sendmail.',
'drivers_hint_content' => 'Veuillez lire la <a href=":url" target="_blank">documentation</a> pour des méthodes alternatives.',
],
'mail_templates' => [
'menu_label' => 'Modèles des e-mails',
'menu_description' => 'Gérer les modèles et maquettes des e-mails envoyés aux utilisateurs et aux administrateurs.',
'new_template' => 'Nouveau modèle',
'new_layout' => 'Nouvelle maquette',
'new_partial' => 'Nouveau modèle partiel',
'template' => 'Modèle',
'templates' => 'Modèles',
'partial' => 'Modèle partiel',
'partials' => 'Modèles partiels',
'menu_layouts_label' => 'Maquettes des e-mails',
'menu_partials_label' => 'Modèles partiels des courriels',
'layout' => 'Maquette',
'layouts' => 'Maquettes',
'no_layout' => '-- Aucune maquette --',
'name' => 'Nom',
'name_comment' => 'Nom unique utilisé pour identifier ce modèle',
'code' => 'Code',
'code_comment' => 'Code unique utilisé pour identifier ce modèle',
'subject' => 'Sujet',
'subject_comment' => 'Sujet de l\'e-mail',
'description' => 'Description',
'content_html' => 'HTML',
'content_css' => 'CSS',
'content_text' => 'Texte brut',
'test_send' => 'Envoyer un message de test',
'test_success' => 'Le message de test a été envoyé avec succès.',
'test_confirm' => 'Un message de test sera envoyé à :email. Continuer ?',
'creating' => 'Création du modèle...',
'creating_layout' => 'Création de la maquette...',
'saving' => 'Sauvegarde du modèle en cours…',
'saving_layout' => 'Enregistrement de la maquette...',
'delete_confirm' => 'Supprimer ce modèle ?',
'delete_layout_confirm' => 'Supprimer cette maquette ?',
'deleting' => 'Suppression du modèle...',
'deleting_layout' => 'Suppression de la maquette...',
'sending' => 'Envoi du message de test en cours…',
'return' => 'Retour à la liste des modèles.',
'options' => 'Options',
'disable_auto_inline_css' => 'Désactiver le CSS automatique en ligne'
],
'mail_brand' => [
'menu_label' => 'Personnalisation des courriels',
'menu_description' => 'Modifier les couleurs et l\'apparence des modèles de courriel.',
'page_title' => 'Personnaliser l\'apparence du courriel',
'sample_template' => [
'heading' => 'En-tête',
'paragraph' => 'C\'est un paragraphe rempli de Lorem Ipsum et un lien. Cumque dicta <a>doloremque eaque</a>, enim error laboriosam pariatur possimus tenetur veritatis voluptas.',
'table' => [
'item' => 'Article',
'description' => 'Description',
'price' => 'Prix',
'centered' => 'Centré',
'right_aligned' => 'Aligné à droite'
],
'buttons' => [
'primary' => 'Bouton principal',
'positive' => 'Bouton positif',
'negative' => 'Bouton négatif',
],
'panel' => 'A quel point ce panneau est-il génial ?',
'more' => 'Un peu plus de texte',
'promotion' => 'Code de réduction: WINTER',
'subcopy' => 'Ceci est le pré copyright de votre courriel',
'thanks' => 'Merci'
],
'fields' => [
'_section_background' => 'Arrière-plan',
'body_bg' => 'Arrière-plan du corps',
'content_bg' => 'Arrière-plan du contenu',
'content_inner_bg' => 'Arrière-plan du contenu intérieur',
'_section_buttons' => 'Boutons',
'button_text_color' => 'Couleur du texte des boutons',
'button_primary_bg' => 'Arrière-plan du bouton principal',
'button_positive_bg' => 'Arrière-plan du bouton positif',
'button_negative_bg' => 'Arrière-plan du bouton négatif',
'_section_type' => 'Typographie',
'header_color' => 'Couleur de l\'en-tête',
'heading_color' => 'Couleur des titres',
'text_color' => 'Couleur du texte',
'link_color' => 'Couleur des liens',
'footer_color' => 'Couleur du pied de page',
'_section_borders' => 'Bordures',
'body_border_color' => 'Couleur de la bordure du corps',
'subcopy_border_color' => 'Couleur de la bordure du pré copyright',
'table_border_color' => 'Couleur de la bordure de la table',
'_section_components' => 'Composants',
'panel_bg' => 'Arrière-plan du panneau',
'promotion_bg' => 'Arrière-plan de la promotion',
'promotion_border_color' => 'Couleur de la bordure de la promotion',
]
],
'install' => [
'project_label' => 'Attacher un projet',
'plugin_label' => 'Installer un plugin',
'theme_label' => 'Installer un thème',
'missing_plugin_name' => 'Saisir le nom d\'un plugin à installer.',
'missing_theme_name' => 'Saisir le nom d\'un thème à installer.',
'install_completing' => 'Fin du processus d\'installation',
'install_success' => 'Le plugin a été installé avec succès.',
],
'updates' => [
'title' => 'Gérer les mises à jour',
'name' => 'Mise à jour',
'menu_label' => 'Mise à jour',
'menu_description' => 'Mise à jour du système, gestion et installation des plugins et thèmes.',
'return_link' => 'Retourner aux mises à jour du système',
'check_label' => 'Vérifier les mises à jour',
'retry_label' => 'Réessayer',
'plugin_name' => 'Nom',
'plugin_code' => 'Code',
'plugin_description' => 'Description',
'plugin_version' => 'Version',
'plugin_author' => 'Auteur',
'plugin_not_found' => 'Plugin non trouvé',
'plugin_version_not_found' => 'Version du plugin non trouvée',
'core_current_build' => 'Version actuelle',
'core_view_changelog' => 'Voir le Changelog',
'core_build' => 'Version :build',
'core_build_help' => 'Une nouvelle version est disponible.',
'core_downloading' => 'Téléchargement des fichiers de l\'application',
'core_extracting' => 'Décompression des fichiers de l\'application',
'core_set_build' => 'Définition du numéro de build',
'update_warnings_title' => 'Certains problèmes ont été détectés et nécessitent une attention particulière :',
'update_warnings_plugin_missing' => "Le plugin :parent_code nécessite l'installation de :code pour fonctionner.",
'update_warnings_plugin_replace' => "Le plugin :plugin remplace :alias, veuillez supprimer :alias pour vous assurer qu'il n'y ait pas de conflit.",
'update_warnings_plugin_replace_cli' => "Ce plugin remplace :alias, veuillez supprimer :alias pour vous assurer qu'il n'y ait pas de conflits.",
'changelog' => 'Changelog',
'changelog_view_details' => 'Voir les détails',
'plugins' => 'Plugins',
'themes' => 'Thèmes',
'disabled' => 'Désactivé',
'plugin_downloading' => 'Téléchargement du plugin : :name',
'plugin_extracting' => 'Décompression du plugin : :name',
'plugin_version_none' => 'Nouveau plugin',
'plugin_current_version' => 'Version actuelle',
'theme_new_install' => 'Installation du nouveau thème.',
'theme_downloading' => 'Téléchargement du thème : :name',
'theme_extracting' => 'Décompression du thème : :name',
'update_label' => 'Mettre à jour',
'update_completing' => 'Finalisation du processus de mise à jour',
'update_loading' => 'Chargement des mises à jour disponibles…',
'update_success' => 'Mise à jour terminée avec succès.',
'update_failed_label' => 'Échec de la mise à jour',
'force_label' => 'Forcer la mise à jour',
'found' => [
'label' => 'Nouvelle mise à jour disponible !',
'help' => 'Cliquer sur « Mettre à jour » pour démarrer le processus.',
],
'none' => [
'label' => 'Aucune mise à jour n\'est disponible.',
'help' => 'Aucune mise à jour plus récente n\'a été trouvée.',
],
'important_action' => [
'empty' => 'Sélectionner l\'action',
'confirm' => 'Confirmer la mise à jour',
'skip' => 'Ignorer ce plugin (cette fois uniquement)',
'ignore' => 'Ignorer ce plugin (toujours)',
],
'important_action_required' => 'Action requise',
'important_view_guide' => 'Consulter le guide de mise à jour',
'important_view_release_notes' => 'Voir les notes de version',
'important_alert_text' => 'Des mise à jour requièrent votre attention.',
'details_title' => 'Détails du plugin',
'details_view_homepage' => 'Voir la page d\'accueil',
'details_readme' => 'Documentation',
'details_readme_missing' => 'Aucune documentation fournie.',
'details_changelog' => 'Journal des modifications',
'details_changelog_missing' => 'Aucun journal des modifications disponible.',
'details_upgrades' => 'Guide de mise à jour',
'details_upgrades_missing' => 'Aucune instruction de mise à jour fournie.',
'details_licence' => 'Licence',
'details_licence_missing' => 'Aucune licence spécifiée.',
'details_current_version' => 'Version actuelle',
'details_author' => 'Auteur',
],
'server' => [
'connect_error' => 'Erreur lors de la connexion au serveur.',
'response_not_found' => 'Le serveur de mise à jour n\'a pas été trouvé.',
'response_invalid' => 'Réponse invalide du serveur.',
'response_empty' => 'Réponse vide du serveur',
'file_error' => 'Erreur du serveur lors de la transmission du paquet.',
'file_corrupt' => 'Le fichier provenant du serveur est corrompu.',
],
'behavior' => [
'missing_property' => 'La classe :class doit définir la propriété $:property utilisée par le behavior :behavior.',
],
'config' => [
'not_found' => 'Impossible de trouver le fichier de configuration :file défini dans :location.',
'required' => "La configuration utilisée dans :location doit fournir une valeur ':property'.",
],
'zip' => [
'extract_failed' => "Impossible de décompresser le fichier ':file'.",
],
'event_log' => [
'hint' => 'Ce journal affiche une liste des erreurs potentielles de l\'application, telles que les exceptions et les informations de débogage.',
'menu_label' => 'Journal des évènements',
'menu_description' => 'Affiche les évènements des journaux systèmes avec leur date et les détails.',
'empty_link' => 'Purger le journal des évènements',
'empty_loading' => 'Purge du journal des évènements…',
'empty_success' => 'Le journal des évènements a été purgé avec succès.',
'return_link' => 'Retour au journal des évènements',
'id' => 'ID',
'id_label' => 'ID de l\'évènement',
'created_at' => 'Date et heure',
'message' => 'Message',
'level' => 'Niveau',
'preview_title' => 'Évènement',
],
'request_log' => [
'hint' => 'Ce journal affiche une liste de requêtes potentiellement suspectes. Par exemple, si un visiteur ouvre une page introuvable du CMS, une ligne avec le code statut 404 est alors créée.',
'menu_label' => 'Journal des requêtes',
'menu_description' => 'Affiche les requêtes erronées ou redirigées, comme les erreurs 404.',
'empty_link' => 'Purger le journal des requêtes',
'empty_loading' => 'Purge du journal des requêtes…',
'empty_success' => 'Le journal des requêtes a été purgé avec succès.',
'return_link' => 'Retour au journal des requêtes',
'id' => 'ID',
'id_label' => 'ID du journal',
'count' => 'Compteur',
'referer' => 'Référents',
'url' => 'Adresse URL',
'status_code' => 'Statut',
'preview_title' => 'Requête'
],
'permissions' => [
'name' => 'Système',
'manage_system_settings' => 'Gérer les paramètres du système',
'manage_software_updates' => 'Gérer les mises à jour du logiciel',
'access_logs' => 'Voir les journaux système',
'manage_mail_templates' => 'Gérer les modèles des e-mails',
'manage_mail_settings' => 'Gérer les paramètres des e-mail',
'manage_other_administrators' => 'Gérer les autres administrateurs',
'impersonate_users' => 'Usurper l\'identité des utilisateurs',
'manage_preferences' => 'Gérer les préférences de l\'interface d\'administration',
'manage_editor' => 'Gérer les préférences de l\'éditeur de code',
'manage_own_editor' => 'Gérer les préférences personnelles de l\'éditeur de code',
'view_the_dashboard' => 'Voir le tableau de bord',
'manage_default_dashboard' => 'Gérer le tableau de bord par défaut',
'manage_branding' => 'Personnaliser l\'interface d\'administration'
],
'log' => [
'menu_label' => 'Paramètres du journal',
'menu_description' => 'Spécifiez les zones qui doivent utiliser la journalisation.',
'default_tab' => 'Enregistrement de données',
'log_events' => 'Enregistrer les événements du système',
'log_events_comment' => 'Stockez les événements système dans la base de données en plus du journal basé sur les fichiers.',
'log_requests' => 'Enregistrer les requêtes erronées.',
'log_requests_comment' => 'Requêtes du navigateur qui peuvent nécessiter une attention particulière, telles que les erreurs 404.',
'log_theme' => 'Enregistrement des modifications sur le thème ',
'log_theme_comment' => 'Lorsqu\'une modification est apportée au thème à l\'aide du back-end.',
],
'media' => [
'invalid_path' => "Le chemin du fichier indiqué est invalide : ':path'.",
'folder_size_items' => 'Articles(s)',
],
'page' => [
'custom_error' => [
'label' => 'Erreur sur la page',
'help' => 'Nous sommes désolés, mais un problème est survenu et la page ne peut pas être affichée.',
],
'invalid_token' => [
'label' => 'Jeton de sécurité non valide',
],
'maintenance' => [
'label' => "Nous revenons tout de suite !",
'help' => "Nous sommes actuellement indisponibles pour maintenance, revenez bientôt !",
'available_at' => 'Essayez à nouveau après:',
],
],
'pagination' => [
'previous' => 'Précédente',
'next' => 'Suivante',
],
];

View File

@@ -0,0 +1,150 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| such as the size rules. Feel free to tweak each of these messages.
|
*/
'accepted' => 'Le champ :attribute doit être accepté.',
'active_url' => 'Le champ :attribute n\'est pas une URL valide.',
'after' => 'Le champ :attribute doit être une date après le :date.',
'after_or_equal' => 'Le champ :attribute doit être une date après le ou égal à :date.',
'alpha' => 'Le champ :attribute ne peut contenir que des lettres.',
'alpha_dash' => 'Le champ :attribute ne peut contenir que des lettres, des chiffres et des tirets.',
'alpha_num' => 'Le champ :attribute ne peut contenir que des lettres et des chiffres.',
'array' => 'Le champ :attribute doit être un groupe.',
'before' => 'Le champ :attribute doit être une date avant le :date.',
'before_or_equal' => 'Le champ :attribute doit être une date avant le ou égal à :date.',
'between' => [
'numeric' => 'Le champ :attribute doit être compris entre :min - :max.',
'file' => 'Le champ :attribute doit être compris entre :min - :max kilooctets.',
'string' => 'Le champ :attribute doit être compris entre :min - :max caractères.',
'array' => 'Le champ :attribute doit être compris entre :min - :max objets.',
],
'boolean' => 'Le champ :attribute doit être vrai (true) ou faux (false).',
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
'date' => 'Le champ :attribute n\'est pas une date valide.',
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
'different' => 'Le champ :attribute et :other doivent être différents.',
'digits' => 'Le champ :attribute doit être de :digits chiffres.',
'digits_between' => 'Le champ :attribute doit être compris entre :min et :max chiffres.',
'dimensions' => 'Le champ :attribute a des dimensions d\'image invalides.',
'distinct' => 'Le champ :attribute a une valeur en double..',
'email' => 'Le format du champ :attribute n\'est pas valide.',
'ends_with' => 'Le champ :attribute doit se terminer par l\'un des éléments suivants: :values.',
'exists' => 'Le champ :attribute sélectionné n\'est pas valide.',
'file' => 'Le champ :attribute doit être un fichier.',
'filled' => 'Le champ :attribute doit avoir une valeur.',
'gt' => [
'numeric' => 'Le champ :attribute doit être supérieur à :value.',
'file' => 'Le champ :attribute doit être supérieur à :value kilobytes.',
'string' => 'Le champ :attribute doit être supérieur à :value caractères.',
'array' => 'Le champ :attribute doit avoir plus de :value éléments.',
],
'gte' => [
'numeric' => 'Le champ :attribute doit être supérieur ou égal à :value.',
'file' => 'Le champ :attribute doit être supérieur ou égal à :value kilobytes.',
'string' => 'Le champ :attribute doit être supérieur ou égal à :value caractères.',
'array' => 'Le champ :attribute doit avoir :value éléments ou plus.',
],
'image' => 'Le champ :attribute doit être une image.',
'in' => 'Le champ :attribute sélectionné n\'est pas valide.',
'in_array' => 'Le champ :attribute n\'existe pas dans :other.',
'integer' => 'Le champ :attribute doit être un entier.',
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
'ipv4' => 'Le champ :attribute doit être une adresse IPv4.',
'ipv6' => 'Le champ :attribute doit être une adresse IPv6.',
'json' => 'Le champ :attribute doit être une chaîne JSON.',
'lt' => [
'numeric' => 'Le champ :attribute doit être inférieur à :value.',
'file' => 'Le champ :attribute doit être inférieur à :value kilobytes.',
'string' => 'Le champ :attribute doit être inférieur à :value caractères.',
'array' => 'Le champ :attribute doit avoir moins de :value éléments.',
],
'lte' => [
'numeric' => 'Le champ :attribute doit être inférieur ou égal à :value.',
'file' => 'Le champ :attribute doit être inférieur ou égal à :value kilobytes.',
'string' => 'Le champ :attribute doit être inférieur ou égal à :value caractères.',
'array' => 'Le champ :attribute ne doit pas avoir plus de :value éléments.',
],
'max' => [
'numeric' => 'Le champ :attribute ne peut pas être supérieure à :max.',
'file' => 'Le champ :attribute ne peut pas être supérieure à :max kilooctets.',
'string' => 'Le champ :attribute ne peut pas être supérieure à :max caractères.',
'array' => 'Le champ :attribute ne peut pas être supérieure à :max objets.',
],
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.',
'min' => [
'numeric' => 'Le champ :attribute doit être au minimum de :min.',
'file' => 'Le champ :attribute doit être au minimum de :min kilooctets.',
'string' => 'Le champ :attribute doit être au minimum de :min caractères.',
'array' => 'Le champ :attribute doit être au minimum de :min objets.',
],
'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.',
'not_regex' => 'Le format du champ :attribute n\'est pas valide.',
'numeric' => 'Le champ :attribute doit être un nombre.',
'present' => 'Le champ :attribute doit être présent.',
'regex' => 'Le format du champ :attribute n\'est pas valide.',
'required' => 'Le champ :attribute est obligatoire.',
'required_if' => 'Le champ :attribute est obligatoire quand :other est :value.',
'required_unless' => 'Le champ :attribute est nécessaire à moins que :other soit dans :values.',
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
'required_with_all' => 'Le champ :attribute est requis lorsque :values est présent.',
'required_without' => 'Le champ :attribute est obligatoire quand :values est absent.',
'required_without_all' => 'Le champ :attribute est requis lorsque aucun de :values n\'est présent.',
'same' => 'Le champ :attribute et :other doivent correspondre.',
'size' => [
'numeric' => 'Le champ :attribute doit être de :size.',
'file' => 'Le champ :attribute doit être de :size kilooctets.',
'string' => 'Le champ :attribute doit être de :size caractères.',
'array' => 'Le champ :attribute doit contenir :size objets.',
],
'starts_with' => 'Le champ :attribute doit commencer par l\'un des éléments suivants: :values.',
'string' => 'Le champ :attribute doit être une chaîne.',
'timezone' => 'Le champ :attribute doit être une zone valide.',
'unique' => 'Le champ :attribute doit être unique. La valeur renseignée est déjà utilisée.',
'uploaded' => 'Le champ :attribute n\'a pas téléchargé de données.',
'url' => 'Le champ :attribute n\'est pas une URL valide.',
'uuid' => 'Le champ :attribute doit être un UUID valide.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => [],
];