Refactor Commands

This commit is contained in:
Jérémy Munsch 2022-06-13 16:26:11 +02:00
parent 3e2ef50e6d
commit fe40e02f7c
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
14 changed files with 554 additions and 109 deletions

View file

@ -0,0 +1,117 @@
<?php
namespace App\Console\Commands;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
/**
* Creates a new user
*/
class CreateAdmin extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'user:create';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a backend admin user';
/**
* Execute the console command.
*
* @return integer
*/
public function handle()
{
$email = $this->getInput(
'Type the wanted user email',
'email',
'required|ends_with:@ldc.fr|unique:users,email|email:rfc,dns',
'equipe.web@ldc.fr'
);
$firstname = $this->getInput(
'Type the wanted user firstname',
'firstname',
'required|min:5,max:255',
'Saitama'
);
$lastname = $this->getInput(
'Type the wanted user lastname',
'lastname',
'required|min:5,max:255',
'Hagemanto'
);
$phone = $this->getInput(
'Type the wanted user phone',
'phone',
'required|phone:FR|unique:users,phone|min:5,max:255'
);
$password = null;
while (
($password = $this->secret(
(!\is_null($password) ? 'Failed to confirm, ' : '') . 'Type the wanted user password'
)) !== $this->secret('Confirm the password')
) {
continue;
};
$admin = new User([
'firstname' => $firstname,
'lastname' => $lastname,
'email' => $email,
'phone' => $phone,
'password' => $password,
'role' => $this->confirm('Is the user an member of equipe web ?')
]);
$admin->saveOrFail();
$this->info('User created.');
return 0;
}
/**
* Get User Input
*
* @param string $message
* @param string $inputName
* @param string|array $rules
* @param string|null $defaultValue
* @return mixed
*/
private function getInput(string $message, string $inputName, $rules, ?string $defaultValue = null)
{
$out = null;
while (is_null($out)) {
try {
$tmp = $this->ask($message, $defaultValue);
$validator = Validator::make([$inputName => $tmp], [
$inputName => $rules
]);
$validator->validate();
$out = $tmp;
} catch (ValidationException $e) {
$this->error(sprintf(
"'Please provide a valid $inputName %s'",
\implode(',', collect($e->errors())->flatten()->all())
));
continue;
}
}
return $out;
}
}

View file

