New languages, af_ZA, ca, id_ID

This commit is contained in:
David Bomba 2025-09-01 08:49:08 +10:00
parent a903941e23
commit cfbb3958c5
22 changed files with 11902 additions and 1 deletions

View File

@ -276,7 +276,7 @@ class Invoice extends BaseModel
'custom_value4' => (string)$this->custom_value4, 'custom_value4' => (string)$this->custom_value4,
'company_key' => $this->company->company_key, 'company_key' => $this->company->company_key,
'po_number' => (string)$this->po_number, 'po_number' => (string)$this->po_number,
// 'line_items' => $this->line_items, 'line_items' => (array)$this->line_items,
]; ];
} }

View File

@ -174,6 +174,7 @@ class Task extends BaseModel
'custom_value4' => (string) $this->custom_value4, 'custom_value4' => (string) $this->custom_value4,
'company_key' => $this->company->company_key, 'company_key' => $this->company->company_key,
'time_log' => $this->normalizeTimeLog($this->time_log), 'time_log' => $this->normalizeTimeLog($this->time_log),
'calculated_start_date' => (string) $this->calculated_start_date,
]; ];
return $data; return $data;
@ -222,6 +223,36 @@ class Task extends BaseModel
return $this->company->db.":".$this->id; return $this->company->db.":".$this->id;
} }
/**
* Example: Search tasks by time log descriptions
*/
public static function searchTimeLogs(string $query)
{
return static::search($query)
->where('time_log.description', $query)
->take(20);
}
/**
* Example: Search for running tasks
*/
public static function searchRunningTasks()
{
return static::search('')
->where('time_log.is_running', true)
->take(50);
}
/**
* Example: Search for billable tasks
*/
public static function searchBillableTasks()
{
return static::search('')
->where('time_log.billable', true)
->take(50);
}
/** /**
* Get all of the users that belong to the team. * Get all of the users that belong to the team.
* *

View File

@ -0,0 +1,45 @@
<?php
use App\Models\Language;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Language::unguard();
if (!Language::find(43)) {
Language::create(['id' => 43, 'name' => 'Catalan', 'locale' => 'ca']);
}
if (!Language::find(44)) {
Language::create(['id' => 44, 'name' => 'Afrikaans', 'locale' => 'af_ZA']);
}
if(!Language::find(45)) {
Language::create(['id' => 45, 'name' => 'Indonesian', 'locale' => 'id_ID']);
}
$resource = Language::query()->orderBy('name')->get();
Cache::forever('languages', $resource);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View File

@ -67,6 +67,10 @@ class LanguageSeeder extends Seeder
['id' => 40, 'name' => 'French - Swiss', 'locale' => 'fr_CH'], ['id' => 40, 'name' => 'French - Swiss', 'locale' => 'fr_CH'],
['id' => 41, 'name' => 'Lao', 'locale' => 'lo_LA'], ['id' => 41, 'name' => 'Lao', 'locale' => 'lo_LA'],
['id' => 42, 'name' => 'Vietnamese', 'locale' => 'vi'], ['id' => 42, 'name' => 'Vietnamese', 'locale' => 'vi'],
['id' => 43, 'name' => 'Catalan', 'locale' => 'ca'],
['id' => 44, 'name' => 'Afrikaans', 'locale' => 'af_ZA'],
['id' => 45, 'name' => 'Indonesian', 'locale' => 'id_ID'],
]; ];
foreach ($languages as $language) { foreach ($languages as $language) {

20
lang/af_ZA/auth.php Normal file
View File

@ -0,0 +1,20 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'Hierdie geloofsbriewe stem nie ooreen met ons rekords nie.',
'password' => 'Die verskafde wagwoord is verkeerd.',
'throttle' => 'Te veel aanmeldpogings. Probeer asseblief weer oor :seconds sekondes.',
];

13
lang/af_ZA/help.php Normal file
View File

@ -0,0 +1,13 @@
<?php
$lang = array(
'client_dashboard' => 'Boodskap wat op kliënt se dashboard vertoon word',
'client_currency' => 'Die kliënt se geldeenheid.',
'client_language' => 'Die kliënt se taal.',
'client_payment_terms' => 'Die kliënt se betalingsvoorwaardes.',
'client_paid_invoice' => 'Boodskap wat op \'n kliënt se betaalde faktuur skerm vertoon word',
'client_unpaid_invoice' => 'Boodskap wat op \'n kliënt se onbetaalde faktuur skerm vertoon word',
'client_unapproved_quote' => 'Boodskap wat op \'n kliënt se nie-goedgekeurde kwotasie skerm vertoon word',
);
return $lang;

19
lang/af_ZA/pagination.php Normal file
View File

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '« Vorige',
'next' => 'Volgende »',
];

23
lang/af_ZA/passwords.php Normal file
View File

@ -0,0 +1,23 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Wagwoorde moet ten minste ses karakters wees en ooreenstem met die bevestiging.',
'reset' => 'Jou wagwoord is teruggestel!',
'sent' => 'Ons het jou wagwoord herstel skakel per e-pos gestuur!',
'token' => 'Hierdie wagwoord herstel token is ongeldig.',
'user' => 'Ons kan nie \'n gebruiker met daardie e-pos adres vind nie.',
'throttled' => 'Jy het onlangs wagwoord herstel aangevra, kyk asseblief in jou e-pos.',
];

5627
lang/af_ZA/texts.php Normal file

File diff suppressed because it is too large Load Diff

28
lang/af_ZA/ubl.php Normal file
View File

@ -0,0 +1,28 @@
<?php
$lang = array(
'free_export_item' => 'Free export item',
'outside_tax_scope' => 'Outside tax scope',
'eea_goods_and_services' => 'EEA goods and services',
'lower_rate' => 'Lower rate',
'mixed_tax_rate' => 'Mixed tax rate',
'higher_rate' => 'Higher rate',
'canary_islands_indirect_tax' => 'Canary Islands indirect tax',
'ceuta_and_melilla' => 'Ceuta and Melilla',
'transferred_vat_italy' => 'Transferred VAT Italy',
'exempt_for_resale' => 'Exempt for resale',
'vat_not_now_due' => 'VAT not now due',
'vat_due_previous_invoice' => 'VAT due previous',
'transferred_vat' => 'Transferred VAT',
'duty_paid_by_supplier' => 'Duty paid by supplier',
'vat_margin_scheme_travel_agents' => 'VAT margin scheme travel agents',
'vat_margin_scheme_second_hand_goods' => 'VAT margin scheme second hand goods',
'vat_margin_scheme_works_of_art' => 'VAT margin scheme works of art',
'vat_margin_scheme_collectors_items' => 'VAT margin scheme collectors items',
'vat_exempt_eea_intra_community' => 'VAT exempt EEA intra community',
'canary_islands_tax' => 'Canary Islands tax',
'tax_ceuta_melilla' => 'Tax Ceuta Melilla',
'services_outside_scope' => 'Services outside scope',
);
return $lang;

170
lang/af_ZA/validation.php Normal file
View File

@ -0,0 +1,170 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute must only contain letters.',
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute must only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute must have between :min and :max items.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'numeric' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'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.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute must have more than :value items.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'numeric' => 'The :attribute must be greater than :value.',
'string' => 'The :attribute must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute must have :value items or more.',
'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be greater than or equal to :value.',
'string' => 'The :attribute must be greater than or equal to :value characters.',
],
'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' => [
'array' => 'The :attribute must have less than :value items.',
'file' => 'The :attribute must be less than :value kilobytes.',
'numeric' => 'The :attribute must be less than :value.',
'string' => 'The :attribute must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute must not have more than :value items.',
'file' => 'The :attribute must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be less than or equal to :value.',
'string' => 'The :attribute must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute must be a valid MAC address.',
'max' => [
'array' => 'The :attribute must not have more than :max items.',
'file' => 'The :attribute must not be greater than :max kilobytes.',
'numeric' => 'The :attribute must not be greater than :max.',
'string' => 'The :attribute must not be greater than :max characters.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'array' => 'The :attribute must have at least :min items.',
'file' => 'The :attribute must be at least :min kilobytes.',
'numeric' => 'The :attribute must be at least :min.',
'string' => 'The :attribute must be at least :min characters.',
],
'multiple_of' => 'The :attribute must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => [
'letters' => 'The :attribute must contain at least one letter.',
'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute must contain at least one number.',
'symbols' => 'The :attribute must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'array' => 'The :attribute must contain :size items.',
'file' => 'The :attribute must be :size kilobytes.',
'numeric' => 'The :attribute must be :size.',
'string' => 'The :attribute must be :size characters.',
],
'starts_with' => 'The :attribute must start with one of the following: :values.',
'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute must be a valid URL.',
'uuid' => 'The :attribute must be a valid UUID.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];

View File

@ -5596,6 +5596,13 @@ $lang = array(
'tax_nexus' => 'الرابط الضريبي', 'tax_nexus' => 'الرابط الضريبي',
'tax_period_report' => 'تقرير الفترة الضريبية', 'tax_period_report' => 'تقرير الفترة الضريبية',
'creator' => 'تم الإنشاء بواسطة', 'creator' => 'تم الإنشاء بواسطة',
'ses_topic_arn_help' => 'موضوع SES (اختياري، لتتبع خطاف الويب فقط)',
'ses_region_help' => 'منطقة AWS، أي us-east-1',
'ses_secret_key' => 'مفتاح SES السري',
'ses_access_key' => 'معرف مفتاح الوصول SES',
'activity_151' => 'تم دمج العميل :notes في :client بواسطة :user',
'activity_152' => 'تم دمج البائع :notes في :vendor بواسطة :user',
'activity_153' => 'تم تطهير العميل :notes بواسطة :user',
); );
return $lang; return $lang;

View File

@ -5615,6 +5615,13 @@ $lang = array(
'tax_nexus' => 'Nexus fiscal', 'tax_nexus' => 'Nexus fiscal',
'tax_period_report' => 'Informe del període fiscal', 'tax_period_report' => 'Informe del període fiscal',
'creator' => 'Creat per', 'creator' => 'Creat per',
'ses_topic_arn_help' => 'El tema SES (opcional, només per al seguiment de webhooks)',
'ses_region_help' => 'La regió d&#39;AWS, és a dir, us-east-1',
'ses_secret_key' => 'Clau secreta SES',
'ses_access_key' => 'ID de la clau d&#39;accés SES',
'activity_151' => 'El client :notes s&#39;ha fusionat amb :client per :user',
'activity_152' => 'El proveïdor :notes s&#39;ha fusionat amb :vendor per :user',
'activity_153' => 'Client :notes purgat per :user',
); );
return $lang; return $lang;

View File

@ -5614,6 +5614,13 @@ $lang = array(
'tax_nexus' => 'Nexo fiscal', 'tax_nexus' => 'Nexo fiscal',
'tax_period_report' => 'Informe del período impositivo', 'tax_period_report' => 'Informe del período impositivo',
'creator' => 'Creado por', 'creator' => 'Creado por',
'ses_topic_arn_help' => 'El tema SES (opcional, solo para seguimiento de webhooks)',
'ses_region_help' => 'La región de AWS, es decir, us-east-1',
'ses_secret_key' => 'Clave secreta de SES',
'ses_access_key' => 'ID de clave de acceso de SES',
'activity_151' => 'El cliente :notes se fusionó con :client por :user',
'activity_152' => 'El proveedor :notes se fusionó con :vendor por :user',
'activity_153' => 'Cliente :notes purgado por :user',
); );
return $lang; return $lang;

View File

@ -5615,6 +5615,13 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'tax_nexus' => 'Lien fiscal', 'tax_nexus' => 'Lien fiscal',
'tax_period_report' => 'Rapport de période fiscale', 'tax_period_report' => 'Rapport de période fiscale',
'creator' => 'Créé par', 'creator' => 'Créé par',
'ses_topic_arn_help' => 'Sujet SES (facultatif, uniquement pour le suivi des webhooks)',
'ses_region_help' => 'La région AWS, ex. us-east-1',
'ses_secret_key' => 'Clé secrète SES',
'ses_access_key' => 'ID de la clé d\'accès SES',
'activity_151' => 'Client :notes fusionné avec :client par :user',
'activity_152' => 'Le fournisseur :notes a été fusionné avec :vendor par :user',
'activity_153' => 'Client :notes purgé par :user',
); );
return $lang; return $lang;

20
lang/id_ID/auth.php Normal file
View File

@ -0,0 +1,20 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

13
lang/id_ID/help.php Normal file
View File

@ -0,0 +1,13 @@
<?php
$lang = array(
'client_dashboard' => 'Message to be displayed on clients dashboard',
'client_currency' => 'The client currency.',
'client_language' => 'The client language.',
'client_payment_terms' => 'The client payment terms.',
'client_paid_invoice' => 'Message to be displayed on a clients paid invoice screen',
'client_unpaid_invoice' => 'Message to be displayed on a clients unpaid invoice screen',
'client_unapproved_quote' => 'Message to be displayed on a clients unapproved quote screen',
);
return $lang;

19
lang/id_ID/pagination.php Normal file
View File

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '« Previous',
'next' => 'Next »',
];

23
lang/id_ID/passwords.php Normal file
View File

@ -0,0 +1,23 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Passwords must be at least six characters and match the confirmation.',
'reset' => 'Your password has been reset!',
'sent' => 'We have e-mailed your password reset link!',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that e-mail address.",
'throttled' => 'You have requested password reset recently, please check your email.',
];

5620
lang/id_ID/texts.php Normal file

File diff suppressed because it is too large Load Diff

28
lang/id_ID/ubl.php Normal file
View File

@ -0,0 +1,28 @@
<?php
$lang = array(
'free_export_item' => 'Free export item',
'outside_tax_scope' => 'Outside tax scope',
'eea_goods_and_services' => 'EEA goods and services',
'lower_rate' => 'Lower rate',
'mixed_tax_rate' => 'Mixed tax rate',
'higher_rate' => 'Higher rate',
'canary_islands_indirect_tax' => 'Canary Islands indirect tax',
'ceuta_and_melilla' => 'Ceuta and Melilla',
'transferred_vat_italy' => 'Transferred VAT Italy',
'exempt_for_resale' => 'Exempt for resale',
'vat_not_now_due' => 'VAT not now due',
'vat_due_previous_invoice' => 'VAT due previous',
'transferred_vat' => 'Transferred VAT',
'duty_paid_by_supplier' => 'Duty paid by supplier',
'vat_margin_scheme_travel_agents' => 'VAT margin scheme travel agents',
'vat_margin_scheme_second_hand_goods' => 'VAT margin scheme second hand goods',
'vat_margin_scheme_works_of_art' => 'VAT margin scheme works of art',
'vat_margin_scheme_collectors_items' => 'VAT margin scheme collectors items',
'vat_exempt_eea_intra_community' => 'VAT exempt EEA intra community',
'canary_islands_tax' => 'Canary Islands tax',
'tax_ceuta_melilla' => 'Tax Ceuta Melilla',
'services_outside_scope' => 'Services outside scope',
);
return $lang;

170
lang/id_ID/validation.php Normal file
View File

@ -0,0 +1,170 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute must only contain letters.',
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute must only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute must have between :min and :max items.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'numeric' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'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.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute must have more than :value items.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'numeric' => 'The :attribute must be greater than :value.',
'string' => 'The :attribute must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute must have :value items or more.',
'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be greater than or equal to :value.',
'string' => 'The :attribute must be greater than or equal to :value characters.',
],
'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' => [
'array' => 'The :attribute must have less than :value items.',
'file' => 'The :attribute must be less than :value kilobytes.',
'numeric' => 'The :attribute must be less than :value.',
'string' => 'The :attribute must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute must not have more than :value items.',
'file' => 'The :attribute must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute must be less than or equal to :value.',
'string' => 'The :attribute must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute must be a valid MAC address.',
'max' => [
'array' => 'The :attribute must not have more than :max items.',
'file' => 'The :attribute must not be greater than :max kilobytes.',
'numeric' => 'The :attribute must not be greater than :max.',
'string' => 'The :attribute must not be greater than :max characters.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'array' => 'The :attribute must have at least :min items.',
'file' => 'The :attribute must be at least :min kilobytes.',
'numeric' => 'The :attribute must be at least :min.',
'string' => 'The :attribute must be at least :min characters.',
],
'multiple_of' => 'The :attribute must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => [
'letters' => 'The :attribute must contain at least one letter.',
'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute must contain at least one number.',
'symbols' => 'The :attribute must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'array' => 'The :attribute must contain :size items.',
'file' => 'The :attribute must be :size kilobytes.',
'numeric' => 'The :attribute must be :size.',
'string' => 'The :attribute must be :size characters.',
],
'starts_with' => 'The :attribute must start with one of the following: :values.',
'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute must be a valid URL.',
'uuid' => 'The :attribute must be a valid UUID.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];