This commit is contained in:
Gregory Letellier
2023-11-28 12:13:50 +01:00
commit d5b3ccabd9
537 changed files with 32146 additions and 0 deletions

18
.editorconfig Normal file
View File

@@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4

61
.env.example Normal file
View File

@@ -0,0 +1,61 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
FILESYSTEM_DISK=local
CACHE_DRIVER=database
CACHE_CONNECTION=mysql
QUEUE_DRIVER=sync
SESSION_DRIVER=database
SESSION_CONNECTION=mysql
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
VITE_APP_NAME="${APP_NAME}"
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

11
.gitattributes vendored Normal file
View File

@@ -0,0 +1,11 @@
* text=auto eol=lf
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore

20
.gitignore vendored Normal file
View File

@@ -0,0 +1,20 @@
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.env.production
.phpunit.result.cache
Homestead.json
Homestead.yaml
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode
composer.lock

66
README.md Normal file
View File

@@ -0,0 +1,66 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>
<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[WebReinvent](https://webreinvent.com/)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
- **[Jump24](https://jump24.co.uk)**
- **[Redberry](https://redberry.international/laravel/)**
- **[Active Logic](https://activelogic.com)**
- **[byte5](https://byte5.de)**
- **[OP.GG](https://op.gg)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

27
app/Console/Kernel.php Normal file
View File

@@ -0,0 +1,27 @@
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* Define the application's command schedule.
*/
protected function schedule(Schedule $schedule): void
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*/
protected function commands(): void
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Exceptions;
use Exception;
use App\Responses\BaseResponse;
class ApiException extends Exception {
protected $message;
protected $errorcode;
protected $code = 422;
public function __construct($code,$message) {
$this->errorcode = $code;
$this->message = $message;
}
public function render() {
$response = new BaseResponse();
$response->setMessage($this->message);
$response->setStatus($this->errorcode);
return response()->json($response, $this->code);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Contracts\Validation\Validator;
use App\Responses\BaseResponse;
class BaseException extends Exception {
protected $validator;
protected $code = 422;
public function __construct(Validator $validator) {
$this->validator = $validator;
}
public function render() {
$response = new BaseResponse();
$response->setMessage($this->validator->errors()->first());
$response->setStatus("KO");
return response()->json($response, $this->code);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* The list of the inputs that are never flashed to the session on validation exceptions.
*
* @var array<int, string>
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*/
public function register(): void
{
$this->reportable(function (Throwable $e) {
//
});
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
class AuthenticatedSessionController extends Controller
{
/**
* Display the login view.
*/
public function create(): View
{
return view('auth.login');
}
/**
* Handle an incoming authentication request.
*/
public function store(LoginRequest $request): RedirectResponse
{
$request->authenticate();
$request->session()->regenerate();
return redirect()->intended(RouteServiceProvider::HOME);
}
/**
* Destroy an authenticated session.
*/
public function destroy(Request $request): RedirectResponse
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;
use Illuminate\View\View;
class ConfirmablePasswordController extends Controller
{
/**
* Show the confirm password view.
*/
public function show(): View
{
return view('auth.confirm-password');
}
/**
* Confirm the user's password.
*/
public function store(Request $request): RedirectResponse
{
if (! Auth::guard('web')->validate([
'email' => $request->user()->email,
'password' => $request->password,
])) {
throw ValidationException::withMessages([
'password' => __('auth.password'),
]);
}
$request->session()->put('auth.password_confirmed_at', time());
return redirect()->intended(RouteServiceProvider::HOME);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class EmailVerificationNotificationController extends Controller
{
/**
* Send a new email verification notification.
*/
public function store(Request $request): RedirectResponse
{
if ($request->user()->hasVerifiedEmail()) {
return redirect()->intended(RouteServiceProvider::HOME);
}
$request->user()->sendEmailVerificationNotification();
return back()->with('status', 'verification-link-sent');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class EmailVerificationPromptController extends Controller
{
/**
* Display the email verification prompt.
*/
public function __invoke(Request $request): RedirectResponse|View
{
return $request->user()->hasVerifiedEmail()
? redirect()->intended(RouteServiceProvider::HOME)
: view('auth.verify-email');
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
use Illuminate\Validation\Rules;
use Illuminate\View\View;
class NewPasswordController extends Controller
{
/**
* Display the password reset view.
*/
public function create(Request $request): View
{
return view('auth.reset-password', ['request' => $request]);
}
/**
* Handle an incoming new password request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
'token' => ['required'],
'email' => ['required', 'email'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
// 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
// database. Otherwise we will parse the error and return the response.
$status = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user) use ($request) {
$user->forceFill([
'password' => Hash::make($request->password),
'remember_token' => Str::random(60),
])->save();
event(new PasswordReset($user));
}
);
// If the password was successfully reset, we will redirect the user back to
// the application's home authenticated view. If there is an error we can
// redirect them back to where they came from with their error message.
return $status == Password::PASSWORD_RESET
? redirect()->route('login')->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
class PasswordController extends Controller
{
/**
* Update the user's password.
*/
public function update(Request $request): RedirectResponse
{
$validated = $request->validateWithBag('updatePassword', [
'current_password' => ['required', 'current_password'],
'password' => ['required', Password::defaults(), 'confirmed'],
]);
$request->user()->update([
'password' => Hash::make($validated['password']),
]);
return back()->with('status', 'password-updated');
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Illuminate\View\View;
class PasswordResetLinkController extends Controller
{
/**
* Display the password reset link request view.
*/
public function create(): View
{
return view('auth.forgot-password');
}
/**
* Handle an incoming password reset link request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
'email' => ['required', 'email'],
]);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$status = Password::sendResetLink(
$request->only('email')
);
return $status == Password::RESET_LINK_SENT
? back()->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\View\View;
class RegisteredUserController extends Controller
{
/**
* Display the registration view.
*/
public function create(): View
{
return view('auth.register');
}
/**
* Handle an incoming registration request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
//'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
$user = User::create([
'name' => $request->email,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
event(new Registered($user));
Auth::login($user);
return redirect(RouteServiceProvider::HOME);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use Illuminate\Http\RedirectResponse;
class VerifyEmailController extends Controller
{
/**
* Mark the authenticated user's email address as verified.
*/
public function __invoke(EmailVerificationRequest $request): RedirectResponse
{
if ($request->user()->hasVerifiedEmail()) {
return redirect()->intended(RouteServiceProvider::HOME.'?verified=1');
}
if ($request->user()->markEmailAsVerified()) {
event(new Verified($request->user()));
}
return redirect()->intended(RouteServiceProvider::HOME.'?verified=1');
}
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, ValidatesRequests;
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class Home extends Controller
{
public function index(Request $request)
{
return view("dashboard");
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProfileUpdateRequest;
use App\Notifications\SendApiTokenNotification;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\View\View;
class ProfileController extends Controller
{
/**
* Display the user's profile form.
*/
public function edit(Request $request): View
{
return view('profile.edit', [
'user' => $request->user(),
]);
}
/**
* Generate new api token and sent it by mail
*/
public function newtoken(Request $request): RedirectResponse
{
$user = $request->user();
$token = $user->createToken("api_token")->plainTextToken;
$notif = new SendApiTokenNotification($token);
$user->notify($notif);
return Redirect::route('profile.edit')->with('status', 'profile-updated');
}
/**
* Update the user's profile information.
*/
public function update(ProfileUpdateRequest $request): RedirectResponse
{
$request->user()->fill($request->validated());
if ($request->user()->isDirty('email')) {
$request->user()->email_verified_at = null;
}
$request->user()->save();
return Redirect::route('profile.edit')->with('status', 'profile-updated');
}
/**
* Delete the user's account.
*/
public function destroy(Request $request): RedirectResponse
{
$request->validateWithBag('userDeletion', [
'password' => ['required', 'current_password'],
]);
$user = $request->user();
Auth::logout();
$user->delete();
$request->session()->invalidate();
$request->session()->regenerateToken();
return Redirect::to('/');
}
}

68
app/Http/Kernel.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array<int, class-string|string>
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's middleware aliases.
*
* Aliases may be used instead of class names to conveniently assign middleware to routes and groups.
*
* @var array<string, class-string|string>
*/
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*/
protected function redirectTo(Request $request): ?string
{
return $request->expectsJson() ? null : route('login');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next, string ...$guards): Response
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array<int, string>
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array<int, string|null>
*/
public function hosts(): array
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array<int, string>|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Routing\Middleware\ValidateSignature as Middleware;
class ValidateSignature extends Middleware
{
/**
* The names of the query string parameters that should be ignored.
*
* @var array<int, string>
*/
protected $except = [
// 'fbclid',
// 'utm_campaign',
// 'utm_content',
// 'utm_medium',
// 'utm_source',
// 'utm_term',
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Requests\Auth;
use Illuminate\Auth\Events\Lockout;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
class LoginRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules(): array
{
return [
'email' => ['required', 'string', 'email'],
'password' => ['required', 'string'],
];
}
/**
* Attempt to authenticate the request's credentials.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function authenticate(): void
{
$this->ensureIsNotRateLimited();
if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
'email' => trans('auth.failed'),
]);
}
RateLimiter::clear($this->throttleKey());
}
/**
* Ensure the login request is not rate limited.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function ensureIsNotRateLimited(): void
{
if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
return;
}
event(new Lockout($this));
$seconds = RateLimiter::availableIn($this->throttleKey());
throw ValidationException::withMessages([
'email' => trans('auth.throttle', [
'seconds' => $seconds,
'minutes' => ceil($seconds / 60),
]),
]);
}
/**
* Get the rate limiting throttle key for the request.
*/
public function throttleKey(): string
{
return Str::transliterate(Str::lower($this->input('email')).'|'.$this->ip());
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests;
use App\Models\User;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ProfileUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)],
];
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Listeners;
use App\Models\User;
use App\Notifications\SendApiTokenNotification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class UserMailVerified
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle($event)
{
$user = $event->user;
$token = $user->createToken("api_token")->plainTextToken;
$notif = new SendApiTokenNotification($token);
$user->notify($notif);
}
}

View File

@@ -0,0 +1,67 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Mail\Mailables\Attachment;
class SendApiTokenMail extends Mailable
{
use Queueable, SerializesModels;
public $token;
protected $notifiable;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($notifiable,$token)
{
$this->token = $token;
$this->notifiable = $notifiable;
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope()
{
return new Envelope(
from: new Address(config("mail.from.address"), config("mail.from.name")),
to: $this->notifiable->email,
subject: 'Votre token API',
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content()
{
return new Content(
view: 'mail.sendtoken',
);
}
/**
* Get the attachments for the message.
*
* @return array
*/
public function attachments()
{
return [];
}
}

45
app/Models/User.php Normal file
View File

@@ -0,0 +1,45 @@
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable implements MustVerifyEmail
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class SendApiTokenNotification extends Notification
{
use Queueable;
protected $token;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($token)
{
$this->token = $token;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject("Votre token api")
->greeting('Bonjour !')
->line('Votre token api.')
->line($this->token)
->line("Conservez précieusement ce token.")
->line('Merci d\'utiliser notre service.');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
//
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Providers;
// use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The model to policy mappings for the application.
*
* @var array<class-string, class-string>
*/
protected $policies = [
//
];
/**
* Register any authentication / authorization services.
*/
public function boot(): void
{
//
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
use App\Listeners\UserMailVerified;
class EventServiceProvider extends ServiceProvider
{
/**
* The event to listener mappings for the application.
*
* @var array<class-string, array<int, class-string>>
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
Verified::class => [
UserMailVerified::class,
],
];
/**
* Register any events for your application.
*/
public function boot(): void
{
//
}
/**
* Determine if events and listeners should be automatically discovered.
*/
public function shouldDiscoverEvents(): bool
{
return false;
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to your application's "home" route.
*
* Typically, users are redirected here after authentication.
*
* @var string
*/
public const HOME = '/';
/**
* Define your route model bindings, pattern filters, and other route configuration.
*/
public function boot(): void
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});
$this->routes(function () {
Route::middleware('api')
->prefix('api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->group(base_path('routes/web.php'));
});
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Responses;
use JsonSerializable;
class BaseResponse implements JsonSerializable {
protected $status;
protected $message;
public function jsonSerialize()
{
return [
'status' => strtoupper($this->status),
'message' => $this->message
];
}
private function init()
{
$this->status = "";
$this->message = "";
}
public function __construct()
{
$this->init();
}
/**
* Get the value of status
*/
public function getStatus()
{
return $this->status;
}
/**
* Set the value of status
*
* @return self
*/
public function setStatus($status)
{
$this->status = $status;
return $this;
}
/**
* Get the value of messages
*/
public function getMessage()
{
return $this->message;
}
/**
* Set the value of messages
*
* @return self
*/
public function setMessage($message)
{
$this->message = $message;
return $this;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\View\Components;
use Illuminate\View\Component;
use Illuminate\View\View;
class AppLayout extends Component
{
/**
* Get the view / contents that represents the component.
*/
public function render(): View
{
return view('layouts.app');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\View\Components;
use Illuminate\View\Component;
use Illuminate\View\View;
class GuestLayout extends Component
{
/**
* Get the view / contents that represents the component.
*/
public function render(): View
{
return view('layouts.guest');
}
}

53
artisan Normal file
View File

@@ -0,0 +1,53 @@
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any of our classes manually. It's great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);

55
bootstrap/app.php Normal file
View File

@@ -0,0 +1,55 @@
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
App\Http\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;

2
bootstrap/cache/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*
!.gitignore

72
composer.json Normal file
View File

@@ -0,0 +1,72 @@
{
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.1",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.3",
"laravel/tinker": "^2.8",
"stripe/stripe-php": "*"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",
"laravel/breeze": "^1.26",
"laravel/pint": "^1.0",
"laravel/sail": "^1.18",
"laravel-lang/attributes": "^2.2",
"laravel-lang/lang": "^12.17",
"laravel-lang/publisher": "^14.6",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^7.0",
"pestphp/pest": "^2.0",
"pestphp/pest-plugin-laravel": "^2.0",
"spatie/laravel-ignition": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true
}

188
config/app.php Normal file
View File

@@ -0,0 +1,188 @@
<?php
use Illuminate\Support\Facades\Facade;
use Illuminate\Support\ServiceProvider;
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'Laravel'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => (bool) env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => env('APP_TIMEZONE', 'UTC'),
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'fr',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'fr',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'fr_FR',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Maintenance Mode Driver
|--------------------------------------------------------------------------
|
| These configuration options determine the driver used to determine and
| manage Laravel's "maintenance mode" status. The "cache" driver will
| allow maintenance mode to be controlled across multiple machines.
|
| Supported drivers: "file", "cache"
|
*/
'maintenance' => [
'driver' => 'file',
// 'store' => 'redis',
],
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => ServiceProvider::defaultProviders()->merge([
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
])->toArray(),
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => Facade::defaultAliases()->merge([
// 'Example' => App\Facades\Example::class,
])->toArray(),
];

115
config/auth.php Normal file
View File

@@ -0,0 +1,115 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expiry time is the number of minutes that each reset token will be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
| The throttle setting is the number of seconds a user must wait before
| generating more password reset tokens. This prevents the user from
| quickly generating a very large amount of password reset tokens.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_reset_tokens',
'expire' => 60,
'throttle' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => 10800,
];

71
config/broadcasting.php Normal file
View File

@@ -0,0 +1,71 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "ably", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com',
'port' => env('PUSHER_PORT', 443),
'scheme' => env('PUSHER_SCHEME', 'https'),
'encrypted' => true,
'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
],
'client_options' => [
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
],
],
'ably' => [
'driver' => 'ably',
'key' => env('ABLY_KEY'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];

111
config/cache.php Normal file
View File

@@ -0,0 +1,111 @@
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
| Supported drivers: "apc", "array", "database", "file",
| "memcached", "redis", "dynamodb", "octane", "null"
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => env("CACHE_CONNECTION",null),
'lock_connection' => null,
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
'lock_path' => storage_path('framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache',
'lock_connection' => 'default',
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
'octane' => [
'driver' => 'octane',
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing the APC, database, memcached, Redis, or DynamoDB cache
| stores there might be other applications using the same cache. For
| that reason, you may prefix every cache key to avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),
];

34
config/cors.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Cross-Origin Resource Sharing (CORS) Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your settings for cross-origin resource sharing
| or "CORS". This determines what cross-origin operations may execute
| in web browsers. You are free to adjust these settings as needed.
|
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];

151
config/database.php Normal file
View File

@@ -0,0 +1,151 @@
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
// 'encrypt' => env('DB_ENCRYPT', 'yes'),
// 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer body of commands than a typical key-value system
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
],
];

76
config/filesystems.php Normal file
View File

@@ -0,0 +1,76 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DISK', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been set up for each driver as an example of the required values.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'throw' => false,
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
'throw' => false,
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
],
],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
*/
'links' => [
public_path('storage') => storage_path('app/public'),
],
];

54
config/hashing.php Normal file
View File

@@ -0,0 +1,54 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon", "argon2id"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 12),
'verify' => true,
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 65536,
'threads' => 1,
'time' => 4,
'verify' => true,
],
];

131
config/logging.php Normal file
View File

@@ -0,0 +1,131 @@
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
use Monolog\Processor\PsrLogMessageProcessor;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => [
'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
'trace' => false,
],
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
'replace_placeholders' => true,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
'replace_placeholders' => true,
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'),
],
'processors' => [PsrLogMessageProcessor::class],
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [
'stream' => 'php://stderr',
],
'processors' => [PsrLogMessageProcessor::class],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
'facility' => LOG_USER,
'replace_placeholders' => true,
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];

126
config/mail.php Normal file
View File

@@ -0,0 +1,126 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
| "postmark", "log", "array", "failover"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'url' => env('MAIL_URL'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN'),
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
// 'client' => [
// 'timeout' => 5,
// ],
],
'postmark' => [
'transport' => 'postmark',
// 'message_stream_id' => null,
// 'client' => [
// 'timeout' => 5,
// ],
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];

109
config/queue.php Normal file
View File

@@ -0,0 +1,109 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for every one. Here you may define a default connection.
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
'after_commit' => false,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
'block_for' => 0,
'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
],
/*
|--------------------------------------------------------------------------
| Job Batching
|--------------------------------------------------------------------------
|
| The following options configure the database and table that store job
| batching information. These options can be updated to any database
| connection and table which has been defined by your application.
|
*/
'batching' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'job_batches',
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];

83
config/sanctum.php Normal file
View File

@@ -0,0 +1,83 @@
<?php
use Laravel\Sanctum\Sanctum;
return [
/*
|--------------------------------------------------------------------------
| Stateful Domains
|--------------------------------------------------------------------------
|
| Requests from the following domains / hosts will receive stateful API
| authentication cookies. Typically, these should include your local
| and production domains which access your API via a frontend SPA.
|
*/
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
/*
|--------------------------------------------------------------------------
| Sanctum Guards
|--------------------------------------------------------------------------
|
| This array contains the authentication guards that will be checked when
| Sanctum is trying to authenticate a request. If none of these guards
| are able to authenticate the request, Sanctum will use the bearer
| token that's present on an incoming request for authentication.
|
*/
'guard' => ['web'],
/*
|--------------------------------------------------------------------------
| Expiration Minutes
|--------------------------------------------------------------------------
|
| This value controls the number of minutes until an issued token will be
| considered expired. This will override any values set in the token's
| "expires_at" attribute, but first-party sessions are not affected.
|
*/
'expiration' => null,
/*
|--------------------------------------------------------------------------
| Token Prefix
|--------------------------------------------------------------------------
|
| Sanctum can prefix new tokens in order to take advantage of numerous
| security scanning initiatives maintained by open source platforms
| that notify developers if they commit tokens into repositories.
|
| See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
|
*/
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
/*
|--------------------------------------------------------------------------
| Sanctum Middleware
|--------------------------------------------------------------------------
|
| When authenticating your first-party SPA with Sanctum you may need to
| customize some of the middleware Sanctum uses while processing the
| request. You may change the middleware listed below as required.
|
*/
'middleware' => [
'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,
'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
],
];

34
config/services.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
'scheme' => 'https',
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
];

201
config/session.php Normal file
View File

@@ -0,0 +1,201 @@
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION'),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| While using one of the framework's cache driven session backends you may
| list a cache store that should be used for these sessions. This value
| must match with one of the application's configured cache "stores".
|
| Affects: "apc", "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE'),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN'),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you when it can't be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" since this is a secure default value.
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => 'lax',
];

36
config/view.php Normal file
View File

@@ -0,0 +1,36 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];

1
database/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.sqlite*

View File

@@ -0,0 +1,41 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
*/
class UserFactory extends Factory
{
protected static ?string $password;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'remember_token' => Str::random(10),
];
}
/**
* Indicate that the model's email address should be unverified.
*/
public function unverified(): static
{
return $this->state(fn (array $attributes) => [
'email_verified_at' => null,
]);
}
}

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
}
};

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('password_reset_tokens', function (Blueprint $table) {
$table->string('email')->primary();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('password_reset_tokens');
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('failed_jobs', function (Blueprint $table) {
$table->id();
$table->string('uuid')->unique();
$table->text('connection');
$table->text('queue');
$table->longText('payload');
$table->longText('exception');
$table->timestamp('failed_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('failed_jobs');
}
};

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('personal_access_tokens', function (Blueprint $table) {
$table->id();
$table->morphs('tokenable');
$table->string('name');
$table->string('token', 64)->unique();
$table->text('abilities')->nullable();
$table->timestamp('last_used_at')->nullable();
$table->timestamp('expires_at')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('personal_access_tokens');
}
};

View File

@@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('sessions', function (Blueprint $table) {
$table->string('id')->primary();
$table->foreignId('user_id')->nullable()->index();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->longText('payload');
$table->integer('last_activity')->index();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sessions');
}
};

View File

@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('cache', function (Blueprint $table) {
$table->string('key')->primary();
$table->mediumText('value');
$table->integer('expiration');
});
Schema::create('cache_locks', function (Blueprint $table) {
$table->string('key')->primary();
$table->string('owner');
$table->integer('expiration');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('cache');
Schema::dropIfExists('cache_locks');
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('jobs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('payload');
$table->unsignedTinyInteger('attempts');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('jobs');
}
};

View File

@@ -0,0 +1,22 @@
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
}
}

74
lang/af.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(en nog :count foute)",
"(and :count more errors)": "(en nog :count foute)",
"A new verification link has been sent to the email address you provided during registration.": "'N Nuwe verifikasieskakel is gestuur na die e-posadres wat u tydens registrasie voorsien het.",
"A new verification link has been sent to your email address.": "'n Nuwe verifikasieskakel is na jou e-posadres gestuur.",
"All rights reserved.": "Alle regte voorbehou.",
"Already registered?": "Reeds geregistreer?",
"Are you sure you want to delete your account?": "Is jy seker jy wil jou rekening uitvee?",
"Cancel": "Kanselleer",
"Click here to re-send the verification email.": "Klik hier om die verifikasie-e-pos weer te stuur.",
"Confirm": "Bevestig",
"Confirm Password": "Bevestig Wagwoord",
"Current Password": "Huidige Wagwoord",
"Dashboard": "Paneelbord",
"Delete Account": "Verwyder rekening",
"Email": "E-pos",
"Email Password Reset Link": "E-pos wagwoord herstel skakel",
"Ensure your account is using a long, random password to stay secure.": "Maak seker dat u rekening 'n lang, ewekansige wagwoord gebruik om veilig te bly.",
"Forbidden": "Prohibido",
"Forgot your password?": "Het jy jou wagwoord vergeet?",
"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.": "Het jy jou wagwoord vergeet? Geen probleem. Laat weet u net u e-posadres en ons sal u 'n skakel vir die herstel van wagwoorde per e-pos stuur waarmee u 'n nuwe een kan kies.",
"Go to page :page": "Gaan na bladsy :page",
"Hello!": "Hallo!",
"If you did not create an account, no further action is required.": "As u nie 'n rekening geskep het nie, is geen verdere optrede nodig nie.",
"If you did not request a password reset, no further action is required.": "As u nie 'n wagwoordregstelling gevra het nie, is geen verdere optrede nodig nie.",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "As u sukkel om op die knoppie \":actionText\" te klik, kopieer en plak die URL hieronder in u webblaaier:",
"Invalid JSON was returned from the route.": "Ongeldige JSON is van die roete af teruggestuur.",
"Log in": "Teken in",
"Log Out": "Teken Uit",
"Login": "Teken aan",
"Logout": "Teken uit",
"Name": "Naam",
"New Password": "Nuwe Wagwoord",
"Not Found": "Nie gevind nie",
"of": "van",
"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.": "Sodra u rekening verwyder is, sal al sy bronne en data permanent uitgevee word. Voordat u u rekening verwyder, laai asseblief enige data of inligting af wat u wil behou.",
"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.": "Sodra jou rekening uitgevee is, sal al sy hulpbronne en data permanent uitgevee word. Voer asseblief jou wagwoord in om te bevestig dat jy jou rekening permanent wil uitvee.",
"Page Expired": "Bladsy het verval",
"Pagination Navigation": "Paginasie-navigasie",
"Password": "Wagwoord",
"Payment Required": "Betaling vereis",
"Please click the button below to verify your email address.": "Klik op die onderstaande knoppie om u e-posadres te verifieer.",
"Profile": "Profiel",
"Profile Information": "Profielinligting",
"Regards": "Groete",
"Register": "Registreer",
"Remember me": "Onthou my",
"Resend Verification Email": "Herstuur verifikasie e-pos",
"Reset Password": "Herstel wagwoord",
"Reset Password Notification": "Herstel wagwoord",
"results": "resultate",
"Save": "Stoor",
"Saved.": "Gestoor.",
"Server Error": "Bedienerprobleem",
"Service Unavailable": "Diens Onbeskikbaar",
"Showing": "Wys",
"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.": "Dankie vir die aanmelding! Kan u, voordat u begin het, u e-posadres verifieer deur op die skakel te klik wat ons so pas aan u gestuur het? As u nie die e-pos ontvang het nie, stuur ons u graag nog een.",
"The given data was invalid.": "Die gegewe data was ongeldig.",
"The response is not a streamed response.": "Die reaksie is nie 'n gestroomde reaksie nie.",
"The response is not a view.": "Die reaksie is nie 'n siening nie.",
"This is a secure area of the application. Please confirm your password before continuing.": "Dit is 'n veilige deel van die aansoek. Bevestig u wagwoord voordat u verder gaan.",
"This password reset link will expire in :count minutes.": "Hierdie skakel vir die herstel van u wagwoord sal verval oor :count minute.",
"to": "tot",
"Toggle navigation": "Skakel navigasie",
"Too Many Requests": "Te veel versoeke",
"Unauthorized": "Ongemagtigde",
"Update Password": "Wagwoord op te dateer",
"Update your account's profile information and email address.": "Dateer u rekening se profielinligting en e-posadres op.",
"Verify Email Address": "Bevestig e-posadres",
"Whoops!": "Oeps!!",
"You are receiving this email because we received a password reset request for your account.": "U ontvang hierdie e-pos omdat ons 'n versoek vir die herstel van wagwoord vir u rekening ontvang het.",
"You're logged in!": "Jy is aangemeld!",
"Your email address is unverified.": "Jou e-posadres is ongeverifieer."
}

9
lang/af/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'Hierdie verwysings stem nie ooreen met ons rekords nie.',
'password' => 'Die wagwoord is verkeerd.',
'throttle' => 'Te veel pogings om aan te meld. Probeer asseblief weer binne :seconds sekondes',
];

8
lang/af/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Volgende &raquo;',
'previous' => '&laquo; Vorige',
];

11
lang/af/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'U wagwoord is verstel!',
'sent' => 'Ons het u skakel vir die herstel van wagwoord per e-pos gestuur!',
'throttled' => 'Wag asseblief voordat u weer probeer.',
'token' => 'Hierdie wagwoordregstelling-token is ongeldig.',
'user' => 'Ons kan nie \'n gebruiker met daardie e-posadres vind nie.',
];

217
lang/af/validation.php Normal file
View File

@@ -0,0 +1,217 @@
<?php
declare(strict_types=1);
return [
'accepted' => 'Die :attribute moet aanvaar word.',
'accepted_if' => 'Die :attribute moet aanvaar word wanneer :other :value is.',
'active_url' => 'Die :attribute is nie \'n geldig URL.',
'after' => 'Die :attribute moet \'n datum wees na :date.',
'after_or_equal' => 'Die :attribute moet \'n datum wees na of gelyk aan :date.',
'alpha' => 'Die :attribute mag slegs letters bevat.',
'alpha_dash' => 'Die :attribute mag slegs letters, syfers, strepies en onderstrepe bevat.',
'alpha_num' => 'Die :attribute mag slegs letters en syfers bevat.',
'array' => 'Die :attribute moet \'n array wees.',
'ascii' => 'Die :attribute moet slegs enkelgreep alfanumeriese karakters en simbole bevat.',
'before' => 'Die :attribute moet datum voor :date wees.',
'before_or_equal' => 'Die :attribute Moet datum voor of gelyk aan :date wees.',
'between' => [
'array' => 'Die :attribute moet tussen :min en :max items hê.',
'file' => 'Die :attribute moet tussen :min en :max kilobytes wees.',
'numeric' => 'Die :attribute moet tussen :min en :max wees.',
'string' => 'Die :attribute moet tussen :min en :max karakters wees.',
],
'boolean' => 'Die :attribute veld moet waar of onwaar wees.',
'can' => 'Die :attribute-veld bevat \'n ongemagtigde waarde.',
'confirmed' => 'Die :attribute bevestiging stem nie ooreen nie.',
'current_password' => 'Die wagwoord is verkeerd.',
'date' => 'Die :attribute is nie geldige datum nie.',
'date_equals' => 'Die :attribute moet \'n datum wees wat gelyk is aan :date.',
'date_format' => 'Die :attribute stem nie ooreen met die formaat :format nie.',
'decimal' => 'Die :attribute moet :decimal desimale plekke hê.',
'declined' => 'Die :attribute moet geweier word.',
'declined_if' => 'Die :attribute moet geweier word wanneer :other :value is.',
'different' => 'Die :attribute en :other moet anders wees.',
'digits' => 'Die :attribute moet :digits syfers wees.',
'digits_between' => 'Die :attribute moet tussen :min en :max syfers wees.',
'dimensions' => 'Die :attribute het ongeldige beeldafmetings.',
'distinct' => 'Die :attribute veld het \'n duplikaatwaarde.',
'doesnt_end_with' => 'Die :attribute mag nie eindig met een van die volgende nie: :values.',
'doesnt_start_with' => 'Die :attribute mag nie met een van die volgende begin nie: :values.',
'email' => 'Die :attribute moet geldige epos adres wees.',
'ends_with' => 'Die :attribute moet eindig met een van die volgende: :values.',
'enum' => 'Die geselekteerde :attribute is ongeldig.',
'exists' => 'Die geselketeerde :attribute is ongeldig.',
'file' => 'Die :attribute moet \'n lêer wees.',
'filled' => 'Die :attribute veld \'n waarde moet hê.',
'gt' => [
'array' => 'Die :attribute moet meer hê as :value items.',
'file' => 'Die :attribute moet groter wees :value kilobytes.',
'numeric' => 'Die :attribute moet groter wees as :value.',
'string' => 'Die :attribute moet groter wees as :value karakters.',
],
'gte' => [
'array' => 'Die :attribute moet :value items hê of meer.',
'file' => 'Die :attribute moet groter wees as of gelyk wees :value kilobytes.',
'numeric' => 'Die :attribute moet groter wees of gelyk wees aan :value.',
'string' => 'Die :attribute moet groter wees as of gelyk wees :value characters.',
],
'image' => 'Die :attribute moet n foto wees.',
'in' => 'Die geselketeerde :attribute is ongeldig.',
'in_array' => 'Die :attribute veld bestaan nie in :other.',
'integer' => 'Die :attribute moet \'n getal wees.',
'ip' => 'Die :attribute moet geldige IP adres wees.',
'ipv4' => 'Die :attribute moet geldige IPv4 address wees.',
'ipv6' => 'Die :attribute moet geldige IPv6 address wees.',
'json' => 'Die :attribute moet geldige JSON string wees.',
'lowercase' => 'Die :attribute moet kleinletters wees.',
'lt' => [
'array' => 'Die :attribute moet minder as wees :value items.',
'file' => 'Die :attribute moet minder as wees :value kilobytes.',
'numeric' => 'Die :attribute moet minder as wees :value.',
'string' => 'Die :attribute moet minder as wees than :value karakters.',
],
'lte' => [
'array' => 'Die :attribute moet nie meer as :value items wees.',
'file' => 'Die :attribute moet kleiner of gelyk wees aan :value kilobytes.',
'numeric' => 'Die :attribute moet kleiner of gelyk wees aan :value.',
'string' => 'Die :attribute moet kleiner of gelyk wees aan :value karakters.',
],
'mac_address' => 'Die :attribute moet \'n geldige MAC-adres wees.',
'max' => [
'array' => 'Die :attribute mag nie groter as :max items wees.',
'file' => 'Die :attribute mag nie groter as :max kilobytes wees.',
'numeric' => 'Die :attribute mag nie groter as :max wees.',
'string' => 'Die :attribute mag nie groter as :max karakters wees.',
],
'max_digits' => 'Die :attribute mag nie meer as :max syfers hê nie.',
'mimes' => 'Die :attribute moet \'n tipe lêer wees: :values.',
'mimetypes' => 'Die :attribute moet \'n tipe lêer wees: :values.',
'min' => [
'array' => 'Die :attribute moet ten minste :min items wees.',
'file' => 'Die :attribute moet ten minste :min kilobytes wees.',
'numeric' => 'Die :attribute moet ten minste :min wees.',
'string' => 'Die :attribute moet ten minste :min karakters wees.',
],
'min_digits' => 'Die :attribute moet ten minste :min syfers hê.',
'missing' => 'Die :attribute-veld moet ontbreek.',
'missing_if' => 'Die :attribute-veld moet ontbreek wanneer :other :value is.',
'missing_unless' => 'Die :attribute-veld moet ontbreek tensy :other :value is.',
'missing_with' => 'Die :attribute-veld moet ontbreek wanneer :values teenwoordig is.',
'missing_with_all' => 'Die :attribute-veld moet ontbreek wanneer :values teenwoordig is.',
'multiple_of' => 'Die :attribute moet\'n veelvoud van :value',
'not_in' => 'Die geselketeerde :attribute is ongeldig.',
'not_regex' => 'Die :attribute formaat is ongeldig.',
'numeric' => 'Die :attribute moet \'n syfer wees.',
'password' => [
'letters' => 'Die :attribute moet ten minste een letter bevat.',
'mixed' => 'Die :attribute moet ten minste een hoofletter en een kleinletter bevat.',
'numbers' => 'Die :attribute moet ten minste een nommer bevat.',
'symbols' => 'Die :attribute moet ten minste een simbool bevat.',
'uncompromised' => 'Die gegewe :attribute het in \'n datalek verskyn. Kies asseblief \'n ander :attribute.',
],
'present' => 'Die :attribute veld moet teenwoordig wees.',
'prohibited' => 'Die :attribute veld is verbode.',
'prohibited_if' => 'Die :attribute veld is verbode wanneer :other is :value.',
'prohibited_unless' => 'Die :attribute veld is verbode, tensy :other is in :values.',
'prohibits' => 'Die :attribute-veld verbied :other om teenwoordig te wees.',
'regex' => 'Die :attribute formaat is ongeldig.',
'required' => 'Die :attribute veld is verpligtend.',
'required_array_keys' => 'Die :attribute-veld moet inskrywings bevat vir: :values.',
'required_if' => 'Die :attribute veld is verpligtend wanneer :other :value is.',
'required_if_accepted' => 'Die :attribute-veld word vereis wanneer :other aanvaar word.',
'required_unless' => 'Die :attribute veld is verpligtend tensy :other in :values is.',
'required_with' => 'Die :attribute veld is verpligtend wanneer :values teenwoordig is.',
'required_with_all' => 'Die :attribute veld is verpligtend wanneer :values teenwoordig is.',
'required_without' => 'Die :attribute veld is verpligtend wanneer :values nie teenwoordig is.',
'required_without_all' => 'Die :attribute veld is verpligtend wanneer geen van :values teenwoordig is.',
'same' => 'Die :attribute en :other moet ooreenstem.',
'size' => [
'array' => 'Die :attribute moet :size items bevat.',
'file' => 'Die :attribute moet :size kilobytes wees.',
'numeric' => 'Die :attribute moet :size wees.',
'string' => 'Die :attribute moet:size karakters wees.',
],
'starts_with' => 'Die :attribute moet met een van die volgende begin: :values.',
'string' => 'Die :attribute moet \'n string wees.',
'timezone' => 'Die :attribute moet \'n geldige sone wees.',
'ulid' => 'Die :attribute moet \'n geldige ULID wees.',
'unique' => 'Die :attribute is reeds geneem.',
'uploaded' => 'Die :attribute kon nie oplaai.',
'uppercase' => 'Die :attribute moet hoofletters wees.',
'url' => 'Die :attribute formaat is ongeldig.',
'uuid' => 'Die :attribute moet \'n geldige UUID wees.',
'attributes' => [
'address' => 'adres',
'age' => 'ouderdom',
'amount' => 'bedrag',
'area' => 'gebied',
'available' => 'beskikbaar',
'birthday' => 'verjaarsdag',
'body' => 'liggaam',
'city' => 'stad',
'content' => 'inhoud',
'country' => 'land',
'created_at' => 'geskep by',
'creator' => 'skepper',
'current_password' => 'huidige Sleutelwoord',
'date' => 'datum',
'date_of_birth' => 'geboortedatum',
'day' => 'dag',
'deleted_at' => 'geskrap by',
'description' => 'beskrywing',
'district' => 'distrik',
'duration' => 'duur',
'email' => 'epos',
'excerpt' => 'uittreksel',
'filter' => 'filter',
'first_name' => 'naam',
'gender' => 'geslag',
'group' => 'groep',
'hour' => 'uur',
'image' => 'beeld',
'last_name' => 'van',
'lesson' => 'les',
'line_address_1' => 'lynadres 1',
'line_address_2' => 'lynadres 2',
'message' => 'boodskap',
'middle_name' => 'middelnaam',
'minute' => 'minuut',
'mobile' => 'mobiele',
'month' => 'maand',
'name' => 'naam',
'national_code' => 'nasionale kode',
'number' => 'nommer',
'password' => 'wagwoord',
'password_confirmation' => 'bevestig_wagwoord',
'phone' => 'telefoon',
'photo' => 'foto',
'postal_code' => 'Poskode',
'price' => 'prys',
'province' => 'provinsie',
'recaptcha_response_field' => 'recaptcha-reaksieveld',
'remember' => 'onthou',
'restored_at' => 'herstel by',
'result_text_under_image' => 'resultaat teks onder prent',
'role' => 'rol',
'second' => 'sekonde',
'sex' => 'geslag',
'short_text' => 'kort teks',
'size' => 'grootte',
'state' => 'staat',
'street' => 'straat',
'student' => 'student',
'subject' => 'onderwerp',
'teacher' => 'onderwyser',
'terms' => 'terme',
'test_description' => 'toets beskrywing',
'test_locale' => 'toets lokaal',
'test_name' => 'toets naam',
'text' => 'teks',
'time' => 'tyd',
'title' => 'titel',
'updated_at' => 'opgedateer by',
'username' => 'gebruikersnaam',
'year' => 'jaar',
],
];

74
lang/ar.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(و :count خطأ إضافي)",
"(and :count more errors)": "(و :count أخطاء إضافية)",
"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.": "تم إرسال رابط تحقق جديد إلى بريدك الإلكتروني.",
"All rights reserved.": "جميع الحقوق محفوظة.",
"Already registered?": "لديك حساب مسبقا؟",
"Are you sure you want to delete your account?": "هل أنت متأكد من رغبتك في حذف حسابك؟",
"Cancel": "إلغاء",
"Click here to re-send the verification email.": "اضغط هنا لإعادة إرسال بريد التحقق.",
"Confirm": "تأكيد",
"Confirm Password": "تأكيد كلمة المرور",
"Current Password": "كلمة المرور الحالية",
"Dashboard": "لوحة التحكم",
"Delete Account": "حذف الحساب",
"Email": "البريد الإلكتروني",
"Email Password Reset Link": "رابط إعادة تعيين كلمة مرور عبر البريد الإلكتروني",
"Ensure your account is using a long, random password to stay secure.": "تأكد من أن حسابك يستخدم كلمة مرور طويلة وعشوائية للبقاء آمنًا.",
"Forbidden": "محظور",
"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.": "نسيت كلمة المرور؟ لا توجد مشكلة. ما عليك سوى إخبارنا بعنوان بريدك الإلكتروني وسنرسل لك عبره رابط إعادة تعيين كلمة المرور الذي سيسمح لك باختيار كلمة مرور جديدة.",
"Go to page :page": "الإنتقال إلى الصفحة :page",
"Hello!": "أهلاً بك!",
"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're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "إذا كنت تواجه مشكلة في النقر على الزر \":actionText \"، يمكنك نسخ عنوان URL أدناه\n وألصقه في متصفح الويب:",
"Invalid JSON was returned from the route.": "تم إرجاع JSON غير صالح من المسار.",
"Log in": "تسجيل الدخول",
"Log Out": "تسجيل الخروج",
"Login": "تسجيل الدخول",
"Logout": "تسجيل الخروج",
"Name": "الاسم",
"New Password": "كلمة مرور جديدة",
"Not Found": "غير متوفر",
"of": "من",
"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.": "بمجرد حذف حسابك، سيتم حذف جميع بياناته نهائياً. رجاءًا قم بإدخال كلمة المرور الخاصة بك لتأكيد رغبتك في حذف حسابك بشكل نهائي.",
"Page Expired": "الصفحة منتهية الصلاحية",
"Pagination Navigation": "التنقل بين الصفحات",
"Password": "كلمة المرور",
"Payment Required": "مطلوب الدفع",
"Please click the button below to verify your email address.": "يرجى النقر على الزر أدناه للتحقق من عنوان بريدك الإلكتروني.",
"Profile": "الملف الشخصي",
"Profile Information": "معلومات الملف الشخصي",
"Regards": "مع التحية",
"Register": "تسجيل",
"Remember me": "تذكرني",
"Resend Verification Email": "إعادة ارسال بريد التحقق",
"Reset Password": "استعادة كلمة المرور",
"Reset Password Notification": "تنبيه استعادة كلمة المرور",
"results": "نتيجة",
"Save": "حفظ",
"Saved.": "تم الحفظ.",
"Server Error": "خطأ في الإستضافة",
"Service Unavailable": "الخدمة غير متوفرة",
"Showing": "عرض",
"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 response is not a streamed response.": "الاستجابة ليست استجابة متدفقة.",
"The response is not a view.": "الاستجابة ليست صفحة عرض.",
"This is a secure area of the application. Please confirm your password before continuing.": "هذه منطقة آمنة للتطبيق. يرجى تأكيد كلمة المرور الخاصة بك قبل المتابعة.",
"This password reset link will expire in :count minutes.": "ستنتهي صلاحية رابط استعادة كلمة المرور خلال :count دقيقة.",
"to": "إلى",
"Toggle navigation": "إظهار/إخفاء القائمة",
"Too Many Requests": "طلبات كثيرة جدًا",
"Unauthorized": "غير مصرّح",
"Update Password": "تحديث كلمة المرور",
"Update your account's profile information and email address.": "قم بتحديث معلومات ملفك الشخصي وبريدك الإلكتروني.",
"Verify Email Address": "التحقق من عنوان البريد الإلكتروني",
"Whoops!": "عذراً!",
"You are receiving this email because we received a password reset request for your account.": "لقد استلمت هذا الإيميل لأننا استقبلنا طلباً لاستعادة كلمة مرور حسابك.",
"You're logged in!": "لقد قمت بتسجيل الدخول!",
"Your email address is unverified.": "لم يتم التحقق من عنوان بريدك الإلكتروني."
}

9
lang/ar/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'بيانات الاعتماد هذه غير متطابقة مع البيانات المسجلة لدينا.',
'password' => 'كلمة المرور غير صحيحة.',
'throttle' => 'عدد كبير جدا من محاولات الدخول. يرجى المحاولة مرة أخرى بعد :seconds ثانية.',
];

8
lang/ar/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'التالي &raquo;',
'previous' => '&laquo; السابق',
];

11
lang/ar/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'تمت إعادة تعيين كلمة المرور!',
'sent' => 'تم إرسال تفاصيل استعادة كلمة المرور الخاصة بك إلى بريدك الإلكتروني!',
'throttled' => 'الرجاء الانتظار قبل إعادة المحاولة.',
'token' => 'رمز استعادة كلمة المرور الذي أدخلته غير صحيح.',
'user' => 'لم يتم العثور على أيّ حسابٍ بهذا العنوان الإلكتروني.',
];

217
lang/ar/validation.php Normal file
View File

@@ -0,0 +1,217 @@
<?php
declare(strict_types=1);
return [
'accepted' => 'يجب قبول :attribute.',
'accepted_if' => 'يجب قبول :attribute في حالة :other يساوي :value.',
'active_url' => 'حقل :attribute لا يُمثّل رابطًا صحيحًا.',
'after' => 'يجب على حقل :attribute أن يكون تاريخًا لاحقًا للتاريخ :date.',
'after_or_equal' => 'حقل :attribute يجب أن يكون تاريخاً لاحقاً أو مطابقاً للتاريخ :date.',
'alpha' => 'يجب أن لا يحتوي حقل :attribute سوى على حروف.',
'alpha_dash' => 'يجب أن لا يحتوي حقل :attribute سوى على حروف، أرقام ومطّات.',
'alpha_num' => 'يجب أن يحتوي حقل :attribute على حروفٍ وأرقامٍ فقط.',
'array' => 'يجب أن يكون حقل :attribute ًمصفوفة.',
'ascii' => 'يجب أن يحتوي الحقل :attribute فقط على أحرف أبجدية رقمية أحادية البايت ورموز.',
'before' => 'يجب على حقل :attribute أن يكون تاريخًا سابقًا للتاريخ :date.',
'before_or_equal' => 'حقل :attribute يجب أن يكون تاريخا سابقا أو مطابقا للتاريخ :date.',
'between' => [
'array' => 'يجب أن يحتوي حقل :attribute على عدد من العناصر بين :min و :max.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute بين :min و :max كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute بين :min و :max.',
'string' => 'يجب أن يكون عدد حروف نّص حقل :attribute بين :min و :max.',
],
'boolean' => 'يجب أن تكون قيمة حقل :attribute إما true أو false .',
'can' => 'الحقل :attribute يحتوي على قيمة غير مصرّح بها.',
'confirmed' => 'حقل التأكيد غير مُطابق للحقل :attribute.',
'current_password' => 'كلمة المرور غير صحيحة.',
'date' => 'حقل :attribute ليس تاريخًا صحيحًا.',
'date_equals' => 'يجب أن يكون حقل :attribute مطابقاً للتاريخ :date.',
'date_format' => 'لا يتوافق حقل :attribute مع الشكل :format.',
'decimal' => 'يجب أن يحتوي الحقل :attribute على :decimal منزلة/منازل عشرية.',
'declined' => 'يجب رفض :attribute.',
'declined_if' => 'يجب رفض :attribute عندما يكون :other بقيمة :value.',
'different' => 'يجب أن يكون الحقلان :attribute و :other مُختلفين.',
'digits' => 'يجب أن يحتوي حقل :attribute على :digits رقمًا/أرقام.',
'digits_between' => 'يجب أن يحتوي حقل :attribute بين :min و :max رقمًا/أرقام .',
'dimensions' => 'الحقل:attribute يحتوي على أبعاد صورة غير صالحة.',
'distinct' => 'للحقل :attribute قيمة مُكرّرة.',
'doesnt_end_with' => 'الحقل :attribute يجب ألّا ينتهي بأحد القيم التالية: :values.',
'doesnt_start_with' => 'الحقل :attribute يجب ألّا يبدأ بأحد القيم التالية: :values.',
'email' => 'يجب أن يكون حقل :attribute عنوان بريد إلكتروني صحيح البُنية.',
'ends_with' => 'يجب أن ينتهي حقل :attribute بأحد القيم التالية: :values',
'enum' => 'حقل :attribute المختار غير صالح.',
'exists' => 'القيمة المحددة :attribute غير موجودة.',
'file' => 'الحقل :attribute يجب أن يكون ملفا.',
'filled' => 'حقل :attribute إجباري.',
'gt' => [
'array' => 'يجب أن يحتوي حقل :attribute على أكثر من :value عناصر/عنصر.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute أكبر من :value كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute أكبر من :value.',
'string' => 'يجب أن يكون طول نّص حقل :attribute أكثر من :value حروفٍ/حرفًا.',
],
'gte' => [
'array' => 'يجب أن يحتوي حقل :attribute على الأقل على :value عُنصرًا/عناصر.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute على الأقل :value كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute مساوية أو أكبر من :value.',
'string' => 'يجب أن يكون طول نص حقل :attribute على الأقل :value حروفٍ/حرفًا.',
],
'image' => 'يجب أن يكون حقل :attribute صورةً.',
'in' => 'حقل :attribute غير موجود.',
'in_array' => 'حقل :attribute غير موجود في :other.',
'integer' => 'يجب أن يكون حقل :attribute عددًا صحيحًا.',
'ip' => 'يجب أن يكون حقل :attribute عنوان IP صحيحًا.',
'ipv4' => 'يجب أن يكون حقل :attribute عنوان IPv4 صحيحًا.',
'ipv6' => 'يجب أن يكون حقل :attribute عنوان IPv6 صحيحًا.',
'json' => 'يجب أن يكون حقل :attribute نصًا من نوع JSON.',
'lowercase' => 'يجب أن يحتوي الحقل :attribute على حروف صغيرة.',
'lt' => [
'array' => 'يجب أن يحتوي حقل :attribute على أقل من :value عناصر/عنصر.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute أصغر من :value كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute أصغر من :value.',
'string' => 'يجب أن يكون طول نّص حقل :attribute أقل من :value حروفٍ/حرفًا.',
],
'lte' => [
'array' => 'يجب أن لا يحتوي حقل :attribute على أكثر من :value عناصر/عنصر.',
'file' => 'يجب أن لا يتجاوز حجم ملف حقل :attribute :value كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute مساوية أو أصغر من :value.',
'string' => 'يجب أن لا يتجاوز طول نّص حقل :attribute :value حروفٍ/حرفًا.',
],
'mac_address' => 'الحقل :attribute يجب أن يكون عنوان MAC صالحاً.',
'max' => [
'array' => 'يجب أن لا يحتوي حقل :attribute على أكثر من :max عناصر/عنصر.',
'file' => 'يجب أن لا يتجاوز حجم ملف حقل :attribute :max كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute مساوية أو أصغر من :max.',
'string' => 'يجب أن لا يتجاوز طول نّص حقل :attribute :max حروفٍ/حرفًا.',
],
'max_digits' => 'يجب ألا يحتوي الحقل :attribute على أكثر من :max رقم/أرقام.',
'mimes' => 'يجب أن يكون ملفًا من نوع : :values.',
'mimetypes' => 'يجب أن يكون ملفًا من نوع : :values.',
'min' => [
'array' => 'يجب أن يحتوي حقل :attribute على الأقل على :min عُنصرًا/عناصر.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute على الأقل :min كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute مساوية أو أكبر من :min.',
'string' => 'يجب أن يكون طول نص حقل :attribute على الأقل :min حروفٍ/حرفًا.',
],
'min_digits' => 'يجب أن يحتوي الحقل :attribute على الأقل :min رقم/أرقام.',
'missing' => 'يجب أن يكون الحقل :attribute مفقوداً.',
'missing_if' => 'يجب أن يكون الحقل :attribute مفقوداً عندما :other يساوي :value.',
'missing_unless' => 'يجب أن يكون الحقل :attribute مفقوداً ما لم يكن :other يساوي :value.',
'missing_with' => 'يجب أن يكون الحقل :attribute مفقوداً عند توفر :values.',
'missing_with_all' => 'يجب أن يكون الحقل :attribute مفقوداً عند توفر :values.',
'multiple_of' => 'حقل :attribute يجب أن يكون من مضاعفات :value',
'not_in' => 'عنصر الحقل :attribute غير صحيح.',
'not_regex' => 'صيغة حقل :attribute غير صحيحة.',
'numeric' => 'يجب على حقل :attribute أن يكون رقمًا.',
'password' => [
'letters' => 'يجب أن يحتوي حقل :attribute على حرف واحد على الأقل.',
'mixed' => 'يجب أن يحتوي حقل :attribute على حرف كبير وحرف صغير على الأقل.',
'numbers' => 'يجب أن يحتوي حقل :attribute على رقمٍ واحدٍ على الأقل.',
'symbols' => 'يجب أن يحتوي حقل :attribute على رمزٍ واحدٍ على الأقل.',
'uncompromised' => 'حقل :attribute ظهر في بيانات مُسربة. الرجاء اختيار :attribute مختلف.',
],
'present' => 'يجب تقديم حقل :attribute.',
'prohibited' => 'حقل :attribute محظور.',
'prohibited_if' => 'حقل :attribute محظور إذا كان :other هو :value.',
'prohibited_unless' => 'حقل :attribute محظور ما لم يكن :other ضمن :values.',
'prohibits' => 'الحقل :attribute يحظر تواجد الحقل :other.',
'regex' => 'صيغة حقل :attribute غير صحيحة.',
'required' => 'حقل :attribute مطلوب.',
'required_array_keys' => 'الحقل :attribute يجب أن يحتوي على مدخلات لـ: :values.',
'required_if' => 'حقل :attribute مطلوب في حال ما إذا كان :other يساوي :value.',
'required_if_accepted' => 'الحقل :attribute مطلوب عند قبول الحقل :other.',
'required_unless' => 'حقل :attribute مطلوب في حال ما لم يكن :other يساوي :values.',
'required_with' => 'حقل :attribute مطلوب إذا توفّر :values.',
'required_with_all' => 'حقل :attribute مطلوب إذا توفّر :values.',
'required_without' => 'حقل :attribute مطلوب إذا لم يتوفّر :values.',
'required_without_all' => 'حقل :attribute مطلوب إذا لم يتوفّر :values.',
'same' => 'يجب أن يتطابق حقل :attribute مع :other.',
'size' => [
'array' => 'يجب أن يحتوي حقل :attribute على :size عنصرٍ/عناصر بالضبط.',
'file' => 'يجب أن يكون حجم ملف حقل :attribute :size كيلوبايت.',
'numeric' => 'يجب أن تكون قيمة حقل :attribute مساوية لـ :size.',
'string' => 'يجب أن يحتوي نص حقل :attribute على :size حروفٍ/حرفًا بالضبط.',
],
'starts_with' => 'يجب أن يبدأ حقل :attribute بأحد القيم التالية: :values',
'string' => 'يجب أن يكون حقل :attribute نصًا.',
'timezone' => 'يجب أن يكون حقل :attribute نطاقًا زمنيًا صحيحًا.',
'ulid' => 'حقل :attribute يجب أن يكون بصيغة ULID سليمة.',
'unique' => 'قيمة حقل :attribute مُستخدمة من قبل.',
'uploaded' => 'فشل في تحميل الـ :attribute.',
'uppercase' => 'يجب أن يحتوي الحقل :attribute على حروف كبيرة.',
'url' => 'صيغة رابط حقل :attribute غير صحيحة.',
'uuid' => 'حقل :attribute يجب أن يكون بصيغة UUID سليمة.',
'attributes' => [
'address' => 'العنوان',
'age' => 'العمر',
'amount' => 'الكمية',
'area' => 'المنطقة',
'available' => 'مُتاح',
'birthday' => 'عيد الميلاد',
'body' => 'المُحتوى',
'city' => 'المدينة',
'content' => 'المُحتوى',
'country' => 'الدولة',
'created_at' => 'تاريخ الإنشاء',
'creator' => 'المنشئ',
'current_password' => 'كلمة المرور الحالية',
'date' => 'التاريخ',
'date_of_birth' => 'تاريخ الميلاد',
'day' => 'اليوم',
'deleted_at' => 'تاريخ الحذف',
'description' => 'الوصف',
'district' => 'الحي',
'duration' => 'المدة',
'email' => 'البريد الالكتروني',
'excerpt' => 'المُلخص',
'filter' => 'تصفية',
'first_name' => 'الاسم الأول',
'gender' => 'النوع',
'group' => 'مجموعة',
'hour' => 'ساعة',
'image' => 'صورة',
'last_name' => 'اسم العائلة',
'lesson' => 'درس',
'line_address_1' => 'العنوان 1',
'line_address_2' => 'العنوان 2',
'message' => 'الرسالة',
'middle_name' => 'الاسم الأوسط',
'minute' => 'دقيقة',
'mobile' => 'الجوال',
'month' => 'الشهر',
'name' => 'الاسم',
'national_code' => 'الرمز الدولي',
'number' => 'الرقم',
'password' => 'كلمة المرور',
'password_confirmation' => 'تأكيد كلمة المرور',
'phone' => 'الهاتف',
'photo' => 'الصورة',
'postal_code' => 'الرمز البريدي',
'price' => 'السعر',
'province' => 'المحافظة',
'recaptcha_response_field' => 'حقل استجابة recaptcha',
'remember' => 'تذكير',
'restored_at' => 'تاريخ الاستعادة',
'result_text_under_image' => 'نص النتيجة أسفل الصورة',
'role' => 'الصلاحية',
'second' => 'ثانية',
'sex' => 'الجنس',
'short_text' => 'نص مختصر',
'size' => 'الحجم',
'state' => 'الولاية',
'street' => 'الشارع',
'student' => 'طالب',
'subject' => 'الموضوع',
'teacher' => 'معلّم',
'terms' => 'الأحكام',
'test_description' => 'وصف الاختبار',
'test_locale' => 'لغة الاختبار',
'test_name' => 'اسم الاختبار',
'text' => 'نص',
'time' => 'الوقت',
'title' => 'اللقب',
'updated_at' => 'تاريخ التحديث',
'username' => 'اسم المُستخدم',
'year' => 'السنة',
],
];

74
lang/az.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(və :count çox səhv saymaq)",
"(and :count more errors)": "(və :count çox səhv sayın)",
"A new verification link has been sent to the email address you provided during registration.": "Yeni yoxlama linki qeydiyyatdan keçərkən göstərdiyiniz e-poçt ünvanına göndərildi.",
"A new verification link has been sent to your email address.": "E-poçt ünvanınıza yeni doğrulama linki göndərildi.",
"All rights reserved.": "Bütün hüquqlar qorunur.",
"Already registered?": "Artıq yoxlanılır?",
"Are you sure you want to delete your account?": "Hesabınızı silmək istədiyinizə əminsiniz?",
"Cancel": "Ləğv et",
"Click here to re-send the verification email.": "Doğrulama e-poçtunu yenidən göndərmək üçün bura klikləyin.",
"Confirm": "Təsdiq",
"Confirm Password": "Təsdiq Parol",
"Current Password": "cari parol",
"Dashboard": "Tablosuna",
"Delete Account": "Hesabı sil",
"Email": "E-poçt",
"Email Password Reset Link": "E-poçt parol sıfırlama link",
"Ensure your account is using a long, random password to stay secure.": "Hesabınızın təhlükəsiz qalmaq üçün uzun bir təsadüfi parol istifadə etdiyinə əmin olun.",
"Forbidden": "Qadağan",
"Forgot your password?": "Şifrənizi unutmusunuz?",
"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.": "Şifrənizi unutmusunuz? Problemsiz. Yalnız bizə e-poçt ünvanınızı bildirin və biz sizə yeni birini seçməyə imkan verəcək Parolu sıfırlamak üçün bir link göndərəcəyik.",
"Go to page :page": ":Page səhifəsinə keçin",
"Hello!": "Salam!",
"If you did not create an account, no further action is required.": "Bir haqq-hesab yaratmadıysanız, heç bir əlavə fəaliyyət tələb olunur.",
"If you did not request a password reset, no further action is required.": "Siz parol sıfırlama tələb halda, heç bir daha tədbirlər tələb olunur.",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Siz \":actionText\" düyməsinə basaraq sorun qarşılaşdıqda, surəti və aşağıdakı URL yapışdırıb\nveb brauzerinizdə:",
"Invalid JSON was returned from the route.": "Yanlış JSON marşrutdan qaytarıldı.",
"Log in": "Giriş",
"Log Out": ıxın",
"Login": "Giriş",
"Logout": "Sistemdən çıxış",
"Name": "Ad",
"New Password": "Yeni parol",
"Not Found": "tapılmadı",
"of": "dan",
"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.": "Hesabınız silindikdən sonra bütün resursları və məlumatları geri qaytarılmadan silinəcəkdir. Hesabınızı silməzdən əvvəl, saxlamaq istədiyiniz hər hansı bir məlumat və ya məlumat bərpa edin.",
"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.": "Hesabınız silindikdən sonra onun bütün resursları və məlumatları həmişəlik silinəcək. Hesabınızı həmişəlik silmək istədiyinizi təsdiqləmək üçün parolunuzu daxil edin.",
"Page Expired": "Səhifə Gecikdirildi",
"Pagination Navigation": "Pages naviqasiya",
"Password": "Şifrə",
"Payment Required": "Ödəniş Tələb olunur",
"Please click the button below to verify your email address.": "Xahiş edirik e-poçt ünvanınızı təsdiqləmək üçün aşağıdakı düyməni basın.",
"Profile": "Profil",
"Profile Information": "Profil haqqında məlumat",
"Regards": "Hörmətlə",
"Register": "Qeydiyyat",
"Remember me": "Məni yadda saxla",
"Resend Verification Email": "Yoxlama Məktubunun Yenidən Göndərilməsi",
"Reset Password": "parol sıfırlama",
"Reset Password Notification": "Parol sıfırlama bildirişi",
"results": "nəticələr",
"Save": "Saxlamaq",
"Saved.": "Saxlanılan.",
"Server Error": "Server xətası",
"Service Unavailable": "Xidməti Mövcud Deyil",
"Showing": "Anasini",
"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.": "Qeydiyyatdan keçdiyiniz üçün təşəkkür edirik! Siz başlamaq əvvəl, Biz yalnız e-poçt vasitəsilə göndərilir linki tıklayarak e-poçt ünvanınızı təsdiq edə bilər? Bir məktub almadıysanız, biz məmnuniyyətlə Başqa bir şey göndərəcəyik.",
"The given data was invalid.": "Verilən məlumat etibarsız idi.",
"The response is not a streamed response.": "Cavab axınlı cavab deyil.",
"The response is not a view.": "Cavab baxış deyil.",
"This is a secure area of the application. Please confirm your password before continuing.": "Bu təhlükəsiz app sahəsi var. Davam etməzdən əvvəl şifrənizi təsdiq edin.",
"This password reset link will expire in :count minutes.": "Bu parol sıfırlama link :count dəqiqə sonra başa çatır.",
"to": "k",
"Toggle navigation": "Keçid naviqasiya",
"Too Many Requests": "Çox Sorğu",
"Unauthorized": "İcazəsiz",
"Update Password": "Şifrəni yeniləyin",
"Update your account's profile information and email address.": "Hesabınızın profil məlumatlarını və e-poçt ünvanınızı yeniləyin.",
"Verify Email Address": "E-Poçt Ünvanınızı Yoxlayın",
"Whoops!": "CPS!",
"You are receiving this email because we received a password reset request for your account.": "Bu məktubu əldə edirsiniz, çünki hesabınız üçün parol sıfırlama tələbi aldıq.",
"You're logged in!": "Daxil olmusunuz!",
"Your email address is unverified.": "E-poçt ünvanınız təsdiqlənməyib."
}

9
lang/az/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'İstifadəçi adı və ya şifrə səhvdir',
'password' => 'Şifrə yanlışdır.',
'throttle' => ':Seconds saniyə ərzində yenidən cəhd edin',
];

8
lang/az/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Sonra &raquo;',
'previous' => '&laquo; Əvvəl',
];

11
lang/az/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'Şifrə yeniləndi',
'sent' => 'Şifrə yeniləmə adresi sizə email olaraq göndərildi',
'throttled' => 'Yenidən cəhd əvvəl gözləyin edin.',
'token' => 'Bu şifrə yeniləmə kodu yanlışdır',
'user' => 'Bu email\'ə uyğun istifadəçi tapılmadı',
];

217
lang/az/validation.php Normal file
View File

@@ -0,0 +1,217 @@
<?php
declare(strict_types=1);
return [
'accepted' => ':Attribute qəbul edilməlidir.',
'accepted_if' => ':Other :value olduqda :attribute qəbul edilməlidir.',
'active_url' => ':Attribute düzgün URL deyil.',
'after' => ':Attribute :date tarixindən sonrakı tarix olmalıdır.',
'after_or_equal' => ':Attribute :date tarixindən sonrakı və ya eyni tarixdə olmalıdır.',
'alpha' => ':Attribute yalnız hərflərdən ibarət olmalıdır.',
'alpha_dash' => ':Attribute yalnız hərflərdən, rəqəmlərdən, tire və alt xətlərdən ibarət olmalıdır.',
'alpha_num' => ':Attribute yalnız hərflərdən və rəqəmlərdən ibarət olmalıdır.',
'array' => ':Attribute massiv olmalıdır.',
'ascii' => ':Attribute yalnız bir baytlıq alfasayısal simvol və simvollar olmalıdır.',
'before' => ':Attribute :date tarixindən əvvəlki tarix olmalıdır.',
'before_or_equal' => ':Attribute :date tarixindən əvvəlki və ya ona bərabər olan bir tarix olmalıdır.',
'between' => [
'array' => ':Attribute elementlərinin sayı :min ilə :max arasında olmalıdır.',
'file' => ':Attribute :min ilə :max kilobayt arasında olmalıdır.',
'numeric' => ':Attribute :min ilə :max arasında olmalıdır.',
'string' => ':Attribute :min ilə :max simvol arasında olmalıdır.',
],
'boolean' => ':Attribute sahəsi doğru (true) və ya yalan (false) olmalıdır.',
'can' => ':Attribute sahəsində icazəsiz dəyər var.',
'confirmed' => ':Attribute sahəsinin dəyəri təsdiqlənənlə uyğun gəlmir.',
'current_password' => 'Şifrə yanlışdır.',
'date' => ':Attribute düzgün tarix olmalıdır.',
'date_equals' => ':Attribute :date ilə bərabər tarix olmalıdır.',
'date_format' => ':Attribute :format formatına uyğun gəlmir.',
'decimal' => ':Attribute-də :decimal onluq yer olmalıdır.',
'declined' => ':Attribute rədd edilməlidir.',
'declined_if' => ':Other :value olduqda :attribute rədd edilməlidir.',
'different' => ':Attribute və :other fərqli olmalıdır.',
'digits' => ':Attribute :digits rəqəmli olmalıdır.',
'digits_between' => ':Attribute sahəsindəki rəqəm sayı :min ilə :max arasında olmalıdır.',
'dimensions' => ':Attribute sahəsindəki şəklin ölçüləri yanlışdır.',
'distinct' => ':Attribute sahəsinin dəyərləri təkrarlanmamalıdır.',
'doesnt_end_with' => ':Attribute aşağıdakılardan biri ilə bitməyə bilər: :values.',
'doesnt_start_with' => ':Attribute aşağıdakılardan biri ilə başlaya bilməz: :values.',
'email' => ':Attribute düzgün e-poçt ünvanı olmalıdır.',
'ends_with' => ':Attribute sahəsi göstərilən dəyərlərdən biri ilə bitməlidir: :values.',
'enum' => ':Attribute üçün seçilmiş dəyər yanlışdır.',
'exists' => ':Attribute üçün seçilmiş dəyər yanlışdır.',
'file' => ':Attribute fayl olmalıdır.',
'filled' => ':Attribute sahəsinin dəyəri olmalıdır.',
'gt' => [
'array' => ':Attribute sahəsinin dəyəri :value elementdən çox olmalıdır.',
'file' => ':Attribute sahəsinin fayl ölçüsü :value kilobaytdan çox olmalıdır.',
'numeric' => ':Attribute sahəsinin dəyəri :value sayından böyük olmalıdır.',
'string' => ':Attribute sahəsinin dəyəri :value simvoldan çox olmalıdır.',
],
'gte' => [
'array' => ':Attribute :value və ya daha çox elementdən ibarət olmalıdır.',
'file' => ':Attribute :value və ya daha çox kilobaytdan ibarət olmalıdır.',
'numeric' => ':Attribute :value və ya daha böyük olmalıdır.',
'string' => ':Attribute :value və ya daha çox simvoldan ibarət olmalıdır.',
],
'image' => ':Attribute sahəsindəki fayl şəkil olmalıdır.',
'in' => 'Seçilmiş :attribute yanlışdır.',
'in_array' => ':Attribute dəyəri :other daxilində mövcud deyil.',
'integer' => ':Attribute tam ədəd olmalıdır.',
'ip' => ':Attribute düzgün IP ünvanı olmalıdır.',
'ipv4' => ':Attribute düzgün IPv4 ünvanı olmalıdır.',
'ipv6' => ':Attribute düzgün IPv6 ünvanı olmalıdır.',
'json' => ':Attribute düzgün JSON sətri olmalıdır.',
'lowercase' => ':Attribute kiçik hərf olmalıdır.',
'lt' => [
'array' => ':Attribute sahəsinin dəyəri :value elementdən az olmalıdır.',
'file' => ':Attribute sahəsinin fayl ölçüsü :value kilobaytdan az olmalıdır.',
'numeric' => ':Attribute sahəsinin dəyəri :value sayından kiçik olmalıdır.',
'string' => ':Attribute sahəsinin dəyəri :value simvoldan az olmalıdır.',
],
'lte' => [
'array' => ':Attribute :value və ya daha az elementdən ibarət olmalıdır.',
'file' => ':Attribute sahəsinin fayl ölçüsü :value kilobayt və ya daha kiçik olmalıdır.',
'numeric' => ':Attribute :value və ya daha kiçik olmalıdır.',
'string' => ':Attribute :value və ya daha az simvoldan ibarət olmalıdır.',
],
'mac_address' => ':Attribute düzgün MAC ünvanı olmalıdır.',
'max' => [
'array' => ':Attribute ən çoxu :max elementdən ibarət ola bilər.',
'file' => ':Attribute sahəsinin fayl ölçüsü ən çoxu :max kilobayt ola bilər.',
'numeric' => ':Attribute dəyəri :max sayından böyük ola bilməz.',
'string' => ':Attribute ən çoxu :max simvoldan ibarət ola bilər.',
],
'max_digits' => ':Attribute :max rəqəmlərindən çox olmamalıdır.',
'mimes' => ':Attribute sahəsindəki fayl göstərilən növlərdən biri olmalıdır: :values.',
'mimetypes' => ':Attribute sahəsindəki fayl göstərilən növlərdən biri olmalıdır: :values.',
'min' => [
'array' => ':Attribute ən azı :min elementdən ibarət olmalıdır.',
'file' => ':Attribute sahəsinin fayl ölçüsü ən azı :min kilobayt olmalıdır.',
'numeric' => ':Attribute :min sayından kiçik ola bilməz.',
'string' => ':Attribute ən azı :min simvoldan ibarət olmalıdır.',
],
'min_digits' => ':Attribute ən azı :min rəqəmləri olmalıdır.',
'missing' => ':Attribute sahəsi əskik olmalıdır.',
'missing_if' => ':Other :value olduqda :attribute sahəsi əskik olmalıdır.',
'missing_unless' => ':Other :value olmadığı halda :attribute sahəsi əskik olmalıdır.',
'missing_with' => ':Values olduqda :attribute sahəsi əskik olmalıdır.',
'missing_with_all' => ':Values olduqda :attribute sahəsi əskik olmalıdır.',
'multiple_of' => ':Attribute sahəsinin dəyəri :value ədədinin bölünəni olmalıdır.',
'not_in' => 'Seçilmiş :attribute yanlışdır.',
'not_regex' => ':Attribute sahəsinin formatı yanlışdır.',
'numeric' => ':Attribute sahəsinin dəyəri rəqəm olmalıdır.',
'password' => [
'letters' => ':Attribute ən azı bir hərf olmalıdır.',
'mixed' => ':Attribute ən azı bir böyük və bir kiçik hərf olmalıdır.',
'numbers' => ':Attribute ən azı bir ədəd olmalıdır.',
'symbols' => ':Attribute ən azı bir simvol olmalıdır.',
'uncompromised' => 'Verilmiş :attribute məlumat sızmasında ortaya çıxdı. Fərqli :attribute seçin.',
],
'present' => ':Attribute sahəsi mövcud olmalıdır.',
'prohibited' => ':Attribute sahəsi qadağandır.',
'prohibited_if' => ':Other :value olduqda :attribute sahəsi qadağandır.',
'prohibited_unless' => ':Other :values daxilində olmadığı halda :attribute sahəsi qadağandır.',
'prohibits' => ':Attribute sahəsinin dəyəri :other dəyərinin mövcudluğunu qadağan edir.',
'regex' => ':Attribute sahəsinin formatı yanlışdır.',
'required' => ':Attribute mütləq qeyd edilməlidir.',
'required_array_keys' => ':Attribute massivində göstərilən açarlar olmalıdır: :values.',
'required_if' => ':Other :value olduqda :attribute mütləq qeyd edilməlidir.',
'required_if_accepted' => ':Other qəbul edildikdə :attribute sahəsi tələb olunur.',
'required_unless' => ':Other :values daxilində olmadığı halda :attribute mütləq qeyd edilməlidir.',
'required_with' => ':Values mövcud olduqda :attribute mütləq qeyd edilməlidir.',
'required_with_all' => ':Values mövcud olduqda :attribute mütləq qeyd edilməlidir.',
'required_without' => ':Values mövcud olmadıqda :attribute mütləq qeyd edilməlidir.',
'required_without_all' => ':Values mövcud olmadıqda :attribute mütləq qeyd edilməlidir.',
'same' => ':Attribute ilə :other sahəsinin dəyərləri üst-üstə düşməlidir.',
'size' => [
'array' => ':Attribute sahəsi :size elementdən ibarət olmalıdır.',
'file' => ':Attribute sahəsinin fayl ölçüsü :size kilobayt olmalıdır.',
'numeric' => ':Attribute dəyəri :size olmalıdır.',
'string' => ':Attribute :size simvoldan ibarət olmalıdır.',
],
'starts_with' => ':Attribute göstərilən dəyərlərdən biri ilə başlamalıdır: :values.',
'string' => ':Attribute sahəsinin dəyəri sətir olmalıdır.',
'timezone' => ':Attribute sahəsinin dəyəri düzgün vaxt qurşağı olmalıdır.',
'ulid' => ':Attribute etibarlı ULID olmalıdır.',
'unique' => 'Belə bir :attribute artıq mövcuddur.',
'uploaded' => ':Attribute yüklənmədi.',
'uppercase' => ':Attribute böyük hərf olmalıdır.',
'url' => ':Attribute düzgün URL olmalıdır.',
'uuid' => ':Attribute düzgün UUID olmalıdır.',
'attributes' => [
'address' => 'ünvan',
'age' => 'yaş',
'amount' => 'məbləğ',
'area' => 'ərazi',
'available' => 'əlçatandır',
'birthday' => 'ad günü',
'body' => 'bədən',
'city' => 'şəhər',
'content' => 'məzmun',
'country' => 'şəhər',
'created_at' => 'yaradıldı',
'creator' => 'yaradan',
'current_password' => 'cari şifrə',
'date' => 'tarix',
'date_of_birth' => 'doğum tarixi',
'day' => 'gün',
'deleted_at' => 'silindi',
'description' => 'təsvir',
'district' => 'rayon',
'duration' => 'müddət',
'email' => 'e-poçt ünvanı',
'excerpt' => ıxarış',
'filter' => 'filtr',
'first_name' => 'ad',
'gender' => 'cins',
'group' => 'qrup',
'hour' => 'saat',
'image' => 'şəkil',
'last_name' => 'soyad',
'lesson' => 'dərs',
'line_address_1' => 'sətir ünvanı 1',
'line_address_2' => 'sətir ünvanı 2',
'message' => 'mesaj',
'middle_name' => 'ata adı',
'minute' => 'dəqiqə',
'mobile' => 'mobil nömrə',
'month' => 'ay',
'name' => 'ad',
'national_code' => 'milli məcəllə',
'number' => 'nömrə',
'password' => 'şifrə',
'password_confirmation' => 'şifrə təsdiqi',
'phone' => 'telefon',
'photo' => 'şəkil',
'postal_code' => 'poçt kodu',
'price' => 'qiymət',
'province' => 'vilayət',
'recaptcha_response_field' => 'recaptcha cavab sahəsi',
'remember' => 'yadda saxla',
'restored_at' => 'bərpa olunub',
'result_text_under_image' => 'şəklin altındakı nəticə mətni',
'role' => 'rol',
'second' => 'saniyə',
'sex' => 'cins',
'short_text' => 'qısa mətn',
'size' => 'ölçü',
'state' => 'dövlət',
'street' => 'küçə',
'student' => 'tələbə',
'subject' => 'mövzu',
'teacher' => 'müəllim',
'terms' => 'şərtlər',
'test_description' => 'test təsviri',
'test_locale' => 'test yerli',
'test_name' => 'test adı',
'text' => 'mətn',
'time' => 'vaxt',
'title' => 'başlıq',
'updated_at' => 'yenilənib',
'username' => 'i̇stifadəçi adı',
'year' => 'i̇l',
],
];

74
lang/be.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(і яшчэ :count памылак)",
"(and :count more errors)": "(і яшчэ :count памылак)",
"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.": "Новая спасылка для праверкі была адпраўлена на ваш адрас электроннай пошты.",
"All rights reserved.": "Усе правы абаронены.",
"Already registered?": "Ужо зарэгістраваўся?",
"Are you sure you want to delete your account?": "Вы ўпэўнены, што хочаце выдаліць свой уліковы запіс?",
"Cancel": "Адмяніць",
"Click here to re-send the verification email.": "Націсніце тут, каб паўторна адправіць ліст для праверкі.",
"Confirm": "Пацвярджаць",
"Confirm Password": "Пацвердзіце Пароль",
"Current Password": "бягучы пароль",
"Dashboard": "Прыборная панэль",
"Delete Account": "Выдаліць уліковы запіс",
"Email": "Электронная пошта",
"Email Password Reset Link": "Спасылка для скіду Пароля электроннай пошты",
"Ensure your account is using a long, random password to stay secure.": "Пераканайцеся, што ваш уліковы запіс выкарыстоўвае доўгі выпадковы пароль, каб заставацца ў бяспецы.",
"Forbidden": "Забаронены",
"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.": "Забыліся свой пароль? Без праблем. Проста паведаміце нам свой адрас электроннай пошты, і мы вышлем вам спасылку для скіду пароля, якая дазволіць вам выбраць новы.",
"Go to page :page": "Перайсці на старонку :page",
"Hello!": "Прывітанне!",
"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're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Калі ў вас узніклі праблемы з націскам кнопкі \":actionText\", скапіруйце і ўстаўце URL ніжэй\nу свой вэб-браўзэр:",
"Invalid JSON was returned from the route.": "Няправільны JSON быў вернуты з маршруту.",
"Log in": "Аўтарызавацца",
"Log Out": "выйсці з сістэмы",
"Login": "Аўтарызавацца",
"Logout": "Выхад з сістэмы",
"Name": "Імя",
"New Password": "Новы пароль",
"Not Found": "не знойдзена",
"of": "ад",
"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.": "Пасля выдалення вашага ўліковага запісу ўсе яго рэсурсы і даныя будуць выдалены назаўсёды. Калі ласка, увядзіце пароль, каб пацвердзіць, што хочаце назаўсёды выдаліць свой уліковы запіс.",
"Page Expired": "Старонка Пратэрмінаваная",
"Pagination Navigation": "Навігацыя па старонках",
"Password": "Пароль",
"Payment Required": "Патрабуецца аплата",
"Please click the button below to verify your email address.": "Калі ласка, націсніце кнопку ніжэй, каб пацвердзіць свой адрас электроннай пошты.",
"Profile": "Профіль",
"Profile Information": "Інфармацыя аб профілі",
"Regards": "З павагай",
"Register": "Зарэгістраваць",
"Remember me": "Помні мяне",
"Resend Verification Email": "Паўторная Адпраўка Лісты Паверкавага",
"Reset Password": "Скід пароля",
"Reset Password Notification": "Апавяшчэнне аб скідзе Пароля",
"results": "вынікі",
"Save": "Захаваць",
"Saved.": "Захаваны.",
"Server Error": "Памылка сервера",
"Service Unavailable": "Паслуга Недаступная",
"Showing": "Паказ",
"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 response is not a streamed response.": "Адказ не з'яўляецца струменевым адказам.",
"The response is not a view.": "Адказ - гэта не прагляд.",
"This is a secure area of the application. Please confirm your password before continuing.": "Гэта бяспечная вобласць прыкладання. Калі ласка, пацвердзіце свой пароль, перш чым працягнуць.",
"This password reset link will expire in :count minutes.": "Гэтая спасылка для скіду пароля мінае праз :count хвіліны.",
"to": "да",
"Toggle navigation": "Пераключэнне навігацыі",
"Too Many Requests": "Занадта Шмат Просьбаў",
"Unauthorized": "Несанкцыянаванага",
"Update Password": "Абнавіць пароль",
"Update your account's profile information and email address.": "Абнавіце інфармацыю профілю вашай ўліковага запісу і адрас электроннай пошты.",
"Verify Email Address": "Праверце Адрас Электроннай Пошты",
"Whoops!": "Упс!",
"You are receiving this email because we received a password reset request for your account.": "Вы атрымліваеце гэты ліст, таму што мы атрымалі запыт на Скід пароля для вашага ўліковага запісу.",
"You're logged in!": "Вы ўвайшлі ў сістэму!",
"Your email address is unverified.": "Ваш адрас электроннай пошты неправераны."
}