@ -9,6 +9,7 @@ use App\Models\LDCNetworks;
use App\Models\Projects;
use App\Models\Servers;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Storage;
class ExportDatas extends Command
@ -27,16 +28,6 @@ class ExportDatas extends Command
*/
protected $description = 'Export data in Excel format';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
@ -45,18 +36,25 @@ class ExportDatas extends Command
public function handle()
{
$this->ExportProjects("EDL_WEB.csv");
$this->ExportServers("EDL_Servers.csv");
$this->ExportDatastorePcc("EDL_Datastore_pcc.csv");
$this->ExportDomainNames("EDL_Domain_Names.csv");
$this->ExportLdcNetworks("EDL_LDC_Networks.csv");
$this->ExportGitRepos("EDL_GIT_Repos.csv");
$this->exportProjects("EDL_WEB.csv");
$this->exportServers("EDL_Servers.csv");
$this->exportDatastorePcc("EDL_Datastore_pcc.csv");
$this->exportDomainNames("EDL_Domain_Names.csv");
$this->exportLdcNetworks("EDL_LDC_Networks.csv");
$this->exportGitRepos("EDL_GIT_Repos.csv");
return 0;
}
private function ExportGitRepos($filename)
/**
* Export git repos as filename.csv
*
* @param string $filename
* @return void
*/
private function exportGitRepos(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\GitRepos> */
$repos = GitRepos::orderBy('name', 'ASC')->get();
Storage::disk('export')->append($filename, "Nom");
foreach ($repos as $repo) {
@ -68,8 +66,15 @@ class ExportDatas extends Command
}
}
private function ExportLdcNetworks($filename)
/**
* Export ldc networks as filename.csv
*
* @param string $filename
* @return void
*/
private function exportLdcNetworks(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\LDCNetworks> */
$networks = LDCNetworks::all();
Storage::disk('export')->append($filename, "CIDR;First IP;Last IP");
foreach ($networks as $network) {
@ -83,10 +88,20 @@ class ExportDatas extends Command
}
}
private function ExportDomainNames($filename)
/**
* Export domain names as filename.csv
*
* @param string $filename
* @return void
*/
private function exportDomainNames(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\DomainNames> */
$domains = DomainNames::all();
Storage::disk('export')->append($filename, "ASCII;UTF-8;DATE D'EXPIRATION;RENOUVELLEMENT;MARQUE REF.;DNS REDIRIGES;TYPE CERTIFICATS;COMMENTAIRE");
Storage::disk('export')->append(
$filename,
"ASCII;UTF-8;DATE D'EXPIRATION;RENOUVELLEMENT;MARQUE REF.;DNS REDIRIGES;TYPE CERTIFICATS;COMMENTAIRE"
);
foreach ($domains as $domain) {
$infos = [
trim($domain->ascii_name),
@ -103,8 +118,15 @@ class ExportDatas extends Command
}
}
private function ExportDatastorePcc($filename)
/**
* Export data store pcc as filename.csv
*
* @param string $filename
* @return void
*/
private function exportDatastorePcc(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\DatastorePcc> */
$datastores = DatastorePcc::all();
Storage::disk('export')->append($filename, "NOM;COMMENTAIRE");
foreach ($datastores as $datastore) {
@ -117,10 +139,20 @@ class ExportDatas extends Command
}
}
private function ExportServers($filename)
/**
* Export servers as filename.csv
*
* @param string $filename
* @return void
*/
private function exportServers(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Servers> */
$servers = Servers::orderBy('env', 'DESC')->get();
Storage::disk('export')->append($filename, "ENV;NOM;TITRE;FUNCTION;SSH;IP INFRAWEB;VIRTUAL IP;DATASTORE PCC;COMMENTAIRE");
Storage::disk('export')->append(
$filename,
"ENV;NOM;TITRE;FUNCTION;SSH;IP INFRAWEB;VIRTUAL IP;DATASTORE PCC;COMMENTAIRE"
);
foreach ($servers as $server) {
$infos = [
trim($server->env),
@ -138,8 +170,15 @@ class ExportDatas extends Command
}
}
private function ExportProjects($filename)
/**
* Export projects as filename.csv
*
* @param string $filename
* @return void
*/
private function exportProjects(string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Projects> */
$projects = Projects::orderBy('name', 'ASC')->get();
$fields = [
'DEV',
@ -163,7 +202,11 @@ class ExportDatas extends Command
'dev_whitelist_fw',
];
Storage::disk('export')->append($filename, "ENV;NOM;ID HAPROXY;URL;HTTPS;PHP;SERVEUR WEB;SSH;USER UNIX;PWD UNIX;DOCUMENT ROOT;SERVEUR BDD;SSH;USER DB;PWD DB;HTACCESS USER;HTACCESS PWD;COMMENTAIRE;FLUX EAI;WHITELIST FW");
Storage::disk('export')->append(
$filename,
// phpcs:ignore
"ENV;NOM;ID HAPROXY;URL;HTTPS;PHP;SERVEUR WEB;SSH;USER UNIX;PWD UNIX;DOCUMENT ROOT;SERVEUR BDD;SSH;USER DB;PWD DB;HTACCESS USER;HTACCESS PWD;COMMENTAIRE;FLUX EAI;WHITELIST FW"
);
$this->writeProjectExport($projects, $fields, $filename);
$prod = implode(";", $fields);
@ -176,8 +219,17 @@ class ExportDatas extends Command
$this->writeProjectExport($projects, $fields, $filename);
}
private function writeProjectExport($projects, $fields, $filename)
/**
* Append Project to filename.csv
*
* @param Collection $projects
* @param string[] $fields
* @param string $filename
* @return void
*/
private function writeProjectExport(Collection $projects, array $fields, string $filename)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Projects> $projects */
foreach ($projects as $project) {
$infos = [];
foreach ($fields as $field) {

View file

@ -7,14 +7,6 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
];
/**
* Define the application's command schedule.
*
@ -23,8 +15,6 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
/**

View file

@ -15,7 +15,12 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
'name', 'email', 'phone', 'password',
'firstname',
'lastname',
'email',
'phone',
'password',
'role'
];
/**
@ -33,6 +38,7 @@ class User extends Authenticatable
* @var array
*/
protected $casts = [
'role' => 'boolean',
'email_verified_at' => 'datetime',
];
}

View file

@ -18,6 +18,7 @@
"laravel/tinker": "^2.5",
"laravel/ui": "^3.0",
"lfkeitel/phptotp": " 1.0",
"propaganistas/laravel-phone": "^4.3",
"simplesoftwareio/simple-qrcode": "^4.2",
"slevomat/coding-standard": "^7.0"
},

252
composer.lock generated
View 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": "4124827a814f2cdf1133d366b803501d",
"content-hash": "147d92394452eddc47ce6d82469fa882",
"packages": [
{
"name": "aacotroneo/laravel-saml2",
@ -661,6 +661,133 @@
},
"time": "2020-10-22T13:48:01+00:00"
},
{
"name": "giggsey/libphonenumber-for-php",
"version": "8.12.50",
"source": {
"type": "git",
"url": "https://github.com/giggsey/libphonenumber-for-php.git",
"reference": "526c4b7f6d5e173770d8645e76340d7eb25dc348"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/526c4b7f6d5e173770d8645e76340d7eb25dc348",
"reference": "526c4b7f6d5e173770d8645e76340d7eb25dc348",
"shasum": ""
},
"require": {
"giggsey/locale": "^1.7|^2.0",
"php": ">=5.3.2",
"symfony/polyfill-mbstring": "^1.17"
},
"require-dev": {
"pear/pear-core-minimal": "^1.9",
"pear/pear_exception": "^1.0",
"pear/versioncontrol_git": "^0.5",
"phing/phing": "^2.7",
"php-coveralls/php-coveralls": "^1.0|^2.0",
"symfony/console": "^2.8|^3.0|^v4.4|^v5.2",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "8.x-dev"
}
},
"autoload": {
"psr-4": {
"libphonenumber\\": "src/"
},
"exclude-from-classmap": [
"/src/data/",
"/src/carrier/data/",
"/src/geocoding/data/",
"/src/timezone/data/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Joshua Gigg",
"email": "giggsey@gmail.com",
"homepage": "https://giggsey.com/"
}
],
"description": "PHP Port of Google's libphonenumber",
"homepage": "https://github.com/giggsey/libphonenumber-for-php",
"keywords": [
"geocoding",
"geolocation",
"libphonenumber",
"mobile",
"phonenumber",
"validation"
],
"support": {
"irc": "irc://irc.appliedirc.com/lobby",
"issues": "https://github.com/giggsey/libphonenumber-for-php/issues",
"source": "https://github.com/giggsey/libphonenumber-for-php"
},
"time": "2022-06-09T14:55:00+00:00"
},
{
"name": "giggsey/locale",
"version": "2.2",
"source": {
"type": "git",
"url": "https://github.com/giggsey/Locale.git",
"reference": "9c1dca769253f6a3e81f9a5c167f53b6a54ab635"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/giggsey/Locale/zipball/9c1dca769253f6a3e81f9a5c167f53b6a54ab635",
"reference": "9c1dca769253f6a3e81f9a5c167f53b6a54ab635",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"require-dev": {
"ext-json": "*",
"pear/pear-core-minimal": "^1.9",
"pear/pear_exception": "^1.0",
"pear/versioncontrol_git": "^0.5",
"phing/phing": "^2.7",
"php-coveralls/php-coveralls": "^2.0",
"phpunit/phpunit": "^8.5|^9.5",
"symfony/console": "^5.0",
"symfony/filesystem": "^5.0",
"symfony/finder": "^5.0",
"symfony/process": "^5.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Giggsey\\Locale\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Joshua Gigg",
"email": "giggsey@gmail.com",
"homepage": "https://giggsey.com/"
}
],
"description": "Locale functions required by libphonenumber-for-php",
"support": {
"issues": "https://github.com/giggsey/Locale/issues",
"source": "https://github.com/giggsey/Locale/tree/2.2"
},
"time": "2022-04-06T07:33:59+00:00"
},
{
"name": "graham-campbell/result-type",
"version": "v1.0.4",
@ -1715,6 +1842,63 @@
],
"time": "2021-12-09T09:40:50+00:00"
},
{
"name": "league/iso3166",
"version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/iso3166.git",
"reference": "1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/iso3166/zipball/1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef",
"reference": "1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"League\\ISO3166\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Rob Bast",
"email": "rob.bast@gmail.com"
}
],
"description": "ISO 3166-1 PHP Library",
"homepage": "https://github.com/thephpleague/iso3166",
"keywords": [
"3166",
"3166-1",
"ISO 3166",
"countries",
"iso",
"library"
],
"support": {
"issues": "https://github.com/thephpleague/iso3166/issues",
"source": "https://github.com/thephpleague/iso3166"
},
"time": "2021-10-22T12:47:55+00:00"
},
{
"name": "league/mime-type-detection",
"version": "1.11.0",
@ -2304,6 +2488,72 @@
},
"time": "2022-06-10T09:29:33+00:00"
},
{
"name": "propaganistas/laravel-phone",
"version": "4.3.7",
"source": {
"type": "git",
"url": "https://github.com/Propaganistas/Laravel-Phone.git",
"reference": "fb3b5faddf9150ac21c1c59a7633ee964d4f2a00"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/fb3b5faddf9150ac21c1c59a7633ee964d4f2a00",
"reference": "fb3b5faddf9150ac21c1c59a7633ee964d4f2a00",
"shasum": ""
},
"require": {
"giggsey/libphonenumber-for-php": "^7.0|^8.0",
"illuminate/contracts": "^8.9|^9.0",
"illuminate/support": "^8.0|^9.0",
"illuminate/validation": "^8.0|^9.0",
"league/iso3166": "^2.0|^3.0|^4.0",
"php": "^7.3|^8.0"
},
"require-dev": {
"nunomaduro/larastan": "^1.0",
"orchestra/testbench": "*",
"phpunit/phpunit": "^9.5.10"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Propaganistas\\LaravelPhone\\PhoneServiceProvider"
]
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Propaganistas\\LaravelPhone\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Propaganistas",
"email": "Propaganistas@users.noreply.github.com"
}
],
"description": "Adds phone number functionality to Laravel based on Google's libphonenumber API.",
"keywords": [
"laravel",
"libphonenumber",
"phone",
"validation"
],
"support": {
"issues": "https://github.com/Propaganistas/Laravel-Phone/issues",
"source": "https://github.com/Propaganistas/Laravel-Phone/tree/4.3.7"
},
"time": "2022-06-08T15:44:51+00:00"
},
{
"name": "psr/container",
"version": "1.1.1",

View file

@ -14,6 +14,7 @@ return [
*/
'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

View file

@ -14,9 +14,9 @@ return [
*/
'reset' => 'Your password has been reset!',
'sent' => 'We have e-mailed your password reset link!',
'sent' => 'We have emailed your password reset link!',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that e-mail address.",
'user' => "We can't find a user with that email address.",
];

View file

@ -14,12 +14,13 @@ return [
*/
'accepted' => 'The :attribute must be accepted.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'alpha' => 'The :attribute must only contain letters.',
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute must only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
@ -31,9 +32,12 @@ return [
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
@ -41,6 +45,7 @@ return [
'distinct' => 'The :attribute field has a duplicate value.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
@ -51,9 +56,9 @@ return [
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'numeric' => 'The :attribute must be greater than or equal to :value.',
'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
'string' => 'The :attribute must be greater than or equal to :value characters.',
'array' => 'The :attribute must have :value items or more.',
],
'image' => 'The :attribute must be an image.',
@ -71,16 +76,17 @@ return [
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'numeric' => 'The :attribute must be less than or equal to :value.',
'file' => 'The :attribute must be less than or equal to :value kilobytes.',
'string' => 'The :attribute must be less than or equal to :value characters.',
'array' => 'The :attribute must not have more than :value items.',
],
'mac_address' => 'The :attribute must be a valid MAC address.',
'max' => [
'numeric' => 'The :attribute may not be greater than :max.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => 'The :attribute may not be greater than :max characters.',
'array' => 'The :attribute may not have more than :max items.',
'numeric' => 'The :attribute must not be greater than :max.',
'file' => 'The :attribute must not be greater than :max kilobytes.',
'string' => 'The :attribute must not be greater than :max characters.',
'array' => 'The :attribute must not have more than :max items.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
@ -90,13 +96,19 @@ return [
'string' => 'The :attribute must be at least :min characters.',
'array' => 'The :attribute must have at least :min items.',
],
'multiple_of' => 'The :attribute must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => 'The password is incorrect.',
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
@ -112,10 +124,10 @@ return [
],
'starts_with' => 'The :attribute must start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid zone.',
'timezone' => 'The :attribute must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute format is invalid.',
'url' => 'The :attribute must be a valid URL.',
'uuid' => 'The :attribute must be a valid UUID.',
/*

View file

@ -6,6 +6,7 @@
":days day trial": ":days jours d'essai",
":resource Details": "Détails :resource",
":resource Details: :title": " Détails :resource :title :",
"A fresh verification link has been sent to your email address.": "Un nouveau lien de vérification a été envoyé à votre adresse e-mail.",
"A new verification link has been sent to the email address you provided during registration.": "Un nouveau lien de vérification a été envoyé à l'adresse e-mail que vous avez indiquée lors de votre inscription.",
"Accept Invitation": "Acceptez l'invitation",
"Action": "Action",
@ -21,7 +22,7 @@
"Add row": "Ajouter un rang",
"Add Team Member": "Ajouter un membre d'équipe",
"Add VAT Number": "Ajouter le numéro de TVA",
"Added.": "Ajouté",
"Added.": "Ajouté.",
"Address": "Adresse",
"Address Line 2": "Adresse ligne 2",
"Administrator": "Administrateur",
@ -40,7 +41,7 @@
"Andorra": "Andorre",
"Angola": "Angola",
"Anguilla": "Anguilla",
"Another user has updated this resource since this page was loaded. Please refresh the page and try again.": "Une autre personne a mis à jour cette donnée depuis que la page a été chargée. Veuillez raffraîchir la page et ré-essayer.",
"Another user has updated this resource since this page was loaded. Please refresh the page and try again.": "Une autre personne a mis à jour cette donnée depuis que la page a été chargée. Veuillez rafraîchir la page et ré-essayer.",
"Antarctica": "Antarctique",
"Antigua And Barbuda": "Antigua-et-Barbuda",
"Antigua and Barbuda": "Antigua-et-Barbuda",
@ -51,18 +52,18 @@
"Apply": "Appliquer",
"Apply Coupon": "Appliquer Coupon",
"April": "Avril",
"Are you sure you want to delete the selected resources?": "Etes-vous sûr(e) de vouloir supprimer les données sélectionnées ?",
"Are you sure you want to delete this file?": "Etes-vous sûr(e) de vouloir supprimer ce fichier ?",
"Are you sure you want to delete this resource?": "Etes-vous sûr(e) de vouloir supprimer cette donnée ?",
"Are you sure you want to delete the selected resources?": "Êtes-vous sûr(e) de vouloir supprimer les données sélectionnées ?",
"Are you sure you want to delete this file?": "Êtes-vous sûr(e) de vouloir supprimer ce fichier ?",
"Are you sure you want to delete this resource?": "Êtes-vous sûr(e) de vouloir supprimer cette donnée ?",
"Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.": "Êtes-vous sûr de vouloir supprimer cette équipe ? Lorsqu'une équipe est supprimée, toutes les données associées seront supprimées de manière définitive.",
"Are you sure you want to delete your account? Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Êtes-vous sûr de vouloir supprimer votre compte ? Une fois que votre compte est supprimé, toutes les données associées seront supprimées définitivement. Pour confirmer que vous voulez supprimer définitivement votre compte, renseignez votre mot de passe.",
"Are you sure you want to detach the selected resources?": "Etes-vous sûr(e) de vouloir détacher les données sélectionnées ?",
"Are you sure you want to detach this resource?": "Etes-vous sûr(e) de vouloir détacher cette donnée ?",
"Are you sure you want to force delete the selected resources?": "Etes-vous sûr(e) de vouloir forcer la suppression des données sélectionnées ?",
"Are you sure you want to force delete this resource?": "Etes-vous sûr(e) de vouloir forcer la suppression de cette donnée ?",
"Are you sure you want to restore the selected resources?": "Etes-vous sûr(e) de vouloir restaurer les données sélectionnées ?",
"Are you sure you want to restore this resource?": "Etes-vous sûr(e) de vouloir restaurer cette donnée ?",
"Are you sure you want to run this action?": "Etes-vous sûr(e) de vouloir lancer cette action ?",
"Are you sure you want to detach the selected resources?": "Êtes-vous sûr(e) de vouloir détacher les données sélectionnées ?",
"Are you sure you want to detach this resource?": "Êtes-vous sûr(e) de vouloir détacher cette donnée ?",
"Are you sure you want to force delete the selected resources?": "Êtes-vous sûr(e) de vouloir forcer la suppression des données sélectionnées ?",
"Are you sure you want to force delete this resource?": "Êtes-vous sûr(e) de vouloir forcer la suppression de cette donnée ?",
"Are you sure you want to restore the selected resources?": "Êtes-vous sûr(e) de vouloir restaurer les données sélectionnées ?",
"Are you sure you want to restore this resource?": "Êtes-vous sûr(e) de vouloir restaurer cette donnée ?",
"Are you sure you want to run this action?": "Êtes-vous sûr(e) de vouloir lancer cette action ?",
"Are you sure you would like to delete this API token?": "Êtes-vous sûr de vouloir supprimer ce jeton API ?",
"Are you sure you would like to leave this team?": "Êtes-vous sûr de vouloir quitter cette équipe ?",
"Are you sure you would like to remove this person from the team?": "Êtes-vous sûr de vouloir supprimer cette personne de cette équipe ?",
@ -80,6 +81,7 @@
"Bahrain": "Bahreïn",
"Bangladesh": "Bangladesh",
"Barbados": "Barbades",
"Before proceeding, please check your email for a verification link.": "Avant de continuer, merci de vérifier votre e-mail contenant un lien de vérification.",
"Belarus": "Biélorussie",
"Belgium": "Belgique",
"Belize": "Bélize",
@ -125,6 +127,7 @@
"Choose Type": "Choisir Type",
"Christmas Island": "Île Christmas",
"City": "Ville",
"click here to request another": "cliquez ici pour en demander un autre",
"Click to choose": "Cliquez pour choisir",
"Close": "Fermer",
"Cocos (Keeling) Islands": "Îles Cocos - Keeling",
@ -181,19 +184,19 @@
"Details": "Détails",
"Disable": "Désactiver",
"Djibouti": "Djibouti",
"Do you really want to leave? You have unsaved changes.": "Voulez-vous vraiment partier ? Vous avez des données non sauvegardées.",
"Do you really want to leave? You have unsaved changes.": "Voulez-vous vraiment partir ? Vous avez des données non sauvegardées.",
"Dominica": "Dominique",
"Dominican Republic": "République dominicaine",
"Done.": "Terminé.",
"Download": "Télécharger",
"Download Receipt": "Télécharger le reçu",
"Ecuador": "Equateur",
"Edit": "Editer",
"Edit :resource": "Editer :resource",
"Edit Attached": "Editer Joint",
"Editor": "Editeur",
"Edit": "Éditer",
"Edit :resource": "Éditer :resource",
"Edit Attached": "Éditer Joint",
"Editor": "Éditeur",
"Editor users have the ability to read, create, and update.": "Les éditeurs peuvent lire, créer et mettre à jour",
"Egypt": "Egypte",
"Egypt": "Égypte",
"El Salvador": "El Salvador",
"Email": "E-mail",
"Email Address": "Adresse e-mail",
@ -204,23 +207,25 @@
"Equatorial Guinea": "Guinée équatoriale",
"Eritrea": "Érythrée",
"Estonia": "Estonie",
"Ethiopia": "Ethiopie",
"Ethiopia": "Éthiopie",
"ex VAT": "ex TVA",
"Extra Billing Information": "Plus d'informations sur la facturation",
"Extra confirmation is needed to process your payment. Please confirm your payment by filling out your payment details below.": "Une confirmation supplémentaire est nécessaire pour traiter votre paiement. Veuillez confirmer votre paiement en remplissant vos coordonnées de paiement ci-dessous.",
"Extra confirmation is needed to process your payment. Please continue to the payment page by clicking on the button below.": "Une confirmation supplémentaire est nécessaire pour traiter votre paiement. Veuillez continuer à la page de paiement en cliquant sur le bouton ci-dessous.",
"Failed to load :resource!": "Impossible de charger :resource !",
"Falkland Islands (Malvinas)": "Îles Malouines",
"Faroe Islands": "Îles Féroé",
"February": "Février",
"Fiji": "Fidji",
"Finish enabling two factor authentication.": "Terminez l'activation de la double authentification.",
"Finland": "Finlande",
"For your security, please confirm your password to continue.": "Par mesure de sécurité, veuillez confirmer votre mot de passe pour continuer.",
"Forbidden": "Interdit",
"Force Delete": "Forcer la Suppression",
"Force Delete Resource": "Forcer la Suppression de la Donnée",
"Force Delete Selected": "Forcer la Suppression du Sélectionné",
"Forgot your password?": "Vous avez oublié votre mot de passe ?",
"Forgot Your Password?": "Vous avez oublié votre mot de passe ?",
"Forgot your password?": "Mot de passe oublié ?",
"Forgot Your Password?": "Mot de passe oublié ?",
"Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.": "Mot de passe oublié ? Pas de soucis. Veuillez nous indiquer votre adresse e-mail et nous vous enverrons un lien de réinitialisation du mot de passe.",
"France": "France",
"French Guiana": "Guyane française",
@ -267,11 +272,12 @@
"If you already have an account, you may accept this invitation by clicking the button below:": "Si vous avez déjà un compte, vous pouvez accepter cette invitation en cliquant sur le bouton ci-dessous :",
"If you did not create an account, no further action is required.": "Si vous n'avez pas créé de compte, vous pouvez ignorer ce message.",
"If you did not expect to receive an invitation to this team, you may discard this email.": "Si vous n'attendiez pas d'invitation de cette équipe, vous pouvez supprimer cet e-mail.",
"If you did not receive the email": "Si vous n'avez pas reçu cet e-mail",
"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, vous pouvez ignorer ce message.",
"If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:": "Si vous n'avez pas de compte, vous pouvez en créer un en cliquant sur le bouton ci-dessous. Ensuite, vous pourrez cliquer sur le bouton de cet e-mail pour accepter l'invitation de rejoindre l'équipe :",
"If you need to add specific contact or tax information to your receipts, like your full business name, VAT identification number, or address of record, you may add it here.": "Si vous devez ajouter des coordonnées ou des informations fiscales spécifiques à vos reçus, tels que le nom complet de votre entreprise, votre numéro d'identification TVA ou votre adresse d'enregistrement, vous pouvez les ajouter ici.",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez\/collez l'adresse ci-dessous dans votre navigateur :\n",
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez\/collez l'adresse ci-dessous dans votre navigateur :\n",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez/collez l'adresse ci-dessous dans votre navigateur :\n",
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez/collez l'adresse ci-dessous dans votre navigateur :\n",
"Increase": "Augmenter",
"India": "Inde",
"Indonesia": "Indonésie",
@ -315,7 +321,7 @@
"Libyan Arab Jamahiriya": "Libye",
"Liechtenstein": "Liechtenstein",
"Lithuania": "Lituanie",
"Load :perPage More": "Charger :perPage plus",
"Load :perPage More": "Charger :perPage de plus",
"Log in": "Connexion",
"Log Out": "Déconnexion",
"Log Out Other Browser Sessions": "Déconnecter les sessions ouvertes sur d'autres navigateurs",
@ -377,7 +383,7 @@
"Nigeria": "Nigéria",
"Niue": "Niue",
"No": "Non",
"No :resource matched the given criteria.": "Aucune :resource ne correspond aux critières demandés.",
"No :resource matched the given criteria.": "Aucune :resource ne correspond aux critères demandés.",
"No additional information...": "Pas d'information supplémentaire...",
"No Current Data": "Pas de donnée actuelle",
"No Data": "Pas de donnée",
@ -428,6 +434,7 @@
"Please click the button below to verify your email address.": "Veuillez cliquer sur le bouton ci-dessous pour vérifier votre adresse e-mail :",
"Please confirm access to your account by entering one of your emergency recovery codes.": "Veuillez confirmer l'accès à votre compte en entrant l'un des codes de récupération d'urgence.",
"Please confirm access to your account by entering the authentication code provided by your authenticator application.": "Veuillez confirmer l'accès à votre compte en entrant le code d'authentification fourni par votre application d'authentification.",
"Please confirm your password before continuing.": "Veuillez confirmer votre mot de passe avant de continuer.",
"Please copy your new API token. For your security, it won't be shown again.": "Veuillez copier votre nouveau token API. Pour votre sécurité, il ne sera pas ré-affiché.",
"Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.": "Veuillez entrer votre mot de passe pour confirmer que vous voulez déconnecter toutes les autres sessions navigateur sur l'ensemble de vos appareils.",
"Please provide a maximum of three receipt emails addresses.": "Veuillez fournir un maximum de trois adresses e-mail de réception.",
@ -435,7 +442,7 @@
"Please provide your name.": "Veuillez indiquer votre nom.",
"Poland": "Pologne",
"Portugal": "Portugal",
"Press \/ to search": "Presser \/ pour faire une recherche",
"Press / to search": "Presser / pour faire une recherche",
"Preview": "Aperçu",
"Previous": "Précédent",
"Privacy Policy": "Politique de confidentialité",
@ -508,6 +515,7 @@
"Serbia": "Serbie",
"Server Error": "Erreur serveur",
"Service Unavailable": "Service indisponible",
"Setup Key": "Clé de configuration",
"Seychelles": "Seychelles",
"Show All Fields": "Montrer Tous les Champs",
"Show Content": "Montrer Contenu",
@ -532,7 +540,7 @@
"Sri Lanka": "Sri Lanka",
"Standalone Actions": "Actions Autonomes",
"Start Polling": "Démarrer le vote",
"State \/ County": "Etat \/ Région",
"State / County": "État / Région",
"Stop Polling": "Arrêter le vote",
"Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.": "Enregistrez ces codes dans un gestionnaire de mot de passe sécurisé. Ils peuvent être réutilisés pour accéder à votre compte si l'authentification à deux facteurs n'aboutit pas.",
"Subscribe": "Souscrire",
@ -604,6 +612,7 @@
"These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.": "Ces personnes ont été invitées à rejoindre votre équipe et ont été prévenues avec un e-mail d'invitation. Ils peuvent rejoindre l'équipe grâce à l'e-mail d'invitation.",
"This account does not have an active subscription.": "Ce compte n'est pas de souscription active.",
"This action is unauthorized.": "Cette action n'est pas autorisée.",
"This coupon code can only be used by new customers.": "Ce code promo ne peut être utilisé que par les nouveaux clients.",
"This device": "Cet appareil",
"This file field is read-only.": "Ce champ de fichier est en lecture seule.",
"This image": "Cette image",
@ -619,6 +628,7 @@
"This user has already been invited to the team.": "Cet utilisateur a déjà été invité à rejoindre l'équipe.",
"Timor-Leste": "Timor oriental",
"to": "à",
"To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code.": "Pour terminer l'activation de la double authentification, scannez le code QR suivant à l'aide de l'application d'authentification de votre téléphone ou entrez la clé de configuration et fournissez le code OTP généré.",
"Today": "Aujourd'hui",
"Toggle navigation": "Basculer la navigation",
"Togo": "Togo",
@ -638,13 +648,13 @@
"Turks and Caicos Islands": "Îles Turks et Caïques",
"Tuvalu": "Tuvalu",
"Two Factor Authentication": "Double authentification",
"Two factor authentication is now enabled. Scan the following QR code using your phone's authenticator application.": "L'authentification à deux facteurs est maintenant activée. Enregistrez ce QR code dans votre application d'authentification.",
"Two factor authentication is now enabled. Scan the following QR code using your phone's authenticator application or enter the setup key.": "La double authentification est maintenant activée. Scannez le code QR suivant à l'aide de l'application d'authentification de votre téléphone ou entrez la clé de configuration.",
"Uganda": "Ouganda",
"Ukraine": "Ukraine",
"Unauthorized": "Non autorisé",
"United Arab Emirates": "Emirats Arabes Unis",
"United Kingdom": "Royaume-Uni",
"United States": "Etats-Unis",
"United States": "États-Unis",
"United States Minor Outlying Islands": "Îles Mineures Éloignées des États-Unis",
"United States Outlying Islands": "Îles Mineures Éloignées des États-Unis",
"Update": "Mettre à jour",
@ -659,7 +669,6 @@
"Uruguay": "Uruguay",
"Use a recovery code": "Utilisez un code de récupération",
"Use an authentication code": "Utilisez un code d'authentification",
"Username": "Nom d'utilisateur",
"Uzbekistan": "Ouzbékistan",
"Value": "Valeur",
"Vanuatu": "Vanuatu",
@ -667,6 +676,7 @@
"Venezuela": "Vénézuela",
"Venezuela, Bolivarian Republic of": "Vénézuela",
"Verify Email Address": "Vérification de l'adresse e-mail",
"Verify Your Email Address": "Vérifiez votre adresse e-mail",
"Viet Nam": "Vietnam",
"View": "Vue",
"View Receipt": "Voir le reçu",
@ -678,7 +688,7 @@
"We are unable to process your payment. Please contact customer support.": "Nous ne sommes pas en mesure de traiter votre paiement. Veuillez contacter le support client.",
"We were unable to find a registered user with this email address.": "Nous n'avons pas pu trouver un utilisateur enregistré avec cette adresse e-mail.",
"We will send a receipt download link to the email addresses that you specify below. You may separate multiple email addresses using commas.": "Nous enverrons un lien de téléchargement de reçu aux adresses e-mail que vous spécifiez ci-dessous. Vous pouvez séparer plusieurs adresses e-mail à l'aide de virgules.",
"We're lost in space. The page you were trying to view does not exist.": "Nous sommes perdus dans l'espce. La page que vous essayez de voir n'existe pas.",
"We're lost in space. The page you were trying to view does not exist.": "Nous sommes perdus dans l'espace. La page que vous essayez de voir n'existe pas.",
"Welcome Back!": "Bienvenue !",
"Western Sahara": "Sahara occidental",
"When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application.": "Lorsque l'authentification à deux facteurs est activée, vous serez invité à saisir un jeton aléatoire sécurisé lors de l'authentification. Vous pouvez récupérer ce jeton depuis l'application Google Authenticator de votre téléphone.",
@ -686,13 +696,14 @@
"Whoops!": "Oups !",
"Whoops! Something went wrong.": "Oups ! Un problème est survenu.",
"With Trashed": "Avec ceux mis à la corbeille",
"Write": "Ecrire",
"Write": "Écrire",
"Year To Date": "Année du Jour",
"Yearly": "Annuellement",
"Yemen": "Yémen",
"Yes": "Oui",
"You are already subscribed.": "Vous êtes déjà abonné(e).",
"You are currently within your free trial period. Your trial will expire on :date.": "Vous êtes actuellement dans votre période d'essai gratuit. Votre essai expirera le: date.",
"You are logged in!": "Vous êtes connecté(e) !",
"You are receiving this email because we received a password reset request for your account.": "Vous recevez cet e-mail car nous avons reçu une demande de réinitialisation de mot de passe pour votre compte.",
"You have been invited to join the :team team!": "Vous avez été invité à rejoindre l'équipe :team !",
"You have enabled two factor authentication.": "Vous avez activé la double authentification.",
@ -709,6 +720,6 @@
"Your registered VAT Number is :vatNumber.": "Votre numéro de TVA enregistré est :vatNumber.",
"Zambia": "Zambie",
"Zimbabwe": "Zimbabwe",
"Zip \/ Postal Code": "Code postal",
"Zip / Postal Code": "Code postal",
"Åland Islands": "Les îles d'Åland"
}
}

View file

@ -21,7 +21,6 @@ return [
'alpha_dash' => 'Ce champ doit contenir uniquement des lettres, des chiffres et des tirets.',
'alpha_num' => 'Ce champ doit contenir uniquement des chiffres et des lettres.',
'array' => 'Ce champ doit être un tableau.',
'attached' => 'Ce champ est déjà attaché.',
'before' => 'Ce champ doit être une date antérieure au :date.',
'before_or_equal' => 'Ce champ doit être une date antérieure ou égale au :date.',
'between' => [
@ -45,6 +44,7 @@ return [
'distinct' => 'Ce champ a une valeur en double.',
'email' => 'Ce champ doit être une adresse e-mail valide.',
'ends_with' => 'Ce champ doit se terminer par une des valeurs suivantes : :values',
'enum' => 'Ce champ selectionné est invalide.',
'exists' => 'Ce champ sélectionné est invalide.',
'file' => 'Ce champ doit être un fichier.',
'filled' => 'Ce champ doit avoir une valeur.',
@ -80,6 +80,7 @@ return [
'numeric' => 'La valeur doit être inférieure ou égale à :value.',
'string' => 'Le texte doit contenir au plus :value caractères.',
],
'mac_address' => 'La valeur doit être une adresse MAC valide.',
'max' => [
'array' => 'Le tableau ne peut contenir plus de :max éléments.',
'file' => 'La taille du fichier ne peut pas dépasser :max kilo-octets.',
@ -105,8 +106,8 @@ return [
'prohibited_unless' => 'Ce champ est interdit à moins que :other ait l\'une des valeurs :values.',
'prohibits' => 'Ce champ interdit :other d\'être présent.',
'regex' => 'Le format du champ est invalide.',
'relatable' => 'Ce champ n\'est sans doute pas associé avec cette donnée.',
'required' => 'Ce champ est obligatoire.',
'required_array_keys' => 'Ce champ doit contenir des entrées pour : :values.',
'required_if' => 'Ce champ est obligatoire quand la valeur de :other est :value.',
'required_unless' => 'Ce champ est obligatoire sauf si :other est :values.',
'required_with' => 'Ce champ est obligatoire quand :values est présent.',

View file

@ -0,0 +1,6 @@
<?php
return [
'attached' => 'Ce champ est déjà attaché.',
'relatable' => 'Ce champ n\'est sans doute pas associé avec cette donnée.',
];

View file

@ -0,0 +1,6 @@
<?php
return [
'attached' => ':attribute est déjà attaché(e).',
'relatable' => ':attribute n\'est sans doute pas associé(e) avec cette donnée.',
];

View file

@ -1,16 +1,5 @@
<?php
/*
|--------------------------------------------------------------------------
| 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.
|
*/
return [
'accepted' => 'Le champ :attribute doit être accepté.',
'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.',
@ -21,7 +10,6 @@ return [
'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.',
'attached' => ':attribute est déjà attaché(e).',
'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' => [
@ -45,6 +33,7 @@ return [
'distinct' => 'Le champ :attribute a une valeur en double.',
'email' => 'Le champ :attribute doit être une adresse e-mail valide.',
'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values',
'enum' => 'Le champ :attribute sélectionné est invalide.',
'exists' => 'Le champ :attribute sélectionné est invalide.',
'file' => 'Le champ :attribute doit être un fichier.',
'filled' => 'Le champ :attribute doit avoir une valeur.',
@ -80,6 +69,7 @@ return [
'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.',
'string' => 'Le texte :attribute doit contenir au plus :value caractères.',
],
'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.',
'max' => [
'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.',
'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.',
@ -105,8 +95,8 @@ return [
'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :values.',
'prohibits' => 'Le champ :attribute interdit :other d\'être présent.',
'regex' => 'Le format du champ :attribute est invalide.',
'relatable' => ':attribute n\'est sans doute pas associé(e) avec cette donnée.',
'required' => 'Le champ :attribute est obligatoire.',
'required_array_keys' => 'Le champ :attribute doit contenir des entrées pour : :values.',
'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.',
@ -127,9 +117,11 @@ return [
'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' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
'custom' => [],
'phone' => 'Le champ :attribute n\'est pas un numéro de téléphone valide.',
'color' => ':attribute doit être un code couleur valide (hexadecimal, RGB, RGBA ou un nom de couleur CSS)',
'color_hex' => ':attribute doit être un code couleur hexadecimal valide',
'color_rgb' => ':attribute doit être un code couleur RGB valide',
'color_rgba' => ':attribute doit être un code couleur RGBA valide',
'color_name' => ':attribute doit être un nom de couleur CSS valide',
];