Compare commits

..

34 Commits

Author SHA1 Message Date
Miguel Nogueira 85c719c24d Fix bad key name 2020-12-19 01:33:59 +00:00
Miguel Nogueira 5df3f965ef Merged in revert-pr-6 (pull request #7)
Revert "Apply fixes from StyleCI (pull request #6)"
2020-10-21 00:31:11 +00:00
Miguel Nogueira 4eb115d165 Revert "Apply fixes from StyleCI (pull request #6)"
This reverts pull request #6.

> This pull request applies code style fixes from an analysis carried out by [StyleCI](https://bitbucket.styleci.io).
> 
> For more information, click [here](https://bitbucket.styleci.io/analyses/a2Jl7D).
2020-10-21 00:29:50 +00:00
Miguel Nogueira 0433ce7693 Merged in analysis-a2Jl7D (pull request #6)
Apply fixes from StyleCI
2020-10-21 00:24:54 +00:00
Miguel Nogueira 773ec570d9 Apply fixes from StyleCI 2020-10-21 00:01:41 +00:00
Miguel Nogueira 53c23f3698 Changed branding for the repo 2020-10-21 00:01:32 +00:00
Miguel Nogueira f1db159eee
Update SECURITY.md 2020-09-08 17:44:56 +01:00
Miguel Nogueira 0d14a65ee5
Create SECURITY.md 2020-09-08 17:32:56 +01:00
Miguel Nogueira 2942157603
Update README.md 2020-09-08 06:16:27 +01:00
Miguel Nogueira 11f3fb90d0
Update README.md 2020-09-08 06:16:14 +01:00
Miguel Nogueira 937a0206a5 Added existing account check to logs 2020-09-08 01:38:56 +01:00
Miguel Nogueira 3598a32ecf Added existing account check to logs 2020-09-08 01:37:33 +01:00
Miguel Nogueira ac8b303e2c Update to logauthfailure 2020-09-08 01:34:47 +01:00
Miguel Nogueira e93abd2ab7 Added logging for successful authentication attempts 2020-09-08 01:31:09 +01:00
Miguel Nogueira 20ab381076 Added logging for failed authentication attempts 2020-09-08 01:26:27 +01:00
Miguel Nogueira e566e40404 Update target user in logs 2020-09-08 00:07:50 +01:00
Miguel Nogueira b0a935b8b3 Add acceptable "permanent" ban time 2020-09-08 00:06:27 +01:00
Miguel Nogueira 0dfb68dba2 Add acceptable "permanent" ban time 2020-09-08 00:05:37 +01:00
Miguel Nogueira 24303052ad Ban validation update 2020-09-07 23:57:50 +01:00
Miguel Nogueira 178bc31a6e Ban datetime format 2020-09-07 23:44:14 +01:00
Miguel Nogueira 98e557a840 Update ban dates 2020-09-07 23:42:09 +01:00
Miguel Nogueira 95bf7c239e Update ban time logic 2020-09-07 23:38:25 +01:00
Miguel Nogueira 4d2595dd39 Update ban logic 2020-09-07 23:33:35 +01:00
Miguel Nogueira 4e81a41210 Updated installation process 2020-09-07 23:22:25 +01:00
Miguel Nogueira 1319ce6b86 Added more debug logging 2020-09-07 22:56:54 +01:00
Miguel Nogueira bea83b650c Added more debug logging 2020-09-07 22:54:20 +01:00
Miguel Nogueira 675cc3c329 Import missing facade 2020-09-07 22:35:42 +01:00
Miguel Nogueira e8119b763c Register Application observers 2020-09-07 21:43:48 +01:00
Miguel Nogueira 04838048ce
Merge pull request #10 from spacejewel-hosting/translate
Force new users to verify email
2020-09-03 20:22:11 +01:00
Miguel Nogueira 7292aab4b7
Merge pull request #9 from spacejewel-hosting/translate
Menu translations and source files
2020-09-03 17:38:18 +01:00
Miguel Nogueira e37b38f2d9
Update README.md 2020-09-03 17:19:15 +01:00
Miguel Nogueira c83e720a6d
Create CONTRIBUTING.md 2020-09-03 17:18:28 +01:00
Miguel Nogueira fbd1e83306
Create CODE_OF_CONDUCT.md 2020-09-03 04:47:42 +01:00
Miguel Nogueira 50ed47964c
Merge pull request #5 from spacejewel-hosting/translate
New translations (i10n)

This merge adds the following;
 - Completed Portuguese translations
 - Spanish and French translation templates
 - Several bugfixes to Vacancies, Applications, and Appointments
 - Added missing translations
 - Language selection menu

Next feature for 0.6.0:
 - Self updater with Artisan command for non-git installations
2020-09-03 04:38:25 +01:00
30 changed files with 1400 additions and 1145 deletions

View File

@ -21,9 +21,6 @@ RECAPTCHA_PRIVATE_KEY=
RECAPTCHA_VERIFY_URL="https://www.google.com/recaptcha/api/siteverify"
# WARNING: Your contact form will be useless if you change this value. Only change this URL if Google updates it.
IPGEO_API_KEY=""
IPGEO_API_URL=""
MOJANG_STATUS_URL="https://status.mojang.com/check"
MOJANG_API_URL="https://api.mojang.com"
@ -32,7 +29,7 @@ IPGEO_API_URL="https://api.ipgeolocation.io/ipgeo"
ARCANEDEV_LOGVIEWER_MIDDLEWARE=web,auth,can:admin.maintenance.logs.view
RELEASE=staffmanagement@0.2.0
RELEASE=staffmanagement@0.6.1
SLACK_INTEGRATION_WEBHOOK=
@ -68,4 +65,8 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
# Mostly for developers, but with Papertrail, you can easily see what the app's users are doing without relying on
# the internal log viewer.
SENTRY_LARAVEL_DSN=
PAPERTRAIL_URL=
PAPERTRAIL_PORT

76
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at support@spacejewel-hosting.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

29
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,29 @@
# Thank you for contributing!
Read this file carefully before contributing to the project. It's important that everyone follows these rules to ensure smooth contribution.
## General workflow
Since the project is under version 1.0.0, the master branch can be quite unstable, and even unusable. For this reason, I recommend you stick to the published
releases, unless you intend on helping out with the project.
New features are commited directly to the ``master`` branch, while translations are commited to a special service branch, merged onto ``translate``, tested, and
merged back to master. Above version 1.0.0, new features should follow the same procedure as translations.
## Before commiting
Before commiting, make sure your code adheres to the Laravel coding guidelines, as well as PSR-4. I'll personally review and merge each PR.
Thank you for your interest!
# Bug reports
As always, bug reports should stick to the bug report template. GitHub makes this easy for you by letting you choose which issue template you'd like to use
before reporting an isuse. This helps everyone stay in the same page.
Issues published without a template might take longer to be resolved, or may be ignored and marked ``wontfix``.
# Licensing
Any contributions you make will be under the GNU GPL v3 license, which is the license that covers this project.

View File

@ -1,6 +1,6 @@
# Raspberry Teams - The Simple Staff Application Manager v 0.1.0 [![Crowdin](https://badges.crowdin.net/raspberry-staff-manager/localized.svg)](https://crowdin.com/project/raspberry-staff-manager)
## The quick and pain-free staff application manager
# RB Recruiter v 0.6.2 [![Crowdin](https://badges.crowdin.net/raspberry-staff-manager/localized.svg)](https://crowdin.com/project/raspberry-staff-manager)
## The quick and pain-free form management solution for communities
Have you ever gotten tired of managing your Minecraft server/network's applications through Discord (or anything else) and having to scroll through hundreds of new messages just to find that one applicant's username?
@ -48,6 +48,14 @@ Tech stack:
- jQuery / Plain Javascript
- vueJS (in the future)
# Stability
Currently, the ``master`` branch is highly unstable, since it's under active development. Expect it to break with each commit. Even though I make an effort to make sure each commit is good to go before pushing, things might still break unexpectedly, and you may find a lot of bugs (which you should report).
Every released version is currently pre-release. If you really want to run this before version ``1.0.0`` comes out, always stay on the latest version, as those will always be tested before release, ensuring less chaos.
*Note: This application is NOT production ready! It won't be until the first stable release comes out, which might take a bit longer.
# Operating System Requirements
Currently, this application is only supported on Linux environments (Ubuntu 20.04 or derivatives are recommended).

19
SECURITY.md Normal file
View File

@ -0,0 +1,19 @@
# Security Policy
## Supported Versions
The following versions are currently supported:
| Version | Supported |
| ------- | ------------------ |
| 0.1.x | :x: |
| 0.5.x | :x: |
| 0.6.x | :white_check_mark: |
## Reporting a Vulnerability
To securely report a vulnerability, you may send me an email directly containing the details of said vulnerability: ``me@nogueira.codes``.
You may optionally encrypt your message with my [public PGP key](http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x48DF709E7405702B).
Use this free [online encryption tool](https://www.igolder.com/pgp/encryption/) if you don't know how to use PGP on your desktop.

View File

@ -17,6 +17,10 @@ class Ban extends Model
];
public $dates = [
'bannedUntil'
];
public function user()
{
return $this->belongsTo('App\User', 'userID', 'id');

View File

@ -99,12 +99,16 @@ class Install extends Command
$settings['MAIL_PASSWORD'] = $this->secret('SMTP Password (Input won\'t be seen)');
$settings['MAIL_PORT'] = $this->ask('SMTP Server Port');
$settings['MAIL_HOST'] = $this->ask('SMTP Server Hostname');
$settings['MAIL_FROM_ADDRESS'] = $this->ask('E-mail address to send from');
$this->info('== Notification Settings (5/6) (Slack) ==');
$settings['SLACK_INTEGRATION_WEBHOOK'] = $this->ask('Integration webhook URL');
$this->info('== Web Settings (6/6) ==');
$settings['APP_URL'] = $this->ask('Application\'s URL');
$settings['APP_URL'] = $this->ask('Application\'s URL (ex. https://where.you.installed.theapp.com): ');
$settings['APP_LOGO'] = $this->ask('App logo (Link to an image): ');
$settings['APP_SITEHOMEPAGE'] = $this->ask('Site homepage (appears in the main header): ');
} while(!$this->confirm('Are you sure you want to save these settings? You can always go back and try again.'));

View File

@ -15,7 +15,7 @@ class BanController extends Controller
public function insert(BanUserRequest $request, User $user)
{
$this->authorize('create', Ban::class);
$this->authorize('create', [Ban::class, $user]);
if (is_null($user->bans))
{
@ -50,13 +50,13 @@ class BanController extends Controller
else
{
// Essentially permanent
$expiryDate->addYears(100);
$expiryDate->addYears(5);
}
$ban = Ban::create([
'userID' => $user->id,
'reason' => $reason,
'bannedUntil' => $expiryDate->toDateTimeString() ?? null,
'bannedUntil' => $expiryDate->format('Y-m-d H:i:s'),
'userAgent' => "Unknown",
'authorUserID' => Auth::user()->id
]);

View File

@ -7,6 +7,7 @@ use App\Options as Option;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class OptionsController extends Controller
{
@ -29,17 +30,33 @@ class OptionsController extends Controller
{
if (Auth::user()->can('admin.settings.edit'))
{
Log::debug('Updating application options', [
'ip' => $request->ip(),
'ua' => $request->userAgent(),
'username' => Auth::user()->username
]);
foreach($request->all() as $optionName => $option)
{
try
{
if (Options::optionExists($option))
Log::debug('Going through option ' . $optionName);
if (Options::optionExists($optionName))
{
Log::debug('Option exists, updating to new values', [
'opt' => $optionName,
'new_value' => $option
]);
Options::changeOption($optionName, $option);
}
}
catch(\Exception $ex)
{
Log::error('Unable to update options!', [
'msg' => $ex->getMessage(),
'trace' => $ex->getTraceAsString()
]);
report($ex);
$errorCond = true;
$request->session()->flash('error', 'An error occurred while trying to save settings: ' . $ex->getMessage());
}

View File

@ -27,7 +27,7 @@ class BanUserRequest extends FormRequest
{
return [
'reason' => 'required|string',
'durationOperand' => 'nullable|integer',
'durationOperand' => 'nullable|string',
'durationOperator' => 'nullable|string'
];
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;
class LogAuthenticationFailure
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle($event)
{
$targetAccountID = 0;
$originalIP = "0.0.0.0";
if (isset($event->user->id))
{
$targetAccountID = $event->user->id;
}
Log::alert('SECURITY (login): Detected failed authentication attempt!', [
'targetAccountID' => $targetAccountID,
'existingAccount' => ($targetAccountID == 0) ? false : true,
'sourceIP' => request()->ip(),
'matchesAccountLastIP' => request()->ip() == $originalIP,
'sourceUserAgent' => request()->userAgent(),
]);
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;
class LogAuthenticationSuccess
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle($event)
{
Log::info('SECURITY (postauth-pre2fa): Detected successful login attempt', [
'accountID' => $event->user->id,
'sourceIP' => request()->ip(),
'matchesAccountLastIP' => request()->ip() == $event->user->originalIP,
'sourceUserAgent' => request()->userAgent(),
]);
}
}

View File

@ -3,6 +3,7 @@
namespace App\Observers;
use App\Application;
use Illuminate\Support\Facades\Log;
class ApplicationObserver
{

View File

@ -38,18 +38,19 @@ class BanPolicy
/**
* Determine whether the user can create models.
*
* @param \App\User $user
* @param \App\User $user
* @param User $targetUser
* @return mixed
*/
public function create(User $user)
public function create(User $user, User $targetUser)
{
Log::debug("Authorization check started", [
'requiredRoles' => 'admin',
'currentRoles' => $user->roles(),
'hasRequiredRole' => $user->hasRole('admin'),
'targetUser' => $targetUser->username,
'isCurrentUser' => Auth::user()->is($user)
]);
return $user->hasRole('admin') && Auth::user()->isNot($user);
return $user->hasRole('admin') && $user->isNot($targetUser);
}
/**

View File

@ -2,6 +2,8 @@
namespace App\Providers;
use App\Application;
use App\Observers\ApplicationObserver;
use App\Observers\UserObserver;
use App\User;
use Illuminate\Support\Facades\Schema;
@ -32,7 +34,9 @@ class AppServiceProvider extends ServiceProvider
]);
Schema::defaultStringLength(191);
User::observe(UserObserver::class);
Application::observe(ApplicationObserver::class);
$this->app['request']->server->set('HTTPS', $this->app->environment() != 'local');
}

View File

@ -2,7 +2,11 @@
namespace App\Providers;
use App\Listeners\LogAuthenticationFailure;
use App\Listeners\LogAuthenticationSuccess;
use App\Listeners\OnUserRegistration;
use Illuminate\Auth\Events\Failed;
use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
@ -20,6 +24,12 @@ class EventServiceProvider extends ServiceProvider
SendEmailVerificationNotification::class,
OnUserRegistration::class
],
Failed::class => [
LogAuthenticationFailure::class
],
Login::class => [
LogAuthenticationSuccess::class
],
'App\Events\ApplicationApprovedEvent' => [
'App\Listeners\PromoteUser'
],

View File

@ -13,7 +13,7 @@ return [
|
*/
'failed' => 'Estas credenciales no coinciden con nuestros registros.',
'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.',
'failed' => 'These credentials do not match our records.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ return [
|
*/
'previous' => '&laquo; Anterior',
'next' => 'Siguiente &raquo;',
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@ -13,10 +13,10 @@ return [
|
*/
'reset' => '¡Tu contraseña ha sido restablecida!',
'sent' => '¡Hemos enviado por correo electrónico tu enlace de restablecimiento de contraseña!',
'throttled' => 'Por favor, espere antes de reintentar.',
'token' => 'Este token de restablecimiento de contraseña no es válido.',
'user' => "No podemos encontrar un usuario con esa dirección de correo electrónico.",
'reset' => 'Your password has been reset!',
'sent' => 'We have emailed your password reset link!',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",
];

View File

@ -13,110 +13,110 @@ return [
|
*/
'accepted' => 'El campo :attribute debe ser aceptado.',
'active_url' => ':attribute no es una URL válida.',
'after' => ':attribute debe ser una fecha posterior a :date.',
'after_or_equal' => ':attribute debe ser una fecha posterior o igual a :date.',
'alpha' => ':attribute sólo puede contener letras.',
'alpha_dash' => ':attribute sólo puede contener letras, números, guiones y guiones bajos.',
'alpha_num' => ':attribute sólo puede contener letras y números.',
'array' => 'El campo :attribute debe ser un array.',
'before' => ':attribute debe ser una fecha anterior a :date.',
'before_or_equal' => ':attribute debe ser una fecha anterior o igual a :date.',
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'numeric' => ':attribute debe estar entre :min y :max.',
'file' => ':attribute debe estar entre :min y :max kilobytes.',
'string' => ':attribute debe tener entre :min y :max caracteres.',
'array' => ':attribute debe tener entre :min y :max elementos.',
'numeric' => 'The :attribute must be between :min and :max.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string' => 'The :attribute must be between :min and :max characters.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'El campo :attribute debe ser verdadero o falso.',
'confirmed' => 'El :attribute de confirmación no coincide.',
'date' => ':attribute no es una fecha válida.',
'date_equals' => ':attribute debe ser una fecha igual a :date.',
'date_format' => ':attribute no coincide con el formato :format.',
'different' => ':attribute y :other deben ser diferentes.',
'digits' => ':attribute debe tener :digits dígitos.',
'digits_between' => ':attribute debe tener entre :min y :max dígitos.',
'dimensions' => 'El campo :attribute tiene dimensiones de imagen inválidas.',
'distinct' => 'El campo :attribute tiene un valor duplicado.',
'email' => ':attribute debe ser una dirección de correo electrónico válida.',
'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.',
'exists' => 'El :attribute seleccionado no es válido.',
'file' => ':attribute debe ser un archivo.',
'filled' => 'El campo :attribute debe tener un valor.',
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'dimensions' => 'The :attribute has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'numeric' => 'El campo :attribute debe ser mayor que :value.',
'file' => ':attribute debe ser mayor que :value kilobytes.',
'string' => ':attribute debe ser mayor que :value caracteres.',
'array' => 'El campo :attribute debe tener más de :value items.',
'numeric' => 'The :attribute must be greater than :value.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'string' => 'The :attribute must be greater than :value characters.',
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'El campo :attribute debe ser mayor o igual a :value.',
'file' => ':attribute debe ser mayor o igual a :value kilobytes.',
'string' => 'El campo :attribute debe ser mayor o igual a :value caracteres.',
'array' => ':attribute debe tener :value o más.',
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'array' => 'The :attribute must have :value items or more.',
],
'image' => 'El campo :attribute debe ser una imagen.',
'in' => 'El :attribute seleccionado no es válido.',
'in_array' => 'El campo :attribute no existe en :other.',
'integer' => 'El campo :attribute debe ser un entero.',
'ip' => ':attribute debe ser una dirección IP válida.',
'ipv4' => ':attribute debe ser una dirección IPv4 válida.',
'ipv6' => ':attribute debe ser una dirección IPv6 válida.',
'json' => ':attribute debe ser una cadena JSON válida.',
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'lt' => [
'numeric' => 'El campo :attribute debe ser menor que :value.',
'file' => ':attribute debe ser menor que :value kilobytes.',
'string' => ':attribute debe tener menos de :value caracteres.',
'array' => ':attribute debe tener menos de :value elementos.',
'numeric' => 'The :attribute must be less than :value.',
'file' => 'The :attribute must be less than :value kilobytes.',
'string' => 'The :attribute must be less than :value characters.',
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'El campo :attribute debe ser menor o igual a :value.',
'file' => ':attribute debe ser menor o igual a :value kilobytes.',
'string' => ':attribute debe ser menor o igual a :value caracteres.',
'array' => 'El campo :attribute no debe tener más de :value items.',
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'array' => 'The :attribute must not have more than :value items.',
],
'max' => [
'numeric' => ':attribute no puede ser mayor que :max.',
'file' => ':attribute no puede ser mayor que :max kilobytes.',
'string' => ':attribute no puede ser mayor que :max caracteres.',
'array' => ':attribute no puede tener más de :max elementos.',
'numeric' => 'The :attribute may not be greater than :max.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => 'The :attribute may not be greater than :max characters.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'El campo :attribute debe ser un archivo de tipo: :values.',
'mimetypes' => 'El campo :attribute debe ser un archivo de tipo: :values.',
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'numeric' => ':attribute debe ser al menos :min.',
'file' => ':attribute debe tener al menos :min kilobytes.',
'string' => ':attribute debe tener al menos :min caracteres.',
'array' => ':attribute debe tener al menos :min items.',
'numeric' => 'The :attribute must be at least :min.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min characters.',
'array' => 'The :attribute must have at least :min items.',
],
'not_in' => 'El :attribute seleccionado no es válido.',
'not_regex' => 'El formato :attribute no es válido.',
'numeric' => ':attribute debe ser un número.',
'password' => 'La contraseña es incorrecta.',
'present' => 'El campo :attribute debe estar presente.',
'regex' => 'El formato :attribute no es válido.',
'required' => 'El campo :attribute es obligatorio.',
'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.',
'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.',
'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.',
'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.',
'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.',
'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values están presentes.',
'same' => ':attribute y :other deben coincidir.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => 'The password is incorrect.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'numeric' => 'El campo :attribute debe ser :size.',
'file' => ':attribute debe ser :size kilobytes.',
'string' => 'El campo :attribute debe tener :size caracteres.',
'array' => 'El campo :attribute debe contener :size items.',
'numeric' => 'The :attribute must be :size.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must contain :size items.',
],
'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes: :values.',
'string' => 'El campo :attribute debe ser una cadena.',
'timezone' => ':attribute debe ser una zona válida.',
'unique' => 'El atributo :attribute ya está en uso.',
'uploaded' => 'El atributo :attribute no se pudo cargar.',
'url' => 'El formato :attribute no es válido.',
'uuid' => ':attribute debe ser un UUID válido.',
'starts_with' => 'The :attribute must start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute format is invalid.',
'uuid' => 'The :attribute must be a valid UUID.',
/*
|--------------------------------------------------------------------------
@ -131,7 +131,7 @@ return [
'custom' => [
'attribute-name' => [
'rule-name' => 'mensaje personalizado',
'rule-name' => 'custom-message',
],
],

View File

@ -13,7 +13,7 @@ return [
|
*/
'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.',
'throttle' => 'Trop de tentatives de connexion. Veuillez réessayer dans :seconds secondes.',
'failed' => 'These credentials do not match our records.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ return [
|
*/
'previous' => '&laquo; Précédent',
'next' => 'Suivant &raquo;',
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@ -13,10 +13,10 @@ return [
|
*/
'reset' => 'Votre mot de passe a été réinitialisé !',
'sent' => 'Nous avons envoyé un e-mail pour réinitialiser votre mot de passe!',
'throttled' => 'Veuillez patienter avant de réessayer.',
'token' => 'Ce jeton de réinitialisation de mot de passe est invalide.',
'user' => "Nous ne pouvons pas trouver un utilisateur avec cette adresse e-mail.",
'reset' => 'Your password has been reset!',
'sent' => 'We have emailed your password reset link!',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",
];

View File

@ -13,110 +13,110 @@ return [
|
*/
'accepted' => 'L\'attribut :attribute doit être accepté.',
'active_url' => 'Le champ :attribute n\'est pas une URL valide.',
'after' => 'Le champ :attribute doit être une date après :date.',
'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale à :date.',
'alpha' => 'Le champ :attribute ne peut contenir que des lettres.',
'alpha_dash' => ':attribute ne peut contenir que des lettres, des chiffres, des tirets et des tirets bas.',
'alpha_num' => 'Le champ :attribute ne peut contenir que des lettres et des chiffres.',
'array' => ':attribute doit être un tableau.',
'before' => 'Le champ :attribute doit être une date avant :date.',
'before_or_equal' => ':attribute doit être une date antérieure ou égale à :date.',
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'numeric' => 'Le champ :attribute doit être entre :min et :max.',
'file' => 'Le champ :attribute doit être compris entre :min et :max kilo-octets.',
'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.',
'array' => 'Le champ :attribute doit avoir entre :min et :max éléments.',
'numeric' => 'The :attribute must be between :min and :max.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string' => 'The :attribute must be between :min and :max characters.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
'confirmed' => 'La confirmation de l\'attribut :attribute ne correspond pas.',
'date' => 'Le champ :attribute n\'est pas une date valide.',
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
'different' => ':attribute et :other doivent être différents.',
'digits' => ':attribute doit être de :digits chiffres.',
'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.',
'dimensions' => ':attribute a des dimensions d\'image non valides.',
'distinct' => 'Le champ :attribute a une valeur en double.',
'email' => 'Le champ :attribute doit être une adresse e-mail valide.',
'ends_with' => ':attribute doit se terminer par un des :values suivantes.',
'exists' => 'Le champ :attribute sélectionné est invalide.',
'file' => 'Le champ :attribute doit être un fichier.',
'filled' => 'Le champ :attribute doit avoir une valeur.',
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'dimensions' => 'The :attribute has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'numeric' => 'Le champ :attribute doit être supérieur à :value.',
'file' => ':attribute doit être plus grand que :value kilo-octets.',
'string' => 'Le champ :attribute doit être plus grand que :value caractères.',
'array' => 'Le champ :attribute doit avoir plus de :value éléments.',
'numeric' => 'The :attribute must be greater than :value.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'string' => 'The :attribute must be greater than :value characters.',
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'Le champ :attribute doit être supérieur ou égal à :value.',
'file' => ':attribute doit être supérieur ou égal à :value kilo-octets.',
'string' => 'Le champ :attribute doit être supérieur ou égal à :value caractères.',
'array' => 'L\'attribut :attribute doit avoir :value éléments ou plus.',
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'array' => 'The :attribute must have :value items or more.',
],
'image' => 'Le champ :attribute doit être une image.',
'in' => 'Le champ :attribute sélectionné est invalide.',
'in_array' => 'Le champ :attribute n\'existe pas dans :other.',
'integer' => ':attribute doit être un nombre entier.',
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.',
'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.',
'json' => 'Le champ :attribute doit être une chaîne JSON valide.',
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'lt' => [
'numeric' => 'Le champ :attribute doit être inférieur à :value.',
'file' => ':attribute doit être inférieur à :value kilo-octets.',
'string' => 'Le champ :attribute doit être inférieur à :value caractères.',
'array' => 'Le champ :attribute doit avoir moins de :value éléments.',
'numeric' => 'The :attribute must be less than :value.',
'file' => 'The :attribute must be less than :value kilobytes.',
'string' => 'The :attribute must be less than :value characters.',
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'Le champ :attribute doit être inférieur ou égal à :value.',
'file' => ':attribute doit être inférieur ou égal à :value kilo-octets.',
'string' => 'Le champ :attribute doit être inférieur ou égal à :value caractères.',
'array' => 'Le champ :attribute ne doit pas avoir plus de :value éléments.',
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'array' => 'The :attribute must not have more than :value items.',
],
'max' => [
'numeric' => 'Le champ :attribute ne peut pas être plus grand que :max.',
'file' => ':attribute ne doit pas être plus grand que :max kilo-octets.',
'string' => 'Le champ :attribute ne doit pas être plus grand que :max caractères.',
'array' => ':attribute ne peut pas avoir plus de :max éléments.',
'numeric' => 'The :attribute may not be greater than :max.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => 'The :attribute may not be greater than :max characters.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => ':attribute doit être un fichier de type: :values.',
'mimetypes' => ':attribute doit être un fichier de type: :values.',
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'numeric' => 'Le champ :attribute doit être d\'au moins :min.',
'file' => 'Le champ :attribute doit être d\'au moins :min kilo-octets.',
'string' => 'Le champ :attribute doit contenir au moins :min caractères.',
'array' => 'Le champ :attribute doit avoir au moins :min éléments.',
'numeric' => 'The :attribute must be at least :min.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min characters.',
'array' => 'The :attribute must have at least :min items.',
],
'not_in' => 'Le champ :attribute sélectionné est invalide.',
'not_regex' => 'Le format de l\'attribut :attribute est invalide.',
'numeric' => 'Le champ :attribute doit être un nombre.',
'password' => 'Le mot de passe est incorrect.',
'present' => 'Le champ :attribute doit être présent.',
'regex' => 'Le format de l\'attribut :attribute est invalide.',
'required' => 'Le champ :attribute est requis.',
'required_if' => 'Le champ :attribute est requis lorsque :other est :value.',
'required_unless' => 'Le champ :attribute est requis sauf si :other est en :values.',
'required_with' => 'Le champ :attribute est requis lorsque :values est présent.',
'required_with_all' => 'Le champ :attribute est requis lorsque :values sont présentes.',
'required_without' => 'Le champ :attribute est requis lorsque :values n\'est pas présent.',
'required_without_all' => 'Le champ :attribute est requis quand aucun des :values n\'est présent.',
'same' => ':attribute et :other doivent correspondre.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => 'The password is incorrect.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'numeric' => 'Le champ :attribute doit être :size.',
'file' => ':attribute doit être de :size kilo-octets.',
'string' => 'Le champ :attribute doit être de :size caractères.',
'array' => ':attribute doit contenir :size éléments.',
'numeric' => 'The :attribute must be :size.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must contain :size items.',
],
'starts_with' => ':attribute doit commencer par l\'un des :values suivants.',
'string' => 'Le champ :attribute doit être une chaîne.',
'timezone' => 'Le champ :attribute doit être une zone valide.',
'unique' => 'Le champ :attribute a déjà été pris.',
'uploaded' => 'L\'attribut :attribute n\'a pas pu être envoyé.',
'url' => 'Le format de l\'attribut :attribute est invalide.',
'uuid' => ':attribute doit être un UUID valide.',
'starts_with' => 'The :attribute must start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute format is invalid.',
'uuid' => 'The :attribute must be a valid UUID.',
/*
|--------------------------------------------------------------------------
@ -131,7 +131,7 @@ return [
'custom' => [
'attribute-name' => [
'rule-name' => 'message personnalisé',
'rule-name' => 'custom-message',
],
],

View File

@ -2,27 +2,27 @@
return [
'full_name' => 'Nombre completo',
'email' => 'E-mail',
'password' => 'Contraseña',
'retype_password' => 'Repetir contraseña',
'remember_me' => 'Recordarme',
'register' => 'Registrarse',
'register_a_new_membership' => 'Registrar una nueva membresía',
'i_forgot_my_password' => 'Olvidé mi contraseña',
'i_already_have_a_membership' => 'Ya tengo una membresía',
'sign_in' => 'Iniciar sesión',
'log_out' => 'Cerrar sesión',
'toggle_navigation' => 'Cambiar navegación',
'login_message' => 'Inicia sesión para iniciar tu sesión',
'register_message' => 'Registrar una nueva membresía',
'password_reset_message' => 'Restablecer contraseña',
'reset_password' => 'Restablecer contraseña',
'send_password_reset_link' => 'Enviar enlace de restablecimiento de contraseña',
'verify_message' => 'Tu cuenta necesita verificación',
'verify_email_sent' => 'Se ha enviado un nuevo enlace de verificación a tu dirección de correo electrónico.',
'verify_check_your_email' => 'Antes de proceder, por favor revisa tu correo electrónico para ver un enlace de verificación.',
'verify_if_not_recieved' => 'Si no recibiste el correo electrónico',
'verify_request_another' => 'haz clic aquí para solicitar otro',
'confirm_password_message' => 'Por favor, confirma tu contraseña para continuar.',
'full_name' => 'Full name',
'email' => 'Email',
'password' => 'Password',
'retype_password' => 'Retype password',
'remember_me' => 'Remember Me',
'register' => 'Register',
'register_a_new_membership' => 'Register a new membership',
'i_forgot_my_password' => 'I forgot my password',
'i_already_have_a_membership' => 'I already have a membership',
'sign_in' => 'Sign In',
'log_out' => 'Log Out',
'toggle_navigation' => 'Toggle navigation',
'login_message' => 'Sign in to start your session',
'register_message' => 'Register a new membership',
'password_reset_message' => 'Reset Password',
'reset_password' => 'Reset Password',
'send_password_reset_link' => 'Send Password Reset Link',
'verify_message' => 'Your account needs verification',
'verify_email_sent' => 'A fresh verification link has been sent to your email address.',
'verify_check_your_email' => 'Before proceeding, please check your email for a verification link.',
'verify_if_not_recieved' => 'If you did not receive the email',
'verify_request_another' => 'click here to request another',
'confirm_password_message' => 'Please, confirm your password to continue.',
];

View File

@ -2,31 +2,31 @@
return [
'm_home' => 'Inicio',
'm_directory' => 'Directorio',
'h_applications' => 'Aplicaciones',
'm_my_applications' => 'Mis Aplicaciones',
'm_curr_applications' => 'Aplicaciones actuales',
'h_my_profile' => 'Mi perfil',
'm_profile_settings' => 'Ajustes del perfil',
'm_account_settings' => 'Ajustes de mi cuenta',
'h_app_management' => 'Gestión de aplicaciones',
'm_all_apps' => 'Todas las aplicaciones',
'm_outstanding_apps' => 'Aplicaciones pendientes',
'm_interview_queue' => 'Cola de entrevistas',
'm_peer_approval' => 'Cola de aprobación por pares',
'h_admin' => 'Administración',
'm_staff_m' => 'Miembros del personal',
'm_reg_players' => 'Jugadores registrados',
'sm_hiring_man' => 'Gestión de contratación',
'm_open_pos' => 'Abrir posiciones',
'sm_forms' => 'Formularios',
'sm_all_forms' => 'Todos los formularios',
'm_form_builder' => 'Constructor de Formularios',
'sm_app_settings' => 'Ajustes de app',
'm_global_app_s' => 'Configuración global de la aplicación',
'm_devtools' => 'Herramientas para desarrolladores',
'm_s_logs' => 'Registros del sistema'
'm_home' => 'Home',
'm_directory' => 'Directory',
'h_applications' => 'Applications',
'm_my_applications' => 'My Applications',
'm_curr_applications' => 'Current Applications',
'h_my_profile' => 'My Profile',
'm_profile_settings' => 'Profile Settings',
'm_account_settings' => 'My Account Settings',
'h_app_management' => 'Application Management',
'm_all_apps' => 'All Applications',
'm_outstanding_apps' => 'Outstanding Applications',
'm_interview_queue' => 'Interview Queue',
'm_peer_approval' => 'Peer Approval Queue',
'h_admin' => 'Administration',
'm_staff_m' => 'Staff Members',
'm_reg_players' => 'Registered Players',
'sm_hiring_man' => 'Hiring Management',
'm_open_pos' => 'Open Positions',
'sm_forms' => 'Forms',
'sm_all_forms' => 'All Forms',
'm_form_builder' => 'Form Builder',
'sm_app_settings' => 'App Settings',
'm_global_app_s' => 'Global App Settings',
'm_devtools' => 'Developer Tools',
'm_s_logs' => 'System Logs'
];

View File

@ -2,27 +2,27 @@
return [
'full_name' => 'Nom complet',
'email' => 'Courriel',
'password' => 'Mot de passe',
'retype_password' => 'Retapez le mot de passe',
'remember_me' => 'Se souvenir de moi',
'register' => 'Inscription',
'register_a_new_membership' => 'Inscrire une nouvelle adhésion',
'i_forgot_my_password' => 'J\'ai oublié mon mot de passe',
'i_already_have_a_membership' => 'J\'ai déjà une adhésion',
'sign_in' => 'Se connecter',
'log_out' => 'Déconnexion',
'toggle_navigation' => 'Basculer la navigation',
'login_message' => 'Connectez-vous pour démarrer votre session',
'register_message' => 'Inscrire une nouvelle adhésion',
'password_reset_message' => 'Réinitialiser le mot de passe',
'reset_password' => 'Réinitialiser le mot de passe',
'send_password_reset_link' => 'Envoyer le lien de réinitialisation du mot de passe',
'verify_message' => 'Votre compte a besoin d\'une vérification',
'verify_email_sent' => 'Un nouveau lien de vérification a été envoyé à votre adresse e-mail.',
'verify_check_your_email' => 'Avant de continuer, veuillez vérifier votre e-mail pour un lien de vérification.',
'verify_if_not_recieved' => 'Si vous n\'avez pas reçu l\'e-mail',
'verify_request_another' => 'cliquez ici pour en demander un autre',
'confirm_password_message' => 'Veuillez confirmer votre mot de passe pour continuer.',
'full_name' => 'Full name',
'email' => 'Email',
'password' => 'Password',
'retype_password' => 'Retype password',
'remember_me' => 'Remember Me',
'register' => 'Register',
'register_a_new_membership' => 'Register a new membership',
'i_forgot_my_password' => 'I forgot my password',
'i_already_have_a_membership' => 'I already have a membership',
'sign_in' => 'Sign In',
'log_out' => 'Log Out',
'toggle_navigation' => 'Toggle navigation',
'login_message' => 'Sign in to start your session',
'register_message' => 'Register a new membership',
'password_reset_message' => 'Reset Password',
'reset_password' => 'Reset Password',
'send_password_reset_link' => 'Send Password Reset Link',
'verify_message' => 'Your account needs verification',
'verify_email_sent' => 'A fresh verification link has been sent to your email address.',
'verify_check_your_email' => 'Before proceeding, please check your email for a verification link.',
'verify_if_not_recieved' => 'If you did not receive the email',
'verify_request_another' => 'click here to request another',
'confirm_password_message' => 'Please, confirm your password to continue.',
];

View File

@ -2,31 +2,31 @@
return [
'm_home' => 'Domicile',
'm_directory' => 'Répertoire',
'm_home' => 'Home',
'm_directory' => 'Directory',
'h_applications' => 'Applications',
'm_my_applications' => 'Mes applications',
'm_curr_applications' => 'Applications actuelles',
'h_my_profile' => 'Mon profil',
'm_profile_settings' => 'Paramètres du profil',
'm_account_settings' => 'Paramètres de mon compte',
'h_app_management' => 'Gestion des applications',
'm_all_apps' => 'Toutes les applications',
'm_outstanding_apps' => 'Applications en cours',
'm_interview_queue' => 'File d\'attente des entretiens',
'm_peer_approval' => 'File d\'attente d\'approbation par les pairs',
'm_my_applications' => 'My Applications',
'm_curr_applications' => 'Current Applications',
'h_my_profile' => 'My Profile',
'm_profile_settings' => 'Profile Settings',
'm_account_settings' => 'My Account Settings',
'h_app_management' => 'Application Management',
'm_all_apps' => 'All Applications',
'm_outstanding_apps' => 'Outstanding Applications',
'm_interview_queue' => 'Interview Queue',
'm_peer_approval' => 'Peer Approval Queue',
'h_admin' => 'Administration',
'm_staff_m' => 'Membres du personnel',
'm_reg_players' => 'Joueurs enregistrés',
'sm_hiring_man' => 'Gestion de l\'embauche',
'm_open_pos' => 'Positions ouvertes',
'sm_forms' => 'Formulaires',
'sm_all_forms' => 'Tous les formulaires',
'm_form_builder' => 'Constructeur de formulaire',
'sm_app_settings' => 'Paramètres de l\'application',
'm_global_app_s' => 'Paramètres globaux de l\'application',
'm_devtools' => 'Outils de développement',
'm_s_logs' => 'Journaux système'
'm_staff_m' => 'Staff Members',
'm_reg_players' => 'Registered Players',
'sm_hiring_man' => 'Hiring Management',
'm_open_pos' => 'Open Positions',
'sm_forms' => 'Forms',
'sm_all_forms' => 'All Forms',
'm_form_builder' => 'Form Builder',
'sm_app_settings' => 'App Settings',
'm_global_app_s' => 'Global App Settings',
'm_devtools' => 'Developer Tools',
'm_s_logs' => 'System Logs'
];