9
lang/be/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'Імя карыстальніка і пароль не супадаюць.',
'password' => 'Пароль няправільны.',
'throttle' => 'Занадта шмат спробаў ўваходу. Калі ласка, паспрабуйце яшчэ раз праз :seconds секунд.',
];

8
lang/be/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Наперад &raquo;',
'previous' => '&laquo; Назад',
];

11
lang/be/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'Ваш пароль быў скінуты!',
'sent' => 'Спасылка на скід пароля была адпраўлена!',
'throttled' => 'Калі ласка, пачакайце, перш чым паўтарыць спробу.',
'token' => 'Памылковы код скіду пароля.',
'user' => 'Не атрымалася знайсці карыстальніка з дадзеным электронным адрасам.',
];

217
lang/be/validation.php Normal file
View File

@@ -0,0 +1,217 @@
<?php
declare(strict_types=1);
return [
'accepted' => 'Вы павінны прыняць :attribute.',
'accepted_if' => ':Attribute трэба прыняць, калі :other роўна :value.',
'active_url' => 'Поле :attribute утрымлівае несапраўдны URL.',
'after' => 'У полі :attribute павінна быць дата пасля :date.',
'after_or_equal' => ':Attribute павінна быць датай пасля або роўнай :date.',
'alpha' => 'Поле :attribute можа мець толькі літары.',
'alpha_dash' => 'Поле :attribute можа мець толькі літары, лічбы і злучок.',
'alpha_num' => 'Поле :attribute можа мець толькі літары і лічбы.',
'array' => 'Поле :attribute павінна быць масівам.',
'ascii' => ':Attribute павінны ўтрымліваць толькі аднабайтавыя літары і сімвалы.',
'before' => 'У полі :attribute павінна быць дата да :date.',
'before_or_equal' => ':Attribute павінна быць датай да або роўнай :date.',
'between' => [
'array' => 'Колькасць элементаў у поле :attribute павінна быць паміж :min і :max.',
'file' => 'Памер файла ў поле :attribute павінен быць паміж :min і :max кілабайт.',
'numeric' => 'Поле :attribute павінна быць паміж :min і :max.',
'string' => 'Колькасць сiмвалаў у поле :attribute павінна быць паміж :min і :max.',
],
'boolean' => 'Поле :attribute павінна мець значэнне лагічнага тыпу.',
'can' => 'Поле :attribute змяшчае недазволенае значэнне.',
'confirmed' => 'Поле :attribute не супадае з пацвярджэннем.',
'current_password' => 'Пароль няправільны.',
'date' => 'Поле :attribute не з\'яўляецца датай.',
'date_equals' => ':Attribute павінна быць датай, роўнай :date.',
'date_format' => 'Поле :attribute не адпавядае фармату :format.',
'decimal' => ':Attribute павінна мець :decimal знакаў пасля коскі.',
'declined' => ':Attribute трэба адхіліць.',
'declined_if' => ':Attribute трэба адхіляць, калі :other роўна :value.',
'different' => 'Палі :attribute і :other павінны адрознівацца.',
'digits' => 'Даўжыня лічбавага поля :attribute павінна быць :digits.',
'digits_between' => 'Даўжыня лічбавага поля :attribute павінна быць паміж :min і :max.',
'dimensions' => ':Attribute мае недапушчальныя памеры малюнка.',
'distinct' => 'Поле :attribute мае паўтаральнае значэнне.',
'doesnt_end_with' => ':Attribute не можа заканчвацца адным з наступнага: :values.',
'doesnt_start_with' => ':Attribute можа не пачынацца з аднаго з наступнага: :values.',
'email' => 'Поле :attribute павінна быць сапраўдным электронным адрасам.',
'ends_with' => ':Attribute павінен заканчвацца адным з наступных: :values.',
'enum' => 'Выбраныя :attribute несапраўдныя.',
'exists' => 'Выбранае значэнне для :attribute некарэктна.',
'file' => ':Attribute павінен быць файлам.',
'filled' => 'Поле :attribute абавязкова для запаўнення.',
'gt' => [
'array' => 'У :attribute павінна быць больш за :value прадметаў.',
'file' => ':Attribute павінны быць больш за :value кілабайт.',
'numeric' => ':Attribute павінна быць больш, чым :value.',
'string' => ':Attribute павінна быць больш за :value сімвалаў.',
],
'gte' => [
'array' => 'У :attribute павінна быць :value прадметаў і больш.',
'file' => ':Attribute павінны быць больш або роўныя :value кілабайтам.',
'numeric' => ':Attribute павінна быць больш або роўна :value.',
'string' => ':Attribute павінна быць больш або роўна :value сімвалам.',
],
'image' => 'Поле :attribute павінна быць малюнкам.',
'in' => 'Выбранае значэнне для :attribute памылкова.',
'in_array' => 'Поле :attribute не існуе ў :other.',
'integer' => 'Поле :attribute павінна быць цэлым лікам.',
'ip' => 'Поле :attribute дпавінна быць сапраўдным IP-адрасам.',
'ipv4' => ':Attribute павінен быць сапраўдным IPv4-адрасам.',
'ipv6' => ':Attribute павінен быць сапраўдным IPv6-адрасам.',
'json' => 'Поле :attribute павінна быць JSON радком.',
'lowercase' => ':Attribute павінны быць малымі.',
'lt' => [
'array' => 'У :attribute павінна быць менш за :value элементаў.',
'file' => ':Attribute павінны быць менш за :value кілабайт.',
'numeric' => ':Attribute павінна быць менш за :value.',
'string' => ':Attribute павінна быць менш за :value сімвалаў.',
],
'lte' => [
'array' => 'У :attribute не павінна быць больш за :value элементаў.',
'file' => ':Attribute павінны быць меншымі або роўнымі :value кілабайтам.',
'numeric' => ':Attribute павінна быць менш або роўна :value.',
'string' => ':Attribute павінна быць менш або роўна :value сімвалам.',
],
'mac_address' => ':Attribute павінен быць сапраўдным MAC-адрасам.',
'max' => [
'array' => 'Колькасць элементаў у поле :attribute не можа перавышаць :max.',
'file' => 'Памер файла ў поле :attribute не можа быць больш :max кілабайт).',
'numeric' => 'Поле :attribute не можа быць больш :max.',
'string' => 'Колькасць сiмвалаў у поле :attribute не можа перавышаць :max.',
],
'max_digits' => ':Attribute не павінна мець больш за :max лічбаў.',
'mimes' => 'Поле :attribute павінна быць файлам аднаго з наступных тыпаў: :values.',
'mimetypes' => 'Поле :attribute павінна быць файлам аднаго з наступных тыпаў: :values.',
'min' => [
'array' => 'Колькасць элементаў у поле :attribute павінна быць не менш :min.',
'file' => 'Памер файла ў полее :attribute павінен быць не менш :min кілабайт.',
'numeric' => 'Поле :attribute павінна быць не менш :min.',
'string' => 'Колькасць сiмвалаў у поле :attribute павінна быць не менш :min.',
],
'min_digits' => 'Лік :attribute павінен мець не менш за :min лічбаў.',
'missing' => 'Поле :attribute павінна адсутнічаць.',
'missing_if' => 'Поле :attribute павінна адсутнічаць, калі :other роўна :value.',
'missing_unless' => 'Поле :attribute павінна адсутнічаць, калі :other не роўна :value.',
'missing_with' => 'Поле :attribute павінна адсутнічаць, калі прысутнічае :values.',
'missing_with_all' => 'Поле :attribute павінна адсутнічаць, калі прысутнічае :values.',
'multiple_of' => 'Лік :attribute павінна быць Кратна :value',
'not_in' => 'Выбранае значэнне для :attribute памылкова.',
'not_regex' => 'Фармат :attribute недапушчальны.',
'numeric' => 'Поле :attribute павінна быць лікам.',
'password' => [
'letters' => ':Attribute павінна ўтрымліваць хаця б адну літару.',
'mixed' => ':Attribute павінны змяшчаць як мінімум адну вялікую і адну малую літары.',
'numbers' => 'У :attribute павінна быць хаця б адна лічба.',
'symbols' => ':Attribute павінен утрымліваць хаця б адзін сімвал.',
'uncompromised' => 'Дадзеныя :attribute з\'явіліся ў выніку ўцечкі дадзеных. Выберыце іншыя :attribute.',
],
'present' => 'Поле :attribute павінна прысутнічаць.',
'prohibited' => 'Поле :attribute забаронена.',
'prohibited_if' => 'Поле :attribute забаронена, калі :other роўна :value.',
'prohibited_unless' => 'Поле :attribute забаронена, калі толькі :other не знаходзіцца ў :values.',
'prohibits' => 'Поле :attribute забараняе прысутнасць :other.',
'regex' => 'Поле :attribute мае памылковы фармат.',
'required' => 'Поле :attribute абавязкова для запаўнення.',
'required_array_keys' => 'Поле :attribute павінна змяшчаць запісы для: :values.',
'required_if' => 'Поле :attribute абавязкова для запаўнення, калі :other раўняецца :value.',
'required_if_accepted' => 'Поле :attribute абавязковае, калі прымаецца :other.',
'required_unless' => 'Поле :attribute абавязкова для запаўнення, калі :other не раўняецца :values.',
'required_with' => 'Поле :attribute абавязкова для запаўнення, калі :values ўказана.',
'required_with_all' => 'Поле :attribute абавязкова для запаўнення, калі :values ўказана.',
'required_without' => 'Поле :attribute абавязкова для запаўнення, калі :values не ўказана.',
'required_without_all' => 'Поле :attribute абавязкова для запаўнення, калі ні адно з :values не ўказана.',
'same' => 'Значэнне :attribute павінна супадаць з :other.',
'size' => [
'array' => 'Колькасць элементаў у поле :attribute павінна быць :size.',
'file' => 'Размер файла в поле :attribute павінен быць :size кілабайт.',
'numeric' => 'Поле :attribute павінна быць :size.',
'string' => 'Колькасць сiмвалаў у поле :attribute павінна быць :size.',
],
'starts_with' => ':Attribute павінен пачынацца з аднаго з наступных значэнняў: :values.',
'string' => 'Поле :attribute павінна быць радком.',
'timezone' => 'Поле :attribute павінна быць сапраўдным гадзінным поясам.',
'ulid' => ':Attribute павінен быць сапраўдным ULID.',
'unique' => 'Такое значэнне поля :attribute ўжо існуе.',
'uploaded' => ':Attribute не ўдалося загрузіць.',
'uppercase' => ':Attribute павінны быць вялікімі.',
'url' => 'Поле :attribute мае памылковы фармат.',
'uuid' => ':Attribute павінен быць сапраўдным UUID.',
'attributes' => [
'address' => 'адрас',
'age' => 'ўзрост',
'amount' => 'сума',
'area' => 'вобласці',
'available' => 'даступны',
'birthday' => 'дзень нараджэння',
'body' => 'цела',
'city' => 'горад',
'content' => 'змест',
'country' => 'краіна',
'created_at' => 'створаны пры',
'creator' => 'стваральнік',
'current_password' => 'бягучы пароль',
'date' => 'дата',
'date_of_birth' => 'Дата нараджэння',
'day' => 'дзень',
'deleted_at' => 'выдалены ў',
'description' => 'апісанне',
'district' => 'раёна',
'duration' => 'працягласць',
'email' => 'электронная пошта',
'excerpt' => 'урывак',
'filter' => 'фільтр',
'first_name' => 'імя',
'gender' => 'пол',
'group' => 'група',
'hour' => 'гадзіну',
'image' => 'малюнак',
'last_name' => 'прозвішча',
'lesson' => 'урок',
'line_address_1' => 'радок адрас 1',
'line_address_2' => 'радок адрас 2',
'message' => 'паведамленне',
'middle_name' => 'імя па бацьку',
'minute' => 'хвіліна',
'mobile' => 'мабільны',
'month' => 'месяц',
'name' => 'імя',
'national_code' => 'нацыянальны код',
'number' => 'лік',
'password' => 'пароль',
'password_confirmation' => 'пацвярджэнне пароля',
'phone' => 'тэлефон',
'photo' => 'фота',
'postal_code' => 'паштовы індэкс',
'price' => 'цана',
'province' => 'правінцыя',
'recaptcha_response_field' => 'поле адказу recaptcha',
'remember' => 'запомніць',
'restored_at' => 'адноўлены ст',
'result_text_under_image' => 'выніковы тэкст пад малюнкам',
'role' => 'ролю',
'second' => 'другі',
'sex' => 'сэкс',
'short_text' => 'кароткі тэкст',
'size' => 'памер',
'state' => 'стан',
'street' => 'вуліца',
'student' => 'студэнт',
'subject' => 'прадметам',
'teacher' => 'выкладчык',
'terms' => 'тэрміны',
'test_description' => 'апісанне тэсту',
'test_locale' => 'тэставая мова',
'test_name' => 'імя тэсту',
'text' => 'тэкст',
'time' => 'час',
'title' => 'назва',
'updated_at' => 'абноўлены на',
'username' => 'імя карыстальніка',
'year' => 'год',
],
];

