From: Louis Jeckel Date: Fri, 24 Apr 2020 10:47:53 +0000 (+0200) Subject: localization + filters X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=8199a9d8fcde7f90b7c4edb44728eaaabf4a6a00;p=psq.git localization + filters --- diff --git a/.idea/lettre-pharma.iml b/.idea/lettre-pharma.iml index 1bce1c6..1e1469b 100644 --- a/.idea/lettre-pharma.iml +++ b/.idea/lettre-pharma.iml @@ -12,7 +12,9 @@ + + diff --git a/.idea/php.xml b/.idea/php.xml index b4a0b9b..54d8ca9 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -183,6 +183,8 @@ + + diff --git a/app/Events/DispatchMailgunEvent.php b/app/Events/DispatchMailgunEvent.php index b7cb510..80184de 100644 --- a/app/Events/DispatchMailgunEvent.php +++ b/app/Events/DispatchMailgunEvent.php @@ -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; diff --git a/app/Jobs/ProcessEmailBatch.php b/app/Jobs/ProcessEmailBatch.php index 083373e..0e27677 100644 --- a/app/Jobs/ProcessEmailBatch.php +++ b/app/Jobs/ProcessEmailBatch.php @@ -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 index 0000000..0fed386 --- /dev/null +++ b/app/Nova/Actions/SetSubscriptionStatus.php @@ -0,0 +1,62 @@ +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 index 0000000..a7c7537 --- /dev/null +++ b/app/Nova/Filters/SubscriptionStatusFilter.php @@ -0,0 +1,46 @@ +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 index 0000000..27117e4 --- /dev/null +++ b/app/Nova/Filters/TypeFilter.php @@ -0,0 +1,41 @@ +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'); + } +} diff --git a/app/Nova/Organization.php b/app/Nova/Organization.php index cbe5f28..62aeac0 100644 --- a/app/Nova/Organization.php +++ b/app/Nova/Organization.php @@ -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), + ]; } } diff --git a/app/Nova/User.php b/app/Nova/User.php index e39c302..fed3cb1 100644 --- a/app/Nova/User.php +++ b/app/Nova/User.php @@ -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(), ]; } diff --git a/app/PdfFile.php b/app/PdfFile.php index c0ea27b..31b8c47 100644 --- a/app/PdfFile.php +++ b/app/PdfFile.php @@ -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(); diff --git a/composer.json b/composer.json index 26e9476..24f540b 100644 --- a/composer.json +++ b/composer.json @@ -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", diff --git a/composer.lock b/composer.lock index 81c15df..1e14f64 100644 --- a/composer.lock +++ b/composer.lock @@ -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", @@ -593,6 +593,49 @@ ], "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", @@ -706,6 +749,51 @@ ], "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 index 0000000..ecb1ced --- /dev/null +++ b/resources/lang/fr.json @@ -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 index 0000000..1f894af --- /dev/null +++ b/resources/lang/fr/auth.php @@ -0,0 +1,17 @@ + '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 index 0000000..8c1080e --- /dev/null +++ b/resources/lang/fr/pagination.php @@ -0,0 +1,17 @@ + '« Précédent', + 'next' => 'Suivant »', +]; diff --git a/resources/lang/fr/passwords.php b/resources/lang/fr/passwords.php new file mode 100644 index 0000000..e85806e --- /dev/null +++ b/resources/lang/fr/passwords.php @@ -0,0 +1,20 @@ + '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 index 0000000..4cb2705 --- /dev/null +++ b/resources/lang/fr/validation.php @@ -0,0 +1,179 @@ + '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 index 0000000..946000c --- /dev/null +++ b/resources/lang/vendor/nova/fr.json @@ -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 index 0000000..b76037f --- /dev/null +++ b/resources/lang/vendor/nova/fr/validation.php @@ -0,0 +1,19 @@ + ':attribute est déjà attaché.', + 'relatable' => ':attribute ne peut pas être associé avec cette ressource.', + +];