]> _ Git - psq.git/commitdiff
localization + filters
authorLouis Jeckel <louis.jeckel@outlook.cm>
Fri, 24 Apr 2020 10:47:53 +0000 (12:47 +0200)
committerLouis Jeckel <louis.jeckel@outlook.cm>
Fri, 24 Apr 2020 10:47:53 +0000 (12:47 +0200)
19 files changed:
.idea/lettre-pharma.iml
.idea/php.xml
app/Events/DispatchMailgunEvent.php
app/Jobs/ProcessEmailBatch.php
app/Nova/Actions/SetSubscriptionStatus.php [new file with mode: 0644]
app/Nova/Filters/SubscriptionStatusFilter.php [new file with mode: 0644]
app/Nova/Filters/TypeFilter.php [new file with mode: 0644]
app/Nova/Organization.php
app/Nova/User.php
app/PdfFile.php
composer.json
composer.lock
resources/lang/fr.json [new file with mode: 0644]
resources/lang/fr/auth.php [new file with mode: 0644]
resources/lang/fr/pagination.php [new file with mode: 0644]
resources/lang/fr/passwords.php [new file with mode: 0644]
resources/lang/fr/validation.php [new file with mode: 0644]
resources/lang/vendor/nova/fr.json [new file with mode: 0644]
resources/lang/vendor/nova/fr/validation.php [new file with mode: 0644]

index 1bce1c66f737ee651ac2da5e1ce3112aeba686b0..1e1469bcf5b9013ac4b146d72b550a8ef1308c12 100644 (file)
@@ -12,7 +12,9 @@
       <excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/laravel-debugbar" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/laravel-ide-helper" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/reflection-docblock" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/caouecs/laravel-lang" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/clue/stream-filter" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/coderello/laravel-nova-lang" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/itsgoingd/clockwork" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/justinrainbow/json-schema" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/kriswallsmith/buzz" />
index b4a0b9b88b9f92bb34334d7c5616181592bb819f..54d8ca95cfd0ae98ce24dbc31bb76ae07e03dffb 100644 (file)
       <path value="$PROJECT_DIR$/vendor/maatwebsite/excel" />
       <path value="$PROJECT_DIR$/vendor/markbaker/matrix" />
       <path value="$PROJECT_DIR$/vendor/markbaker/complex" />
+      <path value="$PROJECT_DIR$/vendor/coderello/laravel-nova-lang" />
+      <path value="$PROJECT_DIR$/vendor/caouecs/laravel-lang" />
     </include_path>
   </component>
   <component name="PhpProjectSharedConfiguration" php_language_level="7.2" />
index b7cb510ec5ee5d0845c304aa9fd05495346ba2f0..80184deab7332e74ec744a88d7335a04fb523ee8 100644 (file)
@@ -38,7 +38,6 @@ class DispatchMailgunEvent implements ShouldBroadcast
     {
         $tags = Arr::get($webhookData, 'event-data.tags');
 
-        $broadcast = in_array(env('APP_ENV'), $tags, true);
 
 
         /** @todo check webhook key */
@@ -53,6 +52,9 @@ class DispatchMailgunEvent implements ShouldBroadcast
             'email_batch_id' => $this->batch_id
         ]);
 
+        $this->broadcast = in_array(env('APP_ENV'), $tags, true) &&
+            ($event->wasRecentlyCreated);
+
         $event->touch();
 
         $this->data = $event;
index 083373ed9d771d528828d14d7e165cb3a99a308d..0e2767718627243d738ad76702f610114c2d2f95 100644 (file)
@@ -51,7 +51,7 @@ class ProcessEmailBatch implements ShouldQueue
         /** @var Collection $users */
         $users = User::subscribed()->get();
 