74
lang/bg.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(и още :count грешки)",
"(and :count more errors)": "(и още :count грешки)",
"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.": "Нова връзка за потвърждение е изпратена на вашия имейл адрес.",
"All rights reserved.": "Всички права запазени.",
"Already registered?": "Вече си се регистрирал?",
"Are you sure you want to delete your account?": "Сигурни ли сте, че искате да изтриете акаунта си?",
"Cancel": "Отмени",
"Click here to re-send the verification email.": "Щракнете тук, за да изпратите повторно имейла за потвърждение.",
"Confirm": "Потвърди",
"Confirm Password": "Потвърдете паролата",
"Current Password": "Текуща парола",
"Dashboard": "Табло",
"Delete Account": "Изтриване на акаунт",
"Email": "Имейл",
"Email Password Reset Link": "Връзка за нулиране на паролата за електронна поща",
"Ensure your account is using a long, random password to stay secure.": "Уверете се, че профилът ви използва дълга случайна парола, за да остане в безопасност.",
"Forbidden": "Забранено",
"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.": "Забравихте паролата си? Няма проблем. Просто ни кажете имейл адреса си и ще ви изпратим връзка за нулиране на паролата, която ви позволява да изберете нова.",
"Go to page :page": "Отидете на страница :page",
"Hello!": "Здравей!",
"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're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Ако имате проблеми с натискането на бутона \":actiontext\", копирайте и поставете URL адреса по-долу\nкъм вашия уеб браузър:",
"Invalid JSON was returned from the route.": "От маршрута е върнат невалиден JSON.",
"Log in": "Влез",
"Log Out": "Излез",
"Login": "Упълномощя",
"Logout": "Излизане",
"Name": "Име",
"New Password": "Парола",
"Not Found": "Не е намерен",
"of": "от",
"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.": "След като акаунтът ви бъде изтрит, всички негови ресурси и данни ще бъдат изтрити за постоянно. Моля, въведете паролата си, за да потвърдите, че искате да изтриете завинаги акаунта си.",
"Page Expired": "Страницата е просрочена",
"Pagination Navigation": "Навигация на страници",
"Password": "Парола",
"Payment Required": "изисква се плащане",
"Please click the button below to verify your email address.": "Моля, кликнете върху бутона по-долу, за да потвърдите имейл адреса си.",
"Profile": "Профил",
"Profile Information": "Информация за профила",
"Regards": "С уважение",
"Register": "Регистрирам",
"Remember me": "Запомни ме.",
"Resend Verification Email": "Изпрати повторно писмо за потвърждение",
"Reset Password": "парола",
"Reset Password Notification": "Известие за нулиране на паролата",
"results": "резултат",
"Save": "Запазя",
"Saved.": "Запазено.",
"Server Error": "Грешка",
"Service Unavailable": "Услугата е недостъпна",
"Showing": "Импресия",
"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 response is not a streamed response.": "Отговорът не е поточен отговор.",
"The response is not a view.": "Отговорът не е изглед.",
"This is a secure area of the application. Please confirm your password before continuing.": "Това е безопасна област на приложение. Моля, потвърдете паролата си, преди да продължите.",
"This password reset link will expire in :count minutes.": "Тази връзка за нулиране на паролата изтича след :count минути.",
"to": "към",
"Toggle navigation": "Превключване на навигацията",
"Too Many Requests": "Твърде много заявки",
"Unauthorized": "Неоторизиран",
"Update Password": "Обновяване на паролата",
"Update your account's profile information and email address.": "Актуализирайте информацията за профила на профила и имейл адреса си.",
"Verify Email Address": "Потвърди имейл адреса",
"Whoops!": "Опа!",
"You are receiving this email because we received a password reset request for your account.": "Получавате този имейл, защото сте заявили искане за нулиране на паролата за профила ви.",
"You're logged in!": "Вие сте влезли!",
"Your email address is unverified.": "Вашият имейл адрес не е потвърден."
}

