From deb2683bc46413b8ab269f2a138ccb18e9221bab Mon Sep 17 00:00:00 2001 From: Alexis Saettler Date: Tue, 12 Mar 2024 19:51:41 +0100 Subject: [PATCH] feat: add laravel precognition --- .../Auth/NewPasswordController.php | 11 +- .../Controllers/Auth/PasswordController.php | 12 +- .../Auth/PasswordValidationRules.php | 11 +- .../Auth/RegisteredUserController.php | 19 +- app/Http/Controllers/ListController.php | 14 +- app/Http/Requests/Auth/NewPasswordRequest.php | 33 + app/Http/Requests/Auth/PasswordRequest.php | 31 + .../Requests/Auth/RegisteredUserRequest.php | 40 + app/Http/Requests/NameListRequest.php | 31 + app/Http/ViewModels/User/ListViewModel.php | 1 + composer.json | 1 + composer.lock | 1482 +++++++++++++++-- lang/en.json | 243 +++ lang/en/actions.php | 111 ++ lang/en/auth.php | 9 + lang/en/http-statuses.php | 84 + lang/en/pagination.php | 8 + lang/en/passwords.php | 11 + lang/en/validation.php | 236 +++ lang/fr.json | 260 ++- lang/fr/actions.php | 111 ++ lang/fr/auth.php | 8 +- lang/fr/http-statuses.php | 84 + lang/fr/pagination.php | 8 + lang/fr/passwords.php | 11 + lang/fr/validation.php | 236 +++ package.json | 1 + resources/js/app.js | 3 +- .../views/auth/confirm-password.blade.php | 6 +- .../views/auth/forgot-password.blade.php | 6 +- resources/views/auth/login.blade.php | 2 +- resources/views/auth/register.blade.php | 25 +- resources/views/auth/reset-password.blade.php | 118 +- .../components/input-validation.blade.php | 7 + .../views/components/primary-button.blade.php | 4 +- resources/views/components/textarea.blade.php | 2 +- .../partials/update-password-form.blade.php | 30 +- resources/views/user/account.blade.php | 8 +- resources/views/user/lists/edit.blade.php | 68 +- resources/views/user/lists/new.blade.php | 99 +- .../user/lists/partials/list-form.blade.php | 128 ++ routes/auth.php | 10 +- routes/web.php | 19 +- yarn.lock | 32 +- 44 files changed, 3210 insertions(+), 464 deletions(-) create mode 100644 app/Http/Requests/Auth/NewPasswordRequest.php create mode 100644 app/Http/Requests/Auth/PasswordRequest.php create mode 100644 app/Http/Requests/Auth/RegisteredUserRequest.php create mode 100644 app/Http/Requests/NameListRequest.php create mode 100644 lang/en.json create mode 100644 lang/en/actions.php create mode 100644 lang/en/auth.php create mode 100644 lang/en/http-statuses.php create mode 100644 lang/en/pagination.php create mode 100644 lang/en/passwords.php create mode 100644 lang/en/validation.php create mode 100644 lang/fr/actions.php create mode 100644 lang/fr/http-statuses.php create mode 100644 lang/fr/pagination.php create mode 100644 lang/fr/passwords.php create mode 100644 lang/fr/validation.php create mode 100644 resources/views/components/input-validation.blade.php create mode 100644 resources/views/user/lists/partials/list-form.blade.php diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php index ab71f45..a963e9c 100644 --- a/app/Http/Controllers/Auth/NewPasswordController.php +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\NewPasswordRequest; use Illuminate\Auth\Events\PasswordReset; use Illuminate\Contracts\View\View; use Illuminate\Http\RedirectResponse; @@ -13,8 +14,6 @@ class NewPasswordController extends Controller { - use PasswordValidationRules; - /** * Display the password reset view. */ @@ -28,13 +27,9 @@ public function create(Request $request): View * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(NewPasswordRequest $request): RedirectResponse { - $request->validate([ - 'token' => ['required'], - 'email' => ['required', 'email'], - 'password' => $this->passwordRules(), - ]); + $request->validated(); // Here we will attempt to reset the user's password. If it is successful we // will update the password on an actual user model and persist it to the diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php index b106c21..585e92d 100644 --- a/app/Http/Controllers/Auth/PasswordController.php +++ b/app/Http/Controllers/Auth/PasswordController.php @@ -3,24 +3,18 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\PasswordRequest; use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules\Password; class PasswordController extends Controller { - use PasswordValidationRules; - /** * Update the user's password. */ - public function update(Request $request): RedirectResponse + public function update(PasswordRequest $request): RedirectResponse { - $validated = $request->validateWithBag('updatePassword', [ - 'current_password' => ['required', 'current_password'], - 'password' => $this->passwordRules(), - ]); + $validated = $request->validated(); $request->user()->update([ 'password' => Hash::make($validated['password']), diff --git a/app/Http/Controllers/Auth/PasswordValidationRules.php b/app/Http/Controllers/Auth/PasswordValidationRules.php index 1444d70..5c84bc3 100644 --- a/app/Http/Controllers/Auth/PasswordValidationRules.php +++ b/app/Http/Controllers/Auth/PasswordValidationRules.php @@ -13,6 +13,15 @@ trait PasswordValidationRules */ protected function passwordRules(): array { - return ['required', 'string', Password::default(), 'confirmed']; + return [ + 'required', + 'string', + app()->environment('local') + ? Password::min(4) + : ($this->isPrecognitive() + ? Password::default() + : Password::default()->uncompromised()), + 'confirmed', + ]; } } diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 9883120..d79719e 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -3,20 +3,16 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; -use App\Models\User; +use App\Http\Requests\Auth\RegisteredUserRequest; use App\Providers\RouteServiceProvider; use App\Services\CreateAccount; use Illuminate\Auth\Events\Registered; use Illuminate\Contracts\View\View; use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Validation\Rule; class RegisteredUserController extends Controller { - use PasswordValidationRules; - /** * Display the registration view. */ @@ -30,18 +26,9 @@ public function create(): View * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(RegisteredUserRequest $request): RedirectResponse { - $request->validate([ - 'email' => [ - 'required', - 'string', - 'email', - 'max:255', - Rule::unique(User::class), - ], - 'password' => $this->passwordRules(), - ]); + $request->validated(); $user = (new CreateAccount( email: $request->input('email'), diff --git a/app/Http/Controllers/ListController.php b/app/Http/Controllers/ListController.php index c0791b0..5ec000d 100644 --- a/app/Http/Controllers/ListController.php +++ b/app/Http/Controllers/ListController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Requests\NameListRequest; use App\Http\ViewModels\User\ListViewModel; use App\Models\ListCategory; use App\Services\CreateList; @@ -35,10 +36,12 @@ public function new(): View ]); } - public function store(Request $request): RedirectResponse + public function store(NameListRequest $request): RedirectResponse { + $request->validated(); + $list = (new CreateList( - name: $request->input('list-name'), + name: $request->input('listname'), description: $request->input('description'), isPublic: false, canBeModified: true, @@ -81,12 +84,15 @@ public function edit(Request $request): View ]); } - public function update(Request $request): RedirectResponse + public function update(NameListRequest $request): RedirectResponse { + $request->validated(); + $list = $request->attributes->get('list'); - $list->name = $request->input('list-name'); + $list->name = $request->input('listname'); $list->description = $request->input('description'); + $list->gender = $request->input('gender'); $list->list_category_id = $request->input('category'); $list->save(); diff --git a/app/Http/Requests/Auth/NewPasswordRequest.php b/app/Http/Requests/Auth/NewPasswordRequest.php new file mode 100644 index 0000000..81747a2 --- /dev/null +++ b/app/Http/Requests/Auth/NewPasswordRequest.php @@ -0,0 +1,33 @@ + + */ + public function rules(): array + { + return [ + 'token' => ['required'], + 'email' => ['required', 'email'], + 'password' => $this->passwordRules(), + ]; + } +} diff --git a/app/Http/Requests/Auth/PasswordRequest.php b/app/Http/Requests/Auth/PasswordRequest.php new file mode 100644 index 0000000..1bdf444 --- /dev/null +++ b/app/Http/Requests/Auth/PasswordRequest.php @@ -0,0 +1,31 @@ + + */ + public function rules(): array + { + return [ + 'password' => $this->passwordRules(), + ]; + } +} diff --git a/app/Http/Requests/Auth/RegisteredUserRequest.php b/app/Http/Requests/Auth/RegisteredUserRequest.php new file mode 100644 index 0000000..3d28847 --- /dev/null +++ b/app/Http/Requests/Auth/RegisteredUserRequest.php @@ -0,0 +1,40 @@ + + */ + public function rules(): array + { + return [ + 'email' => [ + 'required', + 'string', + 'email', + 'max:255', + Rule::unique(User::class), + ], + 'password' => $this->passwordRules(), + ]; + } +} diff --git a/app/Http/Requests/NameListRequest.php b/app/Http/Requests/NameListRequest.php new file mode 100644 index 0000000..6a2ba63 --- /dev/null +++ b/app/Http/Requests/NameListRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + 'listname' => 'string|required|max:255', + 'description' => 'string|nullable|max:255', + 'gender' => 'string|nullable|max:255', + 'category' => 'int|nullable|exists:categories,id', + ]; + } +} diff --git a/app/Http/ViewModels/User/ListViewModel.php b/app/Http/ViewModels/User/ListViewModel.php index 26779c1..1d87fbd 100644 --- a/app/Http/ViewModels/User/ListViewModel.php +++ b/app/Http/ViewModels/User/ListViewModel.php @@ -100,6 +100,7 @@ public static function edit(NameList $list): array 'id' => $list->id, 'name' => $list->name, 'description' => $list->description, + 'gender' => $list->gender, 'list_category_id' => $list->list_category_id, 'url' => [ 'update' => route('list.update', [ diff --git a/composer.json b/composer.json index 3217159..2db6aa2 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,7 @@ "brianium/paratest": "^7.4", "fakerphp/faker": "^1.9", "larastan/larastan": "^2.7", + "laravel-lang/common": "^6.1", "laravel/breeze": "^1.26", "laravel/dusk": "^7.11", "laravel/pint": "^1.13", diff --git a/composer.lock b/composer.lock index 6d28dc8..da95c5c 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": "af2191d605ff0aca7610f599d2e367a7", + "content-hash": "9a8b6cc1a0b050df8d8f62309d4f1f8b", "packages": [ { "name": "blade-ui-kit/blade-heroicons", @@ -7957,6 +7957,52 @@ ], "time": "2021-03-30T17:13:30+00:00" }, + { + "name": "archtechx/enums", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/archtechx/enums.git", + "reference": "a99ee1a7e083736c22d3a44fd3a988e7e472cf96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/archtechx/enums/zipball/a99ee1a7e083736c22d3a44fd3a988e7e472cf96", + "reference": "a99ee1a7e083736c22d3a44fd3a988e7e472cf96", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "larastan/larastan": "^2.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ArchTech\\Enums\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Štancl", + "email": "samuel@archte.ch" + } + ], + "description": "Helpers for making PHP enums more lovable.", + "support": { + "issues": "https://github.com/archtechx/enums/issues", + "source": "https://github.com/archtechx/enums/tree/v1.0.1" + }, + "time": "2024-01-28T17:52:47+00:00" + }, { "name": "barryvdh/laravel-debugbar", "version": "v3.10.0", @@ -8609,6 +8655,250 @@ }, "time": "2019-12-04T15:06:13+00:00" }, + { + "name": "dragon-code/contracts", + "version": "2.23.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/contracts.git", + "reference": "44dbad923f152e0dc2699fbac2d33b65dd6a8f7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/contracts/zipball/44dbad923f152e0dc2699fbac2d33b65dd6a8f7d", + "reference": "44dbad923f152e0dc2699fbac2d33b65dd6a8f7d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/http-kernel": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.23" + }, + "conflict": { + "andrey-helldar/contracts": "*" + }, + "require-dev": { + "illuminate/database": "^10.0 || ^11.0", + "phpdocumentor/reflection-docblock": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\Contracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + } + ], + "description": "A set of contracts for any project", + "keywords": [ + "contracts", + "interfaces" + ], + "support": { + "source": "https://github.com/TheDragonCode/contracts" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://www.donationalerts.com/r/dragon_code", + "type": "donationalerts" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2024-03-11T20:15:12+00:00" + }, + { + "name": "dragon-code/pretty-array", + "version": "v4.1.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/pretty-array.git", + "reference": "6c84e2454491b414efbd37985c322712cdf9012f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/pretty-array/zipball/6c84e2454491b414efbd37985c322712cdf9012f", + "reference": "6c84e2454491b414efbd37985c322712cdf9012f", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.20", + "dragon-code/support": "^6.11.2", + "ext-dom": "*", + "ext-mbstring": "*", + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^10.2" + }, + "suggest": { + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\PrettyArray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "Simple conversion of an array to a pretty view", + "keywords": [ + "andrey helldar", + "array", + "dragon", + "dragon code", + "pretty", + "pretty array" + ], + "support": { + "issues": "https://github.com/TheDragonCode/pretty-array/issues", + "source": "https://github.com/TheDragonCode/pretty-array" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://github.com/sponsors/TheDragonCode", + "type": "github" + }, + { + "url": "https://opencollective.com/dragon-code", + "type": "open_collective" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2023-06-02T11:37:44+00:00" + }, + { + "name": "dragon-code/support", + "version": "6.12.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/support.git", + "reference": "caee4d59725b1331c9970f57b4f047eab40d8fa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/support/zipball/caee4d59725b1331c9970f57b4f047eab40d8fa0", + "reference": "caee4d59725b1331c9970f57b4f047eab40d8fa0", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.22.0", + "ext-bcmath": "*", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/polyfill-php81": "^1.25", + "voku/portable-ascii": "^1.4.8 || ^2.0.1" + }, + "conflict": { + "andrey-helldar/support": "*" + }, + "require-dev": { + "illuminate/contracts": "^9.0 || ^10.0", + "phpunit/phpunit": "^9.6", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "suggest": { + "dragon-code/laravel-support": "Various helper files for the Laravel and Lumen frameworks", + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "extra": { + "dragon-code": { + "docs-generator": { + "preview": { + "brand": "php", + "vendor": "The Dragon Code" + } + } + } + }, + "autoload": { + "psr-4": { + "DragonCode\\Support\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "Support package is a collection of helpers and tools for any project.", + "keywords": [ + "dragon", + "dragon-code", + "framework", + "helper", + "helpers", + "laravel", + "php", + "support", + "symfony", + "yii", + "yii2" + ], + "support": { + "issues": "https://github.com/TheDragonCode/support/issues", + "source": "https://github.com/TheDragonCode/support" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://www.donationalerts.com/r/dragon_code", + "type": "donationalerts" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2023-12-09T12:52:29+00:00" + }, { "name": "fakerphp/faker", "version": "v1.23.1", @@ -8869,7 +9159,813 @@ }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "larastan/larastan", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", + "php": "^8.0.2", + "phpmyadmin/sql-parser": "^5.8.2", + "phpstan/phpstan": "^1.10.50" + }, + "require-dev": { + "nikic/php-parser": "^4.17.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", + "phpunit/phpunit": "^9.6.13 || ^10.5" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v2.8.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-01-08T09:11:17+00:00" + }, + { + "name": "laravel-lang/actions", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/actions.git", + "reference": "7f41ee016c21feaefc90b7e7513976c66177bbce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/actions/zipball/7f41ee016c21feaefc90b7e7513976c66177bbce", + "reference": "7f41ee016c21feaefc90b7e7513976c66177bbce", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.0 || ^15.0 || ^16.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^2.3.1", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.3 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Actions\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Actions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + }, + { + "name": "Laravel Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "Translation of buttons and other action elements", + "keywords": [ + "actions", + "buttons", + "lang", + "languages", + "laravel", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/actions/issues", + "source": "https://github.com/Laravel-Lang/actions/tree/1.5.2" + }, + "time": "2024-02-26T07:17:43+00:00" + }, + { + "name": "laravel-lang/attributes", + "version": "2.9.4", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/attributes.git", + "reference": "398008ea9df5f568a7195c47f9853d983161e478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/attributes/zipball/398008ea9df5f568a7195c47f9853d983161e478", + "reference": "398008ea9df5f568a7195c47f9853d983161e478", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.0 || ^15.0 || ^16.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19 || ^2.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Attributes\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Attributes\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 126 languages for form field names", + "keywords": [ + "attributes", + "fields", + "form", + "lang", + "languages", + "laravel", + "messages", + "translations", + "validation" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/attributes/issues", + "source": "https://github.com/Laravel-Lang/attributes/tree/2.9.4" + }, + "time": "2024-01-25T00:41:17+00:00" + }, + { + "name": "laravel-lang/common", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/common.git", + "reference": "969cf0c8870b4763554ed2b69aab9b1f391f85a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/common/zipball/969cf0c8870b4763554ed2b69aab9b1f391f85a4", + "reference": "969cf0c8870b4763554ed2b69aab9b1f391f85a4", + "shasum": "" + }, + "require": { + "laravel-lang/actions": "^1.1", + "laravel-lang/attributes": "^2.7", + "laravel-lang/http-statuses": "^3.7", + "laravel-lang/json-fallback": "^2.0", + "laravel-lang/lang": "^13.12 || ^14.0", + "laravel-lang/locales": "^2.3", + "laravel-lang/publisher": "^16.0", + "php": "^8.1" + }, + "require-dev": { + "dragon-code/support": "^6.12", + "orchestra/testbench": "^8.17", + "phpunit/phpunit": "^10.5.3", + "symfony/var-dumper": "^6.4 || ^7.0" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + }, + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + } + ], + "description": "Easily connect the necessary language packs to the application", + "keywords": [ + "Laravel-lang", + "actions", + "attribute", + "attributes", + "breeze", + "buttons", + "cashier", + "fortify", + "framework", + "http", + "http-status", + "http-status-code", + "i18n", + "jetstream", + "lang", + "language", + "languages", + "laravel", + "locale", + "locales", + "localization", + "localizations", + "nova", + "publisher", + "spark", + "translation", + "translations", + "ui" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/common/issues", + "source": "https://github.com/Laravel-Lang/common" + }, + "time": "2023-12-21T13:39:07+00:00" + }, + { + "name": "laravel-lang/http-statuses", + "version": "3.8.2", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/http-statuses.git", + "reference": "b408ea74292df2e4fbec2be93858a3e697189b29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/http-statuses/zipball/b408ea74292df2e4fbec2be93858a3e697189b29", + "reference": "b408ea74292df2e4fbec2be93858a3e697189b29", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.1 || ^15.0 || ^16.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19 || ^2.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\HttpStatuses\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\HttpStatuses\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 126 languages for HTTP statuses", + "keywords": [ + "http", + "lang", + "languages", + "laravel", + "messages", + "status", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/http-statuses/issues", + "source": "https://github.com/Laravel-Lang/http-statuses/tree/3.8.2" + }, + "time": "2024-03-11T01:33:17+00:00" + }, + { + "name": "laravel-lang/json-fallback", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/json-fallback.git", + "reference": "9e8d4495b2bc3a7831439cab49da82dfc837e851" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/json-fallback/zipball/9e8d4495b2bc3a7831439cab49da82dfc837e851", + "reference": "9e8d4495b2bc3a7831439cab49da82dfc837e851", + "shasum": "" + }, + "require": { + "illuminate/support": "^10.0", + "illuminate/translation": "^10.0", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.0", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\JsonFallback\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + }, + { + "name": "Felipe Dsdev", + "homepage": "https://github.com/felipe-dsdev" + } + ], + "description": "Adds support for fallback JSON string translation", + "support": { + "issues": "https://github.com/Laravel-Lang/json-fallback/issues", + "source": "https://github.com/Laravel-Lang/json-fallback/tree/2.0.0" + }, + "time": "2023-12-16T18:52:42+00:00" + }, + { + "name": "laravel-lang/lang", + "version": "14.4.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/lang.git", + "reference": "215f2b900b33876982c18f7e2924f898ac07fa7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/215f2b900b33876982c18f7e2924f898ac07fa7e", + "reference": "215f2b900b33876982c18f7e2924f898ac07fa7e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.0 || ^15.0 || ^16.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19 || ^2.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Lang\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Lang\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 126 languages for Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark and Laravel UI", + "keywords": [ + "lang", + "languages", + "laravel", + "lpm" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/lang/issues", + "source": "https://github.com/Laravel-Lang/lang" + }, + "time": "2024-03-11T06:59:42+00:00" + }, + { + "name": "laravel-lang/locale-list", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/locale-list.git", + "reference": "c525c99a87af6d42414c4459460b42c7fdc29cfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/locale-list/zipball/c525c99a87af6d42414c4459460b42c7fdc29cfe", + "reference": "c525c99a87af6d42414c4459460b42c7fdc29cfe", + "shasum": "" + }, + "require": { + "archtechx/enums": "^0.3.2 || ^1.0", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\LocaleList\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "List of localizations available in Laravel Lang projects", + "keywords": [ + "Laravel-lang", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/locale-list/issues", + "source": "https://github.com/Laravel-Lang/locale-list" + }, + "time": "2024-01-17T08:34:28+00:00" + }, + { + "name": "laravel-lang/locales", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/locales.git", + "reference": "bb7bc84610a29f19c1d30ec8f1bdaebba18496fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/locales/zipball/bb7bc84610a29f19c1d30ec8f1bdaebba18496fa", + "reference": "bb7bc84610a29f19c1d30ec8f1bdaebba18496fa", + "shasum": "" + }, + "require": { + "archtechx/enums": "^0.3.2 || ^1.0", + "dragon-code/support": "^6.11.3", + "ext-json": "*", + "illuminate/collections": "^10.0", + "laravel-lang/locale-list": "^1.2", + "laravel-lang/native-country-names": "^1.3", + "laravel-lang/native-currency-names": "^1.3", + "laravel-lang/native-locale-names": "^2.2", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.24.1", + "symfony/var-dumper": "^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Locales\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Locales\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "Basic functionality for working with localizations", + "keywords": [ + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/locales/issues", + "source": "https://github.com/Laravel-Lang/locales" + }, + "time": "2024-01-17T08:45:49+00:00" + }, + { + "name": "laravel-lang/native-country-names", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/native-country-names.git", + "reference": "cea0d0fbb8aeb9c8b426c05796034295c3d1cabb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/native-country-names/zipball/cea0d0fbb8aeb9c8b426c05796034295c3d1cabb", + "reference": "cea0d0fbb8aeb9c8b426c05796034295c3d1cabb", + "shasum": "" + }, + "require": { + "dragon-code/support": "^6.11", + "ext-json": "*", + "illuminate/collections": "^10.0", + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0", + "laravel-lang/locale-list": "^1.2", + "pestphp/pest": "^2.24.3", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0", + "vlucas/phpdotenv": "^5.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\NativeCountryNames\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8878,118 +9974,137 @@ ], "authors": [ { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" } ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", + "description": "The project contains native translations of country names", "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" + "Laravel-lang", + "countries", + "country", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "territories", + "territory", + "translation", + "translations" ], "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "issues": "https://github.com/Laravel-Lang/native-country-names/issues", + "source": "https://github.com/Laravel-Lang/native-country-names" }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2023-12-29T23:38:20+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "laravel-lang/native-currency-names", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/Laravel-Lang/native-currency-names.git", + "reference": "21662cd9f31edf1817439344d5c4519b627679b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/Laravel-Lang/native-currency-names/zipball/21662cd9f31edf1817439344d5c4519b627679b5", + "reference": "21662cd9f31edf1817439344d5c4519b627679b5", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "dragon-code/support": "^6.11", + "ext-json": "*", + "illuminate/collections": "^10.0", + "php": "^8.1" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "illuminate/support": "^10.0", + "laravel-lang/locale-list": "^1.2", + "pestphp/pest": "^2.24.3", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0", + "vlucas/phpdotenv": "^5.6" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, "autoload": { - "classmap": [ - "hamcrest" - ] + "psr-4": { + "LaravelLang\\NativeCurrencyNames\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" + } + ], + "description": "The project contains native translations of currency names", "keywords": [ - "test" + "Laravel-lang", + "currency", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" ], "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "issues": "https://github.com/Laravel-Lang/native-currency-names/issues", + "source": "https://github.com/Laravel-Lang/native-currency-names" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2023-12-29T23:30:58+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "name": "laravel-lang/native-locale-names", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "url": "https://github.com/Laravel-Lang/native-locale-names.git", + "reference": "801136e89f76c8b09296288b99fd75740e02ec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/Laravel-Lang/native-locale-names/zipball/801136e89f76c8b09296288b99fd75740e02ec6a", + "reference": "801136e89f76c8b09296288b99fd75740e02ec6a", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "dragon-code/support": "^6.11", + "ext-json": "*", + "php": "^8.1" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "illuminate/support": "^10.31", + "laravel-lang/locale-list": "^1.2", + "pestphp/pest": "^2.24.3", + "punic/punic": "^3.8", + "symfony/console": "^6.3 || ^7.0", + "symfony/process": "^6.3 || ^7.0", + "symfony/var-dumper": "^6.3 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Jean85\\": "src/" + "LaravelLang\\NativeLocaleNames\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8998,73 +10113,81 @@ ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", + "description": "The project contains native translations of locale names", "keywords": [ - "composer", - "package", - "release", - "versions" + "Laravel-lang", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "translation", + "translations" ], "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "issues": "https://github.com/Laravel-Lang/native-locale-names/issues", + "source": "https://github.com/Laravel-Lang/native-locale-names" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2023-12-29T23:18:45+00:00" }, { - "name": "larastan/larastan", - "version": "v2.8.1", + "name": "laravel-lang/publisher", + "version": "16.2.3", "source": { "type": "git", - "url": "https://github.com/larastan/larastan.git", - "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" + "url": "https://github.com/Laravel-Lang/publisher.git", + "reference": "35157978fba8c23b43190fbff0a555832ca60931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", - "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "url": "https://api.github.com/repos/Laravel-Lang/publisher/zipball/35157978fba8c23b43190fbff0a555832ca60931", + "reference": "35157978fba8c23b43190fbff0a555832ca60931", "shasum": "" }, "require": { + "composer/semver": "^3.4", + "dragon-code/pretty-array": "^4.1", + "dragon-code/support": "^6.11.3", "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.8.2", - "phpstan/phpstan": "^1.10.50" + "illuminate/collections": "^10.0", + "illuminate/console": "^10.0", + "illuminate/support": "^10.0", + "laravel-lang/locales": "^2.3", + "league/commonmark": "^2.4.1", + "league/config": "^1.2", + "php": "^8.1" }, - "require-dev": { - "nikic/php-parser": "^4.17.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", - "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", - "phpunit/phpunit": "^9.6.13 || ^10.5" + "conflict": { + "laravel-lang/attributes": "<2.0", + "laravel-lang/http-statuses": "<3.0", + "laravel-lang/lang": "<11.0" }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + "require-dev": { + "laravel-lang/json-fallback": "^2.0", + "orchestra/testbench": "^8.14", + "phpunit/phpunit": "^10.4.2", + "symfony/var-dumper": "^6.3.6 || ^7.0" }, - "type": "phpstan-extension", + "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" + "laravel": { + "providers": [ + "LaravelLang\\Publisher\\ServiceProvider" ] } }, "autoload": { "psr-4": { - "Larastan\\Larastan\\": "src/" + "LaravelLang\\Publisher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9073,48 +10196,45 @@ ], "authors": [ { - "name": "Can Vural", - "email": "can9119@gmail.com" + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" }, { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "Laravel-Lang Team", + "homepage": "https://laravel-lang.com" } ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "description": "Publisher lang files for the Laravel and Lumen Frameworks, Jetstream, Fortify, Cashier, Spark and Nova from Laravel-Lang/lang", "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", + "Laravel-lang", + "breeze", + "cashier", + "fortify", + "framework", + "i18n", + "jetstream", + "lang", + "languages", "laravel", - "package", - "php", - "static analysis" + "locale", + "locales", + "localization", + "localizations", + "lpm", + "lumen", + "nova", + "publisher", + "spark", + "trans", + "translation", + "translations", + "validations" ], "support": { - "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.8.1" + "issues": "https://github.com/Laravel-Lang/publisher/issues", + "source": "https://github.com/Laravel-Lang/publisher" }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2024-01-08T09:11:17+00:00" + "time": "2024-02-21T22:07:40+00:00" }, { "name": "laravel/breeze", @@ -13710,6 +14830,82 @@ ], "time": "2024-01-29T20:11:03+00:00" }, + { + "name": "symfony/polyfill-php81", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, { "name": "symfony/stopwatch", "version": "v7.0.3", diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 0000000..9daebfc --- /dev/null +++ b/lang/en.json @@ -0,0 +1,243 @@ +{ + "(and :count more error)": "(and :count more error)", + "(and :count more errors)": "(and :count more errors)", + "A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.", + "A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.", + "A Timeout Occurred": "A Timeout Occurred", + "Accept": "Accept", + "Accepted": "Accepted", + "Action": "Action", + "Actions": "Actions", + "Add": "Add", + "Add :name": "Add :name", + "Admin": "Admin", + "Agree": "Agree", + "All rights reserved.": "All rights reserved.", + "Already registered?": "Already registered?", + "Already Reported": "Already Reported", + "Archive": "Archive", + "Are you sure you want to delete your account?": "Are you sure you want to delete your account?", + "Assign": "Assign", + "Attach": "Attach", + "Bad Gateway": "Bad Gateway", + "Bad Request": "Bad Request", + "Bandwidth Limit Exceeded": "Bandwidth Limit Exceeded", + "Browse": "Browse", + "Cancel": "Cancel", + "Choose": "Choose", + "Choose :name": "Choose :name", + "Choose File": "Choose File", + "Choose Image": "Choose Image", + "Click here to re-send the verification email.": "Click here to re-send the verification email.", + "Click to copy": "Click to copy", + "Client Closed Request": "Client Closed Request", + "Close": "Close", + "Collapse": "Collapse", + "Collapse All": "Collapse All", + "Comment": "Comment", + "Confirm": "Confirm", + "Confirm Password": "Confirm Password", + "Conflict": "Conflict", + "Connect": "Connect", + "Connection Closed Without Response": "Connection Closed Without Response", + "Connection Timed Out": "Connection Timed Out", + "Continue": "Continue", + "Create": "Create", + "Create :name": "Create :name", + "Created": "Created", + "Current Password": "Current Password", + "Dashboard": "Dashboard", + "Delete": "Delete", + "Delete :name": "Delete :name", + "Delete Account": "Delete Account", + "Detach": "Detach", + "Details": "Details", + "Disable": "Disable", + "Discard": "Discard", + "Done": "Done", + "Down": "Down", + "Duplicate": "Duplicate", + "Duplicate :name": "Duplicate :name", + "Edit": "Edit", + "Edit :name": "Edit :name", + "Email": "Email", + "Email Password Reset Link": "Email Password Reset Link", + "Enable": "Enable", + "Ensure your account is using a long, random password to stay secure.": "Ensure your account is using a long, random password to stay secure.", + "Expand": "Expand", + "Expand All": "Expand All", + "Expectation Failed": "Expectation Failed", + "Explanation": "Explanation", + "Export": "Export", + "Failed Dependency": "Failed Dependency", + "File": "File", + "Files": "Files", + "Forbidden": "Forbidden", + "Forgot your password?": "Forgot your password?", + "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.": "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.", + "Found": "Found", + "Gateway Timeout": "Gateway Timeout", + "Go Home": "Go Home", + "Go to page :page": "Go to page :page", + "Gone": "Gone", + "Hello!": "Hello!", + "Hide": "Hide", + "Hide :name": "Hide :name", + "Home": "Home", + "HTTP Version Not Supported": "HTTP Version Not Supported", + "I'm a teapot": "I'm a teapot", + "If you did not create an account, no further action is required.": "If you did not create an account, no further action is required.", + "If you did not request a password reset, no further action is required.": "If you did not request a password reset, no further action is required.", + "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:", + "IM Used": "IM Used", + "Image": "Image", + "Impersonate": "Impersonate", + "Impersonation": "Impersonation", + "Import": "Import", + "Import :name": "Import :name", + "Insufficient Storage": "Insufficient Storage", + "Internal Server Error": "Internal Server Error", + "Introduction": "Introduction", + "Invalid JSON was returned from the route.": "Invalid JSON was returned from the route.", + "Invalid SSL Certificate": "Invalid SSL Certificate", + "Length Required": "Length Required", + "Like": "Like", + "Load": "Load", + "Localize": "Localize", + "Locked": "Locked", + "Log in": "Log in", + "Log Out": "Log Out", + "Login": "Login", + "Logout": "Logout", + "Loop Detected": "Loop Detected", + "Maintenance Mode": "Maintenance Mode", + "Method Not Allowed": "Method Not Allowed", + "Misdirected Request": "Misdirected Request", + "Moved Permanently": "Moved Permanently", + "Multi-Status": "Multi-Status", + "Multiple Choices": "Multiple Choices", + "Name": "Name", + "Network Authentication Required": "Network Authentication Required", + "Network Connect Timeout Error": "Network Connect Timeout Error", + "Network Read Timeout Error": "Network Read Timeout Error", + "New": "New", + "New :name": "New :name", + "New Password": "New Password", + "No": "No", + "No Content": "No Content", + "Non-Authoritative Information": "Non-Authoritative Information", + "Not Acceptable": "Not Acceptable", + "Not Extended": "Not Extended", + "Not Found": "Not Found", + "Not Implemented": "Not Implemented", + "Not Modified": "Not Modified", + "of": "of", + "OK": "OK", + "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.", + "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.": "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.", + "Open": "Open", + "Open in a current window": "Open in a current window", + "Open in a new window": "Open in a new window", + "Open in a parent frame": "Open in a parent frame", + "Open in the topmost frame": "Open in the topmost frame", + "Open on the website": "Open on the website", + "Origin Is Unreachable": "Origin Is Unreachable", + "Page Expired": "Page Expired", + "Pagination Navigation": "Pagination Navigation", + "Partial Content": "Partial Content", + "Password": "Password", + "Payload Too Large": "Payload Too Large", + "Payment Required": "Payment Required", + "Permanent Redirect": "Permanent Redirect", + "Please click the button below to verify your email address.": "Please click the button below to verify your email address.", + "Precondition Failed": "Precondition Failed", + "Precondition Required": "Precondition Required", + "Preview": "Preview", + "Price": "Price", + "Processing": "Processing", + "Profile": "Profile", + "Profile Information": "Profile Information", + "Proxy Authentication Required": "Proxy Authentication Required", + "Railgun Error": "Railgun Error", + "Range Not Satisfiable": "Range Not Satisfiable", + "Regards": "Regards", + "Register": "Register", + "Remember me": "Remember me", + "Request Header Fields Too Large": "Request Header Fields Too Large", + "Request Timeout": "Request Timeout", + "Resend Verification Email": "Resend Verification Email", + "Reset Content": "Reset Content", + "Reset Password": "Reset Password", + "Reset Password Notification": "Reset Password Notification", + "Restore": "Restore", + "Restore :name": "Restore :name", + "results": "results", + "Retry With": "Retry With", + "Save": "Save", + "Save & Close": "Save & Close", + "Save & Return": "Save & Return", + "Save :name": "Save :name", + "Saved.": "Saved.", + "Search": "Search", + "Search :name": "Search :name", + "See Other": "See Other", + "Select": "Select", + "Select All": "Select All", + "Send": "Send", + "Server Error": "Server Error", + "Service Unavailable": "Service Unavailable", + "Session Has Expired": "Session Has Expired", + "Settings": "Settings", + "Show": "Show", + "Show :name": "Show :name", + "Show All": "Show All", + "Showing": "Showing", + "Solve": "Solve", + "SSL Handshake Failed": "SSL Handshake Failed", + "Submit": "Submit", + "Subscribe": "Subscribe", + "Switch": "Switch", + "Switch To Role": "Switch To Role", + "Switching Protocols": "Switching Protocols", + "Tag": "Tag", + "Tags": "Tags", + "Temporary Redirect": "Temporary Redirect", + "Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another.": "Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another.", + "The given data was invalid.": "The given data was invalid.", + "The response is not a streamed response.": "The response is not a streamed response.", + "The response is not a view.": "The response is not a view.", + "This is a secure area of the application. Please confirm your password before continuing.": "This is a secure area of the application. Please confirm your password before continuing.", + "This password reset link will expire in :count minutes.": "This password reset link will expire in :count minutes.", + "to": "to", + "Toggle navigation": "Toggle navigation", + "Too Early": "Too Early", + "Too Many Requests": "Too Many Requests", + "Translate": "Translate", + "Translate It": "Translate It", + "Unauthorized": "Unauthorized", + "Unavailable For Legal Reasons": "Unavailable For Legal Reasons", + "Unknown Error": "Unknown Error", + "Unpack": "Unpack", + "Unprocessable Entity": "Unprocessable Entity", + "Unsubscribe": "Unsubscribe", + "Unsupported Media Type": "Unsupported Media Type", + "Up": "Up", + "Update": "Update", + "Update :name": "Update :name", + "Update Password": "Update Password", + "Update your account's profile information and email address.": "Update your account's profile information and email address.", + "Upgrade Required": "Upgrade Required", + "URI Too Long": "URI Too Long", + "Use Proxy": "Use Proxy", + "User": "User", + "Variant Also Negotiates": "Variant Also Negotiates", + "Verify Email Address": "Verify Email Address", + "View": "View", + "View :name": "View :name", + "Web Server is Down": "Web Server is Down", + "Whoops!": "Whoops!", + "Yes": "Yes", + "You are receiving this email because we received a password reset request for your account.": "You are receiving this email because we received a password reset request for your account.", + "You're logged in!": "You're logged in!", + "Your email address is unverified.": "Your email address is unverified." +} \ No newline at end of file diff --git a/lang/en/actions.php b/lang/en/actions.php new file mode 100644 index 0000000..301ef56 --- /dev/null +++ b/lang/en/actions.php @@ -0,0 +1,111 @@ + 'Accept', + 'action' => 'Action', + 'actions' => 'Actions', + 'add' => 'Add', + 'admin' => 'Admin', + 'agree' => 'Agree', + 'archive' => 'Archive', + 'assign' => 'Assign', + 'attach' => 'Attach', + 'browse' => 'Browse', + 'cancel' => 'Cancel', + 'choose' => 'Choose', + 'choose_file' => 'Choose File', + 'choose_image' => 'Choose Image', + 'click_to_copy' => 'Click to copy', + 'close' => 'Close', + 'collapse' => 'Collapse', + 'collapse_all' => 'Collapse All', + 'comment' => 'Comment', + 'confirm' => 'Confirm', + 'connect' => 'Connect', + 'create' => 'Create', + 'delete' => 'Delete', + 'detach' => 'Detach', + 'details' => 'Details', + 'disable' => 'Disable', + 'discard' => 'Discard', + 'done' => 'Done', + 'down' => 'Down', + 'duplicate' => 'Duplicate', + 'edit' => 'Edit', + 'enable' => 'Enable', + 'expand' => 'Expand', + 'expand_all' => 'Expand All', + 'explanation' => 'Explanation', + 'export' => 'Export', + 'file' => 'File', + 'files' => 'Files', + 'go_home' => 'Go Home', + 'hide' => 'Hide', + 'home' => 'Home', + 'image' => 'Image', + 'Impersonate' => 'Impersonate', + 'Impersonation' => 'Impersonation', + 'import' => 'Import', + 'introduction' => 'Introduction', + 'like' => 'Like', + 'load' => 'Load', + 'localize' => 'Localize', + 'named' => [ + 'add' => 'Add :name', + 'choose' => 'Choose :name', + 'create' => 'Create :name', + 'delete' => 'Delete :name', + 'duplicate' => 'Duplicate :name', + 'edit' => 'Edit :name', + 'hide' => 'Hide :name', + 'import' => 'Import :name', + 'new' => 'New :name', + 'restore' => 'Restore :name', + 'save' => 'Save :name', + 'search' => 'Search :name', + 'show' => 'Show :name', + 'update' => 'Update :name', + 'view' => 'View :name', + ], + 'new' => 'New', + 'no' => 'No', + 'open' => 'Open', + 'open_website' => 'Open on the website', + 'preview' => 'Preview', + 'price' => 'Price', + 'restore' => 'Restore', + 'save' => 'Save', + 'save_and_close' => 'Save & Close', + 'save_and_return' => 'Save & Return', + 'search' => 'Search', + 'select' => 'Select', + 'select_all' => 'Select All', + 'send' => 'Send', + 'settings' => 'Settings', + 'show' => 'Show', + 'show_all' => 'Show All', + 'solve' => 'Solve', + 'submit' => 'Submit', + 'subscribe' => 'Subscribe', + 'switch' => 'Switch', + 'switch_to_role' => 'Switch To Role', + 'tag' => 'Tag', + 'tags' => 'Tags', + 'target_link' => [ + 'blank' => 'Open in a new window', + 'parent' => 'Open in a parent frame', + 'self' => 'Open in a current window', + 'top' => 'Open in the topmost frame', + ], + 'translate' => 'Translate', + 'translate_it' => 'Translate It', + 'unpack' => 'Unpack', + 'unsubscribe' => 'Unsubscribe', + 'up' => 'Up', + 'update' => 'Update', + 'user' => 'User', + 'view' => 'View', + 'yes' => 'Yes', +]; diff --git a/lang/en/auth.php b/lang/en/auth.php new file mode 100644 index 0000000..4337d09 --- /dev/null +++ b/lang/en/auth.php @@ -0,0 +1,9 @@ + 'These credentials do not match our records.', + 'password' => 'The password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', +]; diff --git a/lang/en/http-statuses.php b/lang/en/http-statuses.php new file mode 100644 index 0000000..f2488f4 --- /dev/null +++ b/lang/en/http-statuses.php @@ -0,0 +1,84 @@ + 'Unknown Error', + '100' => 'Continue', + '101' => 'Switching Protocols', + '102' => 'Processing', + '200' => 'OK', + '201' => 'Created', + '202' => 'Accepted', + '203' => 'Non-Authoritative Information', + '204' => 'No Content', + '205' => 'Reset Content', + '206' => 'Partial Content', + '207' => 'Multi-Status', + '208' => 'Already Reported', + '226' => 'IM Used', + '300' => 'Multiple Choices', + '301' => 'Moved Permanently', + '302' => 'Found', + '303' => 'See Other', + '304' => 'Not Modified', + '305' => 'Use Proxy', + '307' => 'Temporary Redirect', + '308' => 'Permanent Redirect', + '400' => 'Bad Request', + '401' => 'Unauthorized', + '402' => 'Payment Required', + '403' => 'Forbidden', + '404' => 'Not Found', + '405' => 'Method Not Allowed', + '406' => 'Not Acceptable', + '407' => 'Proxy Authentication Required', + '408' => 'Request Timeout', + '409' => 'Conflict', + '410' => 'Gone', + '411' => 'Length Required', + '412' => 'Precondition Failed', + '413' => 'Payload Too Large', + '414' => 'URI Too Long', + '415' => 'Unsupported Media Type', + '416' => 'Range Not Satisfiable', + '417' => 'Expectation Failed', + '418' => 'I\'m a teapot', + '419' => 'Session Has Expired', + '421' => 'Misdirected Request', + '422' => 'Unprocessable Entity', + '423' => 'Locked', + '424' => 'Failed Dependency', + '425' => 'Too Early', + '426' => 'Upgrade Required', + '428' => 'Precondition Required', + '429' => 'Too Many Requests', + '431' => 'Request Header Fields Too Large', + '444' => 'Connection Closed Without Response', + '449' => 'Retry With', + '451' => 'Unavailable For Legal Reasons', + '499' => 'Client Closed Request', + '500' => 'Internal Server Error', + '501' => 'Not Implemented', + '502' => 'Bad Gateway', + '503' => 'Maintenance Mode', + '504' => 'Gateway Timeout', + '505' => 'HTTP Version Not Supported', + '506' => 'Variant Also Negotiates', + '507' => 'Insufficient Storage', + '508' => 'Loop Detected', + '509' => 'Bandwidth Limit Exceeded', + '510' => 'Not Extended', + '511' => 'Network Authentication Required', + '520' => 'Unknown Error', + '521' => 'Web Server is Down', + '522' => 'Connection Timed Out', + '523' => 'Origin Is Unreachable', + '524' => 'A Timeout Occurred', + '525' => 'SSL Handshake Failed', + '526' => 'Invalid SSL Certificate', + '527' => 'Railgun Error', + '598' => 'Network Read Timeout Error', + '599' => 'Network Connect Timeout Error', + 'unknownError' => 'Unknown Error', +]; diff --git a/lang/en/pagination.php b/lang/en/pagination.php new file mode 100644 index 0000000..c493712 --- /dev/null +++ b/lang/en/pagination.php @@ -0,0 +1,8 @@ + 'Next »', + 'previous' => '« Previous', +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php new file mode 100644 index 0000000..1130b8d --- /dev/null +++ b/lang/en/passwords.php @@ -0,0 +1,11 @@ + 'Your password has been reset.', + '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 email address.', +]; diff --git a/lang/en/validation.php b/lang/en/validation.php new file mode 100644 index 0000000..dae4192 --- /dev/null +++ b/lang/en/validation.php @@ -0,0 +1,236 @@ + '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 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.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute must have between :min and :max items.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute must be between :min and :max.', + 'string' => 'The :attribute must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + '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.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + '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.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'enum' => 'The :attribute field value is not in the list of allowed values.', + 'exists' => 'The :attribute field value does not exist.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute must have more than :value items.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'numeric' => 'The :attribute must be greater than :value.', + 'string' => 'The :attribute must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute must have :value items or more.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The :attribute field value is not in the list of allowed values.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute must have less than :value items.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'numeric' => 'The :attribute must be less than :value.', + 'string' => 'The :attribute must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute must not have more than :value items.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute must have at least :min items.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'numeric' => 'The :attribute must be at least :min.', + 'string' => 'The :attribute must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute must be a multiple of :value.', + 'not_in' => 'The :attribute field must not be in the list.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are 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_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'array' => 'The :attribute must contain :size items.', + 'file' => 'The :attribute must be :size kilobytes.', + 'numeric' => 'The :attribute must be :size.', + 'string' => 'The :attribute must be :size characters.', + ], + '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 timezone.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute must be a valid URL.', + 'uuid' => 'The :attribute must be a valid UUID.', + 'attributes' => [ + 'address' => 'address', + 'affiliate_url' => 'affiliate URL', + 'age' => 'age', + 'amount' => 'amount', + 'area' => 'area', + 'available' => 'available', + 'birthday' => 'birthday', + 'body' => 'body', + 'city' => 'city', + 'content' => 'content', + 'country' => 'country', + 'created_at' => 'created at', + 'creator' => 'creator', + 'currency' => 'currency', + 'current_password' => 'current password', + 'customer' => 'customer', + 'date' => 'date', + 'date_of_birth' => 'date of birth', + 'day' => 'day', + 'deleted_at' => 'deleted at', + 'description' => 'description', + 'district' => 'district', + 'duration' => 'duration', + 'email' => 'email', + 'excerpt' => 'excerpt', + 'filter' => 'filter', + 'first_name' => 'first name', + 'gender' => 'gender', + 'group' => 'group', + 'hour' => 'hour', + 'image' => 'image', + 'is_subscribed' => 'is subscribed', + 'items' => 'items', + 'last_name' => 'last name', + 'lesson' => 'lesson', + 'line_address_1' => 'line address 1', + 'line_address_2' => 'line address 2', + 'message' => 'message', + 'middle_name' => 'middle name', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'national_code' => 'national code', + 'number' => 'number', + 'password' => 'password', + 'password_confirmation' => 'password confirmation', + 'phone' => 'phone', + 'photo' => 'photo', + 'postal_code' => 'postal code', + 'preview' => 'preview', + 'price' => 'price', + 'product_id' => 'product ID', + 'product_uid' => 'product UID', + 'product_uuid' => 'product UUID', + 'promo_code' => 'promo code', + 'province' => 'province', + 'quantity' => 'quantity', + 'recaptcha_response_field' => 'recaptcha response field', + 'remember' => 'remember', + 'restored_at' => 'restored at', + 'result_text_under_image' => 'result text under image', + 'role' => 'role', + 'second' => 'second', + 'sex' => 'sex', + 'shipment' => 'shipment', + 'short_text' => 'short text', + 'size' => 'size', + 'state' => 'state', + 'street' => 'street', + 'student' => 'student', + 'subject' => 'subject', + 'teacher' => 'teacher', + 'terms' => 'terms', + 'test_description' => 'test description', + 'test_locale' => 'test locale', + 'test_name' => 'test name', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'updated_at' => 'updated at', + 'user' => 'user', + 'username' => 'username', + 'year' => 'year', + ], +]; diff --git a/lang/fr.json b/lang/fr.json index 06196eb..d26889e 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -1,110 +1,312 @@ { + "(and :count more error)": "(et :count erreur en plus)", + "(and :count more errors)": "(et :count erreurs en plus)", + "A level refers to a specific position or rank that represents the seniority or authority of someone within the organization.": "Un niveau fait référence à un poste ou à un rang spécifique qui représente l'ancienneté ou l'autorité d'une personne au sein de l'organisation.", + "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.", + "A new verification link has been sent to your email address.": "Un nouveau lien de vérification a été envoyé à votre adresse e-mail.", + "A role refers to a specific job or position that an individual performs within your organization.": "Un rôle fait référence à un travail ou à un poste spécifique qu'une personne occupe au sein de votre organisation.", + "A Timeout Occurred": "Un dépassement de délai s'est produit", + "Accept": "Accepter", + "Accepted": "Accepté", + "Action": "Action", + "Actions": "Actions", "Add": "Ajouter", + "Add :name": "Ajouter :name", "Add a level": "Ajouter un niveau", "Add a new level": "Ajouter un nouveau niveau", "Add a new role": "Ajouter un nouveau rôle", "Add a role": "Ajouter un rôle", - "A level refers to a specific position or rank that represents the seniority or authority of someone within the organization.": "Un niveau fait référence à un poste ou à un rang spécifique qui représente l'ancienneté ou l'autorité d'une personne au sein de l'organisation.", + "Admin": "Administrateur", + "Agree": "Accepter", + "All rights reserved.": "Tous droits réservés.", "All the levels": "Tous les niveaux", "All the levels in your organization": "Tous les niveaux de votre organisation", "All the roles in your organization": "Tous les rôles dans votre organisation", - "Already registered?": "Déjà enregistré?", - "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 fournie lors de l'inscription.", - "A new verification link has been sent to your email address.": "Un nouveau lien de vérification a été envoyé à votre adresse e-mail.", - "Are you sure you want to delete your account?": "Êtes-vous sûr de vouloir supprimer votre compte ?", + "Already registered?": "Déjà inscrit·e ?", + "Already Reported": "Déjà rapporté", + "Archive": "Archive", + "Are you sure you want to delete your account?": "Êtes-vous sûr·e de vouloir supprimer votre compte ?", "Are you sure you want to proceed? This can not be undone.": "Êtes-vous sur de vouloir continuer? Ça ne peut pas être annulé.", - "A role refers to a specific job or position that an individual performs within your organization.": "Un rôle fait référence à un travail ou à un poste spécifique qu'une personne occupe au sein de votre organisation.", - "As an administrator, you can...": "En tant qu'administrateur, vous pouvez...", "As a user, you can...": "En tant qu'utilisateur, vous pouvez...", + "As an administrator, you can...": "En tant qu'administrateur, vous pouvez...", + "Assign": "Attribuer", + "Attach": "Attacher", "Back": "Retour", + "Bad Gateway": "Mauvaise passerelle", + "Bad Request": "Mauvaise Demande", + "Bandwidth Limit Exceeded": "Limite de bande passante dépassée", "Be part of something unique.": "Faites partie de quelque chose d'unique.", + "Browse": "Parcourir", "Cancel": "Annuler", "Changes saved": "Changements sauvegardés", "Chief Executive Officer": "Directeur général", + "Choose": "Choisir", + "Choose :name": "Choisissez :name", + "Choose File": "Choisir le fichier", + "Choose Image": "Choisir une image", "Click here to re-send the verification email.": "Cliquez ici pour renvoyer l'e-mail de vérification.", + "Click to copy": "Cliquez pour copier", + "Client Closed Request": "Demande fermée du client", + "Close": "Fermer", + "Collapse": "Effondrement", + "Collapse All": "Réduire tout", + "Comment": "Commentaire", "Company": "Entreprise", "Confirm": "Confirmer", - "Confirm Password": "Confirmez le mot de passe", + "Confirm Password": "Confirmer le mot de passe", + "Conflict": "Conflit", + "Connect": "Connecter", + "Connection Closed Without Response": "Connexion fermée sans réponse", + "Connection Timed Out": "La connexion a expiré", + "Continue": "Continuer", + "Create": "Créer", + "Create :name": "Créer :name", + "Created": "Créé", "Current Password": "Mot de passe actuel", "Dashboard": "Tableau de bord", - "Data Analyst\/Scientist": "Analyste de données\/scientifique", + "Data Analyst/Scientist": "Analyste de données/scientifique", "Delete": "Supprimer", + "Delete :name": "Supprimer :name", "Delete Account": "Supprimer le compte", + "Detach": "Détacher", + "Details": "Détails", "DevOps Engineer": "Ingénieur DevOps", - "Edit": "Modifier", + "Disable": "Désactiver", + "Discard": "Jeter", + "Done": "Fait", + "Down": "Vers le bas", + "Duplicate": "Dupliquer", + "Duplicate :name": "Duplicata : nom", + "Edit": "Éditer", + "Edit :name": "Modifier :name", "Edit a level": "Modifier un niveau", "Edit a role": "Modifier un rôle", "Edit level": "Modifier le niveau", "Edit role": "Modifier le rôle", "Email": "E-mail", "Email password reset link": "Réinitialiser le du mot de passe", + "Email Password Reset Link": "Lien de réinitialisation du mot de passe", + "Enable": "Activer", "English": "Anglais", - "Ensure your account is using a long, random password to stay secure.": "Assurez-vous que votre compte utilise un mot de passe long et aléatoire pour rester en sécurité.", + "Ensure your account is using a long, random password to stay secure.": "Assurez-vous d'utiliser un mot de passe long et aléatoire pour sécuriser votre compte.", + "Expand": "Développer", + "Expand All": "Développer tout", + "Expectation Failed": "Échec de l'attente", + "Explanation": "Explication", + "Export": "Exporter", + "Failed Dependency": "Dépendance échouée", + "File": "Déposer", + "Files": "Des dossiers", "First name": "Prénom", - "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é? Aucun problème. Indiquez-nous simplement votre adresse e-mail et nous vous enverrons par e-mail un lien de réinitialisation de mot de passe qui vous permettra d'en choisir un nouveau.", + "Forbidden": "Interdit", + "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.", + "Found": "A trouvé", "French": "Français", + "Gateway Timeout": "Délai d'attente de la passerelle", + "Go Home": "Aller à l'accueil", + "Go to page :page": "Aller à la page :page", + "Gone": "Disparu", + "Hello!": "Bonjour !", + "Hide": "Cacher", + "Hide :name": "Masquer :name", + "Home": "Maison", + "HTTP Version Not Supported": "Version HTTP non prise en charge", + "I'm a teapot": "Je suis une théière", + "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 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're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si vous avez des difficultés à cliquer sur le bouton \":actionText\", copiez et collez l'URL ci-dessous\ndans votre navigateur Web :", + "IM Used": "J'ai l'habitude", + "Image": "Image", + "Impersonate": "Utiliser un autre compte", + "Impersonation": "Imitation", + "Import": "Importer", + "Import :name": "Importer :name", + "Insufficient Storage": "Espace insuffisant", "Intermediate": "Intermédiaire", + "Internal Server Error": "Erreur Interne du Serveur", + "Introduction": "Introduction", + "Invalid JSON was returned from the route.": "Un JSON non valide a été renvoyé par la route.", + "Invalid SSL Certificate": "Certificat SSL invalide", "It's great to have you back!": "C'est super de vous revoir !", "It's great to have you back!.": "C'est super de vous revoir !", "Junior": "Junior", "Last name": "Nom de famille", + "Length Required": "Longueur requise", "Levels": "Niveaux", + "Like": "Comme", + "Load": "Charger", + "Localize": "Localiser", + "Locked": "Fermé à clef", "Log in": "Se connecter", "Log out": "Déconnexion", + "Log Out": "Se déconnecter", + "Login": "Connexion", + "Logout": "Déconnexion", + "Loop Detected": "Boucle détectée", + "Maintenance Mode": "Mode de Maintenance", "Manage levels": "Gérer les niveaux", "Manage roles": "Gérer les rôles", "Manage your profile": "Gérer votre profil", "Messages": "messages", + "Method Not Allowed": "Méthode Non Autorisée", + "Misdirected Request": "Demande mal dirigée", + "Moved Permanently": "Déplacé de façon permanente", + "Multi-Status": "Multi-statut", + "Multiple Choices": "Choix multiples", "Name": "Nom", "Name of your organization": "Nom de votre organisation", - "New Password": "nouveau mot de passe", + "Network Authentication Required": "Authentification réseau requise", + "Network Connect Timeout Error": "Erreur de délai de connexion réseau", + "Network Read Timeout Error": "Erreur de délai de lecture réseau", + "New": "Nouveau", + "New :name": "Nouveau :name", + "New Password": "Nouveau mot de passe", + "No": "Non", + "No Content": "Pas de contenu", "No levels have been defined yet": "Aucun niveau n'a encore été défini", "No roles have been defined yet": "Aucun rôle n'a encore été défini", - "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Une fois votre compte supprimé, toutes ses ressources et données seront définitivement supprimées. Avant de supprimer votre compte, veuillez télécharger toutes les données ou informations que vous souhaitez conserver.", - "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.": "Une fois votre compte supprimé, toutes ses ressources et données seront définitivement supprimées. Veuillez saisir votre mot de passe pour confirmer que vous souhaitez supprimer définitivement votre compte.", + "Non-Authoritative Information": "Informations non autorisées", + "Not Acceptable": "Pas acceptable", + "Not Extended": "Non prolongé", + "Not Found": "Non trouvé", + "Not Implemented": "Pas mis en œuvre", + "Not Modified": "Non modifié", + "of": "de", + "OK": "OK", + "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Une fois que votre compte est supprimé, toutes vos données sont supprimées définitivement. Avant de supprimer votre compte, veuillez télécharger vos données.", + "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.": "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.", + "Open": "Ouvrir", + "Open in a current window": "Ouvrir dans une fenêtre actuelle", + "Open in a new window": "Ouvrir dans une nouvelle fenêtre", + "Open in a parent frame": "Ouvrir dans un frame parent", + "Open in the topmost frame": "Ouvrir dans le cadre le plus haut", + "Open on the website": "Ouvert sur le site", + "Origin Is Unreachable": "L'origine est inaccessible", + "Page Expired": "Page expirée", + "Pagination Navigation": "Pagination", + "Partial Content": "Contenu partiel", "Password": "Mot de passe", + "Payload Too Large": "Charge utile trop grande", + "Payment Required": "Paiement requis", + "Permanent Redirect": "Redirection permanente", + "Please click the button below to verify your email address.": "Veuillez cliquer sur le bouton ci-dessous pour vérifier votre adresse e-mail :", + "Precondition Failed": "La précondition a échoué", + "Precondition Required": "Condition préalable requise", + "Preview": "Aperçu", + "Price": "Prix", + "Processing": "En traitement", "Product Manager": "Chef de produit", "Profile": "Profil", - "Profile Information": "Informations sur le profil", + "Profile Information": "Informations du profil", "Project Manager": "Chef de projet", "Projects": "Projets", + "Proxy Authentication Required": "Authentification proxy requise", "Quality Assurance Engineer": "Ingénieur Assurance Qualité", - "Register": "Créer le compte", - "Remember me": "Souviens-toi de moi", + "Railgun Error": "Erreur de Railgun", + "Range Not Satisfiable": "Plage non satisfaisante", + "Regards": "Cordialement", + "Register": "Inscription", + "Remember me": "Se souvenir de moi", + "Request Header Fields Too Large": "Champs d'en-tête de requête trop grands", + "Request Timeout": "Délai d'expiration de la demande", "Resend Verification Email": "Renvoyer l'e-mail de vérification", - "Reset Password": "réinitialiser le mot de passe", + "Reset Content": "Réinitialiser le contenu", + "Reset Password": "Réinitialisation du mot de passe", + "Reset Password Notification": "Notification de réinitialisation du mot de passe", + "Restore": "Restaurer", + "Restore :name": "Restaurer :name", + "results": "résultats", + "Retry With": "Réessayer avec", "Roles": "Rôles", - "Sales\/Account Manager": "Responsable des ventes\/comptes", + "Sales/Account Manager": "Responsable des ventes/comptes", "Save": "Sauvegarder", - "Saved.": "Enregistré.", + "Save & Close": "Sauvegarder et fermer", + "Save & Return": "Enregistrer et retourner", + "Save :name": "Économisez :name", + "Saved.": "Sauvegardé.", "Scrum Master": "Maître Scrum", + "Search": "Rechercher", + "Search :name": "Recherche :name", + "See Other": "Voir autre", + "Select": "Sélectionner", + "Select All": "Tout sélectionner", + "Send": "Envoyer", "Senior": "Senior", + "Server Error": "Erreur serveur", + "Service Unavailable": "Service indisponible", + "Session Has Expired": "La session a expiré", "Settings": "Paramètres", + "Show": "Montrer", + "Show :name": "Afficher :name", + "Show All": "Afficher tout", + "Showing": "Montrant", "Software Engineer": "Ingénieur logiciel", + "Solve": "Résoudre", + "SSL Handshake Failed": "Échec de la prise de contact SSL", "Staff": "Principal", + "Submit": "Soumettre", + "Subscribe": "S'abonner", + "Switch": "Changer", + "Switch To Role": "Passer au rôle", + "Switching Protocols": "Protocoles de commutation", "System Administrator": "Administrateur du système", + "Tag": "Étiqueter", + "Tags": "Mots clés", "Technical Support Engineer": "Ingénieur du Support Technique", "Technical Writer": "Rédacteur technique", - "Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another.": "Merci pour l'enregistrement! Avant de commencer, pourriez-vous vérifier votre adresse e-mail en cliquant sur le lien que nous venons de vous envoyer par e-mail ? Si vous n'avez pas reçu l'e-mail, nous vous en enverrons volontiers un autre.", + "Temporary Redirect": "Redirection temporaire", + "Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another.": "Merci de vous être inscrit(e) ! Avant de commencer, veuillez vérifier votre adresse e-mail en cliquant sur le lien que nous venons de vous envoyer. Si vous n'avez pas reçu cet e-mail, nous vous en enverrons un nouveau avec plaisir.", "The element has been deleted": "L'élément a été supprimé", + "The given data was invalid.": "La donnée renseignée est incorrecte.", "The level has been created": "Le niveau a été créé", + "The response is not a streamed response.": "La réponse n'est pas une réponse diffusée.", + "The response is not a view.": "La réponse n'est pas une vue.", "The role has been created": "Le rôle a été créé", "This action can not be done": "Cette action ne peut pas être effectuée", - "This is a secure area of the application. Please confirm your password before continuing.": "Il s'agit d'une zone sécurisée de l'application. Veuillez confirmer votre mot de passe avant de continuer.", - "UI\/UX Designer": "Concepteur UI\/UX", + "This is a secure area of the application. Please confirm your password before continuing.": "Ceci est une zone sécurisée de l'application. Veuillez confirmer votre mot de passe avant de continuer.", + "This password reset link will expire in :count minutes.": "Ce lien de réinitialisation du mot de passe expirera dans :count minutes.", + "to": "à", + "Toggle navigation": "Afficher / masquer le menu de navigation", + "Too Early": "Trop tôt", + "Too Many Requests": "Trop de requêtes", + "Translate": "Traduire", + "Translate It": "Traduis le", + "UI/UX Designer": "Concepteur UI/UX", + "Unauthorized": "Non autorisé", + "Unavailable For Legal Reasons": "Indisponible pour des raisons légales", + "Unknown Error": "Erreur inconnue", + "Unpack": "Déballer", + "Unprocessable Entity": "Entité non traitable", + "Unsubscribe": "Se désabonner", + "Unsupported Media Type": "Type de support non supporté", + "Up": "En haut", + "Update": "Mettre à jour", + "Update :name": "Mise à jour :name", "Update Password": "Mettre à jour le mot de passe", - "Update your account's profile information and email address.": "Mettez à jour les informations de profil et l'adresse e-mail de votre compte.", + "Update your account's profile information and email address.": "Modifier le profil associé à votre compte ainsi que votre adresse e-mail.", "Update your profile": "Mettre à jour votre profil", + "Upgrade Required": "Mise à niveau requise", + "URI Too Long": "URI trop long", + "Use Proxy": "Utiliser un proxy", + "User": "Utilisateur", + "Variant Also Negotiates": "La variante négocie également", + "Verify Email Address": "Vérifier l'adresse e-mail", + "View": "Vue", + "View :name": "Voir :name", + "We will send you a verification email, and won't spam you.": "Nous vous enverrons un e-mail de vérification et ne vous enverrons pas de spam.", + "Web Server is Down": "Le serveur Web est en panne", "Welcome back to Shelter": "Bon retour à Shelter", "Welcome to Shelter": "Bienvenue à Shelter", - "We will send you a verification email, and won't spam you.": "Nous vous enverrons un e-mail de vérification et ne vous enverrons pas de spam.", "What is the name of the level?": "Quel est le nom du niveau ?", "What is the name of the role?": "Quel est le nom du rôle ?", "What is the name of this new level?": "Quel est le nom de ce nouveau niveau ?", "What is the name of this new role?": "Quel est le nom de ce nouveau rôle ?", "What is the name of this role?": "Quel est le nom de ce rôle ?", - "You're logged in!": "Vous êtes connecté !", + "Whoops!": "Oups !", + "Yes": "Oui", + "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 do not have permission to do this action.": "Vous n'êtes pas autorisé à effectuer cette action.", + "You're logged in!": "Vous êtes connecté·e !", "Your email address is unverified.": "Votre adresse e-mail n'est pas vérifiée." -} +} \ No newline at end of file diff --git a/lang/fr/actions.php b/lang/fr/actions.php new file mode 100644 index 0000000..61237ac --- /dev/null +++ b/lang/fr/actions.php @@ -0,0 +1,111 @@ + 'Accepter', + 'action' => 'Action', + 'actions' => 'Actions', + 'add' => 'Ajouter', + 'admin' => 'Administrateur', + 'agree' => 'Accepter', + 'archive' => 'Archive', + 'assign' => 'Attribuer', + 'attach' => 'Attacher', + 'browse' => 'Parcourir', + 'cancel' => 'Annuler', + 'choose' => 'Choisir', + 'choose_file' => 'Choisir le fichier', + 'choose_image' => 'Choisir une image', + 'click_to_copy' => 'Cliquez pour copier', + 'close' => 'Fermer', + 'collapse' => 'Effondrement', + 'collapse_all' => 'Réduire tout', + 'comment' => 'Commentaire', + 'confirm' => 'Confirmer', + 'connect' => 'Connecter', + 'create' => 'Créer', + 'delete' => 'Supprimer', + 'detach' => 'Détacher', + 'details' => 'Détails', + 'disable' => 'Désactiver', + 'discard' => 'Jeter', + 'done' => 'Fait', + 'down' => 'Vers le bas', + 'duplicate' => 'Dupliquer', + 'edit' => 'Modifier', + 'enable' => 'Activer', + 'expand' => 'Développer', + 'expand_all' => 'Développer tout', + 'explanation' => 'Explication', + 'export' => 'Exporter', + 'file' => 'Déposer', + 'files' => 'Des dossiers', + 'go_home' => 'Rentrer chez soi', + 'hide' => 'Cacher', + 'home' => 'Maison', + 'image' => 'Image', + 'Impersonate' => 'Imiter', + 'Impersonation' => 'Imitation', + 'import' => 'Importer', + 'introduction' => 'Introduction', + 'like' => 'Comme', + 'load' => 'Charger', + 'localize' => 'Localiser', + 'named' => [ + 'add' => 'Ajouter :name', + 'choose' => 'Choisissez :name', + 'create' => 'Créer :name', + 'delete' => 'Supprimer :name', + 'duplicate' => 'Duplicata : nom', + 'edit' => 'Modifier :name', + 'hide' => 'Masquer :name', + 'import' => 'Importer :name', + 'new' => 'Nouveau :name', + 'restore' => 'Restaurer :name', + 'save' => 'Économisez :name', + 'search' => 'Recherche :name', + 'show' => 'Afficher :name', + 'update' => 'Mise à jour :name', + 'view' => 'Voir :name', + ], + 'new' => 'Nouveau', + 'no' => 'Non', + 'open' => 'Ouvrir', + 'open_website' => 'Ouvert sur le site', + 'preview' => 'Aperçu', + 'price' => 'Prix', + 'restore' => 'Restaurer', + 'save' => 'Sauvegarder', + 'save_and_close' => 'Sauvegarder et fermer', + 'save_and_return' => 'Enregistrer et retourner', + 'search' => 'Recherche', + 'select' => 'Sélectionner', + 'select_all' => 'Tout sélectionner', + 'send' => 'Envoyer', + 'settings' => 'Paramètres', + 'show' => 'Montrer', + 'show_all' => 'Afficher tout', + 'solve' => 'Résoudre', + 'submit' => 'Soumettre', + 'subscribe' => 'S\'abonner', + 'switch' => 'Changer', + 'switch_to_role' => 'Passer au rôle', + 'tag' => 'Étiqueter', + 'tags' => 'Mots clés', + 'target_link' => [ + 'blank' => 'Ouvrir dans une nouvelle fenêtre', + 'parent' => 'Ouvrir dans un frame parent', + 'self' => 'Ouvrir dans une fenêtre actuelle', + 'top' => 'Ouvrir dans le cadre le plus haut', + ], + 'translate' => 'Traduire', + 'translate_it' => 'Traduis le', + 'unpack' => 'Déballer', + 'unsubscribe' => 'Se désabonner', + 'up' => 'En haut', + 'update' => 'Mise à jour', + 'user' => 'Utilisateur', + 'view' => 'Voir', + 'yes' => 'Oui', +]; diff --git a/lang/fr/auth.php b/lang/fr/auth.php index 1936236..7b21d00 100644 --- a/lang/fr/auth.php +++ b/lang/fr/auth.php @@ -1,7 +1,9 @@ '', - 'password' => '', - 'throttle' => '', + 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', + 'password' => 'Le mot de passe est incorrect', + 'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', ]; diff --git a/lang/fr/http-statuses.php b/lang/fr/http-statuses.php new file mode 100644 index 0000000..8c4a138 --- /dev/null +++ b/lang/fr/http-statuses.php @@ -0,0 +1,84 @@ + 'Erreur inconnue', + '100' => 'Continuer', + '101' => 'Protocoles de commutation', + '102' => 'En traitement', + '200' => 'OK', + '201' => 'Créé', + '202' => 'Accepté', + '203' => 'Informations non autorisées', + '204' => 'Pas de contenu', + '205' => 'Réinitialiser le contenu', + '206' => 'Contenu partiel', + '207' => 'Multi-statut', + '208' => 'Déjà rapporté', + '226' => 'J\'ai l\'habitude', + '300' => 'Choix multiples', + '301' => 'Déplacé de façon permanente', + '302' => 'A trouvé', + '303' => 'Voir autre', + '304' => 'Non modifié', + '305' => 'Utiliser un proxy', + '307' => 'Redirection temporaire', + '308' => 'Redirection permanente', + '400' => 'Mauvaise Demande', + '401' => 'Non autorisé', + '402' => 'Paiement Requis', + '403' => 'Interdit', + '404' => 'Page non trouvée', + '405' => 'Méthode Non Autorisée', + '406' => 'Pas acceptable', + '407' => 'Authentification proxy requise', + '408' => 'Délai d\'expiration de la demande', + '409' => 'Conflit', + '410' => 'Disparu', + '411' => 'Longueur requise', + '412' => 'La précondition a échoué', + '413' => 'Charge utile trop grande', + '414' => 'URI trop long', + '415' => 'Type de support non supporté', + '416' => 'Plage non satisfaisante', + '417' => 'Échec de l\'attente', + '418' => 'Je suis une théière', + '419' => 'La session a expiré', + '421' => 'Demande mal dirigée', + '422' => 'Entité non traitable', + '423' => 'Fermé à clef', + '424' => 'Dépendance échouée', + '425' => 'Trop tôt', + '426' => 'Mise à niveau requise', + '428' => 'Condition préalable requise', + '429' => 'Trop de demandes', + '431' => 'Champs d\'en-tête de requête trop grands', + '444' => 'Connexion fermée sans réponse', + '449' => 'Réessayer avec', + '451' => 'Indisponible pour des raisons légales', + '499' => 'Demande fermée du client', + '500' => 'Erreur Interne du Serveur', + '501' => 'Pas mis en œuvre', + '502' => 'Mauvaise passerelle', + '503' => 'Mode de Maintenance', + '504' => 'Délai d\'attente de la passerelle', + '505' => 'Version HTTP non prise en charge', + '506' => 'La variante négocie également', + '507' => 'Espace insuffisant', + '508' => 'Boucle détectée', + '509' => 'Limite de bande passante dépassée', + '510' => 'Non prolongé', + '511' => 'Authentification réseau requise', + '520' => 'Erreur inconnue', + '521' => 'Le serveur Web est en panne', + '522' => 'La connexion a expiré', + '523' => 'L\'origine est inaccessible', + '524' => 'Un dépassement de délai s\'est produit', + '525' => 'Échec de la prise de contact SSL', + '526' => 'Certificat SSL invalide', + '527' => 'Erreur de Railgun', + '598' => 'Erreur de délai de lecture réseau', + '599' => 'Erreur de délai de connexion réseau', + 'unknownError' => 'Erreur inconnue', +]; diff --git a/lang/fr/pagination.php b/lang/fr/pagination.php new file mode 100644 index 0000000..78d8fd9 --- /dev/null +++ b/lang/fr/pagination.php @@ -0,0 +1,8 @@ + 'Suivant »', + 'previous' => '« Précédent', +]; diff --git a/lang/fr/passwords.php b/lang/fr/passwords.php new file mode 100644 index 0000000..0a6eeac --- /dev/null +++ b/lang/fr/passwords.php @@ -0,0 +1,11 @@ + '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 patienter avant 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/lang/fr/validation.php b/lang/fr/validation.php new file mode 100644 index 0000000..cde293f --- /dev/null +++ b/lang/fr/validation.php @@ -0,0 +1,236 @@ + 'Le champ :attribute doit être accepté.', + 'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.', + '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.', + 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.', + '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' => [ + 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', + 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', + ], + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'can' => 'Le champ :attribute contient une valeur non autorisée.', + 'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.', + 'current_password' => 'Le mot de passe est incorrect.', + '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.', + 'decimal' => 'Le champ :attribute doit comporter :decimal décimales.', + 'declined' => 'Le champ :attribute doit être décliné.', + 'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.', + '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.', + 'doesnt_end_with' => 'Le champ :attribute ne doit pas finir avec une des valeurs suivantes : :values.', + 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer avec une des valeurs suivantes : :values.', + '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.', + 'extensions' => 'Le champ :attribute doit avoir l\'une des extensions suivantes : :values.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute doit avoir une valeur.', + 'gt' => [ + 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', + ], + 'gte' => [ + 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', + ], + 'hex_color' => 'Le champ :attribute doit être une couleur hexadécimale valide.', + '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.', + 'lowercase' => 'Le champ :attribute doit être en minuscules.', + 'lt' => [ + 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', + ], + 'lte' => [ + 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', + '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 pas contenir plus que :max éléments.', + 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', + 'numeric' => 'La valeur de :attribute ne peut pas être supérieure à :max.', + 'string' => 'Le texte de :attribute ne peut pas contenir plus de :max caractères.', + ], + 'max_digits' => 'Le champ :attribute ne doit pas avoir plus de :max chiffres.', + 'mimes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'min' => [ + 'array' => 'Le tableau :attribute doit contenir au moins :min éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :min kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', + 'string' => 'Le texte de :attribute doit contenir au moins :min caractères.', + ], + 'min_digits' => 'Le champ :attribute doit avoir au moins :min chiffres.', + 'missing' => 'Le champ :attribute doit être manquant.', + 'missing_if' => 'Le champ :attribute doit être manquant quand :other a la valeur :value.', + 'missing_unless' => 'Le champ :attribute doit être manquant sauf si :other a la valeur :value.', + 'missing_with' => 'Le champ :attribute doit être manquant quand :values est présent.', + 'missing_with_all' => 'Le champ :attribute doit être manquant quand :values sont présents.', + 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', + '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' => [ + 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', + 'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.', + 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', + 'symbols' => 'Le champ :attribute doit contenir au moins un symbole.', + 'uncompromised' => 'La valeur du champ :attribute est apparue dans une fuite de données. Veuillez choisir une valeur différente.', + ], + 'present' => 'Le champ :attribute doit être présent.', + 'present_if' => 'Le champ :attribute doit être présent lorsque :other est :value.', + 'present_unless' => 'Le champ :attribute doit être présent sauf si :other vaut :value.', + 'present_with' => 'Le champ :attribute doit être présent lorsque :values est présent.', + 'present_with_all' => 'Le champ :attribute doit être présent lorsque :values sont présents.', + 'prohibited' => 'Le champ :attribute est interdit.', + 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', + '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.', + '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_if_accepted' => 'Le champ :attribute est obligatoire quand le champ :other a été accepté.', + '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' => [ + 'array' => 'Le tableau :attribute doit contenir :size éléments.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être :size.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', + ], + '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.', + 'ulid' => 'Le champ :attribute doit être un ULID 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é.', + 'uppercase' => 'Le champ :attribute doit être en majuscules.', + 'url' => 'Le format de l\'URL de :attribute n\'est pas valide.', + 'uuid' => 'Le champ :attribute doit être un UUID valide', + 'attributes' => [ + 'address' => 'adresse', + 'affiliate_url' => 'URL d\'affiliation', + 'age' => 'âge', + 'amount' => 'montant', + 'area' => 'zone', + 'available' => 'disponible', + 'birthday' => 'anniversaire', + 'body' => 'corps', + 'city' => 'ville', + 'content' => 'contenu', + 'country' => 'pays', + 'created_at' => 'créé à', + 'creator' => 'créateur', + 'currency' => 'devise', + 'current_password' => 'mot de passe actuel', + 'customer' => 'client', + 'date' => 'Date', + 'date_of_birth' => 'date de naissance', + 'day' => 'jour', + 'deleted_at' => 'supprimé à', + 'description' => 'la description', + 'district' => 'quartier', + 'duration' => 'durée', + 'email' => 'adresse e-mail', + 'excerpt' => 'extrait', + 'filter' => 'filtre', + 'first_name' => 'prénom', + 'gender' => 'genre', + 'group' => 'groupe', + 'hour' => 'heure', + 'image' => 'image', + 'is_subscribed' => 'est abonné', + 'items' => 'articles', + 'last_name' => 'nom', + 'lesson' => 'leçon', + 'line_address_1' => 'ligne d\'adresse 1', + 'line_address_2' => 'ligne d\'adresse 2', + 'message' => 'message', + 'middle_name' => 'deuxième prénom', + 'minute' => 'minute', + 'mobile' => 'portable', + 'month' => 'mois', + 'name' => 'nom', + 'national_code' => 'code national', + 'number' => 'numéro', + 'password' => 'mot de passe', + 'password_confirmation' => 'confirmation du mot de passe', + 'phone' => 'téléphone', + 'photo' => 'photo', + 'postal_code' => 'code postal', + 'preview' => 'Aperçu', + 'price' => 'prix', + 'product_id' => 'identifiant du produit', + 'product_uid' => 'UID du produit', + 'product_uuid' => 'UUID du produit', + 'promo_code' => 'code promo', + 'province' => 'région', + 'quantity' => 'quantité', + 'recaptcha_response_field' => 'champ de réponse recaptcha', + 'remember' => 'se souvenir', + 'restored_at' => 'restauré à', + 'result_text_under_image' => 'texte de résultat sous l\'image', + 'role' => 'rôle', + 'second' => 'seconde', + 'sex' => 'sexe', + 'shipment' => 'expédition', + 'short_text' => 'texte court', + 'size' => 'taille', + 'state' => 'état', + 'street' => 'rue', + 'student' => 'étudiant', + 'subject' => 'sujet', + 'teacher' => 'professeur', + 'terms' => 'conditions', + 'test_description' => 'description test', + 'test_locale' => 'localisation test', + 'test_name' => 'nom test', + 'text' => 'texte', + 'time' => 'heure', + 'title' => 'titre', + 'updated_at' => 'mis à jour à', + 'user' => 'utilisateur', + 'username' => 'nom d\'utilisateur', + 'year' => 'année', + ], +]; diff --git a/package.json b/package.json index 557cd2c..c66d383 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "alpinejs": "^3.13.5", "charts.css": "^1.1.0", "htmx.org": "^1.9.10", + "laravel-precognition-alpine": "^0.5.4", "tailwindcss": "^3.4.1" }, "lint-staged": { diff --git a/resources/js/app.js b/resources/js/app.js index 0c759a7..061eeb4 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -4,10 +4,11 @@ import '../css/app.css'; import Alpine from 'alpinejs'; import Clipboard from "@ryangjchandler/alpine-clipboard"; import htmx from 'htmx.org'; +import Precognition from 'laravel-precognition-alpine'; window.Alpine = Alpine; window.htmx = htmx; Alpine.plugin(Clipboard); -window.Alpine = Alpine; +Alpine.plugin(Precognition); Alpine.start(); diff --git a/resources/views/auth/confirm-password.blade.php b/resources/views/auth/confirm-password.blade.php index 8e11a01..e75494d 100644 --- a/resources/views/auth/confirm-password.blade.php +++ b/resources/views/auth/confirm-password.blade.php @@ -1,5 +1,5 @@ - -
+ +
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
@@ -29,4 +29,4 @@
-
+ diff --git a/resources/views/auth/forgot-password.blade.php b/resources/views/auth/forgot-password.blade.php index e3a0281..fcd19d3 100644 --- a/resources/views/auth/forgot-password.blade.php +++ b/resources/views/auth/forgot-password.blade.php @@ -1,11 +1,11 @@ - +
{{ __('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.') }}
- +
@@ -33,4 +33,4 @@
-
+ diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 8049096..af97b40 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -10,7 +10,7 @@ - +
@csrf diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 88151fc..4f3e87d 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -9,7 +9,13 @@

Créez un compte pour sauvegarder vos noms préférés, créer des listes et demander le vote de vos bien-aimés.

- + @csrf
@@ -19,16 +25,17 @@ + + Nous vous enverrons un email de vérification, et ne vous spammerons jamais. On déteste le spam nous aussi. - -
@@ -38,11 +45,13 @@ - + @@ -52,16 +61,16 @@ - -
- + {{ __('Créez le compte') }} diff --git a/resources/views/auth/reset-password.blade.php b/resources/views/auth/reset-password.blade.php index aecb8c3..4a59219 100644 --- a/resources/views/auth/reset-password.blade.php +++ b/resources/views/auth/reset-password.blade.php @@ -1,63 +1,79 @@ - - + + +
+ Réinitialisez votre mot de passe +
+ + @csrf - - - - -
- - - -
+
+ + - -
- - - -
+ +
+ + + +
+ + +
+ + + + +
- -
- + +
+ - + - + +
-
- +
+ {{ __('Reset Password') }}
- + diff --git a/resources/views/components/input-validation.blade.php b/resources/views/components/input-validation.blade.php new file mode 100644 index 0000000..05b541e --- /dev/null +++ b/resources/views/components/input-validation.blade.php @@ -0,0 +1,7 @@ +@props(['form']) + + diff --git a/resources/views/components/primary-button.blade.php b/resources/views/components/primary-button.blade.php index 0a4360b..c949165 100644 --- a/resources/views/components/primary-button.blade.php +++ b/resources/views/components/primary-button.blade.php @@ -1,3 +1,5 @@ - diff --git a/resources/views/components/textarea.blade.php b/resources/views/components/textarea.blade.php index 578768c..4c935a4 100644 --- a/resources/views/components/textarea.blade.php +++ b/resources/views/components/textarea.blade.php @@ -13,6 +13,6 @@ placeholder="{{ $placeholder }}" {!! $attributes->merge([ 'class' => - 'h-auto px-3 py-2 border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 placeholder:text-neutral-400 dark:focus:border-indigo-600 focus:ring-1 dark:focus:ring-indigo-600 rounded-md shadow-sm ' . $height, + 'h-auto px-3 py-2 border-gray-300 focus:border-indigo-500 placeholder:text-neutral-400 focus:ring-1 rounded-md shadow-sm ' . $height, ]) !!}>{{ $slot }}
diff --git a/resources/views/profile/partials/update-password-form.blade.php b/resources/views/profile/partials/update-password-form.blade.php index 62af6d2..47c5e4d 100644 --- a/resources/views/profile/partials/update-password-form.blade.php +++ b/resources/views/profile/partials/update-password-form.blade.php @@ -9,9 +9,13 @@

-
+ @csrf @method('put') @@ -21,10 +25,11 @@ - +
@@ -33,10 +38,12 @@ - + +
@@ -45,14 +52,17 @@ - +
- {{ __('Save') }} + + {{ __('Save') }} + @if (session('status') === 'password-updated')

-
+ @csrf
diff --git a/resources/views/user/lists/edit.blade.php b/resources/views/user/lists/edit.blade.php index 8525053..ad4ae4f 100644 --- a/resources/views/user/lists/edit.blade.php +++ b/resources/views/user/lists/edit.blade.php @@ -20,69 +20,9 @@
-
- - @csrf - @method('PUT') - -
-

Éditez la liste de prénoms

-
- - -
- - - - - -
- - -
- - - {{ old('description', $list['description']) }} - - -
- - @if (auth()->user()->is_administrator) -
- -
- -
-
- @endif - - -
- Retour - -
- - Sauvegarder - -
-
-
- -
+ @include('user.lists.partials.list-form', [ + 'list' => $list, + 'listCategories' => $listCategories, + ])
diff --git a/resources/views/user/lists/new.blade.php b/resources/views/user/lists/new.blade.php index 607b92c..786b77e 100644 --- a/resources/views/user/lists/new.blade.php +++ b/resources/views/user/lists/new.blade.php @@ -20,101 +20,8 @@
-
-
- @csrf - -
-

Créez une liste de prénoms

-
- - -
- - - - - -
- - -
- - - {{ old('description') }} - - -
- - -
-

{{ __('Genre de la liste') }}

-
-
-
- -
-
- -

{{ __('La liste contient des prénoms de garçons.') }}

-
-
-
-
- -
-
- -

{{ __('La liste contient des prénoms de filles.') }}

-
-
-
-
- -
-
- -

{{ __('La liste contient des prénoms mixtes.') }}

-
-
-
-
- - @if (auth()->user()->is_administrator) -
- -
- -
-
- @endif - - -
- {{ __('Back') }} - -
- - Sauvegarder - -
-
-
- -
+ @include('user.lists.partials.list-form', [ + 'listCategories' => $listCategories, + ])
diff --git a/resources/views/user/lists/partials/list-form.blade.php b/resources/views/user/lists/partials/list-form.blade.php new file mode 100644 index 0000000..8aed3ea --- /dev/null +++ b/resources/views/user/lists/partials/list-form.blade.php @@ -0,0 +1,128 @@ +@props([ + 'list' => [], + 'listCategories' => [], +]) + +
+
+ @csrf + @if ($list) + @method('PUT') + @endif + +
+

+ @if ($list) + Éditez la liste de prénoms + @else + Créez une liste de prénoms + @endif +

+
+ + +
+ + + + + +
+ + +
+ + + + + +
+ + +
+

{{ __('Genre de la liste') }}

+
+
+
+ +
+
+ +

{{ __('La liste contient des prénoms de garçons.') }}

+
+
+
+
+ +
+
+ +

{{ __('La liste contient des prénoms de filles.') }}

+
+
+
+
+ +
+
+ +

{{ __('La liste contient des prénoms mixtes.') }}

+
+
+
+ +
+ + @if (auth()->user()->is_administrator) +
+ +
+ +
+ +
+ @endif + + +
+ {{ __('Back') }} + +
+ + Sauvegarder + +
+
+
+ + diff --git a/routes/auth.php b/routes/auth.php index c10e1e9..655d619 100644 --- a/routes/auth.php +++ b/routes/auth.php @@ -9,13 +9,15 @@ use App\Http\Controllers\Auth\PasswordResetLinkController; use App\Http\Controllers\Auth\RegisteredUserController; use App\Http\Controllers\Auth\VerifyEmailController; +use Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests; use Illuminate\Support\Facades\Route; Route::middleware('guest')->group(function (): void { Route::get('register', [RegisteredUserController::class, 'create']) ->name('register'); - Route::post('register', [RegisteredUserController::class, 'store']); + Route::post('register', [RegisteredUserController::class, 'store']) + ->middleware([HandlePrecognitiveRequests::class]); Route::get('login', [AuthenticatedSessionController::class, 'create']) ->name('login'); @@ -26,12 +28,14 @@ ->name('password.request'); Route::post('forgot-password', [PasswordResetLinkController::class, 'store']) + ->middleware([HandlePrecognitiveRequests::class]) ->name('password.email'); Route::get('reset-password/{token}', [NewPasswordController::class, 'create']) ->name('password.reset'); Route::post('reset-password', [NewPasswordController::class, 'store']) + ->middleware([HandlePrecognitiveRequests::class]) ->name('password.store'); }); @@ -52,7 +56,9 @@ Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']); - Route::put('password', [PasswordController::class, 'update'])->name('password.update'); + Route::put('password', [PasswordController::class, 'update']) + ->middleware([HandlePrecognitiveRequests::class]) + ->name('password.update'); Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) ->name('logout'); diff --git a/routes/web.php b/routes/web.php index 3839984..e1fb40b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,13 +19,16 @@ use App\Http\Controllers\StoreNoteForNameInListController; use App\Http\Controllers\TermsController; use App\Http\Controllers\UserNameController; +use Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests; use Illuminate\Support\Facades\Route; Route::get('partage/{uuid}', [ShareController::class, 'show'])->name('share.show'); Route::get('', [HomeController::class, 'index'])->name('home.index'); Route::get('recherche', [SearchController::class, 'index'])->name('search.index'); -Route::post('recherche', [SearchController::class, 'post'])->middleware(['throttle:search'])->name('search.post'); +Route::post('recherche', [SearchController::class, 'post']) + ->middleware(['throttle:search', HandlePrecognitiveRequests::class]) + ->name('search.post'); Route::get('prenoms', [NameController::class, 'index'])->name('name.index'); Route::get('conditions', [TermsController::class, 'index'])->name('terms.index'); @@ -59,36 +62,36 @@ // set the note for the given name Route::get('notes/{id}', [UserNameController::class, 'show'])->name('user.name.show'); Route::get('notes/{id}/edit', [UserNameController::class, 'edit'])->name('user.name.edit'); - Route::put('notes/{id}', [UserNameController::class, 'update'])->name('user.name.update'); + Route::put('notes/{id}', [UserNameController::class, 'update'])->name('user.name.update')->middleware([HandlePrecognitiveRequests::class]); Route::delete('notes/{id}', [UserNameController::class, 'destroy'])->name('user.name.destroy'); }); Route::get('favoris', [FavoriteController::class, 'index'])->name('favorite.index'); Route::get('listes', [ListController::class, 'index'])->name('list.index'); Route::get('listes/nouveau', [ListController::class, 'new'])->name('list.new'); - Route::post('listes', [ListController::class, 'store'])->name('list.store'); + Route::post('listes', [ListController::class, 'store'])->name('list.store')->middleware([HandlePrecognitiveRequests::class]); Route::middleware(['list'])->group(function (): void { Route::get('listes/{liste}/edition', [ListController::class, 'edit'])->name('list.edit'); - Route::put('listes/{liste}', [ListController::class, 'update'])->name('list.update'); + Route::put('listes/{liste}', [ListController::class, 'update'])->name('list.update')->middleware([HandlePrecognitiveRequests::class]); Route::get('listes/{liste}/suppression', [ListController::class, 'delete'])->name('list.delete'); Route::get('listes/{liste}/system', [ListSystemController::class, 'update'])->name('list.system.update'); Route::delete('listes/{liste}', [ListController::class, 'destroy'])->name('list.destroy'); - Route::post('listes/{liste}/search', [ListSearchController::class, 'index'])->middleware(['throttle:search'])->name('list.search.index'); - Route::post('listes/{liste}/prenoms/{id}', [ListNameController::class, 'store'])->name('list.name.store'); + Route::post('listes/{liste}/search', [ListSearchController::class, 'index'])->middleware(['throttle:search', HandlePrecognitiveRequests::class])->name('list.search.index'); + Route::post('listes/{liste}/prenoms/{id}', [ListNameController::class, 'store'])->middleware([HandlePrecognitiveRequests::class])->name('list.name.store'); Route::get('listes/{liste}/prenoms', [ListNameController::class, 'index'])->name('list.name.index'); Route::delete('listes/{liste}/prenoms/{id}', [ListNameController::class, 'destroy'])->name('list.name.destroy'); Route::put('listes/{liste}/prenoms/{id}/set', [NameController::class, 'storeNameInList'])->name('name.list.store'); Route::get('listes/{liste}/prenoms/{id}/note/update', [StoreNoteForNameInListController::class, 'edit'])->name('name.list.edit'); - Route::put('listes/{liste}/prenoms/{id}/note', [StoreNoteForNameInListController::class, 'update'])->name('name.list.update'); + Route::put('listes/{liste}/prenoms/{id}/note', [StoreNoteForNameInListController::class, 'update'])->middleware([HandlePrecognitiveRequests::class])->name('name.list.update'); }); Route::get('profil', [ProfileController::class, 'show'])->name('profile.show'); Route::put('profil', [ProfileController::class, 'update'])->name('profile.update'); - Route::put('profil/nom', [ProfileController::class, 'name'])->name('profile.name'); + // Route::put('profil/nom', [ProfileController::class, 'name'])->name('profile.name'); Route::delete('profil', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); diff --git a/yarn.lock b/yarn.lock index 7e5e612..45d43ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -681,7 +681,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.6.7": +"axios@npm:^1.4.0, axios@npm:^1.6.7": version: 1.6.7 resolution: "axios@npm:1.6.7" dependencies: @@ -1852,6 +1852,28 @@ __metadata: languageName: node linkType: hard +"laravel-precognition-alpine@npm:^0.5.4": + version: 0.5.4 + resolution: "laravel-precognition-alpine@npm:0.5.4" + dependencies: + laravel-precognition: "npm:0.5.4" + lodash-es: "npm:^4.17.21" + peerDependencies: + alpinejs: ^3.12.1 + checksum: 4a5b4d9f3e58db50586f7ab42766287d5e2b9fd3f6fa9df12cf358059bdc32081ba6b4c25e0439922292da9153cfdd5ce5dd2f4d2f055d0377042286d282c4c2 + languageName: node + linkType: hard + +"laravel-precognition@npm:0.5.4": + version: 0.5.4 + resolution: "laravel-precognition@npm:0.5.4" + dependencies: + axios: "npm:^1.4.0" + lodash-es: "npm:^4.17.21" + checksum: 382d7952a4f775caa3811600d86ef4337ac1bf2c88620daa5a36a07e803a541ca3160442b977daa592885e10e024d29f57704639118577ef4f95dfe95707ae55 + languageName: node + linkType: hard + "laravel-vite-plugin@npm:^1.0.1": version: 1.0.1 resolution: "laravel-vite-plugin@npm:1.0.1" @@ -1940,6 +1962,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 + languageName: node + linkType: hard + "lodash.castarray@npm:^4.4.0": version: 4.4.0 resolution: "lodash.castarray@npm:4.4.0" @@ -2758,6 +2787,7 @@ __metadata: eslint-plugin-simple-import-sort: "npm:^10.0.0" htmx.org: "npm:^1.9.10" husky: "npm:^9.0.11" + laravel-precognition-alpine: "npm:^0.5.4" laravel-vite-plugin: "npm:^1.0.1" lint-staged: "npm:^15.2.2" postcss: "npm:^8.4.33"