-        $size = env('MAILGUN_CHUNK_SIZE', 50);
+        $size = env('MAILGUN_CHUNK_SIZE', 200);
         $chunks = $users->chunk($size);
 
         $this->processUpdate([
diff --git a/app/Nova/Actions/SetSubscriptionStatus.php b/app/Nova/Actions/SetSubscriptionStatus.php
new file mode 100644 (file)
index 0000000..0fed386
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Nova\Actions;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Support\Collection;
+use Laravel\Nova\Actions\Action;
+use Laravel\Nova\Fields\ActionFields;
+
+class SetSubscriptionStatus extends Action
+{
+    use InteractsWithQueue, Queueable;
+
+    private $setActive;
+
+    public $showOnTableRow = true;
+    public $withoutConfirmation = true;
+
+    public function __construct($setActive)
+    {
+        $this->setActive = $setActive;
+    }
+
+
+    public function name()
+    {
+        return $this->setActive ?
+            "Activer abonnement" :
+            "Désabonner";
+    }
+
+    /**
+     * Perform the action on the given models.
+     *
+     * @param  \Laravel\Nova\Fields\ActionFields  $fields
+     * @param  \Illuminate\Support\Collection  $models
+     * @return mixed
+     */
+    public function handle(ActionFields $fields, Collection $models)
+    {
+        $models->map->update(['subscription_active' => $this->setActive]);
+
+        $message = $this->setActive ?
+            "Abonnement activé avec succès" :
+            "Abonnement désactivé avec succès";
+
+        return Action::message($message);
+
+    }
+
+    /**
+     * Get the fields available on the action.
+     *
+     * @return array
+     */
+    public function fields()
+    {
+        return [];
+    }
+}
diff --git a/app/Nova/Filters/SubscriptionStatusFilter.php b/app/Nova/Filters/SubscriptionStatusFilter.php
new file mode 100644 (file)
index 0000000..a7c7537
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Nova\Filters;
+
+use Illuminate\Http\Request;
+use Laravel\Nova\Filters\Filter;
+
+class SubscriptionStatusFilter extends Filter
+{
+    /**
+     * The filter's component.
+     *
+     * @var string
+     */
+    public $component = 'select-filter';
+
+    public $name = "Abonnement";
+
+
+    /**
+     * Apply the filter to the given query.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Illuminate\Database\Eloquent\Builder  $query
+     * @param  mixed  $value
+     * @return \Illuminate\Database\Eloquent\Builder
+     */
+    public function apply(Request $request, $query, $value)
+    {
+        return $query->where('subscription_active', $value);
+    }
+
+    /**
+     * Get the filter's available options.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    public function options(Request $request)
+    {
+        return [
+            'Inactif' => 0,
+            'Actif' => 1,
+        ];
+    }
+}
diff --git a/app/Nova/Filters/TypeFilter.php b/app/Nova/Filters/TypeFilter.php
new file mode 100644 (file)
index 0000000..27117e4
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Nova\Filters;
+
+use App\OrganizationType;
+use Illuminate\Http\Request;
+use Laravel\Nova\Filters\Filter;
+
+class TypeFilter extends Filter
+{
+    /**
+     * The filter's component.
+     *
+     * @var string
+     */
+    public $component = 'select-filter';
+
+    /**
+     * Apply the filter to the given query.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Illuminate\Database\Eloquent\Builder  $query
+     * @param  mixed  $value
+     * @return \Illuminate\Database\Eloquent\Builder
+     */
+    public function apply(Request $request, $query, $value)
+    {
+        return $query->where('type_id', $value);
+    }
+
+    /**
+     * Get the filter's available options.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    public function options(Request $request)
+    {
+        return OrganizationType::pluck('id', 'name');
+    }
+}
index cbe5f287b0a64b8eae1b58160f627be319aac440..62aeac009192595d5e439e6a96edf5ede908ae2b 100644 (file)
@@ -2,6 +2,9 @@
 
 namespace App\Nova;
 
+use App\Nova\Actions\SetSubscriptionStatus;
+use App\Nova\Filters\SubscriptionStatusFilter;
+use App\Nova\Filters\TypeFilter;
 use Illuminate\Http\Request;
 use Laravel\Nova\Fields\BelongsTo;
 use Laravel\Nova\Fields\Boolean;
@@ -81,7 +84,10 @@ class Organization extends Resource
      */
     public function filters(Request $request)
     {
-        return [];
+        return [
+            new SubscriptionStatusFilter,
+            new TypeFilter,
+        ];
     }
 
     /**
@@ -103,6 +109,9 @@ class Organization extends Resource
      */
     public function actions(Request $request)
     {
-        return [];
+        return [
+            new SetSubscriptionStatus(true),
+            new SetSubscriptionStatus(false),
+        ];
     }
 }
index e39c30221b36ee8bcc53cfc1752066fc4af56fde..fed3cb13985e574e5117be47de6dad9af58fe699 100644 (file)
@@ -22,6 +22,7 @@ class User extends Resource
      */
     public static $model = \App\User::class;
 
+
     /**
      * The single value that should be used to represent the resource when being displayed.
      *
@@ -45,10 +46,14 @@ class User extends Resource
     public function fields(Request $request)
     {
         return [
-            new Panel('Fiche', $this->basicInfo()),
+            Text::make('Prénom', 'first_name'),
+            Text::make('Nom', 'last_name'),
+            Text::make('Email'),
+            Text::make('Position'),
+            Text::make('Téléphone', 'phone'),
             new Panel('Adresse', $this->addressFields()),
             new Panel('Affiliation', [
-                BelongsTo::make('Organisation', 'organization', Organization::class),
+                BelongsTo::make('Organisation', 'organization', Organization::class)->searchable(),
 
             ]),
             Boolean::make('Abonnement actif', 'isSubscribed')->readonly()->onlyOnIndex(),
@@ -56,19 +61,6 @@ class User extends Resource
     }
 
 
-    protected function basicInfo()
-    {
-        return [
-            ID::make()->sortable()->onlyOnIndex(),
-            Text::make('Prénom', 'first_name'),
-            Text::make('Nom', 'last_name'),
-            Text::make('Email')->hideFromIndex(),
-            Text::make('Position'),
-            Text::make('Téléphone', 'phone'),
-        ];
-
-    }
-
 
     /**
      * Get the address fields for the resource.
@@ -78,10 +70,10 @@ class User extends Resource
     protected function addressFields()
     {
         return [
-            Place::make('Address', 'address_line_1')->hideFromIndex(),
-            Text::make('City')->hideFromIndex(),
-            Text::make('Postal Code')->hideFromIndex(),
-            Country::make('Country')->hideFromIndex(),
+            Place::make('Adresse', 'address_line_1')->hideFromIndex(),
+            Text::make('Ville', 'city')->hideFromIndex(),
+            Text::make('Code Postal', 'postal_code')->hideFromIndex(),
+            Country::make('Pays', 'country')->hideFromIndex(),
         ];
     }
 
index c0ea27b712cc45d0a0303302e2f2d03545420503..31b8c470a61046c21928e22a7c5044463bc435bc 100644 (file)
@@ -121,7 +121,7 @@ class PdfFile extends TwillModel implements Sortable
         $this->makeJson();
         $this->makeCover();
         $this->makeSearchable();
-        if(!env('APP_ENV') === 'local')
+//        if(!env('APP_ENV') === 'local')
             $this->shortenLinks();
         $this->saveToCloud();
 
index 26e94761178368b241e4c53857bad8f324b10cf9..24f540b025f42a23426a60b62c3930a65e630cdf 100644 (file)
@@ -14,6 +14,8 @@
         "algolia/algoliasearch-client-php": "^2.6",
         "anaseqal/nova-import": "^0.0.3",
         "area17/twill": "^2.0",
+        "caouecs/laravel-lang": "~6.0",
+        "coderello/laravel-nova-lang": "^1.4",
         "fideloper/proxy": "^4.2",
         "fruitcake/laravel-cors": "^1.0",
         "guzzlehttp/guzzle": "^6.3",
index 81c15df71d0d3733704b57d2f3458e9925e27f6b..1e14f644ac9956817730e5f0af4805b464524126 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "170735a710a465a709486727eadb7f99",
+    "content-hash": "0b4e0e19d3fc9c24169a8401ede1ddff",
     "packages": [
         {
             "name": "algolia/algoliasearch-client-php",
             ],
             "time": "2019-11-30T02:33:19+00:00"
         },
+        {
+            "name": "caouecs/laravel-lang",
+            "version": "6.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/caouecs/Laravel-lang.git",
+                "reference": "1f21bad146c6a042f13f34b8db64966584699c57"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/caouecs/Laravel-lang/zipball/1f21bad146c6a042f13f34b8db64966584699c57",
+                "reference": "1f21bad146c6a042f13f34b8db64966584699c57",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*"
+            },
+            "suggest": {
+                "ablunier/laravel-lang-installer": "Command for easily add languages to a Laravel project",
+                "andrey-helldar/laravel-lang-publisher": "Easy installation and update of translation files for your project",
+                "arcanedev/laravel-lang": "Translations manager and checker for Laravel 5",
+                "overtrue/laravel-lang": "Command to add languages in your project"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "caouecs",
+                    "email": "caouecs@caouecs.net"
+                }
+            ],
+            "description": "Languages for Laravel",
+            "keywords": [
+                "lang",
+                "languages",
+                "laravel",
+                "lpm"
+            ],
+            "time": "2020-03-17T15:39:13+00:00"
+        },
         {
             "name": "cartalyst/tags",
             "version": "v10.0.1",
             ],
             "time": "2019-04-09T12:31:48+00:00"
         },
+        {
+            "name": "coderello/laravel-nova-lang",
+            "version": "1.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/coderello/laravel-nova-lang.git",
+                "reference": "4760cf1e7437ba9ca0112661af11208f59e5f39c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/coderello/laravel-nova-lang/zipball/4760cf1e7437ba9ca0112661af11208f59e5f39c",
+                "reference": "4760cf1e7437ba9ca0112661af11208f59e5f39c",
+                "shasum": ""
+            },
+            "require": {
+                "laravel/framework": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0",
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "laravel": {
+                    "providers": [
+                        "Coderello\\LaravelNovaLang\\Providers\\LaravelNovaLangServiceProvider"
+                    ]
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Coderello\\LaravelNovaLang\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Language support for Laravel Nova.",
+            "keywords": [
+                "lang",
+                "language",
+                "laravel",
+                "nova",
+                "support"
+            ],
+            "time": "2020-04-19T11:20:08+00:00"
+        },
         {
             "name": "dasprid/enum",
             "version": "1.0.0",
diff --git a/resources/lang/fr.json b/resources/lang/fr.json
new file mode 100644 (file)
index 0000000..ecb1ced
--- /dev/null
@@ -0,0 +1,56 @@
+{
+    "A fresh verification link has been sent to your email address.": "Un nouveau lien de vérification a été envoyé à votre adresse email.",
+    "All rights reserved.": "Tous droits réservés.",
+    "Before proceeding, please check your email for a verification link.": "Avant de continuer, veuillez vérifier votre courrier électronique pour un lien de vérification.",
+    "click here to request another": "cliquer ici pour faire une autre demande",
+    "Confirm Password": "Confirmez le mot de passe",
+    "E-Mail Address": "Adresse email",
+    "Error": "Erreur",
+    "Forbidden": "Interdit",
+    "Forgot Your Password?": "Vous avez oublié votre mot de passe ?",
+    "Go Home": "Aller à l'accueil",
+    "Hello!": "Bonjour !",
+    "hi": "salut",
+    "If you did not create an account, no further action is required.": "Si vous n'avez pas créé de compte, aucune action supplémentaire n'est requise.",
+    "If you did not receive the email": "Si vous n'avez pas reçu l'email",
+    "If you did not request a password reset, no further action is required.": "Si vous n'avez pas demandé de réinitialisation de mot de passe, aucune autre action n'est requise.",
+    "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:displayableActionUrl](:actionURL)": "Si vous avez des problèmes en cliquant sur le bouton \":actionText\", faites un copié/collé de l'url ci-dessous dans votre navigateur :\n [:displayableActionUrl](:actionURL)",
+    "Invalid signature.": "Signature invalide",
+    "Login": "Connexion",
+    "Logout": "Déconnexion",
+    "Name": "Nom",
+    "Not Found": "Non trouvé",
+    "Oh no": "Oh non",
+    "Page Expired": "Page expirée",
+    "Page Not Found": "Page non trouvée",
+    "Password": "Mot de passe",
+    "Please click the button below to verify your email address.": "Veuillez cliquer sur le bouton ci-dessous pour vérifier votre adresse email.",
+    "Please confirm your password before continuing.": "Veuillez confirmer votre mot de passe avant de continuer",
+    "Regards": "Cordialement",
+    "Register": "S'inscrire",
+    "Remember Me": "Se souvenir de moi",
+    "Reset Password": "Réinitialisation du mot de passe",
+    "Reset Password Notification": "Notification de réinitialisation du mot de passe",
+    "Send Password Reset Link": "Envoyer le lien de réinitialisation du mot de passe",
+    "Server Error": "Erreur serveur",
+    "Service Unavailable": "Service indisponible",
+    "Sorry, the page you are looking for could not be found.": "Désolé, la page que vous recherchez est introuvable.",
+    "Sorry, we are doing some maintenance. Please check back soon.": "Désolé, nous sommes en maintenance. Veuillez revenir plus tard.",
+    "Sorry, you are forbidden from accessing this page.": "Désolé, vous ne pouvez accéder à cette page.",
+    "Sorry, you are making too many requests to our servers.": "Désolé, vous faites trop de requêtes vers nos serveurs.",
+    "Sorry, you are not authorized to access this page.": "Désolé, vous n'êtes pas autorisé à accéder à cette page.",
+    "Sorry, your session has expired. Please refresh and try again.": "Désolé, votre session a expiré. Veuillez actualiser la page et réessayer.",
+    "This action is unauthorized.": "Cette action n'est pas autorisée.",
+    "This password reset link will expire in :count minutes.": "Ce lien de réinitialisation du mot de passe expirera dans :count minutes.",
+    "Toggle navigation": "Basculer la navigation",
+    "Too Many Attempts.": "Trop de tentatives.",
+    "Too Many Requests": "Trop de requêtes",
+    "Unauthorized": "Non autorisé",
+    "Verify Email Address": "Vérification de l'adresse email",
+    "Verify Your Email Address": "Vérifiez votre adresse email",
+    "We won't ask for your password again for a few hours.": "Nous ne vous demanderons plus votre mot de passe pour quelques heures",
+    "Whoops!": "Oups !",
+    "Whoops, something went wrong on our servers.": "Oups, quelque chose s'est mal passé sur nos serveurs.",
+    "You are receiving this email because we received a password reset request for your account.": "Vous recevez cet email car nous avons reçu une demande de réinitialisation de mot de passe pour votre compte.",
+    "Your email address is not verified.": "Votre adresse email n'a pas été vérifiée."
+}
diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php
new file mode 100644 (file)
index 0000000..1f894af
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | Authentication Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used during authentication for various
+    | messages that we need to display to the user. You are free to modify
+    | these language lines according to your application's requirements.
+    |
+    */
+
+    'failed'   => 'Ces identifiants ne correspondent pas à nos enregistrements',
+    'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.',
+];
diff --git a/resources/lang/fr/pagination.php b/resources/lang/fr/pagination.php
new file mode 100644 (file)
index 0000000..8c1080e
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | Pagination Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used by the paginator library to build
+    | the simple pagination links. You are free to change them to anything
+    | you want to customize your views to better match your application.
+    |
+    */
+
+    'previous' => '&laquo; Précédent',
+    'next'     => 'Suivant &raquo;',
+];
diff --git a/resources/lang/fr/passwords.php b/resources/lang/fr/passwords.php
new file mode 100644 (file)
index 0000000..e85806e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reminder Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are the default lines which match reasons
+    | that are given by the password broker for a password update attempt
+    | has failed, such as for an invalid token or invalid new password.
+    |
+    */
+
+    'reset'     => 'Votre mot de passe a été réinitialisé !',
+    'sent'      => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !',
+    'throttled' => 'Veuillez attendre afin de ré-essayer.',
+    'token'     => "Ce jeton de réinitialisation du mot de passe n'est pas valide.",
+    'user'      => "Aucun utilisateur n'a été trouvé avec cette adresse email.",
+];
diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php
new file mode 100644 (file)
index 0000000..4cb2705
--- /dev/null
@@ -0,0 +1,179 @@
+<?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
+    | 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 postérieure au :date.',
+    'after_or_equal'  => 'Le champ :attribute doit être une date postérieure ou égale au :date.',
+    'alpha'           => 'Le champ :attribute doit contenir uniquement des lettres.',
+    'alpha_dash'      => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.',
+    'alpha_num'       => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.',
+    'array'           => 'Le champ :attribute doit être un tableau.',
+    'before'          => 'Le champ :attribute doit être une date antérieure au :date.',
+    'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.',
+    'between'         => [
+        'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.',
+        'file'    => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir entre :min et :max caractères.',
+        'array'   => 'Le tableau :attribute doit contenir entre :min et :max éléments.',
+    ],
+    'boolean'        => 'Le champ :attribute doit être vrai ou faux.',
+    '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'      => 'Les champs :attribute et :other doivent être différents.',
+    'digits'         => 'Le champ :attribute doit contenir :digits chiffres.',
+    'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.',
+    'dimensions'     => "La taille de l'image :attribute n'est pas conforme.",
+    'distinct'       => 'Le champ :attribute a une valeur en double.',
+    'email'          => 'Le champ :attribute doit être une adresse email valide.',
+    'ends_with'      => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values',
+    'exists'         => 'Le champ :attribute sélectionné est invalide.',
+    'file'           => 'Le champ :attribute doit être un fichier.',
+    'filled'         => 'Le champ :attribute doit avoir une valeur.',
+    'gt'             => [
+        'numeric' => 'La valeur de :attribute doit être supérieure à :value.',
+        'file'    => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir plus de :value caractères.',
+        'array'   => 'Le tableau :attribute doit contenir plus de :value éléments.',
+    ],
+    'gte' => [
+        'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.',
+        'file'    => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir au moins :value caractères.',
+        'array'   => 'Le tableau :attribute doit contenir au moins :value éléments.',
+    ],
+    'image'    => 'Le champ :attribute doit être une image.',
+    'in'       => 'Le champ :attribute est invalide.',
+    '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 valide.',
+    'ipv6'     => 'Le champ :attribute doit être une adresse IPv6 valide.',
+    'json'     => 'Le champ :attribute doit être un document JSON valide.',
+    'lt'       => [
+        'numeric' => 'La valeur de :attribute doit être inférieure à :value.',
+        'file'    => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir moins de :value caractères.',
+        'array'   => 'Le tableau :attribute doit contenir moins de :value éléments.',
+    ],
+    'lte' => [
+        'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.',
+        'file'    => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir au plus :value caractères.',
+        'array'   => 'Le tableau :attribute doit contenir au plus :value éléments.',
+    ],
+    'max' => [
+        'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.',
+        'file'    => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.',
+        'string'  => 'Le texte de :attribute ne peut contenir plus de :max caractères.',
+        'array'   => 'Le tableau :attribute ne peut contenir plus de :max éléments.',
+    ],
+    'mimes'     => 'Le champ :attribute doit être un fichier de type : :values.',
+    'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.',
+    'min'       => [
+        'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.',
+        'file'    => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.',
+        'string'  => 'Le texte :attribute doit contenir au moins :min caractères.',
+        'array'   => 'Le tableau :attribute doit contenir au moins :min éléments.',
+    ],
+    '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 contenir un nombre.',
+    'password'             => 'Le mot de passe est incorrect',
+    'present'              => 'Le champ :attribute doit être présent.',
+    'regex'                => 'Le format du champ :attribute est invalide.',
+    'required'             => 'Le champ :attribute est obligatoire.',
+    'required_if'          => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.',
+    'required_unless'      => 'Le champ :attribute est obligatoire sauf si :other est :values.',
+    'required_with'        => 'Le champ :attribute est obligatoire quand :values est présent.',
+    'required_with_all'    => 'Le champ :attribute est obligatoire quand :values sont présents.',
+    'required_without'     => "Le champ :attribute est obligatoire quand :values n'est pas présent.",
+    'required_without_all' => "Le champ :attribute est requis quand aucun de :values n'est présent.",
+    'same'                 => 'Les champs :attribute et :other doivent être identiques.',
+    'size'                 => [
+        'numeric' => 'La valeur de :attribute doit être :size.',
+        'file'    => 'La taille du fichier de :attribute doit être de :size kilo-octets.',
+        'string'  => 'Le texte de :attribute doit contenir :size caractères.',
+        'array'   => 'Le tableau :attribute doit contenir :size éléments.',
+    ],
+    'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values',
+    'string'      => 'Le champ :attribute doit être une chaîne de caractères.',
+    'timezone'    => 'Le champ :attribute doit être un fuseau horaire valide.',
+    'unique'      => 'La valeur du champ :attribute est déjà utilisée.',
+    'uploaded'    => "Le fichier du champ :attribute n'a pu être téléversé.",
+    'url'         => "Le format de l'URL de :attribute n'est pas 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' => [
+        'name'                  => 'nom',
+        'username'              => "nom d'utilisateur",
+        'email'                 => 'adresse email',
+        'first_name'            => 'prénom',
+        'last_name'             => 'nom',
+        'password'              => 'mot de passe',
+        'password_confirmation' => 'confirmation du mot de passe',
+        'city'                  => 'ville',
+        'country'               => 'pays',
+        'address'               => 'adresse',
+        'phone'                 => 'téléphone',
+        'mobile'                => 'portable',
+        'age'                   => 'âge',
+        'sex'                   => 'sexe',
+        'gender'                => 'genre',
+        'day'                   => 'jour',
+        'month'                 => 'mois',
+        'year'                  => 'année',
+        'hour'                  => 'heure',
+        'minute'                => 'minute',
+        'second'                => 'seconde',
+        'title'                 => 'titre',
+        'content'               => 'contenu',
+        'description'           => 'description',
+        'excerpt'               => 'extrait',
+        'date'                  => 'date',
+        'time'                  => 'heure',
+        'available'             => 'disponible',
+        'size'                  => 'taille',
+    ],
+];
diff --git a/resources/lang/vendor/nova/fr.json b/resources/lang/vendor/nova/fr.json
new file mode 100644 (file)
index 0000000..946000c
--- /dev/null
@@ -0,0 +1,406 @@
+{
+    "Actions": "Actions",
+    "Details": "Détails",
+    "If you did not request a password reset, no further action is required.": "Si vous n’avez pas fait cette demande de réinitialisation du mot de passe, vous pouvez ignorer cet email.",
+    "Reset Password": "Réinitialiser le mot de passe",
+    "Sorry! You are not authorized to perform this action.": "Désolé ! Vous n’êtes pas autorisé à exécuter cette action.",
+    "You are receiving this email because we received a password reset request for your account.": "Vous recevez cet email car nous avons reçu une demande de réinitialisation de mot de passe pour votre compte.",
+    "Confirm Password": "Confirmer le mot de passe",
+    "Dashboard": "Tableau de bord",
+    "Email Address": "Adresse email",
+    "Forgot Your Password?": "Vous avez oublié votre mot de passe ?",
+    "Forgot your password?": "Vous avez oublié votre mot de passe ?",
+    "Login": "Connexion",
+    "Logout": "Déconnexion",
+    "Password": "Mot de passe",
+    "Remember Me": "Se souvenir de moi",
+    "Resources": "Ressources",
+    "Send Password Reset Link": "Envoyer le lien de réinitialisation de mot de passe",
+    "Welcome Back!": "Bienvenue à nouveau !",
+    "Delete Resource": "Supprimer la ressource",
+    "Delete": "Supprimer",
+    "Detach Resource": "Détacher des ressources",
+    "Detach": "Détacher",
+    "Detach Selected": "Détacher sélectionné",
+    "Delete Selected": "Supprimer la sélection",
+    "Force Delete Selected": "Forcer la suppression de la sélection",
+    "Restore Selected": "Restaurer les éléments sélectionnés",
+    "Restore Resource": "Restaurer la ressource",
+    "Restore": "Restaurer",
+    "Force Delete Resource": "Forcer la suppression de la ressource",
+    "Force Delete": "Forcer la suppression",
+    "The :resource was created!": "La ressource :resource a été ajouté !",
+    "Are you sure you want to delete this resource?": "Êtes-vous sûr de vouloir supprimer cette ressource ?",
+    "Are you sure you want to delete the selected resources?": "Êtes-vous sûr de vouloir supprimer les ressources sélectionnés ?",
+    "Are you sure you want to detach this resource?": "Êtes-vous sûr de vouloir détacher cette ressource ?",
+    "Are you sure you want to detach the selected resources?": "Êtes-vous sûr de vouloir détacher les ressources sélectionnées ?",
+    "Are you sure you want to force delete this resource?": "Êtes-vous sûr de vouloir forcer la suppression de cette ressource ?",
+    "Are you sure you want to force delete the selected resources?": "Êtes-vous sûr de vouloir forcer la suppression des ressources sélectionnées ?",
+    "Are you sure you want to restore this resource?": "Êtes-vous sûr de vouloir restaurer cette ressource ?",
+    "Are you sure you want to restore the selected resources?": "Êtes-vous sûr de vouloir restaurer les ressources sélectionnées ?",
+    "No :resource matched the given criteria.": "Aucun :resource ne correspond aux critères indiqués.",
+    "Another user has updated this resource since this page was loaded. Please refresh the page and try again.": "Un autre utilisateur a mis à jour cette ressource depuis que vous avez commencé à la modifier. Veuillez actualiser la page.",
+    "Are you sure you want to delete this file?": "Êtes-vous sûr de vouloir supprimer ce fichier ?",
+    "Are you sure you want to run this action?": "Êtes-vous sûr que vous voulez exécuter cette action ?",
+    "Attach": "Attacher",
+    "Attach & Attach Another": "Sauvegarder puis attacher un autre",
+    "Cancel": "Annuler",
+    "Choose": "Choisir",
+    "Choose File": "Choisissez un fichier",
+    "Choose Type": "Choisissez le type",
+    "Choose an option": "Choisissez une option",
+    "Click to choose": "Cliquez pour choisir",
+    "Reset Filters": "Effacer filtres",
+    "Create": "Créer",
+    "Create & Add Another": "Sauvegarder puis créer un autre",
+    "Delete File": "Supprimer le fichier",
+    "Edit": "Modifier",
+    "Edit Attached": "Modifier le attaché",
+    "Go Home": "Retour à l’accueil",
+    "Hold Up!": "Attention !",
+    "Lens": "Objectif",
+    "New": "Nouveau",
+    "Next": "Suivant",
+    "Only Trashed": "Seulement supprimé",
+    "Per Page": "Par page",
+    "Please select a resource to perform this action on.": "Veuillez sélectionner une ressource sur laquelle cette action sera exécutée.",
+    "Preview": "Aperçu",
+    "Previous": "Précédent",
+    "No Data": "Pas de donnée",
+    "No Current Data": "Aucune donnée",
+    "No Prior Data": "Aucune donnée plus ancienne",
+    "No Increase": "Pas d’augmentation",
+    "No Results Found.": "Aucun résultat trouvé.",
+    "Run Action": "Exécuter action",
+    "Select Action": "Sélectionner action",
+    "Search": "Rechercher",
+    "Press / to search": "Appuyer / pour rechercher",
+    "Select All": "Sélectionner tout",
+    "Select All Matching": "Sélectionner tout ci-dessous",
+    "Something went wrong.": "Un problème est survenu.",
+    "The action ran successfully!": "L’action s’est déroulée avec succès !",
+    "The government won't let us show you what's behind these doors": "Le gouvernement ne nous laissera pas vous montrer ce qu’il y a derrière ces portes",
+    "This image": "Cette image",
+    "Update": "Enregistrer",
+    "Update & Continue Editing": "Enregistrer et continuer",
+    "View": "Vue",
+    "We're lost in space. The page you were trying to view does not exist.": "Vous êtes perdu dans l’espace. La page demandée n’existe pas.",
+    "Show Content": "Montrer le contenu",
+    "Hide Content": "Masquer le contenu",
+    "Whoops": "Oups",
+    "Whoops!": "Oups !",
+    "With Trashed": "Supprimés inclus",
+    "Trashed": "Supprimés",
+    "Write": "Écrire",
+    "could not be found.": "n’a pas pu être trouvé.",
+    "total": "total",
+    "January": "Janvier",
+    "February": "Février",
+    "March": "Mars",
+    "April": "Avril",
+    "May": "Mai",
+    "June": "Juin",
+    "July": "Juillet",
+    "August": "Août",
+    "September": "Septembre",
+    "October": "Octobre",
+    "November": "Novembre",
+    "December": "Décembre",
+    "Afghanistan": "Afghanistan",
+    "Aland Islands": "Îles Åland",
+    "Albania": "Albanie",
+    "Algeria": "Algérie",
+    "American Samoa": "Samoa américaines",
+    "Andorra": "Andorre",
+    "Angola": "Angola",
+    "Anguilla": "Anguilla",
+    "Antarctica": "Antarctique",
+    "Antigua And Barbuda": "Antigua-et-Barbuda",
+    "Argentina": "Argentine",
+    "Armenia": "Arménie",
+    "Aruba": "Aruba",
+    "Australia": "Australie",
+    "Austria": "Autriche",
+    "Azerbaijan": "Azerbaïdjan",
+    "Bahamas": "Bahamas",
+    "Bahrain": "Bahreïn",
+    "Bangladesh": "Bangladesh",
+    "Barbados": "Barbade",
+    "Belarus": "Biélorussie",
+    "Belgium": "Belgique",
+    "Belize": "Belize",
+    "Benin": "Bénin",
+    "Bermuda": "Bermudes",
+    "Bhutan": "Bhoutan",
+    "Bolivia": "Bolivie",
+    "Bonaire, Sint Eustatius and Saba": "Pays-Bas caribéens",
+    "Bosnia And Herzegovina": "Bosnie-Herzégovine",
+    "Botswana": "Botswana",
+    "Bouvet Island": "Île Bouvet",
+    "Brazil": "Brésil",
+    "British Indian Ocean Territory": "Territoire britannique de l’océan Indien",
+    "Brunei Darussalam": "Brunéi Darussalam",
+    "Bulgaria": "Bulgarie",
+    "Burkina Faso": "Burkina Faso",
+    "Burundi": "Burundi",
+    "Cambodia": "Cambodge",
+    "Cameroon": "Cameroun",
+    "Canada": "Canada",
+    "Cape Verde": "Cap-Vert",
+    "Cayman Islands": "Îles Caïmans",
+    "Central African Republic": "République centrafricaine",
+    "Chad": "Tchad",
+    "Chile": "Chili",
+    "China": "Chine",
+    "Christmas Island": "Île Christmas",
+    "Cocos (Keeling) Islands": "Îles Cocos",
+    "Colombia": "Colombie",
+    "Comoros": "Comores",
+    "Congo": "Congo-Brazzaville",
+    "Congo, Democratic Republic": "Congo-Kinshasa",
+    "Cook Islands": "Îles Cook",
+    "Costa Rica": "Costa Rica",
+    "Cote D'Ivoire": "Côte d’Ivoire",
+    "Croatia": "Croatie",
+    "Cuba": "Cuba",
+    "Curaçao": "Curaçao",
+    "Cyprus": "Chypre",
+    "Czech Republic": "Tchéquie",
+    "Denmark": "Danemark",
+    "Djibouti": "Djibouti",
+    "Dominica": "Dominique",
+    "Dominican Republic": "République dominicaine",
+    "Ecuador": "Équateur",
+    "Egypt": "Égypte",
+    "El Salvador": "Salvador",
+    "Equatorial Guinea": "Guinée équatoriale",
+    "Eritrea": "Érythrée",
+    "Estonia": "Estonie",
+    "Ethiopia": "Éthiopie",
+    "Falkland Islands (Malvinas)": "Îles Malouines",
+    "Faroe Islands": "Îles Féroé",
+    "Fiji": "Fidji",
+    "Finland": "Finlande",
+    "France": "France",
+    "French Guiana": "Guyane française",
+    "French Polynesia": "Polynésie française",
+    "French Southern Territories": "Terres australes françaises",
+    "Gabon": "Gabon",
+    "Gambia": "Gambie",
+    "Georgia": "Géorgie",
+    "Germany": "Allemagne",
+    "Ghana": "Ghana",
+    "Gibraltar": "Gibraltar",
+    "Greece": "Grèce",
+    "Greenland": "Groenland",
+    "Grenada": "Grenade",
+    "Guadeloupe": "Guadeloupe",
+    "Guam": "Guam",
+    "Guatemala": "Guatemala",
+    "Guernsey": "Guernesey",
+    "Guinea": "Guinée",
+    "Guinea-Bissau": "Guinée-Bissau",
+    "Guyana": "Guyana",
+    "Haiti": "Haïti",
+    "Heard Island & Mcdonald Islands": "Îles Heard et McDonald",
+    "Holy See (Vatican City State)": "État de la Cité du Vatican",
+    "Honduras": "Honduras",
+    "Hong Kong": "R.A.S. chinoise de Hong Kong",
+    "Hungary": "Hongrie",
+    "Iceland": "Islande",
+    "India": "Inde",
+    "Indonesia": "Indonésie",
+    "Iran, Islamic Republic Of": "Iran",
+    "Iraq": "Irak",
+    "Ireland": "Irlande",
+    "Isle Of Man": "Île de Man",
+    "Israel": "Israël",
+    "Italy": "Italie",
+    "Jamaica": "Jamaïque",
+    "Japan": "Japon",
+    "Jersey": "Jersey",
+    "Jordan": "Jordanie",
+    "Kazakhstan": "Kazakhstan",
+    "Kenya": "Kenya",
+    "Kiribati": "Kiribati",
+    "Korea, Democratic People's Republic of": "Corée du Nord",
+    "Korea": "Corée du Sud",
+    "Kosovo": "Kosovo",
+    "Kuwait": "Koweït",
+    "Kyrgyzstan": "Kirghizistan",
+    "Lao People's Democratic Republic": "Laos",
+    "Latvia": "Lettonie",
+    "Lebanon": "Liban",
+    "Lesotho": "Lesotho",
+    "Liberia": "Libéria",
+    "Libyan Arab Jamahiriya": "Libye",
+    "Liechtenstein": "Liechtenstein",
+    "Lithuania": "Lituanie",
+    "Luxembourg": "Luxembourg",
+    "Macao": "R.A.S. chinoise de Macao",
+    "Macedonia": "Macédoine du Nord",
+    "Madagascar": "Madagascar",
+    "Malawi": "Malawi",
+    "Malaysia": "Malaisie",
+    "Maldives": "Maldives",
+    "Mali": "Mali",
+    "Malta": "Malte",
+    "Marshall Islands": "Îles Marshall",
+    "Martinique": "Martinique",
+    "Mauritania": "Mauritanie",
+    "Mauritius": "Maurice",
+    "Mayotte": "Mayotte",
+    "Mexico": "Mexique",
+    "Micronesia, Federated States Of": "États fédérés de Micronésie",
+    "Moldova": "Moldavie",
+    "Monaco": "Monaco",
+    "Mongolia": "Mongolie",
+    "Montenegro": "Monténégro",
+    "Montserrat": "Montserrat",
+    "Morocco": "Maroc",
+    "Mozambique": "Mozambique",
+    "Myanmar": "Myanmar (Birmanie)",
+    "Namibia": "Namibie",
+    "Nauru": "Nauru",
+    "Nepal": "Népal",
+    "Netherlands": "Pays-Bas",
+    "New Caledonia": "Nouvelle-Calédonie",
+    "New Zealand": "Nouvelle-Zélande",
+    "Nicaragua": "Nicaragua",
+    "Niger": "Niger",
+    "Nigeria": "Nigéria",
+    "Niue": "Niue",
+    "Norfolk Island": "Île Norfolk",
+    "Northern Mariana Islands": "Îles Mariannes du Nord",
+    "Norway": "Norvège",
+    "Oman": "Oman",
+    "Pakistan": "Pakistan",
+    "Palau": "Palaos",
+    "Palestinian Territory, Occupied": "Territoires palestiniens",
+    "Panama": "Panama",
+    "Papua New Guinea": "Papouasie-Nouvelle-Guinée",
+    "Paraguay": "Paraguay",
+    "Peru": "Pérou",
+    "Philippines": "Philippines",
+    "Pitcairn": "Îles Pitcairn",
+    "Poland": "Pologne",
+    "Portugal": "Portugal",
+    "Puerto Rico": "Porto Rico",
+    "Qatar": "Qatar",
+    "Reunion": "La Réunion",
+    "Romania": "Roumanie",
+    "Russian Federation": "Russie",
+    "Rwanda": "Rwanda",
+    "Saint Barthelemy": "Saint-Barthélemy",
+    "Saint Helena": "Sainte-Hélène",
+    "Saint Kitts And Nevis": "Saint-Christophe-et-Niévès",
+    "Saint Lucia": "Sainte-Lucie",
+    "Saint Martin": "Saint-Martin",
+    "Saint Pierre And Miquelon": "Saint-Pierre-et-Miquelon",
+    "Saint Vincent And Grenadines": "Saint-Vincent-et-les-Grenadines",
+    "Samoa": "Samoa",
+    "San Marino": "Saint-Marin",
+    "Sao Tome And Principe": "Sao Tomé-et-Principe",
+    "Saudi Arabia": "Arabie saoudite",
+    "Senegal": "Sénégal",
+    "Serbia": "Serbie",
+    "Seychelles": "Seychelles",
+    "Sierra Leone": "Sierra Leone",
+    "Singapore": "Singapour",
+    "Sint Maarten (Dutch part)": "Saint-Martin (partie néerlandaise)",
+    "Slovakia": "Slovaquie",
+    "Slovenia": "Slovénie",
+    "Solomon Islands": "Îles Salomon",
+    "Somalia": "Somalie",
+    "South Africa": "Afrique du Sud",
+    "South Georgia And Sandwich Isl.": "Géorgie du Sud et îles Sandwich du Sud",
+    "South Sudan": "Soudan du Sud",
+    "Spain": "Espagne",
+    "Sri Lanka": "Sri Lanka",
+    "Sudan": "Soudan",
+    "Suriname": "Suriname",
+    "Svalbard And Jan Mayen": "Svalbard et Jan Mayen",
+    "Swaziland": "Eswatini",
+    "Sweden": "Suède",
+    "Switzerland": "Suisse",
+    "Syrian Arab Republic": "Syrie",
+    "Taiwan": "Taïwan",
+    "Tajikistan": "Tadjikistan",
+    "Tanzania": "Tanzanie",
+    "Thailand": "Thaïlande",
+    "Timor-Leste": "Timor oriental",
+    "Togo": "Togo",
+    "Tokelau": "Tokelau",
+    "Tonga": "Tonga",
+    "Trinidad And Tobago": "Trinité-et-Tobago",
+    "Tunisia": "Tunisie",
+    "Turkey": "Turquie",
+    "Turkmenistan": "Turkménistan",
+    "Turks And Caicos Islands": "Îles Turques-et-Caïques",
+    "Tuvalu": "Tuvalu",
+    "Uganda": "Ouganda",
+    "Ukraine": "Ukraine",
+    "United Arab Emirates": "Émirats arabes unis",
+    "United Kingdom": "Royaume-Uni",
+    "United States": "États-Unis",
+    "United States Outlying Islands": "Îles mineures éloignées des États-Unis",
+    "Uruguay": "Uruguay",
+    "Uzbekistan": "Ouzbékistan",
+    "Vanuatu": "Vanuatu",
+    "Venezuela": "Venezuela",
+    "Viet Nam": "Vietnam",
+    "Virgin Islands, British": "Îles Vierges britanniques",
+    "Virgin Islands, U.S.": "Îles Vierges des États-Unis",
+    "Wallis And Futuna": "Wallis-et-Futuna",
+    "Western Sahara": "Sahara occidental",
+    "Yemen": "Yémen",
+    "Zambia": "Zambie",
+    "Zimbabwe": "Zimbabwe",
+    "Yes": "Oui",
+    "No": "Non",
+    "Action Name": "Nom",
+    "Action Initiated By": "Initiateur",
+    "Action Target": "Cible",
+    "Action Status": "Statut",
+    "Action Happened At": "Heure et date",
+    "resource": "ressource",
+    "resources": "ressources",
+    "Choose date": "Choisissez une date",
+    "The :resource was updated!": "La ressource :resource a été enregistrée !",
+    "The resource was updated!": "La ressource a été enregistrée !",
+    "The :resource was deleted!": "La ressource :resource a été supprimée !",
+    "The :resource was restored!": "La ressource :resource a été restaurée !",
+    "Increase": "Augmentation",
+    "Constant": "Constant",
+    "Decrease": "Diminution",
+    "Reset Password Notification": "Réinitialisation du mot de passe",
+    "Nova User": "Nova Utilisateur",
+    "of": "de",
+    "no file selected": "pas de fichier sélectionné",
+    "Sorry, your session has expired.": "Désolé, votre session a expiré.",
+    "Reload": "Recharger",
+    "Key": "Clé",
+    "Value": "Valeur",
+    "Add row": "Ajouter une ligne",
+    "Attach :resource": "Attache :resource",
+    "Create :resource": "Créer :resource",
+    "Choose :resource": "Choisir :resource",
+    "New :resource": "Nouveau",
+    "Edit :resource": "Modifier :resource",
+    "Update :resource": "Enregistrer :resource",
+    "Choose :field": "Choisir :field",
+    "Download": "Télécharger",
+    "Action": "Action",
+    "Changes": "Modifications",
+    "Original": "Original",
+    "This resource no longer exists": "Cette ressource n’existe plus",
+    ":resource Details": "Détails :resource",
+    "There are no available options for this resource.": "Il n’y a pas d’options disponibles pour cette ressource.",
+    "All resources loaded.": "Toutes les ressources ont été chargées.",
+    "Load :perPage More": "Charger :perPage de plus",
+    ":amount Total": ":amount au total",
+    "Show All Fields": "Voir tous les champs",
+    "There was a problem submitting the form.": "Un problème est survenu lors de l’envoi du formulaire.",
+    "There was a problem executing the action.": "Un problème est survenu lors de l’exécution de l’action.",
+    "The file was deleted!": "Le fichier a été supprimé !"
+}
\ No newline at end of file
diff --git a/resources/lang/vendor/nova/fr/validation.php b/resources/lang/vendor/nova/fr/validation.php
new file mode 100644 (file)
index 0000000..b76037f
--- /dev/null
@@ -0,0 +1,19 @@
+<?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
+    | as the size rules. Feel free to tweak each of these messages here.
+    |
+    */
+
+    'attached' => ':attribute est déjà attaché.',
+    'relatable' => ':attribute ne peut pas être associé avec cette ressource.',
+
+];