9
lang/bg/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'Неуспешно удостоверяване на потребител.',
'password' => 'Паролата е грешна.',
'throttle' => 'Твърде много опити за вход. Моля, опитайте отново след :seconds секунди.',
];

8
lang/bg/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Напред &raquo;',
'previous' => '&laquo; Назад',
];

11
lang/bg/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'Паролата е нулирана!',
'sent' => 'Изпратено е напомняне за вашата парола!',
'throttled' => 'Моля изчакайте, преди да опитате отново.',
'token' => 'Този токен за нулиране на парола е невалиден.',
'user' => 'Потребител с такъв e-mail адрес не може да бъде открит.',
];

217
lang/bg/validation.php Normal file
View File

@@ -0,0 +1,217 @@
<?php
declare(strict_types=1);
return [
'accepted' => 'Трябва да приемете :attribute.',
'accepted_if' => 'Полето :attribute трябва да е прието, когато :other е :value.',
'active_url' => 'Полето :attribute не е валиден URL адрес.',
'after' => 'Полето :attribute трябва да бъде дата след :date.',
'after_or_equal' => 'Полето :attribute трябва да бъде дата след или равна на :date.',
'alpha' => 'Полето :attribute трябва да съдържа само букви.',
'alpha_dash' => 'Полето :attribute трябва да съдържа само букви, цифри, долна черта и тире.',
'alpha_num' => 'Полето :attribute трябва да съдържа само букви и цифри.',
'array' => 'Полето :attribute трябва да бъде масив.',
'ascii' => ':Attribute-те трябва да съдържат само еднобайтови буквено-цифрови знаци и символи.',
'before' => 'Полето :attribute трябва да бъде дата преди :date.',
'before_or_equal' => 'Полето :attribute трябва да бъде дата преди или равна на :date.',
'between' => [
'array' => 'Полето :attribute трябва да има между :min - :max елемента.',
'file' => 'Полето :attribute трябва да бъде между :min и :max килобайта.',
'numeric' => 'Полето :attribute трябва да бъде между :min и :max.',
'string' => 'Полето :attribute трябва да бъде между :min и :max знака.',
],
'boolean' => 'Полето :attribute трябва да съдържа Да или Не',
'can' => 'Полето :attribute съдържа неразрешена стойност.',
'confirmed' => 'Полето :attribute не е потвърдено.',
'current_password' => 'Паролата е неправилна.',
'date' => 'Полето :attribute не е валидна дата.',
'date_equals' => ':Attribute трябва да бъде дата, еднаква с :date.',
'date_format' => 'Полето :attribute не е във формат :format.',
'decimal' => ':Attribute-те трябва да имат :decimal знака след десетичната запетая.',
'declined' => ':Attribute-те трябва да бъдат отхвърлени.',
'declined_if' => ':Attribute трябва да се отклони, когато :other е :value.',
'different' => 'Полетата :attribute и :other трябва да са различни.',
'digits' => 'Полето :attribute трябва да има :digits цифри.',
'digits_between' => 'Полето :attribute трябва да има между :min и :max цифри.',
'dimensions' => 'Невалидни размери за снимка :attribute.',
'distinct' => 'Данните в полето :attribute се дублират.',
'doesnt_end_with' => ':Attribute-те може да не завършват с едно от следните: :values.',
'doesnt_start_with' => ':Attribute-те може да не започват с едно от следните: :values.',
'email' => 'Полето :attribute е в невалиден формат.',
'ends_with' => ':Attribute трябва да завършва с една от следните стойности: :values.',
'enum' => 'Избраните :attribute са невалидни.',
'exists' => 'Избранато поле :attribute вече съществува.',
'file' => 'Полето :attribute трябва да бъде файл.',
'filled' => 'Полето :attribute е задължително.',
'gt' => [
'array' => ':Attribute трябва да разполага с повече от :value елемента.',
'file' => ':Attribute трябва да бъде по-голяма от :value килобайта.',
'numeric' => ':Attribute трябва да бъде по-голяма от :value.',
'string' => ':Attribute трябва да бъде по-голяма от :value знака.',
],
'gte' => [
'array' => ':Attribute трябва да разполага с :value елемента или повече.',
'file' => ':Attribute трябва да бъде по-голяма от или равна на :value килобайта.',
'numeric' => ':Attribute трябва да бъде по-голяма от или равна на :value.',
'string' => ':Attribute трябва да бъде по-голяма от или равна на :value знака.',
],
'image' => 'Полето :attribute трябва да бъде изображение.',
'in' => 'Избраното поле :attribute е невалидно.',
'in_array' => 'Полето :attribute не съществува в :other.',
'integer' => 'Полето :attribute трябва да бъде цяло число.',
'ip' => 'Полето :attribute трябва да бъде IP адрес.',
'ipv4' => 'Полето :attribute трябва да бъде IPv4 адрес.',
'ipv6' => 'Полето :attribute трябва да бъде IPv6 адрес.',
'json' => 'Полето :attribute трябва да бъде JSON низ.',
'lowercase' => ':Attribute трябва да са малки букви.',
'lt' => [
'array' => ':Attribute трябва да разполага с по-малко от :value елемента.',
'file' => ':Attribute трябва да бъде по-малка от :value килобайта.',
'numeric' => ':Attribute трябва да бъде по-малка от :value.',
'string' => ':Attribute трябва да бъде по-малка от :value знака.',
],
'lte' => [
'array' => ':Attribute не трябва да разполага с повече от :value елемента.',
'file' => ':Attribute трябва да бъде по-малка от или равна на :value килобайта.',
'numeric' => ':Attribute трябва да бъде по-малка от или равна на :value.',
'string' => ':Attribute трябва да бъде по-малка от или равна на :value знака.',
],
'mac_address' => ':Attribute трябва да е валиден MAC адрес.',
'max' => [
'array' => 'Полето :attribute трябва да има по-малко от :max елемента.',
'file' => 'Полето :attribute трябва да бъде по-малко от :max килобайта.',
'numeric' => 'Полето :attribute трябва да бъде по-малко от :max.',
'string' => 'Полето :attribute трябва да бъде по-малко от :max знака.',
],
'max_digits' => ':Attribute-те не трябва да имат повече от :max цифри.',
'mimes' => 'Полето :attribute трябва да бъде файл от тип: :values.',
'mimetypes' => 'Полето :attribute трябва да бъде файл от тип: :values.',
'min' => [
'array' => 'Полето :attribute трябва има минимум :min елемента.',
'file' => 'Полето :attribute трябва да бъде минимум :min килобайта.',
'numeric' => 'Полето :attribute трябва да бъде минимум :min.',
'string' => 'Полето :attribute трябва да бъде минимум :min знака.',
],
'min_digits' => ':Attribute-те трябва да имат поне :min цифри.',
'missing' => 'Полето :attribute трябва да липсва.',
'missing_if' => 'Полето :attribute трябва да липсва, когато :other е :value.',
'missing_unless' => 'Полето :attribute трябва да липсва, освен ако :other не е :value.',
'missing_with' => 'Полето :attribute трябва да липсва, когато :values присъства.',
'missing_with_all' => 'Полето :attribute трябва да липсва, когато има :values.',
'multiple_of' => 'Числото :attribute трябва да бъде кратно на :value',
'not_in' => 'Избраното поле :attribute е невалидно.',
'not_regex' => 'Форматът на :attribute е невалиден.',
'numeric' => 'Полето :attribute трябва да бъде число.',
'password' => [
'letters' => ':Attribute-те трябва да съдържат поне една буква.',
'mixed' => ':Attribute-те трябва да съдържат поне една главна и една малка буква.',
'numbers' => ':Attribute-те трябва да съдържат поне едно число.',
'symbols' => ':Attribute-те трябва да съдържат поне един символ.',
'uncompromised' => 'Дадените :attribute се появиха при изтичане на данни. Моля, изберете различни :attribute.',
],
'present' => 'Полето :attribute трябва да съествува.',
'prohibited' => 'Поле :attribute е забранено.',
'prohibited_if' => 'Полето :attribute е забранено, когато :other е равно на :value.',
'prohibited_unless' => 'Полето :attribute е забранено, освен ако :other не е в :values.',
'prohibits' => 'Полето :attribute изключва наличието на :other.',
'regex' => 'Полето :attribute е в невалиден формат.',
'required' => 'Полето :attribute е задължително.',
'required_array_keys' => 'Полето :attribute трябва да съдържа записи за: :values.',
'required_if' => 'Полето :attribute се изисква, когато :other е :value.',
'required_if_accepted' => 'Полето :attribute е задължително, когато се приема :other.',
'required_unless' => 'Полето :attribute се изисква, освен ако :other не е в :values.',
'required_with' => 'Полето :attribute се изисква, когато :values има стойност.',
'required_with_all' => 'Полето :attribute е задължително, когато :values имат стойност.',
'required_without' => 'Полето :attribute се изисква, когато :values няма стойност.',
'required_without_all' => 'Полето :attribute се изисква, когато никое от полетата :values няма стойност.',
'same' => 'Полетата :attribute и :other трябва да съвпадат.',
'size' => [
'array' => 'Полето :attribute трябва да има :size елемента.',
'file' => 'Полето :attribute трябва да бъде :size килобайта.',
'numeric' => 'Полето :attribute трябва да бъде :size.',
'string' => 'Полето :attribute трябва да бъде :size знака.',
],
'starts_with' => ':Attribute трябва да започва с едно от следните: :values.',
'string' => 'Полето :attribute трябва да бъде знаков низ.',
'timezone' => 'Полето :attribute трябва да съдържа валидна часова зона.',
'ulid' => ':Attribute трябва да е валиден ULID.',
'unique' => 'Полето :attribute вече съществува.',
'uploaded' => 'Неуспешно качване на :attribute.',
'uppercase' => ':Attribute трябва да са главни букви.',
'url' => 'Полето :attribute е в невалиден формат.',
'uuid' => ':Attribute трябва да бъде валиден UUID.',
'attributes' => [
'address' => 'адрес',
'age' => 'възраст',
'amount' => 'количество',
'area' => '■ площ',
'available' => 'достъпен',
'birthday' => 'рожден ден',
'body' => 'тяло',
'city' => 'град',
'content' => 'съдържание',
'country' => 'държава',
'created_at' => 'създаден в',
'creator' => 'създател',
'current_password' => 'Настояща парола',
'date' => 'дата',
'date_of_birth' => 'дата на раждане',
'day' => 'ден',
'deleted_at' => 'изтрит на',
'description' => 'описание',
'district' => 'окръг',
'duration' => 'продължителност',
'email' => 'e-mail',
'excerpt' => 'откъс',
'filter' => 'филтър',
'first_name' => 'име',
'gender' => 'пол',
'group' => 'група',
'hour' => 'час',
'image' => 'образ',
'last_name' => 'фамилия',
'lesson' => 'урок',
'line_address_1' => 'адрес на линия 1',
'line_address_2' => 'адрес на линия 2',
'message' => 'съобщение',
'middle_name' => 'презиме',
'minute' => 'минута',
'mobile' => 'gsm',
'month' => 'месец',
'name' => 'име',
'national_code' => 'национален код',
'number' => 'номер',
'password' => 'парола',
'password_confirmation' => 'Потвърждение на парола',
'phone' => 'телефон',
'photo' => 'снимка',
'postal_code' => 'пощенски код',
'price' => 'цена',
'province' => 'провинция',
'recaptcha_response_field' => 'рекапча',
'remember' => 'помня',
'restored_at' => 'възстановен при',
'result_text_under_image' => 'текст на резултата под изображението',
'role' => 'роля',
'second' => 'секунда',
'sex' => 'пол',
'short_text' => 'кратък текст',
'size' => 'размер',
'state' => 'състояние',
'street' => 'улица',
'student' => 'студент',
'subject' => 'заглавие',
'teacher' => 'учител',
'terms' => 'условия',
'test_description' => 'описание на теста',
'test_locale' => 'тест локал',
'test_name' => 'име на теста',
'text' => 'текст',
'time' => 'време',
'title' => 'заглавие',
'updated_at' => 'актуализиран на',
'username' => 'потребител',
'year' => 'година',
],
];

74
lang/bn.json Normal file
View File

@@ -0,0 +1,74 @@
{
"(and :count more error)": "(এবং আরও :count টি ত্রুটি)",
"(and :count more errors)": "(এবং আরও :count টি ত্রুটিসমূহ)",
"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.": "আপনার ইমেল ঠিকানায় একটি নতুন যাচাইকরণ লিঙ্ক পাঠানো হয়েছে।",
"All rights reserved.": "সমস্ত অধিকার সংরক্ষিত।",
"Already registered?": "ইতিমধ্যে নিবন্ধন করেছেন?",
"Are you sure you want to delete your account?": "আপনি কি নিশ্চিতরূপে আপনার অ্যাকাউন্ট মুছে ফেলতে ইচ্ছুক?",
"Cancel": "বাতিল করা হয়েছে",
"Click here to re-send the verification email.": "যাচাইকরণ ইমেল পুনরায় পাঠাতে এখানে ক্লিক করুন।",
"Confirm": "নিশ্চিত করুন",
"Confirm Password": "পাসওয়ার্ড নিশ্চিত করুন",
"Current Password": "বর্তমান পাসওয়ার্ড",
"Dashboard": "ড্যাশবোর্ড",
"Delete Account": "অ্যাকাউন্ট মুছে ফেলুন",
"Email": "ই-মেইল",
"Email Password Reset Link": "ইমেল পাসওয়ার্ড রিসেট লিংক",
"Ensure your account is using a long, random password to stay secure.": "নিরাপদ রাখতে, আপনার অ্যাাকাউন্টে দীর্ঘ, এলোমেলো পাসওয়ার্ডের ব্যাবহার নিশ্চিত করুন।",
"Forbidden": "নিষিদ্ধ",
"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.": "আপনার পাসওয়ার্ড ভুলে গেছেন? সমস্যা নেই, শুধু আমাদের আপনার ই-মেইল ঠিকানা জানান এবং আমরা আপনাকে একটি পাসওয়ার্ড রিসেট লিঙ্ক ইমেইল করবো, সেটি আপনাকে একটি নতুন পাসওয়ার্ড নির্বাচন করার অনুমতি দেবে।",
"Go to page :page": "পাতা :page এ যান",
"Hello!": "হ্যালো!",
"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're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "আপনার যদি \":actionText\" বোতামে ক্লিক করতে সমস্যা হয়, তাহলে নিচের URL টি কপি করে পেস্ট করুন\nআপনার ওয়েব ব্রাউজারে:",
"Invalid JSON was returned from the route.": "রাউট থেকে অবৈধ JSON এসেছে।",
"Log in": "লগইন করুন",
"Log Out": "লগ-আউট",
"Login": "লগইন",
"Logout": "লগ-আউট",
"Name": "নাম",
"New Password": "নতুন পাসওয়ার্ড",
"Not Found": "পাওয়া যায় নি",
"of": "সর্বমোট",
"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.": "একবার আপনার অ্যাকাউন্ট মুছে ফেলা হলে, এর সমস্ত রিসোর্সসমূহ এবং ডেটা স্থায়ীভাবে মুছে যাবে। আপনি স্থায়ীভাবে আপনার অ্যাকাউন্ট মুছে ফেলতে চান তা নিশ্চিত করতে দয়া করে আপনার পাসওয়ার্ড লিখুন।",
"Page Expired": "মেয়াদউত্তীর্ণ",
"Pagination Navigation": "পত্রাঙ্ক ন্যাভিগেশন",
"Password": "পাসওয়ার্ড",
"Payment Required": "পেমেন্ট আবশ্যক",
"Please click the button below to verify your email address.": "আপনার ইমেল ঠিকানা যাচাই করার জন্য নিচের বাটনে ক্লিক করুন ।",
"Profile": "প্রোফাইল",
"Profile Information": "প্রোফাইল তথ্য",
"Regards": "শুভেচ্ছা",
"Register": "নিবন্ধন",
"Remember me": "আমাকে মনে রাখুন",
"Resend Verification Email": "যাচাই ইমেইল পুনরায় পাঠান",
"Reset Password": "পাসওয়ার্ড রিসেট করুন",
"Reset Password Notification": "পাসওয়ার্ড বিজ্ঞপ্তি রিসেট করুন",
"results": "ফলাফল",
"Save": "সংরক্ষণ",
"Saved.": "সংরক্ষিত ।",
"Server Error": "সার্ভারের ত্রুটি",
"Service Unavailable": "সার্ভিস উপলব্ধ নয়",
"Showing": "প্রদর্শন করা হচ্ছে",
"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 response is not a streamed response.": "রেসপন্সটি একটি স্ট্রিমড রেসপন্স নয়।",
"The response is not a view.": "রেসপন্সটি একটি ভিউ নয়।",
"This is a secure area of the application. Please confirm your password before continuing.": "এই অ্যাপ্লিকেশনটি একটি নিরাপদ এলাকা ৷ অব্যাহত আগে আপনার পাসওয়ার্ড নিশ্চিত করুন ৷",
"This password reset link will expire in :count minutes.": "এই পাসওয়ার্ড রিসেট লিঙ্কটি :count মিনিটের মধ্যে এর মেয়াদ শেষ হবে ৷",
"to": "প্রাপক",
"Toggle navigation": "জন্য অনুসন্ধান করুন:",
"Too Many Requests": "অনেক অনুরোধ",
"Unauthorized": "অনুমোদিত নয়",
"Update Password": "পাসওয়ার্ড আপডেট করুন",
"Update your account's profile information and email address.": "আপনার অ্যাকাউন্ট এর প্রোফাইল তথ্য এবং ইমেল ঠিকানা আপডেট করুন ।",
"Verify Email Address": "ই-মেইল ঠিকানা যাচাই করুন",
"Whoops!": "ওপসস!",
"You are receiving this email because we received a password reset request for your account.": "আমরা আপনার অ্যাকাউন্টের জন্য একটি পাসওয়ার্ড রিসেট অনুরোধ পেয়েছি, কারণ আপনি এই ইমেইল পাচ্ছেন ।",
"You're logged in!": "আপনি লগ ইন করছেন!",
"Your email address is unverified.": "আপনার ইমেল ঠিকানা যাচাই করা হয়নি।"
}

Some files were not shown because too many files have changed in this diff Show More